]> git.cameronkatri.com Git - mandoc.git/blobdiff - mdoc.7
Avoid out-of-bounds read access before the beginning of the
[mandoc.git] / mdoc.7
diff --git a/mdoc.7 b/mdoc.7
index 8838c57305b6544b4ebf190159aaafd0569a981b..539ac6f89afd38c8545d6a4c113dd31eb9172413 100644 (file)
--- a/mdoc.7
+++ b/mdoc.7
@@ -1,4 +1,4 @@
-.\"    $Id: mdoc.7,v 1.236 2014/08/28 03:51:56 schwarze Exp $
+.\"    $Id: mdoc.7,v 1.253 2015/03/13 20:20:07 schwarze Exp $
 .\"
 .\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
 .\" Copyright (c) 2010, 2011, 2013 Ingo Schwarze <schwarze@openbsd.org>
 .\"
 .\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
 .\" Copyright (c) 2010, 2011, 2013 Ingo Schwarze <schwarze@openbsd.org>
@@ -15,7 +15,7 @@
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
-.Dd $Mdocdate: August 28 2014 $
+.Dd $Mdocdate: March 13 2015 $
 .Dt MDOC 7
 .Os
 .Sh NAME
 .Dt MDOC 7
 .Os
 .Sh NAME
@@ -388,7 +388,7 @@ See
 References other manuals with related topics.
 This section should exist for most manuals.
 Cross-references should conventionally be ordered first by section, then
 References other manuals with related topics.
 This section should exist for most manuals.
 Cross-references should conventionally be ordered first by section, then
-alphabetically.
+alphabetically (ignoring case).
 .Pp
 References to other documentation concerning the topic of the manual page,
 for example authoritative books or journal articles, may also be
 .Pp
 References to other documentation concerning the topic of the manual page,
 for example authoritative books or journal articles, may also be
@@ -433,7 +433,7 @@ in the alphabetical
 .Ss Document preamble and NAME section macros
 .Bl -column "Brq, Bro, Brc" description
 .It Sx \&Dd Ta document date: Cm $\&Mdocdate$ | Ar month day , year
 .Ss Document preamble and NAME section macros
 .Bl -column "Brq, Bro, Brc" description
 .It Sx \&Dd Ta document date: Cm $\&Mdocdate$ | Ar month day , year
-.It Sx \&Dt Ta document title: Ar TITLE section Op Ar volume | arch
+.It Sx \&Dt Ta document title: Ar TITLE section Op Ar arch
 .It Sx \&Os Ta operating system version: Op Ar system Op Ar version
 .It Sx \&Nm Ta document name (one argument)
 .It Sx \&Nd Ta document description (one line)
 .It Sx \&Os Ta operating system version: Op Ar system Op Ar version
 .It Sx \&Nm Ta document name (one argument)
 .It Sx \&Nd Ta document description (one line)
@@ -454,6 +454,7 @@ in the alphabetical
 .Op Fl compact
 .It Sx \&D1 Ta indented display (one line)
 .It Sx \&Dl Ta indented literal display (one line)
 .Op Fl compact
 .It Sx \&D1 Ta indented display (one line)
 .It Sx \&Dl Ta indented literal display (one line)
+.It Sx \&Ql Ta in-line literal display: Ql text
 .It Sx \&Bl , \&El Ta list block:
 .Fl Ar type
 .Op Fl width Ar val
 .It Sx \&Bl , \&El Ta list block:
 .Fl Ar type
 .Op Fl width Ar val
@@ -528,7 +529,6 @@ in the alphabetical
 .It Sx \&Dq , \&Do , \&Dc Ta enclose in typographic double quotes: Dq text
 .It Sx \&Qq , \&Qo , \&Qc Ta enclose in typewriter double quotes: Qq text
 .It Sx \&Sq , \&So , \&Sc Ta enclose in single quotes: Sq text
 .It Sx \&Dq , \&Do , \&Dc Ta enclose in typographic double quotes: Dq text
 .It Sx \&Qq , \&Qo , \&Qc Ta enclose in typewriter double quotes: Qq text
 .It Sx \&Sq , \&So , \&Sc Ta enclose in single quotes: Sq text
