diff options
Diffstat (limited to 'contrib/groff/man/groff.man')
-rw-r--r-- | contrib/groff/man/groff.man | 3067 |
1 files changed, 1790 insertions, 1277 deletions
diff --git a/contrib/groff/man/groff.man b/contrib/groff/man/groff.man index c20cf079770f..1e9128dbdd1d 100644 --- a/contrib/groff/man/groff.man +++ b/contrib/groff/man/groff.man @@ -1,16 +1,19 @@ '\" t .ig -groff.7 +groff.man + +Last update: 29 June 2002 This file is part of groff, the GNU roff type-setting system. -Copyright (C) 2000, 2001 Free Software Foundation, Inc. +Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. written by Bernd Warken <bwarken@mayn.de> +maintained by Werner Lemberg <wl@gnu.org> Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the -Invariant Sections being this .ig-section and AUTHOR, with no +Invariant Sections being this .ig-section and AUTHORS, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the Free Documentation License is included as a file called @@ -21,6 +24,8 @@ FDL in the main directory of the groff source package. .\" Setup .\" -------------------------------------------------------------------- . +.mso www.tmac +. .if n \{\ . mso tty-char.tmac . ftr CR R @@ -32,243 +37,281 @@ FDL in the main directory of the groff source package. . ftr CB CW .\} . -.\" a comment macro which does nothing -.de c -.. -. -.\" a tab string -.ds t "\t . +.\" -------------------------------------------------------------------- +.\" start of macro definitions .eo . -.c text lines in macro definitions or bracketed sections \{...\} -.de text -. if 1 \&\$*\& +.de c .. . -.de option -. ds @tmp@ \f(CB\$1\fP -. shift 1 -. text \*[@tmp@]\$* -. rm @tmp@ +.de TPx +. TP 10n +.. +.c --------------------------------------------------------------------- +.c .Text anything ... +.c +.c All arguments are printed as text. +.c +.de Text +. nop \)\$* +.. +.c --------------------------------------------------------------------- +.c .ExecFF macro font1 font2 text1 text2 text1 text2 ... +.c +.c Concat text arguments using alternating fonts and feed into macro. +.c For a trailing punctuation, terminate the call with \c. +.c +.de ExecFF +. if (\n[.$] < 4) \ +. return +. ds @a\" +. ds @m \$1\" +. ds @f1 \$2\" +. ds @f2 \$3\" +. shift 3 +. ds @s\" +. while 1 \{\ +. if (\n[.$] = 0) \ +. break +. ds @a \$1\" +. as @s \f[\*[@f1]]\*[@a]\f[]\" +. shift +. if (\n[.$] = 0) \ +. break +. ds @a \$1\" +. as @s \f[\*[@f2]]\*[@a]\f[]\" +. shift +. \} +. \*[@m] "\*[@s]\f[R]" +. ft P \" to make \c happy +. rm @m +. rm @s +. rm @a +. rm @f1 +. rm @f2 .. . -.als shellcommand option +.c --------- command line option --------- +. +.de option +. Text \f[CB]\$* +. ft P +.. . .c --------- characters --------- . .de character -. ds @tmp@ \f(CB\$1\fP -. shift -. text \*[@tmp@]\$* -. rm @tmp@ +. ExecFF Text CB R \$* .. -. -.de 'char -. ds @tmp@ \(oq\f(CB\$1\fP\(cq +.de squoted_char +. ds @1 \$1\" . shift -. text \*[@tmp@]\$* -. rm @tmp@ +. ExecFF Text R CB \[oq] \*[@1] "\[cq]\$*" +. rm @1 .. -. -.de ''char -. ds @tmp@ \(lq\f(CB\$1\fP\(rq +.de dquoted_char +. ds @1 \$1\" . shift -. text \*[@tmp@]\$* -. rm @tmp@ +. ExecFF Text R CB \[lq] \*[@1] "\[rq]\$*" +. rm @1 .. -. .c --------- requests --------- . -.c request synopsis +.c synopsis of a request .de REQ -. ds @tmp@ \&\$1 +. if (\n[.$] = 0) \ +. return +. ds @1 \$1\" . shift 1 -. IP "\f(CB\&\*[@tmp@] \fP\f(CI\&\$*\fP" 10n -. rm @tmp@ -.. -. -.de request -. ds @tmp@ \f(CB\$1\fP -. shift 1 -. text \*[@tmp@]\$* -. rm @tmp@ -.. -. -.c --------- macro or function arguments --------- -. -.de argument -. ds @tmp@ \f(CI\$1\fP -. shift 1 -. while (\n[.$] >= 2) \{\ -. as @tmp@ \/\f(CR\$1\fP\f(CI\,\$2\fP -. shift 2 +. ie (\n[.$] = 0) \{\ +. TP 10n +. Text \f[CB]\*[@1]\f[] . \} -. if \n[.$] .as @tmp@ \/\f(CR\$1\fP -. text \*[@tmp@] -. rm @tmp@ +. el \{\ +. TP 10n +. Text \f[CB]\*[@1]\~\f[]\f[I]\$*\f[] +. \} +. rm @1 .. -. -.c argument followed by a numerical expression -.de argterm -. ds @tmp@ \f(CI\$1\fP\|\f(CR\$2\fP -. shift 2 -. text \*[@tmp@]\$* -. rm @tmp@ +.c reference of a request +.de request +. BR \$* .. . .c --------- numerical elements --------- . -.de number -. ds @tmp@ \f(CR\$1\fP -. shift 1 -. text \*[@tmp@]\$* -. rm @tmp@ +.c number with a trailing unit +.de scalednumber +. Text \$1\^\f[CB]\$2\f[]\$3\f[R] +. ft P .. . -.de prefixednumber -. ds @tmp@ \&\$1\ \f(CR\$2\fP -. shift 2 -. text \*[@tmp@]\$* -. rm @tmp@ -.. -. -.als scaleindicator request -. -.de scalednumber -. ds @tmp@ \f(CR\$1\fP\f(CB\$2\fP -. shift 2 -. text \*[@tmp@]\$* -. rm @tmp@ +.c representation of units within the text +.de scaleindicator +. Text \f[CB]\$1\f[]\$2\f[R] +. ft P .. . +.c representation of mathematical operators within the text .de operator -. ds @tmp@ \(oq\f(CB\$1\fP\(cq -. shift -. text \*[@tmp@]\$* -. rm @tmp@ +. squoted_char \$@ .. . -.c --------- escape sequences --------- . -.de esc[arg] -. ds @tmp@ \f(CB\(rs\$1[\fP\f(CI\$2\fP\f(CB]\fP -. shift 2 -. text \*[@tmp@]\$* -. rm @tmp@ -.. +.c --------- escape sequences --------- . -.de esc(arg -. ds @tmp@ \f(CB\(rs\$1(\fP\f(CI\$2\fP -. shift 2 -. text \*[@tmp@]\$* -. rm @tmp@ +.c --------------------------------------------------------------------- +.c .ESC name [arg] +.c +.c Synopsis of an escape sequence, optionally with argument +.c Args : 1 or 2; `name' obligatory, `arg' optional +.c name : suitable name for an escape sequence (c, (xy, [long]) +.c arg : arbitrary word +.c Result : prints \namearg, where `name' is in CB, `arg' in I +.c +.de ESC +. if (\n[.$] < 1) +. ab .ESC needs 1 or 2 arguments. +. ExecFF IP CB I "\[rs]\$1" "\,\$2\/" .. -. -.de escarg -. ds @tmp@ \f(CB\(rs\$1\fP\f(CI\$2\fP -. shift 2 -. text \*[@tmp@]\$* -. rm @tmp@ +.c --------------------------------------------------------------------- +.c .ESC[] name arg +.c +.c Synopsis for escape sequence with a bracketed long argument +.c Args : 2 obligatory +.c name : suitable name for an escape sequence (c, (xy, [long]) +.c arg : arbitrary text +.c Result : prints \name[arg], where `name' is in CB, `arg' in I +.c +.de ESC[] +. if !(\n[.$] = 2) \ +. ab .ESC[] needs exactly 2 arguments. +. ExecFF IP CB I "\[rs]\$1\[lB]" "\h'-0.2m'\$2\h'-0.15m'" \[rB] .. -. -.de esc[] -. ds @tmp@ \f(CB\(rs[\fP\f(CI\$1\fP\f(CB]\fP -. shift -. text \*[@tmp@]\$* -. rm @tmp@ +.c --------------------------------------------------------------------- +.c .ESCq name arg +.c +.c Synopsis for escape sequence with a bracketed long argument +.c Args : 2 obligatory +.c name : suitable name for an escape sequence (c, (xy, [long]) +.c arg : arbitrary text +.c Result : prints \name'arg', where `name' is in CB, `arg' in I +.c +.de ESCq +. if !(\n[.$] = 2) \ +. ab .ESCq needs exactly 2 argument. +. ExecFF IP CB I "\[rs]\$1\[cq]" "\h'-0.3m'\$2" \[cq] .. -. -.de esc( -. ds @tmp@ \f(CB\(rs(\fP\f(CI\$1\fP -. shift -. text \*[@tmp@]\$* -. rm @tmp@ +.c --------------------------------------------------------------------- +.c .ESC? arg +.c +.c Synopsis for escape sequence with a bracketed long argument +.c Args : 1 obligatory +.c arg : arbitrary text +.c Result : prints `\?arg?', where the `?' are in CB, `arg' in I +.c +.de ESC? +. if !(\n[.$] = 1) \ +. ab .ESC? needs exactly 1 arguments. +. ExecFF IP CB I \[rs]? "\$1" ? .. -. +.c --------------------------------------------------------------------- +.c .esc name [punct] +.c +.c Reference of an escape sequence (no args), possibly punctuation +.c Args : 1 obligatory +.c name : suitable name for an escape sequence (c, (xy, [long]) +.c punct : arbitrary +.c Result : prints \name, where `name' is in B, `punct' in R +.c .de esc -. ds @tmp@ \f(CB\(rs\$1\fP -. shift -. text \*[@tmp@]\$* -. rm @tmp@ +. if (\n[.$] < 1) \ +. ab .esc needs 1 or 2 arguments. +. BR "\[rs]\$1" \$2 .. -. -.de (esc -. ds @tmp@ \f(CB\(rs(\$1\fP -. shift -. text \*[@tmp@]\$* -. rm @tmp@ +.c --------------------------------------------------------------------- +.c .escarg name arg [punct] +.c +.c Reference of an escape sequence (no args) +.c Args : 1 obligatory, 1 optional +.c name : suitable name for an escape sequence (c, (xy, [long]) +.c arg : arbitrary word +.c Result : prints \namearg, where +.c `name' is in B, `arg' in I +.c +.de escarg +. if (\n[.$] < 2) \ +. ab .esc needs 2 or 3 arguments. +. Text \f[B]\[rs]\$1\f[]\f[I]\$2\f[]\$3 .. -. -.de [esc] -. ds @tmp@ \f(CB\(rs[\$1]\fP -. shift -. text \*[@tmp@]\$* -. rm @tmp@ +.c --------------------------------------------------------------------- +.c .esc[] name arg [punct] +.c +.c Reference for escape sequence with a bracketed long argument +.c Args : 2 obligatory +.c name : suitable name for an escape sequence (c, (xy, [long]) +.c arg : arbitrary text +.c Result : prints \name[arg], where `name' is in CB, `arg' in CI +.c +.de esc[] +. if (\n[.$] < 2) \ +. ab .esc[] needs 2 or 3 arguments. +. Text \f[B]\[rs]\$1\[lB]\f[]\f[I]\$2\f[]\f[B]\[rB]\f[]\$3 .. . -.c escape sequence synopsis -.de ESC -. ds @tmp@ \&\$1 -. shift 1 -. IP "\f(CB\(rs\&\*[@tmp@]\fP\f(CI\&\$*\fP" -. rm @tmp@ +.c --------------------------------------------------------------------- +.c .escq name arg +.c +.c Reference for escape sequence with a bracketed long argument +.c Args : 2 obligatory +.c name : suitable name for an escape sequence (c, (xy, [long]) +.c arg : arbitrary text +.c Result : prints \name'arg', where `name' is in CB, `arg' in CI +.c +.de escq +. if (\n[.$] < 2) \ +. ab .escq needs 2 arguments. +. Text \f[B]\[rs]\$1\[cq]\f[]\f[I]\$2\f[]\f[B]\[cq]\f[]\$3 .. . -.c synopsis for escape sequences with a long name -.de ESC[] -. ds @arg1@ \&\$1 -. ds @arg2@ \&\$2 -. shift 2 -. IP "\f(CB\(rs\&\*[@arg1@][\fP\f(CI\&\*[@arg2@]\fP\f(CB]\&\$*\fP" -. rm @arg1@ -. rm @arg2@ -.. +.c --------- strings --------- . -.c synopsis escape sequence with quoted argument -. de ESCq -. ds @tmp@ \&\$1 +.c synopsis for string, with \*[] +.de STRING +. ds @1 \$1\" . shift 1 -. IP "\f(CB\(rs\&\*[@tmp@]\(cq\fP\f(CI\h'-0.2m'\$*\/\fP\f(CB\(cq\fP" -. rm @tmp@ +. TP 10n +. ExecFF Text R CB \[rs]*[ \*[@1]\f[]\f[R]] \$* +. rm @1 .. -. -.c synopsis for 2-escapes (special characters) -.de ESc -. ds @tmp@ \$1 -. TP 14n -. text \f(CB\(rs(\&\*[@tmp@]\ \ \ \fP\fR\(\*[@tmp@]\fP -. shift 1 -. text \$*. -. rm @tmp@ +.c synopsis for a long string +.de string +. if (\n[.$] = 0) \ +. return +. Text \f[CB]\[rs]*\[lB]\$1\[rB]\f[]\$2 .. . +. .c --------- registers --------- . -.c synopsis for registers +.c synopsis for registers, with \n[] .de REG -. TP 10n -. text \&\f(CR\(rsn[\fP\f(CB\$1\fP\f(CR]\fP +. ds @1 \$1\" . shift 1 -.if \n[.$] \&\$* +. TP 10n +. ExecFF Text R CB \[rs]n[ \*[@1]\f[]\f[R]] \$* +. rm @1 .. -. -.als register request -. -.c --------- warnings --------- -. -.als warning request -. -.c description of warnings -.de Warning -. ne (2v + 1) -. TP 12n -. text \f(CB\$1\fP -. text \f(CI\$2\fP -. br +.c reference of a register, without decoration +.de register +. Text register +. BR \$* .. . .ec +.\" end of macro definitions +. . .\" -------------------------------------------------------------------- .\" Title @@ -278,33 +321,43 @@ FDL in the main directory of the groff source package. .SH NAME groff \- a short reference for the GNU roff language . +. .\" -------------------------------------------------------------------- .SH DESCRIPTION .\" -------------------------------------------------------------------- +. +The name .I groff stands for .I GNU roff and is the free implementation of the roff type-setting system. +. See .BR roff (@MAN7EXT@) for a survey and the background of the groff system. -.LP +. +.P This document gives only short descriptions of the predefined roff language elements as used in groff. +. Both the classical features and the groff extensions are provided. -.LP +. +.P Historically, the .I roff language was called .IR troff . .I groff -is compatible with the classical system and provides proper extensions. +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 @@ -312,255 +365,329 @@ slightly tends to refer more to the classical aspects, whereas emphasizes the GNU extensions, and .I roff is the general term for the language. -.LP -This file is only a short version of the complete documentation that is -found in the +. +.P +This file is only a short version of the complete documentation that +is found in the .I groff .BR info (1) file, which contains more detailed, actual, and concise information. -.LP +. +.P The general syntax for writing groff documents is relatively easy, but writing extensions to the roff language can be a bit harder. -.LP +. +.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 -.''char . +.dquoted_char . or a single quote -.''char ' ; +.dquoted_char ' ; all other lines are text lines. -.LP +. +.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 blanks from the command name and among themselves, for example, .RS -.LP -\&\.command_name arg1 arg2 +. +.P +.Text .command_name arg1 arg2 .RE -.LP +. +.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. -.LP +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 will be printed. They can be modified by escape sequences, which are recognized by a leading backslash -.'char \(rs . +.squoted_char \[rs] . These are in-line or even in-word formatting elements or functions. +. Some of these take arguments separated by single quotes -.''char ' , +.dquoted_char ' , others are regulated by a length encoding introduced by an open parenthesis -.'char ( +.squoted_char ( or enclosed in brackets -.'char [ +.squoted_char [ and -.'char ] . -.LP +.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" . -.LP +. +.P The copy mode behavior 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 . +.esc (rs +or +.esc [rs] . .IP 2. Double all backslashes. .IP 3. Begin all text lines with the special non-spacing character .esc & . -.LP +. +.P This does not produce the most efficient code, but it should work as a first measure. +. For better strategies, see the groff info file and .BR groff_tmac (@MAN5EXT@). -.LP +. +.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. -.LP +. +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 -.'char . +.squoted_char . or a -.''char ' , +.dquoted_char ' , whereas .B Escape sequences are in-line functions and in-word formatting elements starting with a backslash -.'char \(rs . -.LP +.squoted_char \[rs] . +. +.P The user can define her own formatting commands using the -.request .de -request. These commands are called +.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. +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. -.LP +. +.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. -.LP +. +.P .B String variables store character sequences. +. They are set with the -.request .ds +.request ds request and retrieved by the .esc * escape sequences. -.LP +. +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 nr request and retrieved by the .esc n escape sequences. -.LP +. +.P .B Environments allow the user to temporarily store global formatting parameters like -line length, font size, etc. for later reuse. +line length, font size, etc.\& for later reuse. +. This is done by the -.request .ev +.request ev request. -.LP +. +.P .B Fonts are identified either by a name or by an internal number. +. The current font is chosen by the -.request .ft +.request ft request or by the .esc f escape sequences. -Each device has special fonts, but the following fonts are available for -all devices. +. +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 -is everywhere available, but on text devices, it is displayed as an +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 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 characters have a constant width anyway. -.LP +. +.P Moreover, there are some advanced roff elements. +. A .B diversion stores information into a macro for later usage. +. 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. -.LP -More detailed information can be found in the groff info file. +. +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 groff info +file. +. . .\" -------------------------------------------------------------------- .SH "CONTROL CHARACTERS" .\" -------------------------------------------------------------------- -There is a small set of characters that have a special controlling task -in certain conditions. +. +There is a small set of characters that have a special controlling +task in certain conditions. +. .TP .character . A dot is only special at the beginning of a line or after the condition in the requests -.request .if , -.request .ie , -.request .el , +.request if , +.request ie , +.request el , and -.request .while . +.request while . There it is the control character that introduces a request (or macro). +. The special behavior can be delayed by using the .esc . escape. +. By using the -.request .cc +.request cc request, the control character can be set to a different character, making the dot -.'char . +.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. +. +In text paragraphs, it is advantageous to start each sentence at a +line of its own. +. .TP .character ' -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. +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 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 will 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 -.character \(dq -The double quote is used to enclose arguments in requests and macros. In -the -.request .ds +.character \[dq] +The double quote is used to enclose arguments in requests, macros, and +strings. +. +In the +.request ds and -.request .as +.request as requests, a leading double quote in the argument will be stripped off, -making everything else afterwards the string to be defined (enabling leading -whitespace). +making everything else afterwards the string to be defined (enabling +leading whitespace). +. The escaped double quote -.esc \(dq +.esc \[dq] introduces a comment. +. Otherwise, it is not special. +. Groff provides a printable representation with the .esc (dq escape sequence. +. .TP -.character \(rs +.character \[rs] 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 @@ -570,261 +697,435 @@ escape; a backslash glyph can be obtained by The open parenthesis is only special in escape sequences when introducing an escape name or argument consisting of exactly two characters. -In groff, this behavior can be replaced by the \f(CB[]\fP construct. +. +In groff, this behavior can be replaced by the \f[CB][]\f[] construct. .TP .character [ -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. +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 .character ] -The closing bracket is only special in groff escape sequences; there it -terminates a long escape name or long escape argument. +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(CIspace\fP -Space characters are only functional characters. They separate the -arguments in requests or macros, and the words in text lines. +\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 -.'char "\(rs\ " +.squoted_char "\[rs]\ " (this is the escape character followed by a space), .esc | , .esc ^ , or .esc h should be used. -.IP \f(CInewline\fP +. +.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 -.'char \(rs +.squoted_char \[rs] as the last character of a line. -.IP \f(CItab\fP -If a tab character occurs during text the interpreter makes a horizontal -jump to the next pre-defined tab position. +.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 -scale indicator. +scaling indicator. +. A -.B scale indicator +.B scaling indicator is a one-character abbreviation for a unit of measurement. -A number followed by a scale indicator signifies a size value. -By default, numerical values do not have a scale indicator, i.e., they are -normal numbers. -.LP -The roff language defines the following scale indicators. -.LP -.na -.nh -.TS -center, tab(@); -LfCB Lw(4i). -c@Centimeter -i@Inch -P@Pica\ \(eq\ 1/6\ inch -p@Point\ \(eq\ 1/72\ inch -m@T{ -Em\ \(eq\ \fRthe font size in points (width of letter `\f(CRm\fR') -T} -M@100th \fRof an \f(CREm -n@En\ \(eq\ Em/2 -u@\fRBasic unit for actual output device -v@\fRVertical line space in basic units -z@T{ -scaled point\ \(eq\ 1/\f(CIsizescale\fR of a point (defined in -font \fIDESC\fP file) -T} -.TE -.LP -.ad -.hy +. +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 (width of letter `\f[CR]m\f[R]') +. +.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 +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 arithmetical operators -.operator + , -.operator \- , -.operator * , -.operator / , -.operator % -.RI ( modulo ), -the comparative operators -.operator == -(this is the same as -.operator = ), -.operator <= , -.operator >= , -.operator < , -.operator > , -the logical operators -.operator & -.RI ( and ), -.operator : -.RI ( or ), -.operator ! -.RI ( not ), -and the parentheses -.operator ( -and -.operator ) . -.LP +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: -.LP -.na -.nh -.TS -center, tab(@); -LfCB Lw(4i). -e1\f(CB>?\fPe2@The maximum of \f(CIe1\fP and \f(CIe2\fP. -e1\f(CB<?\fPe2@The minimum of \f(CIe1\fP and \f(CIe2\fP. -\f(CB(\fPc\f(CB;\fPe\f(CB)@T{ -Evaluate \f(CIe\fP using \f(CIc\fP as the default scaling -indicator. -T} -.TE -.LP -.ad -.hy +. +.P +.PD 0 +.RS +. +.TPx +.ExecFF Text I CB e1 >? e2 +The maximum of +.I e1 +and +.IR e2 . +. +.TPx +.ExecFF Text I CB e1 <? e2 +The minimum of +.I e1 +and +.IR e2 . +. +.TPx +.ExecFF Text CB I ( c ; e ) +Evaluate +.I e +using +.I c +as the default scaling indicator. +. +.RE +.PD +. +.P For details see the groff info file. . +. .\" -------------------------------------------------------------------- .SH CONDITIONS .\" -------------------------------------------------------------------- +. .B Conditions occur in tests raised by the -.request .if , -.request .ie , +.request if , +.request ie , and the -.request .while +.request while requests. +. The following table characterizes the different types of conditions. -.LP -.na -.nh -.TS -center, tab(@); -LfCB Lw(4i). -\f(CIN\fP@T{ -A numerical expression \f(CIN\fP yields true if its value -is\ \f(CR>0\fP. -T} -!\f(CIN\fP@T{ -True if the value of \f(CIN\fP is\ \f(CR\(<=0\fP. -T} -\&'\f(CIs1\fP'\f(CIs2\fP'@T{ -True if string\ \f(CIs1\fP is identical to string\ \f(CIs2\fP. -T} -!'\f(CIs1\fP'\f(CIs2\fP'@T{ -True if string\ \f(CIs1\fP is not identical to string\ \f(CIs2\fP. -T} -c\f(CIch@T{ -True if there is a character\ \f(CIch\fP available. -T} -d\f(CIname@T{ -True if there is a string, macro, diversion, or request -called \f(CIname\fP. -T} -e@Current page number is even. -o@Current page number is odd. -n@Formatter is \fBnroff\fP. -r\f(CIreg@T{ -True if there is a register named \f(CIreg\fP. -T} -t@Formatter is \fBtroff\fR. -.TE -.LP -.ad -.hy +. +.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 I +is\~0. +. +.TPx +.BI ' s1 ' s2 ' +True if string\~\c +.I s1 +is identical to string\~\c +.IR s2 . +. +.TPx +.BI !' s1 ' s2 ' +True if string\~\c +.I s1 +is not identical to string\~\c +.IR s2 . +. +.TPx +.BI c ch +True if there is a character\~\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 . +. +.RE +.PD +. . .\" -------------------------------------------------------------------- .SH REQUESTS .\" -------------------------------------------------------------------- +. This section provides a short reference for the predefined requests. +. In groff, request and macro names can be arbitrarily long. +. No bracketing or marking of long names is needed. -.LP +. +.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. -An argument can be enclosed by a pair of double quotes: This is very handy -if an argument contains space characters, e.g., -.argument "\(dqarg\ with\ space\(dq" +. +The arguments are separated by space characters (no tabs!); there is +no inherent limit for their length or number. +. +An argument can be enclosed by a pair of double quotes. +. +This is very handy if an argument contains space characters, e.g., +.RI \[dq] "arg with space" \[dq] denotes a single argument. -.LP +. +.P Some requests have optional arguments with a different behaviour. +. Not all of these details are outlined here. -Refer to the groff info file for all details. -.LP -In the following request specifications, most argument names were chosen -to be descriptive. +. +Refer to the groff info file and +.BR groff_diff (@MAN7EXT@) +for all details. +. +.P +In the following request specifications, most argument names were +chosen to be descriptive. +. Only the following denotations need clarification. -.LP -.na -.nh -.TS -center, tab(@); -LfCI Lw(4i). -c@denotes a single character. -font@T{ +. +.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. -T} -anything@T{ -all characters up to the end of the line or within \f(CB\(rs{\fP -and \f(CB\(rs}\fP. -T} -n@T{ +. +.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. -T} -N@T{ +. +.TPx +.I N is an arbitrary numerical expression, signed or unsigned. -T} -\(+-N@T{ +. +.TPx +.I \[+-]N has three meanings depending on its sign, described below. -T} -.TE -.LP -.ad -.hy +. +.RE +.PD +. +.P If an expression defined as -.argument \(+-N +.I \[+-]N starts with a -.operator + +.squoted_char + sign the resulting value of the expression will be added to an already -existing value inherent to the related request, e.g. adding to a number +existing value inherent to the related request, e.g.\& adding to a number register. +. If the expression starts with a -.operator - +.squoted_char - the value of the expression will be subtracted from the request value. -.LP +. +.P Without a sign, -.argument N +.I N replaces the existing value directly. -To assign a negative number either prepend\ \c -.number 0 -or enclose the negative number in parentheses. +. +To assign a negative number either prepend\~0 or enclose the negative +number in parentheses. +. . .\" -------------------------------------------------------------------- -.SS "REQUEST SHORT REFERENCE" +.SS "Request Short Reference" .\" -------------------------------------------------------------------- +. .PD 0 . .REQ . -Empty line, ignored. Useful for structuring documents. +Empty line, ignored. . -.REQ .\(rs\(dq anything +Useful for structuring documents. +. +.REQ .\[rs]\[dq] anything Complete line is a comment. . .REQ .ab string Print -.argument string +.I string on standard error, exit program. . .REQ .ad @@ -832,38 +1133,53 @@ Begin line adjustment for output lines in current adjust mode. . .REQ .ad c Start line adjustment in mode -.argument c -(\f(CIc\fP\f(CR\|\^\(eq\|l,r,b,n\fP). +.I c +(\f[CI]c\f[]\f[CR]\|\^\[eq]\|l,r,b,n\f[]). . .REQ .af register c Assign format -.argument c +.I c to -.argument register -(\f(CIc\fP\f(CR\|\^\(eq\|l,i,I,a,A\fP). +.I register +(\f[CI]c\f[]\f[CR]\|\^\[eq]\|l,i,I,a,A\f[]). . .REQ .aln alias register Create alias name for -.argument register . +.IR register . . .REQ .als alias object Create alias name for request, string, macro, or diversion -.argument object . +.IR object . . .REQ .am macro Append to -.argument macro +.I macro until -.request .. -is called. +.B ..\& +is encountered. . .REQ .am macro end Append to -.argument macro +.I macro until .request .end is called. . +.REQ .ami macro +Append to a macro whose name is contained in the string register +.I macro +until +.B ..\& +is encountered. +. +.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. +. .REQ .am1 macro Same as .request .am @@ -876,43 +1192,48 @@ but with compatibility mode switched off during macro expansion. . .REQ .as stringvar anything Append -.argument anything +.I anything to -.argument stringvar . +.IR stringvar . . .REQ .asciify diversion Unformat ASCII characters, spaces, and some escape sequences in -.argument diversion . +.IR diversion . +. +.REQ .as1 stringvar anything +Same as +.request .as +but with compatibility mode switched off during string expansion. . .REQ .backtrace Print a backtrace of the input on stderr. . .REQ .bd font N Embolden -.argument font +.I font by -.argterm N -1 +.IR N -1 units. . .REQ .bd S font N Embolden Special Font -.argument S +.I S when current font is -.argument font . +.IR font . . .REQ .blm Unset the blank line macro. . .REQ .blm macro Set the blank line macro to -.argument macro . +.IR macro . . .REQ .box End current diversion. . .REQ .box macro Divert to -.argument macro , +.IR macro , omitting a partially filled line. . .REQ .boxa @@ -920,15 +1241,15 @@ End current diversion. . .REQ .boxa macro Divert and append to -.argument macro , +.IR macro , omitting a partially filled line. . .REQ .bp Eject current page and begin new page. . -.REQ .bp \(+-N +.REQ .bp \[+-]N Eject current page; next page number -.argument \(+-N . +.IR \[+-]N . . .REQ .br Line break. @@ -943,62 +1264,70 @@ Break out of a while loop. . .REQ .c2 Reset no-break control character to -.''char ' . +.dquoted_char ' . . .REQ .c2 c Set no-break control character to -.argument c . +.IR c . . .REQ .cc Reset control character to -.'char . . +.squoted_char . . . .REQ .cc c Set control character to -.argument c . +.IR c . . .REQ .ce Center the next input line. . .REQ .ce N Center following -.argument N +.I N input lines. . .REQ .cf filename Copy contents of file -.argument filename +.I filename unprocessed to stdout or to the diversion. . -.REQ .cflags mode c1 c2 ... +.REQ .cflags mode c1 c2 .\|.\|.\& Treat characters -.argument c1 , -.argument c2 , -.argument ... +.IR c1 , +.IR c2 , +.I .\|.\|.\& according to -.argument mode +.I mode number. . .REQ .ch trap N Change -.argument trap +.I trap location to -.argument N . +.I N . . .REQ .char c anything Define character -.argument c -to string -.argument anything . +.I c +as string +.IR anything . . .REQ .chop object Chop the last character off macro, string, or diversion -.argument object . +.IR object . . .REQ .close stream Close the -.argument stream . +.IR stream . +. +.REQ .color +Enable colors. +. +.REQ .color N +If +.I N +is zero disable colors, otherwise enable them. . .REQ .continue Finish the current iteration of a while loop. @@ -1013,11 +1342,11 @@ is zero disable compatibility mode, otherwise enable it. . .REQ .cs font N M Set constant character width mode for -.argument font +.I font to -.argterm N /36 +.IR N /36 ems with em -.argument M . +.IR M . . .REQ .cu N Continuous underline in nroff, like @@ -1029,18 +1358,18 @@ End current diversion. . .REQ .da macro Divert and append to -.argument macro . +.IR macro . . .REQ .de macro Define or redefine -.argument macro +.I macro until -.request .. -is called. +.B ..\& +is encountered. . .REQ .de macro end Define or redefine -.argument macro +.I macro until .request .end is called. @@ -1055,18 +1384,41 @@ Same as .request .de but with compatibility mode switched off during macro expansion. . +.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. +. .REQ .dei macro Define or redefine a macro whose name is contained in the string register -.argument macro +.I macro until -.request .. -is called. +.B ..\& +is encountered. . .REQ .dei macro end Define or redefine a macro indirectly. -.argument macro +.I macro and -.argument end +.I end are string registers whose contents are interpolated for the macro name and the end macro, respectively. . @@ -1075,7 +1427,7 @@ End current diversion. . .REQ .di macro Divert to -.argument macro . +.I macro . . .REQ .do name Interpret @@ -1084,23 +1436,28 @@ with compatibility mode disabled. . .REQ .ds stringvar anything Set -.argument stringvar +.I stringvar to -.argument anything . +.IR anything . +. +.REQ .ds1 stringvar anything +Same as +.request .ds +but with compatibility mode switched off during string expansion. . .REQ .dt N trap Set diversion trap to position -.argument N -(default scale indicator\ \c +.I N +(default scaling indicator\~\c .scaleindicator v ). . .REQ .ec Reset escape character to -.'char \(rs . +.squoted_char \[rs] . . .REQ .ec c Set escape character to -.argument c . +.IR c . . .REQ .ecr Restore escape character saved with @@ -1111,12 +1468,12 @@ Save current escape character. . .REQ .el anything Else part for if-else (\c -.argument .ie ) +.request ie ) request. . .REQ .em macro The -.argument macro +.I macro will be run after the end of input. . .REQ .eo @@ -1127,12 +1484,12 @@ Switch to previous environment. . .REQ .ev env Push down environment number or name -.argument env +.I env and switch to it. . .REQ .evc env Copy the contents of environment -.argument env +.I env to the current environment. No pushing or popping. . @@ -1144,20 +1501,27 @@ Return to previous font family. . .REQ .fam name Set the current font family to -.argument name . +.IR name . . .REQ .fc Disable field mechanism. . .REQ .fc a Set field delimiter to -.argument a +.I a and pad character to space. +. .REQ .fc a b Set field delimiter to -.argument a +.I a and pad character to -.argument b . +.IR b . +. +.REQ .fchar c anything +Define fallback character +.I c +as string +.IR anything . . .REQ .fi Fill output lines. @@ -1167,112 +1531,123 @@ Flush output buffer. . .REQ .fp n font Mount -.argument font +.I font on position -.argument n . +.IR n . . .REQ .fp n internal external Mount font with long -.argument external +.I external name to short -.argument internal +.I internal name on position -.argument n . +.IR n . . -.REQ .fspecial font s1 s2... +.REQ .fspecial font s1 s2 .\|.\|.\& When the current font is -.argument font , +.IR font , then the fonts -.argument s1 , -.argument s2 , -.argument ... +.IR s1 , +.IR s2 , +.I .\|.\|.\& will be special. . .REQ .ft Return to previous font. Same as -.request \(rsfP . +.request \[rs]f[] +or +.request \[rs]fP . +. .REQ .ft font Change to font name or number -.argument font ; +.IR font ; same as -.esc[arg] f font +.esc[] f font escape sequence. . .REQ .ftr font1 font2 Translate -.argument font1 +.I font1 to -.argument font2 . +.IR font2 . . .REQ .hc Remove additional hyphenation indicator character. . .REQ .hc c -Set up additional hyphenation indicator character\ \c -.argument c . +Set up additional hyphenation indicator character\~\c +.IR c . . -.REQ .hcode c1 code1 c2 code2 ... +.REQ .hcode c1 code1 c2 code2 .\|.\|.\& Set the hyphenation code of character -.argument c1 +.I c1 to -.argument code1 , +.IR code1 , that of -.argument c2 +.I c2 to -.argument code2 , +.IR code2 , etc. . .REQ .hla lang Set the current hyphenation language to -.argument lang . +.IR lang . . .REQ .hlm n Set the maximum number of consecutive hyphenated lines to -.argument n . +.IR n . . .REQ .hpf file Read hyphenation patterns from -.argument file . +.IR file . +. +.REQ .hpfa file +Append hyphenation patterns from +.IR file . +. +.REQ .hpfcode file +Set input mapping for +.request .hpf . . .REQ .hw words List of -.argument words +.I words with exceptional hyphenation. . .REQ .hy N Switch to hyphenation mode -.argument N . +.IR N . . .REQ .hym n Set the hyphenation margin to -.argument n -(default scale indicator\ \c +.I n +(default scaling indicator\~\c .scaleindicator m ). . .REQ .hys n Set the hyphenation space to -.argument n . +.IR n . . .REQ .ie cond anything If -.argument cond +.I cond then -.argument anything +.I anything else goto .request .el . . .REQ .if cond anything If -.argument cond +.I cond then -.argument anything ; +.IR anything ; otherwise do nothing. . .REQ .ig Ignore text until -.request .. -is called. +.B ..\& +is encountered. . .REQ .ig end Ignore text until @@ -1281,36 +1656,44 @@ Ignore text until .REQ .in Change to previous indent value. . -.REQ .in \(+-N +.REQ .in \[+-]N Change indent according to -.argument \(+-N -(default scale indicator\ \c +.I \[+-]N +(default scaling indicator\~\c .scaleindicator m ). . .REQ .it N trap -Set an input-line count trap at position -.argument N . +Set an input-line count trap for the next +.I N +lines. +. +.REQ .itc N trap +Same as +.request .it +but count lines interrupted with +.esc c +as one line. . .REQ .kern Enable pairwise kerning. . .REQ .kern n If -.argument n +.I n is zero, disable pairwise kerning, otherwise enable it. . .REQ .lc Remove leader repetition character. . .REQ .lc c -Set leader repetition character to\ \c -.argument c . +Set leader repetition character to\~\c +.IR c . . .REQ .length register anything Write the length of the string -.argument anything +.I anything in -.argument register . +.IR register . . .REQ .linetabs Enable line-tabs mode (i.e., calculate tab positions relative to output @@ -1318,28 +1701,28 @@ line). . .REQ .linetabs n If -.argument n +.I n is zero, disable line-tabs mode, otherwise enable it. . .REQ .lf N file Set input line number to -.argument N +.I N and filename to -.argument file . +.IR file . . .REQ .lg N Ligature mode on if -.argterm N >0 . +.IR N >0. . .REQ .ll Change to previous line length. . -.REQ .ll \(+-N +.REQ .ll \[+-]N Set line length according to -.argument \(+-N +.I \[+-]N (default size .scalednumber 6.5 i , -default scale indicator\ \c +default scaling indicator\~\c .scaleindicator m ). . .REQ .ls @@ -1347,13 +1730,13 @@ Change to the previous value of additional intra-line skip. . .REQ .ls N Set additional intra-line skip value to -.argument N , +.IR N , i.e., -.argterm N -1 +.IR N -1 blank lines are inserted after each text output line. . -.REQ .lt \(+-N -Length of title (default scale indicator\ \c +.REQ .lt \[+-]N +Length of title (default scaling indicator\~\c .scaleindicator m ). . .REQ .mc @@ -1361,20 +1744,20 @@ Margin character off. . .REQ .mc c Print character -.argument c +.I c after each text line at actual distance from right margin. . .REQ .mc c N Set margin character to -.argument c +.I c and distance to -.argument N -from right margin (default scale indicator\ \c +.I N +from right margin (default scaling indicator\~\c .scaleindicator m ). . .REQ .mk register Mark current vertical position in -.argument register . +.IR register . . .REQ .mso file The same as the .so request except that @@ -1389,8 +1772,8 @@ Need a one-line vertical space. . .REQ .ne N Need -.argument N -vertical space (default scale indicator\ \c +.I N +vertical space (default scaling indicator\~\c .scaleindicator v ). . .REQ .nf @@ -1402,7 +1785,7 @@ No hyphenation. .REQ .nm Number mode off. . -.REQ .nm \(+-N M S I +.REQ .nm \[+-]N \fR[\fPM \fR[\fPS \fR[\fPI\fR]]]\fP In line number mode, set number, multiple, spacing, and indent. . .REQ .nn @@ -1410,20 +1793,20 @@ Do not number next line. . .REQ .nn N Do not number next -.argument N +.I N lines. . .REQ .nop anything Always execute -.argument anything . +.IR anything . . -.REQ .nr register \(+-N M +.REQ .nr register \[+-]N M Define or modify -.argument register +.I register using -.argument \(+-N +.I \[+-]N with auto-increment -.argument M . +.IR M . . .REQ .nroff Make the built-in condition @@ -1435,6 +1818,9 @@ false. .REQ .ns Turn no-space mode on. . +.REQ .nx +Immediately jump to end of current file. +. .REQ .nx filename Next file. . @@ -1452,19 +1838,28 @@ but append to it. . .REQ .os Output vertical distance that was saved by the -.request .sv +.request sv request. . +.REQ .output string +Emit +.I string +directly to intermediate output, allowing leading whitespace if +.I string +starts with +.character \[dq] +(which will be stripped off). +. .REQ .pc -Reset page number character to\ \c -.'char % . +Reset page number character to\~\c +.squoted_char % . . .REQ .pc c Page number character. . .REQ .pi program Pipe output to -.argument program +.I program (nroff only). . .REQ .pl @@ -1473,10 +1868,10 @@ Set page length to default The current page length is stored in .register .p . . -.REQ .pl \(+-N +.REQ .pl \[+-]N Change page length to -.argument \(+-N -(default scale indicator\ \c +.I \[+-]N +(default scaling indicator\~\c .scaleindicator v ). . .REQ .pm @@ -1485,47 +1880,58 @@ Print macro names and sizes (number of blocks of 128 bytes). .REQ ".pm t" Print only total of sizes of macros (number of 128 bytes blocks). . -.REQ .pn \(+-N +.REQ .pn \[+-]N Next page number -.argument N . +.IR N . . .REQ .pnr Print the names and contents of all currently defined number registers on stderr. . .REQ .po -Change to previous page offset. The current page offset is available in +Change to previous page offset. +. +The current page offset is available in .register .o . . -.REQ .po \(+-N +.REQ .po \[+-]N Page offset -.argument N . +.IR N . . .REQ .ps Return to previous point-size. -.REQ .ps \(+-N +.REQ .ps \[+-]N Point size; same as -.esc[arg] s \(+-N . +.esc[] s \[+-]N . . .REQ .psbb filename Get the bounding box of a PostScript image -.argument filename . +.IR filename . . .REQ .pso command This behaves like the -.request .so +.request so request except that input comes from the standard output of -.argument command . +.IR command . . .REQ .ptr Print the names and positions of all traps (not including input line traps and diversion traps) on stderr. . -.REQ .rchar c1 c2... +.REQ .pvs +Change to previous post-vertical line spacing. +. +.REQ .pvs \[+-]N +Change post-vertical line spacing according to +.I \[+-]N +(default scaling indicator\~\c +.scaleindicator p ). +. +.REQ .rchar c1 c2 .\|.\|.\& Remove the definitions of characters -.argument c1 , -.argument c2 , -.argument ... +.IR c1 , +.IR c2 , +.I .\|.\|.\& . .REQ .rd prompt Read insertion. @@ -1535,36 +1941,36 @@ Return from a macro. . .REQ .rj n Right justify the next -.argument n +.I n input lines. . .REQ .rm name Remove request, macro, or string -.argument name . +.IR name . . .REQ .rn old new Rename request, macro, or string -.argument old +.I old to -.argument new . +.IR new . . .REQ .rnn reg1 reg2 Rename register -.argument reg1 +.I reg1 to -.argument reg2 . +.IR reg2 . . .REQ .rr register Remove -.argument register . +.IR register . . .REQ .rs Restore spacing; turn no-space mode off. . -.REQ .rt \(+-N +.REQ .rt \[+-]N Return .I (upward only) -to marked vertical place (default scale indicator\ \c +to marked vertical place (default scaling indicator\~\c .scaleindicator v ). . .REQ .shc @@ -1573,13 +1979,20 @@ Reset soft hyphen character to . .REQ .shc c Set the soft hyphen character to -.argument c . +.IR c . . .REQ .shift n In a macro, shift the arguments by -.argument n \ \c +.IR n \~\c positions. . +.REQ .sizes s1 s2 .\|.\|.\& sn \fB[0]\fP +Set available font sizes similar to the +.B sizes +command in a +.B DESC +file. +. .REQ .so filename Include source file. . @@ -1588,43 +2001,53 @@ Skip one line vertically. . .REQ .sp N Space vertical distance -.argument N +.I N up or down according to sign of -.argument N -(default scaling indicator\ \c +.I N +(default scaling indicator\~\c .scaleindicator v ). . -.REQ .special s1 s2 ... +.REQ .special s1 s2 .\|.\|.\& Fonts -.argument s1 , -.argument s2 , -etc. are special and will be searched for characters not in the current font. +.IR s1 , +.IR s2 , +etc.\& are special and will be searched for characters not in the +current font. +. +.REQ .spreadwarn +Toggle the spread warning on and off without changing its value. +. +.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 ). . .REQ .ss N Space-character size set to -.argument N /12 +.IR N /12 of the spacewidth in the current font. . .REQ .ss N M Space-character size set to -.argterm N /12 +.IR N /12 and sentence space size set to -.argterm M /12 -of the spacewidth in the current font (\f(CR\(eq1/3 em\fP). +.IR M /12 +of the spacewidth in the current font (\f[CR]\[eq]1/3 em\f[]). . .REQ .sty n style Associate -.argument style +.I style with font position -.argument n . +.IR n . . -.REQ .substring register n1 n2 -Replace the string in -.argument register +.REQ .substring xx n1 n2 +Replace the string named +.I xx with the substring defined by the indices -.argument n1 +.I n1 and -.argument n2 . +.IR n2 . . .REQ .sv Save @@ -1633,36 +2056,36 @@ of vertical space. . .REQ .sv N Save the vertical distance -.argument N +.I N for later output with -.request .os +.request os request. . .REQ .sy command-line Execute program -.argument command-line . +.IR command-line . . .REQ ".ta T" N Set tabs after every position that is a multiple of -.argument N -(default scaling indicator\ \c +.I N +(default scaling indicator\~\c .scaleindicator m ). -.REQ .ta n1 n2 ... nn \f(CBT\fP r1 r2 ... rn +.REQ .ta n1 n2 .\|.\|.\& nn \f[CB]T\f[] r1 r2 .\|.\|.\& rn Set tabs at positions -.argument n1 , -.argument n2 , -\&..., -.argument nn , +.IR n1 , +.IR n2 , +.Text .\|.\|., +.IR nn , then set tabs at -.argument nn + r1 , -.argument nn + r2 , -\&..., -.argument nn + rn , +.IR nn + r1 , +.IR nn + r2 , +.Text .\|.\|., +.IR nn + rn , then at -.argument nn + rn + r1 , -.argument nn + rn + r2 , -\&..., -.argument nn + rn + rn , +.IR nn + rn + r1 , +.IR nn + rn + r2 , +.Text .\|.\|., +.IR nn + rn + rn , and so on. . .\".REQ .tar @@ -1674,32 +2097,33 @@ and so on. .REQ .tc Remove tab repition character. .REQ .tc c -Set tab repetition character to\ \c -.argument c . +Set tab repetition character to\~\c +.IR c . . -.REQ .ti \(+-N -Temporary indent next line (default scaling indicator\ \c +.REQ .ti \[+-]N +Temporary indent next line (default scaling indicator\~\c .scaleindicator m ). . .REQ .tkf font s1 n1 s2 n2 Enable track kerning for -.argument font . +.IR font . . -.REQ .tl \f(CB\(cq\fPleft\f(CB\(cq\fPcenter\f(CB\(cq\fPright\f(CB\(cq\fP +.REQ .tl \f[CB]\[cq]\f[]left\f[CB]\[cq]\f[]center\f[CB]\[cq]\f[]right\f[CB]\[cq]\f[] Three-part title. . .REQ .tm anything Print -.argument anything +.I anything on terminal (UNIX standard message output). . .REQ .tm1 anything Print -.argument anything -on terminal (UNIX standard message output), allowing leading whitespace if -.argument anything +.I anything +on terminal (UNIX standard message output), allowing leading +whitespace if +.I anything starts with -.character \(dq +.character \[dq] (which will be stripped off). . .REQ .tmc anything @@ -1707,23 +2131,31 @@ Similar to .request .tm1 without emitting a final newline. . -.REQ .tr abcd.... +.REQ .tr abcd.\|.\|.\& Translate -.argument a +.I a to -.argument b , -.argument c +.IR b , +.I c to -.argument d , -etc. on output. +.IR d , +etc.\& on output. . .REQ .trf filename Transparently output the contents of file -.argument filename . +.IR filename . +. +.REQ .trin abcd.\|.\|.\& +This is the same as the +.request tr +request except that the +.B asciify +request will use the character code (if any) before the character +translation. . -.REQ .trnt abcd.... +.REQ .trnt abcd.\|.\|.\& This is the same as the -.request .tr +.request tr request except that the translations do not apply to text that is transparently throughput into a diversion with .esc ! . @@ -1737,63 +2169,88 @@ false. . .REQ .uf font Underline font set to -.argument font +.I font (to be switched to by .request .ul ). . .REQ .ul N Underline (italicize in troff) -.argument N +.I N input lines. . .REQ .unformat diversion Unformat space characters and tabs, preserving font information in -.argument diversion . +.IR diversion . .REQ .vpt n Enable vertical position traps if -.argument n +.I n is non-zero, disable them otherwise. . .REQ .vs Change to previous vertical base line spacing. . -.REQ .vs N -Set vertical base line spacing to -.argument N . +.REQ .vs \[+-]N +Set vertical base line spacing according to +.I \[+-]N +(default scaling indicator\~\c +.scaleindicator p ). Default value is .scalednumber 12 p . . .REQ .warn n Set warnings code to -.argument n . +.IR n . +. +.REQ .warnscale si +Set scaling indicator used in warnings to +.IR si . +. +.REQ .wh N +Remove (first) trap at position +.IR N . . .REQ .wh N trap Set location trap; negative means from page bottom. . .REQ .while cond anything While condition -.argument cond +.I cond is true, accept -.argument anything +.I anything as input. . .REQ .write stream anything Write -.argument anything +.I anything +to the stream named +.IR stream . +. +.REQ .writec stream anything +Similar to +.request .write +without emitting a final newline. +. +.REQ .writem stream xx +Write contents of macro or string +.I xx to the stream named -.argument stream . +.IR stream . . .PD -.LP +. +.P Besides these standard groff requests, there might be further macro calls. They can originate from a macro package (see .BR roff (@MAN7EXT@) for an overview) or from a preprocessor. -.LP -Preprocessor macros are easy to be recognized. They enclose their code -into a pair of characteristic macros. -.LP +. +.P +Preprocessor macros are easy to be recognized. +. +They enclose their code into a pair of characteristic macros. +. +.P .TS box, center, tab (@); c | c | c @@ -1805,138 +2262,163 @@ grap@.G1@.G2 grn@.GS@.GE pic@.PS@.PE refer@.R1@.R2 -soelim@\fInone@\fInone +soelim@\f[I]none@\f[I]none tbl@.TS@.TE .TE -.LP +.P +. . .\" -------------------------------------------------------------------- .SH "ESCAPE SEQUENCES" .\" -------------------------------------------------------------------- . -Escape sequences are in-line language elements usually introduced by -a backslash -.'char \(rs +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 resp. 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. -.LP -This is done by enclosing names (escape name and arguments consisting of -a variable name) by a pair of brackets -.esc[] name -and constant arguments (number expressions and characters) by apostrophes -(ASCII 0x27) like -.IR \(cqconstant\(cq . -.LP +the argument resp.\& 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 +. +Two character escape names can be specified by an opening parenthesis +like +.esc ( xy without a closing counterpart. +. And all one-character names different from the special characters -.'char [ +.squoted_char [ and -.'char ( +.squoted_char ( can even be specified without a marker in the form -.esc \fP\f(CIc . -.LP -Constant arguments of length -.number 1 -can omit the marker apostrophes, too, but there is no two-character -analogue. -.LP -While 1-character escape sequences are mainly used for in-line functions -and system related tasks, the 2-letter names following the -.esc( "" +.esc c . +. +.P +Constant arguments of length\~1 can omit the marker apostrophes, too, +but there is no two-character analogue. +. +.P +While 1-character escape sequences are mainly used for in-line +functions and system related tasks, the 2-letter names following the +.esc ( construct are used for special characters predefined by the roff system. -Names with more than two characters -.esc[] name -mostly denote user defined named characters (see the -.request .char +. +Escapes sequences with names of more than two characters +.esc[] "" name +denote user defined named characters (see the +.request char request). . +. .\" -------------------------------------------------------------------- -.SS "SINGLE CHARACTER ESCAPES" +.SS "Single Character Escapes" .\" -------------------------------------------------------------------- . .PD 0 . .\" --------- comments --------- . -.ESC \(dq +.ESC \[dq] Beginning of a comment. +. Everything up to the end of the line is ignored. . .ESC # Everything up to and including the next newline is ignored. +. This is interpreted in copy mode. +. This is like -.esc \(dq -except the ignoring of the terminating newline. +.esc \[dq] +except that the terminating newline is ignored as well. . .\" --------- strings --------- . -.ESC * s +.ESC *\f[I]s\f[] The string stored in the string variable with 1-character name -.argument s . +.IR s . . -.ESC *( st +.ESC *(\f[I]st\f[] The string stored in the string variable with 2-character name -.argument st . +.IR st . . -.ESC[] * stringvar +.ESC[] * "stringvar arg1 arg2 .\|.\|." The string stored in the string variable with arbitrary length name -.argument stringvar . +.IR stringvar , +taking +.IR arg1 , +.IR arg2 , +.I .\|.\|.\& +as arguments. . .\" --------- macro arguments --------- . .ESC $0 -The name by which the current macro was invoked. The -.request .als +The name by which the current macro was invoked. +. +The +.request als request can make a macro have more than one name. . .ESC $ x -Macro argument with 1-place number -.argument x , +Macro or string argument with 1-place number +.IR x , where -.argument x +.I x is a digit between 1 and 9. . .ESC $( xy -Macro argument with 2-digit number -.argument xy . +Macro or string argument with 2-digit number +.IR xy . . .ESC[] $ nexp -Macro argument with number -.argument nexp , +Macro or string argument with number +.IR nexp , where -.argument nexp -is a numerical expression evaluating to an integer \(>=1. +.I nexp +is a numerical expression evaluating to an integer \[>=]1. . .ESC $* -In a macro, the concatenation of all the arguments separated by spaces. +In a macro or string, the concatenation of all the arguments separated +by spaces. . .ESC $@ -In a macro, the concatenation of all the arguments with each surrounded -by double quotes, and separated by spaces. +In a macro or string, the concatenation of all the arguments with each +surrounded by double quotes, and separated by spaces. . .\" --------- escaped characters --------- . -.ESC \(rs +.ESC \[rs] reduces to a single backslash; useful to delay its interpretation as escape character in copy mode. +. For a printable backslash, use -.esc e . +.esc e , +or even better +.esc [rs] , +to be independent from the current escape character. . -.ESC \(cq -The acute accent \(aa; same as -.esc( aa . +.ESC \[cq] +The acute accent \[aa]; same as +.esc (aa . Unescaped: apostrophe, right quotation mark, single quote (ASCII 0x27). . .ESC ` -The grave accent \(ga; same as -.esc( ga . +The grave accent \[ga]; same as +.esc (ga . Unescaped: left quote, backquote (ASCII 0x60). . .ESC \- @@ -1951,12 +2433,13 @@ Default optional hyphenation character. .ESC ! Transparent line indicator. . -.ESC ? anything\fB?\fP +.ESC? anything In a diversion, this will transparently embed -.argument anything +.I anything in the diversion. -.argument anything +.I anything is read in copy mode. +. See also the escape sequences .esc ! and @@ -2006,7 +2489,7 @@ Inserts a zero-width break point (similar to .esc % but without a soft hyphen character). . -.ESC \& newline +.ESC "" newline Ignored newline, for continuation lines. . .\" --------- structuring --------- @@ -2019,15 +2502,15 @@ End conditional input. . .\" --------- longer escape names --------- . -.ESC ( st +.ESC ( sc The special character with 2-character name -.argument st , +.IR sc , see section -.BR "SPECIAL CHARACTERS" . +.BR "Special Characters" . . -.ESC[] \& name +.ESC[] "" name The named character with arbitrary length name -.argument name . +.IR name . . .\" --------- alphabetical escapes --------- . @@ -2036,34 +2519,27 @@ Non-interpreted leader character. . .ESCq A anything If -.argument anything +.I anything is acceptable as a name of a string, macro, diversion, register, -environment or font it expands to -.number 1 , -and -.number 0 -otherwise. +environment or font it expands to\~1, and to\~0 otherwise. . -.ESCq b abc... +.ESCq b abc.\|.\|.\& Bracket building function. . .ESCq B anything If -.argument anything -is acceptable as a valid numeric expression it expands to -.number 1 , -and -.number 0 -otherwise. +.I anything +is acceptable as a valid numeric expression it expands to\~1, and +to\~0 otherwise. . .ESC c Interrupt text processing. . .ESCq C char The character called -.argument char ; +.IR char ; same as -.esc[] char , +.esc[] "" char , but compatible to other roff versions. . .ESC d @@ -2071,7 +2547,7 @@ Forward (down) 1/2 em vertical unit (1/2 line in nroff). . .ESCq D charseq Draw a graphical element defined by the characters in -.argument charseq ; +.IR charseq ; see groff info file for details. . .ESC e @@ -2082,114 +2558,174 @@ Equivalent to an escape character, but is not interpreted in copy-mode. . .ESC f F Change to font with 1-character name or 1-digit number -.argument F . +.IR F . +. +.ESC fP +Switch back to previous font. . .ESC f( fo -Change to font with 2-characer name or 2-digit number -.argument fo . +Change to font with 2-character name or 2-digit number +.IR fo . . .ESC[] f font Change to font with arbitrary length name or number expression -.argument font . +.IR font . +. +.ESC[] f "" +Switch back to previous font. +. +.ESC F f +Change to font family with 1-character name +.IR f . +. +.ESC F( fm +Change to font family with 2-character name +.IR fm . +. +.ESC[] F fam +Change to font family with arbitrary length name +.IR fam . +. +.ESC[] F "" +Switch back to previous font family. . .ESC[] g reg Return format of register with name -.argument reg +.I reg suitable for .request .af . +. Alternative forms -.esc(arg g xy +.escarg g( xy and .escarg g x . . .ESCq h N Local horizontal motion; move right -.argument N +.I N (left if negative). . .ESCq H N Set height of current font to -.argument N . +.IR N . . .ESC[] k reg Mark horizontal input place in register with arbitrary length name -.argument reg . +.IR reg . Alternative forms -.esc(arg k xy +.escarg k( xy and .escarg k x . . .ESCq l Nc Horizontal line drawing function (optionally using character -.argument c ). +.IR c ). . .ESCq L Nc Vertical line drawing function (optionally using character -.argument c ). +.IR c ). +. +.ESC[] m color +Change to color +.IR color . +. +Alternative forms +.escarg m( co +and +.escarg m c . +. +.ESC[] m "" +Switch back to previous color. +. +.ESC[] M color +Change filling color for closed drawn objects to color +.IR color . +. +Alternative forms +.escarg M( co +and +.escarg M c . +. +.ESC[] M "" +Switch to previous fill color. . .ESC n r -The numerical value stored in the register variable with the 1-character -name -.argument r . +The numerical value stored in the register variable with the +1-character name +.IR r . . .ESC n( re -The numerical value stored in the register variable with the 2-character -name -.argument re . +The numerical value stored in the register variable with the +2-character name +.IR re . . .ESC[] n reg The numerical value stored in the register variable with arbitrary -lenght name -.argument reg . +length name +.IR reg . . .ESCq N n Typeset the character with code -.argument n -in the current font, no special fonts are searched. Useful for adding -characters to a font using the -.request .char +.I n +in the current font, no special fonts are searched. +. +Useful for adding characters to a font using the +.request char request. . -.ESCq o abc... +.ESCq o abc.\|.\|.\& Overstrike characters -.argument a , -.argument b , -.argument c , +.IR a , +.IR b , +.IR c , etc. . +.ESC O 0 +Disable glyph output. +. +Mainly for internal use. +. +.ESC O 1 +Enable glyph output. +. +Mainly for internal use. +. .ESC p Break and spread output line. . .ESC r Reverse 1\ em vertical motion (reverse line in nroff). . -.ESCq R name \(+-n +.ESCq R "name\~\[+-]n" The same as .request .nr -.argument name -.argument \(+-n . +.I name +.IR \[+-]n . . -.ESC[] s \(+-N +.ESC[] s \[+-]N Set the point size to .I N -scaled points. Note the alternative forms -.BI \(rss \(+- [ N ]\c -, -.BI \(rss' \(+-N '\c -, -.BI \(rss \(+- ' N '\c -, -.esc(arg s \(+-xy , -.BI \(rss \(+- ( xy\c +scaled points. +. +Note the alternative forms +.BI \[rs]s \[+-] [ N ]\c , -.escarg s \(+-x . +.BI \[rs]s' \[+-]N '\c +.Text , +.BI \[rs]s \[+-] ' N '\c +.Text , +.escarg s( \[+-]xy\c +.Text , +.BI \[rs]s \[+-] ( xy\c +.Text , +.escarg s \[+-]x . Same as -.request .ps +.request ps request. . .ESCq S N Slant output -.argument N +.I N degrees. . .ESC t @@ -2200,55 +2736,58 @@ Reverse (up) 1/2 em vertical motion (1/2 line in nroff). . .ESCq v N Local vertical motion; move down -.argument N +.I N (up if negative). . .ESC[] V env The contents of the environment variable -.argument env . +.IR env . +. Alternative forms -.esc(arg V xy +.escarg V( xy and .escarg V x . . .ESCq w string The width of the character sequence -.argument string . +.IR string . . .ESCq x N Extra line-space function (negative before, positive after). . .ESCq X string Output -.argument string +.I string as device control function. . .ESC[] Y name Output string variable or macro -.argument name +.I name uninterpreted as device control function. +. Alternative forms -.esc(arg Y xy +.escarg Y( xy and .escarg Y x . . .ESC z c Print -.argument c +.I c with zero width (without spacing). . .ESCq Z anything Print -.argument anything +.I anything and then restore the horizontal and vertical position; -.argument anything +.I anything may not contain tabs or leaders. +. .PD -.LP +.P The escape sequences .esc e , .esc . , -.esc \(dq , +.esc \[dq] , .esc $ , .esc * , .esc a , @@ -2258,669 +2797,643 @@ The escape sequences and .escarg \& newline are interpreted in copy mode. -.LP +. +.P Escape sequences starting with .esc ( or .esc [ do not represent single character escape sequences, but introduce escape names with two or more characters. -.LP +. +.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" +.SS "Special Characters" .\" -------------------------------------------------------------------- -Common special characters are predefined by escape sequences of the form -.(esc \fP\f(CIxy +. +Common special characters are predefined by escape sequences of the +form +.BI \[rs]( xy with characters -.argument x +.I x and -.argument y . +.IR y . +. Some of these exist in the usual font while most of them are only -available in the special font. Below you'll find a selection of the most -important glyphs; a complete list can be found in +available in the special font. +. +Below you'll find a selection of the most important glyphs; a complete +list can be found in .BR groff_char (@MAN7EXT@). .RS -.LP +.P .PD 0 . -.ESc bu Bullet sign -.ESc co Copyright -.ESc ct Cent -.ESc dd Double dagger -.ESc de Degree -.ESc dg Dagger -.ESc em Em-dash -.ESc hy Hyphen -.ESc rg Registered sign -.ESc sc Section sign -.ESc ul Underline character -.ESc == Identical -.ESc >= Larger or equal -.ESc <= Less or equal -.ESc != Not equal -.ESc -> Right arrow -.ESc <- Left arrow -.ESc +- Plus-minus sign +.ESC (bu +Bullet sign +.ESC (co +Copyright +.ESC (ct +Cent +.ESC (dd +Double dagger +.ESC (de +Degree +.ESC (dg +Dagger +.ESC (rs +Printable double quote +.ESC (em +Em-dash +.ESC (hy +Hyphen +.ESC (rg +Registered sign +.ESC (rs +Printable backslash character +.ESC (sc +Section sign +.ESC (ul +Underline character +.ESC (== +Identical +.ESC (>= +Larger or equal +.ESC (<= +Less or equal +.ESC (!= +Not equal +.ESC (-> +Right arrow +.ESC (<- +Left arrow +.ESC (+- +Plus-minus sign .PD .RE . +. +.\" -------------------------------------------------------------------- +.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 strings are predefined in groff. +. +.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 .B NUMERICAL EXPRESSIONS above), but some can also hold a string value. -.LP +. +.P Each register is given a name. Arbitrary registers can be defined and set with the request -.request .nr -.argument register . -.LP +.request nr +.IR register . +. +.P The value stored in a register can be retrieved by the escape sequences introduced by .esc n . -.LP +. +.P Most useful are predefined registers. +. In the following the notation -.argument name +.I name is used to refer to a register called .register name to make clear that we speak about registers. +. Please keep in mind that the -.esc en[] +.esc[] n "" decoration is not part of the register name. . +. .\" -------------------------------------------------------------------- -.SS "READ-ONLY REGISTERS" +.SS "Read-only Registers" .\" -------------------------------------------------------------------- +. The following registers have predefined values that should not be -modified by the user (usually, registers starting with a dot a read-only). -Mostly, they provide information on the current settings or store results -from request calls. -.LP +modified by the user (usually, registers starting with a dot a +read-only). +. +Mostly, they provide information on the current settings or store +results from request calls. +. +.P .PD 0 -.REG .$ Number of arguments in the current macro. +. +.REG .$ +Number of arguments in the current macro or string. +. .REG .a Post-line extra line-space most recently utilized using -.escarg x 'N' . +.escq x N . +. .REG .A -Set to -.number 1 -in +Set to\~1 in .B troff if option .B \-A -is used; always -.number 1 -in +is used; always\~1 in .BR nroff . -.REG .c Current input line number. -.REG .C 1 if compatibility mode is in effect, 0 otherwise. +. +.REG .c +Current input line number. +. +.REG .C +1\~if compatibility mode is in effect, 0\~otherwise. +. .REG .cdp The depth of the last character added to the current environment. It is positive if the character extends below the baseline. +. .REG .ce The number of lines remaining to be centered, as set by the -.request .ce +.request ce request. +. .REG .cht The height of the last character added to the current environment. It is positive if the character extends above the baseline. +. +.REG .color +1\~if colors are enabled, 0\~otherwise. +. .REG .csk The skew of the last character added to the current environment. The skew of a character is how far to the right of the center of a character the center of an accent over that character should be placed. +. .REG .d Current vertical place in current diversion; equal to register .register nl . -.REG .ev The name or number of the current environment (string-valued). -.REG .f Current font number. -.REG .fam The current font family (string-valued). -.REG .fp The number of the next free font position. +. +.REG .ev +The name or number of the current environment (string-valued). +. +.REG .f +Current font number. +. +.REG .fam +The current font family (string-valued). +. +.REG .fn +The current (internal) real font name (string-valued). +. +.REG .fp +The number of the next free font position. +. .REG .g Always 1 in GNU troff. +. Macros should use it to test if running under groff. -.REG .h Text base-line high-water mark on current page or diversion. -.REG .H Available horizontal resolution in basic units. +. +.REG .h +Text base-line high-water mark on current page or diversion. +. +.REG .H +Available horizontal resolution in basic units. +. .REG .hla The current hyphenation language as set by the .B .hla request. +. .REG .hlc The number of immediately preceding consecutive hyphenated lines. +. .REG .hlm The maximum allowed number of consecutive hyphenated lines, as set by the -.request .hlm +.request hlm request. +. .REG .hy The current hyphenation flags (as set by the -.request .hy +.request hy request). +. .REG .hym The current hyphenation margin (as set by the -.request .hym +.request hym request). +. .REG .hys The current hyphenation space (as set by the -.request .hys +.request hys request). -.REG .i Current ident. -.REG .in The indent that applies to the current output line. +. +.REG .i +Current ident. +. +.REG .in +The indent that applies to the current output line. +. .REG .int Positive if last output line contains .esc c . +. .REG .kern -.number 1 -if pairwise kerning is enabled, -.number 0 -otherwise. -.REG .l Current line length. +1\~if pairwise kerning is enabled, 0\~otherwise. +. +.REG .l +Current line length. +. .REG .lg The current ligature mode (as set by the -.request .lg +.request lg request). +. .REG .linetabs The current line-tabs mode (as set by the -.request .linetabs +.request linetabs request). -.REG .ll The line length that applies to the current output line. +. +.REG .ll +The line length that applies to the current output line. +. .REG .lt The title length (as set by the -.request .lt +.request lt request). -.REG .n Length of text portion on previous output line. +. +.REG .n +Length of text portion on previous output line. +. .REG .ne The amount of space that was needed in the last -.request .ne +.request ne request that caused a trap to be sprung. +. Useful in conjunction with .register .trunc . +. .REG .ns -.number 1 -if in no-space mode, -.number 0 -otherwise. -.REG .o Current page offset. -.REG .p Current page length. +1\~if in no-space mode, 0\~otherwise. +. +.REG .o +Current page offset. +. +.REG .p +Current page length. +. .REG .pn The number of the next page: either the value set by a -.request .pn +.request pn request, or the number of the current page plus\ 1. -.REG .ps The current pointsize in scaled points. -.REG .psr The last-requested pointsize in scaled points. +. +.REG .ps +The current pointsize in scaled points. +. +.REG .psr +The last-requested pointsize in scaled points. +. +.REG .pvs +The current post-vertical line spacing. +. .REG .rj The number of lines to be right-justified as set by the rj request. -.REG .s Current point size as a decimal fraction. +. +.REG .s +Current point size as a decimal fraction. +. .REG .sr The last requested pointsize in points as a decimal fraction (string-valued). -.REG .t Distance to the next trap. +. +.REG .t +Distance to the next trap. +. .REG .T -Set to -.number 1 +Set to\~1 if option .B \-T is used. +. .REG .tabs -A string representation of the current tab settings suitable for use as -an argument to the -.request .ta +A string representation of the current tab settings suitable for use +as an argument to the +.request ta request. +. .REG .trunc The amount of vertical space truncated by the most recently sprung vertical position trap, or, if the trap was sprung by a -.request .ne +.request ne request, minus the amount of vertical motion produced by .request .ne . -request. -In other words, at the point a trap is sprung, it represents the difference -of what the vertical position would have been but for the trap, and what the -vertical position actually is. +. +In other words, at the point a trap is sprung, it represents +the difference of what the vertical position would have been but for +the trap, and what the vertical position actually is. +. Useful in conjunction with the .register .ne register. +. .REG .ss The value of the parameters set by the first argument of the -.request .ss +.request ss request. +. .REG .sss The value of the parameters set by the second argument of the -.request .ss +.request ss request. -.REG .u Equal to 1 bin fill mode and 0 in nofill mode. -.REG .v Current vertical line spacing. -.REG .V Available vertical resolution in basic units. +. +.REG .u +Equal to 1 bin fill mode and 0 in nofill mode. +. +.REG .v +Current vertical line spacing. +. +.REG .V +Available vertical resolution in basic units. +. .REG .vpt -.number 1 -if vertical position traps are enabled, -.number 0 -otherwise. -.REG .w Width of previous character. +1\~ if vertical position traps are enabled, 0\~otherwise. +. +.REG .w +Width of previous character. +. .REG .warn The sum of the number codes of the currently enabled warnings. -.REG .x The major version number. -.REG .y The minor version number. -.REG .Y The revision number of groff. -.REG .z Name of current diversion. +. +.REG .x +The major version number. +. +.REG .y +The minor version number. +. +.REG .Y +The revision number of groff. +. +.REG .z +Name of current diversion. .PD . +. .\" -------------------------------------------------------------------- -.SS "WRITABLE REGISTERS" +.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. -.LP +. +.P .PD 0 -.REG % Current page number. -.REG c. Current input line number. -.REG ct Character type (set by width function +.REG % +Current page number. +. +.REG c. +Current input line number. +. +.REG ct +Character type (set by width function .esc w ). -.REG dl Maximal width of last completed diversion. -.REG dn Height of last completed diversion. -.REG dw Current day of week (1-7). -.REG dy Current day of month (1-31). -.REG hp Current horizontal position at input line. +. +.REG dl +Maximal width of last completed diversion. +. +.REG dn +Height of last completed diversion. +. +.REG dw +Current day of week (1-7). +. +.REG dy +Current day of month (1-31). +. +.REG hours +The number of hours past midnight. +. +Initialized at start-up. +. +.REG hp +Current horizontal position at input line. +. .REG llx Lower left x-coordinate (in PostScript units) of a given PostScript image (set by .request .psbb ). +. .REG lly Lower left y-coordinate (in PostScript units) of a given PostScript image (set by .request .psbb ). -.REG ln Output line number. -.REG mo Current month (1-12). -.REG nl Vertical position of last printed text base-line. -.REG rsb Like +. +.REG ln +Output line number. +. +.REG minutes +The number of minutes after the hour. +. +Initialized at start-up. +. +.REG mo +Current month (1-12). +. +.REG nl +Vertical position of last printed text base-line. +. +.REG rsb +Like .register sb , but takes account of the heights and depths of characters. +. .REG rst Like .register st , but takes account of the heights and depths of characters. +. .REG sb Depth of string below base line (generated by width function .esc w ). +. +.REG seconds +The number of seconds after the minute. +. +Initialized at start-up. +. .REG skw Right skip width from the center of the last character in the .esc w argument. +. .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 +. +If \[<=]0 there is no limit, i.e., recursion can continue until virtual memory is exhausted. +. .REG ssc -The amount of horizontal space (possibly negative) that should be added -to the last character before a subscript (generated by width function +The amount of horizontal space (possibly negative) that should be +added to the last character before a subscript (generated by width +function .esc w ). +. .REG st Height of string above base line (generated by width function .esc w ). +. .REG systat The return value of the .I system() function executed by the last -.request .sy +.request sy request. +. .REG urx Upper right x-coordinate (in PostScript units) of a given PostScript image (set by .request .psbb ). +. .REG ury Upper right y-coordinate (in PostScript units) of a given PostScript image (set by .request .psbb ). -.REG year The current year (year 2000 compliant). +. +.REG year +The current year (year 2000 compliant). +. .REG yr -Current year minus 1900. For Y2K compliance use register +Current year minus 1900. +. +For Y2K compliance use register .register year instead. -.PD . -.\" -------------------------------------------------------------------- -.SH WARNINGS -.\" -------------------------------------------------------------------- -Each warning generated by groff is identified by a name and a code -number. The codes are powers of 2 to allow bit-encoding with a single -integer. There are also names that can be used to refer to groups of -warnings. -.LP -The name associated with a warning is used by the -.option \-w -and -.option \-W -options; -the number code is used by the -.request .warn -request and by the -.esc[arg] n warn -register. -.LP -.PD 0 -.Warning all group -All warnings except -.warning di , -.warning mac -and -.warning reg . -Intended to cover all warnings with traditional macro packages. -.Warning break 4 -In fill mode, lines which could not be broken so that their length was -less than the line length. This is enabled by default. -.Warning char 1 -Non-existent characters. This is enabled by default. -.Warning delim 8 -Missing or mismatched closing delimiters. -.Warning di 256 -Use of -.request .di -or -.request .da -without an argument when there is no current diversion. -.Warning el 16 -Use of the -.request .el -request with no matching -.request .ie -request. -.Warning escape 32768 -Unrecognized escape sequence. Then the escape character is ignored. -.Warning font 131072 -Non-existent fonts. This is enabled by default. -.Warning ig 262144 -Illegal escapes in text ignored with the -.request \.ig -request. These are conditions that are errors when they occur outside -of ignored text. -.Warning mac 512 -Use of undefined strings, macros, and diversions. Automatically handled -as empty. Usually, only one warning per name. -.Warning missing 8192 -Request that is missing non-optional arguments. -.Warning input 16384 -Illegal input character. -.Warning number 2 -Invalid numeric expressions. This is enabled by default. -.Warning range 64 -Out of range arguments. -.Warning reg 1024 -Use of undefined number register. Automatically defined as having -value 0. Usually, only one warning per name. -.Warning right-brace 4096 -Use of -.esc } -where a number was expected. -.Warning scale 32 -Meaningless scaling indicators. -.Warning space 65536 -Missing space between a request or macro and its argument. Then no -macro is automatically defined. This is enabled by default. This -warning will never occur in compatibility mode. -.Warning syntax 128 -Dubious syntax in numeric expressions. -.Warning tab 2048 -Inappropriate use of a tab character (either in an unquoted macro -argument or where a number was expected). -.Warning w group -All warnings. .PD -.LP -.TS -tab(@), box, expand; -c c c | c c c | c c c -R RI CB | R RI CB | R RI CB. -Bit@Code@Warning@Bit@Code@Warning@Bit@Code@Warning -_ -0@1@char@8@256@di@16@65536@space -1@2@number@9@512@mac@17@131072@font -2@4@break@10@1024@reg@18@262144@ig -3@8@delim@11@2048@tab -4@16@el@12@4096@right-brace -5@32@scale@13@8192@missing -6@64@range@14@16384@input -7@128@syntax@15@32768@escape -.TE -.LP +. . .\" -------------------------------------------------------------------- .SH COMPATIBILITY .\" -------------------------------------------------------------------- -.I groff -provides a -.B compatibility mode -that allows to process roff code written for classical -.troff -or for other implementations of roff in a consistent way. -.LP -Compatibility mode can be turned on with the -.option \-C -command line option, and turned on or off with the -.request .cp -request. The number register -.esc(arg n .C -is -.number 1 -if compatibility mode is on, -.number 0 -otherwise. -.LP -This became necessary because the GNU concept for long names causes some -incompatibilities. -.I Classical troff -will interpret -.IP -.B -\&.dsabcd -.LP -as defining a string -.B ab -with contents -.BR cd . -Normally, -.I groff -will interpret this as a call of a macro named -.request dsabcd . -.LP -Also -.I classical troff -will interpret -.esc *[ -or -.esc n[ -as references to a string or number register called -.register [ . -In -.I GNU native -.IR mode , -however, this will normally be interpreted as the start of a long name. -.LP -In -.I compatibility -.IR mode , -groff will interpret these things in the traditional way, but long names -are not recognized. -.LP -On the other hand, groff in -.I GNU native mode -does not allow to use the escape sequences -.esc e , -.esc | , -.esc ^ , -.esc & , -.esc } , -.esc { , -.esc "\ " (space), -.esc ' , -.esc ` , -.esc - , -.esc _ , -.esc ! , -.esc % , -and -.esc c -in names of strings, macros, diversions, number registers, fonts or -environments, whereas -.I classical troff -does. The -.esc A -escape sequence can be helpful in avoiding these escape sequences in -names. -.LP -Fractional pointsizes cause one noteworthy incompatibility. -In -.I classical -.IR troff , -the -.request .ps -request ignores scale indicators and so -.RS -.LP -.B .ps\ 10u -.RE -.LP -will set the pointsize to 10 points, whereas in groff native mode the -pointsize will be set to 10 scaled points. -.LP -In -.I groff -mode, there is a fundamental difference between unformatted input -characters, and formatted output characters. -Everything that affects how an output character will be output is stored -with the character; once an output character has been constructed it is -unaffected by any subsequent requests that are executed, including the -.request .bd , -.request .cs , -.request .tkf , -.request .tr , -or -.request .fp -requests. -.LP -Normally output characters are constructed from input characters at the -moment immediately before the character is added to the current output -line. -Macros, diversions and strings are all, in fact, the same type of object; -they contain lists of input characters and output characters in any -combination. -.LP -An output character does not behave like an input character for the -purposes of macro processing; it does not inherit any of the special -properties that the input character from which it was constructed might -have had. -The following example will make things clearer. -.LP -.RS -.nf -.ft B -\&.di x -\(rs\(rs\(rs\(rs -\&.br -\&.di -\&.x -.ft -.fi -.RE -.LP -In -.I GNU mode -this will be printed as -.esc \(rs . -So each pair of input backslashes -.'char \(rs\(rs -is turned into a single output backslash -.'char \(rs -and the resulting output backslashes are not interpreted as escape -characters when they are reread. -.LP -.I Classical troff -would interpret them as escape characters when they were reread and -would end up printing a single backslash -.'char \(rs . -.LP -The correct way to get a printable -.'char \(rs -is to use the -.esc e -escape sequence. This will always print a single instance of the -current escape character, regardless of whether or not it is used in a -diversion. It will also work in both GNU mode and compatibility mode. -.LP -To store an escape sequence in a diversion that will be interpreted when -the diversion is reread, either the traditional -.esc ! -transparent output facility or the -new -.esc ? -escape sequence can be used. +. +The differences of the groff language in comparison to classical troff +as defined by +.I [CSTR\~#54] +are documented in +.BR groff_diff (@MAN7EXT@). +. +.P +The groff system provides a compatibility mode, see +.BR groff (@MAN1EXT@) +on how to invoke this. +. . .\" -------------------------------------------------------------------- .SH BUGS .\" -------------------------------------------------------------------- -At the moment, the documentation of the groff system is in a state of -change and evolution. It is possible that there are small -inconsistencies between different documents temporarily. -.LP -The -.B WARNINGS -section belongs to -.BR troff (@MAN1EXT@). +. +Report bugs to the +.MTO bug-groff@gnu.org "groff bug mailing list" . +Include a complete, self-contained example that will allow the bug to +be reproduced, and say which version of groff you are using. +. . .\" -------------------------------------------------------------------- -.SH AUTHOR +.SH AUTHORS .\" -------------------------------------------------------------------- -This document is part of groff, the GNU roff distribution. It was -written by Bernd Warken <bwarken@mayn.de>. -.LP -It is distributed under the terms of the FDL (GNU Free Documentation -License) version 1.1 or later. You should have received a copy of the -FDL on your system, it is also available on-line under -.RS -.LP -.IR http://www.gnu.org/copyleft/fdl.html . -.RE -.LP -Formerly, the extensions of the groff language were kept in the manual -page -.BR troff (@MAN1EXT@). -This document contains the essential parts of that documentation, but -the gory details are found in the groff info file. +. +Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. +. +.P +This document is distributed under the terms of the FDL (GNU Free +Documentation License) version 1.1 or later. +. +You should have received a copy of the FDL on your system, it is also +available on-line at the +.URL http://\:www.gnu.org/\:copyleft/\:fdl.html "GNU copyleft site" . +. +.P +This document is part of +.IR groff , +the GNU roff distribution. +. +It was written by +.MTO bwarken@mayn.de "Bernd Warken" ; +it is maintained by +.MTO wl@gnu.org "Werner Lemberg" . +. . .\" -------------------------------------------------------------------- .SH "SEE ALSO" .\" -------------------------------------------------------------------- +. +.P The main source of information for the groff language is the .B groff .BR info (1) file. -.LP -For a survey of roff and the groff system and further documentation -pointers see -.BR roff (@MAN7EXT@). -.LP -The formatter programs are described in +. +Besides the gory details, it contains many examples. +. +.TP .BR groff (@MAN1EXT@) -and -.BR troff (@MAN1EXT@); -a complete of all predefined glyph names can be found in -.BR groff_char (@MAN7EXT@). -.LP -The classical -.I troff -documentation is available on-line at -.RS -.LP -.I http://cm.bell-labs.com/cm/cs/cstr.html -.RE -and -.RS -.IR http://www.kohala.com/start/troff/ . +the usage of the groff program and pointers to the documentation and +availability of the groff system. +. +.TP +.BR groff_diff (@MAN7EXT@) +the differences of the groff language as compared to classical roff. +. +This is the authoritative document for the predefined language +elements that are specific to groff. +. +.TP +.BR groff_char (@MAN7EXT@) +the predefined groff characters (glyphs). +. +.TP +.BR groff_font (@MAN5EXT@) +the specification of fonts and the DESC file. +. +.TP +.BR roff (@MAN7EXT@) +the history of roff, the common parts shared by all roff systems, and +pointers to further documentation. +. +.TP +.I [CSTR\~#54] +.URL http://\:cm.bell-labs.com/\:cm/\:cs/\:54.ps \ + "Nroff/\:Troff User's Manual by Osanna & Kernighan" +\[em] the bible for classical troff. +. +. +.\" -------------------------------------------------------------------- +.\" Emacs Setup +.\" -------------------------------------------------------------------- . .\" Local Variables: .\" mode: nroff |