summaryrefslogtreecommitdiffstats
path: root/upstream/mageia-cauldron/man7/groff.7
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/mageia-cauldron/man7/groff.7')
-rw-r--r--upstream/mageia-cauldron/man7/groff.74736
1 files changed, 4736 insertions, 0 deletions
diff --git a/upstream/mageia-cauldron/man7/groff.7 b/upstream/mageia-cauldron/man7/groff.7
new file mode 100644
index 00000000..a253cd7e
--- /dev/null
+++ b/upstream/mageia-cauldron/man7/groff.7
@@ -0,0 +1,4736 @@
+'\" t
+.TH GROFF 7 "17 December 2018" "groff 1.22.4"
+.SH NAME
+groff \- a short reference for the GNU roff language
+.
+.\" Before installation: <top-groff-source>/man/groff.man
+.\" After installation: </usr or /usr/local>/share/man/man7/groff.7
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2000-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of groff, the GNU roff type-setting system.
+.\"
+.\" Permission is granted to copy, distribute and/or modify this
+.\" document under the terms of the GNU Free Documentation License,
+.\" Version 1.3 or any later version published by the Free Software
+.\" Foundation; with no Invariant Sections, with no Front-Cover Texts,
+.\" and with no Back-Cover Texts.
+.\"
+.\" A copy of the Free Documentation License is included as a file
+.\" called FDL in the main directory of the groff source package.
+.
+.
+.\" ====================================================================
+.\" Setup
+.\" ====================================================================
+.
+.
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr groff_7_C \n[.C]
+.cp 0
+.
+.
+.\" ====================================================================
+.\" start of macro definitions
+.
+.de TPx
+. TP 10n
+..
+.\" ====================================================================
+.\" .Text anything ...
+.\"
+.\" All arguments are printed as text.
+.\"
+.de Text
+. nop \)\\$*
+..
+.
+.\" ========= command=line option =========
+.
+.de option
+. Text \f[CB]\\$*
+. ft P
+..
+.
+.\" ========= characters =========
+.
+.de squoted_char
+. Text \[oq]\f[CB]\\$1\f[]\[cq]\\$2
+..
+.de dquoted_char
+. Text \[lq]\f[CB]\\$1\f[]\[rq]\\$2
+..
+.\" ========= requests =========
+.
+.\" synopsis of a request
+.de REQ
+. ie \n[.$]=1 \{\
+. Text \f[CB]\\$1\f[]
+. \}
+. el \{\
+. Text \f[CB]\\$1\~\f[]\f[I]\\$2\f[]
+. \}
+..
+.
+.\" reference of a request
+.de request
+. BR \\$*
+..
+.
+.\" ========= numerical elements =========
+.
+.\" number with a trailing unit
+.de scalednumber
+. Text \\$1\^\f[CB]\\$2\f[]\\$3\f[R]
+. ft P
+..
+.
+.\" representation of units within the text
+.de scaleindicator
+. Text \f[CB]\\$1\f[]\\$2\f[R]
+. ft P
+..
+.
+.\" representation of mathematical operators within the text
+.de operator
+. squoted_char \\$@
+..
+.
+.
+.\" ========= escape sequences =========
+.
+.\" ====================================================================
+.\" .ESC name [arg]
+.\"
+.\" Synopsis of an escape sequence, optionally with argument
+.\" Args : 1 or 2; 'name' obligatory, 'arg' optional
+.\" name : suitable name for an escape sequence (c, (xy, [long])
+.\" arg : arbitrary word
+.\" Result : prints \namearg, where 'name' is in CB, 'arg' in I
+.\"
+.de ESC
+. Text "\f[CB]\e\\$1\,\f[I]\\$2\/\fR"
+..
+.\" ====================================================================
+.\" .ESC[] name arg
+.\"
+.\" Synopsis for escape sequence with a bracketed long argument
+.\" Args : 2 obligatory
+.\" name : suitable name for an escape sequence (c, (xy, [long])
+.\" arg : arbitrary text
+.\" Result : prints \name[arg], where 'name' is in CB, 'arg' in I
+.\"
+.de ESC[]
+. Text "\f[CB]\e\\$1\[lB]\f[]\,\f[I]\\$2\/\f[]\f[CB]\[rB]\f[]"
+..
+.\" ====================================================================
+.\" .ESCq name arg
+.\"
+.\" Synopsis for escape sequence with a bracketed long argument
+.\" Args : 2 obligatory
+.\" name : suitable name for an escape sequence (c, (xy, [long])
+.\" arg : arbitrary text
+.\" Result : prints \name'arg', where 'name' is in CB, 'arg' in I
+.\"
+.de ESCq
+. Text "\f[CB]\e\\$1\[cq]\f[]\,\f[I]\\$2\/\f[]\f[CB]\[cq]\f[]"
+..
+.\" ====================================================================
+.\" .ESC? arg
+.\"
+.\" Synopsis for escape sequence with a bracketed long argument
+.\" Args : 1 obligatory
+.\" arg : arbitrary text
+.\" Result : prints '\?arg?', where the '?' are in CB, 'arg' in I
+.\"
+.de ESC?
+. Text "\f[CB]\e?\,\f[I]\\$1\/\f[CB]?\f[R]"
+..
+.\" ====================================================================
+.\" .esc name [punct]
+.\"
+.\" Reference of an escape sequence (no args), possibly punctuation
+.\" Args : 1 obligatory
+.\" name : suitable name for an escape sequence (c, (xy, [long])
+.\" punct : arbitrary
+.\" Result : prints \name, where 'name' is in B, 'punct' in R
+.\"
+.de esc
+. BR "\e\\$1" \\$2
+..
+.\" ====================================================================
+.\" .escarg name arg [punct]
+.\"
+.\" Reference of an escape sequence (no args)
+.\" Args : 1 obligatory, 1 optional
+.\" name : suitable name for an escape sequence (c, (xy, [long])
+.\" arg : arbitrary word
+.\" Result : prints \namearg, where
+.\" 'name' is in B, 'arg' in I
+.\"
+.de escarg
+. Text \f[B]\e\\$1\f[]\,\f[I]\\$2\/\f[]\\$3
+..
+.\" ====================================================================
+.\" .esc[] name arg [punct]
+.\"
+.\" Reference for escape sequence with a bracketed long argument
+.\" Args : 2 obligatory
+.\" name : suitable name for an escape sequence (c, (xy, [long])
+.\" arg : arbitrary text
+.\" Result : prints \name[arg], where 'name' is in CB, 'arg' in CI
+.\"
+.de esc[]
+. Text \f[CB]\e\\$1\[lB]\f[]\,\f[CI]\\$2\/\f[]\f[CB]\[rB]\f[]\\$3
+..
+.
+.\" ====================================================================
+.\" .escq name arg
+.\"
+.\" Reference for escape sequence with a bracketed long argument
+.\" Args : 2 obligatory
+.\" name : suitable name for an escape sequence (c, (xy, [long])
+.\" arg : arbitrary text
+.\" Result : prints \name'arg', where 'name' is in CB, 'arg' in CI
+.\"
+.de escq
+. Text \f[CB]\e\\$1\[cq]\f[]\,\f[CI]\\$2\/\f[]\f[CB]\[cq]\f[]\\$3
+..
+.
+.\" ========= strings =========
+.
+.\" synopsis for string, with \*[]
+.de STRING
+. Text \[rs]*[\f[CB]\\$1\f[]] \\$2
+..
+.\" synopsis for a long string
+.de string
+. if \n[.$]=0 \
+. return
+. Text \f[CB]\[rs]*\[lB]\\$1\[rB]\f[]\\$2
+..
+.
+.\" ========= registers =========
+.
+.\" synopsis for registers, with \n[]
+.de REG
+. Text \[rs]n[\f[CB]\\$1\f[]]
+..
+.\" reference of a register, without decoration
+.de register
+. Text register
+. BR \\$*
+..
+.
+.\" end of macro definitions
+.
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+.P
+The name
+.I groff
+stands for
+.I GNU roff
+and is the free implementation of the roff type-setting system.
+.
+See
+.BR roff (7)
+for a survey and the background of the groff system.
+.
+.
+.P
+This document provides only short descriptions of roff language
+elements.
+.
+.IR "Groff: The GNU Implementation of troff" ,
+by Trent A.\& Fisher and Werner Lemberg,
+is the primary
+.I groff
+manual,
+and is written in Texinfo.
+.
+You can browse it interactively with \[lq]info groff\[rq].
+.
+.
+.P
+Historically, the
+.I roff language
+was called
+.IR troff .
+.I groff
+is compatible with the classical system and provides proper
+extensions.
+.
+So in GNU, the terms
+.IR roff ,
+.IR troff ,
+and
+.I groff language
+could be used as synonyms.
+.
+However
+.I troff
+slightly tends to refer more to the classical aspects, whereas
+.I groff
+emphasizes the GNU extensions, and
+.I roff
+is the general term for the language.
+.
+.
+.P
+The general syntax for writing groff documents is relatively easy, but
+writing extensions to the roff language can be a bit harder.
+.
+.
+.P
+The roff language is line-oriented.
+.
+There are only two kinds of lines, control lines and text lines.
+.
+The control lines start with a control character, by default a period
+.dquoted_char .
+or a single quote
+.dquoted_char \[aq] ;
+all other lines are text lines.
+.
+.
+.P
+.B Control lines
+represent commands, optionally with arguments.
+.
+They have the following syntax.
+.
+The leading control character can be followed by a command name;
+arguments, if any, are separated by spaces (but not tab characters)
+from the command name and among themselves, for example,
+.RS
+.P
+.Text .command_name arg1 arg2
+.RE
+.
+.
+.P
+For indentation, any number of space or tab characters can be inserted
+between the leading control character and the command name, but the
+control character must be on the first position of the line.
+.
+.
+.P
+.B Text lines
+represent the parts that is printed.
+They can be modified by escape sequences, which are recognized by a
+leading backslash
+.squoted_char \[rs] .
+These are in-line or even in-word formatting elements or functions.
+.
+Some of these take arguments separated by single quotes
+.dquoted_char \[aq] ,
+others are regulated by a length encoding introduced by an open
+parenthesis
+.squoted_char (
+or enclosed in brackets
+.squoted_char [
+and
+.squoted_char ] .
+.
+.
+.P
+The roff language provides flexible instruments for writing language
+extension, such as macros.
+.
+When interpreting macro definitions, the roff system enters a special
+operating mode, called the
+.BR "copy mode" .
+.
+.
+.P
+The copy mode behaviour can be quite tricky, but there are some rules
+that ensure a safe usage.
+.
+.IP 1.
+Printable backslashes must be denoted as
+.esc e .
+To be more precise,
+.esc e
+represents the current escape character.
+.
+To get a backslash glyph, use
+.esc (rs
+or
+.esc [rs] .
+.IP 2.
+Double all backslashes.
+.IP 3.
+Begin all text lines with the special non-spacing character
+.esc & .
+.
+.
+.P
+This does not produce the most efficient code, but it should work as a
+first measure.
+.
+For better strategies, see the
+.I groff
+Texinfo manual and
+.BR groff_tmac (5).
+.
+.
+.P
+Reading roff source files is easier, just reduce all double backslashes
+to a single one in all macro definitions.
+.
+.
+.\" ====================================================================
+.SH "GROFF ELEMENTS"
+.\" ====================================================================
+.
+The roff language elements add formatting information to a text file.
+.
+The fundamental elements are predefined commands and variables that
+make roff a full-blown programming language.
+.
+.
+.P
+There are two kinds of roff commands, possibly with arguments.
+.B Requests
+are written on a line of their own starting with a dot
+.squoted_char .
+or a
+.dquoted_char \[aq] ,
+whereas
+.B Escape sequences
+are in-line functions and in-word formatting elements starting with a
+backslash
+.squoted_char \[rs] .
+.
+.
+.P
+The user can define her own formatting commands using the
+.request de
+request.
+.
+These commands are called
+.BR macros ,
+but they are used exactly like requests.
+.
+Macro packages are pre-defined sets of macros written in the groff
+language.
+.
+A user's possibilities to create escape sequences herself is very
+limited, only special characters can be mapped.
+.
+.
+.P
+The groff language provides several kinds of variables with
+different interfaces.
+.
+There are pre-defined variables, but the user can define her own
+variables as well.
+.
+.
+.P
+.B String
+variables store character sequences.
+.
+They are set with the
+.request ds
+request and retrieved by the
+.esc *
+escape sequences.
+.
+Strings can have variables.
+.
+.
+.P
+.B Register
+variables can store numerical values, numbers with a scale unit, and
+occasionally string-like objects.
+.
+They are set with the
+.request nr
+request and retrieved by the
+.esc n
+escape sequences.
+.
+.
+.P
+.B Environments
+allow the user to temporarily store global formatting parameters like
+line length, font size, etc.\& for later reuse.
+.
+This is done by the
+.request ev
+request.
+.
+.
+.P
+.B Fonts
+are identified either by a name or by an internal number.
+.
+The current font is chosen by the
+.request ft
+request or by the
+.esc f
+escape sequences.
+.
+Each device has special fonts, but the following fonts are available
+for all devices.
+.B R
+is the standard font Roman.
+.B B
+is its
+.B bold
+counterpart.
+.
+The
+.I italic
+font is called
+.B I
+and is available everywhere, but on text devices it is displayed as an
+underlined Roman font.
+.
+For the graphical output devices, there exist constant-width pendants
+of these fonts,
+.BR CR ,
+.BR CI ,
+and
+.BR CB .
+On text devices, all glyphs have a constant width anyway.
+.
+.
+.P
+.B Glyphs
+are visual representation forms of
+.BR characters .
+In groff, the distinction between those two elements is not always
+obvious (and a full discussion is beyond the scope of this man page).
+.
+A first approximation is that glyphs have a specific size and
+colour and are taken from a specific font; they can't be modified any
+more \[en] characters are the input, and glyphs are the output.
+.
+As soon as an output line has been generated, it no longer contains
+characters but glyphs.
+.
+In this man page, we use either \[oq]glyph\[cq] or
+\[oq]character\[cq], whatever is more appropriate.
+.
+.
+.P
+Moreover, there are some advanced roff elements.
+.
+A
+.B diversion
+stores (formatted) information into a macro for later usage.
+See
+.BR groff_tmac (5)
+for more details.
+.
+A
+.B trap
+is a positional condition like a certain number of lines from page top
+or in a diversion or in the input.
+.
+Some action can be prescribed to be run automatically when the
+condition is met.
+.
+.
+.P
+More detailed information and examples can be found in the
+.I groff
+Texinfo manual.
+.
+.
+.\" ====================================================================
+.SH "CONTROL CHARACTERS"
+.\" ====================================================================
+.
+There is a small set of characters that have a special controlling
+task in certain conditions.
+.
+.TP
+\&\f[CB].\f[]
+A dot is only special at the beginning of a line or after the
+condition in the requests
+.request if\c
+,
+.request ie\c
+,
+.request el\c
+,
+and
+.request while\c
+\&.
+There it is the control character that introduces a request (or macro).
+.
+By using the
+.request cc
+request, the control character can be set to a different character,
+making the dot
+.squoted_char .
+a non-special character.
+.
+.IP ""
+In all other positions, it just means a dot character.
+.
+In text paragraphs, it is advantageous to start each sentence at a
+line of its own.
+.
+.TP
+\&\f[CB]\[aq]\f[]
+The single quote has two controlling tasks.
+.
+At the beginning of a line and in the conditional requests it is the
+non-breaking control character.
+.
+That means that it introduces a request like the dot, but with the
+additional property that this request doesn't cause a linebreak.
+.
+By using the
+.request c2
+request, the non-break control character can be set to a different
+character.
+.
+.IP ""
+As a second task, it is the most commonly used argument separator in
+some functional escape sequences (but any pair of characters not part
+of the argument do work).
+.
+In all other positions, it denotes the single quote or apostrophe
+character.
+.
+Groff provides a printable representation with the
+.esc (cq
+escape sequence.
+.
+.TP
+\&\f[CB]\[dq]\f[]
+The double quote is used to enclose arguments in macros (but not in
+requests and strings).
+.
+In the
+.request ds
+and
+.request as
+requests, a leading double quote in the argument is stripped off,
+making everything else afterwards the string to be defined (enabling
+leading whitespace).
+.
+The escaped double quote
+.esc \[dq]
+introduces a comment.
+.
+Otherwise, it is not special.
+.
+Groff provides a printable representation with the
+.esc (dq
+escape sequence.
+.
+.TP
+\&\f[CB]\e\f[]
+The backslash usually introduces an escape sequence (this can be
+changed with the
+.request ec
+request).
+.
+A printed version of the escape character is the
+.esc e
+escape; a backslash glyph can be obtained by
+.esc (rs .
+.
+.TP
+\&\f[CB](\f[]
+The open parenthesis is only special in escape sequences when
+introducing an escape name or argument consisting of exactly two
+characters.
+.
+In groff, this behaviour can be replaced by the \f[CB][]\f[] construct.
+.
+.TP
+\&\f[CB][\f[]
+The opening bracket is only special in groff escape sequences; there
+it is used to introduce a long escape name or long escape argument.
+.
+Otherwise, it is non-special, e.g.\& in macro calls.
+.
+.TP
+\&\f[CB]]\f[]
+The closing bracket is only special in groff escape sequences; there
+it terminates a long escape name or long escape argument.
+.
+Otherwise, it is non-special.
+.
+.TP
+\f[CI]space\f[]
+Space characters are only functional characters.
+.
+They separate the arguments in requests, macros, and strings, and the
+words in text lines.
+.
+They are subject to groff's horizontal spacing calculations.
+.
+To get a defined space width, escape sequences like
+.squoted_char "\[rs]\ "
+(this is the escape character followed by a space),
+.esc | ,
+.esc ^ ,
+or
+.esc h
+should be used.
+.
+.IP \f[CI]newline\f[]
+In text paragraphs, newlines mostly behave like space characters.
+.
+Continuation lines can be specified by an escaped newline, i.e., by
+specifying a backslash
+.squoted_char \[rs]
+as the last character of a line.
+.
+.IP \f[CI]tab\f[]
+If a tab character occurs during text the interpreter makes a
+horizontal jump to the next pre-defined tab position.
+.
+There is a sophisticated interface for handling tab positions.
+.
+.
+.\" ====================================================================
+.SH "NUMERICAL EXPRESSIONS"
+.\" ====================================================================
+.
+A
+.B numerical value
+is a signed or unsigned integer or float with or without an appended
+scaling indicator.
+.
+A
+.B scaling indicator
+is a one-character abbreviation for a unit of measurement.
+.
+A number followed by a scaling indicator signifies a size value.
+.
+By default, numerical values do not have a scaling indicator, i.e., they
+are normal numbers.
+.
+.
+.P
+The
+.I roff
+language defines the following scaling indicators.
+.
+.
+.P
+.PD 0
+.RS
+.
+.TPx
+.B c
+centimeter
+.
+.TPx
+.B i
+inch
+.
+.TPx
+.B P
+pica\ \[eq]\ 1/6\ inch
+.
+.TPx
+.B p
+point\ \[eq]\ 1/72\ inch
+.
+.TPx
+.B m
+em\ \[eq]\ \f[R]the font size in points (approx.\& width of letter
+\[oq]\f[CR]m\f[R]\[cq])
+.
+.TPx
+.B M
+100\^th \f[R]of an \f[CR]em
+.
+.TPx
+.B n
+en\ \[eq]\ em/2
+.
+.TPx
+.B u
+Basic unit for actual output device
+.
+.TPx
+.B v
+Vertical line space in basic units
+.
+.TPx
+.B s
+scaled point\ \[eq]\ 1/\f[CI]sizescale\f[R] of a point (defined in
+font \f[I]DESC\f[] file)
+.
+.TPx
+.B f
+Scale by 65536.
+.RE
+.PD
+.
+.
+.P
+.B Numerical expressions
+are combinations of the numerical values defined above with the
+following arithmetical operators already defined in classical troff.
+.
+.
+.P
+.PD 0
+.RS
+.
+.TPx
+.B +
+Addition
+.
+.TPx
+.B \-
+Subtraction
+.
+.TPx
+.B *
+Multiplication
+.
+.TPx
+.B /
+Division
+.
+.TPx
+.B %
+Modulo
+.
+.TPx
+.B =
+Equals
+.
+.TPx
+.B ==
+Equals
+.
+.TPx
+.B <
+Less than
+.
+.TPx
+.B >
+Greater than
+.
+.TPx
+.B <=
+Less or equal
+.
+.TPx
+.B >=
+Greater or equal
+.
+.TPx
+.B &
+Logical and
+.
+.TPx
+.B :
+Logical or
+.
+.TPx
+.B !
+Logical not
+.
+.TPx
+.B (
+Grouping of expressions
+.
+.TPx
+.B )
+Close current grouping
+.
+.RE
+.PD
+.
+.
+.P
+Moreover,
+.I groff
+added the following operators for numerical expressions:
+.
+.
+.P
+.PD 0
+.RS
+.
+.TPx
+\f[I]e1\/\f[CB]>?\,\f[I]e2\f[R]
+The maximum of
+.I e1
+and
+.IR e2 .
+.
+.TPx
+\f[I]e1\/\f[CB]<?\,\f[I]e2\f[R]
+The minimum of
+.I e1
+and
+.IR e2 .
+.
+.TPx
+\f[CB](\,\f[I]c\/\f[CB];\,\f[I]e\/\f[CB])\f[R]
+Evaluate
+.I e
+using
+.I c
+as the default scaling indicator.
+.
+.RE
+.PD
+.
+.
+.P
+For details see the
+.I groff
+Texinfo manual.
+.
+.
+.\" ====================================================================
+.SH CONDITIONS
+.\" ====================================================================
+.
+.B Conditions
+occur in tests raised by the
+.request if\c
+,
+.request ie\c
+,
+and the
+.request while
+requests.
+.
+The following table characterizes the different types of conditions.
+.
+.P
+.
+.PD 0
+.RS
+.
+.TPx
+.I N
+A numerical expression
+.I N
+yields true if its value is greater than\~0.
+.
+.TPx
+.BI ! N
+True if the value of
+.I N
+is\~0 (see below).
+.
+.TPx
+.BI \[aq] s1 \[aq] s2 \[aq]
+True if string\~\c
+.I s1
+is identical to string\~\c
+.IR s2 .
+.
+.TPx
+.BI !\[aq] s1 \[aq] s2 \[aq]
+True if string\~\c
+.I s1
+is not identical to string\~\c
+.I s2
+(see below).
+.
+.TPx
+.BI c ch
+True if there is a glyph\~\c
+.I ch
+available.
+.
+.TPx
+.BI d name
+True if there is a string, macro, diversion, or request called
+.IR name .
+.
+.TPx
+.B e
+Current page number is even.
+.
+.TPx
+.B o
+Current page number is odd.
+.
+.TPx
+.BI m name
+True if there is a color called
+.IR name .
+.
+.TPx
+.B n
+Formatter is
+.BR nroff .
+.
+.TPx
+.BI r reg
+True if there is a register named
+.IR reg .
+.
+.TPx
+.B t
+Formatter is
+.BR troff .
+.
+.TPx
+.BI F font
+True if there exists a font named
+.IR font .
+.
+.TPx
+.BI S style
+True if a style named
+.I style
+has been registered.
+.
+.RE
+.PD
+.
+.
+.P
+Note that the
+.B !
+operator may only appear at the beginning of an expression,
+and negates the entire expression.
+This maintains bug-compatibility with AT&T
+.IR troff .
+.
+.
+.\" ====================================================================
+.SH REQUESTS
+.\" ====================================================================
+.
+This section provides a short reference for the predefined requests.
+.
+In groff, request, macro, and string names can be arbitrarily long.
+.
+No bracketing or marking of long names is needed.
+.
+.
+.P
+Most requests take one or more arguments.
+.
+The arguments are separated by space characters (no tabs!); there is
+no inherent limit for their length or number.
+.
+.
+.P
+Some requests have optional arguments with a different behaviour.
+.
+Not all of these details are outlined here.
+.
+Refer to the
+.I groff
+Texinfo manual and
+.BR groff_diff (7)
+for all details.
+.
+.
+.P
+In the following request specifications, most argument names were
+chosen to be descriptive.
+.
+Only the following denotations need clarification.
+.
+.
+.P
+.PD 0
+.RS
+.
+.TPx
+.I c
+denotes a single character.
+.
+.TPx
+.I font
+a font either specified as a font name or a font number.
+.
+.TPx
+.I anything
+all characters up to the end of the line or within
+.esc {
+and
+.esc } .
+.
+.TPx
+.I n
+is a numerical expression that evaluates to an integer value.
+.
+.TPx
+.I N
+is an arbitrary numerical expression, signed or unsigned.
+.
+.TPx
+.I \[+-]N
+has three meanings depending on its sign, described below.
+.
+.RE
+.PD
+.
+.
+.P
+If an expression defined as
+.I \[+-]N
+starts with a
+.squoted_char +
+sign the resulting value of the expression is added to an already
+existing value inherent to the related request, e.g.\& adding to a
+number register.
+.
+If the expression starts with a
+.squoted_char -
+the value of the expression is subtracted from the request value.
+.
+.
+.P
+Without a sign,
+.I N
+replaces the existing value directly.
+.
+To assign a negative number either prepend\~0 or enclose the negative
+number in parentheses.
+.
+.
+.\" ====================================================================
+.SS "Request Short Reference"
+.\" ====================================================================
+.
+.PD 0
+.
+.TPx
+.REQ .
+Empty line, ignored.
+.
+Useful for structuring documents.
+.
+.TPx
+.REQ .\e\[dq] "anything"
+Complete line is a comment.
+.
+.TPx
+.REQ .ab "string"
+Print
+.I string
+on standard error, exit program.
+.
+.TPx
+.REQ .ad
+Begin line adjustment for output lines in current adjust mode.
+.
+.TPx
+.REQ .ad "c"
+Start line adjustment in mode
+.I c
+(\f[CI]c\/\f[]\f[CR]\|\^\[eq]\|l,r,c,b,n\f[]).
+.
+.TPx
+.REQ .af "register c"
+Assign format
+.I c
+to
+.I register
+(\f[CI]c\/\f[]\f[CR]\|\^\[eq]\|l,i,I,a,A\f[]).
+.
+.TPx
+.REQ .aln "alias register"
+Create alias name for
+.IR register .
+.
+.TPx
+.REQ .als "alias object"
+Create alias name for request, string, macro, or diversion
+.IR object .
+.
+.TPx
+.REQ .am "macro"
+Append to
+.I macro
+until
+.B ..\&
+is encountered.
+.
+.TPx
+.REQ .am "macro end"
+Append to
+.I macro
+until
+.BI . end
+is called.
+.
+.TPx
+.REQ .am1 "macro"
+Same as
+.request .am
+but with compatibility mode switched off during macro expansion.
+.
+.TPx
+.REQ .am1 "macro end"
+Same as
+.request .am
+but with compatibility mode switched off during macro expansion.
+.
+.TPx
+.REQ .ami "macro"
+Append to a macro whose name is contained in the string register
+.I macro
+until
+.B ..\&
+is encountered.
+.
+.TPx
+.REQ .ami "macro end"
+Append to a macro indirectly.
+.I macro
+and
+.I end
+are string registers whose contents are interpolated for the macro name
+and the end macro, respectively.
+.
+.TPx
+.REQ .ami1 "macro"
+Same as
+.request .ami
+but with compatibility mode switched off during macro expansion.
+.
+.TPx
+.REQ .ami1 "macro end"
+Same as
+.request .ami
+but with compatibility mode switched off during macro expansion.
+.
+.TPx
+.REQ .as "stringvar anything"
+Append
+.I anything
+to
+.IR stringvar .
+.
+.TPx
+.REQ .as1 "stringvar anything"
+Same as
+.request .as
+but with compatibility mode switched off during string expansion.
+.
+.TPx
+.REQ .asciify "diversion"
+Unformat ASCII characters, spaces, and some escape sequences in
+.IR diversion .
+.
+.TPx
+.REQ .backtrace
+Print a backtrace of the input on stderr.
+.
+.TPx
+.REQ .bd "font N"
+Embolden
+.I font
+by
+.IR N \-1
+units.
+.
+.TPx
+.REQ .bd "S font N"
+Embolden Special Font
+.I S
+when current font is
+.IR font .
+.
+.TPx
+.REQ .blm
+Unset the blank line macro.
+.
+.TPx
+.REQ .blm "macro"
+Set the blank line macro to
+.IR macro .
+.
+.TPx
+.REQ .box
+End current diversion.
+.
+.TPx
+.REQ .box "macro"
+Divert to
+.IR macro ,
+omitting a partially filled line.
+.
+.TPx
+.REQ .boxa
+End current diversion.
+.
+.TPx
+.REQ .boxa "macro"
+Divert and append to
+.IR macro ,
+omitting a partially filled line.
+.
+.TPx
+.REQ .bp
+Eject current page and begin new page.
+.
+.TPx
+.REQ .bp "\[+-]N"
+Eject current page; next page number
+.IR \[+-]N .
+.
+.TPx
+.REQ .br
+Line break.
+.
+.TPx
+.REQ .brp
+Break output line; adjust if applicable.
+.
+.TPx
+.REQ .break
+Break out of a while loop.
+.
+.TPx
+.REQ .c2
+Reset no-break control character to
+.dquoted_char \[aq] .
+.
+.TPx
+.REQ .c2 "c"
+Set no-break control character to
+.IR c .
+.
+.TPx
+.REQ .cc
+Reset control character to
+.squoted_char . .
+.
+.TPx
+.REQ .cc "c"
+Set control character to
+.IR c .
+.
+.TPx
+.REQ .ce
+Center the next input line.
+.
+.TPx
+.REQ .ce "N"
+Center following
+.I N
+input lines.
+.
+.TPx
+.REQ .cf "filename"
+Copy contents of file
+.I filename
+unprocessed to stdout or to the diversion.
+.
+.TPx
+.REQ .cflags "mode c1 c2 \fR\&.\|.\|.\&\fP"
+Treat characters
+.IR c1 ,
+.IR c2 ,
+\&.\|.\|.\&
+according to
+.I mode
+number.
+.
+.TPx
+.REQ .ch "trap N"
+Change
+.I trap
+location
+to
+.IR N .
+.
+.TPx
+.REQ .char "c anything"
+Define entity
+.I c
+as string
+.IR anything .
+.
+.TPx
+.REQ .chop "object"
+Chop the last character off macro, string, or diversion
+.IR object .
+.
+.TPx
+.REQ .class "name c1 c2 \fR\&.\|.\|.\&\fP"
+Assign a set of characters, character ranges, or classes
+.IR c1 ,
+.IR c2 ,
+\&.\|.\|.\&
+to
+.IR name .
+.
+.TPx
+.REQ .close "stream"
+Close the
+.IR stream .
+.
+.TPx
+.REQ .color
+Enable colors.
+.
+.TPx
+.REQ .color "N"
+If
+.I N
+is zero disable colors, otherwise enable them.
+.
+.TPx
+.REQ .composite "from to"
+Map glyph name
+.I from
+to glyph name
+.I to
+while constructing a composite glyph name.
+.
+.TPx
+.REQ .continue
+Finish the current iteration of a while loop.
+.
+.TPx
+.REQ .cp
+Enable compatibility mode.
+.
+.TPx
+.REQ .cp "N"
+If
+.I N
+is zero disable compatibility mode, otherwise enable it.
+.
+.TPx
+.REQ .cs "font N M"
+Set constant character width mode for
+.I font
+to
+.IR N /36
+ems with em
+.IR M .
+.
+.TPx
+.REQ .cu "N"
+Continuous underline in nroff, like
+.request .ul
+in troff.
+.
+.TPx
+.REQ .da
+End current diversion.
+.
+.TPx
+.REQ .da "macro"
+Divert and append to
+.IR macro .
+.
+.TPx
+.REQ .de "macro"
+Define or redefine
+.I macro
+until
+.B ..\&
+is encountered.
+.
+.TPx
+.REQ .de "macro end"
+Define or redefine
+.I macro
+until
+.BI . end
+is called.
+.
+.TPx
+.REQ .de1 "macro"
+Same as
+.request .de
+but with compatibility mode switched off during macro expansion.
+.
+.TPx
+.REQ .de1 "macro end"
+Same as
+.request .de
+but with compatibility mode switched off during macro expansion.
+.
+.TPx
+.REQ .defcolor "color scheme component"
+Define or redefine a color with name
+.IR color .
+.I scheme
+can be
+.BR rgb ,
+.BR cym ,
+.BR cymk ,
+.BR gray ,
+or
+.BR grey .
+.I component
+can be single components specified as fractions in the range 0 to 1
+(default scaling indicator\~\c
+.scaleindicator f ),
+as a string of two-digit hexadecimal color components with a leading
+.BR # ,
+or as a string of four-digit hexadecimal components with two leading
+.BR # .
+The color
+.B default
+can't be redefined.
+.
+.TPx
+.REQ .dei "macro"
+Define or redefine a macro whose name is contained in the string
+register
+.I macro
+until
+.B ..\&
+is encountered.
+.
+.TPx
+.REQ .dei "macro end"
+Define or redefine a macro indirectly.
+.I macro
+and
+.I end
+are string registers whose contents are interpolated for the macro name
+and the end macro, respectively.
+.
+.TPx
+.REQ .dei1 "macro"
+Same as
+.request .dei
+but with compatibility mode switched off during macro expansion.
+.
+.TPx
+.REQ .dei1 "macro end"
+Same as
+.request .dei
+but with compatibility mode switched off during macro expansion.
+.
+.TPx
+.REQ .device "anything"
+Write
+.I anything
+to the intermediate output as a device control function.
+.
+.TPx
+.REQ .devicem "name"
+Write contents of macro or string
+.I name
+uninterpreted to the intermediate output as a device control function.
+.
+.TPx
+.REQ .di
+End current diversion.
+.
+.TPx
+.REQ .di "macro"
+Divert to
+.IR macro .
+See
+.BR groff_tmac (5)
+for more details.
+.
+.TPx
+.REQ .do "name"
+Interpret
+.BI . name
+with compatibility mode disabled.
+.
+.TPx
+.REQ .ds "stringvar anything"
+Set
+.I stringvar
+to
+.IR anything .
+.
+.TPx
+.REQ .ds1 "stringvar anything"
+Same as
+.request .ds
+but with compatibility mode switched off during string expansion.
+.
+.TPx
+.REQ .dt "N trap"
+Set diversion trap to position
+.I N
+(default scaling indicator\~\c
+.scaleindicator v ).
+.
+.TPx
+.REQ .ec
+Reset escape character to
+.squoted_char \[rs] .
+.
+.TPx
+.REQ .ec "c"
+Set escape character to
+.IR c .
+.
+.TPx
+.REQ .ecr
+Restore escape character saved with
+.request .ecs\c
+\&.
+.
+.TPx
+.REQ .ecs
+Save current escape character.
+.
+.TPx
+.REQ .el "anything"
+Else part for if-else (\c
+.request .ie\c
+)
+request.
+.
+.TPx
+.REQ .em "macro"
+The
+.I macro
+is run after the end of input.
+.
+.TPx
+.REQ .eo
+Turn off escape character mechanism.
+.
+.TPx
+.REQ .ev
+Switch to previous environment and pop it off the stack.
+.
+.TPx
+.REQ .ev "env"
+Push down environment number or name
+.I env
+to the stack and switch to it.
+.
+.TPx
+.REQ .evc "env"
+Copy the contents of environment
+.I env
+to the current environment.
+No pushing or popping.
+.
+.TPx
+.REQ .ex
+Exit from roff processing.
+.
+.TPx
+.REQ .fam
+Return to previous font family.
+.
+.TPx
+.REQ .fam "name"
+Set the current font family to
+.IR name .
+.
+.TPx
+.REQ .fc
+Disable field mechanism.
+.
+.TPx
+.REQ .fc "a"
+Set field delimiter to\~\c
+.I a
+and pad glyph to space.
+.
+.TPx
+.REQ .fc "a b"
+Set field delimiter to\~\c
+.I a
+and pad glyph to\~\c
+.IR b .
+.
+.TPx
+.REQ .fchar "c anything"
+Define fallback character (or glyph)
+.I c
+as string
+.IR anything .
+.
+.TPx
+.REQ .fcolor
+Set fill color to previous fill color.
+.
+.TPx
+.REQ .fcolor "c"
+Set fill color to
+.IR c .
+.
+.TPx
+.REQ .fi
+Fill output lines.
+.
+.TPx
+.REQ .fl
+Flush output buffer.
+.
+.TPx
+.REQ .fp "n font"
+Mount
+.I font
+on position
+.IR n .
+.
+.TPx
+.REQ .fp "n internal external"
+Mount font with long
+.I external
+name to short
+.I internal
+name on position
+.IR n .
+.
+.TPx
+.REQ .fschar "f c anything"
+Define fallback character (or glyph)
+.I c
+for font
+.I f
+as string
+.IR anything .
+.
+.TPx
+.REQ .fspecial "font"
+Reset list of special fonts for
+.I font
+to be empty.
+.
+.TPx
+.REQ .fspecial "font s1 s2 \fR\&.\|.\|.\&\fP"
+When the current font is
+.IR font ,
+then the fonts
+.IR s1 ,
+.IR s2 ,
+\&.\|.\|.\&
+are special.
+.
+.TPx
+.REQ .ft
+Return to previous font.
+Same as
+.request \[rs]
+or
+.request \[rs]\c
+\&.
+.
+.TPx
+.REQ .ft "font"
+Change to font name or number
+.IR font ;
+same as
+.esc[] f font
+escape sequence.
+.
+.TPx
+.REQ .ftr "font1 font2"
+Translate
+.I font1
+to
+.IR font2 .
+.
+.TPx
+.REQ .fzoom "font"
+Don't magnify
+.IR font .
+.
+.TPx
+.REQ .fzoom "font zoom"
+Set zoom factor for
+.I font
+(in multiples of 1/1000th).
+.
+.TPx
+.REQ .gcolor
+Set glyph color to previous glyph color.
+.
+.TPx
+.REQ .gcolor "c"
+Set glyph color to
+.IR c .
+.
+.TPx
+.REQ .hc
+Remove additional hyphenation indicator character.
+.
+.TPx
+.REQ .hc "c"
+Set up additional hyphenation indicator character\~\c
+.IR c .
+.
+.TPx
+.REQ .hcode "c1 code1 \fR[\fPc2 code2\fR]\fP \fR\&.\|.\|.\&\fP"
+Set the hyphenation code of character
+.I c1
+to
+.IR code1 ,
+that of
+.I c2
+to
+.IR code2 ,
+etc.
+.
+.TPx
+.REQ .hla "lang"
+Set the current hyphenation language to
+.IR lang .
+.
+.TPx
+.REQ .hlm "n"
+Set the maximum number of consecutive hyphenated lines to
+.IR n .
+.
+.TPx
+.REQ .hpf "file"
+Read hyphenation patterns from
+.IR file .
+.
+.TPx
+.REQ .hpfa "file"
+Append hyphenation patterns from
+.IR file .
+.
+.TPx
+.REQ .hpfcode "a b c d \fR\&.\|.\|.\&\fP"
+Set input mapping for
+.request .hpf\c
+\&.
+.
+.TPx
+.REQ .hw "words"
+List of
+.I words
+with exceptional hyphenation.
+.
+.TPx
+.REQ .hy "N"
+Switch to hyphenation mode
+.IR N .
+.
+.TPx
+.REQ .hym "n"
+Set the hyphenation margin to
+.I n
+(default scaling indicator\~\c
+.scaleindicator m ).
+.
+.TPx
+.REQ .hys "n"
+Set the hyphenation space to
+.IR n .
+.
+.TPx
+.REQ .ie "cond anything"
+If
+.I cond
+then
+.I anything
+else goto
+.request .el\c
+\&.
+.
+.TPx
+.REQ .if "cond anything"
+If
+.I cond
+then
+.IR anything ;
+otherwise do nothing.
+.
+.TPx
+.REQ .ig
+Ignore text until
+.B ..\&
+is encountered.
+.
+.TPx
+.REQ .ig "end"
+Ignore text until
+.BI . end
+is called.
+.
+.TPx
+.REQ .in
+Change to previous indentation value.
+.
+.TPx
+.REQ .in "\[+-]N"
+Change indentation according to
+.I \[+-]N
+(default scaling indicator\~\c
+.scaleindicator m ).
+.
+.TPx
+.REQ .it "N trap"
+Set an input-line count trap for the next
+.I N
+lines.
+.
+.TPx
+.REQ .itc "N trap"
+Same as
+.request .it
+but don't count lines interrupted with
+.esc c .
+.
+.TPx
+.REQ .kern
+Enable pairwise kerning.
+.
+.TPx
+.REQ .kern "n"
+If
+.I n
+is zero, disable pairwise kerning, otherwise enable it.
+.
+.TPx
+.REQ .lc
+Remove leader repetition glyph.
+.
+.TPx
+.REQ .lc "c"
+Set leader repetition glyph to\~\c
+.IR c .
+.
+.TPx
+.REQ .length "register anything"
+Write the length of the string
+.I anything
+to
+.IR register .
+.
+.TPx
+.REQ .linetabs
+Enable line-tabs mode (i.e., calculate tab positions relative to output
+line).
+.
+.TPx
+.REQ .linetabs "n"
+If
+.I n
+is zero, disable line-tabs mode, otherwise enable it.
+.
+.TPx
+.REQ .lf "N"
+Set input line number to
+.IR N .
+.
+.TPx
+.REQ .lf "N file"
+Set input line number to
+.I N
+and filename to
+.IR file .
+.
+.TPx
+.REQ .lg "N"
+Ligature mode on if
+.IR N >0.
+.
+.TPx
+.REQ .ll
+Change to previous line length.
+.
+.TPx
+.REQ .ll "\[+-]N"
+Set line length according to
+.I \[+-]N
+(default length
+.scalednumber 6.5 i ,
+default scaling indicator\~\c
+.scaleindicator m ).
+.
+.TPx
+.REQ .lsm
+Unset the leading spaces macro.
+.
+.TPx
+.REQ .lsm "macro"
+Set the leading spaces macro to
+.IR macro .
+.
+.TPx
+.REQ .ls
+Change to the previous value of additional intra-line skip.
+.
+.TPx
+.REQ .ls "N"
+Set additional intra-line skip value to
+.IR N ,
+i.e.,
+.IR N \-1
+blank lines are inserted after each text output line.
+.
+.TPx
+.REQ .lt "\[+-]N"
+Length of title (default scaling indicator\~\c
+.scaleindicator m ).
+.
+.TPx
+.REQ .mc
+Margin glyph off.
+.
+.TPx
+.REQ .mc "c"
+Print glyph\~\c
+.I c
+after each text line at actual distance from right margin.
+.
+.TPx
+.REQ .mc "c N"
+Set margin glyph to\~\c
+.I c
+and distance to\~\c
+.I N
+from right margin (default scaling indicator\~\c
+.scaleindicator m ).
+.
+.TPx
+.REQ .mk "\fR[\fPregister\fR]\fP"
+Mark current vertical position in
+.IR register ,
+or in an internal register used by
+.B .rt
+if no argument.
+.
+.TPx
+.REQ .mso "file"
+The same as
+.request .so
+except that
+.I file
+is searched in the tmac directories.
+.
+.TPx
+.REQ .na
+No output-line adjusting.
+.
+.TPx
+.REQ .ne
+Need a one-line vertical space.
+.
+.TPx
+.REQ .ne "N"
+Need
+.I N
+vertical space (default scaling indicator\~\c
+.scaleindicator v ).
+.
+.TPx
+.REQ .nf
+No filling or adjusting of output lines.
+.
+.TPx
+.REQ .nh
+No hyphenation.
+.
+.TPx
+.REQ .nm
+Number mode off.
+.
+.TPx
+.REQ .nm "\[+-]N \fR[\fPM \fR[\fPS \fR[\fPI\fR]]]\fP"
+In line number mode, set number, multiple, spacing, and indentation.
+.
+.TPx
+.REQ .nn
+Do not number next line.
+.
+.TPx
+.REQ .nn "N"
+Do not number next
+.I N
+lines.
+.
+.TPx
+.REQ .nop "anything"
+Always process
+.IR anything .
+.
+.TPx
+.REQ .nr "register \[+-]N \fR[\fPM\fR]\fP"
+Define or modify
+.I register
+using
+.I \[+-]N
+with auto-increment
+.IR M .
+.
+.TPx
+.REQ .nroff
+Make the built-in conditions
+.B n
+true and
+.B t
+false.
+.
+.TPx
+.REQ .ns
+Turn on no-space mode.
+.
+.TPx
+.REQ .nx
+Immediately jump to end of current file.
+.
+.TPx
+.REQ .nx "filename"
+Immediately continue processing with file
+.IR file .
+.
+.TPx
+.REQ .open "stream filename"
+Open
+.I filename
+for writing and associate the stream named
+.I stream
+with it.
+.
+.TPx
+.REQ .opena "stream filename"
+Like
+.request .open
+but append to it.
+.
+.TPx
+.REQ .os
+Output vertical distance that was saved by the
+.request sv
+request.
+.
+.TPx
+.REQ .output "string"
+Emit
+.I string
+directly to intermediate output, allowing leading whitespace if
+.I string
+starts with
+\&\f[CB]\[dq]\f[]
+(which is stripped off).
+.
+.TPx
+.REQ .pc
+Reset page number character to\~\c
+.squoted_char % .
+.
+.TPx
+.REQ .pc "c"
+Page number character.
+.
+.TPx
+.REQ .pev
+Print the current environment and each defined environment
+state to stderr.
+.
+.TPx
+.REQ .pi "program"
+Pipe output to
+.I program
+(nroff only).
+.
+.TPx
+.REQ .pl
+Set page length to default
+.scalednumber 11 i .
+The current page length is stored in
+.register .p\c
+\&.
+.
+.TPx
+.REQ .pl "\[+-]N"
+Change page length to
+.I \[+-]N
+(default scaling indicator\~\c
+.scaleindicator v ).
+.
+.TPx
+.REQ .pm
+Print macro names and sizes (number of blocks of 128 bytes).
+.
+.TPx
+.REQ .pm "t"
+Print only total of sizes of macros (number of 128 bytes blocks).
+.
+.TPx
+.REQ .pn "\[+-]N"
+Next page number
+.IR N .
+.
+.TPx
+.REQ .pnr
+Print the names and contents of all currently defined number registers
+on stderr.
+.
+.TPx
+.REQ .po
+Change to previous page offset.
+.
+The current page offset is available in
+.register .o\c
+\&.
+.
+.TPx
+.REQ .po "\[+-]N"
+Page offset
+.IR N .
+.
+.TPx
+.REQ .ps
+Return to previous point size.
+.TPx
+.REQ .ps "\[+-]N"
+Point size; same as
+.esc[] s \[+-]N .
+.
+.TPx
+.REQ .psbb "filename"
+Get the bounding box of a PostScript image
+.IR filename .
+.
+.TPx
+.REQ .pso "command"
+This behaves like the
+.request so
+request except that input comes from the standard output of
+.IR command .
+.
+.TPx
+.REQ .ptr
+Print the names and positions of all traps (not including input line
+traps and diversion traps) on stderr.
+.
+.TPx
+.REQ .pvs
+Change to previous post-vertical line spacing.
+.
+.TPx
+.REQ .pvs "\[+-]N"
+Change post-vertical line spacing according to
+.I \[+-]N
+(default scaling indicator\~\c
+.scaleindicator p ).
+.
+.TPx
+.REQ .rchar "c1 c2 \fR\&.\|.\|.\&\fP"
+Remove the definitions of entities
+.IR c1 ,
+.IR c2 ,
+\&.\|.\|.\&
+.
+.TPx
+.REQ .rd "prompt"
+Read insertion.
+.
+.TPx
+.REQ .return
+Return from a macro.
+.
+.TPx
+.REQ .return "anything"
+Return twice, namely from the macro at the current level and from the
+macro one level higher.
+.
+.TPx
+.REQ .rfschar "f c1 c2 \fR\&.\|.\|.\&\fP"
+Remove the definitions of entities
+.IR c1 ,
+.IR c2 ,
+\&.\|.\|.\&
+for font
+.IR f .
+.
+.TPx
+.REQ .rj "n"
+Right justify the next
+.I n
+input lines.
+.
+.TPx
+.REQ .rm "name"
+Remove request, macro, diversion, or string
+.IR name .
+.
+.TPx
+.REQ .rn "old new"
+Rename request, macro, diversion, or string
+.I old
+to
+.IR new .
+.
+.TPx
+.REQ .rnn "reg1 reg2"
+Rename register
+.I reg1
+to
+.IR reg2 .
+.
+.TPx
+.REQ .rr "register"
+Remove
+.IR register .
+.
+.TPx
+.REQ .rs
+Restore spacing; turn no-space mode off.
+.
+.TPx
+.REQ .rt
+Return
+.I (upward only)
+to vertical position marked by
+.B .mk
+on the current page.
+.
+.TPx
+.REQ .rt "\[+-]N"
+Return
+.I (upward only)
+to specified distance from the top of the page (default scaling
+indicator\~\c
+.scaleindicator v ).
+.
+.TPx
+.REQ .schar "c anything"
+Define global fallback character (or glyph)\~\c
+.I c
+as string
+.IR anything .
+.
+.TPx
+.REQ .shc
+Reset soft hyphen glyph to
+.esc (hy .
+.
+.TPx
+.REQ .shc "c"
+Set the soft hyphen glyph to\~\c
+.IR c .
+.
+.TPx
+.REQ .shift "n"
+In a macro, shift the arguments by
+.IR n \~\c
+positions.
+.
+.TPx
+.REQ .sizes "s1 s2 \fR\&.\|.\|.\&\fP s\fRn\fP \fR[\fB0\fP\fR]\fP"
+Set available font sizes similar to the
+.B sizes
+command in a
+.I DESC
+file.
+.
+.TPx
+.REQ .so "filename"
+Include source file.
+.
+.TPx
+.REQ .sp
+Skip one line vertically.
+.
+.TPx
+.REQ .sp "N"
+Space vertical distance
+.I N
+up or down according to sign of
+.I N
+(default scaling indicator\~\c
+.scaleindicator v ).
+.
+.TPx
+.REQ .special
+Reset global list of special fonts to be empty.
+.
+.TPx
+.REQ .special "s1 s2 \fR\&.\|.\|.\&\fR"
+Fonts
+.IR s1 ,
+.IR s2 ,
+etc.\& are special and are searched for glyphs not in the
+current font.
+.
+.TPx
+.REQ .spreadwarn
+Toggle the spread warning on and off without changing its value.
+.
+.TPx
+.REQ .spreadwarn "limit"
+Emit a warning if each space in an output line is widened by
+.I limit
+or more (default scaling indicator\~\c
+.scaleindicator m ).
+.
+.TPx
+.REQ .ss "N"
+Set space glyph size to
+.IR N /12
+of the space width in the current font.
+.
+.TPx
+.REQ .ss "N M"
+Set space glyph size to
+.IR N /12
+and sentence space size set to
+.IR M /12
+of the space width in the current font.
+.
+.TPx
+.REQ .sty "n style"
+Associate
+.I style
+with font position
+.IR n .
+.
+.TPx
+.REQ .substring "xx n1 n2"
+Replace the string named
+.I xx
+with the substring defined by the indices
+.I n1
+and
+.IR n2 .
+.
+.TPx
+.REQ .sv
+Save
+.scalednumber "1 v"
+of vertical space.
+.TPx
+.REQ .sv "N"
+Save the vertical distance
+.I N
+for later output with
+.request os
+request (default scaling indicator\~\c
+.scaleindicator v ).
+.
+.TPx
+.REQ .sy "command-line"
+Execute program
+.IR command-line .
+.
+.TPx
+.REQ .ta "T N"
+Set tabs after every position that is a multiple of
+.I N
+(default scaling indicator\~\c
+.scaleindicator m ).
+.TPx
+.REQ .ta "n1 n2 \fR\&.\|.\|.\&\fP n\fRn\fP \f[CB]T\f[] r1 r2 \
+\fR\&.\|.\|.\&\fP r\fRn\fP"
+Set tabs at positions
+.IR n1 ,
+.IR n2 ,
+\&.\|.\|.\&,
+.IR n n,
+then set tabs at
+.IR n n+ m \[tmu] r n+ r1
+through
+.IR n n+ m \[tmu] r n+ r n,
+where
+.I m
+increments from 0, 1, 2, \&.\|.\|.\& to infinity.
+.
+.\".TPx
+.\".REQ .tar
+.\"Restore internally saved tab positions.
+.\".
+.\".TPx
+.\".REQ .tas
+.\"Save tab positions internally.
+.
+.TPx
+.REQ .tc
+Remove tab repetition glyph.
+.TPx
+.REQ .tc "c"
+Set tab repetition glyph to\~\c
+.IR c .
+.
+.TPx
+.REQ .ti "\[+-]N"
+Temporary indent next line (default scaling indicator\~\c
+.scaleindicator m ).
+.
+.TPx
+.REQ .tkf "font s1 n1 s2 n2"
+Enable track kerning for
+.IR font .
+.
+.TPx
+.REQ .tl "\f[CB]\[cq]\f[]left\f[CB]\[cq]\f[]center\f[CB]\[cq]\f[]right\
+\f[CB]\[cq]\f[]"
+Three-part title.
+.
+.TPx
+.REQ .tm "anything"
+Print
+.I anything
+on stderr.
+.
+.TPx
+.REQ .tm1 "anything"
+Print
+.I anything
+on stderr, allowing leading whitespace if
+.I anything
+starts with
+\&\f[CB]\[dq]\f[]
+(which is stripped off).
+.
+.TPx
+.REQ .tmc "anything"
+Similar to
+.request .tm1
+without emitting a final newline.
+.
+.TPx
+.REQ .tr "abcd\fR\&.\|.\|.\&\fP"
+Translate
+.I a
+to
+.IR b ,
+.I c
+to
+.IR d ,
+etc.\& on output.
+.
+.TPx
+.REQ .trf "filename"
+Transparently output the contents of file
+.IR filename .
+.
+.TPx
+.REQ .trin "abcd\fR\&.\|.\|.\&\fP"
+This is the same as the
+.request tr
+request except that the
+.B asciify
+request uses the character code (if any) before the character
+translation.
+.
+.TPx
+.REQ .trnt "abcd\fR\&.\|.\|.\&\fP"
+This is the same as the
+.request tr
+request except that the translations do not apply to text that is
+transparently throughput into a diversion with
+.esc ! .
+.
+.TPx
+.REQ .troff
+Make the built-in conditions
+.B t
+true and
+.B n
+false.
+.
+.TPx
+.REQ .uf "font"
+Set underline font to
+.I font
+(to be switched to by
+.request .ul\c
+).
+.
+.TPx
+.REQ .ul "N"
+Underline (italicize in troff)
+.I N
+input lines.
+.
+.TPx
+.REQ .unformat "diversion"
+Unformat space characters and tabs in
+.IR diversion ,
+preserving font information.
+.TPx
+.REQ .vpt "n"
+Enable vertical position traps if
+.I n
+is non-zero, disable them otherwise.
+.
+.TPx
+.REQ .vs
+Change to previous vertical base line spacing.
+.
+.TPx
+.REQ .vs "\[+-]N"
+Set vertical base line spacing to
+.I \[+-]N
+(default scaling indicator\~\c
+.scaleindicator p ).
+.
+.TPx
+.REQ .warn "n"
+Set warnings code to
+.IR n .
+.
+.TPx
+.REQ .warnscale "si"
+Set scaling indicator used in warnings to
+.IR si .
+.
+.TPx
+.REQ .wh "N"
+Remove (first) trap at position
+.IR N .
+.
+.TPx
+.REQ .wh "N trap"
+Set location trap; negative means from page bottom.
+.
+.TPx
+.REQ .while "cond anything"
+While condition
+.I cond
+is true, accept
+.I anything
+as input.
+.
+.TPx
+.REQ .write "stream anything"
+Write
+.I anything
+to the stream named
+.IR stream .
+.
+.TPx
+.REQ .writec "stream anything"
+Similar to
+.request .write
+without emitting a final newline.
+.
+.TPx
+.REQ .writem "stream xx"
+Write contents of macro or string
+.I xx
+to the stream named
+.IR stream .
+.
+.PD
+.
+.
+.P
+Besides these standard groff requests, there might be further macro
+calls.
+They can originate from a macro package (see
+.BR roff (7)
+for an overview) or from a preprocessor.
+.
+.
+.P
+Preprocessor macros are easy to recognize.
+.
+They enclose their code between a pair of characteristic macros.
+.
+.
+.P
+.TS
+box, center, tab (^);
+c | c | c
+CfCB | CfCB | CfCB.
+preprocessor^start macro^ end macro
+=
+chem^.cstart^.cend
+eqn^.EQ^.EN
+grap^.G1^.G2
+grn^.GS^.GE
+.\" Keep the .IF line below the ideal line.
+ideal^.IS^.IE
+^^.IF
+pic^.PS^.PE
+refer^.R1^.R2
+soelim^\f[I]none^\f[I]none
+tbl^.TS^.TE
+_
+glilypond^.lilypond start^.lilypond stop
+gperl^.Perl start^.Perl stop
+gpinyin^.pinyin start^.pinyin stop
+.TE
+.
+.
+.P
+Note that the \[oq]ideal\[cq] preprocessor is not available in groff
+yet.
+.
+.
+.\" ====================================================================
+.SH "ESCAPE SEQUENCES"
+.\" ====================================================================
+.
+Escape sequences are in-line language elements usually introduced by a
+backslash
+.squoted_char \[rs]
+and followed by an escape name and sometimes by a required argument.
+.
+Input processing is continued directly after the escaped character or
+the argument (without an intervening separation character).
+.
+So there must be a way to determine the end of the escape name and the
+end of the argument.
+.
+.
+.P
+This is done by enclosing names (escape name and arguments consisting
+of a variable name) by a pair of brackets
+.BI \[lB] name \[rB]
+and constant arguments (number expressions and characters) by
+apostrophes (ASCII 0x27) like
+.BI \[cq] constant \[cq] \f[R].
+.
+.
+.P
+There are abbreviations for short names.
+.
+Two-character escape names can be specified by an opening parenthesis
+like
+.esc ( xy
+or
+.esc *( xy
+without a closing counterpart.
+.
+And all one-character names different from the special characters
+.squoted_char [
+and
+.squoted_char (
+can even be specified without a marker, for example
+.esc n c
+or
+.esc $ c.
+.
+.
+.P
+Constant arguments of length\~1 can omit the marker apostrophes, too,
+but there is no two-character analogue.
+.
+.
+.P
+While one-character escape sequences are mainly used for in-line
+functions and system-related tasks, the two-letter names following the
+.esc (
+construct are glyphs predefined by the roff system; these are called
+\[oq]Special Characters\[cq] in the classical documentation.
+.
+Escapes sequences of the form
+.esc[] "" name
+denote glyphs too.
+.
+.
+.\" ====================================================================
+.SS "Single-Character Escapes"
+.\" ====================================================================
+.
+.PD 0
+.
+.\" ========= comments =========
+.
+.TP
+.ESC \[dq]
+Start of a comment.
+.
+Everything up to the end of the line is ignored.
+.
+.TP
+.ESC #
+Everything up to and including the next newline is ignored.
+.
+This is interpreted in copy mode.
+.
+This is like
+.esc \[dq]
+except that the terminating newline is ignored as well.
+.
+.\" ========= strings =========
+.
+.TP
+.ESC * s
+The string stored in the string variable with one-character name\~\c
+.IR s .
+.
+.TP
+.ESC *( st
+The string stored in the string variable with two-character name
+.IR st .
+.
+.TP
+.ESC[] * string
+The string stored in the string variable with name
+.I string
+(with arbitrary length).
+.
+.TP
+.ESC[] * "stringvar arg1 arg2 \fR\&.\|.\|.\fP"
+The string stored in the string variable with arbitrarily long name
+.IR stringvar ,
+taking
+.IR arg1 ,
+.IR arg2 ,
+\&.\|.\|.\&
+as arguments.
+.
+.\" ========= macro arguments =========
+.
+.TP
+.ESC $0
+The name by which the current macro was invoked.
+.
+The
+.request als
+request can make a macro have more than one name.
+.
+.TP
+.ESC $ x
+Macro or string argument with one-digit number\~\c
+.I x
+in the range 1 to\~9.
+.
+.TP
+.ESC $( xy
+Macro or string argument with two-digit number
+.I xy
+(larger than zero).
+.
+.TP
+.ESC[] $ nexp
+Macro or string argument with number
+.IR nexp ,
+where
+.I nexp
+is a numerical expression evaluating to an integer \[>=]1.
+.
+.TP
+.ESC $*
+In a macro or string, the concatenation of all the arguments separated
+by spaces.
+.
+.TP
+.ESC $@
+In a macro or string, the concatenation of all the arguments with each
+surrounded by double quotes, and separated by spaces.
+.
+.TP
+.ESC $^
+In a macro, the representation of all parameters as if they were an
+argument to the
+.request ds
+request.
+.
+.\" ========= escaped characters =========
+.
+.TP
+.ESC \e
+reduces to a single backslash; useful to delay its interpretation as
+escape character in copy mode.
+.
+For a printable backslash, use
+.esc e ,
+or even better
+.esc [rs] ,
+to be independent from the current escape character.
+.
+.TP
+.ESC \[aa]
+The acute accent \[aa]; same as
+.esc (aa .
+Unescaped: apostrophe, right quotation mark, single quote (ASCII 0x27).
+.
+.TP
+.ESC \[ga]
+The grave accent \[ga]; same as
+.esc (ga .
+Unescaped: left quote, backquote (ASCII 0x60).
+.
+.TP
+.ESC \-
+The \- (minus) sign in the current font.
+.
+.TP
+.ESC _
+The same as
+.esc (ul ,
+the underline character.
+.
+.TP
+.ESC .
+The same as a dot (\[oq].\[cq]).
+Necessary in nested macro definitions so that \[oq]\[rs]\[rs]..\[cq]\&
+expands to \[oq]..\[cq].
+.
+.TP
+.ESC %
+Default optional hyphenation character.
+.
+.TP
+.ESC !
+Transparent line indicator.
+.
+.TP
+.ESC? anything
+In a diversion, this transparently embeds
+.I anything
+in the diversion.
+.I anything
+is read in copy mode.
+.
+See also the escape sequences
+.esc !
+and
+.esc ? .
+.
+.
+.\" ========= spacing =========
+.
+.TP
+.ESC \& space
+Unpaddable space size space glyph (no line break).
+.
+.TP
+.ESC 0
+Digit-width space.
+.
+.TP
+.ESC |
+1/6\ em narrow space glyph; zero width in nroff.
+.
+.TP
+.ESC ^
+1/12\ em half-narrow space glyph; zero width in nroff.
+.
+.TP
+.ESC &
+Non-printable, zero-width glyph.
+.
+.TP
+.ESC )
+Like
+.esc &
+except that it behaves like a glyph declared with the
+.request cflags
+request to be transparent for the purposes of end-of-sentence
+recognition.
+.
+.TP
+.ESC /
+Increases the width of the preceding glyph so that the spacing
+between that glyph and the following glyph is correct if
+the following glyph is a roman glyph.
+.
+.TP
+.ESC ,
+Modifies the spacing of the following glyph so that the spacing
+between that glyph and the preceding glyph is correct if the
+preceding glyph is a roman glyph.
+.
+.TP
+.ESC ~
+Unbreakable space that stretches like a normal inter-word space when a
+line is adjusted.
+.
+.TP
+.ESC :
+Inserts a zero-width break point (similar to
+.esc %
+but without a soft hyphen character).
+.
+.TP
+.ESC "" newline
+Ignored newline, for continuation lines.
+.
+.\" ========= structuring =========
+.
+.TP
+.ESC {
+Begin conditional input.
+.
+.TP
+.ESC }
+End conditional input.
+.
+.\" ========= longer escape names =========
+.
+.TP
+.ESC ( sc
+A glyph with two-character name
+.IR sc ;
+see section \[lq]Special Characters\[rq] below.
+.
+.TP
+.ESC[] "" name
+A glyph with name
+.I name
+(of arbitrary length).
+.
+.TP
+.ESC[] "" "comp1 comp2 \fR\&.\|.\|.\&\fP"
+A composite glyph with components
+.IR comp1 ,
+.IR comp2 ,
+\&.\|.\|.\&
+.
+.\" ========= alphabetical escapes =========
+.
+.TP
+.ESC a
+Non-interpreted leader character.
+.
+.TP
+.ESCq A anything
+If
+.I anything
+is acceptable as a name of a string, macro, diversion, register,
+environment or font it expands to\~1, and to\~0 otherwise.
+.
+.TP
+.ESCq b abc\fR\&.\|.\|.\&\fP
+Bracket building function.
+.
+.TP
+.ESCq B anything
+If
+.I anything
+is acceptable as a valid numeric expression it expands to\~1, and
+to\~0 otherwise.
+.
+.TP
+.ESC c
+Continue output line at next input line.
+Anything after this escape on the same line is ignored except
+.ESC R
+(which works as usual).
+Anything before
+.ESC c
+on the same line is appended to the current partial output line.
+The next non-command line after a line interrupted with
+.ESC c
+counts as a new input line.
+.
+.TP
+.ESCq C glyph
+The glyph called
+.IR glyph ;
+same as
+.esc[] "" glyph ,
+but compatible to other roff versions.
+.
+.TP
+.ESC d
+Forward (down) 1/2 em (1/2 line in nroff).
+.
+.TP
+.ESCq D charseq
+Draw a graphical element defined by the characters in
+.IR charseq ;
+see the
+.I groff
+Texinfo manual for details.
+.
+.TP
+.ESC e
+Printable version of the current escape character.
+.
+.TP
+.ESC E
+Equivalent to an escape character, but is not interpreted in copy mode.
+.
+.TP
+.ESC f F
+Change to font with one-character name or one-digit number\~\c
+.IR F .
+.
+.TP
+.ESC fP
+Switch back to previous font.
+.
+.TP
+.ESC f( fo
+Change to font with two-character name or two-digit number
+.IR fo .
+.
+.TP
+.ESC[] f font
+Change to font with arbitrarily long name or number expression
+.IR font .
+.
+.TP
+.ESC[] f ""
+Switch back to previous font.
+.
+.TP
+.ESC F f
+Change to font family with one-character name\~\c
+.IR f .
+.
+.TP
+.ESC F( fm
+Change to font family with two-character name
+.IR fm .
+.
+.TP
+.ESC[] F fam
+Change to font family with arbitrarily long name
+.IR fam .
+.
+.TP
+.ESC[] F ""
+Switch back to previous font family.
+.
+.TP
+.ESC g r
+Return format of register with one-character name\~\c
+.I r
+suitable for
+.request af
+request.
+.
+.TP
+.ESC g( rg
+Return format of register with two-character name
+.I rg
+suitable for
+.request af
+request.
+.
+.TP
+.ESC[] g reg
+Return format of register with arbitrarily long name
+.I reg
+suitable for
+.request af
+request.
+.
+.TP
+.ESCq h N
+Local horizontal motion; move right
+.I N
+(left if negative).
+.
+.TP
+.ESCq H N
+Set height of current font to
+.IR N .
+.
+.TP
+.ESC k r
+Mark horizontal input place in one-character register\~\c
+.IR r .
+.
+.TP
+.ESC k( rg
+Mark horizontal input place in two-character register
+.IR rg .
+.
+.TP
+.ESC[] k reg
+Mark horizontal input place in register with arbitrarily long name
+.IR reg .
+.
+.TP
+.ESCq l Nc
+Horizontal line drawing function (optionally using character
+.IR c ).
+.
+.TP
+.ESCq L Nc
+Vertical line drawing function (optionally using character
+.IR c ).
+.
+.TP
+.ESC m c
+Change to color with one-character name\~\c
+.IR c .
+.
+.TP
+.ESC m( cl
+Change to color with two-character name
+.IR cl .
+.
+.TP
+.ESC[] m color
+Change to color with arbitrarily long name
+.IR color .
+.
+.TP
+.ESC[] m ""
+Switch back to previous color.
+.
+.TP
+.ESC M c
+Change filling color for closed drawn objects to color with
+one-character name\~\c
+.IR c .
+.
+.TP
+.ESC M( cl
+Change filling color for closed drawn objects to color with
+two-character name
+.IR cl .
+.
+.TP
+.ESC[] M color
+Change filling color for closed drawn objects to color with
+arbitrarily long name
+.IR color .
+.
+.TP
+.ESC[] M ""
+Switch to previous fill color.
+.
+.TP
+.ESC n r
+The numerical value stored in the register variable with the
+one-character name\~\c
+.IR r .
+.
+.TP
+.ESC n( re
+The numerical value stored in the register variable with the
+two-character name
+.IR re .
+.
+.TP
+.ESC[] n reg
+The numerical value stored in the register variable with arbitrarily
+long name
+.IR reg .
+.
+.TP
+.ESCq N n
+Typeset the glyph with index\~\c
+.I n
+in the current font.
+.
+No special fonts are searched.
+.
+Useful for adding (named) entities to a document using the
+.request char
+request and friends.
+.
+.TP
+.ESCq o abc\fR\&.\|.\|.\&\fP
+Overstrike glyphs
+.IR a ,
+.IR b ,
+.IR c ,
+etc.
+.
+.TP
+.ESC O0
+Disable glyph output.
+.
+Mainly for internal use.
+.
+.TP
+.ESC O1
+Enable glyph output.
+.
+Mainly for internal use.
+.
+.TP
+.ESC p
+Break output line at next word boundary; adjust if applicable.
+.
+.TP
+.ESC r
+Reverse 1\ em vertical motion (reverse line in nroff).
+.
+.TP
+.ESCq R "name\~\[+-]n"
+The same as
+.request .nr
+.I name
+.IR \[+-]n .
+.
+.TP
+.ESC s \[+-]N
+Set/increase/decrease the point size to/by
+.I N
+scaled points;
+.I N
+is a one-digit number in the range 1 to\~9.
+.
+Same as
+.request ps
+request.
+.
+.TP
+.ESC s( \[+-]N
+.TQ
+.ESC s\[+-]( N
+Set/increase/decrease the point size to/by
+.I N
+scaled points;
+.I N
+is a two-digit number \[>=]1.
+.
+Same as
+.request ps
+request.
+.
+.TP
+.ESC[] s \[+-]N
+.TQ
+.ESC[] s\[+-] N
+.TQ
+.ESCq s \[+-]N
+.TQ
+.ESCq s\[+-] N
+Set/increase/decrease the point size to/by
+.I N
+scaled points.
+.
+Same as
+.request ps
+request.
+.
+.TP
+.ESCq S N
+Slant output by
+.I N
+degrees.
+.
+.TP
+.ESC t
+Non-interpreted horizontal tab.
+.
+.TP
+.ESC u
+Reverse (up) 1/2 em vertical motion (1/2 line in nroff).
+.
+.TP
+.ESCq v N
+Local vertical motion; move down
+.I N
+(up if negative).
+.
+.TP
+.ESC V e
+The contents of the environment variable with one-character
+name\~\c
+.IR e .
+.
+.TP
+.ESC V( ev
+The contents of the environment variable with two-character name
+.IR ev .
+.
+.TP
+.ESC[] V env
+The contents of the environment variable with arbitrarily long name
+.IR env .
+.
+.TP
+.ESCq w string
+The width of the glyph sequence
+.IR string .
+.
+.TP
+.ESCq x N
+Extra line-space function (negative before, positive after).
+.
+.TP
+.ESCq X string
+Output
+.I string
+as device control function.
+.
+.TP
+.ESC Y n
+Output string variable or macro with one-character name\~\c
+.I n
+uninterpreted as device control function.
+.
+.TP
+.ESC Y( nm
+Output string variable or macro with two-character name
+.I nm
+uninterpreted as device control function.
+.
+.TP
+.ESC[] Y name
+Output string variable or macro with arbitrarily long name
+.I name
+uninterpreted as device control function.
+.
+.TP
+.ESC z c
+Print
+.I c
+with zero width (without spacing).
+.
+.TP
+.ESCq Z anything
+Print
+.I anything
+and then restore the horizontal and vertical position;
+.I anything
+may not contain tabs or leaders.
+.
+.
+.PD
+.P
+The escape sequences
+.esc e ,
+.esc . ,
+.esc \[dq] ,
+.esc $ ,
+.esc * ,
+.esc a ,
+.esc n ,
+.esc t ,
+.esc g ,
+and
+.escarg \& newline
+are interpreted in copy mode.
+.
+.
+.P
+Escape sequences starting with
+.esc (
+or
+.esc [
+do not represent single character escape sequences, but introduce escape
+names with two or more characters.
+.
+.
+.P
+If a backslash is followed by a character that does not constitute a
+defined escape sequence, the backslash is silently ignored and the
+character maps to itself.
+.
+.
+.\" ====================================================================
+.SS "Special Characters"
+.\" ====================================================================
+.
+[Note: \[oq]Special Characters\[cq] is a misnomer; those entities are
+(output) glyphs, not (input) characters.]
+.
+.
+.P
+Common special characters are predefined by escape sequences of the
+form
+.BI \e( xy
+with characters
+.I x
+and
+.IR y .
+.
+In
+.IR groff ,
+it is also possible to use the writing
+.BI \e[ xy ]
+as well.
+.
+.
+.P
+Some of these special characters exist in the usual font while most of
+them are only available in the special font.
+.
+Below you can see a small selection of the most important glyphs; a
+complete list can be found in
+.BR groff_char (7).
+.RS
+.P
+.PD 0
+.
+.TP
+.ESC (Do
+Dollar
+.B \(Do
+.
+.TP
+.ESC (Eu
+Euro
+.B \(Eu
+.
+.TP
+.ESC (Po
+British pound sterling
+.B \(Po
+.
+.TP
+.ESC (aq
+Apostrophe quote
+.B \(aq
+.
+.TP
+.ESC (bu
+Bullet sign
+.B \(bu
+.
+.TP
+.ESC (co
+Copyright
+.B \(co
+.
+.TP
+.ESC (cq
+Single closing quote (right)
+.B \(cq
+.TP
+.ESC (ct
+Cent
+.B \(ct
+.
+.TP
+.ESC (dd
+Double dagger
+.B \(dd
+.
+.TP
+.ESC (de
+Degree
+.B \(de
+.
+.TP
+.ESC (dg
+Dagger
+.B \(dg
+.
+.TP
+.ESC (dq
+Double quote (ASCII 34)
+.B \(dq
+.
+.TP
+.ESC (em
+Em-dash
+.B \(em
+.
+.TP
+.ESC (en
+En-dash
+.B \(en
+.
+.TP
+.ESC (hy
+Hyphen
+.B \(hy
+.
+.TP
+.ESC (lq
+Double quote left
+.B \(lq
+.
+.TP
+.ESC (oq
+Single opening quote (left)
+.B \(oq
+.
+.TP
+.ESC (rg
+Registered sign
+.B \(rg
+.
+.TP
+.ESC (rq
+Double quote right
+.B \(rq
+.
+.TP
+.ESC (rs
+Printable backslash character
+.B \(rs
+.
+.TP
+.ESC (sc
+Section sign
+.B \(sc
+.
+.TP
+.ESC (tm
+Trademark symbol
+.B \(tm
+.
+.TP
+.ESC (ul
+Underline character
+.B \(ul
+.
+.TP
+.ESC (==
+Identical
+.B \(==
+.
+.TP
+.ESC (>=
+Larger or equal
+.B \(>=
+.
+.TP
+.ESC (<=
+Less or equal
+.B \(<=
+.
+.TP
+.ESC (!=
+Not equal
+.B \(!=
+.
+.TP
+.ESC (->
+Right arrow
+.B \(->
+.
+.TP
+.ESC (<-
+Left arrow
+.B \(<-
+.
+.TP
+.ESC (+-
+Plus-minus sign
+.B \(+-
+.
+.PD
+.RE
+.
+.
+.\" ====================================================================
+.SS "Unicode Characters"
+.\" ====================================================================
+.
+The extended escape
+.B u
+allows the inclusion of all available Unicode characters into a
+.I roff
+file.
+.
+.
+.TP
+.BI \e[u xxxx ]
+.B u
+is the escape name.
+.
+.I xxxx
+is a hexadecimal number of four hex digits, such as
+.B 0041
+for the letter
+.BR A ,
+thus
+.BR \e[u0041] .
+.
+.
+.TP
+.BI \e[u yyyyy ]
+.B u
+is the escape name.
+.
+.I yyyyy
+is a hexadecimal number of five hex digits, such as
+.B 2FA1A
+for a Chinese-looking character from the Unicode block
+.IR "CJK Compatibility Ideographs Supplement" ,
+thus
+.BR \e[u2FA1A] .
+.
+.
+.P
+The hexadecimal value indicates the corresponding Unicode code point for
+a character.
+.
+.
+.TP
+.BI \e[u hex1 _ hex2 ]
+.TQ
+.BI \e[u hex1 _ hex2 _ hex3 ]
+.IR hex1 ,
+.IR hex2 ,
+and
+.I hex3
+are all Unicode hexadecimal codes (4 or 5 hex digits) that are used
+for overstriking, e.g.\&
+.B \e[u0041_0301]
+is
+.IR "A acute" ,
+which can also be specified as
+.BR \['A] ;
+see
+.BR groff_char (7).
+.
+.
+.P
+The availability of the Unicode characters depends on the font used.
+.
+For text mode, the device
+.B \-Tutf8
+is quite complete; for
+.I troff
+modes it might happen that some or many characters will not be
+displayed.
+.
+Please check your fonts.
+.
+.
+.\" ====================================================================
+.SS "Strings"
+.\" ====================================================================
+.
+Strings are defined by the
+.request ds
+request and can be retrieved by the
+.esc *
+escape sequence.
+.
+.
+.P
+Strings share their name space with macros.
+.
+So strings and macros without arguments are roughly equivalent; it is
+possible to call a string like a macro and vice versa, but this often
+leads to unpredictable results.
+.
+The following string is the only one predefined in groff.
+.
+.TPx
+.STRING .T
+The name of the current output device as specified by the
+.option \-T
+command-line option.
+.
+.
+.\" ====================================================================
+.SH REGISTERS
+.\" ====================================================================
+.
+Registers are variables that store a value.
+.
+In groff,
+most registers store numerical values
+(see section \[lq]Numerical Expressions\[rq] above),
+but some can also hold a string value.
+.
+.
+.P
+Each register is given a name.
+Arbitrary registers can be defined and set with the
+.request nr
+request.
+.
+.
+.P
+The value stored in a register can be retrieved by the escape sequences
+introduced by
+.esc n .
+.
+.
+.P
+Most useful are predefined registers.
+.
+In the following the notation
+.I name
+is used to refer to
+.register name
+to make clear that we speak about registers.
+.
+Please keep in mind that the
+.esc[] n ""
+decoration is not part of the register name.
+.
+.
+.\" ====================================================================
+.SS "Read-only Registers"
+.\" ====================================================================
+.
+The following registers have predefined values that should not be
+modified by the user (usually, registers starting with a dot are
+read-only).
+.
+Mostly, they provide information on the current settings or store
+results from request calls.
+.
+.
+.P
+.PD 0
+.
+.TPx
+.REG $$
+The process ID of
+.BR troff .
+.
+.TPx
+.REG .$
+Number of arguments in the current macro or string.
+.
+.TPx
+.REG .a
+Post-line extra line-space most recently utilized using
+.esc x .
+.
+.TPx
+.REG .A
+Set to\~1 in
+.B troff
+if option
+.option \-A
+is used; always\~1 in
+.BR nroff .
+.
+.TPx
+.REG .b
+The emboldening offset while
+.request .bd
+is active.
+.
+.TPx
+.REG .br
+Within a macro, set to\~1 if macro called with the \[oq]normal\[cq]
+control character, and to\~0 otherwise.
+.
+.TPx
+.REG .c
+Current input line number.
+.
+.TPx
+.REG .C
+1\~if compatibility mode is in effect, 0\~otherwise.
+.
+.TPx
+.REG .cdp
+The depth of the last glyph added to the current environment.
+.
+It is positive if the glyph extends below the baseline.
+.
+.TPx
+.REG .ce
+The number of lines remaining to be centered, as set by the
+.request ce
+request.
+.
+.TPx
+.REG .cht
+The height of the last glyph added to the current environment.
+.
+It is positive if the glyph extends above the baseline.
+.
+.TPx
+.REG .color
+1\~if colors are enabled, 0\~otherwise.
+.
+.TPx
+.REG .csk
+The skew of the last glyph added to the current environment.
+.
+The skew of a glyph is how far to the right of the center of a glyph
+the center of an accent over that glyph should be placed.
+.
+.TPx
+.REG .d
+Current vertical place in current diversion; equal to
+.register nl\c
+\&.
+.
+.TPx
+.REG .ev
+The name or number of the current environment (string-valued).
+.
+.TPx
+.REG .f
+Current font number.
+.
+.TPx
+.REG .F
+The name of the current input file (string-valued).
+.
+.TPx
+.REG .fam
+The current font family (string-valued).
+.
+.TPx
+.REG .fn
+The current (internal) real font name (string-valued).
+.
+.TPx
+.REG .fp
+The number of the next free font position.
+.
+.TPx
+.REG .g
+Always 1 in GNU troff.
+.
+Macros should use it to test if running under groff.
+.
+.TPx
+.REG .h
+Text base-line high-water mark on current page or diversion.
+.
+.TPx
+.REG .H
+Number of basic units per horizontal unit of output device resolution.
+.
+.TPx
+.REG .height
+The current font height as set with
+.request \[rs]H\c
+\&.
+.
+.TPx
+.REG .hla
+The current hyphenation language as set by the
+.request hla
+request.
+.
+.TPx
+.REG .hlc
+The number of immediately preceding consecutive hyphenated lines.
+.
+.TPx
+.REG .hlm
+The maximum allowed number of consecutive hyphenated lines, as set by
+the
+.request hlm
+request.
+.
+.TPx
+.REG .hy
+The current hyphenation flags (as set by the
+.request hy
+request).
+.
+.TPx
+.REG .hym
+The current hyphenation margin (as set by the
+.request hym
+request).
+.
+.TPx
+.REG .hys
+The current hyphenation space (as set by the
+.request hys
+request).
+.
+.TPx
+.REG .i
+Current indentation.
+.
+.TPx
+.REG .in
+The indentation that applies to the current output line.
+.
+.TPx
+.REG .int
+Positive if last output line contains
+.esc c .
+.
+.TPx
+.REG .j
+The current adjustment mode.
+It can be stored and used to set adjustment.
+(n\ =\ 1, b\ =\ 1, l\ =\ 0, r\ =\ 5, c\ =\ 3).
+.
+.TPx
+.REG .k
+The current horizontal output position (relative to the current
+indentation).
+.TPx
+.REG .kern
+1\~if pairwise kerning is enabled, 0\~otherwise.
+.
+.TPx
+.REG .l
+Current line length.
+.
+.TPx
+.REG .L
+The current line spacing setting as set by
+.request .ls\c
+\&.
+.
+.TPx
+.REG .lg
+The current ligature mode (as set by the
+.request lg
+request).
+.
+.TPx
+.REG .linetabs
+The current line-tabs mode (as set by the
+.request linetabs
+request).
+.
+.TPx
+.REG .ll
+The line length that applies to the current output line.
+.
+.TPx
+.REG .lt
+The title length (as set by the
+.request lt
+request).
+.
+.TPx
+.REG .m
+The current drawing color (string-valued).
+.
+.TPx
+.REG .M
+The current background color (string-valued).
+.
+.TPx
+.REG .n
+Length of text portion on previous output line.
+.
+.TPx
+.REG .ne
+The amount of space that was needed in the last
+.request ne
+request that caused a trap to be sprung.
+.
+Useful in conjunction with
+.register .trunc\c
+\&.
+.
+.TPx
+.REG .ns
+1\~if in no-space mode, 0\~otherwise.
+.
+.TPx
+.REG .o
+Current page offset.
+.
+.TPx
+.REG .O
+The suppression nesting level (see
+.esc O ).
+.
+.TPx
+.REG .p
+Current page length.
+.
+.TPx
+.REG .P
+1\~if the current page is being printed, 0\~otherwise (as determined by
+the
+.option \-o
+command-line option).
+.
+.TPx
+.REG .pe
+1\~during page ejection, 0\~otherwise.
+.
+.TPx
+.REG .pn
+The number of the next page: either the value set by a
+.request pn
+request, or the number of the current page plus\ 1.
+.
+.TPx
+.REG .ps
+The current point size in scaled points.
+.
+.TPx
+.REG .psr
+The last-requested point size in scaled points.
+.
+.TPx
+.REG .pvs
+The current post-vertical line spacing.
+.
+.TPx
+.REG .R
+The number of unused number registers.
+Always 10000 in GNU troff.
+.
+.TPx
+.REG .rj
+The number of lines to be right-justified as set by the
+.request rj
+request.
+.
+.TPx
+.REG .s
+Current point size as a decimal fraction.
+.
+.TPx
+.REG .slant
+The slant of the current font as set with
+.request \eS\c
+\&.
+.
+.TPx
+.REG .sr
+The last requested point size in points as a decimal fraction
+(string-valued).
+.
+.TPx
+.REG .ss
+The value of the parameters set by the first argument of the
+.request ss
+request.
+.
+.TPx
+.REG .sss
+The value of the parameters set by the second argument of the
+.request ss
+request.
+.
+.TPx
+.REG .sty
+The current font style (string-valued).
+.
+.TPx
+.REG .t
+Vertical distance to the next trap.
+.
+.TPx
+.REG .T
+Set to\~1
+if option
+.option \-T
+is used.
+.
+.TPx
+.REG .tabs
+A string representation of the current tab settings suitable for use
+as an argument to the
+.request ta
+request.
+.
+.TPx
+.REG .trunc
+The amount of vertical space truncated by the most recently sprung
+vertical position trap, or, if the trap was sprung by an
+.request ne
+request, minus the amount of vertical motion produced by
+.request .ne\c
+\&.
+.
+Useful in conjunction with the
+.register .ne\c
+\&.
+.
+.TPx
+.REG .u
+Equal to 1 in fill mode and 0 in no-fill mode.
+.
+.TPx
+.REG .U
+Equal to 1 in safer mode and 0 in unsafe mode.
+.
+.TPx
+.REG .v
+Current vertical line spacing.
+.
+.TPx
+.REG .V
+Number of basic units per vertical unit of output device resolution.
+.
+.TPx
+.REG .vpt
+1\~if vertical position traps are enabled, 0\~otherwise.
+.
+.TPx
+.REG .w
+Width of previous glyph.
+.
+.TPx
+.REG .warn
+The sum of the number codes of the currently enabled warnings.
+.
+.TPx
+.REG .x
+The major version number.
+.
+.TPx
+.REG .y
+The minor version number.
+.
+.TPx
+.REG .Y
+The revision number of groff.
+.
+.TPx
+.REG .z
+Name of current diversion.
+.
+.TPx
+.REG .zoom
+Zoom factor for current font (in multiples of 1/1000th; zero if no
+magnification).
+.PD
+.
+.
+.\" ====================================================================
+.SS "Writable Registers"
+.\" ====================================================================
+.
+The following registers can be read and written by the user.
+They have predefined default values, but these can be modified for
+customizing a document.
+.
+.
+.P
+.PD 0
+.TPx
+.REG %
+Current page number.
+.
+.TPx
+.REG c.
+Current input line number.
+.
+.TPx
+.REG ct
+Character type (set by width function
+.esc w ).
+.
+.TPx
+.REG dl
+Maximal width of last completed diversion.
+.
+.TPx
+.REG dn
+Height of last completed diversion.
+.
+.TPx
+.REG dw
+Current day of week (1\(en7).
+.
+.TPx
+.REG dy
+Current day of month (1\(en31).
+.
+.TPx
+.REG hours
+The number of hours past midnight.
+.
+Initialized at start-up.
+.
+.TPx
+.REG hp
+Current horizontal position at input line.
+.
+.TPx
+.REG llx
+Lower left x-coordinate (in PostScript units) of a given PostScript
+image (set by
+.request .psbb\c
+).
+.
+.TPx
+.REG lly
+Lower left y-coordinate (in PostScript units) of a given PostScript
+image (set by
+.request .psbb\c
+).
+.
+.TPx
+.REG ln
+Output line number.
+.
+.TPx
+.REG lsn
+The number of leading spaces of an input line.
+.
+.TPx
+.REG lss
+The horizontal space corresponding to the leading spaces of an input
+line.
+.
+.TPx
+.REG minutes
+The number of minutes after the hour.
+.
+Initialized at start-up.
+.
+.TPx
+.REG mo
+Current month (1\(en12).
+.
+.TPx
+.REG nl
+Vertical position of last printed text base-line.
+.
+.TPx
+.REG opmaxx
+.TPx
+.REG opmaxy
+.TPx
+.REG opminx
+.TPx
+.REG opminy
+These four registers mark the top left and bottom right hand corners of
+a box which encompasses all written glyphs.
+They are reset to \-1 by
+.escarg O 0
+or
+.escarg O 1 .
+.
+.TPx
+.REG rsb
+Like
+.register sb\c
+,
+but takes account of the heights and depths of glyphs.
+.
+.TPx
+.REG rst
+Like
+.register st\c
+,
+but takes account of the heights and depths of glyphs.
+.
+.TPx
+.REG sb
+Depth of string below base line (generated by width function
+.esc w ).
+.
+.TPx
+.REG seconds
+The number of seconds after the minute.
+.
+Initialized at start-up.
+.
+.TPx
+.REG skw
+Right skip width from the center of the last glyph in the
+.esc w
+argument.
+.
+.TPx
+.REG slimit
+If greater than 0, the maximum number of objects on the input stack.
+.
+If \[<=]0 there is no limit, i.e., recursion can continue until virtual
+memory is exhausted.
+.
+.TPx
+.REG ssc
+The amount of horizontal space (possibly negative) that should be
+added to the last glyph before a subscript (generated by width
+function
+.esc w ).
+.
+.TPx
+.REG st
+Height of string above base line (generated by width function
+.esc w ).
+.
+.TPx
+.REG systat
+The return value of the
+.I system()
+function executed by the last
+.request sy
+request.
+.
+.TPx
+.REG urx
+Upper right x-coordinate (in PostScript units) of a given PostScript
+image (set by
+.request .psbb\c
+).
+.
+.TPx
+.REG ury
+Upper right y-coordinate (in PostScript units) of a given PostScript
+image (set by
+.request .psbb\c
+).
+.
+.TPx
+.REG year
+The current year (year 2000 compliant).
+.
+.TPx
+.REG yr
+Current year minus 1900.
+.
+For Y2K compliance use
+.register year
+instead.
+.
+.PD
+.
+.
+.\" ====================================================================
+.SH HYPHENATION
+.\" ====================================================================
+.
+The
+.REQ .hy
+request,
+given an integer argument,
+controls when hyphenation applies.
+.
+The default value is
+.BR 1 ,
+which enables hyphenation almost everywhere (see below).
+.
+Macro packages often override this default.
+.
+.
+.TP
+.B 1
+disables hyphenation only after the first and before the last
+character of a word.
+.
+.TP
+.B 2
+disables hyphenation only of the last word on a page or column.
+.
+.TP
+.B 4
+disables hyphenation only before the last two characters of a word.
+.
+.TP
+.B 8
+disables hyphenation only after the first two characters of a word.
+.
+.TP
+.B 16
+enables hyphenation before the last character of a word.
+.
+.TP
+.B 32
+enables hyphenation after the first character of a word.
+.
+.P
+The values are additive.
+.
+Some values cannot be used together because they contradict;
+for instance,
+4 and\~16;
+8 and\~32.
+.
+.
+.\" ====================================================================
+.SH UNDERLINING
+.\" ====================================================================
+.
+In the
+.I RUNOFF
+language, the underlining was quite easy.
+.
+But in
+.I roff
+this is much more difficult.
+.
+.
+.\" ====================================================================
+.SS Underlining with .ul
+.\" ====================================================================
+.
+There exists a
+.I groff
+request
+.B .ul
+(see above) that can underline the next or further source lines in
+.BR nroff ,
+but in
+.B troff
+it produces only a font change into
+.IR italic .
+.
+So this request is not really useful.
+.
+.
+.\" ====================================================================
+.SS Underlining with .UL from ms
+.\" ====================================================================
+.
+In the \[oq]ms\[cq] macro package in tmac/s.tmac
+.BR groff_ms (7),
+there is the macro
+.BR .UL .
+.
+But this works only in
+.BR troff ,
+not in
+.BR nroff .
+.
+.
+.\" ====================================================================
+.SS Underlining macro definitions
+.\" ====================================================================
+.
+So one can use the
+.I italic
+.B nroff
+idea from
+.B .ul
+and the
+.B troff
+definition
+in
+.I ms
+for writing a useful new macro, something like
+.
+.RS
+.EX
+\&.de UNDERLINE
+\&. ie n \[rs]\[rs]$1\[rs]f[I]\[rs]\[rs]$2\[rs]f[P]\[rs]\[rs]$3
+\&. el \[rs]\[rs]$1\[rs]Z\[aq]\[rs]\[rs]$2\[aq]\[rs]v\[aq].25m\[aq]\
+\[rs]D\[aq]l \[rs]w\[aq]\[rs]\[rs]$2\[aq]u 0\[aq]\[rs]v\[aq]\-.25m\
+\[aq]\[rs]\[rs]$3
+\&..
+.EE
+.RE
+.
+If
+.BR doclifter (1)
+makes trouble, change the macro name
+.B UNDERLINE
+into some 2-letter word, like
+.BR Ul .
+.
+Moreover change the font writing from
+.B \[rs]f[P]
+to
+.BR \[rs]fP .
+.
+.
+.\" ====================================================================
+.SS Underlining without macro definitions
+.\" ====================================================================
+.
+If one does not want to use macro definitions, e.g., when
+.B doclifter
+gets lost, use the following:
+.
+.RS
+.EX
+\&.ds u1 before
+\&.ds u2 in
+\&.ds u3 after
+\&.ie n \[rs]*[u1]\[rs]f[I]\[rs]*[u2]\[rs]f[P]\[rs]*[u3]
+\&.el \[rs]*[u1]\[rs]Z\[aq]\[rs]*[u2]\[aq]\[rs]v\[aq].25m\[aq]\[rs]D\
+\[aq]l \[rs]w\[aq]\[rs]*[u2]\[aq]u 0\[aq]\[rs]v\[aq]\-.25m\[aq]\[rs]*\
+[u3]
+.EE
+.RE
+.
+Due to
+.BR doclifter ,
+it might be necessary to change the variable writing
+.B \e[xy]
+and
+.B \e*[xy]
+into the strange ancient writing
+.B \e*(xy
+and
+.BR \e(xy ,
+and so on.
+.
+.
+.P
+Then these lines could look like
+.RS
+.EX
+\&.ds u1 before
+\&.ds u2 in
+\&.ds u3 after
+\&.ie n \[rs]*[u1]\[rs]fI\[rs]*(u2\[rs]fP\[rs]*(u3
+\&.el \[rs]*(u1\[rs]Z\[aq]\[rs]*(u2\[aq]\[rs]v\[aq].25m'\[rs]D\[aq]l \
+\[rs]w\[aq]\[rs]*(u2\[aq]u 0\[aq]\[rs]v\[aq]\-.25m\[aq]\[rs]*(u3
+.EE
+.RE
+.
+.
+.P
+The result looks like
+.RS
+.ft CR
+before
+\z\[ul]i\
+\z\[ul]n
+after
+.ft R
+.RE
+.
+.
+.\" ====================================================================
+.SS Underlining with Overstriking \ez and \e(ul
+.\" ====================================================================
+.
+There is another possibility for underlining by using overstriking
+with
+.BI \ez c
+(print
+.I c
+with zero width without spacing) and
+.B \e(ul
+(underline character).
+.
+This produces the underlining of 1 character, both in
+.B nroff
+and in
+.BR troff .
+.
+.
+.P
+For example the underlining of a character say
+.B t
+looks like
+.B \ez\e[ul]t
+or
+.B \ez\e(ult
+.
+.
+.P
+Longer words look then a bit strange, but a useful mode is to write
+each character into a whole own line.
+.
+To underlines the 3 character part "tar" of the word "start":
+.
+.RS
+.EX
+.br
+before s\[rs]
+\[rs]z\[rs][ul]t\[rs]
+\[rs]z\[rs][ul]a\[rs]
+\[rs]z\[rs][ul]r\[rs]
+t after
+.EE
+.RE
+.
+or
+.
+.RS
+.EX
+.br
+before s\[rs]
+\[rs]z\[rs](ult\[rs]
+\[rs]z\[rs](ula\[rs]
+\[rs]z\[rs](ulr\[rs]
+t after
+.EE
+.RE
+.
+.
+.P
+The result looks like
+.RS
+.ft CR
+before s\
+\z\[ul]t\
+\z\[ul]a\
+\z\[ul]r\
+t after
+.ft R
+.RE
+.
+.\" ====================================================================
+.SH COMPATIBILITY
+.\" ====================================================================
+.
+The differences between the groff language and classical troff as
+defined by
+[CSTR\~#54]
+are documented in
+.BR groff_diff (7).
+.
+.
+.P
+The groff system provides a compatibility mode, see
+.BR groff (1)
+on how to invoke this.
+.
+.
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+This document was written by
+.MT groff\-bernd.warken\-72@\:web.de
+Bernd Warken
+.ME .
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
+.
+.IR "Groff: The GNU Implementation of troff" ,
+by Trent A.\& Fisher and Werner Lemberg,
+is the primary
+.I groff
+manual.
+.
+You can browse it interactively with \(lqinfo groff\(rq.
+.
+Besides the gory details, it contains many examples.
+.
+.
+.TP
+.BR groff (1)
+the usage of the groff program and pointers to the documentation and
+availability of the groff system.
+.
+.TP
+.BR groff_diff (7)
+describes the differences between the groff language and classical
+troff.
+.
+.IP
+This is the authoritative document for the predefined language
+elements that are specific to groff.
+.
+.TP
+.BR groff_char (7)
+the predefined groff special characters (glyphs).
+.
+.TP
+.BR groff_font (5)
+the specification of fonts and the DESC file.
+.
+.TP
+.BR groff_tmac (5)
+contains an overview of available groff macro packages, instructions on
+how to interface them with a document, guidance on writing macro
+packages and using diversions, and historical information on macro
+package naming conventions.
+.TP
+.BR roff (7)
+the history of roff, the common parts shared by all roff systems, and
+pointers to further documentation.
+.
+.TP
+[CSTR\~#54]
+.UR http://\:cm.bell\-labs.com/\:cm/\:cs/\:cstr/\:54.ps.gz
+Nroff/\:Troff User's Manual by Ossanna & Kernighan
+.UE
+\[em] the bible for classical troff.
+.
+.TP
+.I Wikipedia
+article about
+.I groff
+.UR https://\:en.wikipedia.org/\:wiki/\:Groff_%28software%29
+.UE .
+.
+.TP
+.I Tutorial about groff
+.UR dl.dropbox.com/\:u/\:4299293/\:grofftut.pdf
+Manas Laha - An Introduction to the GNU Groff Text Processing System
+.UE
+.
+.TP
+.I troff.org
+This is a collection of internet sites with classical
+.I roff
+documentations and other information.
+.
+.
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[groff_7_C]
+.
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72: