Adapt include (src/include)
[s-roff.git] / man / groff.man
blob7f4e0cf09940e4d877dad894b49c39f1ee2eaf4e
1 '\" t
2 .ig
3 groff.man
5 This file is part of groff, the GNU roff type-setting system.
7 Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
8   Free Software Foundation, Inc.
9 written by Bernd Warken <bwarken@mayn.de>
10 maintained by Werner Lemberg <wl@gnu.org>
12 Permission is granted to copy, distribute and/or modify this document
13 under the terms of the GNU Free Documentation License, Version 1.1 or
14 any later version published by the Free Software Foundation; with the
15 Invariant Sections being this .ig-section and AUTHORS, with no
16 Front-Cover Texts, and with no Back-Cover Texts.
18 A copy of the Free Documentation License is included as a file called
19 FDL in the main directory of the groff source package.
22 .\" --------------------------------------------------------------------
23 .\" Setup
24 .\" --------------------------------------------------------------------
26 .do nr groff_C \n[.C]
27 .cp 0
29 .\" --------------------------------------------------------------------
30 .\" start of macro definitions
32 .de TPx
33 .  TP 10n
35 .\" ---------------------------------------------------------------------
36 .\" .Text anything ...
37 .\"
38 .\" All arguments are printed as text.
39 .\"
40 .de Text
41 .  nop \)\\$*
44 .\" --------- command line option ---------
46 .de option
47 .  Text \f[CB]\\$*
48 .  ft P
51 .\" --------- characters ---------
53 .de squoted_char
54 .  Text \[oq]\f[CB]\\$1\f[]\[cq]\\$2
56 .de dquoted_char
57 .  Text \[lq]\f[CB]\\$1\f[]\[rq]\\$2
59 .\" --------- requests ---------
61 .\" synopsis of a request
62 .de REQ
63 .  ie \n[.$]=1 \{\
64 .    Text \f[CB]\\$1\f[]
65 .  \}
66 .  el \{\
67 .    Text \f[CB]\\$1\~\f[]\f[I]\\$2\f[]
68 .  \}
71 .\" reference of a request
72 .de request
73 .  BR \\$*
76 .\" --------- numerical elements ---------
78 .\" number with a trailing unit
79 .de scalednumber
80 .  Text \\$1\^\f[CB]\\$2\f[]\\$3\f[R]
81 .  ft P
84 .\" representation of units within the text
85 .de scaleindicator
86 .  Text \f[CB]\\$1\f[]\\$2\f[R]
87 .  ft P
90 .\" representation of mathematical operators within the text
91 .de operator
92 .  squoted_char \\$@
96 .\" --------- escape sequences ---------
98 .\" ---------------------------------------------------------------------
99 .\" .ESC name [arg]
101 .\" Synopsis of an escape sequence, optionally with argument
102 .\" Args   : 1 or 2; `name' obligatory, `arg' optional
103 .\"   name : suitable name for an escape sequence (c, (xy, [long])
104 .\"   arg  : arbitrary word
105 .\" Result : prints \namearg, where `name' is in CB, `arg' in I
107 .de ESC
108 .  Text "\f[CB]\[rs]\\$1\,\f[I]\\$2\/\fR"
110 .\" ---------------------------------------------------------------------
111 .\" .ESC[] name arg
113 .\" Synopsis for escape sequence with a bracketed long argument
114 .\" Args   : 2 obligatory
115 .\"   name : suitable name for an escape sequence (c, (xy, [long])
116 .\"   arg  : arbitrary text
117 .\" Result : prints \name[arg], where `name' is in CB, `arg' in I
119 .de ESC[]
120 .  Text "\f[CB]\[rs]\\$1\[lB]\f[]\f[I]\\$2\f[]\f[CB]\[rB]\f[]"
122 .\" ---------------------------------------------------------------------
123 .\" .ESCq name arg
125 .\" Synopsis for escape sequence with a bracketed long argument
126 .\" Args   : 2 obligatory
127 .\"   name : suitable name for an escape sequence (c, (xy, [long])
128 .\"   arg  : arbitrary text
129 .\" Result : prints \name'arg', where `name' is in CB, `arg' in I
131 .de ESCq
132 .  Text "\f[CB]\[rs]\\$1\[cq]\f[]\f[I]\\$2\f[]\f[CB]\[cq]\f[]"
134 .\" ---------------------------------------------------------------------
135 .\" .ESC? arg
137 .\" Synopsis for escape sequence with a bracketed long argument
138 .\" Args   : 1 obligatory
139 .\"   arg  : arbitrary text
140 .\" Result : prints `\?arg?', where the `?' are in CB, `arg' in I
142 .de ESC?
143 .  Text "\f[CB]\[rs]?\f[I]\\$1\f[CB]?\f[R]"
145 .\" ---------------------------------------------------------------------
146 .\" .esc name [punct]
148 .\" Reference of an escape sequence (no args), possibly punctuation
149 .\" Args    : 1 obligatory
150 .\"   name  : suitable name for an escape sequence (c, (xy, [long])
151 .\"   punct : arbitrary
152 .\" Result  : prints \name, where `name' is in B, `punct' in R
154 .de esc
155 .  BR "\[rs]\\$1" \\$2
157 .\" ---------------------------------------------------------------------
158 .\" .escarg name arg [punct]
160 .\" Reference of an escape sequence (no args)
161 .\" Args    : 1 obligatory, 1 optional
162 .\"   name  : suitable name for an escape sequence (c, (xy, [long])
163 .\"   arg   : arbitrary word
164 .\" Result  : prints \namearg, where
165 .\"           `name' is in B, `arg' in I
167 .de escarg
168 .  Text \f[B]\[rs]\\$1\f[]\f[I]\\$2\f[]\\$3
170 .\" ---------------------------------------------------------------------
171 .\" .esc[] name arg [punct]
173 .\" Reference for escape sequence with a bracketed long argument
174 .\" Args   : 2 obligatory
175 .\"   name : suitable name for an escape sequence (c, (xy, [long])
176 .\"   arg  : arbitrary text
177 .\" Result : prints \name[arg], where `name' is in CB, `arg' in CI
179 .de esc[]
180 .  Text \f[B]\[rs]\\$1\[lB]\f[]\f[I]\\$2\f[]\f[B]\[rB]\f[]\\$3
183 .\" ---------------------------------------------------------------------
184 .\" .escq name arg
186 .\" Reference for escape sequence with a bracketed long argument
187 .\" Args   : 2 obligatory
188 .\"   name : suitable name for an escape sequence (c, (xy, [long])
189 .\"   arg  : arbitrary text
190 .\" Result : prints \name'arg', where `name' is in CB, `arg' in CI
192 .de escq
193 .  Text \f[B]\[rs]\\$1\[cq]\f[]\f[I]\\$2\f[]\f[B]\[cq]\f[]\\$3
196 .\" --------- strings ---------
198 .\" synopsis for string, with \*[]
199 .de STRING
200 .  Text \[rs]*[\f[CB]\\$1\f[]] \\$2
202 .\" synopsis for a long string
203 .de string
204 .  if \n[.$]=0 \
205 .    return
206 .  Text \f[CB]\[rs]*\[lB]\\$1\[rB]\f[]\\$2
209 .\" --------- registers ---------
211 .\" synopsis for registers, with \n[]
212 .de REG
213 .  Text \[rs]n[\f[CB]\\$1\f[]]
215 .\" reference of a register, without decoration
216 .de register
217 .  Text register
218 .  BR \\$*
221 .\" end of macro definitions
224 .\" --------------------------------------------------------------------
225 .\" Title
226 .\" --------------------------------------------------------------------
228 .TH GROFF @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
229 .SH NAME
230 groff \- a short reference for the GNU roff language
233 .\" --------------------------------------------------------------------
234 .SH DESCRIPTION
235 .\" --------------------------------------------------------------------
237 The name
238 .I groff
239 stands for
240 .I GNU roff
241 and is the free implementation of the roff type-setting system.
244 .BR roff (@MAN7EXT@)
245 for a survey and the background of the groff system.
248 This document gives only short descriptions of the predefined roff
249 language elements as used in groff.
251 Both the classical features and the groff extensions are provided.
254 Historically, the
255 .I roff language
256 was called
257 .IR troff .
258 .I groff
259 is compatible with the classical system and provides proper
260 extensions.
262 So in GNU, the terms
263 .IR roff ,
264 .IR troff ,
266 .I groff language
267 could be used as synonyms.
269 However
270 .I troff
271 slightly tends to refer more to the classical aspects, whereas
272 .I groff
273 emphasizes the GNU extensions, and
274 .I roff
275 is the general term for the language.
278 This file is only a short version of the complete documentation that
279 is found in the
280 .I groff
281 .BR info (1)
282 file, which contains more detailed, actual, and concise information.
285 The general syntax for writing groff documents is relatively easy, but
286 writing extensions to the roff language can be a bit harder.
289 The roff language is line-oriented.
291 There are only two kinds of lines, control lines and text lines.
293 The control lines start with a control character, by default a period
294 .dquoted_char .
295 or a single quote
296 .dquoted_char ' ;
297 all other lines are text lines.
300 .B Control lines
301 represent commands, optionally with arguments.
303 They have the following syntax.
305 The leading control character can be followed by a command name;
306 arguments, if any, are separated by spaces (but not tab characters)
307 from the command name and among themselves, for example,
311 .Text .command_name arg1 arg2
315 For indentation, any number of space or tab characters can be inserted
316 between the leading control character and the command name, but the
317 control character must be on the first position of the line.
320 .B Text lines
321 represent the parts that is printed.
322 They can be modified by escape sequences, which are recognized by a
323 leading backslash
324 .squoted_char \[rs] .
325 These are in-line or even in-word formatting elements or functions.
327 Some of these take arguments separated by single quotes
328 .dquoted_char ' ,
329 others are regulated by a length encoding introduced by an open
330 parenthesis
331 .squoted_char (
332 or enclosed in brackets
333 .squoted_char [
335 .squoted_char ] .
338 The roff language provides flexible instruments for writing language
339 extension, such as macros.
341 When interpreting macro definitions, the roff system enters a special
342 operating mode, called the
343 .BR "copy mode" .
346 The copy mode behavior can be quite tricky, but there are some rules
347 that ensure a safe usage.
349 .IP 1.
350 Printable backslashes must be denoted as
351 .esc e .
352 To be more precise,
353 .esc e
354 represents the current escape character.
356 To get a backslash glyph, use
357 .esc (rs
359 .esc [rs] .
360 .IP 2.
361 Double all backslashes.
362 .IP 3.
363 Begin all text lines with the special non-spacing character
364 .esc & .
367 This does not produce the most efficient code, but it should work as a
368 first measure.
370 For better strategies, see the groff info file and
371 .BR groff_tmac (@MAN5EXT@).
374 Reading roff source files is easier, just reduce all double backslashes
375 to a single one in all macro definitions.
378 .\" --------------------------------------------------------------------
379 .SH "GROFF ELEMENTS"
380 .\" --------------------------------------------------------------------
382 The roff language elements add formatting information to a text file.
384 The fundamental elements are predefined commands and variables that
385 make roff a full-blown programming language.
388 There are two kinds of roff commands, possibly with arguments.
389 .B Requests
390 are written on a line of their own starting with a dot
391 .squoted_char .
392 or a
393 .dquoted_char ' ,
394 whereas
395 .B Escape sequences
396 are in-line functions and in-word formatting elements starting with a
397 backslash
398 .squoted_char \[rs] .
401 The user can define her own formatting commands using the
402 .request de
403 request.
405 These commands are called
406 .BR macros ,
407 but they are used exactly like requests.
409 Macro packages are pre-defined sets of macros written in the groff
410 language.
412 A user's possibilities to create escape sequences herself is very
413 limited, only special characters can be mapped.
416 The groff language provides several kinds of variables with
417 different interfaces.
419 There are pre-defined variables, but the user can define her own
420 variables as well.
423 .B String
424 variables store character sequences.
426 They are set with the
427 .request ds
428 request and retrieved by the
429 .esc *
430 escape sequences.
432 Strings can have variables.
435 .B Register
436 variables can store numerical values, numbers with a scale unit, and
437 occasionally string-like objects.
439 They are set with the
440 .request nr
441 request and retrieved by the
442 .esc n
443 escape sequences.
446 .B Environments
447 allow the user to temporarily store global formatting parameters like
448 line length, font size, etc.\& for later reuse.
450 This is done by the
451 .request ev
452 request.
455 .B Fonts
456 are identified either by a name or by an internal number.
458 The current font is chosen by the
459 .request ft
460 request or by the
461 .esc f
462 escape sequences.
464 Each device has special fonts, but the following fonts are available
465 for all devices.
466 .B R
467 is the standard font Roman.
468 .B B
469 is its
470 .B bold
471 counterpart.
474 .I italic
475 font is called
476 .B I
477 and is available everywhere, but on text devices it is displayed as an
478 underlined Roman font.
480 For the graphical output devices, there exist constant-width pendants
481 of these fonts,
482 .BR CR ,
483 .BR CI ,
485 .BR CB .
486 On text devices, all glyphs have a constant width anyway.
489 .B Glyphs
490 are visual representation forms of
491 .BR characters .
492 In groff, the distinction between those two elements is not always
493 obvious (and a full discussion is beyond the scope of this man page).
495 A first approximation is that glyphs have a specific size and
496 colour and are taken from a specific font; they can't be modified any
497 more \[en] characters are the input, and glyphs are the output.
499 As soon as an output line has been generated, it no longer contains
500 characters but glyphs.
502 In this man page, we use either `glyph' or `character', whatever is
503 more appropriate.
506 Moreover, there are some advanced roff elements.
509 .B diversion
510 stores (formatted) information into a macro for later usage.
513 .B trap
514 is a positional condition like a certain number of lines from page top
515 or in a diversion or in the input.
517 Some action can be prescribed to be run automatically when the
518 condition is met.
521 More detailed information and examples can be found in the groff info
522 file.
525 .\" --------------------------------------------------------------------
526 .SH "CONTROL CHARACTERS"
527 .\" --------------------------------------------------------------------
529 There is a small set of characters that have a special controlling
530 task in certain conditions.
533 \&\f[CB].\f[]
534 A dot is only special at the beginning of a line or after the
535 condition in the requests
536 .request if ,
537 .request ie ,
538 .request el ,
540 .request while .
541 There it is the control character that introduces a request (or macro).
543 The special behavior can be delayed by using the
544 .esc .
545 escape.
547 By using the 
548 .request cc
549 request, the control character can be set to a different character,
550 making the dot
551 .squoted_char .
552 a non-special character.
553 .IP ""
554 In all other positions, it just means a dot character.
556 In text paragraphs, it is advantageous to start each sentence at a
557 line of its own.
560 \&\f[CB]'\f[]
561 The single quote has two controlling tasks.
563 At the beginning of a line and in the conditional requests it is the
564 non-breaking control character.
566 That means that it introduces a request like the dot, but with the
567 additional property that this request doesn't cause a linebreak.
569 By using the 
570 .request c2
571 request, the non-break control character can be set to a different
572 character.
574 .IP ""
575 As a second task, it is the most commonly used argument separator in
576 some functional escape sequences (but any pair of characters not part
577 of the argument do work).
579 In all other positions, it denotes the single quote or apostrophe
580 character.
582 Groff provides a printable representation with the
583 .esc (cq
584 escape sequence.
587 \&\f[CB]\[dq]\f[]
588 The double quote is used to enclose arguments in macros (but not in
589 requests and strings).
591 In the
592 .request ds
594 .request as
595 requests, a leading double quote in the argument is stripped off,
596 making everything else afterwards the string to be defined (enabling
597 leading whitespace).
599 The escaped double quote
600 .esc \[dq]
601 introduces a comment.
603 Otherwise, it is not special.
605 Groff provides a printable representation with the
606 .esc (dq
607 escape sequence.
610 \&\f[CB]\[rs]\f[]
611 The backslash usually introduces an escape sequence (this can be
612 changed with the
613 .request ec
614 request).
616 A printed version of the escape character is the
617 .esc e
618 escape; a backslash glyph can be obtained by
619 .esc (rs .
621 \&\f[CB](\f[]
622 The open parenthesis is only special in escape sequences when
623 introducing an escape name or argument consisting of exactly two
624 characters.
626 In groff, this behavior can be replaced by the \f[CB][]\f[] construct.
628 \&\f[CB][\f[]
629 The opening bracket is only special in groff escape sequences; there
630 it is used to introduce a long escape name or long escape argument.
632 Otherwise, it is non-special, e.g.\& in macro calls.
634 \&\f[CB]]\f[]
635 The closing bracket is only special in groff escape sequences; there
636 it terminates a long escape name or long escape argument.
638 Otherwise, it is non-special.
640 \f[CI]space\f[]
641 Space characters are only functional characters.
643 They separate the arguments in requests, macros, and strings, and the words
644 in text lines.
646 They are subject to groff's horizontal spacing calculations.
648 To get a defined space width, escape sequences like
649 .squoted_char "\[rs]\ "
650 (this is the escape character followed by a space),
651 .esc | ,
652 .esc ^ ,
654 .esc h
655 should be used.
657 .IP \f[CI]newline\f[]
658 In text paragraphs, newlines mostly behave like space characters.
660 Continuation lines can be specified by an escaped newline, i.e., by
661 specifying a backslash
662 .squoted_char \[rs]
663 as the last character of a line.
664 .IP \f[CI]tab\f[]
665 If a tab character occurs during text the interpreter makes a
666 horizontal jump to the next pre-defined tab position.
668 There is a sophisticated interface for handling tab positions.
671 .\" --------------------------------------------------------------------
672 .SH "NUMERICAL EXPRESSIONS"
673 .\" --------------------------------------------------------------------
676 .B numerical value
677 is a signed or unsigned integer or float with or without an appended
678 scaling indicator.
681 .B scaling indicator
682 is a one-character abbreviation for a unit of measurement.
684 A number followed by a scaling indicator signifies a size value.
686 By default, numerical values do not have a scaling indicator, i.e., they
687 are normal numbers.
691 .I roff
692 language defines the following scaling indicators.
696 .PD 0
699 .TPx
700 .B c
701 Centimeter
703 .TPx
704 .B i
705 Inch
707 .TPx
708 .B P
709 Pica\ \[eq]\ 1/6\ inch
711 .TPx
712 .B p
713 Point\ \[eq]\ 1/72\ inch
715 .TPx
716 .B m
717 Em\ \[eq]\ \f[R]the font size in points (approx.\& width of letter
718 `\f[CR]m\f[R]')
720 .TPx
721 .B M
722 100\^th \f[R]of an \f[CR]Em
724 .TPx
725 .B n
726 En\ \[eq]\ Em/2
728 .TPx
729 .B u
730 Basic unit for actual output device
732 .TPx
733 .B v
734 Vertical line space in basic units
735 scaled point\ \[eq]\ 1/\f[CI]sizescale\f[R] of a point (defined in
736 font \f[I]DESC\f[] file)
738 .TPx
739 .B f
740 Scale by 65536.
745 .B Numerical expressions
746 are combinations of the numerical values defined above with the
747 following arithmetical operators already defined in classical troff.
750 .PD 0
753 .TPx
754 .B +
755 Addition
757 .TPx
758 .B \-
759 Subtraction
761 .TPx
762 .B *
763 Multiplication
765 .TPx
766 .B /
767 Division
769 .TPx
770 .B %
771 Modulo
773 .TPx
774 .B =
775 Equals
777 .TPx
778 .B ==
779 Equals
781 .TPx
782 .B <
783 Less than
785 .TPx
786 .B >
787 Greater than
789 .TPx
790 .B <=
791 Less or equal
793 .TPx
794 .B >=
795 Greater or equal
797 .TPx
798 .B &
799 Logical and
801 .TPx
802 .B :
803 Logical or
805 .TPx
806 .B !
807 Logical not
809 .TPx
810 .B (
811 Grouping of expressions
813 .TPx
814 .B )
815 Close current grouping
821 Moreover,
822 .I groff
823 added the following operators for numerical expressions:
826 .PD 0
829 .TPx
830 \f[I]e1\f[CB]>?\f[I]e2\f[R]
831 The maximum of
832 .I e1
834 .IR e2 .
836 .TPx
837 \f[I]e1\f[CB]<?\f[I]e2\f[R]
838 The minimum of
839 .I e1
841 .IR e2 .
843 .TPx
844 \f[CB](\f[I]c\f[CB];\f[I]e\f[CB])\f[R]
845 Evaluate
846 .I e
847 using
848 .I c
849 as the default scaling indicator.
855 For details see the groff info file.
858 .\" --------------------------------------------------------------------
859 .SH CONDITIONS
860 .\" --------------------------------------------------------------------
862 .B Conditions
863 occur in tests raised by the
864 .request if ,
865 .request ie ,
866 and the
867 .request while
868 requests.
870 The following table characterizes the different types of conditions.
873 .PD 0
876 .TPx
877 .I N
878 A numerical expression
879 .I N
880 yields true if its value is greater than\~0.
882 .TPx
883 .BI ! N
884 True if the value of
885 .I I
886 is\~0.
888 .TPx
889 .BI ' s1 ' s2 '
890 True if string\~\c
891 .I s1
892 is identical to string\~\c
893 .IR s2 .
895 .TPx
896 .BI !' s1 ' s2 '
897 True if string\~\c
898 .I s1
899 is not identical to string\~\c
900 .IR s2 .
902 .TPx
903 .BI c ch
904 True if there is a glyph\~\c
905 .I ch
906 available.
908 .TPx
909 .BI d name
910 True if there is a string, macro, diversion, or request called
911 .IR name .
913 .TPx
914 .B e
915 Current page number is even.
917 .TPx
918 .B o
919 Current page number is odd.
921 .TPx
922 .BI m name
923 True if there is a color called
924 .IR name .
926 .TPx
927 .B n
928 Formatter is
929 .BR nroff .
931 .TPx
932 .BI r reg
933 True if there is a register named
934 .IR reg .
936 .TPx
937 .B t
938 Formatter is
939 .BR troff .
941 .TPx
942 .BI F font
943 True if there exists a font named
944 .IR font .
946 .TPx
947 .BI S style
948 True if a style named
949 .I style
950 has been registered.
956 .\" --------------------------------------------------------------------
957 .SH REQUESTS
958 .\" --------------------------------------------------------------------
960 This section provides a short reference for the predefined requests.
962 In groff, request, macro, and string names can be arbitrarily long.
964 No bracketing or marking of long names is needed.
967 Most requests take one or more arguments.
969 The arguments are separated by space characters (no tabs!); there is
970 no inherent limit for their length or number.
973 Some requests have optional arguments with a different behaviour.
975 Not all of these details are outlined here.
977 Refer to the groff info file and
978 .BR groff_diff (@MAN7EXT@)
979 for all details.
982 In the following request specifications, most argument names were
983 chosen to be descriptive.
985 Only the following denotations need clarification.
988 .PD 0
991 .TPx
992 .I c
993 denotes a single character.
995 .TPx
996 .I font
997 a font either specified as a font name or a font number.
999 .TPx
1000 .I anything
1001 all characters up to the end of the line or within
1002 .esc {
1004 .esc } .
1006 .TPx
1007 .I n
1008 is a numerical expression that evaluates to an integer value.
1010 .TPx
1011 .I N
1012 is an arbitrary numerical expression, signed or unsigned.
1014 .TPx
1015 .I \[+-]N
1016 has three meanings depending on its sign, described below.
1022 If an expression defined as
1023 .I \[+-]N
1024 starts with a
1025 .squoted_char +
1026 sign the resulting value of the expression is added to an already
1027 existing value inherent to the related request, e.g.\& adding to a number
1028 register.
1030 If the expression starts with a
1031 .squoted_char -
1032 the value of the expression is subtracted from the request value.
1035 Without a sign,
1036 .I N
1037 replaces the existing value directly.
1039 To assign a negative number either prepend\~0 or enclose the negative
1040 number in parentheses.
1043 .\" --------------------------------------------------------------------
1044 .SS "Request Short Reference"
1045 .\" --------------------------------------------------------------------
1047 .PD 0
1049 .TPx
1050 .REQ .
1051 Empty line, ignored.
1053 Useful for structuring documents.
1055 .TPx
1056 .REQ .\[rs]\[dq] "anything"
1057 Complete line is a comment.
1059 .TPx
1060 .REQ .ab "string
1061 Print
1062 .I string
1063 on standard error, exit program.
1065 .TPx
1066 .REQ .ad
1067 Begin line adjustment for output lines in current adjust mode.
1069 .TPx
1070 .REQ .ad "c"
1071 Start line adjustment in mode
1072 .I c
1073 (\f[CI]c\f[]\f[CR]\|\^\[eq]\|l,r,b,n\f[]).
1075 .TPx
1076 .REQ .af "register c"
1077 Assign format
1078 .I c
1080 .I register
1081 (\f[CI]c\f[]\f[CR]\|\^\[eq]\|l,i,I,a,A\f[]).
1083 .TPx
1084 .REQ .aln "alias register"
1085 Create alias name for
1086 .IR register .
1088 .TPx
1089 .REQ .als "alias object"
1090 Create alias name for request, string, macro, or diversion
1091 .IR object .
1093 .TPx
1094 .REQ .am "macro"
1095 Append to
1096 .I macro
1097 until
1098 .B ..\&
1099 is encountered.
1101 .TPx
1102 .REQ .am "macro end"
1103 Append to
1104 .I macro
1105 until
1106 .BI . end
1107 is called.
1109 .TPx
1110 .REQ .am1 "macro"
1111 Same as
1112 .request .am
1113 but with compatibility mode switched off during macro expansion.
1115 .TPx
1116 .REQ .am1 "macro end"
1117 Same as
1118 .request .am
1119 but with compatibility mode switched off during macro expansion.
1121 .TPx
1122 .REQ .ami "macro"
1123 Append to a macro whose name is contained in the string register
1124 .I macro
1125 until
1126 .B ..\&
1127 is encountered.
1129 .TPx
1130 .REQ .ami "macro end"
1131 Append to a macro indirectly.
1132 .I macro
1134 .I end
1135 are string registers whose contents are interpolated for the macro name
1136 and the end macro, respectively.
1138 .TPx
1139 .REQ .ami1 "macro"
1140 Same as
1141 .request .ami
1142 but with compatibility mode switched off during macro expansion.
1144 .TPx
1145 .REQ .ami1 "macro end"
1146 Same as
1147 .request .ami
1148 but with compatibility mode switched off during macro expansion.
1150 .TPx
1151 .REQ .as "stringvar anything"
1152 Append
1153 .I anything
1155 .IR stringvar .
1157 .TPx
1158 .REQ .as1 "stringvar anything"
1159 Same as
1160 .request .as
1161 but with compatibility mode switched off during string expansion.
1163 .TPx
1164 .REQ .asciify "diversion"
1165 Unformat ASCII characters, spaces, and some escape sequences in
1166 .IR diversion .
1168 .TPx
1169 .REQ .backtrace
1170 Print a backtrace of the input on stderr.
1172 .TPx
1173 .REQ .bd "font N"
1174 Embolden
1175 .I font
1177 .IR N -1
1178 units.
1180 .TPx
1181 .REQ .bd "S font N"
1182 Embolden Special Font
1183 .I S
1184 when current font is
1185 .IR font .
1187 .TPx
1188 .REQ .blm
1189 Unset the blank line macro.
1191 .TPx
1192 .REQ .blm "macro"
1193 Set the blank line macro to
1194 .IR macro .
1196 .TPx
1197 .REQ .box
1198 End current diversion.
1200 .TPx
1201 .REQ .box "macro"
1202 Divert to
1203 .IR macro ,
1204 omitting a partially filled line.
1206 .TPx
1207 .REQ .boxa
1208 End current diversion.
1210 .TPx
1211 .REQ .boxa "macro"
1212 Divert and append to
1213 .IR macro ,
1214 omitting a partially filled line.
1216 .TPx
1217 .REQ .bp
1218 Eject current page and begin new page.
1220 .TPx
1221 .REQ .bp "\[+-]N"
1222 Eject current page; next page number
1223 .IR \[+-]N .
1225 .TPx
1226 .REQ .br
1227 Line break.
1229 .TPx
1230 .REQ .brp
1231 Break and spread output line.
1232 Same as
1233 .esc p .
1235 .TPx
1236 .REQ .break
1237 Break out of a while loop.
1239 .TPx
1240 .REQ .c2
1241 Reset no-break control character to
1242 .dquoted_char ' .
1244 .TPx
1245 .REQ .c2 "c"
1246 Set no-break control character to
1247 .IR c .
1249 .TPx
1250 .REQ .cc
1251 Reset control character to
1252 .squoted_char . .
1254 .TPx
1255 .REQ .cc "c"
1256 Set control character to
1257 .IR c .
1259 .TPx
1260 .REQ .ce
1261 Center the next input line.
1263 .TPx
1264 .REQ .ce "N"
1265 Center following
1266 .I N
1267 input lines.
1269 .TPx
1270 .REQ .cf "filename"
1271 Copy contents of file
1272 .I filename
1273 unprocessed to stdout or to the diversion.
1275 .TPx
1276 .REQ .cflags "mode c1 c2 .\|.\|.\&"
1277 Treat characters
1278 .IR c1 ,
1279 .IR c2 ,
1280 .I .\|.\|.\&
1281 according to
1282 .I mode
1283 number.
1285 .TPx
1286 .REQ .ch "trap N"
1287 Change
1288 .I trap
1289 location
1291 .IR N .
1293 .TPx
1294 .REQ .char "c anything"
1295 Define entity
1296 .I c
1297 as string
1298 .IR anything .
1300 .TPx
1301 .REQ .chop "object"
1302 Chop the last character off macro, string, or diversion
1303 .IR object .
1305 .TPx
1306 .REQ .close "stream"
1307 Close the
1308 .IR stream .
1310 .TPx
1311 .REQ .color
1312 Enable colors.
1314 .TPx
1315 .REQ .color "N"
1317 .I N
1318 is zero disable colors, otherwise enable them.
1320 .TPx
1321 .REQ .composite "from to"
1322 Map glyph name
1323 .I from
1324 to glyph name
1325 .I to
1326 while constructing a composite glyph name.
1328 .TPx
1329 .REQ .continue
1330 Finish the current iteration of a while loop.
1332 .TPx
1333 .REQ .cp
1334 Enable compatibility mode.
1336 .TPx
1337 .REQ .cp "N"
1339 .I N
1340 is zero disable compatibility mode, otherwise enable it.
1342 .TPx
1343 .REQ .cs "font N M"
1344 Set constant character width mode for
1345 .I font
1347 .IR N /36
1348 ems with em
1349 .IR M .
1351 .TPx
1352 .REQ .cu "N"
1353 Continuous underline in nroff, like
1354 .request .ul
1355 in troff.
1357 .TPx
1358 .REQ .da
1359 End current diversion.
1361 .TPx
1362 .REQ .da "macro"
1363 Divert and append to
1364 .IR macro .
1366 .TPx
1367 .REQ .de "macro"
1368 Define or redefine
1369 .I macro
1370 until
1371 .B ..\&
1372 is encountered.
1374 .TPx
1375 .REQ .de "macro end"
1376 Define or redefine
1377 .I macro
1378 until
1379 .BI . end
1380 is called.
1382 .TPx
1383 .REQ .de1 "macro"
1384 Same as
1385 .request .de
1386 but with compatibility mode switched off during macro expansion.
1388 .TPx
1389 .REQ .de1 "macro end"
1390 Same as
1391 .request .de
1392 but with compatibility mode switched off during macro expansion.
1394 .TPx
1395 .REQ .defcolor "color scheme component"
1396 Define or redefine a color with name
1397 .IR color .
1398 .I scheme
1399 can be
1400 .BR rgb ,
1401 .BR cym ,
1402 .BR cymk ,
1403 .BR gray ,
1405 .BR grey .
1406 .I component
1407 can be single components specified as fractions in the range 0 to 1
1408 (default scaling indicator\~\c
1409 .scaleindicator f ),
1410 as a string of two-digit hexadecimal color components with a leading
1411 .BR # ,
1412 or as a string of four-digit hexadecimal components with two leading
1413 .BR # .
1414 The color
1415 .B default
1416 can't be redefined.
1418 .TPx
1419 .REQ .dei "macro"
1420 Define or redefine a macro whose name is contained in the string register
1421 .I macro
1422 until
1423 .B ..\&
1424 is encountered.
1426 .TPx
1427 .REQ .dei "macro end"
1428 Define or redefine a macro indirectly.
1429 .I macro
1431 .I end
1432 are string registers whose contents are interpolated for the macro name
1433 and the end macro, respectively.
1435 .TPx
1436 .REQ .dei1 "macro"
1437 Same as
1438 .request .dei
1439 but with compatibility mode switched off during macro expansion.
1441 .TPx
1442 .REQ .dei1 "macro end"
1443 Same as
1444 .request .dei
1445 but with compatibility mode switched off during macro expansion.
1447 .TPx
1448 .REQ .device "anything"
1449 Write
1450 .I anything
1451 to the intermediate output as a device control function.
1453 .TPx
1454 .REQ .devicem "name"
1455 Write contents of macro or string
1456 .I name
1457 uninterpreted to the intermediate output as a device control function.
1459 .TPx
1460 .REQ .di
1461 End current diversion.
1463 .TPx
1464 .REQ .di "macro"
1465 Divert to
1466 .IR macro .
1468 .TPx
1469 .REQ .do "name"
1470 Interpret
1471 .BI . name
1472 with compatibility mode disabled.
1474 .TPx
1475 .REQ .ds "stringvar anything"
1477 .I stringvar
1479 .IR anything .
1481 .TPx
1482 .REQ .ds1 "stringvar anything"
1483 Same as
1484 .request .ds
1485 but with compatibility mode switched off during string expansion.
1487 .TPx
1488 .REQ .dt "N trap"
1489 Set diversion trap to position
1490 .I N
1491 (default scaling indicator\~\c
1492 .scaleindicator v ).
1494 .TPx
1495 .REQ .ec
1496 Reset escape character to
1497 .squoted_char \[rs] .
1499 .TPx
1500 .REQ .ec "c"
1501 Set escape character to
1502 .IR c .
1504 .TPx
1505 .REQ .ecr
1506 Restore escape character saved with
1507 .request .ecs .
1509 .TPx
1510 .REQ .ecs
1511 Save current escape character.
1513 .TPx
1514 .REQ .el "anything"
1515 Else part for if-else (\c
1516 .request ie )
1517 request.
1519 .TPx
1520 .REQ .em "macro"
1522 .I macro
1523 is run after the end of input.
1525 .TPx
1526 .REQ .eo
1527 Turn off escape character mechanism.
1529 .TPx
1530 .REQ .ev
1531 Switch to previous environment and pop it off the stack.
1533 .TPx
1534 .REQ .ev "env"
1535 Push down environment number or name
1536 .I env
1537 to the stack and switch to it.
1539 .TPx
1540 .REQ .evc "env"
1541 Copy the contents of environment
1542 .I env
1543 to the current environment.
1544 No pushing or popping.
1546 .TPx
1547 .REQ .ex
1548 Exit from roff processing.
1550 .TPx
1551 .REQ .fam
1552 Return to previous font family.
1554 .TPx
1555 .REQ .fam "name"
1556 Set the current font family to
1557 .IR name .
1559 .TPx
1560 .REQ .fc
1561 Disable field mechanism.
1563 .TPx
1564 .REQ .fc "a"
1565 Set field delimiter to\~\c
1566 .I a
1567 and pad glyph to space.
1569 .TPx
1570 .REQ .fc "a b"
1571 Set field delimiter to\~\c
1572 .I a
1573 and pad glyph to\~\c
1574 .IR b .
1576 .TPx
1577 .REQ .fchar "c anything"
1578 Define fallback character (or glyph)
1579 .I c
1580 as string
1581 .IR anything .
1583 .TPx
1584 .REQ .fcolor
1585 Set fill color to previous fill color.
1587 .TPx
1588 .REQ .fcolor "c"
1589 Set fill color to
1590 .IR c .
1592 .TPx
1593 .REQ .fi
1594 Fill output lines.
1596 .TPx
1597 .REQ .fl
1598 Flush output buffer.
1600 .TPx
1601 .REQ .fp "n font"
1602 Mount
1603 .I font
1604 on position
1605 .IR n .
1607 .TPx
1608 .REQ .fp "n internal external"
1609 Mount font with long
1610 .I external
1611 name to short
1612 .I internal
1613 name on position
1614 .IR n .
1616 .TPx
1617 .REQ .fschar "f c anything"
1618 Define fallback character (or glyph)
1619 .I c
1620 for font
1621 .I f
1622 as string
1623 .IR anything .
1625 .TPx
1626 .REQ .fspecial "font"
1627 Reset list of special fonts for
1628 .I font
1629 to be empty.
1631 .TPx
1632 .REQ .fspecial "font s1 s2 .\|.\|.\&"
1633 When the current font is
1634 .IR font ,
1635 then the fonts
1636 .IR s1 ,
1637 .IR s2 ,
1638 .I .\|.\|.\&
1639 are special.
1641 .TPx
1642 .REQ .ft
1643 Return to previous font.
1644 Same as
1645 .request \[rs]f[]
1647 .request \[rs]fP .
1649 .TPx
1650 .REQ .ft "font"
1651 Change to font name or number
1652 .IR font ;
1653 same as
1654 .esc[] f font
1655 escape sequence.
1657 .TPx
1658 .REQ .ftr "font1 font2"
1659 Translate
1660 .I font1
1662 .IR font2 .
1664 .TPx
1665 .REQ .fzoom "font"
1666 Don't magnify
1667 .IR font .
1669 .TPx
1670 .REQ .fzoom "font zoom"
1671 Set zoom factor for
1672 .I font
1673 (in multiples of 1/1000th).
1675 .TPx
1676 .REQ .gcolor
1677 Set glyph color to previous glyph color.
1679 .TPx
1680 .REQ .gcolor "c"
1681 Set glyph color to
1682 .IR c .
1684 .TPx
1685 .REQ .hc
1686 Remove additional hyphenation indicator character.
1688 .TPx
1689 .REQ .hc "c"
1690 Set up additional hyphenation indicator character\~\c
1691 .IR c .
1693 .TPx
1694 .REQ .hcode "c1 code1 c2 code2 .\|.\|.\&"
1695 Set the hyphenation code of character
1696 .I c1
1698 .IR code1 ,
1699 that of
1700 .I c2
1702 .IR code2 ,
1703 etc.
1705 .TPx
1706 .REQ .hla "lang"
1707 Set the current hyphenation language to
1708 .IR lang .
1710 .TPx
1711 .REQ .hlm "n"
1712 Set the maximum number of consecutive hyphenated lines to
1713 .IR n .
1715 .TPx
1716 .REQ .hpf "file"
1717 Read hyphenation patterns from
1718 .IR file .
1720 .TPx
1721 .REQ .hpfa "file"
1722 Append hyphenation patterns from
1723 .IR file .
1725 .TPx
1726 .REQ .hpfcode "a b c d .\|.\|.\&"
1727 Set input mapping for
1728 .request .hpf .
1730 .TPx
1731 .REQ .hw "words"
1732 List of
1733 .I words
1734 with exceptional hyphenation.
1736 .TPx
1737 .REQ .hy "N"
1738 Switch to hyphenation mode
1739 .IR N .
1741 .TPx
1742 .REQ .hym "n"
1743 Set the hyphenation margin to
1744 .I n
1745 (default scaling indicator\~\c
1746 .scaleindicator m ).
1748 .TPx
1749 .REQ .hys "n"
1750 Set the hyphenation space to
1751 .IR n .
1753 .TPx
1754 .REQ .ie "cond anything"
1756 .I cond
1757 then
1758 .I anything
1759 else goto
1760 .request .el .
1762 .TPx
1763 .REQ .if "cond anything"
1765 .I cond
1766 then
1767 .IR anything ;
1768 otherwise do nothing.
1770 .TPx
1771 .REQ .ig
1772 Ignore text until
1773 .B ..\&
1774 is encountered.
1776 .TPx
1777 .REQ .ig "end"
1778 Ignore text until
1779 .BI . end
1780 is called.
1782 .TPx
1783 .REQ .in
1784 Change to previous indentation value.
1786 .TPx
1787 .REQ .in "\[+-]N"
1788 Change indentation according to
1789 .I \[+-]N
1790 (default scaling indicator\~\c
1791 .scaleindicator m ).
1793 .TPx
1794 .REQ .it "N trap"
1795 Set an input-line count trap for the next
1796 .I N
1797 lines.
1799 .TPx
1800 .REQ .itc "N trap"
1801 Same as
1802 .request .it
1803 but count lines interrupted with
1804 .esc c
1805 as one line.
1807 .TPx
1808 .REQ .kern
1809 Enable pairwise kerning.
1811 .TPx
1812 .REQ .kern "n"
1814 .I n
1815 is zero, disable pairwise kerning, otherwise enable it.
1817 .TPx
1818 .REQ .lc
1819 Remove leader repetition glyph.
1821 .TPx
1822 .REQ .lc "c"
1823 Set leader repetition glyph to\~\c
1824 .IR c .
1826 .TPx
1827 .REQ .length "register anything"
1828 Write the length of the string
1829 .I anything
1831 .IR register .
1833 .TPx
1834 .REQ .linetabs
1835 Enable line-tabs mode (i.e., calculate tab positions relative to output
1836 line).
1838 .TPx
1839 .REQ .linetabs "n"
1841 .I n
1842 is zero, disable line-tabs mode, otherwise enable it.
1844 .TPx
1845 .REQ .lf "N"
1846 Set input line number to
1847 .IR N .
1849 .TPx
1850 .REQ .lf "N file"
1851 Set input line number to
1852 .I N
1853 and filename to
1854 .IR file .
1856 .TPx
1857 .REQ .lg "N"
1858 Ligature mode on if
1859 .IR N >0.
1861 .TPx
1862 .REQ .ll
1863 Change to previous line length.
1865 .TPx
1866 .REQ .ll "\[+-]N"
1867 Set line length according to
1868 .I \[+-]N
1869 (default length
1870 .scalednumber 6.5 i ,
1871 default scaling indicator\~\c
1872 .scaleindicator m ).
1874 .TPx
1875 .REQ .ls
1876 Change to the previous value of additional intra-line skip.
1878 .TPx
1879 .REQ .ls "N"
1880 Set additional intra-line skip value to
1881 .IR N ,
1882 i.e.,
1883 .IR N -1
1884 blank lines are inserted after each text output line.
1886 .TPx
1887 .REQ .lt "\[+-]N"
1888 Length of title (default scaling indicator\~\c
1889 .scaleindicator m ).
1891 .TPx
1892 .REQ .mc
1893 Margin glyph off.
1895 .TPx
1896 .REQ .mc "c"
1897 Print glyph\~\c
1898 .I c
1899 after each text line at actual distance from right margin.
1901 .TPx
1902 .REQ .mc "c N"
1903 Set margin glyph to\~\c
1904 .I c
1905 and distance to\~\c
1906 .I N
1907 from right margin (default scaling indicator\~\c
1908 .scaleindicator m ).
1910 .TPx
1911 .REQ .mk "register"
1912 Mark current vertical position in
1913 .IR register .
1915 .TPx
1916 .REQ .mso "file"
1917 The same as
1918 .request .so
1919 except that
1920 .I file
1921 is searched in the tmac directories.
1923 .TPx
1924 .REQ .na
1925 No output-line adjusting.
1927 .TPx
1928 .REQ .ne
1929 Need a one-line vertical space.
1931 .TPx
1932 .REQ .ne "N"
1933 Need
1934 .I N
1935 vertical space (default scaling indicator\~\c
1936 .scaleindicator v ).
1938 .TPx
1939 .REQ .nf
1940 No filling or adjusting of output-lines.
1942 .TPx
1943 .REQ .nh
1944 No hyphenation.
1946 .TPx
1947 .REQ .nm
1948 Number mode off.
1950 .TPx
1951 .REQ .nm "\[+-]N \fR[\fPM \fR[\fPS \fR[\fPI\fR]]]\fP"
1952 In line number mode, set number, multiple, spacing, and indentation.
1954 .TPx
1955 .REQ .nn
1956 Do not number next line.
1958 .TPx
1959 .REQ .nn "N"
1960 Do not number next
1961 .I N
1962 lines.
1964 .TPx
1965 .REQ .nop "anything"
1966 Always process
1967 .IR anything .
1969 .TPx
1970 .REQ .nr "register \[+-]N \fR[\fPM\fR]\fP"
1971 Define or modify
1972 .I register
1973 using
1974 .I \[+-]N
1975 with auto-increment
1976 .IR M .
1978 .TPx
1979 .REQ .nroff
1980 Make the built-in conditions
1981 .B n
1982 true and
1983 .B t
1984 false.
1986 .TPx
1987 .REQ .ns
1988 Turn on no-space mode.
1990 .TPx
1991 .REQ .nx
1992 Immediately jump to end of current file.
1994 .TPx
1995 .REQ .nx "filename"
1996 Immediately continue processing with file
1997 .IR file .
1999 .TPx
2000 .REQ .open "stream filename"
2001 Open
2002 .I filename
2003 for writing and associate the stream named
2004 .I stream
2005 with it.
2007 .TPx
2008 .REQ .opena "stream filename"
2009 Like
2010 .request .open
2011 but append to it.
2013 .TPx
2014 .REQ .os
2015 Output vertical distance that was saved by the
2016 .request sv
2017 request.
2019 .TPx
2020 .REQ .output "string"
2021 Emit
2022 .I string
2023 directly to intermediate output, allowing leading whitespace if
2024 .I string
2025 starts with
2026 \&\f[CB]\[dq]\f[]
2027 (which is stripped off).
2029 .TPx
2030 .REQ .pc
2031 Reset page number character to\~\c
2032 .squoted_char % .
2034 .TPx
2035 .REQ .pc "c"
2036 Page number character.
2038 .TPx
2039 .REQ .pev
2040 Print the current environment and each defined environment
2041 state to stderr.
2043 .TPx
2044 .REQ .pi "program"
2045 Pipe output to
2046 .I program
2047 (nroff only).
2049 .TPx
2050 .REQ .pl
2051 Set page length to default
2052 .scalednumber 11 i .
2053 The current page length is stored in
2054 .register .p .
2056 .TPx
2057 .REQ .pl "\[+-]N"
2058 Change page length to
2059 .I \[+-]N
2060 (default scaling indicator\~\c
2061 .scaleindicator v ).
2063 .TPx
2064 .REQ .pm
2065 Print macro names and sizes (number of blocks of 128 bytes).
2067 .TPx
2068 .REQ .pm "t"
2069 Print only total of sizes of macros (number of 128 bytes blocks).
2071 .TPx
2072 .REQ .pn "\[+-]N"
2073 Next page number
2074 .IR N .
2076 .TPx
2077 .REQ .pnr
2078 Print the names and contents of all currently defined number registers
2079 on stderr.
2081 .TPx
2082 .REQ .po
2083 Change to previous page offset.
2085 The current page offset is available in
2086 .register .o .
2088 .TPx
2089 .REQ .po "\[+-]N"
2090 Page offset
2091 .IR N .
2093 .TPx
2094 .REQ .ps
2095 Return to previous point size.
2096 .TPx
2097 .REQ .ps "\[+-]N"
2098 Point size; same as
2099 .esc[] s \[+-]N .
2101 .TPx
2102 .REQ .psbb "filename"
2103 Get the bounding box of a PostScript image
2104 .IR filename .
2106 .TPx
2107 .REQ .pso "command"
2108 This behaves like the
2109 .request so
2110 request except that input comes from the standard output of
2111 .IR command .
2113 .TPx
2114 .REQ .ptr
2115 Print the names and positions of all traps (not including input line
2116 traps and diversion traps) on stderr.
2118 .TPx
2119 .REQ .pvs
2120 Change to previous post-vertical line spacing.
2122 .TPx
2123 .REQ .pvs "\[+-]N"
2124 Change post-vertical line spacing according to
2125 .I \[+-]N
2126 (default scaling indicator\~\c
2127 .scaleindicator p ).
2129 .TPx
2130 .REQ .rchar "c1 c2 .\|.\|.\&"
2131 Remove the definitions of entities
2132 .IR c1 ,
2133 .IR c2 ,
2134 .I .\|.\|.\&
2136 .TPx
2137 .REQ .rd "prompt"
2138 Read insertion.
2140 .TPx
2141 .REQ .return
2142 Return from a macro.
2144 .TPx
2145 .REQ .return "anything"
2146 Return twice, namely from the macro at the current level and from the macro
2147 one level higher.
2149 .TPx
2150 .REQ .rfschar "f c1 c2 .\|.\|.\&"
2151 Remove the definitions of entities
2152 .IR c1 ,
2153 .IR c2 ,
2154 .I .\|.\|.\&
2155 for font
2156 .IR f .
2158 .TPx
2159 .REQ .rj "n"
2160 Right justify the next
2161 .I n
2162 input lines.
2164 .TPx
2165 .REQ .rm "name"
2166 Remove request, macro, or string
2167 .IR name .
2169 .TPx
2170 .REQ .rn "old new"
2171 Rename request, macro, or string
2172 .I old
2174 .IR new .
2176 .TPx
2177 .REQ .rnn "reg1 reg2"
2178 Rename register
2179 .I reg1
2181 .IR reg2 .
2183 .TPx
2184 .REQ .rr "register"
2185 Remove
2186 .IR register .
2188 .TPx
2189 .REQ .rs
2190 Restore spacing; turn no-space mode off.
2192 .TPx
2193 .REQ .rt "\[+-]N"
2194 Return
2195 .I (upward only)
2196 to marked vertical place (default scaling indicator\~\c
2197 .scaleindicator v ).
2199 .TPx
2200 .REQ .schar "c anything"
2201 Define global fallback character (or glyph)\~\c
2202 .I c
2203 as string
2204 .IR anything .
2206 .TPx
2207 .REQ .shc
2208 Reset soft hyphen glyph to
2209 .esc (hy .
2211 .TPx
2212 .REQ .shc "c"
2213 Set the soft hyphen glyph to\~\c
2214 .IR c .
2216 .TPx
2217 .REQ .shift "n"
2218 In a macro, shift the arguments by
2219 .IR n \~\c
2220 positions.
2222 .TPx
2223 .REQ .sizes "s1 s2 .\|.\|.\& sn \fB[0]\fP"
2224 Set available font sizes similar to the
2225 .B sizes
2226 command in a
2227 .B DESC
2228 file.
2230 .TPx
2231 .REQ .so "filename"
2232 Include source file.
2234 .TPx
2235 .REQ .sp
2236 Skip one line vertically.
2238 .TPx
2239 .REQ .sp "N"
2240 Space vertical distance
2241 .I N
2242 up or down according to sign of
2243 .I N
2244 (default scaling indicator\~\c
2245 .scaleindicator v ).
2247 .TPx
2248 .REQ .special
2249 Reset global list of special fonts to be empty.
2251 .TPx
2252 .REQ .special "s1 s2 .\|.\|.\&"
2253 Fonts
2254 .IR s1 ,
2255 .IR s2 ,
2256 etc.\& are special and are searched for glyphs not in the
2257 current font.
2259 .TPx
2260 .REQ .spreadwarn
2261 Toggle the spread warning on and off without changing its value.
2263 .TPx
2264 .REQ .spreadwarn "limit"
2265 Emit a warning if each space in an output line is widened by
2266 .I limit
2267 or more (default scaling indicator\~\c
2268 .scaleindicator m ).
2270 .TPx
2271 .REQ .ss "N"
2272 Set space glyph size to
2273 .IR N /12
2274 of the space width in the current font.
2276 .TPx
2277 .REQ .ss "N M"
2278 Set space glyph size to
2279 .IR N /12
2280 and sentence space size set to
2281 .IR M /12
2282 of the space width in the current font.
2284 .TPx
2285 .REQ .sty "n style"
2286 Associate
2287 .I style
2288 with font position
2289 .IR n .
2291 .TPx
2292 .REQ .substring "xx n1 n2"
2293 Replace the string named
2294 .I xx
2295 with the substring defined by the indices
2296 .I n1
2298 .IR n2 .
2300 .TPx
2301 .REQ .sv
2302 Save
2303 .scalednumber "1 v"
2304 of vertical space.
2305 .TPx
2306 .REQ .sv "N"
2307 Save the vertical distance
2308 .I N
2309 for later output with
2310 .request os
2311 request (default scaling indicator\~\c
2312 .scaleindicator v ).
2314 .TPx
2315 .REQ .sy "command-line"
2316 Execute program
2317 .IR command-line .
2319 .TPx
2320 .REQ .ta "T N"
2321 Set tabs after every position that is a multiple of
2322 .I N
2323 (default scaling indicator\~\c
2324 .scaleindicator m ).
2325 .TPx
2326 .REQ .ta "n1 n2 .\|.\|.\& nn \f[CB]T\f[] r1 r2 .\|.\|.\& rn"
2327 Set tabs at positions
2328 .IR n1 ,
2329 .IR n2 ,
2330 .Text .\|.\|.,
2331 .IR nn ,
2332 then set tabs at
2333 .IR nn + r1 ,
2334 .IR nn + r2 ,
2335 .Text .\|.\|.,
2336 .IR nn + rn ,
2337 then at
2338 .IR nn + rn + r1 ,
2339 .IR nn + rn + r2 ,
2340 .Text .\|.\|.,
2341 .IR nn + rn + rn ,
2342 and so on.
2344 .\".TPx
2345 .\".REQ .tar
2346 .\"Restore internally saved tab positions.
2347 .\".
2348 .\".TPx
2349 .\".REQ .tas
2350 .\"Save tab positions internally.
2352 .TPx
2353 .REQ .tc
2354 Remove tab repetition glyph.
2355 .TPx
2356 .REQ .tc "c"
2357 Set tab repetition glyph to\~\c
2358 .IR c .
2360 .TPx
2361 .REQ .ti "\[+-]N"
2362 Temporary indent next line (default scaling indicator\~\c
2363 .scaleindicator m ).
2365 .TPx
2366 .REQ .tkf "font s1 n1 s2 n2"
2367 Enable track kerning for
2368 .IR font .
2370 .TPx
2371 .REQ .tl "\f[CB]\[cq]\f[]left\f[CB]\[cq]\f[]center\f[CB]\[cq]\f[]right\f[CB]\[cq]\f[]"
2372 Three-part title.
2374 .TPx
2375 .REQ .tm "anything"
2376 Print
2377 .I anything
2378 on stdout.
2380 .TPx
2381 .REQ .tm1 "anything"
2382 Print
2383 .I anything
2384 on stdout, allowing leading whitespace if
2385 .I anything
2386 starts with
2387 \&\f[CB]\[dq]\f[]
2388 (which is stripped off).
2390 .TPx
2391 .REQ .tmc "anything"
2392 Similar to
2393 .request .tm1
2394 without emitting a final newline.
2396 .TPx
2397 .REQ .tr "abcd.\|.\|.\&"
2398 Translate
2399 .I a
2401 .IR b ,
2402 .I c
2404 .IR d ,
2405 etc.\& on output.
2407 .TPx
2408 .REQ .trf "filename"
2409 Transparently output the contents of file
2410 .IR filename .
2412 .TPx
2413 .REQ .trin "abcd.\|.\|.\&"
2414 This is the same as the
2415 .request tr
2416 request except that the
2417 .B asciify
2418 request uses the character code (if any) before the character
2419 translation.
2421 .TPx
2422 .REQ .trnt "abcd.\|.\|.\&"
2423 This is the same as the
2424 .request tr
2425 request except that the translations do not apply to text that is
2426 transparently throughput into a diversion with
2427 .esc ! .
2429 .TPx
2430 .REQ .troff
2431 Make the built-in conditions
2432 .B t
2433 true and
2434 .B n
2435 false.
2437 .TPx
2438 .REQ .uf "font"
2439 Set underline font to
2440 .I font
2441 (to be switched to by
2442 .request .ul ).
2444 .TPx
2445 .REQ .ul "N"
2446 Underline (italicize in troff)
2447 .I N
2448 input lines.
2450 .TPx
2451 .REQ .unformat "diversion"
2452 Unformat space characters and tabs in
2453 .IR diversion ,
2454 preserving font information.
2455 .TPx
2456 .REQ .vpt "n"
2457 Enable vertical position traps if
2458 .I n
2459 is non-zero, disable them otherwise.
2461 .TPx
2462 .REQ .vs
2463 Change to previous vertical base line spacing.
2465 .TPx
2466 .REQ .vs "\[+-]N"
2467 Set vertical base line spacing to
2468 .I \[+-]N
2469 (default scaling indicator\~\c
2470 .scaleindicator p ).
2472 .TPx
2473 .REQ .warn "n"
2474 Set warnings code to
2475 .IR n .
2477 .TPx
2478 .REQ .warnscale "si"
2479 Set scaling indicator used in warnings to
2480 .IR si .
2482 .TPx
2483 .REQ .wh "N"
2484 Remove (first) trap at position
2485 .IR N .
2487 .TPx
2488 .REQ .wh "N trap"
2489 Set location trap; negative means from page bottom.
2491 .TPx
2492 .REQ .while "cond anything"
2493 While condition
2494 .I cond
2495 is true, accept
2496 .I anything
2497 as input.
2499 .TPx
2500 .REQ .write "stream anything"
2501 Write
2502 .I anything
2503 to the stream named
2504 .IR stream .
2506 .TPx
2507 .REQ .writec "stream anything"
2508 Similar to
2509 .request .write
2510 without emitting a final newline.
2512 .TPx
2513 .REQ .writem "stream xx"
2514 Write contents of macro or string
2515 .I xx
2516 to the stream named
2517 .IR stream .
2522 Besides these standard groff requests, there might be further macro
2523 calls.
2524 They can originate from a macro package (see
2525 .BR roff (@MAN7EXT@)
2526 for an overview) or from a preprocessor.
2529 Preprocessor macros are easy to be recognized.
2531 They enclose their code into a pair of characteristic macros.
2535 box, center, tab (@);
2536 c | c | c
2537 CfCB | CfCB | CfCB.
2538 preprocessor@start macro@ end macro
2540 eqn@.EQ@.EN
2541 grap@.G1@.G2
2542 grn@.GS@.GE
2543 pic@.PS@.PE
2544 refer@.R1@.R2
2545 soelim@\f[I]none@\f[I]none
2546 tbl@.TS@.TE
2551 .\" --------------------------------------------------------------------
2552 .SH "ESCAPE SEQUENCES"
2553 .\" --------------------------------------------------------------------
2555 Escape sequences are in-line language elements usually introduced by a
2556 backslash
2557 .squoted_char \[rs]
2558 and followed by an escape name and sometimes by a required argument.
2560 Input processing is continued directly after the escaped character or
2561 the argument (without an intervening separation character).
2563 So there must be a way to determine the end of the escape name and the
2564 end of the argument.
2567 This is done by enclosing names (escape name and arguments consisting
2568 of a variable name) by a pair of brackets
2569 .BI \[lB] name \[rB] 
2570 and constant arguments (number expressions and characters) by
2571 apostrophes (ASCII 0x27) like
2572 .BI \[cq] constant \[cq] \f[R].
2575 There are abbreviations for short names.
2577 Two-character escape names can be specified by an opening parenthesis
2578 like
2579 .esc ( xy
2581 .esc *( xy
2582 without a closing counterpart.
2584 And all one-character names different from the special characters
2585 .squoted_char [
2587 .squoted_char (
2588 can even be specified without a marker, for example
2589 .esc n c
2591 .esc $ c.
2594 Constant arguments of length\~1 can omit the marker apostrophes, too,
2595 but there is no two-character analogue.
2598 While one-character escape sequences are mainly used for in-line
2599 functions and system related tasks, the two-letter names following the
2600 .esc (
2601 construct are glyphs predefined by the roff system; these are called
2602 `Special Characters' in the classical documentation.
2604 Escapes sequences of the form
2605 .esc[] "" name
2606 denote glyphs too.
2609 .\" --------------------------------------------------------------------
2610 .SS "Single-Character Escapes"
2611 .\" --------------------------------------------------------------------
2613 .PD 0
2615 .\" --------- comments ---------
2618 .ESC \[dq]
2619 Start of a comment.
2621 Everything up to the end of the line is ignored.
2624 .ESC #
2625 Everything up to and including the next newline is ignored.
2627 This is interpreted in copy mode.
2629 This is like
2630 .esc \[dq]
2631 except that the terminating newline is ignored as well.
2633 .\" --------- strings ---------
2636 .ESC *\f[I]s\f[]
2637 The string stored in the string variable with one-character name\~\c
2638 .IR s .
2641 .ESC *(\f[I]st\f[]
2642 The string stored in the string variable with two-character name
2643 .IR st .
2646 .ESC[] * string
2647 The string stored in the string variable with name
2648 .I string
2649 (with arbitrary length).
2652 .ESC[] * "stringvar arg1 arg2 .\|.\|."
2653 The string stored in the string variable with arbitrarily long name
2654 .IR stringvar ,
2655 taking
2656 .IR arg1 ,
2657 .IR arg2 ,
2658 .I .\|.\|.\&
2659 as arguments.
2661 .\" --------- macro arguments ---------
2664 .ESC $0
2665 The name by which the current macro was invoked.
2668 .request als
2669 request can make a macro have more than one name.
2672 .ESC $ x
2673 Macro or string argument with one-digit number\~\c
2674 .I x
2675 in the range 1 to\~9.
2678 .ESC $( xy
2679 Macro or string argument with two-digit number
2680 .I xy
2681 (larger than zero).
2684 .ESC[] $ nexp
2685 Macro or string argument with number
2686 .IR nexp ,
2687 where
2688 .I nexp
2689 is a numerical expression evaluating to an integer \[>=]1.
2692 .ESC $*
2693 In a macro or string, the concatenation of all the arguments separated
2694 by spaces.
2697 .ESC $@
2698 In a macro or string, the concatenation of all the arguments with each
2699 surrounded by double quotes, and separated by spaces.
2702 .ESC $^
2703 In a macro, the representation of all parameters as if they were an
2704 argument to the
2705 .request ds
2706 request.
2708 .\" --------- escaped characters ---------
2711 .ESC \[rs]
2712 reduces to a single backslash; useful to delay its interpretation as
2713 escape character in copy mode.
2715 For a printable backslash, use
2716 .esc e ,
2717 or even better
2718 .esc [rs] ,
2719 to be independent from the current escape character.
2722 .ESC \[cq]
2723 The acute accent \[aa]; same as
2724 .esc (aa .
2725 Unescaped: apostrophe, right quotation mark, single quote (ASCII 0x27).
2728 .ESC `
2729 The grave accent \[ga]; same as
2730 .esc (ga .
2731 Unescaped: left quote, backquote (ASCII 0x60).
2734 .ESC -
2735 The \- (minus) sign in the current font.
2738 .ESC _
2739 The same as
2740 .esc (ul ,
2741 the underline character.
2744 .ESC .
2745 An uninterpreted dot (period), even at start of line.
2748 .ESC %
2749 Default optional hyphenation character.
2752 .ESC !
2753 Transparent line indicator.
2756 .ESC? anything
2757 In a diversion, this transparently embeds
2758 .I anything
2759 in the diversion.
2760 .I anything
2761 is read in copy mode.
2763 See also the escape sequences
2764 .esc !
2766 .esc ? .
2769 .\" --------- spacing ---------
2772 .ESC \& space
2773 Unpaddable space size space glyph (no line break).
2776 .ESC 0
2777 Digit-width space.
2780 .ESC |
2781 1/6\ em narrow space glyph; zero width in nroff.
2784 .ESC ^
2785 1/12\ em half-narrow space glyph; zero width in nroff.
2788 .ESC &
2789 Non-printable, zero-width glyph.
2792 .ESC )
2793 Like
2794 .esc &
2795 except that it behaves like a glyph declared with the
2796 .request cflags
2797 request to be transparent for the purposes of end-of-sentence
2798 recognition.
2801 .ESC /
2802 Increases the width of the preceding glyph so that the spacing
2803 between that glyph and the following glyph is correct if
2804 the following glyph is a roman glyph.
2807 .ESC ,
2808 Modifies the spacing of the following glyph so that the spacing
2809 between that glyph and the preceding glyph is correct if the
2810 preceding glyph is a roman glyph.
2813 .ESC ~
2814 Unbreakable space that stretches like a normal inter-word space when a
2815 line is adjusted.
2818 .ESC :
2819 Inserts a zero-width break point (similar to
2820 .esc %
2821 but without a soft hyphen character).
2824 .ESC "" newline
2825 Ignored newline, for continuation lines.
2827 .\" --------- structuring ---------
2830 .ESC {
2831 Begin conditional input.
2834 .ESC }
2835 End conditional input.
2837 .\" --------- longer escape names ---------
2840 .ESC ( sc
2841 A glyph with two-character name
2842 .IR sc ;
2843 see section
2844 .BR "Special Characters" .
2847 .ESC[] "" name
2848 A glyph with name
2849 .I name
2850 (of arbitrary length).
2853 .ESC[] "" "comp1 comp2 .\|.\|."
2854 A composite glyph with components
2855 .IR comp1 ,
2856 .IR comp2 ,
2857 .I .\|.\|.
2859 .\" --------- alphabetical escapes ---------
2862 .ESC a
2863 Non-interpreted leader character.
2866 .ESCq A anything
2868 .I anything
2869 is acceptable as a name of a string, macro, diversion, register,
2870 environment or font it expands to\~1, and to\~0 otherwise.
2873 .ESCq b abc.\|.\|.\&
2874 Bracket building function.
2877 .ESCq B anything
2879 .I anything
2880 is acceptable as a valid numeric expression it expands to\~1, and
2881 to\~0 otherwise.
2884 .ESC c
2885 Interrupt text processing.
2888 .ESCq C glyph
2889 The glyph called
2890 .IR glyph ;
2891 same as
2892 .esc[] "" glyph ,
2893 but compatible to other roff versions.
2896 .ESC d
2897 Forward (down) 1/2 em (1/2 line in nroff).
2900 .ESCq D charseq
2901 Draw a graphical element defined by the characters in
2902 .IR charseq ;
2903 see the groff info file for details.
2906 .ESC e
2907 Printable version of the current escape character.
2910 .ESC E
2911 Equivalent to an escape character, but is not interpreted in copy mode.
2914 .ESC f F
2915 Change to font with one-character name or one-digit number\~\c
2916 .IR F .
2919 .ESC fP
2920 Switch back to previous font.
2923 .ESC f( fo
2924 Change to font with two-character name or two-digit number
2925 .IR fo .
2928 .ESC[] f font
2929 Change to font with arbitrarily long name or number expression
2930 .IR font .
2933 .ESC[] f ""
2934 Switch back to previous font.
2937 .ESC F f
2938 Change to font family with one-character name\~\c
2939 .IR f .
2942 .ESC F( fm
2943 Change to font family with two-character name
2944 .IR fm .
2947 .ESC[] F fam
2948 Change to font family with arbitrarily long name
2949 .IR fam .
2952 .ESC[] F ""
2953 Switch back to previous font family.
2956 .ESC g r
2957 Return format of register with one-character name\~\c
2958 .I r
2959 suitable for
2960 .request af
2961 request.
2964 .ESC g( rg
2965 Return format of register with two-character name
2966 .I rg
2967 suitable for
2968 .request af
2969 request.
2972 .ESC[] g reg
2973 Return format of register with arbitrarily long name
2974 .I reg
2975 suitable for
2976 .request af
2977 request.
2980 .ESCq h N
2981 Local horizontal motion; move right
2982 .I N
2983 (left if negative).
2986 .ESCq H N
2987 Set height of current font to
2988 .IR N .
2991 .ESC k r
2992 Mark horizontal input place in one-character register\~\c
2993 .IR r .
2996 .ESC k( rg
2997 Mark horizontal input place in two-character register
2998 .IR rg .
3001 .ESC[] k reg
3002 Mark horizontal input place in register with arbitrarily long name
3003 .IR reg .
3006 .ESCq l Nc
3007 Horizontal line drawing function (optionally using character
3008 .IR c ).
3011 .ESCq L Nc
3012 Vertical line drawing function (optionally using character
3013 .IR c ).
3016 .ESC m c
3017 Change to color with one-character name\~\c
3018 .IR c .
3021 .ESC m( cl
3022 Change to color with two-character name
3023 .IR cl .
3026 .ESC[] m color
3027 Change to color with arbitrarily long name
3028 .IR color .
3031 .ESC[] m ""
3032 Switch back to previous color.
3035 .ESC M c
3036 Change filling color for closed drawn objects to color with
3037 one-character name\~\c
3038 .IR c .
3041 .ESC M( cl
3042 Change filling color for closed drawn objects to color with
3043 two-character name
3044 .IR cl .
3047 .ESC[] M color
3048 Change filling color for closed drawn objects to color with
3049 arbitrarily long name
3050 .IR color .
3053 .ESC[] M ""
3054 Switch to previous fill color.
3057 .ESC n r
3058 The numerical value stored in the register variable with the
3059 one-character name\~\c
3060 .IR r .
3063 .ESC n( re
3064 The numerical value stored in the register variable with the
3065 two-character name
3066 .IR re .
3069 .ESC[] n reg
3070 The numerical value stored in the register variable with arbitrarily
3071 long name
3072 .IR reg .
3075 .ESCq N n
3076 Typeset the glyph with index\~\c
3077 .I n
3078 in the current font.
3080 No special fonts are searched.
3082 Useful for adding (named) entities to a document using the
3083 .request char
3084 request and friends.
3087 .ESCq o abc.\|.\|.\&
3088 Overstrike glyphs
3089 .IR a ,
3090 .IR b ,
3091 .IR c ,
3092 etc.
3095 .ESC O0
3096 Disable glyph output.
3098 Mainly for internal use.
3101 .ESC O1
3102 Enable glyph output.
3104 Mainly for internal use.
3107 .ESC p
3108 Break and spread output line.
3111 .ESC r
3112 Reverse 1\ em vertical motion (reverse line in nroff).
3115 .ESCq R "name\~\[+-]n"
3116 The same as
3117 .request .nr
3118 .I name
3119 .IR \[+-]n .
3122 .ESC s \[+-]N
3123 Set/increase/decrease the point size to/by
3124 .I N
3125 scaled points;
3126 .I N
3127 is a one-digit number in the range 1 to\~9.
3129 Same as
3130 .request ps
3131 request.
3134 .ESC s( \[+-]N
3136 .ESC s\[+-]( N
3137 Set/increase/decrease the point size to/by
3138 .I N
3139 scaled points;
3140 .I N
3141 is a two-digit number \[>=]1.
3143 Same as
3144 .request ps
3145 request.
3148 .ESC[] s \[+-]N
3150 .ESC[] s\[+-] N
3152 .ESCq s \[+-]N
3154 .ESCq s\[+-] N
3155 Set/increase/decrease the point size to/by
3156 .I N
3157 scaled points.
3159 Same as
3160 .request ps
3161 request.
3164 .ESCq S N
3165 Slant output by
3166 .I N
3167 degrees.
3170 .ESC t
3171 Non-interpreted horizontal tab.
3174 .ESC u
3175 Reverse (up) 1/2 em vertical motion (1/2 line in nroff).
3178 .ESCq v N
3179 Local vertical motion; move down
3180 .I N
3181 (up if negative).
3184 .ESC V e
3185 The contents of the environment variable with one-character
3186 name\~\c
3187 .IR e .
3190 .ESC V( ev
3191 The contents of the environment variable with two-character name
3192 .IR ev .
3195 .ESC[] V env
3196 The contents of the environment variable with arbitrarily long name
3197 .IR env .
3200 .ESCq w string
3201 The width of the glyph sequence
3202 .IR string .
3205 .ESCq x N
3206 Extra line-space function (negative before, positive after).
3209 .ESCq X string
3210 Output
3211 .I string
3212 as device control function.
3215 .ESC Y n
3216 Output string variable or macro with one-character name\~\c
3217 .I n
3218 uninterpreted as device control function.
3221 .ESC Y( nm
3222 Output string variable or macro with two-character name
3223 .I nm
3224 uninterpreted as device control function.
3227 .ESC[] Y name
3228 Output string variable or macro with arbitrarily long name
3229 .I name
3230 uninterpreted as device control function.
3233 .ESC z c
3234 Print
3235 .I c
3236 with zero width (without spacing).
3239 .ESCq Z anything
3240 Print
3241 .I anything
3242 and then restore the horizontal and vertical position;
3243 .I anything
3244 may not contain tabs or leaders.
3248 The escape sequences
3249 .esc e ,
3250 .esc . ,
3251 .esc \[dq] ,
3252 .esc $ ,
3253 .esc * ,
3254 .esc a ,
3255 .esc n ,
3256 .esc t ,
3257 .esc g ,
3259 .escarg \& newline
3260 are interpreted in copy mode.
3263 Escape sequences starting with
3264 .esc (
3266 .esc [
3267 do not represent single character escape sequences, but introduce escape
3268 names with two or more characters.
3271 If a backslash is followed by a character that does not constitute a
3272 defined escape sequence, the backslash is silently ignored and the
3273 character maps to itself.
3276 .\" --------------------------------------------------------------------
3277 .SS "Special Characters"
3278 .\" --------------------------------------------------------------------
3280 [Note: `Special Characters' is a misnomer; those entities are (output)
3281 glyphs, not (input) characters.]
3284 Common special characters are predefined by escape sequences of the
3285 form
3286 .BI \[rs]( xy
3287 with characters
3288 .I x
3290 .IR y .
3292 Some of these exist in the usual font while most of them are only
3293 available in the special font.
3295 Below you can find a selection of the most important glyphs; a complete
3296 list can be found in
3297 .BR groff_char (@MAN7EXT@).
3300 .PD 0
3303 .ESC (bu
3304 Bullet sign
3306 .ESC (co
3307 Copyright
3309 .ESC (ct
3310 Cent
3312 .ESC (dd
3313 Double dagger
3315 .ESC (de
3316 Degree
3318 .ESC (dg
3319 Dagger
3321 .ESC (rq
3322 Printable double quote
3324 .ESC (em
3325 Em-dash
3327 .ESC (hy
3328 Hyphen
3330 .ESC (rg
3331 Registered sign
3333 .ESC (rs
3334 Printable backslash character
3336 .ESC (sc
3337 Section sign
3339 .ESC (ul
3340 Underline character
3342 .ESC (==
3343 Identical
3345 .ESC (>=
3346 Larger or equal
3348 .ESC (<=
3349 Less or equal
3351 .ESC (!=
3352 Not equal
3354 .ESC (->
3355 Right arrow
3357 .ESC (<-
3358 Left arrow
3360 .ESC (+-
3361 Plus-minus sign
3366 .\" --------------------------------------------------------------------
3367 .SS "Strings"
3368 .\" --------------------------------------------------------------------
3370 Strings are defined by the
3371 .request ds
3372 request and can be retrieved by the
3373 .esc *
3374 escape sequence.
3377 Strings share their name space with macros.
3379 So strings and macros without arguments are roughly equivalent; it is
3380 possible to call a string like a macro and vice-versa, but this often
3381 leads to unpredictable results.
3383 The following string is the only one predefined in groff.
3385 .TPx
3386 .STRING .T
3387 The name of the current output device as specified by the
3388 .option \-T
3389 command line option.
3392 .\" --------------------------------------------------------------------
3393 .SH REGISTERS
3394 .\" --------------------------------------------------------------------
3396 Registers are variables that store a value.
3397 In groff, most registers store numerical values (see section
3398 .B NUMERICAL EXPRESSIONS
3399 above), but some can also hold a string value.
3402 Each register is given a name.
3403 Arbitrary registers can be defined and set with the
3404 .request nr
3405 request.
3408 The value stored in a register can be retrieved by the escape sequences
3409 introduced by
3410 .esc n .
3413 Most useful are predefined registers.
3415 In the following the notation
3416 .I name
3417 is used to refer to
3418 .register name
3419 to make clear that we speak about registers.
3421 Please keep in mind that the
3422 .esc[] n ""
3423 decoration is not part of the register name.
3426 .\" --------------------------------------------------------------------
3427 .SS "Read-only Registers"
3428 .\" --------------------------------------------------------------------
3430 The following registers have predefined values that should not be
3431 modified by the user (usually, registers starting with a dot a
3432 read-only).
3434 Mostly, they provide information on the current settings or store
3435 results from request calls.
3438 .PD 0
3440 .TPx
3441 .REG .$
3442 Number of arguments in the current macro or string.
3444 .TPx
3445 .REG .a
3446 Post-line extra line-space most recently utilized using
3447 .esc x .
3449 .TPx
3450 .REG .A
3451 Set to\~1 in
3452 .B troff
3453 if option
3454 .option \-A
3455 is used; always\~1 in
3456 .BR nroff .
3458 .TPx
3459 .REG .br
3460 Within a macro, set to\~1 if macro called with the `normal' control
3461 character, and to\~0 otherwise.
3463 .TPx
3464 .REG .c
3465 Current input line number.
3467 .TPx
3468 .REG .C
3469 1\~if compatibility mode is in effect, 0\~otherwise.
3471 .TPx
3472 .REG .cdp
3473 The depth of the last glyph added to the current environment.
3475 It is positive if the glyph extends below the baseline.
3477 .TPx
3478 .REG .ce
3479 The number of lines remaining to be centered, as set by the
3480 .request ce
3481 request.
3483 .TPx
3484 .REG .cht
3485 The height of the last glyph added to the current environment.
3487 It is positive if the glyph extends above the baseline.
3489 .TPx
3490 .REG .color
3491 1\~if colors are enabled, 0\~otherwise.
3493 .TPx
3494 .REG .csk
3495 The skew of the last glyph added to the current environment.
3497 The skew of a glyph is how far to the right of the center of a glyph
3498 the center of an accent over that glyph should be placed.
3500 .TPx
3501 .REG .d
3502 Current vertical place in current diversion; equal to
3503 .register nl .
3505 .TPx
3506 .REG .ev
3507 The name or number of the current environment (string-valued).
3509 .TPx
3510 .REG .f
3511 Current font number.
3513 .TPx
3514 .REG .fam
3515 The current font family (string-valued).
3517 .TPx
3518 .REG .fn
3519 The current (internal) real font name (string-valued).
3521 .TPx
3522 .REG .fp
3523 The number of the next free font position.
3525 .TPx
3526 .REG .g
3527 Always 1 in GNU troff.
3529 Macros should use it to test if running under groff.
3531 .TPx
3532 .REG .h
3533 Text base-line high-water mark on current page or diversion.
3535 .TPx
3536 .REG .H
3537 Available horizontal resolution in basic units.
3539 .TPx
3540 .REG .height
3541 The current font height as set with
3542 .request \[rs]H .
3544 .TPx
3545 .REG .hla
3546 The current hyphenation language as set by the
3547 .request hla
3548 request.
3550 .TPx
3551 .REG .hlc
3552 The number of immediately preceding consecutive hyphenated lines.
3554 .TPx
3555 .REG .hlm
3556 The maximum allowed number of consecutive hyphenated lines, as set by
3558 .request hlm
3559 request.
3561 .TPx
3562 .REG .hy
3563 The current hyphenation flags (as set by the
3564 .request hy
3565 request).
3567 .TPx
3568 .REG .hym
3569 The current hyphenation margin (as set by the
3570 .request hym
3571 request).
3573 .TPx
3574 .REG .hys
3575 The current hyphenation space (as set by the
3576 .request hys
3577 request).
3579 .TPx
3580 .REG .i
3581 Current indentation.
3583 .TPx
3584 .REG .in
3585 The indentation that applies to the current output line.
3587 .TPx
3588 .REG .int
3589 Positive if last output line contains
3590 .esc c .
3592 .TPx
3593 .REG .kern
3594 1\~if pairwise kerning is enabled, 0\~otherwise.
3596 .TPx
3597 .REG .l
3598 Current line length.
3600 .TPx
3601 .REG .lg
3602 The current ligature mode (as set by the
3603 .request lg
3604 request).
3606 .TPx
3607 .REG .linetabs
3608 The current line-tabs mode (as set by the
3609 .request linetabs
3610 request).
3612 .TPx
3613 .REG .ll
3614 The line length that applies to the current output line.
3616 .TPx
3617 .REG .lt
3618 The title length (as set by the
3619 .request lt
3620 request).
3622 .TPx
3623 .REG .m
3624 The current drawing color (string-valued).
3626 .TPx
3627 .REG .M
3628 The current background color (string-valued).
3630 .TPx
3631 .REG .n
3632 Length of text portion on previous output line.
3634 .TPx
3635 .REG .ne
3636 The amount of space that was needed in the last
3637 .request ne
3638 request that caused a trap to be sprung.
3640 Useful in conjunction with
3641 .register .trunc .
3643 .TPx
3644 .REG .ns
3645 1\~if in no-space mode, 0\~otherwise.
3647 .TPx
3648 .REG .o
3649 Current page offset.
3651 .TPx
3652 .REG .p
3653 Current page length.
3655 .TPx
3656 .REG .pe
3657 1\~during page ejection, 0\~otherwise.
3659 .TPx
3660 .REG .pn
3661 The number of the next page: either the value set by a
3662 .request pn
3663 request, or the number of the current page plus\ 1.
3665 .TPx
3666 .REG .ps
3667 The current point size in scaled points.
3669 .TPx
3670 .REG .psr
3671 The last-requested point size in scaled points.
3673 .TPx
3674 .REG .pvs
3675 The current post-vertical line spacing.
3677 .TPx
3678 .REG .rj
3679 The number of lines to be right-justified as set by the
3680 .request rj
3681 request.
3683 .TPx
3684 .REG .s
3685 Current point size as a decimal fraction.
3687 .TPx
3688 .REG .slant
3689 The slant of the current font as set with
3690 .request \[rs]S .
3692 .TPx
3693 .REG .sr
3694 The last requested point size in points as a decimal fraction
3695 (string-valued).
3697 .TPx
3698 .REG .ss
3699 The value of the parameters set by the first argument of the
3700 .request ss
3701 request.
3703 .TPx
3704 .REG .sss
3705 The value of the parameters set by the second argument of the
3706 .request ss
3707 request.
3709 .TPx
3710 .REG .sty
3711 The current font style (string-valued).
3713 .TPx
3714 .REG .t
3715 Vertical distance to the next trap.
3717 .TPx
3718 .REG .T
3719 Set to\~1
3720 if option
3721 .option \-T
3722 is used.
3724 .TPx
3725 .REG .tabs
3726 A string representation of the current tab settings suitable for use
3727 as an argument to the
3728 .request ta
3729 request.
3731 .TPx
3732 .REG .trunc
3733 The amount of vertical space truncated by the most recently sprung
3734 vertical position trap, or, if the trap was sprung by a
3735 .request ne
3736 request, minus the amount of vertical motion produced by
3737 .request .ne .
3739 Useful in conjunction with the
3740 .register .ne .
3742 .TPx
3743 .REG .u
3744 Equal to 1 in fill mode and 0 in no-fill mode.
3746 .TPx
3747 .REG .U
3748 Equal to 1 in safer mode and 0 in unsafe mode.
3750 .TPx
3751 .REG .v
3752 Current vertical line spacing.
3754 .TPx
3755 .REG .V
3756 Available vertical resolution in basic units.
3758 .TPx
3759 .REG .vpt
3760 1\~if vertical position traps are enabled, 0\~otherwise.
3762 .TPx
3763 .REG .w
3764 Width of previous glyph.
3766 .TPx
3767 .REG .warn
3768 The sum of the number codes of the currently enabled warnings.
3770 .TPx
3771 .REG .x
3772 The major version number.
3774 .TPx
3775 .REG .y
3776 The minor version number.
3778 .TPx
3779 .REG .Y
3780 The revision number of groff.
3782 .TPx
3783 .REG .z
3784 Name of current diversion.
3786 .TPx
3787 .REG .zoom
3788 Zoom factor for current font (in multiples of 1/1000th; zero if no
3789 magnification).
3793 .\" --------------------------------------------------------------------
3794 .SS "Writable Registers"
3795 .\" --------------------------------------------------------------------
3797 The following registers can be read and written by the user.
3798 They have predefined default values, but these can be modified for
3799 customizing a document.
3802 .PD 0
3803 .TPx
3804 .REG %
3805 Current page number.
3807 .TPx
3808 .REG c.
3809 Current input line number.
3811 .TPx
3812 .REG ct
3813 Character type (set by width function
3814 .esc w ).
3816 .TPx
3817 .REG dl
3818 Maximal width of last completed diversion.
3820 .TPx
3821 .REG dn
3822 Height of last completed diversion.
3824 .TPx
3825 .REG dw
3826 Current day of week (1-7).
3828 .TPx
3829 .REG dy
3830 Current day of month (1-31).
3832 .TPx
3833 .REG hours
3834 The number of hours past midnight.
3836 Initialized at start-up.
3838 .TPx
3839 .REG hp
3840 Current horizontal position at input line.
3842 .TPx
3843 .REG llx
3844 Lower left x-coordinate (in PostScript units) of a given PostScript
3845 image (set by
3846 .request .psbb ).
3848 .TPx
3849 .REG lly
3850 Lower left y-coordinate (in PostScript units) of a given PostScript
3851 image (set by
3852 .request .psbb ).
3854 .TPx
3855 .REG ln
3856 Output line number.
3858 .TPx
3859 .REG minutes
3860 The number of minutes after the hour.
3862 Initialized at start-up.
3864 .TPx
3865 .REG mo
3866 Current month (1-12).
3868 .TPx
3869 .REG nl
3870 Vertical position of last printed text base-line.
3872 .TPx
3873 .REG rsb
3874 Like
3875 .register sb ,
3876 but takes account of the heights and depths of glyphs.
3878 .TPx
3879 .REG rst
3880 Like
3881 .register st ,
3882 but takes account of the heights and depths of glyphs.
3884 .TPx
3885 .REG sb
3886 Depth of string below base line (generated by width function
3887 .esc w ).
3889 .TPx
3890 .REG seconds
3891 The number of seconds after the minute.
3893 Initialized at start-up.
3895 .TPx
3896 .REG skw
3897 Right skip width from the center of the last glyph in the
3898 .esc w
3899 argument.
3901 .TPx
3902 .REG slimit
3903 If greater than 0, the maximum number of objects on the input stack.
3905 If \[<=]0 there is no limit, i.e., recursion can continue until virtual
3906 memory is exhausted.
3908 .TPx
3909 .REG ssc
3910 The amount of horizontal space (possibly negative) that should be
3911 added to the last glyph before a subscript (generated by width
3912 function
3913 .esc w ).
3915 .TPx
3916 .REG st
3917 Height of string above base line (generated by width function
3918 .esc w ).
3920 .TPx
3921 .REG systat
3922 The return value of the
3923 .I system()
3924 function executed by the last
3925 .request sy
3926 request.
3928 .TPx
3929 .REG urx
3930 Upper right x-coordinate (in PostScript units) of a given PostScript
3931 image (set by
3932 .request .psbb ).
3934 .TPx
3935 .REG ury
3936 Upper right y-coordinate (in PostScript units) of a given PostScript
3937 image (set by
3938 .request .psbb ).
3940 .TPx
3941 .REG year
3942 The current year (year 2000 compliant).
3944 .TPx
3945 .REG yr
3946 Current year minus 1900.
3948 For Y2K compliance use
3949 .register year
3950 instead.
3955 .\" --------------------------------------------------------------------
3956 .SH COMPATIBILITY
3957 .\" --------------------------------------------------------------------
3959 The differences of the groff language in comparison to classical troff
3960 as defined by
3961 .I [CSTR\~#54]
3962 are documented in
3963 .BR groff_diff (@MAN7EXT@).
3966 The groff system provides a compatibility mode, see
3967 .BR groff (@MAN1EXT@)
3968 on how to invoke this.
3971 .\" --------------------------------------------------------------------
3972 .SH BUGS
3973 .\" --------------------------------------------------------------------
3975 Report bugs to the
3976 .MT bug-groff@gnu.org
3977 groff bug mailing list
3978 .ME .
3979 Include a complete, self-contained example that will allow the bug to
3980 be reproduced, and say which version of groff you are using.
3983 .\" --------------------------------------------------------------------
3984 .SH AUTHORS
3985 .\" --------------------------------------------------------------------
3987 Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
3988 Free Software Foundation, Inc.
3991 This document is distributed under the terms of the FDL (GNU Free
3992 Documentation License) version 1.1 or later.
3994 You should have received a copy of the FDL on your system, it is also
3995 available on-line at the
3996 .UR http://\:www.gnu.org/\:copyleft/\:fdl.html
3997 GNU copyleft site
3998 .UE .
4001 This document is part of
4002 .IR groff ,
4003 the GNU roff distribution.
4005 It was written by
4006 .MT bwarken@mayn.de
4007 Bernd Warken
4008 .ME ;
4009 it is maintained by
4010 .MT wl@gnu.org
4011 Werner Lemberg
4012 .ME .
4015 .\" --------------------------------------------------------------------
4016 .SH "SEE ALSO"
4017 .\" --------------------------------------------------------------------
4020 The main source of information for the groff language is the
4021 .B groff
4022 .BR info (1)
4023 file.
4025 Besides the gory details, it contains many examples.
4028 .BR groff (@MAN1EXT@)
4029 the usage of the groff program and pointers to the documentation and
4030 availability of the groff system.
4033 .BR groff_diff (@MAN7EXT@)
4034 the differences of the groff language as compared to classical roff.
4036 This is the authoritative document for the predefined language
4037 elements that are specific to groff.
4040 .BR groff_char (@MAN7EXT@)
4041 the predefined groff special characters (glyphs).
4044 .BR groff_font (@MAN5EXT@)
4045 the specification of fonts and the DESC file.
4048 .BR roff (@MAN7EXT@)
4049 the history of roff, the common parts shared by all roff systems, and
4050 pointers to further documentation.
4053 .I [CSTR\~#54]
4054 .UR http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:54.ps.gz
4055 Nroff/\:Troff User's Manual by Ossanna & Kernighan
4057 \[em] the bible for classical troff.
4059 .cp \n[groff_C]
4061 .\" --------------------------------------------------------------------
4062 .\" Emacs Setup
4063 .\" --------------------------------------------------------------------
4065 .\" Local Variables:
4066 .\" mode: nroff
4067 .\" End: