X-Git-Url: https://git.cameronkatri.com/mandoc.git/blobdiff_plain/c55c7c742e50a932784d8cd8689f4ad216fcc91f..160c4968c39b3806128f58311c70c5e0abbed96d:/man.7

diff --git a/man.7 b/man.7
index 92a1dc3b..738fbc3d 100644
--- a/man.7
+++ b/man.7
@@ -1,6 +1,6 @@
-.\"	$Id: man.7,v 1.52 2009/11/12 08:21:05 kristaps Exp $
+.\"	$Id: man.7,v 1.81 2010/08/06 17:07:11 schwarze Exp $
 .\"
-.\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
+.\" Copyright (c) 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
 .\"
 .\" Permission to use, copy, modify, and distribute this software for any
 .\" purpose with or without fee is hereby granted, provided that the above
@@ -14,24 +14,19 @@
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
-.Dd $Mdocdate: November 12 2009 $
+.Dd $Mdocdate: August 6 2010 $
 .Dt MAN 7
 .Os
-.
-.
 .Sh NAME
 .Nm man
 .Nd man language reference
-.
-.
 .Sh DESCRIPTION
 The
 .Nm man
 language was historically used to format
 .Ux
-manuals.  This reference document describes its syntax, structure, and
-usage.
-.
+manuals.
+This reference document describes its syntax, structure, and usage.
 .Pp
 .Bf -emphasis
 Do not use
@@ -41,43 +36,39 @@ to write your manuals.
 Use the
 .Xr mdoc 7
 language, instead.
-.
 .Pp
-An
+A
 .Nm
 document follows simple rules:  lines beginning with the control
 character
 .Sq \&.
-are parsed for macros.  Other lines are interpreted within the scope of
+are parsed for macros.
+Other lines are interpreted within the scope of
 prior macros:
 .Bd -literal -offset indent
 \&.SH Macro lines change control state.
 Other lines are interpreted within the current state.
 .Ed
-.
-.
 .Sh INPUT ENCODING
 .Nm
 documents may contain only graphable 7-bit ASCII characters, the
-space character, and the tabs character.  All manuals must have
+space character, and the tab character.
+All manuals must have
 .Ux
 line termination.
-.
 .Pp
 Blank lines are acceptable; where found, the output will assert a
 vertical space.
-.
-.
 .Ss Comments
 Text following a
-.Sq \e\*" ,
+.Sq \e\*q ,
 whether in a macro or free-form text line, is ignored to the end of
-line.  A macro line with only a control character and comment escape,
-.Sq \&.\e" ,
-is also ignored.  Macro lines with only a control character and
-optionally whitespace are stripped from input.
-.
-.
+line.
+A macro line with only a control character and comment escape,
+.Sq \&.\e\*q ,
+is also ignored.
+Macro lines with only a control character and optionally whitespace are
+stripped from input.
 .Ss Special Characters
 Special characters may occur in both macro and free-form lines.
 Sequences begin with the escape character
@@ -88,89 +79,66 @@ for two-character sequences; an open-bracket
 .Sq \&[
 for n-character sequences (terminated at a close-bracket
 .Sq \&] ) ;
-or a single one-character sequence.  See
+or a single one-character sequence.
+See
 .Xr mandoc_char 7
-for a complete list.  Examples include
+for a complete list.
+Examples include
 .Sq \e(em
 .Pq em-dash
 and
 .Sq \ee
 .Pq back-slash .
-.
-.
 .Ss Text Decoration
 Terms may be text-decorated using the
 .Sq \ef
-escape followed by an indicator: B (bold), I, (italic), R (Roman), or P
-(revert to previous mode):  
+escape followed by an indicator: B (bold), I (italic), R (Roman), or P
+(revert to previous mode):
 .Pp
 .D1 \efBbold\efR \efIitalic\efP
 .Pp
 A numerical representation 3, 2, or 1 (bold, italic, and Roman,
-respectively) may be used instead.  A text decoration is only valid, if
-specified in free-form text, until the next macro invocation; if
-specified within a macro, it's only valid until the macro closes scope.
-.Pp
-Text may also be sized with the
-.Sq \es
-escape, whose syntax is one of
-.Sq \es+-n
-for one-digit numerals;
-.Sq \es(+-nn
-or
-.Sq \es+-(nn
-for two-digit numerals; and
-.Sq \es[+-N] ,
-.Sq \es+-[N] ,
-.Sq \es'+-N' ,
-or
-.Sq \es+-'N'
-for arbitrary-digit numerals:
-.Pp
-.D1 \es+1bigger\es-1
-.D1 \es[+10]much bigger\es[-10]
-.D1 \es+(10much bigger\es-(10
-.D1 \es+'100'much much bigger\es-'100'
+respectively) may be used instead.
+A text decoration is only valid, if specified in free-form text, until
+the next macro invocation; if specified within a macro, it's only valid
+until the macro closes scope.
+Note that macros like
+.Sx \&BR
+open and close a font scope with each argument.
 .Pp
-Both
-.Sq \es
-and
+The
 .Sq \ef
-attributes are forgotten when exiting a subsequent (or current) macro
-invocation.
-.
-.
+attribute is forgotten when entering or exiting a macro block.
 .Ss Whitespace
-Unless specifically escaped, consecutive blocks of whitespace are pruned
-from input.  These are later re-added, if applicable, by a front-end
-utility such as
-.Xr mandoc 1 .
-.
-.
+Whitespace consists of the space character.
+In free-form lines, whitespace is preserved within a line; unescaped
+trailing spaces are stripped from input (unless in a literal context).
+Blank free-form lines, which may include spaces, are permitted and
+rendered as an empty line.
+.Pp
+In macro lines, whitespace delimits arguments and is discarded.
+If arguments are quoted, whitespace within the quotes is retained.
 .Ss Dates
 The
 .Sx \&TH
 macro is the only
 .Nm
-macro that requires a date.  The form for this date is the ISO-8601
+macro that requires a date.
+The form for this date is the ISO-8601
 standard
 .Cm YYYY-MM-DD .
-.
-.
 .Ss Scaling Widths
 Many macros support scaled widths for their arguments, such as
 stipulating a two-inch paragraph indentation with the following:
 .Bd -literal -offset indent
 \&.HP 2i
 .Ed
-.
 .Pp
 The syntax for scaled widths is
 .Sq Li [+-]?[0-9]*.[0-9]*[:unit:]? ,
 where a decimal must be preceded or proceeded by at least one digit.
-Negative numbers, while accepted, are truncated to zero.  The following
-scaling units are accepted:
-.
+Negative numbers, while accepted, are truncated to zero.
+The following scaling units are accepted:
 .Pp
 .Bl -tag -width Ds -offset indent -compact
 .It c
@@ -209,7 +177,6 @@ Using anything other than
 or
 .Sq v
 is necessarily non-portable across output media.
-.
 .Pp
 If a scaling unit is not provided, the numerical value is interpreted
 under the default rules of
@@ -222,44 +189,50 @@ this differs from
 .Xr mdoc 7 ,
 which, if a unit is not provided, will instead interpret the string as
 literal text.
-.
-.
+.Ss Sentence Spacing
+When composing a manual, make sure that sentences end at the end of
+a line.
+By doing so, front-ends will be able to apply the proper amount of
+spacing after the end of sentence (unescaped) period, exclamation mark,
+or question mark followed by zero or more non-sentence closing
+delimiters
+.Po
+.Sq \&) ,
+.Sq \&] ,
+.Sq \&' ,
+.Sq \&"
+.Pc .
 .Sh MANUAL STRUCTURE
 Each
 .Nm
-document must contain contains at least the
+document must contain the
 .Sx \&TH
-macro describing the document's section and title.  It may occur
-anywhere in the document, although conventionally, it appears as the
-first macro.
-.
+macro describing the document's section and title.
+It may occur anywhere in the document, although conventionally it
+appears as the first macro.
 .Pp
 Beyond
 .Sx \&TH ,
-at least one macro or text node must appear in the document.  Documents
-are generally structured as follows:
+at least one macro or text node must appear in the document.
+Documents are generally structured as follows:
 .Bd -literal -offset indent
 \&.TH FOO 1 2009-10-10
-\&.
 \&.SH NAME
 \efBfoo\efR \e(en a description goes here
 \&.\e\*q The next is for sections 2 & 3 only.
 \&.\e\*q .SH LIBRARY
-\&.
 \&.SH SYNOPSIS
 \efBfoo\efR [\efB\e-options\efR] arguments...
-\&.
 \&.SH DESCRIPTION
 The \efBfoo\efR utility processes files...
-\&.
 \&.\e\*q .SH IMPLEMENTATION NOTES
-\&.\e\*q The next is for sections 1 & 8 only.
-\&.\e\*q .SH EXIT STATUS
 \&.\e\*q The next is for sections 2, 3, & 9 only.
 \&.\e\*q .SH RETURN VALUES
 \&.\e\*q The next is for sections 1, 6, 7, & 8 only.
 \&.\e\*q .SH ENVIRONMENT
 \&.\e\*q .SH FILES
+\&.\e\*q The next is for sections 1 & 8 only.
+\&.\e\*q .SH EXIT STATUS
 \&.\e\*q .SH EXAMPLES
 \&.\e\*q The next is for sections 1, 4, 6, 7, & 8 only.
 \&.\e\*q .SH DIAGNOSTICS
@@ -277,23 +250,23 @@ The \efBfoo\efR utility processes files...
 .Pp
 The sections in a
 .Nm
-document are conventionally ordered as they appear above.  Sections
-should be composed as follows:
+document are conventionally ordered as they appear above.
+Sections should be composed as follows:
 .Bl -ohang -offset indent
 .It Em NAME
-The name(s) and a short description of the documented material.  The
-syntax for this is generally as follows:
+The name(s) and a short description of the documented material.
+The syntax for this is generally as follows:
 .Pp
 .D1 \efBname\efR \e(en description
 .It Em LIBRARY
 The name of the library containing the documented material, which is
-assumed to be a function in a section 2 or 3 manual.  For functions in
-the C library, this may be as follows:
+assumed to be a function in a section 2 or 3 manual.
+For functions in the C library, this may be as follows:
 .Pp
 .D1 Standard C Library (libc, -lc)
 .It Em SYNOPSIS
 Documents the utility invocation syntax, function call syntax, or device
-configuration. 
+configuration.
 .Pp
 For the first, utilities (sections 1, 6, and 8), this is
 generally structured as follows:
@@ -308,64 +281,54 @@ And for the third, configurations (section 4):
 .Pp
 .D1 \&.B name* at cardbus ? function ?
 .Pp
-Manuals not in these sections generally don't need a 
+Manuals not in these sections generally don't need a
 .Em SYNOPSIS .
 .It Em DESCRIPTION
-This expands upon the brief, one-line description in 
+This expands upon the brief, one-line description in
 .Em NAME .
 It usually contains a break-down of the options (if documenting a
 command).
 .It Em IMPLEMENTATION NOTES
-Implementation-specific notes should be kept here.  This is useful when
-implementing standard functions that may have side effects or notable
-algorithmic implications.
-.It Em EXIT STATUS
-Command exit status for section 1, 6, and 8 manuals.  This section is
-the dual of
-.Em RETURN VALUES ,
-which is used for functions.  Historically, this information was
-described in
-.Em DIAGNOSTICS ,
-a practise that is now discouraged.
-.
+Implementation-specific notes should be kept here.
+This is useful when implementing standard functions that may have side
+effects or notable algorithmic implications.
 .It Em RETURN VALUES
-This section is the dual of
-.Em EXIT STATUS ,
-which is used for commands.  It documents the return values of functions
-in sections 2, 3, and 9.
-.
+This section documents the return values of functions in sections 2, 3, and 9.
 .It Em ENVIRONMENT
 Documents any usages of environment variables, e.g.,
 .Xr environ 7 .
-.
 .It Em FILES
-Documents files used.  It's helpful to document both the file and a
-short description of how the file is used (created, modified, etc.).
-.
+Documents files used.
+It's helpful to document both the file name and a short description of how
+the file is used (created, modified, etc.).
+.It Em EXIT STATUS
+This section documents the command exit status for
+section 1, 6, and 8 utilities.
+Historically, this information was described in
+.Em DIAGNOSTICS ,
+a practise that is now discouraged.
 .It Em EXAMPLES
-Example usages.  This often contains snippets of well-formed,
-well-tested invocations.  Make doubly sure that your examples work
-properly!
-.
+Example usages.
+This often contains snippets of well-formed,
+well-tested invocations.
+Make sure that examples work properly!
 .It Em DIAGNOSTICS
-Documents error conditions.  This is most useful in section 4 manuals.
+Documents error conditions.
+This is most useful in section 4 manuals.
 Historically, this section was used in place of
 .Em EXIT STATUS
 for manuals in sections 1, 6, and 8; however, this practise is
 discouraged.
-.
 .It Em ERRORS
 Documents error handling in sections 2, 3, and 9.
-.
 .It Em SEE ALSO
-References other manuals with related topics.  This section should exist
-for most manuals.  
+References other manuals with related topics.
+This section should exist for most manuals.
 .Pp
 .D1 \&.BR bar \&( 1 \&),
 .Pp
 Cross-references should conventionally be ordered
 first by section, then alphabetically.
-.
 .It Em STANDARDS
 References any standards implemented or used, such as
 .Pp
@@ -374,126 +337,121 @@ References any standards implemented or used, such as
 If not adhering to any standards, the
 .Em HISTORY
 section should be used.
-.
 .It Em HISTORY
-The history of any manual without a
-.Em STANDARDS
-section should be described in this section.
-.
+A brief history of the subject, including where support first appeared.
 .It Em AUTHORS
-Credits to authors, if applicable, should appear in this section.
-Authors should generally be noted by both name and an e-mail address.
-.
+Credits to the person or persons who wrote the code and/or documentation.
+Authors should generally be noted by both name and email address.
 .It Em CAVEATS
-Explanations of common misuses and misunderstandings should be explained
+Common misuses and misunderstandings should be explained
 in this section.
-.
 .It Em BUGS
-Extant bugs should be described in this section.
-.
+Known bugs, limitations, and work-arounds should be described
+in this section.
 .It Em SECURITY CONSIDERATIONS
 Documents any security precautions that operators should consider.
-.
 .El
-.
-.
 .Sh MACRO SYNTAX
-Macros are one to three three characters in length and begin with a
-control character ,
+Macros are one to three characters in length and begin with a
+control character,
 .Sq \&. ,
-at the beginning of the line.  An arbitrary amount of whitespace may
-sit between the control character and the macro name.  Thus, the
-following are equivalent:
+at the beginning of the line.
+The
+.Sq \(aq
+macro control character is also accepted.
+An arbitrary amount of whitespace (spaces or tabs) may sit between the
+control character and the macro name.
+Thus, the following are equivalent:
 .Bd -literal -offset indent
 \&.PP
 \&.\ \ \ PP
 .Ed
-.
 .Pp
 The
 .Nm
-macros are classified by scope: line scope or block scope.  Line
-macros are only scoped to the current line (and, in some situations,
-the subsequent line).  Block macros are scoped to the current line and
-subsequent lines until closed by another block macro.
-.
-.
+macros are classified by scope: line scope or block scope.
+Line macros are only scoped to the current line (and, in some
+situations, the subsequent line).
+Block macros are scoped to the current line and subsequent lines until
+closed by another block macro.
 .Ss Line Macros
 Line macros are generally scoped to the current line, with the body
-consisting of zero or more arguments.  If a macro is scoped to the next
-line and the line arguments are empty, the next line is used instead,
-else the general syntax is used.  Thus:
+consisting of zero or more arguments.
+If a macro is scoped to the next line and the line arguments are empty,
+the next line, which must be text, is used instead.
+Thus:
 .Bd -literal -offset indent
 \&.I
 foo
 .Ed
-.
 .Pp
 is equivalent to
 .Sq \&.I foo .
-If next-line macros are invoked consecutively, only the last is used; in
-other words, if a next-line macro is preceded by a block macro, it is
-ignored.
+If next-line macros are invoked consecutively, only the last is used.
+If a next-line macro is followed by a non-next-line macro, an error is
+raised, except for
+.Sx \&br ,
+.Sx \&sp ,
+and
+.Sx \&na .
+.Pp
+The syntax is as follows:
 .Bd -literal -offset indent
 \&.YO \(lBbody...\(rB
 \(lBbody...\(rB
 .Ed
-.
-.Pp
-.Bl -column -compact -offset indent "MacroX" "ArgumentsX" "ScopeXXXXX"
-.It Em Macro Ta Em Arguments Ta Em Scope
-.It Sx \&B   Ta    n         Ta    next-line
-.It Sx \&BI  Ta    n         Ta    current
-.It Sx \&BR  Ta    n         Ta    current
-.It Sx \&DT  Ta    0         Ta    current
-.It Sx \&I   Ta    n         Ta    next-line
-.It Sx \&IB  Ta    n         Ta    current
-.It Sx \&IR  Ta    n         Ta    current
-.It Sx \&PD  Ta    n         Ta    current
-.It Sx \&R   Ta    n         Ta    next-line
-.It Sx \&RB  Ta    n         Ta    current
-.It Sx \&RI  Ta    n         Ta    current
-.It Sx \&SB  Ta    n         Ta    next-line
-.It Sx \&SM  Ta    n         Ta    next-line
-.It Sx \&TH  Ta    >1, <6    Ta    current
-.It Sx \&UC  Ta    n         Ta    current
-.It Sx \&br  Ta    0         Ta    current
-.It Sx \&fi  Ta    0         Ta    current
-.It Sx \&i   Ta    n         Ta    current
-.It Sx \&na  Ta    0         Ta    current
-.It Sx \&nf  Ta    0         Ta    current
-.It Sx \&r   Ta    0         Ta    current
-.It Sx \&sp  Ta    1         Ta    current
+.Pp
+.Bl -column -compact -offset indent "MacroX" "ArgumentsX" "ScopeXXXXX" "CompatX"
+.It Em Macro Ta Em Arguments Ta Em Scope     Ta Em Notes
+.It Sx \&AT  Ta    <=1       Ta    current   Ta    \&
+.It Sx \&B   Ta    n         Ta    next-line Ta    \&
+.It Sx \&BI  Ta    n         Ta    current   Ta    \&
+.It Sx \&BR  Ta    n         Ta    current   Ta    \&
+.It Sx \&DT  Ta    0         Ta    current   Ta    \&
+.It Sx \&I   Ta    n         Ta    next-line Ta    \&
+.It Sx \&IB  Ta    n         Ta    current   Ta    \&
+.It Sx \&IR  Ta    n         Ta    current   Ta    \&
+.\" .It Sx \&PD  Ta    n         Ta    current   Ta    compat
+.It Sx \&R   Ta    n         Ta    next-line Ta    \&
+.It Sx \&RB  Ta    n         Ta    current   Ta    \&
+.It Sx \&RI  Ta    n         Ta    current   Ta    \&
+.It Sx \&SB  Ta    n         Ta    next-line Ta    \&
+.It Sx \&SM  Ta    n         Ta    next-line Ta    \&
+.It Sx \&TH  Ta    >1, <6    Ta    current   Ta    \&
+.It Sx \&UC  Ta    <=1       Ta    current   Ta    \&
+.It Sx \&br  Ta    0         Ta    current   Ta    compat
+.It Sx \&fi  Ta    0         Ta    current   Ta    compat
+.It Sx \&i   Ta    n         Ta    current   Ta    compat
+.It Sx \&in  Ta    1         Ta    current   Ta    compat
+.It Sx \&na  Ta    0         Ta    current   Ta    compat
+.It Sx \&nf  Ta    0         Ta    current   Ta    compat
+.It Sx \&r   Ta    0         Ta    current   Ta    compat
+.It Sx \&sp  Ta    1         Ta    current   Ta    compat
+.\" .It Sx \&Sp  Ta    <1        Ta    current   Ta    compat
+.\" .It Sx \&Vb  Ta    <1        Ta    current   Ta    compat
+.\" .It Sx \&Ve  Ta    0         Ta    current   Ta    compat
 .El
-.
 .Pp
-The
-.Sx \&PD ,
-.Sx \&RS ,
-.Sx \&RE ,
-.Sx \&UC ,
-.Sx \&br ,
-.Sx \&fi ,
-.Sx \&i ,
-.Sx \&na ,
-.Sx \&nf ,
-.Sx \&r ,
-and
-.Sx \&sp
-macros should not be used.  They're included for compatibility.
-.
-.
+Macros marked as
+.Qq compat
+are included for compatibility with the significant corpus of existing
+manuals that mix dialects of roff.
+These macros should not be used for portable
+.Nm
+manuals.
 .Ss Block Macros
-Block macros are comprised of a head and body.  Like for in-line macros,
-the head is scoped to the current line and, in one circumstance, the
-next line; the body is scoped to subsequent lines and is closed out by a
-subsequent block macro invocation.
+Block macros comprise a head and body.
+As with in-line macros, the head is scoped to the current line and, in
+one circumstance, the next line (the next-line stipulations as in
+.Sx Line Macros
+apply here as well).
+.Pp
+The syntax is as follows:
 .Bd -literal -offset indent
 \&.YO \(lBhead...\(rB
 \(lBhead...\(rB
 \(lBbody...\(rB
 .Ed
-.
 .Pp
 The closure of body scope may be to the section, where a macro is closed
 by
@@ -502,7 +460,7 @@ sub-section, closed by a section or
 .Sx \&SS ;
 part, closed by a section, sub-section, or
 .Sx \&RE ;
-or paragraph, closed by a section, sub-section, part, 
+or paragraph, closed by a section, sub-section, part,
 .Sx \&HP ,
 .Sx \&IP ,
 .Sx \&LP ,
@@ -511,43 +469,42 @@ or paragraph, closed by a section, sub-section, part,
 or
 .Sx \&TP .
 No closure refers to an explicit block closing macro.
-.
-.Pp
-.Bl -column "MacroX" "ArgumentsX" "Head ScopeX" "sub-sectionX" -compact -offset indent
-.It Em Macro Ta Em Arguments Ta Em Head Scope Ta Em Body Scope
-.It Sx \&HP  Ta    <2        Ta    current    Ta    paragraph
-.It Sx \&IP  Ta    <3        Ta    current    Ta    paragraph
-.It Sx \&LP  Ta    0         Ta    current    Ta    paragraph
-.It Sx \&P   Ta    0         Ta    current    Ta    paragraph
-.It Sx \&PP  Ta    0         Ta    current    Ta    paragraph
-.It Sx \&RE  Ta    0         Ta    current    Ta    none
-.It Sx \&RS  Ta    1         Ta    current    Ta    part
-.It Sx \&SH  Ta    >0        Ta    next-line  Ta    section
-.It Sx \&SS  Ta    >0        Ta    next-line  Ta    sub-section
-.It Sx \&TP  Ta    n         Ta    next-line  Ta    paragraph
+.Pp
+As a rule, block macros may not be nested; thus, calling a block macro
+while another block macro scope is open, and the open scope is not
+implicitly closed, is syntactically incorrect.
+.Pp
+.Bl -column -compact -offset indent "MacroX" "ArgumentsX" "Head ScopeX" "sub-sectionX" "compatX"
+.It Em Macro Ta Em Arguments Ta Em Head Scope Ta Em Body Scope  Ta Em Notes
+.It Sx \&HP  Ta    <2        Ta    current    Ta    paragraph   Ta    \&
+.It Sx \&IP  Ta    <3        Ta    current    Ta    paragraph   Ta    \&
+.It Sx \&LP  Ta    0         Ta    current    Ta    paragraph   Ta    \&
+.It Sx \&P   Ta    0         Ta    current    Ta    paragraph   Ta    \&
+.It Sx \&PP  Ta    0         Ta    current    Ta    paragraph   Ta    \&
+.It Sx \&RE  Ta    0         Ta    current    Ta    none        Ta    compat
+.It Sx \&RS  Ta    1         Ta    current    Ta    part        Ta    compat
+.It Sx \&SH  Ta    >0        Ta    next-line  Ta    section     Ta    \&
+.It Sx \&SS  Ta    >0        Ta    next-line  Ta    sub-section Ta    \&
+.It Sx \&TP  Ta    n         Ta    next-line  Ta    paragraph   Ta    \&
 .El
-.
+.Pp
+Macros marked
+.Qq compat
+are as mentioned in
+.Sx Line Macros .
 .Pp
 If a block macro is next-line scoped, it may only be followed by in-line
-macros (excluding
-.Sx \&DT ,
-.Sx \&PD ,
-.Sx \&TH ,
-.Sx \&UC ,
-.Sx \&br ,
-.Sx \&na ,
-.Sx \&sp ,
-.Sx \&nf ,
-and
-.Sx \&fi ) .
-.
-.
+macros for decorating text.
 .Sh REFERENCE
 This section is a canonical reference to all macros, arranged
-alphabetically.  For the scoping of individual macros, see
+alphabetically.
+For the scoping of individual macros, see
 .Sx MACRO SYNTAX .
-.
-.
+.Ss \&AT
+Sets the volume for the footer for compatibility with man pages from
+.Tn AT&T UNIX
+releases.
+The optional arguments specify which release it is from.
 .Ss \&B
 Text is rendered in bold face.
 .Pp
@@ -558,20 +515,20 @@ See also
 .Sx \&i ,
 and
 .Sx \&r .
-.
-.
 .Ss \&BI
-Text is rendered alternately in bold face and italic.  Thus, 
+Text is rendered alternately in bold face and italic.
+Thus,
 .Sq .BI this word and that
 causes
 .Sq this
 and
 .Sq and
-to render in bold face, while 
+to render in bold face, while
 .Sq word
 and
 .Sq that
-render in italics.  Whitespace between arguments is omitted in output.
+render in italics.
+Whitespace between arguments is omitted in output.
 .Pp
 Examples:
 .Pp
@@ -590,8 +547,6 @@ See also
 .Sx \&RI ,
 and
 .Sx \&IR .
-.
-.
 .Ss \&BR
 Text is rendered alternately in bold face and roman (the default font).
 Whitespace between arguments is omitted in output.
@@ -607,12 +562,9 @@ See also
 .Sx \&RI ,
 and
 .Sx \&IR .
-.
-.
 .Ss \&DT
-Has no effect.  Included for compatibility.
-.
-.
+Has no effect.
+Included for compatibility.
 .Ss \&HP
 Begin a paragraph whose initial output line is left-justified, but
 subsequent output lines are indented, with the following syntax:
@@ -635,8 +587,6 @@ See also
 .Sx \&PP ,
 and
 .Sx \&TP .
-.
-.
 .Ss \&I
 Text is rendered in italics.
 .Pp
@@ -647,11 +597,9 @@ See also
 .Sx \&i ,
 and
 .Sx \&r .
-.
-.
 .Ss \&IB
-Text is rendered alternately in italics and bold face.  Whitespace
-between arguments is omitted in output.
+Text is rendered alternately in italics and bold face.
+Whitespace between arguments is omitted in output.
 .Pp
 See
 .Sx \&BI
@@ -664,8 +612,6 @@ See also
 .Sx \&RI ,
 and
 .Sx \&IR .
-.
-.
 .Ss \&IP
 Begin an indented paragraph with the following syntax:
 .Bd -filled -offset indent
@@ -676,14 +622,14 @@ Begin an indented paragraph with the following syntax:
 The
 .Cm width
 argument defines the width of the left margin and is defined by
-.Sx Scaling Widths ,
+.Sx Scaling Widths .
 It's saved for later paragraph left-margins; if unspecified, the saved or
 default width is used.
 .Pp
 The
 .Cm head
-argument is used as a leading term, flushed to the left margin.  This is
-useful for bulleted paragraphs and so on.
+argument is used as a leading term, flushed to the left margin.
+This is useful for bulleted paragraphs and so on.
 .Pp
 See also
 .Sx \&HP ,
@@ -692,8 +638,6 @@ See also
 .Sx \&PP ,
 and
 .Sx \&TP .
-.
-.
 .Ss \&IR
 Text is rendered alternately in italics and roman (the default font).
 Whitespace between arguments is omitted in output.
@@ -709,12 +653,11 @@ See also
 .Sx \&RB ,
 and
 .Sx \&RI .
-.
-.
 .Ss \&LP
-Begin an undecorated paragraph.  The scope of a paragraph is closed by a
-subsequent paragraph, sub-section, section, or end of file.  The saved
-paragraph left-margin width is re-set to the default.
+Begin an undecorated paragraph.
+The scope of a paragraph is closed by a subsequent paragraph,
+sub-section, section, or end of file.
+The saved paragraph left-margin width is reset to the default.
 .Pp
 See also
 .Sx \&HP ,
@@ -723,8 +666,6 @@ See also
 .Sx \&PP ,
 and
 .Sx \&TP .
-.
-.
 .Ss \&P
 Synonym for
 .Sx \&LP .
@@ -736,8 +677,6 @@ See also
 .Sx \&PP ,
 and
 .Sx \&TP .
-.
-.
 .Ss \&PP
 Synonym for
 .Sx \&LP .
@@ -749,8 +688,6 @@ See also
 .Sx \&P ,
 and
 .Sx \&TP .
-.
-.
 .Ss \&R
 Text is rendered in roman (the default font).
 .Pp
@@ -761,8 +698,6 @@ See also
 .Sx \&i ,
 and
 .Sx \&r .
-.
-.
 .Ss \&RB
 Text is rendered alternately in roman (the default font) and bold face.
 Whitespace between arguments is omitted in output.
@@ -778,13 +713,9 @@ See also
 .Sx \&RI ,
 and
 .Sx \&IR .
-.
-.
 .Ss \&RE
 Explicitly close out the scope of a prior
 .Sx \&RS .
-.
-.
 .Ss \&RI
 Text is rendered alternately in roman (the default font) and italics.
 Whitespace between arguments is omitted in output.
@@ -800,12 +731,10 @@ See also
 .Sx \&RB ,
 and
 .Sx \&IR .
-.
-.
 .Ss \&RS
-Begin a part setting the left margin.  The left margin controls the
-offset, following an initial indentation, to un-indented text such as
-that of
+Begin a part setting the left margin.
+The left margin controls the offset, following an initial indentation,
+to un-indented text such as that of
 .Sx \&PP .
 This has the following syntax:
 .Bd -filled -offset indent
@@ -817,31 +746,23 @@ The
 .Cm width
 argument must conform to
 .Sx Scaling Widths .
-If not specified, the saved or default width is used. 
-.
-.
+If not specified, the saved or default width is used.
 .Ss \&SB
 Text is rendered in small size (one point smaller than the default font)
 bold face.
-.
-.
 .Ss \&SH
-Begin a section.  The scope of a section is only closed by another
-section or the end of file.  The paragraph left-margin width is re-set
-to the default.
-.
-.
+Begin a section.
+The scope of a section is only closed by another section or the end of
+file.
+The paragraph left-margin width is reset to the default.
 .Ss \&SM
 Text is rendered in small size (one point smaller than the default
 font).
-.
-.
 .Ss \&SS
-Begin a sub-section.  The scope of a sub-section is closed by a
-subsequent sub-section, section, or end of file.  The paragraph
-left-margin width is re-set to the default.
-.
-.
+Begin a sub-section.
+The scope of a sub-section is closed by a subsequent sub-section,
+section, or end of file.
+The paragraph left-margin width is reset to the default.
 .Ss \&TH
 Sets the title of the manual page with the following syntax:
 .Bd -filled -offset indent
@@ -850,17 +771,21 @@ Sets the title of the manual page with the following syntax:
 .Op Cm date Op Cm source Op Cm volume
 .Ed
 .Pp
-At least the upper-case document title
+At least the upper-case document
 .Cm title
-and numeric manual section
+and the manual
 .Cm section
-arguments must be provided.  The
+arguments must be provided.
+The
 .Cm date
 argument should be formatted as described in
-.Sx Dates :
-if it does not conform, the current date is used instead.  The
+.Sx Dates ,
+but will be printed verbatim if it is not.
+If the date is not specified, the current date is used.
+The
 .Cm source
-string specifies the organisation providing the utility.  The
+string specifies the organisation providing the utility.
+The
 .Cm volume
 string replaces the default rendered volume, which is dictated by the
 manual section.
@@ -868,12 +793,11 @@ manual section.
 Examples:
 .Pp
 .D1 \&.TH CVS 5 "1992-02-12" GNU
-.
-.
 .Ss \&TP
 Begin a paragraph where the head, if exceeding the indentation width, is
 followed by a newline; if not, the body follows on the same line after a
-buffer to the indentation width.  Subsequent output lines are indented.
+buffer to the indentation width.
+Subsequent output lines are indented.
 The syntax is as follows:
 .Bd -filled -offset indent
 .Pf \. Sx \&TP
@@ -894,30 +818,28 @@ See also
 .Sx \&P ,
 and
 .Sx \&PP .
-.
-.
-.Ss \&PD
-Has no effect.  Included for compatibility.
-.
-.
+.\" .
+.\" .
+.\" .Ss \&PD
+.\" Has no effect.  Included for compatibility.
+.\" .
+.\" .
 .Ss \&UC
-Has no effect.  Included for compatibility.
-.
-.
+Sets the volume for the footer for compatibility with man pages from
+BSD releases.
+The optional first argument specifies which release it is from.
 .Ss \&br
-Breaks the current line.  Consecutive invocations have no further effect.
+Breaks the current line.
+Consecutive invocations have no further effect.
 .Pp
 See also
 .Sx \&sp .
-.
-.
 .Ss \&fi
 End literal mode begun by
 .Sx \&nf .
-.
-.
 .Ss \&i
-Italicise arguments.  Synonym for
+Italicise arguments.
+Synonym for
 .Sx \&I .
 .Pp
 See also
@@ -927,18 +849,23 @@ See also
 .Sx \&b ,
 and
 .Sx \&r .
-.
-.
+.Ss \&in
+Indent relative to the current indentation:
+.Pp
+.D1 Pf \. Sx \&in Op Cm width
+.Pp
+If
+.Cm width
+is signed, the new offset is relative.
+Otherwise, it is absolute.
+This value is reset upon the next paragraph, section, or sub-section.
 .Ss \&na
 Don't align to the right margin.
-.
-.
 .Ss \&nf
 Begin literal mode: all subsequent free-form lines have their end of
-line boundaries preserved.  May be ended by
+line boundaries preserved.
+May be ended by
 .Sx \&fi .
-.
-.
 .Ss \&r
 Fonts and styles (bold face, italics) reset to roman (default font).
 .Pp
@@ -949,8 +876,6 @@ See also
 .Sx \&b ,
 and
 .Sx \&i .
-.
-.
 .Ss \&sp
 Insert vertical spaces into output with the following syntax:
 .Bd -filled -offset indent
@@ -958,59 +883,80 @@ Insert vertical spaces into output with the following syntax:
 .Op Cm height
 .Ed
 .Pp
-Insert 
+Insert
 .Cm height
 spaces, which must conform to
 .Sx Scaling Widths .
 If 0, this is equivalent to the
 .Sx \&br
-macro.  Defaults to 1, if unspecified.
+macro.
+Defaults to 1, if unspecified.
 .Pp
 See also
 .Sx \&br .
-.
-.
+.\" .Ss \&Sp
+.\" A synonym for
+.\" .Sx \&sp
+.\" .Cm 0.5v .
+.\" .
+.\" .Ss \&Vb
+.\" A synonym for
+.\" .Sx \&nf .
+.\" Accepts an argument (the height of the formatted space) which is
+.\" disregarded.
+.\" .
+.\" .Ss \&Ve
+.\" A synonym for
+.\" .Sx \&fi .
+.\" .
 .Sh COMPATIBILITY
-This section documents compatibility with other roff implementations, at
-this time limited to
-.Xr groff 1 .
+This section documents areas of questionable portability between
+implementations of the
+.Nm
+language.
 .Pp
 .Bl -dash -compact
 .It
-The
-.Xr groff 1
-.Sx \&i
-macro will italicise all subsequent text if a line argument is not
-provided.  This behaviour is not implemented.
+The \es (font size), \em (font colour), and \eM (font filling colour)
+font decoration escapes are all discarded in mandoc.
 .It
-In quoted literals, groff allowed pair-wise double-quotes to produce a
-standalone double-quote in formatted output.  This idiosyncratic
-behaviour is no longer applicable.
+In quoted literals, GNU troff allowed pair-wise double-quotes to produce
+a standalone double-quote in formatted output.
+It is not known whether this behaviour is exhibited by other formatters.
 .It
 The
 .Sx \&sp
-macro does not accept negative numbers.
+macro does not accept negative values in mandoc.
+In GNU troff, this would result in strange behaviour.
 .It
-Blocks of whitespace are stripped from both macro and free-form text
-lines (except when in literal mode), while groff would retain whitespace
-in free-form text lines.
+The
+.Sq \(aq
+macro control character, in GNU troff (and prior troffs) suppresses a
+newline before macro output; in mandoc, it is an alias for the standard
+.Sq \&.
+control character.
 .El
-.
-.
 .Sh SEE ALSO
 .Xr mandoc 1 ,
 .Xr mandoc_char 7
-.
-.
-.Sh AUTHORS
+.Sh HISTORY
 The
 .Nm
+language first appeared as a macro package for the roff typesetting
+system in
+.At v7 .
+It was later rewritten by James Clark as a macro package for groff.
+The stand-alone implementation that is part of the
+.Xr mandoc 1
+utility written by Kristaps Dzonsons appeared in
+.Ox 4.6 .
+.Sh AUTHORS
+This
+.Nm
 reference was written by
-.An Kristaps Dzonsons Aq kristaps@kth.se .
-.
-.
+.An Kristaps Dzonsons Aq kristaps@bsd.lv .
 .Sh CAVEATS
-Do not use this language.  Use
+Do not use this language.
+Use
 .Xr mdoc 7 ,
 instead.
-.