-.It Sx \&Ql Ta single-quoted literal text: Ql text
 .It Sx \&Pq , \&Po , \&Pc Ta enclose in parentheses: Pq text
 .It Sx \&Bq , \&Bo , \&Bc Ta enclose in square brackets: Bq text
 .It Sx \&Brq , \&Bro , \&Brc Ta enclose in curly braces: Brq text
 .It Sx \&Pq , \&Po , \&Pc Ta enclose in parentheses: Pq text
 .It Sx \&Bq , \&Bo , \&Bc Ta enclose in square brackets: Bq text
 .It Sx \&Brq , \&Bro , \&Brc Ta enclose in curly braces: Brq text
@@ -777,7 +777,7 @@ The
 must be one of the following:
 .Bl -tag -width 13n -offset indent
 .It Fl centered
 must be one of the following:
 .Bl -tag -width 13n -offset indent
 .It Fl centered
-Produce one output line from each input line, and centre-justify each line.
+Produce one output line from each input line, and center-justify each line.
 Using this display type is not recommended; many
 .Nm
 implementations render it poorly.
 Using this display type is not recommended; many
 .Nm
 implementations render it poorly.
@@ -822,7 +822,7 @@ which has no effect;
 .Cm right ,
 which justifies to the right margin; or
 .Cm center ,
 .Cm right ,
 which justifies to the right margin; or
 .Cm center ,
-which aligns around an imagined centre axis.
+which aligns around an imagined center axis.
 .It
 A macro invocation, which selects a predefined width
 associated with that macro.
 .It
 A macro invocation, which selects a predefined width
 associated with that macro.
@@ -937,8 +937,11 @@ The
 .Fl width
 and
 .Fl offset
 .Fl width
 and
 .Fl offset
-arguments accept scaling widths as described in
-.Xr roff 7
+arguments accept macro names as described for
+.Sx \&Bd
+.Fl offset ,
+scaling widths as described in
+.Xr roff 7 ,
 or use the length of the given string.
 The
 .Fl offset
 or use the length of the given string.
 The
 .Fl offset
@@ -1182,13 +1185,12 @@ See also
 and
 .Sx \&Dl .
 .Ss \&Db
 and
 .Sx \&Dl .
 .Ss \&Db
-Switch debugging mode.
-Its syntax is as follows:
-.Pp
-.D1 Pf \. Sx \&Db Cm on | off
-.Pp
-This macro is ignored by
-.Xr mandoc 1 .
+This macro is obsolete.
+No replacement is needed.
+It is ignored by
+.Xr mandoc 1
+and groff including its arguments.
+It was formerly used to toggle a debugging mode.
 .Ss \&Dc
 Close a
 .Sx \&Do
 .Ss \&Dc
 Close a
 .Sx \&Do
@@ -1245,7 +1247,7 @@ See also
 and
 .Sx \&Os .
 .Ss \&Dl
 and
 .Sx \&Os .
 .Ss \&Dl
-One-line intended display.
+One-line indented display.
 This is formatted as literal text and is useful for commands and
 invocations.
 It is followed by a newline.
 This is formatted as literal text and is useful for commands and
 invocations.
 It is followed by a newline.
@@ -1254,7 +1256,9 @@ Examples:
 .Dl \&.Dl % mandoc mdoc.7 \e(ba less
 .Pp
 See also
 .Dl \&.Dl % mandoc mdoc.7 \e(ba less
 .Pp
 See also
+.Sx \&Ql ,
 .Sx \&Bd
 .Sx \&Bd
+.Fl literal ,
 and
 .Sx \&D1 .
 .Ss \&Do
 and
 .Sx \&D1 .
 .Ss \&Do
@@ -1297,7 +1301,7 @@ Its syntax is as follows:
 .Pf \. Sx \&Dt
 .Ar TITLE
 .Ar section
 .Pf \. Sx \&Dt
 .Ar TITLE
 .Ar section
-.Op Ar volume | arch
+.Op Ar arch
 .Ed
 .Pp
 Its arguments are as follows:
 .Ed
 .Pp
 Its arguments are as follows:
@@ -1312,69 +1316,28 @@ it should by convention be all caps.
 The manual section.
 This may be one of
 .Cm 1
 The manual section.
 This may be one of
 .Cm 1
-.Pq utilities ,
+.Pq General Commands ,
 .Cm 2
 .Cm 2
-.Pq system calls ,
+.Pq System Calls ,
 .Cm 3
 .Cm 3
-.Pq libraries ,
+.Pq Library Functions ,
 .Cm 3p
 .Cm 3p
-.Pq Perl libraries ,
+.Pq Perl Library ,
 .Cm 4
 .Cm 4
-.Pq devices ,
+.Pq Device Drivers ,
 .Cm 5
 .Cm 5
-.Pq file formats ,
+.Pq File Formats ,
 .Cm 6
 .Cm 6
-.Pq games ,
+.Pq Games ,
 .Cm 7
 .Cm 7
-.Pq miscellaneous ,
+.Pq Miscellaneous Information ,
 .Cm 8
 .Cm 8
-.Pq system utilities ,
-.Cm 9
-.Pq kernel functions ,
-.Cm X11
-.Pq X Window System ,
-.Cm X11R6
-.Pq X Window System ,
-.Cm unass
-.Pq unassociated ,
-.Cm local
-.Pq local system ,
-.Cm draft
-.Pq draft manual ,
+.Pq System Manager's Manual ,
 or
 or
-.Cm paper
-.Pq paper .
+.Cm 9
+.Pq Kernel Developer's Manual .
 It should correspond to the manual's filename suffix and defaults to
 the empty string if unspecified.
 It should correspond to the manual's filename suffix and defaults to
 the empty string if unspecified.
-.It Ar volume
-This overrides the volume inferred from
-.Ar section .
-This field is optional, and if specified, must be one of
-.Cm USD
-.Pq users' supplementary documents ,
-.Cm PS1
-.Pq programmers' supplementary documents ,
-.Cm AMD
-.Pq administrators' supplementary documents ,
-.Cm SMM
-.Pq system managers' manuals ,
-.Cm URM
-.Pq users' reference manuals ,
-.Cm PRM
-.Pq programmers' reference manuals ,
-.Cm KM
-.Pq kernel manuals ,
-.Cm IND
-.Pq master index ,
-.Cm MMI
-.Pq master index ,
-.Cm LOCAL
-.Pq local manuals ,
-.Cm LOC
-.Pq local manuals ,
-or
-.Cm CON
-.Pq contributed manuals .
 .It Ar arch
 This specifies the machine architecture a manual page applies to,
 where relevant, for example
 .It Ar arch
 This specifies the machine architecture a manual page applies to,
 where relevant, for example
@@ -1383,17 +1346,11 @@ where relevant, for example
 .Cm i386 ,
 or
 .Cm sparc64 .
 .Cm i386 ,
 or
 .Cm sparc64 .
-The list of supported architectures varies by operating system.
-For the full list of all architectures recognized by
-.Xr mandoc 1 ,
-see the file
-.Pa arch.in
-in the source distribution.
+The list of valid architectures varies by operating system.
 .El
 .Pp
 Examples:
 .Dl \&.Dt FOO 1
 .El
 .Pp
 Examples:
 .Dl \&.Dt FOO 1
-.Dl \&.Dt FOO 4 KM
 .Dl \&.Dt FOO 9 i386
 .Pp
 See also
 .Dl \&.Dt FOO 9 i386
 .Pp
 See also
@@ -1570,7 +1527,7 @@ arguments are treated as separate utilities.
 See also
 .Sx \&Rv .
 .Ss \&Fa
 See also
 .Sx \&Rv .
 .Ss \&Fa
-Function argument.
+Function argument or parameter.
 Its syntax is as follows:
 .Bd -ragged -offset indent
 .Pf \. Sx \&Fa
 Its syntax is as follows:
 .Bd -ragged -offset indent
 .Pf \. Sx \&Fa
@@ -1801,17 +1758,18 @@ is preferred for displaying code; the
 .Sx \&Ic
 macro is used when referring to specific instructions.
 .Ss \&In
 .Sx \&Ic
 macro is used when referring to specific instructions.
 .Ss \&In
-An
-.Dq include
-file.
+The name of an include file.
+This macro is most often used in section 2, 3, and 9 manual pages.
+.Pp
 When invoked as the first macro on an input line in the
 .Em SYNOPSIS
 section, the argument is displayed in angle brackets
 and preceded by
 When invoked as the first macro on an input line in the
 .Em SYNOPSIS
 section, the argument is displayed in angle brackets
 and preceded by
-.Dq #include ,
+.Qq #include ,
 and a blank line is inserted in front if there is a preceding
 function declaration.
 and a blank line is inserted in front if there is a preceding
 function declaration.
-This is most often used in section 2, 3, and 9 manual pages.
+In other sections, it only encloses its argument in angle brackets
+and causes no line break.
 .Pp
 Examples:
 .Dl \&.In sys/types.h
 .Pp
 Examples:
 .Dl \&.In sys/types.h
@@ -1972,11 +1930,9 @@ Examples:
 .Dl \&.An Kristaps Dzonsons \&Aq \&Mt kristaps@bsd.lv
 .Ss \&Nd
 A one line description of the manual's content.
 .Dl \&.An Kristaps Dzonsons \&Aq \&Mt kristaps@bsd.lv
 .Ss \&Nd
 A one line description of the manual's content.
-This may only be invoked in the
-.Em SYNOPSIS
-section subsequent the
-.Sx \&Nm
-macro.
+This is the mandatory last macro of the
+.Em NAME
+section and not appropriate for other sections.
 .Pp
 Examples:
 .Dl Pf . Sx \&Nd mdoc language reference
 .Pp
 Examples:
 .Dl Pf . Sx \&Nd mdoc language reference
@@ -2133,8 +2089,16 @@ Its syntax is as follows:
 The optional
 .Ar system
 parameter specifies the relevant operating system or environment.
 The optional
 .Ar system
 parameter specifies the relevant operating system or environment.
-Left unspecified, it defaults to the local operating system version.
-This is the suggested form.
+It is suggested to leave it unspecified, in which case
+.Xr mandoc 1
+uses its
+.Fl Ios
+argument or, if that isn't specified either,
+.Fa sysname
+and
+.Fa release
+as returned by
+.Xr uname 3 .
 .Pp
 Examples:
 .Dl \&.Os
 .Pp
 Examples:
 .Dl \&.Os
@@ -2238,11 +2202,21 @@ See also
 Close quoted context opened by
 .Sx \&Qo .
 .Ss \&Ql
 Close quoted context opened by
 .Sx \&Qo .
 .Ss \&Ql
-Format a single-quoted literal.
+In-line literal display.
+This can for example be used for complete command invocations and
+for multi-word code fragments when more specific markup is not
+appropriate and an indented display is not desired.
+While
+.Xr mandoc 1
+always encloses the arguments in single quotes, other formatters
+usually omit the quotes on non-terminal output devices when the
+arguments have three or more characters.
+.Pp
 See also
 See also
-.Sx \&Qq
+.Sx \&Dl
 and
 and
-.Sx \&Sq .
+.Sx \&Bd
+.Fl literal .
 .Ss \&Qo
 Multi-line version of
 .Sx \&Qq .
 .Ss \&Qo
 Multi-line version of
 .Sx \&Qq .
@@ -2429,8 +2403,6 @@ The original C standard.
 .Pp
 .It \-isoC-99
 .St -isoC-99
 .Pp
 .It \-isoC-99
 .St -isoC-99
-.It \-ansiC-99
-.St -ansiC-99
 .br
 The second major version of the C language standard.
 .Pp
 .br
 The second major version of the C language standard.
 .Pp
@@ -2530,9 +2502,6 @@ The following three refer to parts of it.
 .br
 Networking APIs, including sockets.
 .Pp
 .br
 Networking APIs, including sockets.
 .Pp
-.It \-xpg4.3
-.St -xpg4.3
-.Pp
 .It \-svid4
 .St -svid4 ,
 .br
 .It \-svid4
 .St -svid4 ,
 .br
@@ -2559,36 +2528,12 @@ The following refer to parts of it.
 .Pp
 .It \-xns5
 .St -xns5
 .Pp
 .It \-xns5
 .St -xns5
-.It \-xns5.2d2.0
-.St -xns5.2d2.0
 .It \-xns5.2
 .St -xns5.2
 .It \-xns5.2
 .St -xns5.2
-.Pp
-.It \-p1387.2
-.St -p1387.2
-.It \-p1387.2-95
-.St -p1387.2-95
-.br
-POSIX software administration.
 .El
 .El
-.It Single UNIX Specification version 3 and related standards
-.Pp
-.Bl -tag -width "-p1003.1g-2000X" -compact
-.It \-p1003.1d-99
-.St -p1003.1d-99
-.br
-Additional real-time extensions.
-.Pp
-.It \-p1003.1j-2000
-.St -p1003.1j-2000
-.br
-Advanced real-time extensions.
-.Pp
-.It \-p1003.1q-2000
-.St -p1003.1q-2000
-.br
-Amendment 7: Tracing [C Language].
+.It Single UNIX Specification version 3
 .Pp
 .Pp
+.Bl -tag -width "-p1003.1-2001" -compact
 .It \-p1003.1-2001
 .St -p1003.1-2001
 .It \-susv3
 .It \-p1003.1-2001
 .St -p1003.1-2001
 .It \-susv3
@@ -2704,8 +2649,17 @@ A variable name.
 Examples:
 .Dl \&.Va foo
 .Dl \&.Va const char *bar ;
 Examples:
 .Dl \&.Va foo
 .Dl \&.Va const char *bar ;
+.Pp
+For function arguments and parameters, use
+.Sx \&Fa
+instead.
+For declarations of global variables in the
+.Em SYNOPSIS
+section, use
+.Sx \&Vt .
 .Ss \&Vt
 A variable type.
 .Ss \&Vt
 A variable type.
+.Pp
 This is also used for indicating global variables in the
 .Em SYNOPSIS
 section, in which case a variable name is also specified.
 This is also used for indicating global variables in the
 .Em SYNOPSIS
 section, in which case a variable name is also specified.
@@ -2720,18 +2674,21 @@ In the former case, this macro starts a new output line,
 and a blank line is inserted in front if there is a preceding
 function definition or include directive.
 .Pp
 and a blank line is inserted in front if there is a preceding
 function definition or include directive.
 .Pp
-Note that this should not be confused with
-.Sx \&Ft ,
-which is used for function return types.
-.Pp
 Examples:
 .Dl \&.Vt unsigned char
 .Dl \&.Vt extern const char * const sys_signame[] \&;
 .Pp
 Examples:
 .Dl \&.Vt unsigned char
 .Dl \&.Vt extern const char * const sys_signame[] \&;
 .Pp
+For parameters in function prototypes, use
+.Sx \&Fa
+instead, for function return types
+.Sx \&Ft ,
+and for variable names outside the
+.Em SYNOPSIS
+section
+.Sx \&Va ,
+even when including a type with the name.
 See also
 See also
-.Sx MANUAL STRUCTURE
-and
-.Sx \&Va .
+.Sx MANUAL STRUCTURE .
 .Ss \&Xc
 Close a scope opened by
 .Sx \&Xo .
 .Ss \&Xc
 Close a scope opened by
 .Sx \&Xo .
@@ -3175,50 +3132,13 @@ Manually switching the font using the
 font escape sequences is never required.
 .Sh COMPATIBILITY
 This section provides an incomplete list of compatibility issues
 font escape sequences is never required.
 .Sh COMPATIBILITY
 This section provides an incomplete list of compatibility issues
-between mandoc and other troff implementations, at this time limited
-to GNU troff
+between mandoc and GNU troff
 .Pq Qq groff .
 .Pq Qq groff .
-The term
-.Qq historic groff
-refers to groff versions before 1.17,
-which featured a significant update of the
-.Pa doc.tmac
-file.
-.Pp
-Heirloom troff, the other significant troff implementation accepting
-\-mdoc, is similar to historic groff.
 .Pp
 The following problematic behaviour is found in groff:
 .Pp
 The following problematic behaviour is found in groff:
-.ds hist (Historic groff only.)
 .Pp
 .Bl -dash -compact
 .It
 .Pp
 .Bl -dash -compact
 .It
-Display macros
-.Po
-.Sx \&Bd ,
-.Sx \&Dl ,
-and
-.Sx \&D1
-.Pc
-may not be nested.
-\*[hist]
-.It
-.Sx \&At
-with unknown arguments produces no output at all.
-\*[hist]
-Newer groff and mandoc print
-.Qq AT&T UNIX
-and the arguments.
-.It
-.Sx \&Bl Fl column
-does not recognise trailing punctuation characters when they immediately
-precede tabulator characters, but treats them as normal text and
-outputs a space before them.
-.It
-.Sx \&Bd Fl ragged compact
-does not start a new line.
-\*[hist]
-.It
 .Sx \&Dd
 with non-standard arguments behaves very strangely.
 When there are three arguments, they are printed verbatim.
 .Sx \&Dd
 with non-standard arguments behaves very strangely.
 When there are three arguments, they are printed verbatim.
@@ -3227,53 +3147,6 @@ but without any arguments the string
 .Dq Epoch
 is printed.
 .It
 .Dq Epoch
 is printed.
 .It
-.Sx \&Fl
-does not print a dash for an empty argument.
-\*[hist]
-.It
-.Sx \&Fn
-does not start a new line unless invoked as the line macro in the
-.Em SYNOPSIS
-section.
-\*[hist]
-.It
-.Sx \&Fo
-with
-.Pf non- Sx \&Fa
-children causes inconsistent spacing between arguments.
-In mandoc, a single space is always inserted between arguments.
-.It
-.Sx \&Ft
-in the
-.Em SYNOPSIS
-causes inconsistent vertical spacing, depending on whether a prior
-.Sx \&Fn
-has been invoked.
-See
-.Sx \&Ft
-and
-.Sx \&Fn
-for the normalised behaviour in mandoc.
-.It
-.Sx \&In
-ignores additional arguments and is not treated specially in the
-.Em SYNOPSIS .
-\*[hist]
-.It
-.Sx \&It
-sometimes requires a
-.Fl nested
-flag.
-\*[hist]
-In new groff and mandoc, any list may be nested by default and
-.Fl enum
-lists will restart the sequence only for the sub-list.
-.It
-.Sx \&Li
-followed by a delimiter is incorrectly used in some manuals
-instead of properly quoting that character, which sometimes works with
-historic groff.
-.It
 .Sx \&Lk
 only accepts a single link-name argument; the remainder is misformatted.
 .It
 .Sx \&Lk
 only accepts a single link-name argument; the remainder is misformatted.
 .It
@@ -3287,19 +3160,6 @@ can only be called by other macros, but not at the beginning of a line.
 .Sx \&%C
 is not implemented (up to and including groff-1.22.2).
 .It
 .Sx \&%C
 is not implemented (up to and including groff-1.22.2).
 .It
-Historic groff only allows up to eight or nine arguments per macro input
-line, depending on the exact situation.
-Providing more arguments causes garbled output.
-The number of arguments on one input line is not limited with mandoc.
-.It
-Historic groff has many un-callable macros.
-Most of these (excluding some block-level macros) are callable
-in new groff and mandoc.
-.It
-.Sq \(ba
-(vertical bar) is not fully supported as a delimiter.
-\*[hist]
-.It
 .Sq \ef
 .Pq font face
 and
 .Sq \ef
 .Pq font face
 and
@@ -3317,13 +3177,27 @@ The following features are unimplemented in mandoc:
 .Bl -dash -compact
 .It
 .Sx \&Bd
 .Bl -dash -compact
 .It
 .Sx \&Bd
-.Fl file Ar file .
+.Fl file Ar file
+is unsupported for security reasons.
+.It
+.Sx \&Bd
+.Fl filled
+does not adjust the right margin, but is an alias for
+.Sx \&Bd
+.Fl ragged .
+.It
+.Sx \&Bd
+.Fl literal
+does not use a literal font, but is an alias for
+.Sx \&Bd
+.Fl unfilled .
 .It
 .Sx \&Bd
 .Fl offset Cm center
 and
 .It
 .Sx \&Bd
 .Fl offset Cm center
 and
-.Fl offset Cm right .
-Groff does not implement centred and flush-right rendering either,
+.Fl offset Cm right
+don't work.
+Groff does not implement centered and flush-right rendering either,
 but produces large indentations.
 .El
 .Sh SEE ALSO
 but produces large indentations.
 .El
 .Sh SEE ALSO