summaryrefslogtreecommitdiff
path: root/usr/src/man/man5/mandoc_roff.5
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/man/man5/mandoc_roff.5')
-rw-r--r--usr/src/man/man5/mandoc_roff.52342
1 files changed, 0 insertions, 2342 deletions
diff --git a/usr/src/man/man5/mandoc_roff.5 b/usr/src/man/man5/mandoc_roff.5
deleted file mode 100644
index 17e9d2e09c..0000000000
--- a/usr/src/man/man5/mandoc_roff.5
+++ /dev/null
@@ -1,2342 +0,0 @@
-.\" $Id: roff.7,v 1.116 2021/09/18 12:23:06 schwarze Exp $
-.\"
-.\" Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
-.\" Copyright (c) 2010-2019 Ingo Schwarze <schwarze@openbsd.org>
-.\"
-.\" Permission to use, copy, modify, and distribute this software for any
-.\" purpose with or without fee is hereby granted, provided that the above
-.\" copyright notice and this permission notice appear in all copies.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-.\"
-.Dd $Mdocdate: September 18 2021 $
-.Dt ROFF 5
-.Os
-.Sh NAME
-.Nm roff
-.Nd roff language reference for mandoc
-.Sh DESCRIPTION
-The
-.Nm roff
-language is a general purpose text formatting language.
-Since traditional implementations of the
-.Xr mdoc 5
-and
-.Xr man 5
-manual formatting languages are based on it,
-many real-world manuals use small numbers of
-.Nm
-requests and escape sequences intermixed with their
-.Xr mdoc 5
-or
-.Xr man 5
-code.
-To properly format such manuals, the
-.Xr mandoc 1
-utility supports a subset of
-.Nm
-requests and escapes.
-Even though this manual page lists all
-.Nm
-requests and escape sequences, it only contains partial information
-about requests not supported by
-.Xr mandoc 1
-and about language features that do not matter for manual pages.
-For complete
-.Nm
-manuals, consult the
-.Sx SEE ALSO
-section.
-.Pp
-Input lines beginning with the control character
-.Sq \&.
-are parsed for requests and macros.
-Such lines are called
-.Dq request lines
-or
-.Dq macro lines ,
-respectively.
-Requests change the processing state and manipulate the formatting;
-some macros also define the document structure and produce formatted
-output.
-The single quote
-.Pq Qq \(aq
-is accepted as an alternative control character,
-treated by
-.Xr mandoc 1
-just like
-.Ql \&.
-.Pp
-Lines not beginning with control characters are called
-.Dq text lines .
-They provide free-form text to be printed; the formatting of the text
-depends on the respective processing context.
-.Sh LANGUAGE SYNTAX
-.Nm
-documents may contain only graphable 7-bit ASCII characters, the space
-character, and, in certain circumstances, the tab character.
-The backslash character
-.Sq \e
-indicates the start of an escape sequence, used for example for
-.Sx Comments
-and
-.Sx Special Characters .
-For a complete listing of escape sequences, consult the
-.Sx ESCAPE SEQUENCE REFERENCE
-below.
-.Ss Comments
-Text following an escaped double-quote
-.Sq \e\(dq ,
-whether in a request, macro, or text line, is ignored to the end of the line.
-A request line beginning with a control character and comment escape
-.Sq \&.\e\(dq
-is also ignored.
-Furthermore, request lines with only a control character and optional
-trailing whitespace are stripped from input.
-.Pp
-Examples:
-.Bd -literal -offset indent -compact
-\&.\e\(dq This is a comment line.
-\&.\e\(dq The next line is ignored:
-\&.
-\&.Sh EXAMPLES \e\(dq This is a comment, too.
-\&example text \e\(dq And so is this.
-.Ed
-.Ss Special Characters
-Special characters are used to encode special glyphs and are rendered
-differently across output media.
-They may occur in request, macro, and text lines.
-Sequences begin with the escape character
-.Sq \e
-followed by either an open-parenthesis
-.Sq \&(
-for two-character sequences; an open-bracket
-.Sq \&[
-for n-character sequences (terminated at a close-bracket
-.Sq \&] ) ;
-or a single one character sequence.
-.Pp
-Examples:
-.Bl -tag -width Ds -offset indent -compact
-.It Li \e(em
-Two-letter em dash escape.
-.It Li \ee
-One-letter backslash escape.
-.El
-.Pp
-See
-.Xr mandoc_char 5
-for a complete list.
-.Ss Font Selection
-In
-.Xr mdoc 5
-and
-.Xr man 5
-documents, fonts are usually selected with macros.
-The
-.Ic \ef
-escape sequence and the
-.Ic \&ft
-request can be used to manually change the font,
-but this is not recommended in
-.Xr mdoc 5
-documents.
-Such manual font changes are overridden by many subsequent macros.
-.Pp
-The following fonts are supported:
-.Pp
-.Bl -tag -width CW -offset indent -compact
-.It Cm B
-Bold font.
-.It Cm BI
-A font that is both bold and italic.
-.It Cm CB
-Bold constant width font.
-Same as
-.Cm B
-in terminal output.
-.It Cm CI
-Italic constant width font.
-Same as
-.Cm I
-in terminal output.
-.It Cm CR
-Regular constant width font.
-Same as
-.Cm R
-in terminal output.
-.It Cm CW
-An alias for
-.Cm CR .
-.It Cm I
-Italic font.
-.It Cm P
-Return to the previous font.
-If a macro caused a font change since the last
-.Ic \ef
-eascape sequence or
-.Ic \&ft
-request, this returns to the font before the last font change in
-the macro rather than to the font before the last manual font change.
-.It Cm R
-Roman font.
-This is the default font.
-.It Cm 1
-An alias for
-.Cm R .
-.It Cm 2
-An alias for
-.Cm I .
-.It Cm 3
-An alias for
-.Cm B .
-.It Cm 4
-An alias for
-.Cm BI .
-.El
-.Pp
-Examples:
-.Bl -tag -width Ds -offset indent -compact
-.It Li \efBbold\efR
-Write in \fBbold\fP, then switch to regular font mode.
-.It Li \efIitalic\efP
-Write in \fIitalic\fP, then return to previous font mode.
-.It Li \ef(BIbold italic\efP
-Write in \f(BIbold italic\fP, then return to previous font mode.
-.El
-.Ss Whitespace
-Whitespace consists of the space character.
-In text lines, whitespace is preserved within a line.
-In request and macro lines, whitespace delimits arguments and is discarded.
-.Pp
-Unescaped trailing spaces are stripped from text line input unless in a
-literal context.
-In general, trailing whitespace on any input line is discouraged for
-reasons of portability.
-In the rare case that a space character is needed at the end of an
-input line, it may be forced by
-.Sq \e\ \e& .
-.Pp
-Literal space characters can be produced in the output
-using escape sequences.
-In macro lines, they can also be included in arguments using quotation; see
-.Sx MACRO SYNTAX
-for details.
-.Pp
-Blank text lines, which may include whitespace, are only permitted
-within literal contexts.
-If the first character of a text line is a space, that line is printed
-with a leading newline.
-.Ss Scaling Widths
-Many requests and macros support scaled widths for their arguments.
-The syntax for a scaled width is
-.Sq Li [+-]?[0-9]*.[0-9]*[:unit:] ,
-where a decimal must be preceded or followed by at least one digit.
-.Pp
-The following scaling units are accepted:
-.Pp
-.Bl -tag -width Ds -offset indent -compact
-.It c
-centimetre
-.It i
-inch
-.It P
-pica (1/6 inch)
-.It p
-point (1/72 inch)
-.It f
-scale
-.Sq u
-by 65536
-.It v
-default vertical span
-.It m
-width of rendered
-.Sq m
-.Pq em
-character
-.It n
-width of rendered
-.Sq n
-.Pq en
-character
-.It u
-default horizontal span for the terminal
-.It M
-mini-em (1/100 em)
-.El
-.Pp
-Using anything other than
-.Sq m ,
-.Sq n ,
-or
-.Sq v
-is necessarily non-portable across output media.
-See
-.Sx COMPATIBILITY .
-.Pp
-If a scaling unit is not provided, the numerical value is interpreted
-under the default rules of
-.Sq v
-for vertical spaces and
-.Sq u
-for horizontal ones.
-.Pp
-Examples:
-.Bl -tag -width ".Bl -tag -width 2i" -offset indent -compact
-.It Li \&.Bl -tag -width 2i
-two-inch tagged list indentation in
-.Xr mdoc 5
-.It Li \&.HP 2i
-two-inch tagged list indentation in
-.Xr man 5
-.It Li \&.sp 2v
-two vertical spaces
-.El
-.Ss Sentence Spacing
-Each sentence should terminate at the end of an input line.
-By doing this, a formatter 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 .
-.Pp
-The proper spacing is also intelligently preserved if a sentence ends at
-the boundary of a macro line.
-.Pp
-If an input line happens to end with a period, exclamation or question
-mark that isn't the end of a sentence, append a zero-width space
-.Pq Sq \e& .
-.Pp
-Examples:
-.Bd -literal -offset indent -compact
-Do not end sentences mid-line like this. Instead,
-end a sentence like this.
-A macro would end like this:
-\&.Xr mandoc 1 \&.
-An abbreviation at the end of an input line needs escaping, e.g.\e&
-like this.
-.Ed
-.Sh REQUEST SYNTAX
-A request or macro line consists of:
-.Pp
-.Bl -enum -compact
-.It
-the control character
-.Sq \&.
-or
-.Sq \(aq
-at the beginning of the line,
-.It
-optionally an arbitrary amount of whitespace,
-.It
-the name of the request or the macro, which is one word of arbitrary
-length, terminated by whitespace,
-.It
-and zero or more arguments delimited by whitespace.
-.El
-.Pp
-Thus, the following request lines are all equivalent:
-.Bd -literal -offset indent
-\&.ig end
-\&.ig end
-\&. ig end
-.Ed
-.Sh MACRO SYNTAX
-Macros are provided by the
-.Xr mdoc 5
-and
-.Xr man 5
-languages and can be defined by the
-.Ic \&de
-request.
-When called, they follow the same syntax as requests, except that
-macro arguments may optionally be quoted by enclosing them
-in double quote characters
-.Pq Sq \(dq .
-Quoted text, even if it contains whitespace or would cause
-a macro invocation when unquoted, is always considered literal text.
-Inside quoted text, pairs of double quote characters
-.Pq Sq Qq
-resolve to single double quote characters.
-.Pp
-To be recognised as the beginning of a quoted argument, the opening
-quote character must be preceded by a space character.
-A quoted argument extends to the next double quote character that is not
-part of a pair, or to the end of the input line, whichever comes earlier.
-Leaving out the terminating double quote character at the end of the line
-is discouraged.
-For clarity, if more arguments follow on the same input line,
-it is recommended to follow the terminating double quote character
-by a space character; in case the next character after the terminating
-double quote character is anything else, it is regarded as the beginning
-of the next, unquoted argument.
-.Pp
-Both in quoted and unquoted arguments, pairs of backslashes
-.Pq Sq \e\e
-resolve to single backslashes.
-In unquoted arguments, space characters can alternatively be included
-by preceding them with a backslash
-.Pq Sq \e\~ ,
-but quoting is usually better for clarity.
-.Pp
-Examples:
-.Bl -tag -width Ds -offset indent -compact
-.It Li .Fn strlen \(dqconst char *s\(dq
-Group arguments
-.Qq const char *s
-into one function argument.
-If unspecified,
-.Qq const ,
-.Qq char ,
-and
-.Qq *s
-would be considered separate arguments.
-.It Li .Op \(dqFl a\(dq
-Consider
-.Qq \&Fl a
-as literal text instead of a flag macro.
-.El
-.Sh REQUEST REFERENCE
-The
-.Xr mandoc 1
-.Nm
-parser recognises the following requests.
-For requests marked as "ignored" or "unsupported", any arguments are
-ignored, and the number of arguments is not checked.
-.Bl -tag -width Ds
-.It Ic \&ab Op Ar message
-Abort processing.
-Currently unsupported.
-.It Ic \&ad Op Cm b | c | l | n | r
-Set line adjustment mode for subsequent text.
-Currently ignored.
-.It Ic \&af Ar registername format
-Assign an output format to a number register.
-Currently ignored.
-.It Ic \&aln Ar newname oldname
-Create an alias for a number register.
-Currently unsupported.
-.It Ic \&als Ar newname oldname
-Create an alias for a request, string, macro, or diversion.
-.It Ic \&am Ar macroname Op Ar endmacro
-Append to a macro definition.
-The syntax of this request is the same as that of
-.Ic \&de .
-.It Ic \&am1 Ar macroname Op Ar endmacro
-Append to a macro definition, switching roff compatibility mode off
-during macro execution (groff extension).
-The syntax of this request is the same as that of
-.Ic \&de1 .
-Since
-.Xr mandoc 1
-does not implement
-.Nm
-compatibility mode at all, it handles this request as an alias for
-.Ic \&am .
-.It Ic \&ami Ar macrostring Op Ar endstring
-Append to a macro definition, specifying the macro name indirectly
-(groff extension).
-The syntax of this request is the same as that of
-.Ic \&dei .
-.It Ic \&ami1 Ar macrostring Op Ar endstring
-Append to a macro definition, specifying the macro name indirectly
-and switching roff compatibility mode off during macro execution
-(groff extension).
-The syntax of this request is the same as that of
-.Ic \&dei1 .
-Since
-.Xr mandoc 1
-does not implement
-.Nm
-compatibility mode at all, it handles this request as an alias for
-.Ic \&ami .
-.It Ic \&as Ar stringname Op Ar string
-Append to a user-defined string.
-The syntax of this request is the same as that of
-.Ic \&ds .
-If a user-defined string with the specified name does not yet exist,
-it is set to the empty string before appending.
-.It Ic \&as1 Ar stringname Op Ar string
-Append to a user-defined string, switching roff compatibility mode off
-during macro execution (groff extension).
-The syntax of this request is the same as that of
-.Ic \&ds1 .
-Since
-.Xr mandoc 1
-does not implement
-.Nm
-compatibility mode at all, it handles this request as an alias for
-.Ic \&as .
-.It Ic \&asciify Ar divname
-Fully unformat a diversion.
-Currently unsupported.
-.It Ic \&backtrace
-Print a backtrace of the input stack.
-This is a groff extension and currently ignored.
-.It Ic \&bd Ar font Oo Ar curfont Oc Op Ar offset
-Artificially embolden by repeated printing with small shifts.
-Currently ignored.
-.It Ic \&bleedat Ar left top width height
-Set the BleedBox page parameter for PDF generation.
-This is a Heirloom extension and currently ignored.
-.It Ic \&blm Ar macroname
-Set a blank line trap.
-Currently unsupported.
-.It Ic \&box Ar divname
-Begin a diversion without including a partially filled line.
-Currently unsupported.
-.It Ic \&boxa Ar divname
-Add to a diversion without including a partially filled line.
-Currently unsupported.
-.It Ic \&bp Oo Cm + Ns | Ns Cm - Oc Ns Ar pagenumber
-Begin a new page.
-Currently ignored.
-.It Ic \&BP Ar source height width position offset flags label
-Define a frame and place a picture in it.
-This is a Heirloom extension and currently unsupported.
-.It Ic \&br
-Break the output line.
-.It Ic \&break
-Break out of the innermost
-.Ic \&while
-loop.
-.It Ic \&breakchar Ar char ...
-Optional line break characters.
-This is a Heirloom extension and currently ignored.
-.It Ic \&brnl Ar N
-Break output line after the next
-.Ar N
-input lines.
-This is a Heirloom extension and currently ignored.
-.It Ic \&brp
-Break and spread output line.
-Currently, this is implemented as an alias for
-.Ic \&br .
-.It Ic \&brpnl Ar N
-Break and spread output line after the next
-.Ar N
-input lines.
-This is a Heirloom extension and currently ignored.
-.It Ic \&c2 Op Ar char
-Change the no-break control character.
-Currently unsupported.
-.It Ic \&cc Op Ar char
-Change the control character.
-If
-.Ar char
-is not specified, the control character is reset to
-.Sq \&. .
-Trailing characters are ignored.
-.It Ic \&ce Op Ar N
-Center the next
-.Ar N
-input lines without filling.
-.Ar N
-defaults to 1.
-An argument of 0 or less ends centering.
-Currently, high level macros abort centering.
-.It Ic \&cf Ar filename
-Output the contents of a file.
-Ignored because insecure.
-.It Ic \&cflags Ar flags char ...
-Set character flags.
-This is a groff extension and currently ignored.
-.It Ic \&ch Ar macroname Op Ar dist
-Change a trap location.
-Currently ignored.
-.It Ic \&char Ar glyph Op Ar string
-Define or redefine the ASCII character or character escape sequence
-.Ar glyph
-to be rendered as
-.Ar string ,
-which can be empty.
-Only partially supported in
-.Xr mandoc 1 ;
-may interact incorrectly with
-.Ic \&tr .
-.It Ic \&chop Ar stringname
-Remove the last character from a macro, string, or diversion.
-Currently unsupported.
-.It Ic \&class Ar classname char ...
-Define a character class.
-This is a groff extension and currently ignored.
-.It Ic \&close Ar streamname
-Close an open file.
-Ignored because insecure.
-.It Ic \&CL Ar color text
-Print text in color.
-This is a Heirloom extension and currently unsupported.
-.It Ic \&color Op Cm 1 | 0
-Activate or deactivate colors.
-This is a groff extension and currently ignored.
-.It Ic \&composite Ar from to
-Define a name component for composite glyph names.
-This is a groff extension and currently unsupported.
-.It Ic \&continue
-Immediately start the next iteration of a
-.Ic \&while
-loop.
-Currently unsupported.
-.It Ic \&cp Op Cm 1 | 0
-Switch
-.Nm
-compatibility mode on or off.
-Currently ignored.
-.It Ic \&cropat Ar left top width height
-Set the CropBox page parameter for PDF generation.
-This is a Heirloom extension and currently ignored.
-.It Ic \&cs Ar font Op Ar width Op Ar emsize
-Constant character spacing mode.
-Currently ignored.
-.It Ic \&cu Op Ar N
-Underline next
-.Ar N
-input lines including whitespace.
-Currently ignored.
-.It Ic \&da Ar divname
-Append to a diversion.
-Currently unsupported.
-.It Ic \&dch Ar macroname Op Ar dist
-Change a trap location in the current diversion.
-This is a Heirloom extension and currently unsupported.
-.It Ic \&de Ar macroname Op Ar endmacro
-Define a
-.Nm
-macro.
-Its syntax can be either
-.Bd -literal -offset indent
-.Pf . Ic \&de Ar macroname
-.Ar definition
-\&..
-.Ed
-.Pp
-or
-.Bd -literal -offset indent
-.Pf . Ic \&de Ar macroname endmacro
-.Ar definition
-.Pf . Ar endmacro
-.Ed
-.Pp
-Both forms define or redefine the macro
-.Ar macroname
-to represent the
-.Ar definition ,
-which may consist of one or more input lines, including the newline
-characters terminating each line, optionally containing calls to
-.Nm
-requests,
-.Nm
-macros or high-level macros like
-.Xr man 5
-or
-.Xr mdoc 5
-macros, whichever applies to the document in question.
-.Pp
-Specifying a custom
-.Ar endmacro
-works in the same way as for
-.Ic \&ig ;
-namely, the call to
-.Sq Pf . Ar endmacro
-first ends the
-.Ar definition ,
-and after that, it is also evaluated as a
-.Nm
-request or
-.Nm
-macro, but not as a high-level macro.
-.Pp
-The macro can be invoked later using the syntax
-.Pp
-.D1 Pf . Ar macroname Op Ar argument Op Ar argument ...
-.Pp
-Regarding argument parsing, see
-.Sx MACRO SYNTAX
-above.
-.Pp
-The line invoking the macro will be replaced
-in the input stream by the
-.Ar definition ,
-replacing all occurrences of
-.No \e\e$ Ns Ar N ,
-where
-.Ar N
-is a digit, by the
-.Ar N Ns th Ar argument .
-For example,
-.Bd -literal -offset indent
-\&.de ZN
-\efI\e^\e\e$1\e^\efP\e\e$2
-\&..
-\&.ZN XtFree .
-.Ed
-.Pp
-produces
-.Pp
-.D1 \efI\e^XtFree\e^\efP.
-.Pp
-in the input stream, and thus in the output: \fI\^XtFree\^\fP.
-Each occurrence of \e\e$* is replaced with all the arguments,
-joined together with single space characters.
-The variant \e\e$@ is similar, except that each argument is
-individually quoted.
-.Pp
-Since macros and user-defined strings share a common string table,
-defining a macro
-.Ar macroname
-clobbers the user-defined string
-.Ar macroname ,
-and the
-.Ar definition
-can also be printed using the
-.Sq \e*
-string interpolation syntax described below
-.Ic ds ,
-but this is rarely useful because every macro definition contains at least
-one explicit newline character.
-.Pp
-In order to prevent endless recursion, both groff and
-.Xr mandoc 1
-limit the stack depth for expanding macros and strings
-to a large, but finite number, and
-.Xr mandoc 1
-also limits the length of the expanded input line.
-Do not rely on the exact values of these limits.
-.It Ic \&de1 Ar macroname Op Ar endmacro
-Define a
-.Nm
-macro that will be executed with
-.Nm
-compatibility mode switched off during macro execution.
-This is a groff extension.
-Since
-.Xr mandoc 1
-does not implement
-.Nm
-compatibility mode at all, it handles this request as an alias for
-.Ic \&de .
-.It Ic \&defcolor Ar newname scheme component ...
-Define a color name.
-This is a groff extension and currently ignored.
-.It Ic \&dei Ar macrostring Op Ar endstring
-Define a
-.Nm
-macro, specifying the macro name indirectly (groff extension).
-The syntax of this request is the same as that of
-.Ic \&de .
-The effect is the same as:
-.Pp
-.D1 Pf . Cm \&de No \e* Ns Bo Ar macrostring Bc Op \e* Ns Bq Ar endstring
-.It Ic \&dei1 Ar macrostring Op Ar endstring
-Define a
-.Nm
-macro that will be executed with
-.Nm
-compatibility mode switched off during macro execution,
-specifying the macro name indirectly (groff extension).
-Since
-.Xr mandoc 1
-does not implement
-.Nm
-compatibility mode at all, it handles this request as an alias for
-.Ic \&dei .
-.It Ic \&device Ar string ...
-.It Ic \&devicem Ar stringname
-These two requests only make sense with the groff-specific intermediate
-output format and are unsupported.
-.It Ic \&di Ar divname
-Begin a diversion.
-Currently unsupported.
-.It Ic \&do Ar command Op Ar argument ...
-Execute
-.Nm
-request or macro line with compatibility mode disabled.
-Currently unsupported.
-.It Ic \&ds Ar stringname Op Oo \(dq Oc Ns Ar string
-Define a user-defined string.
-The
-.Ar stringname
-and
-.Ar string
-arguments are space-separated.
-If the
-.Ar string
-begins with a double-quote character, that character will not be part
-of the string.
-All remaining characters on the input line form the
-.Ar string ,
-including whitespace and double-quote characters, even trailing ones.
-.Pp
-The
-.Ar string
-can be interpolated into subsequent text by using
-.No \e* Ns Bq Ar stringname
-for a
-.Ar stringname
-of arbitrary length, or \e*(NN or \e*N if the length of
-.Ar stringname
-is two or one characters, respectively.
-Interpolation can be prevented by escaping the leading backslash;
-that is, an asterisk preceded by an even number of backslashes
-does not trigger string interpolation.
-.Pp
-Since user-defined strings and macros share a common string table,
-defining a string
-.Ar stringname
-clobbers the macro
-.Ar stringname ,
-and the
-.Ar stringname
-used for defining a string can also be invoked as a macro,
-in which case the following input line will be appended to the
-.Ar string ,
-forming a new input line passed to the
-.Nm
-parser.
-For example,
-.Bd -literal -offset indent
-\&.ds badidea .S
-\&.badidea
-H SYNOPSIS
-.Ed
-.Pp
-invokes the
-.Ic SH
-macro when used in a
-.Xr man 5
-document.
-Such abuse is of course strongly discouraged.
-.It Ic \&ds1 Ar stringname Op Oo \(dq Oc Ns Ar string
-Define a user-defined string that will be expanded with
-.Nm
-compatibility mode switched off during string expansion.
-This is a groff extension.
-Since
-.Xr mandoc 1
-does not implement
-.Nm
-compatibility mode at all, it handles this request as an alias for
-.Ic \&ds .
-.It Ic \&dwh Ar dist macroname
-Set a location trap in the current diversion.
-This is a Heirloom extension and currently unsupported.
-.It Ic \&dt Op Ar dist macroname
-Set a trap within a diversion.
-Currently unsupported.
-.It Ic \&ec Op Ar char
-Enable the escape mechanism and change the escape character.
-The
-.Ar char
-argument defaults to the backslash
-.Pq Sq \e .
-.It Ic \&ecr
-Restore the escape character.
-Currently unsupported.
-.It Ic \&ecs
-Save the escape character.
-Currently unsupported.
-.It Ic \&el Ar body
-The
-.Dq else
-half of an if/else conditional.
-Pops a result off the stack of conditional evaluations pushed by
-.Ic \&ie
-and uses it as its conditional.
-If no stack entries are present (e.g., due to no prior
-.Ic \&ie
-calls)
-then false is assumed.
-The syntax of this request is similar to
-.Ic \&if
-except that the conditional is missing.
-.It Ic \&em Ar macroname
-Set a trap at the end of input.
-Currently unsupported.
-.It Ic \&EN
-End an equation block.
-See
-.Ic \&EQ .
-.It Ic \&eo
-Disable the escape mechanism completely.
-.It Ic \&EP
-End a picture started by
-.Ic \&BP .
-This is a Heirloom extension and currently unsupported.
-.It Ic \&EQ
-Begin an equation block.
-See
-.Xr eqn 5
-for a description of the equation language.
-.It Ic \&errprint Ar message
-Print a string like an error message.
-This is a Heirloom extension and currently ignored.
-.It Ic \&ev Op Ar envname
-Switch to another environment.
-Currently unsupported.
-.It Ic \&evc Op Ar envname
-Copy an environment into the current environment.
-Currently unsupported.
-.It Ic \&ex
-Abort processing and exit.
-Currently unsupported.
-.It Ic \&fallback Ar curfont font ...
-Select the fallback sequence for a font.
-This is a Heirloom extension and currently ignored.
-.It Ic \&fam Op Ar familyname
-Change the font family.
-This is a groff extension and currently ignored.
-.It Ic \&fc Op Ar delimchar Op Ar padchar
-Define a delimiting and a padding character for fields.
-Currently unsupported.
-.It Ic \&fchar Ar glyphname Op Ar string
-Define a fallback glyph.
-Currently unsupported.
-.It Ic \&fcolor Ar colorname
-Set the fill color for \eD objects.
-This is a groff extension and currently ignored.
-.It Ic \&fdeferlig Ar font string ...
-Defer ligature building.
-This is a Heirloom extension and currently ignored.
-.It Ic \&feature Cm + Ns | Ns Cm - Ns Ar name
-Enable or disable an OpenType feature.
-This is a Heirloom extension and currently ignored.
-.It Ic \&fi
-Break the output line and switch to fill mode,
-which is active by default but can be ended with the
-.Ic \&nf
-request.
-In fill mode, input from subsequent input lines is added to
-the same output line until the next word no longer fits,
-at which point the output line is broken.
-This request is implied by the
-.Xr mdoc 5
-.Ic \&Sh
-macro and by the
-.Xr man 5
-.Ic \&SH ,
-.Ic \&SS ,
-and
-.Ic \&EE
-macros.
-.It Ic \&fkern Ar font minkern
-Control the use of kerning tables for a font.
-This is a Heirloom extension and currently ignored.
-.It Ic \&fl
-Flush output.
-Currently ignored.
-.It Ic \&flig Ar font string char ...
-Define ligatures.
-This is a Heirloom extension and currently ignored.
-.It Ic \&fp Ar position font Op Ar filename
-Assign font position.
-Currently ignored.
-.It Ic \&fps Ar mapname ...
-Mount a font with a special character map.
-This is a Heirloom extension and currently ignored.
-.It Ic \&fschar Ar font glyphname Op Ar string
-Define a font-specific fallback glyph.
-This is a groff extension and currently unsupported.
-.It Ic \&fspacewidth Ar font Op Ar afmunits
-Set a font-specific width for the space character.
-This is a Heirloom extension and currently ignored.
-.It Ic \&fspecial Ar curfont Op Ar font ...
-Conditionally define a special font.
-This is a groff extension and currently ignored.
-.It Ic \&ft Op Ar font
-Change the font; see
-.Sx Font Selection .
-The
-.Ar font
-argument defaults to
-.Cm P .
-.It Ic \&ftr Ar newname Op Ar oldname
-Translate font name.
-This is a groff extension and currently ignored.
-.It Ic \&fzoom Ar font Op Ar permille
-Zoom font size.
-Currently ignored.
-.It Ic \&gcolor Op Ar colorname
-Set glyph color.
-This is a groff extension and currently ignored.
-.It Ic \&hc Op Ar char
-Set the hyphenation character.
-Currently ignored.
-.It Ic \&hcode Ar char code ...
-Set hyphenation codes of characters.
-Currently ignored.
-.It Ic \&hidechar Ar font char ...
-Hide characters in a font.
-This is a Heirloom extension and currently ignored.
-.It Ic \&hla Ar language
-Set hyphenation language.
-This is a groff extension and currently ignored.
-.It Ic \&hlm Op Ar number
-Set maximum number of consecutive hyphenated lines.
-Currently ignored.
-.It Ic \&hpf Ar filename
-Load hyphenation pattern file.
-This is a groff extension and currently ignored.
-.It Ic \&hpfa Ar filename
-Load hyphenation pattern file, appending to the current patterns.
-This is a groff extension and currently ignored.
-.It Ic \&hpfcode Ar code code ...
-Define mapping values for character codes in hyphenation patterns.
-This is a groff extension and currently ignored.
-.It Ic \&hw Ar word ...
-Specify hyphenation points in words.
-Currently ignored.
-.It Ic \&hy Op Ar mode
-Set automatic hyphenation mode.
-Currently ignored.
-.It Ic \&hylang Ar language
-Set hyphenation language.
-This is a Heirloom extension and currently ignored.
-.It Ic \&hylen Ar nchar
-Minimum word length for hyphenation.
-This is a Heirloom extension and currently ignored.
-.It Ic \&hym Op Ar length
-Set hyphenation margin.
-This is a groff extension and currently ignored.
-.It Ic \&hypp Ar penalty ...
-Define hyphenation penalties.
-This is a Heirloom extension and currently ignored.
-.It Ic \&hys Op Ar length
-Set hyphenation space.
-This is a groff extension and currently ignored.
-.It Ic \&ie Ar condition body
-The
-.Dq if
-half of an if/else conditional.
-The result of the conditional is pushed into a stack used by subsequent
-invocations of
-.Ic \&el ,
-which may be separated by any intervening input (or not exist at all).
-Its syntax is equivalent to
-.Ic \&if .
-.It Ic \&if Ar condition body
-Begin a conditional.
-This request can also be written as follows:
-.Bd -unfilled -offset indent
-.Pf . Ic \&if Ar condition No \e{ Ns Ar body
-.Ar body ... Ns \e}
-.Ed
-.Bd -unfilled -offset indent
-.Pf . Ic \&if Ar condition No \e{\e
-.Ar body ...
-.Pf . No \e}
-.Ed
-.Pp
-The
-.Ar condition
-is a boolean expression.
-Currently,
-.Xr mandoc 1
-supports the following subset of roff conditionals:
-.Bl -bullet
-.It
-If
-.Sq \&!
-is prefixed to
-.Ar condition ,
-it is logically inverted.
-.It
-If the first character of
-.Ar condition
-is
-.Sq n
-.Pq nroff mode
-or
-.Sq o
-.Pq odd page ,
-it evaluates to true, and the
-.Ar body
-starts with the next character.
-.It
-If the first character of
-.Ar condition
-is
-.Sq e
-.Pq even page ,
-.Sq t
-.Pq troff mode ,
-or
-.Sq v
-.Pq vroff mode ,
-it evaluates to false, and the
-.Ar body
-starts with the next character.
-.It
-If the first character of
-.Ar condition
-is
-.Sq c
-.Pq character available ,
-it evaluates to true if the following character is an ASCII character
-or a valid character escape sequence, or to false otherwise.
-The
-.Ar body
-starts with the character following that next character.
-.It
-If the first character of
-.Ar condition
-is
-.Sq d ,
-it evaluates to true if the rest of
-.Ar condition
-is the name of an existing user defined macro or string;
-otherwise, it evaluates to false.
-.It
-If the first character of
-.Ar condition
-is
-.Sq r ,
-it evaluates to true if the rest of
-.Ar condition
-is the name of an existing number register;
-otherwise, it evaluates to false.
-.It
-If the
-.Ar condition
-starts with a parenthesis or with an optionally signed
-integer number, it is evaluated according to the rules of
-.Sx Numerical expressions
-explained below.
-It evaluates to true if the result is positive,
-or to false if the result is zero or negative.
-.It
-Otherwise, the first character of
-.Ar condition
-is regarded as a delimiter and it evaluates to true if the string
-extending from its first to its second occurrence is equal to the
-string extending from its second to its third occurrence.
-.It
-If
-.Ar condition
-cannot be parsed, it evaluates to false.
-.El
-.Pp
-If a conditional is false, its children are not processed, but are
-syntactically interpreted to preserve the integrity of the input
-document.
-Thus,
-.Pp
-.D1 \&.if t .ig
-.Pp
-will discard the
-.Sq \&.ig ,
-which may lead to interesting results, but
-.Pp
-.D1 \&.if t .if t \e{\e
-.Pp
-will continue to syntactically interpret to the block close of the final
-conditional.
-Sub-conditionals, in this case, obviously inherit the truth value of
-the parent.
-.Pp
-If the
-.Ar body
-section is begun by an escaped brace
-.Sq \e{ ,
-scope continues until the end of the input line containing the
-matching closing-brace escape sequence
-.Sq \e} .
-If the
-.Ar body
-is not enclosed in braces, scope continues until the end of the line.
-If the
-.Ar condition
-is followed by a
-.Ar body
-on the same line, whether after a brace or not, then requests and macros
-.Em must
-begin with a control character.
-It is generally more intuitive, in this case, to write
-.Bd -unfilled -offset indent
-.Pf . Ic \&if Ar condition No \e{\e
-.Pf . Ar request
-.Pf . No \e}
-.Ed
-.Pp
-than having the request or macro follow as
-.Pp
-.D1 Pf . Ic \&if Ar condition Pf \e{. Ar request
-.Pp
-The scope of a conditional is always parsed, but only executed if the
-conditional evaluates to true.
-.Pp
-Note that the
-.Sq \e}
-is converted into a zero-width escape sequence if not passed as a
-standalone macro
-.Sq \&.\e} .
-For example,
-.Pp
-.D1 \&.Fl a \e} b
-.Pp
-will result in
-.Sq \e}
-being considered an argument of the
-.Sq \&Fl
-macro.
-.It Ic \&ig Op Ar endmacro
-Ignore input.
-Its syntax can be either
-.Bd -literal -offset indent
-.Pf . Cm \&ig
-.Ar ignored text
-\&..
-.Ed
-.Pp
-or
-.Bd -literal -offset indent
-.Pf . Cm \&ig Ar endmacro
-.Ar ignored text
-.Pf . Ar endmacro
-.Ed
-.Pp
-In the first case, input is ignored until a
-.Sq \&..
-request is encountered on its own line.
-In the second case, input is ignored until the specified
-.Sq Pf . Ar endmacro
-is encountered.
-Do not use the escape character
-.Sq \e
-anywhere in the definition of
-.Ar endmacro ;
-it would cause very strange behaviour.
-.Pp
-When the
-.Ar endmacro
-is a roff request or a roff macro, like in
-.Pp
-.D1 \&.ig if
-.Pp
-the subsequent invocation of
-.Ic \&if
-will first terminate the
-.Ar ignored text ,
-then be invoked as usual.
-Otherwise, it only terminates the
-.Ar ignored text ,
-and arguments following it or the
-.Sq \&..
-request are discarded.
-.It Ic \&in Op Oo Cm + Ns | Ns Cm - Oc Ns Ar width
-Change indentation.
-See
-.Xr man 5 .
-Ignored in
-.Xr mdoc 5 .
-.It Ic \&index Ar register stringname substring
-Find a substring in a string.
-This is a Heirloom extension and currently unsupported.
-.It Ic \&it Ar expression macro
-Set an input line trap.
-The named
-.Ar macro
-will be invoked after processing the number of input text lines
-specified by the numerical
-.Ar expression .
-While evaluating the
-.Ar expression ,
-the unit suffixes described below
-.Sx Scaling Widths
-are ignored.
-.It Ic \&itc Ar expression macro
-Set an input line trap, not counting lines ending with \ec.
-Currently unsupported.
-.It Ic \&IX Ar class keystring
-To support the generation of a table of contents,
-.Xr pod2man 1
-emits this user-defined macro, usually without defining it.
-To avoid reporting large numbers of spurious errors,
-.Xr mandoc 1
-ignores it.
-.It Ic \&kern Op Cm 1 | 0
-Switch kerning on or off.
-Currently ignored.
-.It Ic \&kernafter Ar font char ... afmunits ...
-Increase kerning after some characters.
-This is a Heirloom extension and currently ignored.
-.It Ic \&kernbefore Ar font char ... afmunits ...
-Increase kerning before some characters.
-This is a Heirloom extension and currently ignored.
-.It Ic \&kernpair Ar font char ... font char ... afmunits
-Add a kerning pair to the kerning table.
-This is a Heirloom extension and currently ignored.
-.It Ic \&lc Op Ar glyph
-Define a leader repetition character.
-Currently unsupported.
-.It Ic \&lc_ctype Ar localename
-Set the
-.Dv LC_CTYPE
-locale.
-This is a Heirloom extension and currently unsupported.
-.It Ic \&lds Ar macroname string
-Define a local string.
-This is a Heirloom extension and currently unsupported.
-.It Ic \&length Ar register string
-Count the number of input characters in a string.
-Currently unsupported.
-.It Ic \&letadj Ar lspmin lshmin letss lspmax lshmax
-Dynamic letter spacing and reshaping.
-This is a Heirloom extension and currently ignored.
-.It Ic \&lf Ar lineno Op Ar filename
-Change the line number for error messages.
-Ignored because insecure.
-.It Ic \&lg Op Cm 1 | 0
-Switch the ligature mechanism on or off.
-Currently ignored.
-.It Ic \&lhang Ar font char ... afmunits
-Hang characters at left margin.
-This is a Heirloom extension and currently ignored.
-.It Ic \&linetabs Op Cm 1 | 0
-Enable or disable line-tabs mode.
-This is a groff extension and currently unsupported.
-.It Ic \&ll Op Oo Cm + Ns | Ns Cm - Oc Ns Ar width
-Change the output line length.
-If the
-.Ar width
-argument is omitted, the line length is reset to its previous value.
-The default setting for terminal output is 78n.
-If a sign is given, the line length is added to or subtracted from;
-otherwise, it is set to the provided value.
-Using this request in new manuals is discouraged for several reasons,
-among others because it overrides the
-.Xr mandoc 1
-.Fl O Cm width
-command line option.
-.It Ic \&lnr Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar value Op Ar increment
-Set local number register.
-This is a Heirloom extension and currently unsupported.
-.It Ic \&lnrf Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar value Op Ar increment
-Set local floating-point register.
-This is a Heirloom extension and currently unsupported.
-.It Ic \&lpfx Ar string
-Set a line prefix.
-This is a Heirloom extension and currently unsupported.
-.It Ic \&ls Op Ar factor
-Set line spacing.
-It takes one integer argument specifying the vertical distance of
-subsequent output text lines measured in v units.
-Currently ignored.
-.It Ic \&lsm Ar macroname
-Set a leading spaces trap.
-This is a groff extension and currently unsupported.
-.It Ic \&lt Op Oo Cm + Ns | Ns Cm - Oc Ns Ar width
-Set title line length.
-Currently ignored.
-.It Ic \&mc Ar glyph Op Ar dist
-Print margin character in the right margin.
-The
-.Ar dist
-is currently ignored; instead, 1n is used.
-.It Ic \&mediasize Ar media
-Set the device media size.
-This is a Heirloom extension and currently ignored.
-.It Ic \&minss Ar width
-Set minimum word space.
-This is a Heirloom extension and currently ignored.
-.It Ic \&mk Op Ar register
-Mark vertical position.
-Currently ignored.
-.It Ic \&mso Ar filename
-Load a macro file using the search path.
-Ignored because insecure.
-.It Ic \&na
-Disable adjusting without changing the adjustment mode.
-Currently ignored.
-.It Ic \&ne Op Ar height
-Declare the need for the specified minimum vertical space
-before the next trap or the bottom of the page.
-Currently ignored.
-.It Ic \&nf
-Break the output line and switch to no-fill mode.
-Subsequent input lines are kept together on the same output line
-even when exceeding the right margin,
-and line breaks in subsequent input cause output line breaks.
-This request is implied by the
-.Xr mdoc 5
-.Ic \&Bd Fl unfilled
-and
-.Ic \&Bd Fl literal
-macros and by the
-.Xr man 5
-.Ic \&EX
-macro.
-The
-.Ic \&fi
-request switches back to the default fill mode.
-.It Ic \&nh
-Turn off automatic hyphenation mode.
-Currently ignored.
-.It Ic \&nhychar Ar char ...
-Define hyphenation-inhibiting characters.
-This is a Heirloom extension and currently ignored.
-.It Ic \&nm Op Ar start Op Ar inc Op Ar space Op Ar indent
-Print line numbers.
-Currently unsupported.
-.It Ic \&nn Op Ar number
-Temporarily turn off line numbering.
-Currently unsupported.
-.It Ic \&nop Ar body
-Execute the rest of the input line as a request, macro, or text line,
-skipping the
-.Ic \&nop
-request and any space characters immediately following it.
-This is mostly used to indent text lines inside macro definitions.
-.It Ic \&nr Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar expression Op Ar stepsize
-Define or change a register.
-A register is an arbitrary string value that defines some sort of state,
-which influences parsing and/or formatting.
-For the syntax of
-.Ar expression ,
-see
-.Sx Numerical expressions
-below.
-If it is prefixed by a sign, the register will be
-incremented or decremented instead of assigned to.
-.Pp
-The
-.Ar stepsize
-is used by the
-.Ic \en+
-auto-increment feature.
-It remains unchanged when omitted while changing an existing register,
-and it defaults to 0 when defining a new register.
-.Pp
-The following
-.Ar register
-is handled specially:
-.Bl -tag -width Ds
-.It Cm nS
-If set to a positive integer value, certain
-.Xr mdoc 5
-macros will behave in the same way as in the
-.Em SYNOPSIS
-section.
-If set to 0, these macros will behave in the same way as outside the
-.Em SYNOPSIS
-section, even when called within the
-.Em SYNOPSIS
-section itself.
-Note that starting a new
-.Xr mdoc 5
-section with the
-.Ic \&Sh
-macro will reset this register.
-.El
-.It Xo
-.Ic \&nrf Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar expression
-.Op Ar increment
-.Xc
-Define or change a floating-point register.
-This is a Heirloom extension and currently unsupported.
-.It Ic \&nroff
-Force nroff mode.
-This is a groff extension and currently ignored.
-.It Ic \&ns
-Turn on no-space mode.
-Currently ignored.
-.It Ic \&nx Op Ar filename
-Abort processing of the current input file and process another one.
-Ignored because insecure.
-.It Ic \&open Ar stream file
-Open a file for writing.
-Ignored because insecure.
-.It Ic \&opena Ar stream file
-Open a file for appending.
-Ignored because insecure.
-.It Ic \&os
-Output saved vertical space.
-Currently ignored.
-.It Ic \&output Ar string
-Output directly to intermediate output.
-Not supported.
-.It Ic \&padj Op Cm 1 | 0
-Globally control paragraph-at-once adjustment.
-This is a Heirloom extension and currently ignored.
-.It Ic \&papersize Ar media
-Set the paper size.
-This is a Heirloom extension and currently ignored.
-.It Ic \&pc Op Ar char
-Change the page number character.
-Currently ignored.
-.It Ic \&pev
-Print environments.
-This is a groff extension and currently ignored.
-.It Ic \&pi Ar command
-Pipe output to a shell command.
-Ignored because insecure.
-.It Ic \&PI
-Low-level request used by
-.Ic \&BP .
-This is a Heirloom extension and currently unsupported.
-.It Ic \&pl Op Oo Cm + Ns | Ns Cm - Oc Ns Ar height
-Change page length.
-Currently ignored.
-.It Ic \&pm
-Print names and sizes of macros, strings, and diversions
-to standard error output.
-Currently ignored.
-.It Ic \&pn Oo Cm + Ns | Ns Cm - Oc Ns Ar number
-Change the page number of the next page.
-Currently ignored.
-.It Ic \&pnr
-Print all number registers on standard error output.
-Currently ignored.
-.It Ic \&po Op Oo Cm + Ns | Ns Cm - Oc Ns Ar offset
-Set a horizontal page offset.
-If no argument is specified, the page offset is reverted to its
-previous value.
-If a sign is specified, the new page offset is calculated relative
-to the current one; otherwise, it is absolute.
-The argument follows the syntax of
-.Sx Scaling Widths
-and the default scaling unit is
-.Cm m .
-.It Ic \&ps Op Oo Cm + Ns | Ns Cm - Oc Ns size
-Change point size.
-Currently ignored.
-.It Ic \&psbb Ar filename
-Retrieve the bounding box of a PostScript file.
-Currently unsupported.
-.It Ic \&pshape Ar indent length ...
-Set a special shape for the current paragraph.
-This is a Heirloom extension and currently unsupported.
-.It Ic \&pso Ar command
-Include output of a shell command.
-Ignored because insecure.
-.It Ic \&ptr
-Print the names and positions of all traps on standard error output.
-This is a groff extension and currently ignored.
-.It Ic \&pvs Op Oo Cm + Ns | Ns Cm - Oc Ns Ar height
-Change post-vertical spacing.
-This is a groff extension and currently ignored.
-.It Ic \&rchar Ar glyph ...
-Remove glyph definitions.
-Currently unsupported.
-.It Ic \&rd Op Ar prompt Op Ar argument ...
-Read from standard input.
-Currently ignored.
-.It Ic \&recursionlimit Ar maxrec maxtail
-Set the maximum stack depth for recursive macros.
-This is a Heirloom extension and currently ignored.
-.It Ic \&return Op Ar twice
-Exit the presently executed macro and return to the caller.
-The argument is currently ignored.
-.It Ic \&rfschar Ar font glyph ...
-Remove font-specific fallback glyph definitions.
-Currently unsupported.
-.It Ic \&rhang Ar font char ... afmunits
-Hang characters at right margin.
-This is a Heirloom extension and currently ignored.
-.It Ic \&rj Op Ar N
-Justify the next
-.Ar N
-input lines to the right margin without filling.
-.Ar N
-defaults to 1.
-An argument of 0 or less ends right adjustment.
-.It Ic \&rm Ar macroname
-Remove a request, macro or string.
-.It Ic \&rn Ar oldname newname
-Rename a request, macro, diversion, or string.
-In
-.Xr mandoc 1 ,
-user-defined macros,
-.Xr mdoc 5
-and
-.Xr man 5
-macros, and user-defined strings can be renamed, but renaming of
-predefined strings and of
-.Nm
-requests is not supported, and diversions are not implemented at all.
-.It Ic \&rnn Ar oldname newname
-Rename a number register.
-Currently unsupported.
-.It Ic \&rr Ar register
-Remove a register.
-.It Ic \&rs
-End no-space mode.
-Currently ignored.
-.It Ic \&rt Op Ar dist
-Return to marked vertical position.
-Currently ignored.
-.It Ic \&schar Ar glyph Op Ar string
-Define global fallback glyph.
-This is a groff extension and currently unsupported.
-.It Ic \&sentchar Ar char ...
-Define sentence-ending characters.
-This is a Heirloom extension and currently ignored.
-.It Ic \&shc Op Ar glyph
-Change the soft hyphen character.
-Currently ignored.
-.It Ic \&shift Op Ar number
-Shift macro arguments
-.Ar number
-times, by default once: \e\e$i becomes what \e\e$i+number was.
-Also decrement \en(.$ by
-.Ar number .
-.It Ic \&sizes Ar size ...
-Define permissible point sizes.
-This is a groff extension and currently ignored.
-.It Ic \&so Ar filename
-Include a source file.
-The file is read and its contents processed as input in place of the
-.Ic \&so
-request line.
-To avoid inadvertent inclusion of unrelated files,
-.Xr mandoc 1
-only accepts relative paths not containing the strings
-.Qq ../
-and
-.Qq /.. .
-.Pp
-This request requires
-.Xr man 1
-to change to the right directory before calling
-.Xr mandoc 1 ,
-per convention to the root of the manual tree.
-Typical usage looks like:
-.Pp
-.Dl \&.so man3/Xcursor.3
-.Pp
-As the whole concept is rather fragile, the use of
-.Ic \&so
-is discouraged.
-Use
-.Xr ln 1
-instead.
-.It Ic \&sp Op Ar height
-Break the output line and emit vertical space.
-The argument follows the syntax of
-.Sx Scaling Widths
-and defaults to one blank line
-.Pq Li 1v .
-.It Ic \&spacewidth Op Cm 1 | 0
-Set the space width from the font metrics file.
-This is a Heirloom extension and currently ignored.
-.It Ic \&special Op Ar font ...
-Define a special font.
-This is a groff extension and currently ignored.
-.It Ic \&spreadwarn Op Ar width
-Warn about wide spacing between words.
-Currently ignored.
-.It Ic \&ss Ar wordspace Op Ar sentencespace
-Set space character size.
-Currently ignored.
-.It Ic \&sty Ar position style
-Associate style with a font position.
-This is a groff extension and currently ignored.
-.It Ic \&substring Ar stringname startpos Op Ar endpos
-Replace a user-defined string with a substring.
-Currently unsupported.
-.It Ic \&sv Op Ar height
-Save vertical space.
-Currently ignored.
-.It Ic \&sy Ar command
-Execute shell command.
-Ignored because insecure.
-.It Ic \&T&
-Re-start a table layout, retaining the options of the prior table
-invocation.
-See
-.Ic \&TS .
-.It Ic \&ta Op Ar width ... Op Cm T Ar width ...
-Set tab stops.
-Each
-.Ar width
-argument follows the syntax of
-.Sx Scaling Widths .
-If prefixed by a plus sign, it is relative to the previous tab stop.
-The arguments after the
-.Cm T
-marker are used repeatedly as often as needed; for each reuse,
-they are taken relative to the last previously established tab stop.
-When
-.Ic \&ta
-is called without arguments, all tab stops are cleared.
-.It Ic \&tc Op Ar glyph
-Change tab repetition character.
-Currently unsupported.
-.It Ic \&TE
-End a table context.
-See
-.Ic \&TS .
-.It Ic \&ti Oo Cm + Ns | Ns Cm - Oc Ns Ar width
-Break the output line and indent the next output line by
-.Ar width .
-If a sign is specified, the temporary indentation is calculated
-relative to the current indentation; otherwise, it is absolute.
-The argument follows the syntax of
-.Sx Scaling Widths
-and the default scaling unit is
-.Cm m .
-.It Ic \&tkf Ar font minps width1 maxps width2
-Enable track kerning for a font.
-Currently ignored.
-.It Ic \&tl No \& Ap Ar left Ap Ar center Ap Ar right Ap
-Print a title line.
-Currently unsupported.
-.It Ic \&tm Ar string
-Print to standard error output.
-Currently ignored.
-.It Ic \&tm1 Ar string
-Print to standard error output, allowing leading blanks.
-This is a groff extension and currently ignored.
-.It Ic \&tmc Ar string
-Print to standard error output without a trailing newline.
-This is a groff extension and currently ignored.
-.It Ic \&tr Ar glyph glyph ...
-Output character translation.
-The first glyph in each pair is replaced by the second one.
-Character escapes can be used; for example,
-.Pp
-.Dl tr \e(xx\e(yy
-.Pp
-replaces all invocations of \e(xx with \e(yy.
-.It Ic \&track Ar font minps width1 maxps width2
-Static letter space tracking.
-This is a Heirloom extension and currently ignored.
-.It Ic \&transchar Ar char ...
-Define transparent characters for sentence-ending.
-This is a Heirloom extension and currently ignored.
-.It Ic \&trf Ar filename
-Output the contents of a file, disallowing invalid characters.
-This is a groff extension and ignored because insecure.
-.It Ic \&trimat Ar left top width height
-Set the TrimBox page parameter for PDF generation.
-This is a Heirloom extension and currently ignored.
-.It Ic \&trin Ar glyph glyph ...
-Output character translation, ignored by
-.Ic \&asciify .
-Currently unsupported.
-.It Ic \&trnt Ar glyph glyph ...
-Output character translation, ignored by \e!.
-Currently unsupported.
-.It Ic \&troff
-Force troff mode.
-This is a groff extension and currently ignored.
-.It Ic \&TS
-Begin a table, which formats input in aligned rows and columns.
-See
-.Xr tbl 5
-for a description of the tbl language.
-.It Ic \&uf Ar font
-Globally set the underline font.
-Currently ignored.
-.It Ic \&ul Op Ar N
-Underline next
-.Ar N
-input lines.
-Currently ignored.
-.It Ic \&unformat Ar divname
-Unformat spaces and tabs in a diversion.
-Currently unsupported.
-.It Ic \&unwatch Ar macroname
-Disable notification for string or macro.
-This is a Heirloom extension and currently ignored.
-.It Ic \&unwatchn Ar register
-Disable notification for register.
-This is a Heirloom extension and currently ignored.
-.It Ic \&vpt Op Cm 1 | 0
-Enable or disable vertical position traps.
-This is a groff extension and currently ignored.
-.It Ic \&vs Op Oo Cm + Ns | Ns Cm - Oc Ns Ar height
-Change vertical spacing.
-Currently ignored.
-.It Ic \&warn Ar flags
-Set warning level.
-Currently ignored.
-.It Ic \&warnscale Ar si
-Set the scaling indicator used in warnings.
-This is a groff extension and currently ignored.
-.It Ic \&watch Ar macroname
-Notify on change of string or macro.
-This is a Heirloom extension and currently ignored.
-.It Ic \&watchlength Ar maxlength
-On change, report the contents of macros and strings
-up to the specified length.
-This is a Heirloom extension and currently ignored.
-.It Ic \&watchn Ar register
-Notify on change of register.
-This is a Heirloom extension and currently ignored.
-.It Ic \&wh Ar dist Op Ar macroname
-Set a page location trap.
-Currently unsupported.
-.It Ic \&while Ar condition body
-Repeated execution while a
-.Ar condition
-is true, with syntax similar to
-.Ic \&if .
-Currently implemented with two restrictions: cannot nest,
-and each loop must start and end in the same scope.
-.It Ic \&write Oo \(dq Oc Ns Ar string
-Write to an open file.
-Ignored because insecure.
-.It Ic \&writec Oo \(dq Oc Ns Ar string
-Write to an open file without appending a newline.
-Ignored because insecure.
-.It Ic \&writem Ar macroname
-Write macro or string to an open file.
-Ignored because insecure.
-.It Ic \&xflag Ar level
-Set the extension level.
-This is a Heirloom extension and currently ignored.
-.El
-.Ss Numerical expressions
-The
-.Ic \&nr ,
-.Ic \&if ,
-and
-.Ic \&ie
-requests accept integer numerical expressions as arguments.
-These are always evaluated using the C
-.Vt int
-type; integer overflow works the same way as in the C language.
-Numbers consist of an arbitrary number of digits
-.Sq 0
-to
-.Sq 9
-prefixed by an optional sign
-.Sq +
-or
-.Sq - .
-Each number may be followed by one optional scaling unit described below
-.Sx Scaling Widths .
-The following equations hold:
-.Bd -literal -offset indent
-1i = 6v = 6P = 10m = 10n = 72p = 1000M = 240u = 240
-254c = 100i = 24000u = 24000
-1f = 65536u = 65536
-.Ed
-.Pp
-The following binary operators are implemented.
-Unless otherwise stated, they behave as in the C language:
-.Pp
-.Bl -tag -width 2n -compact
-.It Ic +
-addition
-.It Ic -
-subtraction
-.It Ic *
-multiplication
-.It Ic /
-division
-.It Ic %
-remainder of division
-.It Ic <
-less than
-.It Ic >
-greater than
-.It Ic ==
-equal to
-.It Ic =
-equal to, same effect as
-.Ic ==
-(this differs from C)
-.It Ic <=
-less than or equal to
-.It Ic >=
-greater than or equal to
-.It Ic <>
-not equal to (corresponds to C
-.Ic != ;
-this one is of limited portability, it is supported by Heirloom roff,
-but not by groff)
-.It Ic &
-logical and (corresponds to C
-.Ic && )
-.It Ic \&:
-logical or (corresponds to C
-.Ic || )
-.It Ic <?
-minimum (not available in C)
-.It Ic >?
-maximum (not available in C)
-.El
-.Pp
-There is no concept of precedence; evaluation proceeds from left to right,
-except when subexpressions are enclosed in parentheses.
-Inside parentheses, whitespace is ignored.
-.Sh ESCAPE SEQUENCE REFERENCE
-The
-.Xr mandoc 1
-.Nm
-parser recognises the following escape sequences.
-In
-.Xr mdoc 5
-and
-.Xr man 5
-documents, using escape sequences is discouraged except for those
-described in the
-.Sx LANGUAGE SYNTAX
-section above.
-.Pp
-A backslash followed by any character not listed here
-simply prints that character itself.
-.Bl -tag -width Ds
-.It Ic \e<newline>
-A backslash at the end of an input line can be used to continue the
-logical input line on the next physical input line, joining the text
-on both lines together as if it were on a single input line.
-.It Ic \e<space>
-The escape sequence backslash-space
-.Pq Sq \e\ \&
-is an unpaddable space-sized non-breaking space character; see
-.Sx Whitespace
-and
-.Xr mandoc_char 5 .
-.It Ic \e!
-Embed text up to and including the end of the input line into the
-current diversion or into intermediate output without interpreting
-requests, macros, and escapes.
-Currently unsupported.
-.It Ic \e\(dq
-The rest of the input line is treated as
-.Sx Comments .
-.It Ic \e#
-Line continuation with comment.
-Discard the rest of the physical input line and continue the logical
-input line on the next physical input line, joining the text on
-both lines together as if it were on a single input line.
-This is a groff extension.
-.It Ic \e$ Ns Ar arg
-Macro argument expansion, see
-.Ic \&de .
-.It Ic \e%
-Hyphenation allowed at this point of the word; ignored by
-.Xr mandoc 1 .
-.It Ic \e&
-Non-printing zero-width character,
-often used for various kinds of escaping; see
-.Sx Whitespace ,
-.Xr mandoc_char 5 ,
-and the
-.Dq MACRO SYNTAX
-and
-.Dq Delimiters
-sections in
-.Xr mdoc 5 .
-.It Ic \e\(aq
-Acute accent special character; use
-.Ic \e(aa
-instead.
-.It Ic \e( Ns Ar cc
-.Sx Special Characters
-with two-letter names, see
-.Xr mandoc_char 5 .
-.It Ic \e)
-Zero-width space transparent to end-of-sentence detection;
-ignored by
-.Xr mandoc 1 .
-.It Ic \e*[ Ns Ar name Ns Ic \&]
-Interpolate the string with the
-.Ar name .
-For short names, there are variants
-.Ic \e* Ns Ar c
-and
-.Ic \e*( Ns Ar cc .
-.Pp
-One string is predefined on the
-.Nm
-language level:
-.Ic \e*(.T
-expands to the name of the output device,
-for example ascii, utf8, ps, pdf, html, or markdown.
-.Pp
-Macro sets traditionally predefine additional strings which are not
-portable and differ across implementations.
-Those supported by
-.Xr mandoc 1
-are listed in
-.Xr mandoc_char 5 .
-.Pp
-Strings can be defined, changed, and deleted with the
-.Ic \&ds ,
-.Ic \&as ,
-and
-.Ic \&rm
-requests.
-.It Ic \e,
-Left italic correction (groff extension); ignored by
-.Xr mandoc 1 .
-.It Ic \e-
-Special character
-.Dq mathematical minus sign ;
-see
-.Xr mandoc_char 5
-for details.
-.It Ic \e/
-Right italic correction (groff extension); ignored by
-.Xr mandoc 1 .
-.It Ic \e:
-Breaking the line is allowed at this point of the word
-without inserting a hyphen.
-.It Ic \e?
-Embed the text up to the next
-.Ic \e?
-into the current diversion without interpreting requests, macros,
-and escapes.
-This is a groff extension and currently unsupported.
-.It Ic \e[ Ns Ar name Ns Ic \&]
-.Sx Special Characters
-with names of arbitrary length, see
-.Xr mandoc_char 5 .
-.It Ic \e^
-One-twelfth em half-narrow space character, effectively zero-width in
-.Xr mandoc 1 .
-.It Ic \e_
-Underline special character; use
-.Ic \e(ul
-instead.
-.It Ic \e`
-Grave accent special character; use
-.Ic \e(ga
-instead.
-.It Ic \e{
-Begin conditional input; see
-.Ic \&if .
-.It Ic \e\(ba
-One-sixth em narrow space character, effectively zero-width in
-.Xr mandoc 1 .
-.It Ic \e}
-End conditional input; see
-.Ic \&if .
-.It Ic \e~
-Paddable non-breaking space character.
-.It Ic \e0
-Digit width space character.
-.It Ic \eA\(aq Ns Ar string Ns Ic \(aq
-Anchor definition; ignored by
-.Xr mandoc 1 .
-.It Ic \ea
-Leader character; ignored by
-.Xr mandoc 1 .
-.It Ic \eB\(aq Ns Ar string Ns Ic \(aq
-Interpolate
-.Sq 1
-if
-.Ar string
-conforms to the syntax of
-.Sx Numerical expressions
-explained above or
-.Sq 0
-otherwise.
-.It Ic \eb\(aq Ns Ar string Ns Ic \(aq
-Bracket building function; ignored by
-.Xr mandoc 1 .
-.It Ic \eC\(aq Ns Ar name Ns Ic \(aq
-.Sx Special Characters
-with names of arbitrary length.
-.It Ic \ec
-When encountered at the end of an input text line,
-the next input text line is considered to continue that line,
-even if there are request or macro lines in between.
-No whitespace is inserted.
-.It Ic \eD\(aq Ns Ar string Ns Ic \(aq
-Draw graphics function; ignored by
-.Xr mandoc 1 .
-.It Ic \ed
-Move down by half a line; ignored by
-.Xr mandoc 1 .
-.It Ic \eE
-Escape character intended to not be interpreted in copy mode.
-In
-.Xr mandoc 1 ,
-it currently does the same as
-.Ic \e
-itself.
-.It Ic \ee
-Backslash special character.
-.It Ic \eF[ Ns Ar name Ns Ic \&]
-Switch font family (groff extension); ignored by
-.Xr mandoc 1 .
-For short names, there are variants
-.Ic \eF Ns Ar c
-and
-.Ic \eF( Ns Ar cc .
-.It Ic \ef[ Ns Ar name Ns Ic \&]
-Switch to the font
-.Ar name ,
-see
-.Sx Font Selection .
-For short names, there are variants
-.Ic \ef Ns Ar c
-and
-.Ic \ef( Ns Ar cc .
-An empty name
-.Ic \ef[]
-defaults to
-.Ic \efP .
-.It Ic \eg[ Ns Ar name Ns Ic \&]
-Interpolate the format of a number register; ignored by
-.Xr mandoc 1 .
-For short names, there are variants
-.Ic \eg Ns Ar c
-and
-.Ic \eg( Ns Ar cc .
-.It Ic \eH\(aq Ns Oo +|- Oc Ns Ar number Ns Ic \(aq
-Set the height of the current font; ignored by
-.Xr mandoc 1 .
-.It Ic \eh\(aq Ns Oo Cm \&| Oc Ns Ar width Ns Ic \(aq
-Horizontal motion.
-If the vertical bar is given, the motion is relative to the current
-indentation.
-Otherwise, it is relative to the current position.
-The default scaling unit is
-.Cm m .
-.It Ic \ek[ Ns Ar name Ns Ic \&]
-Mark horizontal input place in register; ignored by
-.Xr mandoc 1 .
-For short names, there are variants
-.Ic \ek Ns Ar c
-and
-.Ic \ek( Ns Ar cc .
-.It Ic \eL\(aq Ns Ar number Ns Oo Ar c Oc Ns Ic \(aq
-Vertical line drawing function; ignored by
-.Xr mandoc 1 .
-.It Ic \el\(aq Ns Ar width Ns Oo Ar c Oc Ns Ic \(aq
-Draw a horizontal line of
-.Ar width
-using the glyph
-.Ar c .
-.It Ic \eM[ Ns Ar name Ns Ic \&]
-Set fill (background) color (groff extension); ignored by
-.Xr mandoc 1 .
-For short names, there are variants
-.Ic \eM Ns Ar c
-and
-.Ic \eM( Ns Ar cc .
-.It Ic \em[ Ns Ar name Ns Ic \&]
-Set glyph drawing color (groff extension); ignored by
-.Xr mandoc 1 .
-For short names, there are variants
-.Ic \em Ns Ar c
-and
-.Ic \em( Ns Ar cc .
-.It Ic \eN\(aq Ns Ar number Ns Ic \(aq
-Character
-.Ar number
-on the current font.
-.It Ic \en Ns Oo +|- Oc Ns Ic \&[ Ns Ar name Ns Ic \&]
-Interpolate the number register
-.Ar name .
-For short names, there are variants
-.Ic \en Ns Ar c
-and
-.Ic \en( Ns Ar cc .
-If the optional sign is specified,
-the register is first incremented or decremented by the
-.Ar stepsize
-that was specified in the relevant
-.Ic \&nr
-request, and the changed value is interpolated.
-.It Ic \eO Ns Ar digit , Ic \eO[5 Ns arguments Ns Ic \&]
-Suppress output.
-This is a groff extension and currently unsupported.
-With an argument of
-.Ic 1 , 2 , 3 ,
-or
-.Ic 4 ,
-it is ignored.
-.It Ic \eo\(aq Ns Ar string Ns Ic \(aq
-Overstrike, writing all the characters contained in the
-.Ar string
-to the same output position.
-In terminal and HTML output modes,
-only the last one of the characters is visible.
-.It Ic \ep
-Break the output line at the end of the current word.
-.It Ic \eR\(aq Ns Ar name Oo +|- Oc Ns Ar number Ns Ic \(aq
-Set number register; ignored by
-.Xr mandoc 1 .
-.It Ic \er
-Move up by one line; ignored by
-.Xr mandoc 1 .
-.It Ic \eS\(aq Ns Ar number Ns Ic \(aq
-Slant output; ignored by
-.Xr mandoc 1 .
-.It Ic \es\(aq Ns Oo +|- Oc Ns Ar number Ns Ic \(aq
-Change point size; ignored by
-.Xr mandoc 1 .
-Alternative forms
-.Ic \es Ns Oo +|- Oc Ns Ar n ,
-.Ic \es Ns Oo +|- Oc Ns Ic \(aq Ns Ar number Ns Ic \(aq ,
-.Ic \es[ Ns Oo +|- Oc Ns Ar number Ns Ic \&] ,
-and
-.Ic \es Ns Oo +|- Oc Ns Ic \&[ Ns Ar number Ns Ic \&]
-are also parsed and ignored.
-.It Ic \et
-Horizontal tab; ignored by
-.Xr mandoc 1 .
-.It Ic \eu
-Move up by half a line; ignored by
-.Xr mandoc 1 .
-.It Ic \eV[ Ns Ar name Ns Ic \&]
-Interpolate an environment variable; ignored by
-.Xr mandoc 1 .
-For short names, there are variants
-.Ic \eV Ns Ar c
-and
-.Ic \eV( Ns Ar cc .
-.It Ic \ev\(aq Ns Ar number Ns Ic \(aq
-Vertical motion; ignored by
-.Xr mandoc 1 .
-.It Ic \ew\(aq Ns Ar string Ns Ic \(aq
-Interpolate the width of the
-.Ar string .
-The
-.Xr mandoc 1
-implementation assumes that after expansion of user-defined strings, the
-.Ar string
-only contains normal characters, no escape sequences, and that each
-character has a width of 24 basic units.
-.It Ic \eX\(aq Ns Ar string Ns Ic \(aq
-Output
-.Ar string
-as device control function; ignored in nroff mode and by
-.Xr mandoc 1 .
-.It Ic \ex\(aq Ns Ar number Ns Ic \(aq
-Extra line space function; ignored by
-.Xr mandoc 1 .
-.It Ic \eY[ Ns Ar name Ns Ic \&]
-Output a string as a device control function; ignored in nroff mode and by
-.Xr mandoc 1 .
-For short names, there are variants
-.Ic \eY Ns Ar c
-and
-.Ic \eY( Ns Ar cc .
-.It Ic \eZ\(aq Ns Ar string Ns Ic \(aq
-Print
-.Ar string
-with zero width and height; ignored by
-.Xr mandoc 1 .
-.It Ic \ez
-Output the next character without advancing the cursor position.
-.El
-.Sh COMPATIBILITY
-The
-.Xr mandoc 1
-implementation of the
-.Nm
-language is incomplete.
-Major unimplemented features include:
-.Pp
-.Bl -dash -compact
-.It
-For security reasons,
-.Xr mandoc 1
-never reads or writes external files except via
-.Ic \&so
-requests with safe relative paths.
-.It
-There is no automatic hyphenation, no adjustment to the right margin,
-and very limited support for centering; the output is always set flush-left.
-.It
-Support for setting tabulator and leader characters is missing,
-and support for manually changing indentation is limited.
-.It
-The
-.Sq u
-scaling unit is the default terminal unit.
-In traditional troff systems, this unit changes depending on the
-output media.
-.It
-Width measurements are implemented in a crude way
-and often yield wrong results.
-Support for explicit movement requests and escapes is limited.
-.It
-There is no concept of output pages, no support for floats,
-graphics drawing, and picture inclusion;
-terminal output is always continuous.
-.It
-Requests regarding color, font families, font sizes,
-and glyph manipulation are ignored.
-Font support is very limited.
-Kerning is not implemented, and no ligatures are produced.
-.It
-The
-.Qq \(aq
-macro control character does not suppress output line breaks.
-.It
-Diversions and environments are not implemented,
-and support for traps is very incomplete.
-.It
-Use of macros is not supported inside
-.Xr tbl 5
-code.
-.El
-.Pp
-The special semantics of the
-.Cm nS
-number register is an idiosyncrasy of
-.Ox
-manuals and not supported by other
-.Xr mdoc 5
-implementations.
-.Sh SEE ALSO
-.Xr mandoc 1 ,
-.Xr eqn 5 ,
-.Xr man 5 ,
-.Xr mandoc_char 5 ,
-.Xr mdoc 5 ,
-.Xr tbl 5
-.Rs
-.%A Joseph F. Ossanna
-.%A Brian W. Kernighan
-.%I AT&T Bell Laboratories
-.%T Troff User's Manual
-.%R Computing Science Technical Report
-.%N 54
-.%C Murray Hill, New Jersey
-.%D 1976 and 1992
-.%U http://www.kohala.com/start/troff/cstr54.ps
-.Re
-.Rs
-.%A Joseph F. Ossanna
-.%A Brian W. Kernighan
-.%A Gunnar Ritter
-.%T Heirloom Documentation Tools Nroff/Troff User's Manual
-.%D September 17, 2007
-.%U http://heirloom.sourceforge.net/doctools/troff.pdf
-.Re
-.Sh HISTORY
-The RUNOFF typesetting system, whose input forms the basis for
-.Nm ,
-was written in MAD and FAP for the CTSS operating system by Jerome E.
-Saltzer in 1964.
-Doug McIlroy rewrote it in BCPL in 1969, renaming it
-.Nm .
-Dennis M. Ritchie rewrote McIlroy's
-.Nm
-in PDP-11 assembly for
-.At v1 ,
-Joseph F. Ossanna improved roff and renamed it nroff
-for
-.At v2 ,
-then ported nroff to C as troff, which Brian W. Kernighan released with
-.At v7 .
-In 1989, James Clark re-implemented troff in C++, naming it groff.
-.Sh AUTHORS
-.An -nosplit
-This
-.Nm
-reference was written by
-.An Kristaps Dzonsons Aq Mt kristaps@bsd.lv
-and
-.An Ingo Schwarze Aq Mt schwarze@openbsd.org .