o Added TOC (finally) and a nearly complete set of associated
[s-roff.git] / man / groff.man
blob7ee821e6c857e9056014f37a7c611b7cc6f1bead
1 '\" t
2 .ig
3 groff.man
5 Last update: 15 May 2003
7 This file is part of groff, the GNU roff type-setting system.
9 Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
10 written by Bernd Warken <bwarken@mayn.de>
11 maintained by Werner Lemberg <wl@gnu.org>
13 Permission is granted to copy, distribute and/or modify this document
14 under the terms of the GNU Free Documentation License, Version 1.1 or
15 any later version published by the Free Software Foundation; with the
16 Invariant Sections being this .ig-section and AUTHORS, with no
17 Front-Cover Texts, and with no Back-Cover Texts.
19 A copy of the Free Documentation License is included as a file called
20 FDL in the main directory of the groff source package.
23 .\" --------------------------------------------------------------------
24 .\" Setup
25 .\" --------------------------------------------------------------------
27 .mso www.tmac
29 .if n \{\
30 .  mso tty-char.tmac
31 .  ftr CR R
32 .  ftr CI I
33 .  ftr CB B
34 .\}
36 .if '\*[.T]'dvi' \{\
37 .  ftr CB CW
38 .\}
41 .\" --------------------------------------------------------------------
42 .\" start of macro definitions
43 .eo
45 .de c
48 .de TPx
49 .  TP 10n
51 .c ---------------------------------------------------------------------
52 .c .Text anything ...
54 .c All arguments are printed as text.
56 .de Text
57 .  nop \)\$*
59 .c ---------------------------------------------------------------------
60 .c .ExecFF macro font1 font2 text1 text2 text1 text2 ...
62 .c Concat text arguments using alternating fonts and feed into macro.
63 .c For a trailing punctuation, terminate the call with \c.
65 .de ExecFF
66 .  if (\n[.$] < 4) \
67 .    return
68 .  ds @a\"
69 .  ds @m \$1\"
70 .  ds @f1 \$2\"
71 .  ds @f2 \$3\"
72 .  shift 3
73 .  ds @s\"
74 .  while 1 \{\
75 .    if (\n[.$] = 0) \
76 .      break
77 .    ds @a \$1\"
78 .    as @s \f[\*[@f1]]\*[@a]\f[]\"
79 .    shift
80 .    if (\n[.$] = 0) \
81 .      break
82 .    ds @a \$1\"
83 .    as @s \f[\*[@f2]]\*[@a]\f[]\"
84 .    shift
85 .  \}
86 .  \*[@m] "\*[@s]\f[R]"
87 .  ft P                 \" to make \c happy
88 .  rm @m
89 .  rm @s
90 .  rm @a
91 .  rm @f1
92 .  rm @f2
95 .c --------- command line option ---------
97 .de option
98 .  Text \f[CB]\$*
99 .  ft P
102 .c --------- characters ---------
104 .de character
105 .  ExecFF Text CB R \$*
107 .de squoted_char
108 .  ds @1 \$1\"
109 .  shift
110 .  ExecFF Text R CB \[oq] \*[@1] "\[cq]\$*"
111 .  rm @1
113 .de dquoted_char
114 .  ds @1 \$1\"
115 .  shift
116 .  ExecFF Text R CB \[lq] \*[@1] "\[rq]\$*"
117 .  rm @1
119 .c --------- requests ---------
121 .c synopsis of a request
122 .de REQ
123 .  if (\n[.$] = 0) \
124 .    return
125 .  ds @1 \$1\"
126 .  shift 1
127 .  ie (\n[.$] = 0) \{\
128 .    TP 10n
129 .    Text \f[CB]\*[@1]\f[]
130 .  \}
131 .  el \{\
132 .    TP 10n
133 .    Text \f[CB]\*[@1]\~\f[]\f[I]\$*\f[]
134 .  \}
135 .  rm @1
137 .c reference of a request
138 .de request
139 .  BR \$*
142 .c --------- numerical elements ---------
144 .c number with a trailing unit
145 .de scalednumber
146 .  Text \$1\^\f[CB]\$2\f[]\$3\f[R]
147 .  ft P
150 .c representation of units within the text
151 .de scaleindicator
152 .  Text \f[CB]\$1\f[]\$2\f[R]
153 .  ft P
156 .c representation of mathematical operators within the text
157 .de operator
158 .  squoted_char \$@
162 .c --------- escape sequences ---------
164 .c ---------------------------------------------------------------------
165 .c .ESC name [arg]
167 .c Synopsis of an escape sequence, optionally with argument
168 .c Args   : 1 or 2; `name' obligatory, `arg' optional
169 .c   name : suitable name for an escape sequence (c, (xy, [long])
170 .c   arg  : arbitrary word
171 .c Result : prints \namearg, where `name' is in CB, `arg' in I
173 .de ESC
174 .  if (\n[.$] < 1)
175 .    ab .ESC needs 1 or 2 arguments.
176 .  ExecFF IP CB I "\[rs]\$1" "\,\$2\/"
178 .c ---------------------------------------------------------------------
179 .c .ESC[] name arg
181 .c Synopsis for escape sequence with a bracketed long argument
182 .c Args   : 2 obligatory
183 .c   name : suitable name for an escape sequence (c, (xy, [long])
184 .c   arg  : arbitrary text
185 .c Result : prints \name[arg], where `name' is in CB, `arg' in I
187 .de ESC[]
188 .  if !(\n[.$] = 2) \
189 .    ab .ESC[] needs exactly 2 arguments.
190 .  ExecFF IP CB I "\[rs]\$1\[lB]" "\h'-0.2m'\$2\h'-0.15m'" \[rB]
192 .c ---------------------------------------------------------------------
193 .c .ESCq name arg
195 .c Synopsis for escape sequence with a bracketed long argument
196 .c Args   : 2 obligatory
197 .c   name : suitable name for an escape sequence (c, (xy, [long])
198 .c   arg  : arbitrary text
199 .c Result : prints \name'arg', where `name' is in CB, `arg' in I
201 .de ESCq
202 .  if !(\n[.$] = 2) \
203 .    ab .ESCq needs exactly 2 argument.
204 .  ExecFF IP CB I "\[rs]\$1\[cq]" "\h'-0.3m'\$2" \[cq]
206 .c ---------------------------------------------------------------------
207 .c .ESC? arg
209 .c Synopsis for escape sequence with a bracketed long argument
210 .c Args   : 1 obligatory
211 .c   arg  : arbitrary text
212 .c Result : prints `\?arg?', where the `?' are in CB, `arg' in I
214 .de ESC?
215 .  if !(\n[.$] = 1) \
216 .    ab .ESC? needs exactly 1 arguments.
217 .  ExecFF IP CB I \[rs]? "\$1" ?
219 .c ---------------------------------------------------------------------
220 .c .esc name [punct]
222 .c Reference of an escape sequence (no args), possibly punctuation
223 .c Args    : 1 obligatory
224 .c   name  : suitable name for an escape sequence (c, (xy, [long])
225 .c   punct : arbitrary
226 .c Result  : prints \name, where `name' is in B, `punct' in R
228 .de esc
229 .  if (\n[.$] < 1) \
230 .    ab .esc needs 1 or 2 arguments.
231 .  BR "\[rs]\$1" \$2
233 .c ---------------------------------------------------------------------
234 .c .escarg name arg [punct]
236 .c Reference of an escape sequence (no args)
237 .c Args    : 1 obligatory, 1 optional
238 .c   name  : suitable name for an escape sequence (c, (xy, [long])
239 .c   arg   : arbitrary word
240 .c Result  : prints \namearg, where
241 .c           `name' is in B, `arg' in I
243 .de escarg
244 .  if (\n[.$] < 2) \
245 .    ab .esc needs 2 or 3 arguments.
246 .  Text \f[B]\[rs]\$1\f[]\f[I]\$2\f[]\$3
248 .c ---------------------------------------------------------------------
249 .c .esc[] name arg [punct]
251 .c Reference for escape sequence with a bracketed long argument
252 .c Args   : 2 obligatory
253 .c   name : suitable name for an escape sequence (c, (xy, [long])
254 .c   arg  : arbitrary text
255 .c Result : prints \name[arg], where `name' is in CB, `arg' in CI
257 .de esc[]
258 .  if (\n[.$] < 2) \
259 .    ab .esc[] needs 2 or 3 arguments.
260 .  Text \f[B]\[rs]\$1\[lB]\f[]\f[I]\$2\f[]\f[B]\[rB]\f[]\$3
263 .c ---------------------------------------------------------------------
264 .c .escq name arg
266 .c Reference for escape sequence with a bracketed long argument
267 .c Args   : 2 obligatory
268 .c   name : suitable name for an escape sequence (c, (xy, [long])
269 .c   arg  : arbitrary text
270 .c Result : prints \name'arg', where `name' is in CB, `arg' in CI
272 .de escq
273 .  if (\n[.$] < 2) \
274 .    ab .escq needs 2 arguments.
275 .  Text \f[B]\[rs]\$1\[cq]\f[]\f[I]\$2\f[]\f[B]\[cq]\f[]\$3
278 .c --------- strings ---------
280 .c synopsis for string, with \*[]
281 .de STRING
282 .  ds @1 \$1\"
283 .  shift 1
284 .  TP 10n
285 .  ExecFF Text R CB \[rs]*[ \*[@1]\f[]\f[R]] \$*
286 .  rm @1
288 .c synopsis for a long string
289 .de string
290 .  if (\n[.$] = 0) \
291 .    return
292 .  Text \f[CB]\[rs]*\[lB]\$1\[rB]\f[]\$2
296 .c --------- registers ---------
298 .c synopsis for registers, with \n[]
299 .de REG
300 .  ds @1 \$1\"
301 .  shift 1
302 .  TP 10n
303 .  ExecFF Text R CB \[rs]n[ \*[@1]\f[]\f[R]] \$*
304 .  rm @1
306 .c reference of a register, without decoration
307 .de register
308 .  Text register
309 .  BR \$*
313 .\" end of macro definitions
316 .\" --------------------------------------------------------------------
317 .\" Title
318 .\" --------------------------------------------------------------------
320 .TH GROFF @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
321 .SH NAME
322 groff \- a short reference for the GNU roff language
325 .\" --------------------------------------------------------------------
326 .SH DESCRIPTION
327 .\" --------------------------------------------------------------------
329 The name
330 .I groff
331 stands for
332 .I GNU roff
333 and is the free implementation of the roff type-setting system.
336 .BR roff (@MAN7EXT@)
337 for a survey and the background of the groff system.
340 This document gives only short descriptions of the predefined roff
341 language elements as used in groff.
343 Both the classical features and the groff extensions are provided.
346 Historically, the
347 .I roff language
348 was called
349 .IR troff .
350 .I groff
351 is compatible with the classical system and provides proper
352 extensions.
354 So in GNU, the terms
355 .IR roff ,
356 .IR troff ,
358 .I groff language
359 could be used as synonyms.
361 However
362 .I troff
363 slightly tends to refer more to the classical aspects, whereas
364 .I groff
365 emphasizes the GNU extensions, and
366 .I roff
367 is the general term for the language.
370 This file is only a short version of the complete documentation that
371 is found in the
372 .I groff
373 .BR info (1)
374 file, which contains more detailed, actual, and concise information.
377 The general syntax for writing groff documents is relatively easy, but
378 writing extensions to the roff language can be a bit harder.
381 The roff language is line-oriented.
383 There are only two kinds of lines, control lines and text lines.
385 The control lines start with a control character, by default a period
386 .dquoted_char .
387 or a single quote
388 .dquoted_char ' ;
389 all other lines are text lines.
392 .B Control lines
393 represent commands, optionally with arguments.
395 They have the following syntax.
397 The leading control character can be followed by a command name;
398 arguments, if any, are separated by blanks from the command name and
399 among themselves, for example,
403 .Text .command_name arg1 arg2
407 For indentation, any number of space or tab characters can be inserted
408 between the leading control character and the command name, but the
409 control character must be on the first position of the line.
412 .B Text lines
413 represent the parts that will be printed.
414 They can be modified by escape sequences, which are recognized by a
415 leading backslash
416 .squoted_char \[rs] .
417 These are in-line or even in-word formatting elements or functions.
419 Some of these take arguments separated by single quotes
420 .dquoted_char ' ,
421 others are regulated by a length encoding introduced by an open
422 parenthesis
423 .squoted_char (
424 or enclosed in brackets
425 .squoted_char [
427 .squoted_char ] .
430 The roff language provides flexible instruments for writing language
431 extension, such as macros.
433 When interpreting macro definitions, the roff system enters a special
434 operating mode, called the
435 .BR "copy mode" .
438 The copy mode behavior can be quite tricky, but there are some rules
439 that ensure a safe usage.
441 .IP 1.
442 Printable backslashes must be denoted as
443 .esc e .
444 To be more precise,
445 .esc e
446 represents the current escape character.
448 To get a backslash glyph, use
449 .esc (rs
451 .esc [rs] .
452 .IP 2.
453 Double all backslashes.
454 .IP 3.
455 Begin all text lines with the special non-spacing character
456 .esc & .
459 This does not produce the most efficient code, but it should work as a
460 first measure.
462 For better strategies, see the groff info file and
463 .BR groff_tmac (@MAN5EXT@).
466 Reading roff source files is easier, just reduce all double backslashes
467 to a single one in all macro definitions.
470 .\" --------------------------------------------------------------------
471 .SH "GROFF ELEMENTS"
472 .\" --------------------------------------------------------------------
474 The roff language elements add formatting information to a text file.
476 The fundamental elements are predefined commands and variables that
477 make roff a full-blown programming language.
480 There are two kinds of roff commands, possibly with arguments.
481 .B Requests
482 are written on a line of their own starting with a dot
483 .squoted_char .
484 or a
485 .dquoted_char ' ,
486 whereas
487 .B Escape sequences
488 are in-line functions and in-word formatting elements starting with a
489 backslash
490 .squoted_char \[rs] .
493 The user can define her own formatting commands using the
494 .request de
495 request.
497 These commands are called
498 .BR macros ,
499 but they are used exactly like requests.
501 Macro packages are pre-defined sets of macros written in the groff
502 language.
504 A user's possibilities to create escape sequences herself is very
505 limited, only special characters can be mapped.
508 The groff language provides several kinds of variables with
509 different interfaces.
511 There are pre-defined variables, but the user can define her own
512 variables as well.
515 .B String
516 variables store character sequences.
518 They are set with the
519 .request ds
520 request and retrieved by the
521 .esc *
522 escape sequences.
524 Strings can have variables.
527 .B Register
528 variables can store numerical values, numbers with a scale unit, and
529 occasionally string-like objects.
531 They are set with the
532 .request nr
533 request and retrieved by the
534 .esc n
535 escape sequences.
538 .B Environments
539 allow the user to temporarily store global formatting parameters like
540 line length, font size, etc.\& for later reuse.
542 This is done by the
543 .request ev
544 request.
547 .B Fonts
548 are identified either by a name or by an internal number.
550 The current font is chosen by the
551 .request ft
552 request or by the
553 .esc f
554 escape sequences.
556 Each device has special fonts, but the following fonts are available
557 for all devices.
558 .B R
559 is the standard font Roman.
560 .B B
561 is its
562 .B bold
563 counterpart.
566 .I italic
567 font is called
568 .B I
569 and is available everywhere, but on text devices it is displayed as an
570 underlined Roman font.
572 For the graphical output devices, there exist constant-width pendants
573 of these fonts,
574 .BR CR ,
575 .BR CI ,
577 .BR CB .
578 On text devices, all characters have a constant width anyway.
581 Moreover, there are some advanced roff elements.
584 .B diversion
585 stores information into a macro for later usage.
588 .B trap
589 is a positional condition like a certain number of lines from page top
590 or in a diversion or in the input.
592 Some action can be prescribed to be run automatically when the
593 condition is met.
596 More detailed information and examples can be found in the groff info
597 file.
600 .\" --------------------------------------------------------------------
601 .SH "CONTROL CHARACTERS"
602 .\" --------------------------------------------------------------------
604 There is a small set of characters that have a special controlling
605 task in certain conditions.
608 .character .
609 A dot is only special at the beginning of a line or after the
610 condition in the requests
611 .request if ,
612 .request ie ,
613 .request el ,
615 .request while .
616 There it is the control character that introduces a request (or macro).
618 The special behavior can be delayed by using the
619 .esc .
620 escape.
622 By using the 
623 .request cc
624 request, the control character can be set to a different character,
625 making the dot
626 .squoted_char .
627 a non-special character.
628 .IP ""
629 In all other positions, it just means a dot character.
631 In text paragraphs, it is advantageous to start each sentence at a
632 line of its own.
635 .character '
636 The single quote has two controlling tasks.
638 At the beginning of a line and in the conditional requests it is the
639 non-breaking control character.
641 That means that it introduces a request like the dot, but with the
642 additional property that this request doesn't cause a linebreak.
644 By using the 
645 .request c2
646 request, the non-break control character can be set to a different
647 character.
649 .IP ""
650 As a second task, it is the most commonly used argument separator in
651 some functional escape sequences (but any pair of characters not part
652 of the argument will work).
654 In all other positions, it denotes the single quote or apostrophe
655 character.
657 Groff provides a printable representation with the
658 .esc (cq
659 escape sequence.
662 .character \[dq]
663 The double quote is used to enclose arguments in requests, macros, and
664 strings.
666 In the
667 .request ds
669 .request as
670 requests, a leading double quote in the argument will be stripped off,
671 making everything else afterwards the string to be defined (enabling
672 leading whitespace).
674 The escaped double quote
675 .esc \[dq]
676 introduces a comment.
678 Otherwise, it is not special.
680 Groff provides a printable representation with the
681 .esc (dq
682 escape sequence.
685 .character \[rs]
686 The backslash usually introduces an escape sequence (this can be
687 changed with the
688 .request ec
689 request).
691 A printed version of the escape character is the
692 .esc e
693 escape; a backslash glyph can be obtained by
694 .esc (rs .
696 .character (
697 The open parenthesis is only special in escape sequences when
698 introducing an escape name or argument consisting of exactly two
699 characters.
701 In groff, this behavior can be replaced by the \f[CB][]\f[] construct.
703 .character [
704 The opening bracket is only special in groff escape sequences; there
705 it is used to introduce a long escape name or long escape argument.
707 Otherwise, it is non-special, e.g.\& in macro calls.
709 .character ]
710 The closing bracket is only special in groff escape sequences; there
711 it terminates a long escape name or long escape argument.
713 Otherwise, it is non-special.
715 \f[CI]space\f[]
716 Space characters are only functional characters.
718 They separate the arguments in requests, macros, and strings, and the words
719 in text lines.
721 They are subject to groff's horizontal spacing calculations.
723 To get a defined space width, escape sequences like
724 .squoted_char "\[rs]\ "
725 (this is the escape character followed by a space),
726 .esc | ,
727 .esc ^ ,
729 .esc h
730 should be used.
732 .IP \f[CI]newline\f[]
733 In text paragraphs, newlines mostly behave like space characters.
735 Continuation lines can be specified by an escaped newline, i.e., by
736 specifying a backslash
737 .squoted_char \[rs]
738 as the last character of a line.
739 .IP \f[CI]tab\f[]
740 If a tab character occurs during text the interpreter makes a
741 horizontal jump to the next pre-defined tab position.
743 There is a sophisticated interface for handling tab positions.
746 .\" --------------------------------------------------------------------
747 .SH "NUMERICAL EXPRESSIONS"
748 .\" --------------------------------------------------------------------
751 .B numerical value
752 is a signed or unsigned integer or float with or without an appended
753 scaling indicator.
756 .B scaling indicator
757 is a one-character abbreviation for a unit of measurement.
759 A number followed by a scaling indicator signifies a size value.
761 By default, numerical values do not have a scaling indicator, i.e., they
762 are normal numbers.
766 .I roff
767 language defines the following scaling indicators.
771 .PD 0
774 .TPx
775 .B c
776 Centimeter
778 .TPx
779 .B i
780 Inch
782 .TPx
783 .B P
784 Pica\ \[eq]\ 1/6\ inch
786 .TPx
787 .B p
788 Point\ \[eq]\ 1/72\ inch
790 .TPx
791 .B m
792 Em\ \[eq]\ \f[R]the font size in points (width of letter `\f[CR]m\f[R]')
794 .TPx
795 .B M
796 100\^th \f[R]of an \f[CR]Em
798 .TPx
799 .B n
800 En\ \[eq]\ Em/2
802 .TPx
803 .B u
804 Basic unit for actual output device
806 .TPx
807 .B v
808 Vertical line space in basic units
809 scaled point\ \[eq]\ 1/\f[CI]sizescale\f[R] of a point (defined in
810 font \f[I]DESC\f[] file)
812 .TPx
813 .B f
814 Scale by 65536.
819 .B Numerical expressions
820 are combinations of the numerical values defined above with the
821 following arithmetical operators already defined in classical troff.
824 .PD 0
827 .TPx
828 .B +
829 Addition
831 .TPx
832 .B \-
833 Subtraction
835 .TPx
836 .B *
837 Multiplication
839 .TPx
840 .B /
841 Division
843 .TPx
844 .B %
845 Modulo
847 .TPx
848 .B =
849 Equals
851 .TPx
852 .B ==
853 Equals
855 .TPx
856 .B <
857 Less than
859 .TPx
860 .B >
861 Greater than
863 .TPx
864 .B <=
865 Less or equal
867 .TPx
868 .B >=
869 Greater or equal
871 .TPx
872 .B &
873 Logical and
875 .TPx
876 .B :
877 Logical or
879 .TPx
880 .B !
881 Logical not
883 .TPx
884 .B (
885 Grouping of expressions
887 .TPx
888 .B )
889 Close current grouping
895 Moreover,
896 .I groff
897 added the following operators for numerical expressions:
900 .PD 0
903 .TPx
904 .ExecFF Text I CB e1 >? e2
905 The maximum of
906 .I e1
908 .IR e2 .
910 .TPx
911 .ExecFF Text I CB e1 <? e2
912 The minimum of
913 .I e1
915 .IR e2 .
917 .TPx
918 .ExecFF Text CB I ( c ; e )
919 Evaluate
920 .I e
921 using
922 .I c
923 as the default scaling indicator.
929 For details see the groff info file.
932 .\" --------------------------------------------------------------------
933 .SH CONDITIONS
934 .\" --------------------------------------------------------------------
936 .B Conditions
937 occur in tests raised by the
938 .request if ,
939 .request ie ,
940 and the
941 .request while
942 requests.
944 The following table characterizes the different types of conditions.
947 .PD 0
950 .TPx
951 .I N
952 A numerical expression
953 .I N
954 yields true if its value is greater than\~0.
956 .TPx
957 .BI ! N
958 True if the value of
959 .I I
960 is\~0.
962 .TPx
963 .BI ' s1 ' s2 '
964 True if string\~\c
965 .I s1
966 is identical to string\~\c
967 .IR s2 .
969 .TPx
970 .BI !' s1 ' s2 '
971 True if string\~\c
972 .I s1
973 is not identical to string\~\c
974 .IR s2 .
976 .TPx
977 .BI c ch
978 True if there is a character\~\c
979 .I ch
980 available.
982 .TPx
983 .BI d name
984 True if there is a string, macro, diversion, or request called
985 .IR name .
987 .TPx
988 .B e
989 Current page number is even.
991 .TPx
992 .B o
993 Current page number is odd.
995 .TPx
996 .BI m name
997 True if there is a color called
998 .IR name .
1000 .TPx
1001 .B n
1002 Formatter is
1003 .BR nroff .
1005 .TPx
1006 .BI r reg
1007 True if there is a register named
1008 .IR reg .
1010 .TPx
1011 .B t
1012 Formatter is
1013 .BR troff .
1019 .\" --------------------------------------------------------------------
1020 .SH REQUESTS
1021 .\" --------------------------------------------------------------------
1023 This section provides a short reference for the predefined requests.
1025 In groff, request and macro names can be arbitrarily long.
1027 No bracketing or marking of long names is needed.
1030 Most requests take one or more arguments.
1032 The arguments are separated by space characters (no tabs!); there is
1033 no inherent limit for their length or number.
1035 An argument can be enclosed by a pair of double quotes.
1037 This is very handy if an argument contains space characters, e.g.,
1038 .RI \[dq] "arg with space" \[dq]
1039 denotes a single argument.
1042 Some requests have optional arguments with a different behaviour.
1044 Not all of these details are outlined here.
1046 Refer to the groff info file and
1047 .BR groff_diff (@MAN7EXT@)
1048 for all details.
1051 In the following request specifications, most argument names were
1052 chosen to be descriptive.
1054 Only the following denotations need clarification.
1057 .PD 0
1060 .TPx
1061 .I c
1062 denotes a single character.
1064 .TPx
1065 .I font
1066 a font either specified as a font name or a font number.
1068 .TPx
1069 .I anything
1070 all characters up to the end of the line or within
1071 .esc {
1073 .esc } .
1075 .TPx
1076 .I n
1077 is a numerical expression that evaluates to an integer value.
1079 .TPx
1080 .I N
1081 is an arbitrary numerical expression, signed or unsigned.
1083 .TPx
1084 .I \[+-]N
1085 has three meanings depending on its sign, described below.
1091 If an expression defined as
1092 .I \[+-]N
1093 starts with a
1094 .squoted_char +
1095 sign the resulting value of the expression will be added to an already
1096 existing value inherent to the related request, e.g.\& adding to a number
1097 register.
1099 If the expression starts with a
1100 .squoted_char -
1101 the value of the expression will be subtracted from the request value.
1104 Without a sign,
1105 .I N
1106 replaces the existing value directly.
1108 To assign a negative number either prepend\~0 or enclose the negative
1109 number in parentheses.
1112 .\" --------------------------------------------------------------------
1113 .SS "Request Short Reference"
1114 .\" --------------------------------------------------------------------
1116 .PD 0
1118 .REQ .
1119 Empty line, ignored.
1121 Useful for structuring documents.
1123 .REQ .\[rs]\[dq] anything
1124 Complete line is a comment.
1126 .REQ .ab string
1127 Print
1128 .I string
1129 on standard error, exit program.
1131 .REQ .ad
1132 Begin line adjustment for output lines in current adjust mode.
1134 .REQ .ad c
1135 Start line adjustment in mode
1136 .I c
1137 (\f[CI]c\f[]\f[CR]\|\^\[eq]\|l,r,b,n\f[]).
1139 .REQ .af register c
1140 Assign format
1141 .I c
1143 .I register
1144 (\f[CI]c\f[]\f[CR]\|\^\[eq]\|l,i,I,a,A\f[]).
1146 .REQ .aln alias register
1147 Create alias name for
1148 .IR register .
1150 .REQ .als alias object
1151 Create alias name for request, string, macro, or diversion
1152 .IR object .
1154 .REQ .am macro
1155 Append to
1156 .I macro
1157 until
1158 .B ..\&
1159 is encountered.
1161 .REQ .am macro end
1162 Append to
1163 .I macro
1164 until
1165 .request .end
1166 is called.
1168 .REQ .ami macro
1169 Append to a macro whose name is contained in the string register
1170 .I macro
1171 until
1172 .B ..\&
1173 is encountered.
1175 .REQ .ami macro end
1176 Append to a macro indirectly.
1177 .I macro
1179 .I end
1180 are string registers whose contents are interpolated for the macro name
1181 and the end macro, respectively.
1183 .REQ .am1 macro
1184 Same as
1185 .request .am
1186 but with compatibility mode switched off during macro expansion.
1188 .REQ .am1 macro end
1189 Same as
1190 .request .am
1191 but with compatibility mode switched off during macro expansion.
1193 .REQ .as stringvar anything
1194 Append
1195 .I anything
1197 .IR stringvar .
1199 .REQ .asciify diversion
1200 Unformat ASCII characters, spaces, and some escape sequences in
1201 .IR diversion .
1203 .REQ .as1 stringvar anything
1204 Same as
1205 .request .as
1206 but with compatibility mode switched off during string expansion.
1208 .REQ .backtrace
1209 Print a backtrace of the input on stderr.
1211 .REQ .bd font N
1212 Embolden
1213 .I font
1215 .IR N -1
1216 units.
1218 .REQ .bd S font N
1219 Embolden Special Font
1220 .I S
1221 when current font is
1222 .IR font .
1224 .REQ .blm
1225 Unset the blank line macro.
1227 .REQ .blm macro
1228 Set the blank line macro to
1229 .IR macro .
1231 .REQ .box
1232 End current diversion.
1234 .REQ .box macro
1235 Divert to
1236 .IR macro ,
1237 omitting a partially filled line.
1239 .REQ .boxa
1240 End current diversion.
1242 .REQ .boxa macro
1243 Divert and append to
1244 .IR macro ,
1245 omitting a partially filled line.
1247 .REQ .bp
1248 Eject current page and begin new page.
1250 .REQ .bp \[+-]N
1251 Eject current page; next page number
1252 .IR \[+-]N .
1254 .REQ .br
1255 Line break.
1257 .REQ .brp
1258 Break and spread output line.
1259 Same as
1260 .esc p .
1262 .REQ .break
1263 Break out of a while loop.
1265 .REQ .c2
1266 Reset no-break control character to
1267 .dquoted_char ' .
1269 .REQ .c2 c
1270 Set no-break control character to
1271 .IR c .
1273 .REQ .cc
1274 Reset control character to
1275 .squoted_char . .
1277 .REQ .cc c
1278 Set control character to
1279 .IR c .
1281 .REQ .ce
1282 Center the next input line.
1284 .REQ .ce N
1285 Center following
1286 .I N
1287 input lines.
1289 .REQ .cf filename
1290 Copy contents of file
1291 .I filename
1292 unprocessed to stdout or to the diversion.
1294 .REQ .cflags mode c1 c2 .\|.\|.\&
1295 Treat characters
1296 .IR c1 ,
1297 .IR c2 ,
1298 .I .\|.\|.\&
1299 according to
1300 .I mode
1301 number.
1303 .REQ .ch trap N
1304 Change
1305 .I trap
1306 location
1308 .I N .
1310 .REQ .char c anything
1311 Define character
1312 .I c
1313 as string
1314 .IR anything .
1316 .REQ .chop object
1317 Chop the last character off macro, string, or diversion
1318 .IR object .
1320 .REQ .close stream
1321 Close the
1322 .IR stream .
1324 .REQ .color
1325 Enable colors.
1327 .REQ .color N
1329 .I N
1330 is zero disable colors, otherwise enable them.
1332 .REQ .composite from to
1333 Map glyph name
1334 .I from
1335 to glyph name
1336 .I to
1337 while constructing a composite glyph name.
1339 .REQ .continue
1340 Finish the current iteration of a while loop.
1342 .REQ .cp
1343 Enable compatibility mode.
1345 .REQ .cp N
1347 .I N
1348 is zero disable compatibility mode, otherwise enable it.
1350 .REQ .cs font N M
1351 Set constant character width mode for
1352 .I font
1354 .IR N /36
1355 ems with em
1356 .IR M .
1358 .REQ .cu N
1359 Continuous underline in nroff, like
1360 .request .ul
1361 in troff.
1363 .REQ .da
1364 End current diversion.
1366 .REQ .da macro
1367 Divert and append to
1368 .IR macro .
1370 .REQ .de macro
1371 Define or redefine
1372 .I macro
1373 until
1374 .B ..\&
1375 is encountered.
1377 .REQ .de macro end
1378 Define or redefine
1379 .I macro
1380 until
1381 .request .end
1382 is called.
1384 .REQ .de1 macro
1385 Same as
1386 .request .de
1387 but with compatibility mode switched off during macro expansion.
1389 .REQ .de1 macro end
1390 Same as
1391 .request .de
1392 but with compatibility mode switched off during macro expansion.
1394 .REQ .defcolor color scheme component
1395 Define or redefine a color with name
1396 .IR color .
1397 .I scheme
1398 can be
1399 .BR rgb ,
1400 .BR cym ,
1401 .BR cymk ,
1402 .BR gray ,
1404 .BR grey .
1405 .I component
1406 can be single components specified as fractions in the range 0 to 1
1407 (default scaling indicator\~\c
1408 .scaleindicator f ),
1409 as a string of two-digit hexadecimal color components with a leading
1410 .BR # ,
1411 or as a string of four-digit hexadecimal components with two leading
1412 .BR # .
1413 The color
1414 .B default
1415 can't be redefined.
1417 .REQ .dei macro
1418 Define or redefine a macro whose name is contained in the string register
1419 .I macro
1420 until
1421 .B ..\&
1422 is encountered.
1424 .REQ .dei macro end
1425 Define or redefine a macro indirectly.
1426 .I macro
1428 .I end
1429 are string registers whose contents are interpolated for the macro name
1430 and the end macro, respectively.
1432 .REQ .di
1433 End current diversion.
1435 .REQ .di macro
1436 Divert to
1437 .I macro .
1439 .REQ .do name
1440 Interpret
1441 .request .name
1442 with compatibility mode disabled.
1444 .REQ .ds stringvar anything
1446 .I stringvar
1448 .IR anything .
1450 .REQ .ds1 stringvar anything
1451 Same as
1452 .request .ds
1453 but with compatibility mode switched off during string expansion.
1455 .REQ .dt N trap
1456 Set diversion trap to position
1457 .I N
1458 (default scaling indicator\~\c
1459 .scaleindicator v ).
1461 .REQ .ec
1462 Reset escape character to
1463 .squoted_char \[rs] .
1465 .REQ .ec c
1466 Set escape character to
1467 .IR c .
1469 .REQ .ecr
1470 Restore escape character saved with
1471 .request .ecs .
1473 .REQ .ecs
1474 Save current escape character.
1476 .REQ .el anything
1477 Else part for if-else (\c
1478 .request ie )
1479 request.
1481 .REQ .em macro
1483 .I macro
1484 will be run after the end of input.
1486 .REQ .eo
1487 Turn off escape character mechanism.
1489 .REQ .ev
1490 Switch to previous environment.
1492 .REQ .ev env
1493 Push down environment number or name
1494 .I env
1495 and switch to it.
1497 .REQ .evc env
1498 Copy the contents of environment
1499 .I env
1500 to the current environment.
1501 No pushing or popping.
1503 .REQ .ex
1504 Exit from roff processing.
1506 .REQ .fam
1507 Return to previous font family.
1509 .REQ .fam name
1510 Set the current font family to
1511 .IR name .
1513 .REQ .fc
1514 Disable field mechanism.
1516 .REQ .fc a
1517 Set field delimiter to
1518 .I a
1519 and pad character to space.
1521 .REQ .fc a b
1522 Set field delimiter to
1523 .I a
1524 and pad character to
1525 .IR b .
1527 .REQ .fchar c anything
1528 Define fallback character
1529 .I c
1530 as string
1531 .IR anything .
1533 .REQ .fi
1534 Fill output lines.
1536 .REQ .fl
1537 Flush output buffer.
1539 .REQ .fp n font
1540 Mount
1541 .I font
1542 on position
1543 .IR n .
1545 .REQ .fp n internal external
1546 Mount font with long
1547 .I external
1548 name to short
1549 .I internal
1550 name on position
1551 .IR n .
1553 .REQ .fschar f c anything
1554 Define fallback character
1555 .I c
1556 for font
1557 .I f
1558 as string
1559 .IR anything .
1561 .REQ .fspecial font
1562 Reset list of special fonts for
1563 .I font
1564 to be empty.
1566 .REQ .fspecial font s1 s2 .\|.\|.\&
1567 When the current font is
1568 .IR font ,
1569 then the fonts
1570 .IR s1 ,
1571 .IR s2 ,
1572 .I .\|.\|.\&
1573 will be special.
1575 .REQ .ft
1576 Return to previous font.
1577 Same as
1578 .request \[rs]f[]
1580 .request \[rs]fP .
1582 .REQ .ft font
1583 Change to font name or number
1584 .IR font ;
1585 same as
1586 .esc[] f font
1587 escape sequence.
1589 .REQ .ftr font1 font2
1590 Translate
1591 .I font1
1593 .IR font2 .
1595 .REQ .hc
1596 Remove additional hyphenation indicator character.
1598 .REQ .hc c
1599 Set up additional hyphenation indicator character\~\c
1600 .IR c .
1602 .REQ .hcode c1 code1 c2 code2 .\|.\|.\&
1603 Set the hyphenation code of character
1604 .I c1
1606 .IR code1 ,
1607 that of
1608 .I c2
1610 .IR code2 ,
1611 etc.
1613 .REQ .hla lang
1614 Set the current hyphenation language to
1615 .IR lang .
1617 .REQ .hlm n
1618 Set the maximum number of consecutive hyphenated lines to
1619 .IR n .
1621 .REQ .hpf file
1622 Read hyphenation patterns from
1623 .IR file .
1625 .REQ .hpfa file
1626 Append hyphenation patterns from
1627 .IR file .
1629 .REQ .hpfcode file
1630 Set input mapping for
1631 .request .hpf .
1633 .REQ .hw words
1634 List of
1635 .I words
1636 with exceptional hyphenation.
1638 .REQ .hy N
1639 Switch to hyphenation mode
1640 .IR N .
1642 .REQ .hym n
1643 Set the hyphenation margin to
1644 .I n
1645 (default scaling indicator\~\c
1646 .scaleindicator m ).
1648 .REQ .hys n
1649 Set the hyphenation space to
1650 .IR n .
1652 .REQ .ie cond anything
1654 .I cond
1655 then
1656 .I anything
1657 else goto
1658 .request .el .
1660 .REQ .if cond anything
1662 .I cond
1663 then
1664 .IR anything ;
1665 otherwise do nothing.
1667 .REQ .ig
1668 Ignore text until
1669 .B ..\&
1670 is encountered.
1672 .REQ .ig end
1673 Ignore text until
1674 .request .end .
1676 .REQ .in
1677 Change to previous indent value.
1679 .REQ .in \[+-]N
1680 Change indent according to
1681 .I \[+-]N
1682 (default scaling indicator\~\c
1683 .scaleindicator m ).
1685 .REQ .it N trap
1686 Set an input-line count trap for the next
1687 .I N
1688 lines.
1690 .REQ .itc N trap
1691 Same as
1692 .request .it
1693 but count lines interrupted with
1694 .esc c
1695 as one line.
1697 .REQ .kern
1698 Enable pairwise kerning.
1700 .REQ .kern n
1702 .I n
1703 is zero, disable pairwise kerning, otherwise enable it.
1705 .REQ .lc
1706 Remove leader repetition character.
1708 .REQ .lc c
1709 Set leader repetition character to\~\c
1710 .IR c .
1712 .REQ .length register anything
1713 Write the length of the string
1714 .I anything
1716 .IR register .
1718 .REQ .linetabs
1719 Enable line-tabs mode (i.e., calculate tab positions relative to output
1720 line).
1722 .REQ .linetabs n
1724 .I n
1725 is zero, disable line-tabs mode, otherwise enable it.
1727 .REQ .lf N
1728 Set input line number to
1729 .IR N .
1731 .REQ .lf N file
1732 Set input line number to
1733 .I N
1734 and filename to
1735 .IR file .
1737 .REQ .lg N
1738 Ligature mode on if
1739 .IR N >0.
1741 .REQ .ll
1742 Change to previous line length.
1744 .REQ .ll \[+-]N
1745 Set line length according to
1746 .I \[+-]N
1747 (default size
1748 .scalednumber 6.5 i ,
1749 default scaling indicator\~\c
1750 .scaleindicator m ).
1752 .REQ .ls
1753 Change to the previous value of additional intra-line skip.
1755 .REQ .ls N
1756 Set additional intra-line skip value to
1757 .IR N ,
1758 i.e.,
1759 .IR N -1
1760 blank lines are inserted after each text output line.
1762 .REQ .lt \[+-]N
1763 Length of title (default scaling indicator\~\c
1764 .scaleindicator m ).
1766 .REQ .mc
1767 Margin character off.
1769 .REQ .mc c
1770 Print character
1771 .I c
1772 after each text line at actual distance from right margin.
1774 .REQ .mc c N
1775 Set margin character to
1776 .I c
1777 and distance to
1778 .I N
1779 from right margin (default scaling indicator\~\c
1780 .scaleindicator m ).
1782 .REQ .mk register
1783 Mark current vertical position in
1784 .IR register .
1786 .REQ .mso file
1787 The same as the .so request except that
1788 .I file
1789 is searched in the tmac directories.
1791 .REQ .na
1792 No output-line adjusting.
1794 .REQ .ne
1795 Need a one-line vertical space.
1797 .REQ .ne N
1798 Need
1799 .I N
1800 vertical space (default scaling indicator\~\c
1801 .scaleindicator v ).
1803 .REQ .nf
1804 No filling or adjusting of output-lines.
1806 .REQ .nh
1807 No hyphenation.
1809 .REQ .nm
1810 Number mode off.
1812 .REQ .nm \[+-]N \fR[\fPM \fR[\fPS \fR[\fPI\fR]]]\fP
1813 In line number mode, set number, multiple, spacing, and indent.
1815 .REQ .nn
1816 Do not number next line.
1818 .REQ .nn N
1819 Do not number next
1820 .I N
1821 lines.
1823 .REQ .nop anything
1824 Always execute
1825 .IR anything .
1827 .REQ .nr register \[+-]N M
1828 Define or modify
1829 .I register
1830 using
1831 .I \[+-]N
1832 with auto-increment
1833 .IR M .
1835 .REQ .nroff
1836 Make the built-in condition
1837 .B n
1838 true and
1839 .B t
1840 false.
1842 .REQ .ns
1843 Turn no-space mode on.
1845 .REQ .nx
1846 Immediately jump to end of current file.
1848 .REQ .nx filename
1849 Next file.
1851 .REQ .open stream filename
1852 Open
1853 .register filename
1854 for writing and associate the stream named
1855 .register stream
1856 with it.
1858 .REQ .opena stream filename
1859 Like
1860 .request .open
1861 but append to it.
1863 .REQ .os
1864 Output vertical distance that was saved by the
1865 .request sv
1866 request.
1868 .REQ .output string
1869 Emit
1870 .I string
1871 directly to intermediate output, allowing leading whitespace if
1872 .I string
1873 starts with
1874 .character \[dq]
1875 (which will be stripped off).
1877 .REQ .pc
1878 Reset page number character to\~\c
1879 .squoted_char % .
1881 .REQ .pc c
1882 Page number character.
1884 .REQ .pi program
1885 Pipe output to
1886 .I program
1887 (nroff only).
1889 .REQ .pl
1890 Set page length to default
1891 .scalednumber 11 i .
1892 The current page length is stored in
1893 .register .p .
1895 .REQ .pl \[+-]N
1896 Change page length to
1897 .I \[+-]N
1898 (default scaling indicator\~\c
1899 .scaleindicator v ).
1901 .REQ .pm
1902 Print macro names and sizes (number of blocks of 128 bytes).
1904 .REQ ".pm t"
1905 Print only total of sizes of macros (number of 128 bytes blocks).
1907 .REQ .pn \[+-]N
1908 Next page number
1909 .IR N .
1911 .REQ .pnr
1912 Print the names and contents of all currently defined number registers
1913 on stderr.
1915 .REQ .po
1916 Change to previous page offset.
1918 The current page offset is available in
1919 .register .o .
1921 .REQ .po \[+-]N
1922 Page offset
1923 .IR N .
1925 .REQ .ps
1926 Return to previous point-size.
1927 .REQ .ps \[+-]N
1928 Point size; same as
1929 .esc[] s \[+-]N .
1931 .REQ .psbb filename
1932 Get the bounding box of a PostScript image
1933 .IR filename .
1935 .REQ .pso command
1936 This behaves like the
1937 .request so
1938 request except that input comes from the standard output of
1939 .IR command .
1941 .REQ .ptr
1942 Print the names and positions of all traps (not including input line
1943 traps and diversion traps) on stderr.
1945 .REQ .pvs
1946 Change to previous post-vertical line spacing.
1948 .REQ .pvs \[+-]N
1949 Change post-vertical line spacing according to
1950 .I \[+-]N
1951 (default scaling indicator\~\c
1952 .scaleindicator p ).
1954 .REQ .rchar c1 c2 .\|.\|.\&
1955 Remove the definitions of characters
1956 .IR c1 ,
1957 .IR c2 ,
1958 .I .\|.\|.\&
1960 .REQ .rd prompt
1961 Read insertion.
1963 .REQ .return
1964 Return from a macro.
1966 .REQ .return anything
1967 Return twice, namely from the macro at the current level and from the macro
1968 one level higher.
1970 .REQ .rfschar f c1 c2 .\|.\|.\&
1971 Remove the definitions of characters
1972 .IR c1 ,
1973 .IR c2 ,
1974 .I .\|.\|.\&
1975 for font
1976 .IR f .
1978 .REQ .rj n
1979 Right justify the next
1980 .I n
1981 input lines.
1983 .REQ .rm name
1984 Remove request, macro, or string
1985 .IR name .
1987 .REQ .rn old new
1988 Rename request, macro, or string
1989 .I old
1991 .IR new .
1993 .REQ .rnn reg1 reg2
1994 Rename register
1995 .I reg1
1997 .IR reg2 .
1999 .REQ .rr register
2000 Remove
2001 .IR register .
2003 .REQ .rs
2004 Restore spacing; turn no-space mode off.
2006 .REQ .rt \[+-]N
2007 Return
2008 .I (upward only)
2009 to marked vertical place (default scaling indicator\~\c
2010 .scaleindicator v ).
2012 .REQ .schar c anything
2013 Define global fallback character
2014 .I c
2015 as string
2016 .IR anything .
2018 .REQ .shc
2019 Reset soft hyphen character to
2020 .esc (hy .
2022 .REQ .shc c
2023 Set the soft hyphen character to
2024 .IR c .
2026 .REQ .shift n
2027 In a macro, shift the arguments by
2028 .IR n \~\c
2029 positions.
2031 .REQ .sizes s1 s2 .\|.\|.\& sn \fB[0]\fP
2032 Set available font sizes similar to the
2033 .B sizes
2034 command in a
2035 .B DESC
2036 file.
2038 .REQ .so filename
2039 Include source file.
2041 .REQ .sp
2042 Skip one line vertically.
2044 .REQ .sp N
2045 Space vertical distance
2046 .I N
2047 up or down according to sign of
2048 .I N
2049 (default scaling indicator\~\c
2050 .scaleindicator v ).
2052 .REQ .special
2053 Reset global list of special fonts to be empty.
2055 .REQ .special s1 s2 .\|.\|.\&
2056 Fonts
2057 .IR s1 ,
2058 .IR s2 ,
2059 etc.\& are special and will be searched for characters not in the
2060 current font.
2062 .REQ .spreadwarn
2063 Toggle the spread warning on and off without changing its value.
2065 .REQ .spreadwarn limit
2066 Emit a warning if each space in an output line is widened by
2067 .I limit
2068 or more (default scaling indicator\~\c
2069 .scaleindicator m ).
2071 .REQ .ss N
2072 Space-character size set to
2073 .IR N /12
2074 of the spacewidth in the current font.
2076 .REQ .ss N M
2077 Space-character size set to
2078 .IR N /12
2079 and sentence space size set to
2080 .IR M /12
2081 of the spacewidth in the current font (\f[CR]\[eq]1/3 em\f[]).
2083 .REQ .sty n style
2084 Associate
2085 .I style
2086 with font position
2087 .IR n .
2089 .REQ .substring xx n1 n2
2090 Replace the string named
2091 .I xx
2092 with the substring defined by the indices
2093 .I n1
2095 .IR n2 .
2097 .REQ .sv
2098 Save
2099 .scalednumber 1 v
2100 of vertical space.
2102 .REQ .sv N
2103 Save the vertical distance
2104 .I N
2105 for later output with
2106 .request os
2107 request.
2109 .REQ .sy command-line
2110 Execute program
2111 .IR command-line .
2113 .REQ ".ta T" N
2114 Set tabs after every position that is a multiple of
2115 .I N
2116 (default scaling indicator\~\c
2117 .scaleindicator m ).
2118 .REQ .ta n1 n2 .\|.\|.\& nn \f[CB]T\f[] r1 r2 .\|.\|.\& rn
2119 Set tabs at positions
2120 .IR n1 ,
2121 .IR n2 ,
2122 .Text .\|.\|.,
2123 .IR nn ,
2124 then set tabs at
2125 .IR nn + r1 ,
2126 .IR nn + r2 ,
2127 .Text .\|.\|.,
2128 .IR nn + rn ,
2129 then at
2130 .IR nn + rn + r1 ,
2131 .IR nn + rn + r2 ,
2132 .Text .\|.\|.,
2133 .IR nn + rn + rn ,
2134 and so on.
2136 .\".REQ .tar
2137 .\"Restore internally saved tab positions.
2138 .\".
2139 .\".REQ .tas
2140 .\"Save tab positions internally.
2142 .REQ .tc
2143 Remove tab repition character.
2144 .REQ .tc c
2145 Set tab repetition character to\~\c
2146 .IR c .
2148 .REQ .ti \[+-]N
2149 Temporary indent next line (default scaling indicator\~\c
2150 .scaleindicator m ).
2152 .REQ .tkf font s1 n1 s2 n2
2153 Enable track kerning for
2154 .IR font .
2156 .REQ .tl \f[CB]\[cq]\f[]left\f[CB]\[cq]\f[]center\f[CB]\[cq]\f[]right\f[CB]\[cq]\f[]
2157 Three-part title.
2159 .REQ .tm anything
2160 Print
2161 .I anything
2162 on terminal (UNIX standard message output).
2164 .REQ .tm1 anything
2165 Print
2166 .I anything
2167 on terminal (UNIX standard message output), allowing leading
2168 whitespace if
2169 .I anything
2170 starts with
2171 .character \[dq]
2172 (which will be stripped off).
2174 .REQ .tmc anything
2175 Similar to
2176 .request .tm1
2177 without emitting a final newline.
2179 .REQ .tr abcd.\|.\|.\&
2180 Translate
2181 .I a
2183 .IR b ,
2184 .I c
2186 .IR d ,
2187 etc.\& on output.
2189 .REQ .trf filename
2190 Transparently output the contents of file
2191 .IR filename .
2193 .REQ .trin abcd.\|.\|.\&
2194 This is the same as the
2195 .request tr
2196 request except that the
2197 .B asciify
2198 request will use the character code (if any) before the character
2199 translation.
2201 .REQ .trnt abcd.\|.\|.\&
2202 This is the same as the
2203 .request tr
2204 request except that the translations do not apply to text that is
2205 transparently throughput into a diversion with
2206 .esc ! .
2208 .REQ .troff
2209 Make the built-in condition
2210 .B t
2211 true and
2212 .B n
2213 false.
2215 .REQ .uf font
2216 Underline font set to
2217 .I font
2218 (to be switched to by
2219 .request .ul ).
2221 .REQ .ul N
2222 Underline (italicize in troff)
2223 .I N
2224 input lines.
2226 .REQ .unformat diversion
2227 Unformat space characters and tabs, preserving font information in
2228 .IR diversion .
2229 .REQ .vpt n
2230 Enable vertical position traps if
2231 .I n
2232 is non-zero, disable them otherwise.
2234 .REQ .vs
2235 Change to previous vertical base line spacing.
2237 .REQ .vs \[+-]N
2238 Set vertical base line spacing according to
2239 .I \[+-]N
2240 (default scaling indicator\~\c
2241 .scaleindicator p ).
2242 Default value is
2243 .scalednumber 12 p .
2245 .REQ .warn n
2246 Set warnings code to
2247 .IR n .
2249 .REQ .warnscale si
2250 Set scaling indicator used in warnings to
2251 .IR si .
2253 .REQ .wh N
2254 Remove (first) trap at position
2255 .IR N .
2257 .REQ .wh N trap
2258 Set location trap; negative means from page bottom.
2260 .REQ .while cond anything
2261 While condition
2262 .I cond
2263 is true, accept
2264 .I anything
2265 as input.
2267 .REQ .write stream anything
2268 Write
2269 .I anything
2270 to the stream named
2271 .IR stream .
2273 .REQ .writec stream anything
2274 Similar to
2275 .request .write
2276 without emitting a final newline.
2278 .REQ .writem stream xx
2279 Write contents of macro or string
2280 .I xx
2281 to the stream named
2282 .IR stream .
2287 Besides these standard groff requests, there might be further macro
2288 calls.
2289 They can originate from a macro package (see
2290 .BR roff (@MAN7EXT@)
2291 for an overview) or from a preprocessor.
2294 Preprocessor macros are easy to be recognized.
2296 They enclose their code into a pair of characteristic macros.
2300 box, center, tab (@);
2301 c | c | c
2302 CfCB | CfCB | CfCB.
2303 preprocessor@start macro@ end macro
2305 eqn@.PS@.PE
2306 grap@.G1@.G2
2307 grn@.GS@.GE
2308 pic@.PS@.PE
2309 refer@.R1@.R2
2310 soelim@\f[I]none@\f[I]none
2311 tbl@.TS@.TE
2316 .\" --------------------------------------------------------------------
2317 .SH "ESCAPE SEQUENCES"
2318 .\" --------------------------------------------------------------------
2320 Escape sequences are in-line language elements usually introduced by a
2321 backslash
2322 .squoted_char \[rs]
2323 and followed by an escape name and sometimes by a required argument.
2325 Input processing is continued directly after the escaped character or
2326 the argument resp.\& without an intervening separation character.
2328 So there must be a way to determine the end of the escape name and the
2329 end of the argument.
2332 This is done by enclosing names (escape name and arguments consisting
2333 of a variable name) by a pair of brackets
2334 .BI \[lB] name \[rB] 
2335 and constant arguments (number expressions and characters) by
2336 apostrophes (ASCII 0x27) like
2337 .BI \[cq] constant \[cq] \f[R].
2340 There are abbreviations for short names.
2342 Two character escape names can be specified by an opening parenthesis
2343 like
2344 .esc ( xy
2345 without a closing counterpart.
2347 And all one-character names different from the special characters
2348 .squoted_char [
2350 .squoted_char (
2351 can even be specified without a marker in the form
2352 .esc c .
2355 Constant arguments of length\~1 can omit the marker apostrophes, too,
2356 but there is no two-character analogue.
2359 While 1-character escape sequences are mainly used for in-line
2360 functions and system related tasks, the 2-letter names following the
2361 .esc (
2362 construct are used for special characters predefined by the roff system.
2364 Escapes sequences with names of more than two characters
2365 .esc[] "" name
2366 denote user defined named characters (see the
2367 .request char
2368 request).
2371 .\" --------------------------------------------------------------------
2372 .SS "Single Character Escapes"
2373 .\" --------------------------------------------------------------------
2375 .PD 0
2377 .\" --------- comments ---------
2379 .ESC \[dq]
2380 Beginning of a comment.
2382 Everything up to the end of the line is ignored.
2384 .ESC #
2385 Everything up to and including the next newline is ignored.
2387 This is interpreted in copy mode.
2389 This is like
2390 .esc \[dq]
2391 except that the terminating newline is ignored as well.
2393 .\" --------- strings ---------
2395 .ESC *\f[I]s\f[]
2396 The string stored in the string variable with 1-character name
2397 .IR s .
2399 .ESC *(\f[I]st\f[]
2400 The string stored in the string variable with 2-character name
2401 .IR st .
2403 .ESC[] * "stringvar arg1 arg2 .\|.\|."
2404 The string stored in the string variable with arbitrary length name
2405 .IR stringvar ,
2406 taking
2407 .IR arg1 ,
2408 .IR arg2 ,
2409 .I .\|.\|.\&
2410 as arguments.
2412 .\" --------- macro arguments ---------
2414 .ESC $0
2415 The name by which the current macro was invoked.
2418 .request als
2419 request can make a macro have more than one name.
2421 .ESC $ x
2422 Macro or string argument with 1-place number
2423 .IR x ,
2424 where
2425 .I x
2426 is a digit between 1 and 9.
2428 .ESC $( xy
2429 Macro or string argument with 2-digit number
2430 .IR xy .
2432 .ESC[] $ nexp
2433 Macro or string argument with number
2434 .IR nexp ,
2435 where
2436 .I nexp
2437 is a numerical expression evaluating to an integer \[>=]1.
2439 .ESC $*
2440 In a macro or string, the concatenation of all the arguments separated
2441 by spaces.
2443 .ESC $@
2444 In a macro or string, the concatenation of all the arguments with each
2445 surrounded by double quotes, and separated by spaces.
2447 .\" --------- escaped characters ---------
2449 .ESC \[rs]
2450 reduces to a single backslash; useful to delay its interpretation as
2451 escape character in copy mode.
2453 For a printable backslash, use
2454 .esc e ,
2455 or even better
2456 .esc [rs] ,
2457 to be independent from the current escape character.
2459 .ESC \[cq]
2460 The acute accent \[aa]; same as
2461 .esc (aa .
2462 Unescaped: apostrophe, right quotation mark, single quote (ASCII 0x27).
2464 .ESC `
2465 The grave accent \[ga]; same as
2466 .esc (ga .
2467 Unescaped: left quote, backquote (ASCII 0x60).
2469 .ESC \-
2470 The \- sign in the current font.
2472 .ESC .
2473 An uninterpreted dot (period), even at start of line.
2475 .ESC %
2476 Default optional hyphenation character.
2478 .ESC !
2479 Transparent line indicator.
2481 .ESC? anything
2482 In a diversion, this will transparently embed
2483 .I anything
2484 in the diversion.
2485 .I anything
2486 is read in copy mode.
2488 See also the escape sequences
2489 .esc !
2491 .esc ? .
2494 .\" --------- spacing ---------
2496 .ESC \& space
2497 Unpaddable space-size space character (no line break).
2499 .ESC 0
2500 Digit width.
2502 .ESC |
2503 1/6\ em narrow space character; zero width in nroff.
2505 .ESC ^
2506 1/12\ em half-narrow space character; zero width in nroff.
2508 .ESC &
2509 Non-printable, zero width character.
2511 .ESC )
2512 Like
2513 .esc &
2514 except that it behaves like a character declared with the cflags
2515 request to be transparent for the purposes of end of sentence
2516 recognition.
2518 .ESC /
2519 Increases the width of the preceding character so that the spacing
2520 between that character and the following character will be correct if
2521 the following character is a roman character.
2523 .ESC ,
2524 Modifies the spacing of the following character so that the spacing
2525 between that character and the preceding character will correct if the
2526 preceding character is a roman character.
2528 .ESC ~
2529 Unbreakable space that stretches like a normal inter-word space when a
2530 line is adjusted.
2532 .ESC :
2533 Inserts a zero-width break point (similar to
2534 .esc %
2535 but without a soft hyphen character).
2537 .ESC "" newline
2538 Ignored newline, for continuation lines.
2540 .\" --------- structuring ---------
2542 .ESC {
2543 Begin conditional input.
2545 .ESC }
2546 End conditional input.
2548 .\" --------- longer escape names ---------
2550 .ESC ( sc
2551 The special character with 2-character name
2552 .IR sc ,
2553 see section
2554 .BR "Special Characters" .
2556 .ESC[] "" name
2557 The named character (or rather glyph) with arbitrary length name
2558 .IR name .
2560 .ESC[] "" "comp1 comp2 .\|.\|."
2561 A composite glyph with components
2562 .IR comp1 ,
2563 .IR comp2 ,
2564 .I .\|.\|.
2566 .\" --------- alphabetical escapes ---------
2568 .ESC a
2569 Non-interpreted leader character.
2571 .ESCq A anything
2573 .I anything
2574 is acceptable as a name of a string, macro, diversion, register,
2575 environment or font it expands to\~1, and to\~0 otherwise.
2577 .ESCq b abc.\|.\|.\&
2578 Bracket building function.
2580 .ESCq B anything
2582 .I anything
2583 is acceptable as a valid numeric expression it expands to\~1, and
2584 to\~0 otherwise.
2586 .ESC c
2587 Interrupt text processing.
2589 .ESCq C char
2590 The character called
2591 .IR char ;
2592 same as
2593 .esc[] "" char ,
2594 but compatible to other roff versions.
2596 .ESC d
2597 Forward (down) 1/2 em vertical unit (1/2 line in nroff).
2599 .ESCq D charseq
2600 Draw a graphical element defined by the characters in
2601 .IR charseq ;
2602 see groff info file for details.
2604 .ESC e
2605 Printable version of the current escape character.
2607 .ESC E
2608 Equivalent to an escape character, but is not interpreted in copy-mode.
2610 .ESC f F
2611 Change to font with 1-character name or 1-digit number
2612 .IR F .
2614 .ESC fP
2615 Switch back to previous font.
2617 .ESC f( fo
2618 Change to font with 2-character name or 2-digit number
2619 .IR fo .
2621 .ESC[] f font
2622 Change to font with arbitrary length name or number expression
2623 .IR font .
2625 .ESC[] f ""
2626 Switch back to previous font.
2628 .ESC F f
2629 Change to font family with 1-character name
2630 .IR f .
2632 .ESC F( fm
2633 Change to font family with 2-character name
2634 .IR fm .
2636 .ESC[] F fam
2637 Change to font family with arbitrary length name
2638 .IR fam .
2640 .ESC[] F ""
2641 Switch back to previous font family.
2643 .ESC[] g reg
2644 Return format of register with name
2645 .I reg
2646 suitable for
2647 .request .af .
2649 Alternative forms
2650 .escarg g( xy
2652 .escarg g x .
2654 .ESCq h N
2655 Local horizontal motion; move right
2656 .I N
2657 (left if negative).
2659 .ESCq H N
2660 Set height of current font to
2661 .IR N .
2663 .ESC[] k reg
2664 Mark horizontal input place in register with arbitrary length name
2665 .IR reg .
2666 Alternative forms
2667 .escarg k( xy
2669 .escarg k x .
2671 .ESCq l Nc
2672 Horizontal line drawing function (optionally using character
2673 .IR c ).
2675 .ESCq L Nc
2676 Vertical line drawing function (optionally using character
2677 .IR c ).
2679 .ESC[] m color
2680 Change to color
2681 .IR color .
2683 Alternative forms
2684 .escarg m( co
2686 .escarg m c .
2688 .ESC[] m ""
2689 Switch back to previous color.
2691 .ESC[] M color
2692 Change filling color for closed drawn objects to color
2693 .IR color .
2695 Alternative forms
2696 .escarg M( co
2698 .escarg M c .
2700 .ESC[] M ""
2701 Switch to previous fill color.
2703 .ESC n r
2704 The numerical value stored in the register variable with the
2705 1-character name
2706 .IR r .
2708 .ESC n( re
2709 The numerical value stored in the register variable with the
2710 2-character name
2711 .IR re .
2713 .ESC[] n reg
2714 The numerical value stored in the register variable with arbitrary
2715 length name
2716 .IR reg .
2718 .ESCq N n
2719 Typeset the character with code
2720 .I n
2721 in the current font, no special fonts are searched.
2723 Useful for adding characters to a font using the
2724 .request char
2725 request.
2727 .ESCq o abc.\|.\|.\&
2728 Overstrike characters
2729 .IR a ,
2730 .IR b ,
2731 .IR c ,
2732 etc.
2734 .ESC O 0
2735 Disable glyph output.
2737 Mainly for internal use.
2739 .ESC O 1
2740 Enable glyph output.
2742 Mainly for internal use.
2744 .ESC p
2745 Break and spread output line.
2747 .ESC r
2748 Reverse 1\ em vertical motion (reverse line in nroff).
2750 .ESCq R "name\~\[+-]n"
2751 The same as
2752 .request .nr
2753 .I name
2754 .IR \[+-]n .
2756 .ESC[] s \[+-]N
2757 Set the point size to
2758 .I N
2759 scaled points.
2761 Note the alternative forms
2762 .BI \[rs]s \[+-] [ N ]\c
2764 .BI \[rs]s' \[+-]N '\c
2765 .Text ,
2766 .BI \[rs]s \[+-] ' N '\c
2767 .Text ,
2768 .escarg s( \[+-]xy\c
2769 .Text ,
2770 .BI \[rs]s \[+-] ( xy\c
2771 .Text ,
2772 .escarg s \[+-]x .
2773 Same as
2774 .request ps
2775 request.
2777 .ESCq S N
2778 Slant output
2779 .I N
2780 degrees.
2782 .ESC t
2783 Non-interpreted horizontal tab.
2785 .ESC u
2786 Reverse (up) 1/2 em vertical motion (1/2 line in nroff).
2788 .ESCq v N
2789 Local vertical motion; move down
2790 .I N
2791 (up if negative).
2793 .ESC[] V env
2794 The contents of the environment variable
2795 .IR env .
2797 Alternative forms
2798 .escarg V( xy
2800 .escarg V x .
2802 .ESCq w string
2803 The width of the character sequence
2804 .IR string .
2806 .ESCq x N
2807 Extra line-space function (negative before, positive after).
2809 .ESCq X string
2810 Output
2811 .I string
2812 as device control function.
2814 .ESC[] Y name
2815 Output string variable or macro
2816 .I name
2817 uninterpreted as device control function.
2819 Alternative forms
2820 .escarg Y( xy
2822 .escarg Y x .
2824 .ESC z c
2825 Print
2826 .I c
2827 with zero width (without spacing).
2829 .ESCq Z anything
2830 Print
2831 .I anything
2832 and then restore the horizontal and vertical position;
2833 .I anything
2834 may not contain tabs or leaders.
2838 The escape sequences
2839 .esc e ,
2840 .esc . ,
2841 .esc \[dq] ,
2842 .esc $ ,
2843 .esc * ,
2844 .esc a ,
2845 .esc n ,
2846 .esc t ,
2847 .esc g ,
2849 .escarg \& newline
2850 are interpreted in copy mode.
2853 Escape sequences starting with
2854 .esc (
2856 .esc [
2857 do not represent single character escape sequences, but introduce escape
2858 names with two or more characters.
2861 If a backslash is followed by a character that does not constitute a
2862 defined escape sequence the backslash is silently ignored and the
2863 character maps to itself.
2866 .\" --------------------------------------------------------------------
2867 .SS "Special Characters"
2868 .\" --------------------------------------------------------------------
2870 Common special characters are predefined by escape sequences of the
2871 form
2872 .BI \[rs]( xy
2873 with characters
2874 .I x
2876 .IR y .
2878 Some of these exist in the usual font while most of them are only
2879 available in the special font.
2881 Below you'll find a selection of the most important glyphs; a complete
2882 list can be found in
2883 .BR groff_char (@MAN7EXT@).
2886 .PD 0
2888 .ESC (bu
2889 Bullet sign
2890 .ESC (co
2891 Copyright
2892 .ESC (ct
2893 Cent
2894 .ESC (dd
2895 Double dagger
2896 .ESC (de
2897 Degree
2898 .ESC (dg
2899 Dagger
2900 .ESC (rs
2901 Printable double quote
2902 .ESC (em
2903 Em-dash
2904 .ESC (hy
2905 Hyphen
2906 .ESC (rg
2907 Registered sign
2908 .ESC (rs
2909 Printable backslash character
2910 .ESC (sc
2911 Section sign
2912 .ESC (ul
2913 Underline character
2914 .ESC (==
2915 Identical
2916 .ESC (>=
2917 Larger or equal
2918 .ESC (<=
2919 Less or equal
2920 .ESC (!=
2921 Not equal
2922 .ESC (->
2923 Right arrow
2924 .ESC (<-
2925 Left arrow
2926 .ESC (+-
2927 Plus-minus sign
2932 .\" --------------------------------------------------------------------
2933 .SS "Strings"
2934 .\" --------------------------------------------------------------------
2936 Strings are defined by the
2937 .request ds
2938 request and can be retrieved by the
2939 .esc *
2940 escape sequence.
2943 Strings share their name space with macros.
2945 So strings and macros without arguments are roughly equivalent; it is
2946 possible to call a string like a macro and vice-versa, but this often
2947 leads to unpredictable results.
2949 The following strings are predefined in groff.
2951 .STRING .T
2952 The name of the current output device as specified by the
2953 .option -T
2954 command line option.
2957 .\" --------------------------------------------------------------------
2958 .SH REGISTERS
2959 .\" --------------------------------------------------------------------
2961 Registers are variables that store a value.
2962 In groff, most registers store numerical values (see section
2963 .B NUMERICAL EXPRESSIONS
2964 above), but some can also hold a string value.
2967 Each register is given a name.
2968 Arbitrary registers can be defined and set with the request
2969 .request nr
2970 .IR register .
2973 The value stored in a register can be retrieved by the escape sequences
2974 introduced by
2975 .esc n .
2978 Most useful are predefined registers.
2980 In the following the notation
2981 .I name
2982 is used to refer to a register called
2983 .register name
2984 to make clear that we speak about registers.
2986 Please keep in mind that the
2987 .esc[] n ""
2988 decoration is not part of the register name.
2991 .\" --------------------------------------------------------------------
2992 .SS "Read-only Registers"
2993 .\" --------------------------------------------------------------------
2995 The following registers have predefined values that should not be
2996 modified by the user (usually, registers starting with a dot a
2997 read-only).
2999 Mostly, they provide information on the current settings or store
3000 results from request calls.
3003 .PD 0
3005 .REG .$
3006 Number of arguments in the current macro or string.
3008 .REG .a
3009 Post-line extra line-space most recently utilized using
3010 .escq x N .
3012 .REG .A
3013 Set to\~1 in
3014 .B troff
3015 if option
3016 .B \-A
3017 is used; always\~1 in
3018 .BR nroff .
3020 .REG .c
3021 Current input line number.
3023 .REG .C
3024 1\~if compatibility mode is in effect, 0\~otherwise.
3026 .REG .cdp
3027 The depth of the last character added to the current environment.
3028 It is positive if the character extends below the baseline.
3030 .REG .ce
3031 The number of lines remaining to be centered, as set by the
3032 .request ce
3033 request.
3035 .REG .cht
3036 The height of the last character added to the current environment.
3037 It is positive if the character extends above the baseline.
3039 .REG .color
3040 1\~if colors are enabled, 0\~otherwise.
3042 .REG .csk
3043 The skew of the last character added to the current environment.
3044 The skew of a character is how far to the right of the center of a character
3045 the center of an accent over that character should be placed.
3047 .REG .d
3048 Current vertical place in current diversion; equal to register
3049 .register nl .
3051 .REG .ev
3052 The name or number of the current environment (string-valued).
3054 .REG .f
3055 Current font number.
3057 .REG .fam
3058 The current font family (string-valued).
3060 .REG .fn
3061 The current (internal) real font name (string-valued).
3063 .REG .fp
3064 The number of the next free font position.
3066 .REG .g
3067 Always 1 in GNU troff.
3069 Macros should use it to test if running under groff.
3071 .REG .h
3072 Text base-line high-water mark on current page or diversion.
3074 .REG .H
3075 Available horizontal resolution in basic units.
3077 .REG .height
3078 The current font height as set with
3079 .request \[rs]H .
3081 .REG .hla
3082 The current hyphenation language as set by the
3083 .B .hla
3084 request.
3086 .REG .hlc
3087 The number of immediately preceding consecutive hyphenated lines.
3089 .REG .hlm
3090 The maximum allowed number of consecutive hyphenated lines, as set by
3092 .request hlm
3093 request.
3095 .REG .hy
3096 The current hyphenation flags (as set by the
3097 .request hy
3098 request).
3100 .REG .hym
3101 The current hyphenation margin (as set by the
3102 .request hym
3103 request).
3105 .REG .hys
3106 The current hyphenation space (as set by the
3107 .request hys
3108 request).
3110 .REG .i
3111 Current ident.
3113 .REG .in
3114 The indent that applies to the current output line.
3116 .REG .int
3117 Positive if last output line contains
3118 .esc c .
3120 .REG .kern
3121 1\~if pairwise kerning is enabled, 0\~otherwise.
3123 .REG .l
3124 Current line length.
3126 .REG .lg
3127 The current ligature mode (as set by the
3128 .request lg
3129 request).
3131 .REG .linetabs
3132 The current line-tabs mode (as set by the
3133 .request linetabs
3134 request).
3136 .REG .ll
3137 The line length that applies to the current output line.
3139 .REG .lt
3140 The title length (as set by the
3141 .request lt
3142 request).
3144 .REG .n
3145 Length of text portion on previous output line.
3147 .REG .ne
3148 The amount of space that was needed in the last
3149 .request ne
3150 request that caused a trap to be sprung.
3152 Useful in conjunction with
3153 .register .trunc .
3155 .REG .ns
3156 1\~if in no-space mode, 0\~otherwise.
3158 .REG .o
3159 Current page offset.
3161 .REG .p
3162 Current page length.
3164 .REG .pe
3165 1\~during page ejection, 0\~otherwise.
3167 .REG .pn
3168 The number of the next page: either the value set by a
3169 .request pn
3170 request, or the number of the current page plus\ 1.
3172 .REG .ps
3173 The current pointsize in scaled points.
3175 .REG .psr
3176 The last-requested pointsize in scaled points.
3178 .REG .pvs
3179 The current post-vertical line spacing.
3181 .REG .rj
3182 The number of lines to be right-justified as set by the rj request.
3184 .REG .s
3185 Current point size as a decimal fraction.
3187 .REG .slant
3188 The slant of the current font as set with
3189 .request \[rs]S .
3191 .REG .sr
3192 The last requested pointsize in points as a decimal fraction
3193 (string-valued).
3195 .REG .t
3196 Distance to the next trap.
3198 .REG .T
3199 Set to\~1
3200 if option
3201 .B \-T
3202 is used.
3204 .REG .tabs
3205 A string representation of the current tab settings suitable for use
3206 as an argument to the
3207 .request ta
3208 request.
3210 .REG .trunc
3211 The amount of vertical space truncated by the most recently sprung
3212 vertical position trap, or, if the trap was sprung by a
3213 .request ne
3214 request, minus the amount of vertical motion produced by
3215 .request .ne .
3217 In other words, at the point a trap is sprung, it represents
3218 the difference of what the vertical position would have been but for
3219 the trap, and what the vertical position actually is.
3221 Useful in conjunction with the
3222 .register .ne
3223 register.
3225 .REG .ss
3226 The value of the parameters set by the first argument of the
3227 .request ss
3228 request.
3230 .REG .sss
3231 The value of the parameters set by the second argument of the
3232 .request ss
3233 request.
3235 .REG .u
3236 Equal to 1 bin fill mode and 0 in nofill mode.
3238 .REG .v
3239 Current vertical line spacing.
3241 .REG .V
3242 Available vertical resolution in basic units.
3244 .REG .vpt
3245 1\~ if vertical position traps are enabled, 0\~otherwise.
3247 .REG .w
3248 Width of previous character.
3250 .REG .warn
3251 The sum of the number codes of the currently enabled warnings.
3253 .REG .x
3254 The major version number.
3256 .REG .y
3257 The minor version number.
3259 .REG .Y
3260 The revision number of groff.
3262 .REG .z
3263 Name of current diversion.
3267 .\" --------------------------------------------------------------------
3268 .SS "Writable Registers"
3269 .\" --------------------------------------------------------------------
3271 The following registers can be read and written by the user.
3272 They have predefined default values, but these can be modified for
3273 customizing a document.
3276 .PD 0
3277 .REG %
3278 Current page number.
3280 .REG c.
3281 Current input line number.
3283 .REG ct
3284 Character type (set by width function
3285 .esc w ).
3287 .REG dl
3288 Maximal width of last completed diversion.
3290 .REG dn
3291 Height of last completed diversion.
3293 .REG dw
3294 Current day of week (1-7).
3296 .REG dy
3297 Current day of month (1-31).
3299 .REG hours
3300 The number of hours past midnight.
3302 Initialized at start-up.
3304 .REG hp
3305 Current horizontal position at input line.
3307 .REG llx
3308 Lower left x-coordinate (in PostScript units) of a given PostScript
3309 image (set by
3310 .request .psbb ).
3312 .REG lly
3313 Lower left y-coordinate (in PostScript units) of a given PostScript
3314 image (set by
3315 .request .psbb ).
3317 .REG ln
3318 Output line number.
3320 .REG minutes
3321 The number of minutes after the hour.
3323 Initialized at start-up.
3325 .REG mo
3326 Current month (1-12).
3328 .REG nl
3329 Vertical position of last printed text base-line.
3331 .REG rsb
3332 Like
3333 .register sb ,
3334 but takes account of the heights and depths of characters.
3336 .REG rst
3337 Like
3338 .register st ,
3339 but takes account of the heights and depths of characters.
3341 .REG sb
3342 Depth of string below base line (generated by width function
3343 .esc w ).
3345 .REG seconds
3346 The number of seconds after the minute.
3348 Initialized at start-up.
3350 .REG skw
3351 Right skip width from the center of the last character in the
3352 .esc w
3353 argument.
3355 .REG slimit
3356 If greater than 0, the maximum number of objects on the input stack.
3358 If \[<=]0 there is no limit, i.e., recursion can continue until virtual
3359 memory is exhausted.
3361 .REG ssc
3362 The amount of horizontal space (possibly negative) that should be
3363 added to the last character before a subscript (generated by width
3364 function
3365 .esc w ).
3367 .REG st
3368 Height of string above base line (generated by width function
3369 .esc w ).
3371 .REG systat
3372 The return value of the
3373 .I system()
3374 function executed by the last
3375 .request sy
3376 request.
3378 .REG urx
3379 Upper right x-coordinate (in PostScript units) of a given PostScript
3380 image (set by
3381 .request .psbb ).
3383 .REG ury
3384 Upper right y-coordinate (in PostScript units) of a given PostScript
3385 image (set by
3386 .request .psbb ).
3388 .REG year
3389 The current year (year 2000 compliant).
3391 .REG yr
3392 Current year minus 1900.
3394 For Y2K compliance use register
3395 .register year
3396 instead.
3401 .\" --------------------------------------------------------------------
3402 .SH COMPATIBILITY
3403 .\" --------------------------------------------------------------------
3405 The differences of the groff language in comparison to classical troff
3406 as defined by
3407 .I [CSTR\~#54]
3408 are documented in
3409 .BR groff_diff (@MAN7EXT@).
3412 The groff system provides a compatibility mode, see
3413 .BR groff (@MAN1EXT@)
3414 on how to invoke this.
3417 .\" --------------------------------------------------------------------
3418 .SH BUGS
3419 .\" --------------------------------------------------------------------
3421 Report bugs to the
3422 .MTO bug-groff@gnu.org "groff bug mailing list" .
3423 Include a complete, self-contained example that will allow the bug to
3424 be reproduced, and say which version of groff you are using.
3427 .\" --------------------------------------------------------------------
3428 .SH AUTHORS
3429 .\" --------------------------------------------------------------------
3431 Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
3434 This document is distributed under the terms of the FDL (GNU Free
3435 Documentation License) version 1.1 or later.
3437 You should have received a copy of the FDL on your system, it is also
3438 available on-line at the
3439 .URL http://\:www.gnu.org/\:copyleft/\:fdl.html "GNU copyleft site" .
3442 This document is part of
3443 .IR groff ,
3444 the GNU roff distribution.
3446 It was written by
3447 .MTO bwarken@mayn.de "Bernd Warken" ;
3448 it is maintained by
3449 .MTO wl@gnu.org "Werner Lemberg" .
3452 .\" --------------------------------------------------------------------
3453 .SH "SEE ALSO"
3454 .\" --------------------------------------------------------------------
3457 The main source of information for the groff language is the
3458 .B groff
3459 .BR info (1)
3460 file.
3462 Besides the gory details, it contains many examples.
3465 .BR groff (@MAN1EXT@)
3466 the usage of the groff program and pointers to the documentation and
3467 availability of the groff system.
3470 .BR groff_diff (@MAN7EXT@)
3471 the differences of the groff language as compared to classical roff.
3473 This is the authoritative document for the predefined language
3474 elements that are specific to groff.
3477 .BR groff_char (@MAN7EXT@)
3478 the predefined groff characters (glyphs).
3481 .BR groff_font (@MAN5EXT@)
3482 the specification of fonts and the DESC file.
3485 .BR roff (@MAN7EXT@)
3486 the history of roff, the common parts shared by all roff systems, and
3487 pointers to further documentation.
3490 .I [CSTR\~#54]
3491 .URL http://\:cm.bell-labs.com/\:cm/\:cs/\:54.ps \
3492      "Nroff/\:Troff User's Manual by Osanna & Kernighan"
3493 \[em] the bible for classical troff.
3496 .\" --------------------------------------------------------------------
3497 .\" Emacs Setup
3498 .\" --------------------------------------------------------------------
3500 .\" Local Variables:
3501 .\" mode: nroff
3502 .\" End: