Add .output request, similar to \! at top-level.
[s-roff.git] / man / groff.man
blob95ed8bd86990f0e8cb45ce06bffee2bdb050f55c
1 '\" t
2 .ig
3 groff.man
5 Last update: 27 May 2002
7 This file is part of groff, the GNU roff type-setting system.
9 Copyright (C) 2000, 2001, 2002 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.
525 .B Register
526 variables can store numerical values, numbers with a scale unit, and
527 occasionally string-like objects.
529 They are set with the
530 .request nr
531 request and retrieved by the
532 .esc n
533 escape sequences.
536 .B Environments
537 allow the user to temporarily store global formatting parameters like
538 line length, font size, etc.\& for later reuse.
540 This is done by the
541 .request ev
542 request.
545 .B Fonts
546 are identified either by a name or by an internal number.
548 The current font is chosen by the
549 .request ft
550 request or by the
551 .esc f
552 escape sequences.
554 Each device has special fonts, but the following fonts are available
555 for all devices.
556 .B R
557 is the standard font Roman.
558 .B B
559 is its
560 .B bold
561 counterpart.
564 .I italic
565 font is called
566 .B I
567 is everywhere available, but on text devices, it is displayed as an
568 underlined Roman font.
570 For the graphical output devices, there exist constant-width pendants
571 of these fonts,
572 .BR CR ,
573 .BR CI ,
575 .BR CB .
576 On text devices, all characters have a constant width anyway.
579 Moreover, there are some advanced roff elements.
582 .B diversion
583 stores information into a macro for later usage.
586 .B trap
587 is a positional condition like a certain number of lines from page top
588 or in a diversion or in the input.
590 Some action can be prescribed to be run automatically when the
591 condition is met.
594 More detailed information and examples can be found in the groff info
595 file.
598 .\" --------------------------------------------------------------------
599 .SH "CONTROL CHARACTERS"
600 .\" --------------------------------------------------------------------
602 There is a small set of characters that have a special controlling
603 task in certain conditions.
606 .character .
607 A dot is only special at the beginning of a line or after the
608 condition in the requests
609 .request if ,
610 .request ie ,
611 .request el ,
613 .request while .
614 There it is the control character that introduces a request (or macro).
616 The special behavior can be delayed by using the
617 .esc .
618 escape.
620 By using the 
621 .request cc
622 request, the control character can be set to a different character,
623 making the dot
624 .squoted_char .
625 a non-special character.
626 .IP ""
627 In all other positions, it just means a dot character.
629 In text paragraphs, it is advantageous to start each sentence at a
630 line of its own.
633 .character '
634 The single quote has two controlling tasks.
636 At the beginning of a line and in the conditional requests it is the
637 non-breaking control character.
639 That means that it introduces a request like the dot, but with the
640 additional property that this request doesn't cause a linebreak.
642 By using the 
643 .request c2
644 request, the non-break control character can be set to a different
645 character.
647 .IP ""
648 As a second task, it is the most commonly used argument separator in
649 some functional escape sequences (but any pair of characters not part
650 of the argument will work).
652 In all other positions, it denotes the single quote or apostrophe
653 character.
655 Groff provides a printable representation with the
656 .esc (cq
657 escape sequence.
660 .character \[dq]
661 The double quote is used to enclose arguments in requests and macros.
662 In the
663 .request ds
665 .request as
666 requests, a leading double quote in the argument will be stripped off,
667 making everything else afterwards the string to be defined (enabling
668 leading whitespace).
670 The escaped double quote
671 .esc \[dq]
672 introduces a comment.
674 Otherwise, it is not special.
676 Groff provides a printable representation with the
677 .esc (dq
678 escape sequence.
681 .character \[rs]
682 The backslash usually introduces an escape sequence (this can be
683 changed with the
684 .request ec
685 request).
687 A printed version of the escape character is the
688 .esc e
689 escape; a backslash glyph can be obtained by
690 .esc (rs .
692 .character (
693 The open parenthesis is only special in escape sequences when
694 introducing an escape name or argument consisting of exactly two
695 characters.
697 In groff, this behavior can be replaced by the \f[CB][]\f[] construct.
699 .character [
700 The opening bracket is only special in groff escape sequences; there
701 it is used to introduce a long escape name or long escape argument.
703 Otherwise, it is non-special, e.g.\& in macro calls.
705 .character ]
706 The closing bracket is only special in groff escape sequences; there
707 it terminates a long escape name or long escape argument.
709 Otherwise, it is non-special.
711 \f[CI]space\f[]
712 Space characters are only functional characters.
714 They separate the arguments in requests or macros, and the words in
715 text lines.
717 They are subject to groff's horizontal spacing calculations.
719 To get a defined space width, escape sequences like
720 .squoted_char "\[rs]\ "
721 (this is the escape character followed by a space),
722 .esc | ,
723 .esc ^ ,
725 .esc h
726 should be used.
728 .IP \f[CI]newline\f[]
729 In text paragraphs, newlines mostly behave like space characters.
731 Continuation lines can be specified by an escaped newline, i.e., by
732 specifying a backslash
733 .squoted_char \[rs]
734 as the last character of a line.
735 .IP \f[CI]tab\f[]
736 If a tab character occurs during text the interpreter makes a
737 horizontal jump to the next pre-defined tab position.
739 There is a sophisticated interface for handling tab positions.
742 .\" --------------------------------------------------------------------
743 .SH "NUMERICAL EXPRESSIONS"
744 .\" --------------------------------------------------------------------
747 .B numerical value
748 is a signed or unsigned integer or float with or without an appended
749 scaling indicator.
752 .B scaling indicator
753 is a one-character abbreviation for a unit of measurement.
755 A number followed by a scaling indicator signifies a size value.
757 By default, numerical values do not have a scaling indicator, i.e., they
758 are normal numbers.
762 .I roff
763 language defines the following scaling indicators.
767 .PD 0
770 .TPx
771 .B c
772 Centimeter
774 .TPx
775 .B i
776 Inch
778 .TPx
779 .B P
780 Pica\ \[eq]\ 1/6\ inch
782 .TPx
783 .B p
784 Point\ \[eq]\ 1/72\ inch
786 .TPx
787 .B m
788 Em\ \[eq]\ \f[R]the font size in points (width of letter `\f[CR]m\f[R]')
790 .TPx
791 .B M
792 100\^th \f[R]of an \f[CR]Em
794 .TPx
795 .B n
796 En\ \[eq]\ Em/2
798 .TPx
799 .B u
800 Basic unit for actual output device
802 .TPx
803 .B v
804 Vertical line space in basic units
805 scaled point\ \[eq]\ 1/\f[CI]sizescale\f[R] of a point (defined in
806 font \f[I]DESC\f[] file)
808 .TPx
809 .B f
810 Scale by 65536.
815 .B Numerical expressions
816 are combinations of the numerical values defined above with the
817 following arithmetical operators already defined in classical troff.
820 .PD 0
823 .TPx
824 .B +
825 Addition
827 .TPx
828 .B \-
829 Subtraction
831 .TPx
832 .B *
833 Multiplication
835 .TPx
836 .B /
837 Division
839 .TPx
840 .B %
841 Modulo
843 .TPx
844 .B =
845 Equals
847 .TPx
848 .B ==
849 Equals
851 .TPx
852 .B <
853 Less than
855 .TPx
856 .B >
857 Greater than
859 .TPx
860 .B <=
861 Less or equal
863 .TPx
864 .B >=
865 Greater or equal
867 .TPx
868 .B &
869 Logical and
871 .TPx
872 .B :
873 Logical or
875 .TPx
876 .B !
877 Logical not
879 .TPx
880 .B (
881 Grouping of expressions
883 .TPx
884 .B )
885 Close current grouping
891 Moreover,
892 .I groff
893 added the following operators for numerical expressions:
896 .PD 0
899 .TPx
900 .ExecFF Text I CB e1 >? e2
901 The maximum of
902 .I e1
904 .IR e2 .
906 .TPx
907 .ExecFF Text I CB e1 <? e2
908 The minimum of
909 .I e1
911 .IR e2 .
913 .TPx
914 .ExecFF Text CB I ( c ; e )
915 Evaluate
916 .I e
917 using
918 .I c
919 as the default scaling indicator.
925 For details see the groff info file.
928 .\" --------------------------------------------------------------------
929 .SH CONDITIONS
930 .\" --------------------------------------------------------------------
932 .B Conditions
933 occur in tests raised by the
934 .request if ,
935 .request ie ,
936 and the
937 .request while
938 requests.
940 The following table characterizes the different types of conditions.
943 .PD 0
946 .TPx
947 .I N
948 A numerical expression
949 .I N
950 yields true if its value is greater than\~0.
952 .TPx
953 .BI ! N
954 True if the value of
955 .I I
956 is\~0.
958 .TPx
959 .BI ' s1 ' s2 '
960 True if string\~\c
961 .I s1
962 is identical to string\~\c
963 .IR s2 .
965 .TPx
966 .BI !' s1 ' s2 '
967 True if string\~\c
968 .I s1
969 is not identical to string\~\c
970 .IR s2 .
972 .TPx
973 .BI c ch
974 True if there is a character\~\c
975 .I ch
976 available.
978 .TPx
979 .BI d name
980 True if there is a string, macro, diversion, or request called
981 .IR name .
983 .TPx
984 .B e
985 Current page number is even.
987 .TPx
988 .B o
989 Current page number is odd.
991 .TPx
992 .BI m name
993 True if there is a color called
994 .IR name .
996 .TPx
997 .B n
998 Formatter is
999 .BR nroff .
1001 .TPx
1002 .BI r reg
1003 True if there is a register named
1004 .IR reg .
1006 .TPx
1007 .B t
1008 Formatter is
1009 .BR troff .
1015 .\" --------------------------------------------------------------------
1016 .SH REQUESTS
1017 .\" --------------------------------------------------------------------
1019 This section provides a short reference for the predefined requests.
1021 In groff, request and macro names can be arbitrarily long.
1023 No bracketing or marking of long names is needed.
1026 Most requests take one or more arguments.
1028 The arguments are separated by space characters (no tabs!); there is
1029 no inherent limit for their length or number.
1031 An argument can be enclosed by a pair of double quotes.
1033 This is very handy if an argument contains space characters, e.g.,
1034 .RI \[dq] "arg with space" \[dq]
1035 denotes a single argument.
1038 Some requests have optional arguments with a different behaviour.
1040 Not all of these details are outlined here.
1042 Refer to the groff info file and
1043 .BR groff_diff (@MAN7EXT@)
1044 for all details.
1047 In the following request specifications, most argument names were
1048 chosen to be descriptive.
1050 Only the following denotations need clarification.
1053 .PD 0
1056 .TPx
1057 .I c
1058 denotes a single character.
1060 .TPx
1061 .I font
1062 a font either specified as a font name or a font number.
1064 .TPx
1065 .I anything
1066 all characters up to the end of the line or within
1067 .esc {
1069 .esc } .
1071 .TPx
1072 .I n
1073 is a numerical expression that evaluates to an integer value.
1075 .TPx
1076 .I N
1077 is an arbitrary numerical expression, signed or unsigned.
1079 .TPx
1080 .I \[+-]N
1081 has three meanings depending on its sign, described below.
1087 If an expression defined as
1088 .I \[+-]N
1089 starts with a
1090 .squoted_char +
1091 sign the resulting value of the expression will be added to an already
1092 existing value inherent to the related request, e.g.\& adding to a number
1093 register.
1095 If the expression starts with a
1096 .squoted_char -
1097 the value of the expression will be subtracted from the request value.
1100 Without a sign,
1101 .I N
1102 replaces the existing value directly.
1104 To assign a negative number either prepend\~0 or enclose the negative
1105 number in parentheses.
1108 .\" --------------------------------------------------------------------
1109 .SS "Request Short Reference"
1110 .\" --------------------------------------------------------------------
1112 .PD 0
1114 .REQ .
1115 Empty line, ignored.
1117 Useful for structuring documents.
1119 .REQ .\[rs]\[dq] anything
1120 Complete line is a comment.
1122 .REQ .ab string
1123 Print
1124 .I string
1125 on standard error, exit program.
1127 .REQ .ad
1128 Begin line adjustment for output lines in current adjust mode.
1130 .REQ .ad c
1131 Start line adjustment in mode
1132 .I c
1133 (\f[CI]c\f[]\f[CR]\|\^\[eq]\|l,r,b,n\f[]).
1135 .REQ .af register c
1136 Assign format
1137 .I c
1139 .I register
1140 (\f[CI]c\f[]\f[CR]\|\^\[eq]\|l,i,I,a,A\f[]).
1142 .REQ .aln alias register
1143 Create alias name for
1144 .IR register .
1146 .REQ .als alias object
1147 Create alias name for request, string, macro, or diversion
1148 .IR object .
1150 .REQ .am macro
1151 Append to
1152 .I macro
1153 until
1154 .B ..\&
1155 is encountered.
1157 .REQ .am macro end
1158 Append to
1159 .I macro
1160 until
1161 .request .end
1162 is called.
1164 .REQ .ami macro
1165 Append to a macro whose name is contained in the string register
1166 .I macro
1167 until
1168 .B ..\&
1169 is encountered.
1171 .REQ .ami macro end
1172 Append to a macro indirectly.
1173 .I macro
1175 .I end
1176 are string registers whose contents are interpolated for the macro name
1177 and the end macro, respectively.
1179 .REQ .am1 macro
1180 Same as
1181 .request .am
1182 but with compatibility mode switched off during macro expansion.
1184 .REQ .am1 macro end
1185 Same as
1186 .request .am
1187 but with compatibility mode switched off during macro expansion.
1189 .REQ .as stringvar anything
1190 Append
1191 .I anything
1193 .IR stringvar .
1195 .REQ .asciify diversion
1196 Unformat ASCII characters, spaces, and some escape sequences in
1197 .IR diversion .
1199 .REQ .as1 stringvar anything
1200 Same as
1201 .request .as
1202 but with compatibility mode switched off during string expansion.
1204 .REQ .backtrace
1205 Print a backtrace of the input on stderr.
1207 .REQ .bd font N
1208 Embolden
1209 .I font
1211 .IR N -1
1212 units.
1214 .REQ .bd S font N
1215 Embolden Special Font
1216 .I S
1217 when current font is
1218 .IR font .
1220 .REQ .blm
1221 Unset the blank line macro.
1223 .REQ .blm macro
1224 Set the blank line macro to
1225 .IR macro .
1227 .REQ .box
1228 End current diversion.
1230 .REQ .box macro
1231 Divert to
1232 .IR macro ,
1233 omitting a partially filled line.
1235 .REQ .boxa
1236 End current diversion.
1238 .REQ .boxa macro
1239 Divert and append to
1240 .IR macro ,
1241 omitting a partially filled line.
1243 .REQ .bp
1244 Eject current page and begin new page.
1246 .REQ .bp \[+-]N
1247 Eject current page; next page number
1248 .IR \[+-]N .
1250 .REQ .br
1251 Line break.
1253 .REQ .brp
1254 Break and spread output line.
1255 Same as
1256 .esc p .
1258 .REQ .break
1259 Break out of a while loop.
1261 .REQ .c2
1262 Reset no-break control character to
1263 .dquoted_char ' .
1265 .REQ .c2 c
1266 Set no-break control character to
1267 .IR c .
1269 .REQ .cc
1270 Reset control character to
1271 .squoted_char . .
1273 .REQ .cc c
1274 Set control character to
1275 .IR c .
1277 .REQ .ce
1278 Center the next input line.
1280 .REQ .ce N
1281 Center following
1282 .I N
1283 input lines.
1285 .REQ .cf filename
1286 Copy contents of file
1287 .I filename
1288 unprocessed to stdout or to the diversion.
1290 .REQ .cflags mode c1 c2 .\|.\|.\&
1291 Treat characters
1292 .IR c1 ,
1293 .IR c2 ,
1294 .I .\|.\|.\&
1295 according to
1296 .I mode
1297 number.
1299 .REQ .ch trap N
1300 Change
1301 .I trap
1302 location
1304 .I N .
1306 .REQ .char c anything
1307 Define character
1308 .I c
1309 as string
1310 .IR anything .
1312 .REQ .chop object
1313 Chop the last character off macro, string, or diversion
1314 .IR object .
1316 .REQ .close stream
1317 Close the
1318 .IR stream .
1320 .REQ .continue
1321 Finish the current iteration of a while loop.
1323 .REQ .cp
1324 Enable compatibility mode.
1326 .REQ .cp N
1328 .I N
1329 is zero disable compatibility mode, otherwise enable it.
1331 .REQ .cs font N M
1332 Set constant character width mode for
1333 .I font
1335 .IR N /36
1336 ems with em
1337 .IR M .
1339 .REQ .cu N
1340 Continuous underline in nroff, like
1341 .request .ul
1342 in troff.
1344 .REQ .da
1345 End current diversion.
1347 .REQ .da macro
1348 Divert and append to
1349 .IR macro .
1351 .REQ .de macro
1352 Define or redefine
1353 .I macro
1354 until
1355 .B ..\&
1356 is encountered.
1358 .REQ .de macro end
1359 Define or redefine
1360 .I macro
1361 until
1362 .request .end
1363 is called.
1365 .REQ .de1 macro
1366 Same as
1367 .request .de
1368 but with compatibility mode switched off during macro expansion.
1370 .REQ .de1 macro end
1371 Same as
1372 .request .de
1373 but with compatibility mode switched off during macro expansion.
1375 .REQ .defcolor color scheme component
1376 Define or redefine a color with name
1377 .IR color .
1378 .I scheme
1379 can be
1380 .BR rgb ,
1381 .BR cym ,
1382 .BR cymk ,
1383 .BR gray ,
1385 .BR grey .
1386 .I component
1387 can be single components specified as fractions in the range 0 to 1
1388 (default scaling indicator\~\c
1389 .scaleindicator f ),
1390 as a string of two-digit hexadecimal color components with a leading
1391 .BR # ,
1392 or as a string of four-digit hexadecimal components with two leading
1393 .BR # .
1394 The color
1395 .B default
1396 can't be redefined.
1398 .REQ .dei macro
1399 Define or redefine a macro whose name is contained in the string register
1400 .I macro
1401 until
1402 .B ..\&
1403 is encountered.
1405 .REQ .dei macro end
1406 Define or redefine a macro indirectly.
1407 .I macro
1409 .I end
1410 are string registers whose contents are interpolated for the macro name
1411 and the end macro, respectively.
1413 .REQ .di
1414 End current diversion.
1416 .REQ .di macro
1417 Divert to
1418 .I macro .
1420 .REQ .do name
1421 Interpret
1422 .request .name
1423 with compatibility mode disabled.
1425 .REQ .ds stringvar anything
1427 .I stringvar
1429 .IR anything .
1431 .REQ .ds1 stringvar anything
1432 Same as
1433 .request .ds
1434 but with compatibility mode switched off during string expansion.
1436 .REQ .dt N trap
1437 Set diversion trap to position
1438 .I N
1439 (default scaling indicator\~\c
1440 .scaleindicator v ).
1442 .REQ .ec
1443 Reset escape character to
1444 .squoted_char \[rs] .
1446 .REQ .ec c
1447 Set escape character to
1448 .IR c .
1450 .REQ .ecr
1451 Restore escape character saved with
1452 .request .ecs .
1454 .REQ .ecs
1455 Save current escape character.
1457 .REQ .el anything
1458 Else part for if-else (\c
1459 .request ie )
1460 request.
1462 .REQ .em macro
1464 .I macro
1465 will be run after the end of input.
1467 .REQ .eo
1468 Turn off escape character mechanism.
1470 .REQ .ev
1471 Switch to previous environment.
1473 .REQ .ev env
1474 Push down environment number or name
1475 .I env
1476 and switch to it.
1478 .REQ .evc env
1479 Copy the contents of environment
1480 .I env
1481 to the current environment.
1482 No pushing or popping.
1484 .REQ .ex
1485 Exit from roff processing.
1487 .REQ .fam
1488 Return to previous font family.
1490 .REQ .fam name
1491 Set the current font family to
1492 .IR name .
1494 .REQ .fc
1495 Disable field mechanism.
1497 .REQ .fc a
1498 Set field delimiter to
1499 .I a
1500 and pad character to space.
1502 .REQ .fc a b
1503 Set field delimiter to
1504 .I a
1505 and pad character to
1506 .IR b .
1508 .REQ .fchar c anything
1509 Define fallback character
1510 .I c
1511 as string
1512 .IR anything .
1514 .REQ .fi
1515 Fill output lines.
1517 .REQ .fl
1518 Flush output buffer.
1520 .REQ .fp n font
1521 Mount
1522 .I font
1523 on position
1524 .IR n .
1526 .REQ .fp n internal external
1527 Mount font with long
1528 .I external
1529 name to short
1530 .I internal
1531 name on position
1532 .IR n .
1534 .REQ .fspecial font s1 s2 .\|.\|.\&
1535 When the current font is
1536 .IR font ,
1537 then the fonts
1538 .IR s1 ,
1539 .IR s2 ,
1540 .I .\|.\|.\&
1541 will be special.
1543 .REQ .ft
1544 Return to previous font.
1545 Same as
1546 .request \[rs]f[]
1548 .request \[rs]fP .
1550 .REQ .ft font
1551 Change to font name or number
1552 .IR font ;
1553 same as
1554 .esc[] f font
1555 escape sequence.
1557 .REQ .ftr font1 font2
1558 Translate
1559 .I font1
1561 .IR font2 .
1563 .REQ .hc
1564 Remove additional hyphenation indicator character.
1566 .REQ .hc c
1567 Set up additional hyphenation indicator character\~\c
1568 .IR c .
1570 .REQ .hcode c1 code1 c2 code2 .\|.\|.\&
1571 Set the hyphenation code of character
1572 .I c1
1574 .IR code1 ,
1575 that of
1576 .I c2
1578 .IR code2 ,
1579 etc.
1581 .REQ .hla lang
1582 Set the current hyphenation language to
1583 .IR lang .
1585 .REQ .hlm n
1586 Set the maximum number of consecutive hyphenated lines to
1587 .IR n .
1589 .REQ .hpf file
1590 Read hyphenation patterns from
1591 .IR file .
1593 .REQ .hpfa file
1594 Append hyphenation patterns from
1595 .IR file .
1597 .REQ .hpfcode file
1598 Set input mapping for
1599 .request .hpf .
1601 .REQ .hw words
1602 List of
1603 .I words
1604 with exceptional hyphenation.
1606 .REQ .hy N
1607 Switch to hyphenation mode
1608 .IR N .
1610 .REQ .hym n
1611 Set the hyphenation margin to
1612 .I n
1613 (default scaling indicator\~\c
1614 .scaleindicator m ).
1616 .REQ .hys n
1617 Set the hyphenation space to
1618 .IR n .
1620 .REQ .ie cond anything
1622 .I cond
1623 then
1624 .I anything
1625 else goto
1626 .request .el .
1628 .REQ .if cond anything
1630 .I cond
1631 then
1632 .IR anything ;
1633 otherwise do nothing.
1635 .REQ .ig
1636 Ignore text until
1637 .B ..\&
1638 is encountered.
1640 .REQ .ig end
1641 Ignore text until
1642 .request .end .
1644 .REQ .in
1645 Change to previous indent value.
1647 .REQ .in \[+-]N
1648 Change indent according to
1649 .I \[+-]N
1650 (default scaling indicator\~\c
1651 .scaleindicator m ).
1653 .REQ .it N trap
1654 Set an input-line count trap for the next
1655 .I N
1656 lines.
1658 .REQ .itc N trap
1659 Same as
1660 .request .it
1661 but count lines interrupted with
1662 .esc c
1663 as one line.
1665 .REQ .kern
1666 Enable pairwise kerning.
1668 .REQ .kern n
1670 .I n
1671 is zero, disable pairwise kerning, otherwise enable it.
1673 .REQ .lc
1674 Remove leader repetition character.
1676 .REQ .lc c
1677 Set leader repetition character to\~\c
1678 .IR c .
1680 .REQ .length register anything
1681 Write the length of the string
1682 .I anything
1684 .IR register .
1686 .REQ .linetabs
1687 Enable line-tabs mode (i.e., calculate tab positions relative to output
1688 line).
1690 .REQ .linetabs n
1692 .I n
1693 is zero, disable line-tabs mode, otherwise enable it.
1695 .REQ .lf N file
1696 Set input line number to
1697 .I N
1698 and filename to
1699 .IR file .
1701 .REQ .lg N
1702 Ligature mode on if
1703 .IR N >0.
1705 .REQ .ll
1706 Change to previous line length.
1708 .REQ .ll \[+-]N
1709 Set line length according to
1710 .I \[+-]N
1711 (default size
1712 .scalednumber 6.5 i ,
1713 default scaling indicator\~\c
1714 .scaleindicator m ).
1716 .REQ .ls
1717 Change to the previous value of additional intra-line skip.
1719 .REQ .ls N
1720 Set additional intra-line skip value to
1721 .IR N ,
1722 i.e.,
1723 .IR N -1
1724 blank lines are inserted after each text output line.
1726 .REQ .lt \[+-]N
1727 Length of title (default scaling indicator\~\c
1728 .scaleindicator m ).
1730 .REQ .mc
1731 Margin character off.
1733 .REQ .mc c
1734 Print character
1735 .I c
1736 after each text line at actual distance from right margin.
1738 .REQ .mc c N
1739 Set margin character to
1740 .I c
1741 and distance to
1742 .I N
1743 from right margin (default scaling indicator\~\c
1744 .scaleindicator m ).
1746 .REQ .mk register
1747 Mark current vertical position in
1748 .IR register .
1750 .REQ .mso file
1751 The same as the .so request except that
1752 .I file
1753 is searched in the tmac directories.
1755 .REQ .na
1756 No output-line adjusting.
1758 .REQ .ne
1759 Need a one-line vertical space.
1761 .REQ .ne N
1762 Need
1763 .I N
1764 vertical space (default scaling indicator\~\c
1765 .scaleindicator v ).
1767 .REQ .nf
1768 No filling or adjusting of output-lines.
1770 .REQ .nh
1771 No hyphenation.
1773 .REQ .nm
1774 Number mode off.
1776 .REQ .nm \[+-]N \fR[\fPM \fR[\fPS \fR[\fPI\fR]]]\fP
1777 In line number mode, set number, multiple, spacing, and indent.
1779 .REQ .nn
1780 Do not number next line.
1782 .REQ .nn N
1783 Do not number next
1784 .I N
1785 lines.
1787 .REQ .nop anything
1788 Always execute
1789 .IR anything .
1791 .REQ .nr register \[+-]N M
1792 Define or modify
1793 .I register
1794 using
1795 .I \[+-]N
1796 with auto-increment
1797 .IR M .
1799 .REQ .nroff
1800 Make the built-in condition
1801 .B n
1802 true and
1803 .B t
1804 false.
1806 .REQ .ns
1807 Turn no-space mode on.
1809 .REQ .nx
1810 Immediately jump to end of current file.
1812 .REQ .nx filename
1813 Next file.
1815 .REQ .open stream filename
1816 Open
1817 .register filename
1818 for writing and associate the stream named
1819 .register stream
1820 with it.
1822 .REQ .opena stream filename
1823 Like
1824 .request .open
1825 but append to it.
1827 .REQ .os
1828 Output vertical distance that was saved by the
1829 .request sv
1830 request.
1832 .REQ .output string
1833 Emit
1834 .I string
1835 directly to intermediate output, allowing leading whitespace if
1836 .I string
1837 starts with
1838 .character \[dq]
1839 (which will be stripped off).
1841 .REQ .pc
1842 Reset page number character to\~\c
1843 .squoted_char % .
1845 .REQ .pc c
1846 Page number character.
1848 .REQ .pi program
1849 Pipe output to
1850 .I program
1851 (nroff only).
1853 .REQ .pl
1854 Set page length to default
1855 .scalednumber 11 i .
1856 The current page length is stored in
1857 .register .p .
1859 .REQ .pl \[+-]N
1860 Change page length to
1861 .I \[+-]N
1862 (default scaling indicator\~\c
1863 .scaleindicator v ).
1865 .REQ .pm
1866 Print macro names and sizes (number of blocks of 128 bytes).
1868 .REQ ".pm t"
1869 Print only total of sizes of macros (number of 128 bytes blocks).
1871 .REQ .pn \[+-]N
1872 Next page number
1873 .IR N .
1875 .REQ .pnr
1876 Print the names and contents of all currently defined number registers
1877 on stderr.
1879 .REQ .po
1880 Change to previous page offset.
1882 The current page offset is available in
1883 .register .o .
1885 .REQ .po \[+-]N
1886 Page offset
1887 .IR N .
1889 .REQ .ps
1890 Return to previous point-size.
1891 .REQ .ps \[+-]N
1892 Point size; same as
1893 .esc[] s \[+-]N .
1895 .REQ .psbb filename
1896 Get the bounding box of a PostScript image
1897 .IR filename .
1899 .REQ .pso command
1900 This behaves like the
1901 .request so
1902 request except that input comes from the standard output of
1903 .IR command .
1905 .REQ .ptr
1906 Print the names and positions of all traps (not including input line
1907 traps and diversion traps) on stderr.
1909 .REQ .pvs
1910 Change to previous post-vertical line spacing.
1912 .REQ .pvs \[+-]N
1913 Change post-vertical line spacing according to
1914 .I \[+-]N
1915 (default scaling indicator\~\c
1916 .scaleindicator p ).
1918 .REQ .rchar c1 c2 .\|.\|.\&
1919 Remove the definitions of characters
1920 .IR c1 ,
1921 .IR c2 ,
1922 .I .\|.\|.\&
1924 .REQ .rd prompt
1925 Read insertion.
1927 .REQ .return
1928 Return from a macro.
1930 .REQ .rj n
1931 Right justify the next
1932 .I n
1933 input lines.
1935 .REQ .rm name
1936 Remove request, macro, or string
1937 .IR name .
1939 .REQ .rn old new
1940 Rename request, macro, or string
1941 .I old
1943 .IR new .
1945 .REQ .rnn reg1 reg2
1946 Rename register
1947 .I reg1
1949 .IR reg2 .
1951 .REQ .rr register
1952 Remove
1953 .IR register .
1955 .REQ .rs
1956 Restore spacing; turn no-space mode off.
1958 .REQ .rt \[+-]N
1959 Return
1960 .I (upward only)
1961 to marked vertical place (default scaling indicator\~\c
1962 .scaleindicator v ).
1964 .REQ .shc
1965 Reset soft hyphen character to
1966 .esc (hy .
1968 .REQ .shc c
1969 Set the soft hyphen character to
1970 .IR c .
1972 .REQ .shift n
1973 In a macro, shift the arguments by
1974 .IR n \~\c
1975 positions.
1977 .REQ .sizes s1 s2 .\|.\|.\& sn \fB[0]\fP
1978 Set available font sizes similar to the
1979 .B sizes
1980 command in a
1981 .B DESC
1982 file.
1984 .REQ .so filename
1985 Include source file.
1987 .REQ .sp
1988 Skip one line vertically.
1990 .REQ .sp N
1991 Space vertical distance
1992 .I N
1993 up or down according to sign of
1994 .I N
1995 (default scaling indicator\~\c
1996 .scaleindicator v ).
1998 .REQ .special s1 s2 .\|.\|.\&
1999 Fonts
2000 .IR s1 ,
2001 .IR s2 ,
2002 etc.\& are special and will be searched for characters not in the
2003 current font.
2005 .REQ .spreadwarn
2006 Toggle the spread warning on and off without changing its value.
2008 .REQ .spreadwarn limit
2009 Emit a warning if each space in an output line is widened by
2010 .I limit
2011 or more (default scaling indicator\~\c
2012 .scaleindicator m ).
2014 .REQ .ss N
2015 Space-character size set to
2016 .IR N /12
2017 of the spacewidth in the current font.
2019 .REQ .ss N M
2020 Space-character size set to
2021 .IR N /12
2022 and sentence space size set to
2023 .IR M /12
2024 of the spacewidth in the current font (\f[CR]\[eq]1/3 em\f[]).
2026 .REQ .sty n style
2027 Associate
2028 .I style
2029 with font position
2030 .IR n .
2032 .REQ .substring register n1 n2
2033 Replace the string in
2034 .I register
2035 with the substring defined by the indices
2036 .I n1
2038 .IR n2 .
2040 .REQ .sv
2041 Save
2042 .scalednumber 1 v
2043 of vertical space.
2045 .REQ .sv N
2046 Save the vertical distance
2047 .I N
2048 for later output with
2049 .request os
2050 request.
2052 .REQ .sy command-line
2053 Execute program
2054 .IR command-line .
2056 .REQ ".ta T" N
2057 Set tabs after every position that is a multiple of
2058 .I N
2059 (default scaling indicator\~\c
2060 .scaleindicator m ).
2061 .REQ .ta n1 n2 .\|.\|.\& nn \f[CB]T\f[] r1 r2 .\|.\|.\& rn
2062 Set tabs at positions
2063 .IR n1 ,
2064 .IR n2 ,
2065 .Text .\|.\|.,
2066 .IR nn ,
2067 then set tabs at
2068 .IR nn + r1 ,
2069 .IR nn + r2 ,
2070 .Text .\|.\|.,
2071 .IR nn + rn ,
2072 then at
2073 .IR nn + rn + r1 ,
2074 .IR nn + rn + r2 ,
2075 .Text .\|.\|.,
2076 .IR nn + rn + rn ,
2077 and so on.
2079 .\".REQ .tar
2080 .\"Restore internally saved tab positions.
2081 .\".
2082 .\".REQ .tas
2083 .\"Save tab positions internally.
2085 .REQ .tc
2086 Remove tab repition character.
2087 .REQ .tc c
2088 Set tab repetition character to\~\c
2089 .IR c .
2091 .REQ .ti \[+-]N
2092 Temporary indent next line (default scaling indicator\~\c
2093 .scaleindicator m ).
2095 .REQ .tkf font s1 n1 s2 n2
2096 Enable track kerning for
2097 .IR font .
2099 .REQ .tl \f[CB]\[cq]\f[]left\f[CB]\[cq]\f[]center\f[CB]\[cq]\f[]right\f[CB]\[cq]\f[]
2100 Three-part title.
2102 .REQ .tm anything
2103 Print
2104 .I anything
2105 on terminal (UNIX standard message output).
2107 .REQ .tm1 anything
2108 Print
2109 .I anything
2110 on terminal (UNIX standard message output), allowing leading
2111 whitespace if
2112 .I anything
2113 starts with
2114 .character \[dq]
2115 (which will be stripped off).
2117 .REQ .tmc anything
2118 Similar to
2119 .request .tm1
2120 without emitting a final newline.
2122 .REQ .tr abcd.\|.\|.\&
2123 Translate
2124 .I a
2126 .IR b ,
2127 .I c
2129 .IR d ,
2130 etc.\& on output.
2132 .REQ .trf filename
2133 Transparently output the contents of file
2134 .IR filename .
2136 .REQ .trin abcd.\|.\|.\&
2137 This is the same as the
2138 .request tr
2139 request except that the
2140 .B asciify
2141 request will use the character code (if any) before the character
2142 translation.
2144 .REQ .trnt abcd.\|.\|.\&
2145 This is the same as the
2146 .request tr
2147 request except that the translations do not apply to text that is
2148 transparently throughput into a diversion with
2149 .esc ! .
2151 .REQ .troff
2152 Make the built-in condition
2153 .B t
2154 true and
2155 .B n
2156 false.
2158 .REQ .uf font
2159 Underline font set to
2160 .I font
2161 (to be switched to by
2162 .request .ul ).
2164 .REQ .ul N
2165 Underline (italicize in troff)
2166 .I N
2167 input lines.
2169 .REQ .unformat diversion
2170 Unformat space characters and tabs, preserving font information in
2171 .IR diversion .
2172 .REQ .vpt n
2173 Enable vertical position traps if
2174 .I n
2175 is non-zero, disable them otherwise.
2177 .REQ .vs
2178 Change to previous vertical base line spacing.
2180 .REQ .vs \[+-]N
2181 Set vertical base line spacing according to
2182 .I \[+-]N
2183 (default scaling indicator\~\c
2184 .scaleindicator p ).
2185 Default value is
2186 .scalednumber 12 p .
2188 .REQ .warn n
2189 Set warnings code to
2190 .IR n .
2192 .REQ .warnscale si
2193 Set scaling indicator used in warnings to
2194 .IR si .
2196 .REQ .wh N
2197 Remove (first) trap at position
2198 .IR N .
2200 .REQ .wh N trap
2201 Set location trap; negative means from page bottom.
2203 .REQ .while cond anything
2204 While condition
2205 .I cond
2206 is true, accept
2207 .I anything
2208 as input.
2210 .REQ .write stream anything
2211 Write
2212 .I anything
2213 to the stream named
2214 .IR stream .
2216 .REQ .writec stream anything
2217 Similar to
2218 .request .write
2219 without emitting a final newline.
2221 .REQ .writem stream xx
2222 Write contents of macro or string
2223 .I xx
2224 to the stream named
2225 .IR stream .
2230 Besides these standard groff requests, there might be further macro
2231 calls.
2232 They can originate from a macro package (see
2233 .BR roff (@MAN7EXT@)
2234 for an overview) or from a preprocessor.
2237 Preprocessor macros are easy to be recognized.
2239 They enclose their code into a pair of characteristic macros.
2243 box, center, tab (@);
2244 c | c | c
2245 CfCB | CfCB | CfCB.
2246 preprocessor@start macro@ end macro
2248 eqn@.PS@.PE
2249 grap@.G1@.G2
2250 grn@.GS@.GE
2251 pic@.PS@.PE
2252 refer@.R1@.R2
2253 soelim@\f[I]none@\f[I]none
2254 tbl@.TS@.TE
2259 .\" --------------------------------------------------------------------
2260 .SH "ESCAPE SEQUENCES"
2261 .\" --------------------------------------------------------------------
2263 Escape sequences are in-line language elements usually introduced by a
2264 backslash
2265 .squoted_char \[rs]
2266 and followed by an escape name and sometimes by a required argument.
2268 Input processing is continued directly after the escaped character or
2269 the argument resp.\& without an intervening separation character.
2271 So there must be a way to determine the end of the escape name and the
2272 end of the argument.
2275 This is done by enclosing names (escape name and arguments consisting
2276 of a variable name) by a pair of brackets
2277 .BI \[lB] name \[rB] 
2278 and constant arguments (number expressions and characters) by
2279 apostrophes (ASCII 0x27) like
2280 .BI \[cq] constant \[cq] \f[R].
2283 There are abbreviations for short names.
2285 Two character escape names can be specified by an opening parenthesis
2286 like
2287 .esc ( xy
2288 without a closing counterpart.
2290 And all one-character names different from the special characters
2291 .squoted_char [
2293 .squoted_char (
2294 can even be specified without a marker in the form
2295 .esc c .
2298 Constant arguments of length\~1 can omit the marker apostrophes, too,
2299 but there is no two-character analogue.
2302 While 1-character escape sequences are mainly used for in-line
2303 functions and system related tasks, the 2-letter names following the
2304 .esc (
2305 construct are used for special characters predefined by the roff system.
2307 Escapes sequences with names of more than two characters
2308 .esc[] "" name
2309 denote user defined named characters (see the
2310 .request char
2311 request).
2314 .\" --------------------------------------------------------------------
2315 .SS "Single Character Escapes"
2316 .\" --------------------------------------------------------------------
2318 .PD 0
2320 .\" --------- comments ---------
2322 .ESC \[dq]
2323 Beginning of a comment.
2325 Everything up to the end of the line is ignored.
2327 .ESC #
2328 Everything up to and including the next newline is ignored.
2330 This is interpreted in copy mode.
2332 This is like
2333 .esc \[dq]
2334 except that the terminating newline is ignored as well.
2336 .\" --------- strings ---------
2338 .ESC *\f[I]s\f[]
2339 The string stored in the string variable with 1-character name
2340 .IR s .
2342 .ESC *(\f[I]st\f[]
2343 The string stored in the string variable with 2-character name
2344 .IR st .
2346 .ESC[] * stringvar
2347 The string stored in the string variable with arbitrary length name
2348 .IR stringvar .
2350 .\" --------- macro arguments ---------
2352 .ESC $0
2353 The name by which the current macro was invoked.
2356 .request als
2357 request can make a macro have more than one name.
2359 .ESC $ x
2360 Macro argument with 1-place number
2361 .IR x ,
2362 where
2363 .I x
2364 is a digit between 1 and 9.
2366 .ESC $( xy
2367 Macro argument with 2-digit number
2368 .IR xy .
2370 .ESC[] $ nexp
2371 Macro argument with number
2372 .IR nexp ,
2373 where
2374 .I nexp
2375 is a numerical expression evaluating to an integer \[>=]1.
2377 .ESC $*
2378 In a macro, the concatenation of all the arguments separated by spaces.
2380 .ESC $@
2381 In a macro, the concatenation of all the arguments with each surrounded
2382 by double quotes, and separated by spaces.
2384 .\" --------- escaped characters ---------
2386 .ESC \[rs]
2387 reduces to a single backslash; useful to delay its interpretation as
2388 escape character in copy mode.
2390 For a printable backslash, use
2391 .esc e ,
2392 or even better
2393 .esc [rs] ,
2394 to be independent from the current escape character.
2396 .ESC \[cq]
2397 The acute accent \[aa]; same as
2398 .esc (aa .
2399 Unescaped: apostrophe, right quotation mark, single quote (ASCII 0x27).
2401 .ESC `
2402 The grave accent \[ga]; same as
2403 .esc (ga .
2404 Unescaped: left quote, backquote (ASCII 0x60).
2406 .ESC \-
2407 The \- sign in the current font.
2409 .ESC .
2410 An uninterpreted dot (period), even at start of line.
2412 .ESC %
2413 Default optional hyphenation character.
2415 .ESC !
2416 Transparent line indicator.
2418 .ESC? anything
2419 In a diversion, this will transparently embed
2420 .I anything
2421 in the diversion.
2422 .I anything
2423 is read in copy mode.
2425 See also the escape sequences
2426 .esc !
2428 .esc ? .
2431 .\" --------- spacing ---------
2433 .ESC \& space
2434 Unpaddable space-size space character (no line break).
2436 .ESC 0
2437 Digit width.
2439 .ESC |
2440 1/6\ em narrow space character; zero width in nroff.
2442 .ESC ^
2443 1/12\ em half-narrow space character; zero width in nroff.
2445 .ESC &
2446 Non-printable, zero width character.
2448 .ESC )
2449 Like
2450 .esc &
2451 except that it behaves like a character declared with the cflags
2452 request to be transparent for the purposes of end of sentence
2453 recognition.
2455 .ESC /
2456 Increases the width of the preceding character so that the spacing
2457 between that character and the following character will be correct if
2458 the following character is a roman character.
2460 .ESC ,
2461 Modifies the spacing of the following character so that the spacing
2462 between that character and the preceding character will correct if the
2463 preceding character is a roman character.
2465 .ESC ~
2466 Unbreakable space that stretches like a normal inter-word space when a
2467 line is adjusted.
2469 .ESC :
2470 Inserts a zero-width break point (similar to
2471 .esc %
2472 but without a soft hyphen character).
2474 .ESC "" newline
2475 Ignored newline, for continuation lines.
2477 .\" --------- structuring ---------
2479 .ESC {
2480 Begin conditional input.
2482 .ESC }
2483 End conditional input.
2485 .\" --------- longer escape names ---------
2487 .ESC ( sc
2488 The special character with 2-character name
2489 .IR sc ,
2490 see section
2491 .BR "Special Characters" .
2493 .ESC[] "" name
2494 The named character with arbitrary length name
2495 .IR name .
2497 .\" --------- alphabetical escapes ---------
2499 .ESC a
2500 Non-interpreted leader character.
2502 .ESCq A anything
2504 .I anything
2505 is acceptable as a name of a string, macro, diversion, register,
2506 environment or font it expands to\~1, and to\~0 otherwise.
2508 .ESCq b abc.\|.\|.\&
2509 Bracket building function.
2511 .ESCq B anything
2513 .I anything
2514 is acceptable as a valid numeric expression it expands to\~1, and
2515 to\~0 otherwise.
2517 .ESC c
2518 Interrupt text processing.
2520 .ESCq C char
2521 The character called
2522 .IR char ;
2523 same as
2524 .esc[] "" char ,
2525 but compatible to other roff versions.
2527 .ESC d
2528 Forward (down) 1/2 em vertical unit (1/2 line in nroff).
2530 .ESCq D charseq
2531 Draw a graphical element defined by the characters in
2532 .IR charseq ;
2533 see groff info file for details.
2535 .ESC e
2536 Printable version of the current escape character.
2538 .ESC E
2539 Equivalent to an escape character, but is not interpreted in copy-mode.
2541 .ESC f F
2542 Change to font with 1-character name or 1-digit number
2543 .IR F .
2545 .ESC fP
2546 Switch back to previous font.
2548 .ESC f( fo
2549 Change to font with 2-character name or 2-digit number
2550 .IR fo .
2552 .ESC[] f font
2553 Change to font with arbitrary length name or number expression
2554 .IR font .
2556 .ESC[] f ""
2557 Switch back to previous font.
2559 .ESC F f
2560 Change to font family with 1-character name
2561 .IR f .
2563 .ESC F( fm
2564 Change to font family with 2-character name
2565 .IR fm .
2567 .ESC[] F fam
2568 Change to font family with arbitrary length name
2569 .IR fam .
2571 .ESC[] F ""
2572 Switch back to previous font family.
2574 .ESC[] g reg
2575 Return format of register with name
2576 .I reg
2577 suitable for
2578 .request .af .
2580 Alternative forms
2581 .escarg g( xy
2583 .escarg g x .
2585 .ESCq h N
2586 Local horizontal motion; move right
2587 .I N
2588 (left if negative).
2590 .ESCq H N
2591 Set height of current font to
2592 .IR N .
2594 .ESC[] k reg
2595 Mark horizontal input place in register with arbitrary length name
2596 .IR reg .
2597 Alternative forms
2598 .escarg k( xy
2600 .escarg k x .
2602 .ESCq l Nc
2603 Horizontal line drawing function (optionally using character
2604 .IR c ).
2606 .ESCq L Nc
2607 Vertical line drawing function (optionally using character
2608 .IR c ).
2610 .ESC[] m color
2611 Change to color
2612 .IR color .
2614 Alternative forms
2615 .escarg m( co
2617 .escarg m c .
2619 .ESC[] m ""
2620 Switch back to previous color.
2622 .ESC[] M color
2623 Change filling color for closed drawn objects to color
2624 .IR color .
2626 Alternative forms
2627 .escarg M( co
2629 .escarg M c .
2631 .ESC[] M ""
2632 Switch to previous fill color.
2634 .ESC n r
2635 The numerical value stored in the register variable with the
2636 1-character name
2637 .IR r .
2639 .ESC n( re
2640 The numerical value stored in the register variable with the
2641 2-character name
2642 .IR re .
2644 .ESC[] n reg
2645 The numerical value stored in the register variable with arbitrary
2646 length name
2647 .IR reg .
2649 .ESCq N n
2650 Typeset the character with code
2651 .I n
2652 in the current font, no special fonts are searched.
2654 Useful for adding characters to a font using the
2655 .request char
2656 request.
2658 .ESCq o abc.\|.\|.\&
2659 Overstrike characters
2660 .IR a ,
2661 .IR b ,
2662 .IR c ,
2663 etc.
2665 .ESC O 0
2666 Disable glyph output.
2668 Mainly for internal use.
2670 .ESC O 1
2671 Enable glyph output.
2673 Mainly for internal use.
2675 .ESC p
2676 Break and spread output line.
2678 .ESC r
2679 Reverse 1\ em vertical motion (reverse line in nroff).
2681 .ESCq R "name\~\[+-]n"
2682 The same as
2683 .request .nr
2684 .I name
2685 .IR \[+-]n .
2687 .ESC[] s \[+-]N
2688 Set the point size to
2689 .I N
2690 scaled points.
2692 Note the alternative forms
2693 .BI \[rs]s \[+-] [ N ]\c
2695 .BI \[rs]s' \[+-]N '\c
2696 .Text ,
2697 .BI \[rs]s \[+-] ' N '\c
2698 .Text ,
2699 .escarg s( \[+-]xy\c
2700 .Text ,
2701 .BI \[rs]s \[+-] ( xy\c
2702 .Text ,
2703 .escarg s \[+-]x .
2704 Same as
2705 .request ps
2706 request.
2708 .ESCq S N
2709 Slant output
2710 .I N
2711 degrees.
2713 .ESC t
2714 Non-interpreted horizontal tab.
2716 .ESC u
2717 Reverse (up) 1/2 em vertical motion (1/2 line in nroff).
2719 .ESCq v N
2720 Local vertical motion; move down
2721 .I N
2722 (up if negative).
2724 .ESC[] V env
2725 The contents of the environment variable
2726 .IR env .
2728 Alternative forms
2729 .escarg V( xy
2731 .escarg V x .
2733 .ESCq w string
2734 The width of the character sequence
2735 .IR string .
2737 .ESCq x N
2738 Extra line-space function (negative before, positive after).
2740 .ESCq X string
2741 Output
2742 .I string
2743 as device control function.
2745 .ESC[] Y name
2746 Output string variable or macro
2747 .I name
2748 uninterpreted as device control function.
2750 Alternative forms
2751 .escarg Y( xy
2753 .escarg Y x .
2755 .ESC z c
2756 Print
2757 .I c
2758 with zero width (without spacing).
2760 .ESCq Z anything
2761 Print
2762 .I anything
2763 and then restore the horizontal and vertical position;
2764 .I anything
2765 may not contain tabs or leaders.
2769 The escape sequences
2770 .esc e ,
2771 .esc . ,
2772 .esc \[dq] ,
2773 .esc $ ,
2774 .esc * ,
2775 .esc a ,
2776 .esc n ,
2777 .esc t ,
2778 .esc g ,
2780 .escarg \& newline
2781 are interpreted in copy mode.
2784 Escape sequences starting with
2785 .esc (
2787 .esc [
2788 do not represent single character escape sequences, but introduce escape
2789 names with two or more characters.
2792 If a backslash is followed by a character that does not constitute a
2793 defined escape sequence the backslash is silently ignored and the
2794 character maps to itself.
2797 .\" --------------------------------------------------------------------
2798 .SS "Special Characters"
2799 .\" --------------------------------------------------------------------
2801 Common special characters are predefined by escape sequences of the
2802 form
2803 .BI \[rs]( xy
2804 with characters
2805 .I x
2807 .IR y .
2809 Some of these exist in the usual font while most of them are only
2810 available in the special font.
2812 Below you'll find a selection of the most important glyphs; a complete
2813 list can be found in
2814 .BR groff_char (@MAN7EXT@).
2817 .PD 0
2819 .ESC (bu
2820 Bullet sign
2821 .ESC (co
2822 Copyright
2823 .ESC (ct
2824 Cent
2825 .ESC (dd
2826 Double dagger
2827 .ESC (de
2828 Degree
2829 .ESC (dg
2830 Dagger
2831 .ESC (rs
2832 Printable double quote
2833 .ESC (em
2834 Em-dash
2835 .ESC (hy
2836 Hyphen
2837 .ESC (rg
2838 Registered sign
2839 .ESC (rs
2840 Printable backslash character
2841 .ESC (sc
2842 Section sign
2843 .ESC (ul
2844 Underline character
2845 .ESC (==
2846 Identical
2847 .ESC (>=
2848 Larger or equal
2849 .ESC (<=
2850 Less or equal
2851 .ESC (!=
2852 Not equal
2853 .ESC (->
2854 Right arrow
2855 .ESC (<-
2856 Left arrow
2857 .ESC (+-
2858 Plus-minus sign
2863 .\" --------------------------------------------------------------------
2864 .SS "Strings"
2865 .\" --------------------------------------------------------------------
2867 Strings are defined by the
2868 .request ds
2869 request and can be retrieved by the
2870 .esc *
2871 escape sequence.
2874 Strings share their name space with macros.
2876 So strings and macros without arguments are roughly equivalent, though
2877 calling a string like a macro and vice-versa is not stably implemented
2878 so far.
2880 The following strings are predefined in groff.
2882 .STRING .T
2883 The name of the current output device as specified by the
2884 .option -T
2885 command line option.
2888 .\" --------------------------------------------------------------------
2889 .SH REGISTERS
2890 .\" --------------------------------------------------------------------
2892 Registers are variables that store a value.
2893 In groff, most registers store numerical values (see section
2894 .B NUMERICAL EXPRESSIONS
2895 above), but some can also hold a string value.
2898 Each register is given a name.
2899 Arbitrary registers can be defined and set with the request
2900 .request nr
2901 .IR register .
2904 The value stored in a register can be retrieved by the escape sequences
2905 introduced by
2906 .esc n .
2909 Most useful are predefined registers.
2911 In the following the notation
2912 .I name
2913 is used to refer to a register called
2914 .register name
2915 to make clear that we speak about registers.
2917 Please keep in mind that the
2918 .esc[] n ""
2919 decoration is not part of the register name.
2922 .\" --------------------------------------------------------------------
2923 .SS "Read-only Registers"
2924 .\" --------------------------------------------------------------------
2926 The following registers have predefined values that should not be
2927 modified by the user (usually, registers starting with a dot a
2928 read-only).
2930 Mostly, they provide information on the current settings or store
2931 results from request calls.
2934 .PD 0
2936 .REG .$
2937 Number of arguments in the current macro.
2939 .REG .a
2940 Post-line extra line-space most recently utilized using
2941 .escq x N .
2943 .REG .A
2944 Set to\~1 in
2945 .B troff
2946 if option
2947 .B \-A
2948 is used; always\~1 in
2949 .BR nroff .
2951 .REG .c
2952 Current input line number.
2954 .REG .C
2955 1\~if compatibility mode is in effect, 0\~otherwise.
2957 .REG .cdp
2958 The depth of the last character added to the current environment.
2959 It is positive if the character extends below the baseline.
2961 .REG .ce
2962 The number of lines remaining to be centered, as set by the
2963 .request ce
2964 request.
2966 .REG .cht
2967 The height of the last character added to the current environment.
2968 It is positive if the character extends above the baseline.
2970 .REG .csk
2971 The skew of the last character added to the current environment.
2972 The skew of a character is how far to the right of the center of a character
2973 the center of an accent over that character should be placed.
2975 .REG .d
2976 Current vertical place in current diversion; equal to register
2977 .register nl .
2979 .REG .ev
2980 The name or number of the current environment (string-valued).
2982 .REG .f
2983 Current font number.
2985 .REG .fam
2986 The current font family (string-valued).
2988 .REG .fn
2989 The current (internal) real font name (string-valued).
2991 .REG .fp
2992 The number of the next free font position.
2994 .REG .g
2995 Always 1 in GNU troff.
2997 Macros should use it to test if running under groff.
2999 .REG .h
3000 Text base-line high-water mark on current page or diversion.
3002 .REG .H
3003 Available horizontal resolution in basic units.
3005 .REG .hla
3006 The current hyphenation language as set by the
3007 .B .hla
3008 request.
3010 .REG .hlc
3011 The number of immediately preceding consecutive hyphenated lines.
3013 .REG .hlm
3014 The maximum allowed number of consecutive hyphenated lines, as set by
3016 .request hlm
3017 request.
3019 .REG .hy
3020 The current hyphenation flags (as set by the
3021 .request hy
3022 request).
3024 .REG .hym
3025 The current hyphenation margin (as set by the
3026 .request hym
3027 request).
3029 .REG .hys
3030 The current hyphenation space (as set by the
3031 .request hys
3032 request).
3034 .REG .i
3035 Current ident.
3037 .REG .in
3038 The indent that applies to the current output line.
3040 .REG .int
3041 Positive if last output line contains
3042 .esc c .
3044 .REG .kern
3045 1\~if pairwise kerning is enabled, 0\~otherwise.
3047 .REG .l
3048 Current line length.
3050 .REG .lg
3051 The current ligature mode (as set by the
3052 .request lg
3053 request).
3055 .REG .linetabs
3056 The current line-tabs mode (as set by the
3057 .request linetabs
3058 request).
3060 .REG .ll
3061 The line length that applies to the current output line.
3063 .REG .lt
3064 The title length (as set by the
3065 .request lt
3066 request).
3068 .REG .n
3069 Length of text portion on previous output line.
3071 .REG .ne
3072 The amount of space that was needed in the last
3073 .request ne
3074 request that caused a trap to be sprung.
3076 Useful in conjunction with
3077 .register .trunc .
3079 .REG .ns
3080 1\~if in no-space mode, 0\~otherwise.
3082 .REG .o
3083 Current page offset.
3085 .REG .p
3086 Current page length.
3088 .REG .pn
3089 The number of the next page: either the value set by a
3090 .request pn
3091 request, or the number of the current page plus\ 1.
3093 .REG .ps
3094 The current pointsize in scaled points.
3096 .REG .psr
3097 The last-requested pointsize in scaled points.
3099 .REG .pvs
3100 The current post-vertical line spacing.
3102 .REG .rj
3103 The number of lines to be right-justified as set by the rj request.
3105 .REG .s
3106 Current point size as a decimal fraction.
3108 .REG .sr
3109 The last requested pointsize in points as a decimal fraction
3110 (string-valued).
3112 .REG .t
3113 Distance to the next trap.
3115 .REG .T
3116 Set to\~1
3117 if option
3118 .B \-T
3119 is used.
3121 .REG .tabs
3122 A string representation of the current tab settings suitable for use
3123 as an argument to the
3124 .request ta
3125 request.
3127 .REG .trunc
3128 The amount of vertical space truncated by the most recently sprung
3129 vertical position trap, or, if the trap was sprung by a
3130 .request ne
3131 request, minus the amount of vertical motion produced by
3132 .request .ne .
3134 In other words, at the point a trap is sprung, it represents
3135 the difference of what the vertical position would have been but for
3136 the trap, and what the vertical position actually is.
3138 Useful in conjunction with the
3139 .register .ne
3140 register.
3142 .REG .ss
3143 The value of the parameters set by the first argument of the
3144 .request ss
3145 request.
3147 .REG .sss
3148 The value of the parameters set by the second argument of the
3149 .request ss
3150 request.
3152 .REG .u
3153 Equal to 1 bin fill mode and 0 in nofill mode.
3155 .REG .v
3156 Current vertical line spacing.
3158 .REG .V
3159 Available vertical resolution in basic units.
3161 .REG .vpt
3162 1\~ if vertical position traps are enabled, 0\~otherwise.
3164 .REG .w
3165 Width of previous character.
3167 .REG .warn
3168 The sum of the number codes of the currently enabled warnings.
3170 .REG .x
3171 The major version number.
3173 .REG .y
3174 The minor version number.
3176 .REG .Y
3177 The revision number of groff.
3179 .REG .z
3180 Name of current diversion.
3184 .\" --------------------------------------------------------------------
3185 .SS "Writable Registers"
3186 .\" --------------------------------------------------------------------
3188 The following registers can be read and written by the user.
3189 They have predefined default values, but these can be modified for
3190 customizing a document.
3193 .PD 0
3194 .REG %
3195 Current page number.
3197 .REG c.
3198 Current input line number.
3200 .REG ct
3201 Character type (set by width function
3202 .esc w ).
3204 .REG dl
3205 Maximal width of last completed diversion.
3207 .REG dn
3208 Height of last completed diversion.
3210 .REG dw
3211 Current day of week (1-7).
3213 .REG dy
3214 Current day of month (1-31).
3216 .REG hp
3217 Current horizontal position at input line.
3219 .REG llx
3220 Lower left x-coordinate (in PostScript units) of a given PostScript
3221 image (set by
3222 .request .psbb ).
3224 .REG lly
3225 Lower left y-coordinate (in PostScript units) of a given PostScript
3226 image (set by
3227 .request .psbb ).
3229 .REG ln
3230 Output line number.
3232 .REG mo
3233 Current month (1-12).
3235 .REG nl
3236 Vertical position of last printed text base-line.
3238 .REG rsb
3239 Like
3240 .register sb ,
3241 but takes account of the heights and depths of characters.
3243 .REG rst
3244 Like
3245 .register st ,
3246 but takes account of the heights and depths of characters.
3248 .REG sb
3249 Depth of string below base line (generated by width function
3250 .esc w ).
3252 .REG skw
3253 Right skip width from the center of the last character in the
3254 .esc w
3255 argument.
3257 .REG slimit
3258 If greater than 0, the maximum number of objects on the input stack.
3260 If \[<=]0 there is no limit, i.e., recursion can continue until virtual
3261 memory is exhausted.
3263 .REG ssc
3264 The amount of horizontal space (possibly negative) that should be
3265 added to the last character before a subscript (generated by width
3266 function
3267 .esc w ).
3269 .REG st
3270 Height of string above base line (generated by width function
3271 .esc w ).
3273 .REG systat
3274 The return value of the
3275 .I system()
3276 function executed by the last
3277 .request sy
3278 request.
3280 .REG urx
3281 Upper right x-coordinate (in PostScript units) of a given PostScript
3282 image (set by
3283 .request .psbb ).
3285 .REG ury
3286 Upper right y-coordinate (in PostScript units) of a given PostScript
3287 image (set by
3288 .request .psbb ).
3290 .REG year
3291 The current year (year 2000 compliant).
3293 .REG yr
3294 Current year minus 1900.
3296 For Y2K compliance use register
3297 .register year
3298 instead.
3303 .\" --------------------------------------------------------------------
3304 .SH COMPATIBILITY
3305 .\" --------------------------------------------------------------------
3307 The differences of the groff language in comparison to classical troff
3308 as defined by
3309 .I [CSTR\~#54]
3310 are documented in
3311 .BR groff_diff (@MAN7EXT@).
3314 The groff system provides a compatibility mode, see
3315 .BR groff (@MAN1EXT@)
3316 on how to invoke this.
3319 .\" --------------------------------------------------------------------
3320 .SH BUGS
3321 .\" --------------------------------------------------------------------
3323 Report bugs to the
3324 .MTO bug-groff@gnu.org "groff bug mailing list" .
3325 Include a complete, self-contained example that will allow the bug to
3326 be reproduced, and say which version of groff you are using.
3329 .\" --------------------------------------------------------------------
3330 .SH AUTHORS
3331 .\" --------------------------------------------------------------------
3333 Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
3336 This document is distributed under the terms of the FDL (GNU Free
3337 Documentation License) version 1.1 or later.
3339 You should have received a copy of the FDL on your system, it is also
3340 available on-line at the
3341 .URL http://\:www.gnu.org/\:copyleft/\:fdl.html "GNU copyleft site" .
3344 This document is part of
3345 .IR groff ,
3346 the GNU roff distribution.
3348 It was written by
3349 .MTO bwarken@mayn.de "Bernd Warken" ;
3350 it is maintained by
3351 .MTO wl@gnu.org "Werner Lemberg" .
3354 .\" --------------------------------------------------------------------
3355 .SH "SEE ALSO"
3356 .\" --------------------------------------------------------------------
3359 The main source of information for the groff language is the
3360 .B groff
3361 .BR info (1)
3362 file.
3364 Besides the gory details, it contains many examples.
3367 .BR groff (@MAN1EXT@)
3368 the usage of the groff program and pointers to the documentation and
3369 availability of the groff system.
3372 .BR groff_diff (@MAN7EXT@)
3373 the differences of the groff language as compared to classical roff.
3375 This is the authoritative document for the predefined language
3376 elements that are specific to groff.
3379 .BR groff_char (@MAN7EXT@)
3380 the predefined groff characters (glyphs).
3383 .BR groff_font (@MAN5EXT@)
3384 the specification of fonts and the DESC file.
3387 .BR roff (@MAN7EXT@)
3388 the history of roff, the common parts shared by all roff systems, and
3389 pointers to further documentation.
3392 .I [CSTR\~#54]
3393 .URL http://\:cm.bell-labs.com/\:cm/\:cs/\:54.ps \
3394      "Nroff/\:Troff User's Manual by Osanna & Kernighan"
3395 \[em] the bible for classical troff.
3398 .\" --------------------------------------------------------------------
3399 .\" Emacs Setup
3400 .\" --------------------------------------------------------------------
3402 .\" Local Variables:
3403 .\" mode: nroff
3404 .\" End: