* Makefile.in (SEP): Replaced with...
[s-roff.git] / man / groff.man
blob57adb3d6b2981c372f6cdb01196c0645e1ffe61d
1 '\" t
2 .ig
3 groff.man
5 Last update: 07 Jan 2004
7 This file is part of groff, the GNU roff type-setting system.
9 Copyright (C) 2000, 2001, 2002, 2003, 2004 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 .do nr groff_C \n[.C]
28 .cp 0
30 .mso www.tmac
32 .if n \{\
33 .  mso tty-char.tmac
34 .  ftr CR R
35 .  ftr CI I
36 .  ftr CB B
37 .\}
39 .if '\*[.T]'dvi' \{\
40 .  ftr CB CW
41 .\}
44 .\" --------------------------------------------------------------------
45 .\" start of macro definitions
46 .eo
48 .de c
51 .de TPx
52 .  TP 10n
54 .c ---------------------------------------------------------------------
55 .c .Text anything ...
57 .c All arguments are printed as text.
59 .de Text
60 .  nop \)\$*
62 .c ---------------------------------------------------------------------
63 .c .ExecFF macro font1 font2 text1 text2 text1 text2 ...
65 .c Concat text arguments using alternating fonts and feed into macro.
66 .c For a trailing punctuation, terminate the call with \c.
68 .de ExecFF
69 .  if (\n[.$] < 4) \
70 .    return
71 .  ds @a\"
72 .  ds @m \$1\"
73 .  ds @f1 \$2\"
74 .  ds @f2 \$3\"
75 .  shift 3
76 .  ds @s\"
77 .  while 1 \{\
78 .    if (\n[.$] = 0) \
79 .      break
80 .    ds @a \$1\"
81 .    as @s \f[\*[@f1]]\*[@a]\f[]\"
82 .    shift
83 .    if (\n[.$] = 0) \
84 .      break
85 .    ds @a \$1\"
86 .    as @s \f[\*[@f2]]\*[@a]\f[]\"
87 .    shift
88 .  \}
89 .  \*[@m] "\*[@s]\f[R]"
90 .  ft P                 \" to make \c happy
91 .  rm @m
92 .  rm @s
93 .  rm @a
94 .  rm @f1
95 .  rm @f2
98 .c --------- command line option ---------
100 .de option
101 .  Text \f[CB]\$*
102 .  ft P
105 .c --------- characters ---------
107 .de character
108 .  ExecFF Text CB R \$*
110 .de squoted_char
111 .  ds @1 \$1\"
112 .  shift
113 .  ExecFF Text R CB \[oq] \*[@1] "\[cq]\$*"
114 .  rm @1
116 .de dquoted_char
117 .  ds @1 \$1\"
118 .  shift
119 .  ExecFF Text R CB \[lq] \*[@1] "\[rq]\$*"
120 .  rm @1
122 .c --------- requests ---------
124 .c synopsis of a request
125 .de REQ
126 .  if (\n[.$] = 0) \
127 .    return
128 .  ds @1 \$1\"
129 .  shift 1
130 .  ie (\n[.$] = 0) \{\
131 .    TP 10n
132 .    Text \f[CB]\*[@1]\f[]
133 .  \}
134 .  el \{\
135 .    TP 10n
136 .    Text \f[CB]\*[@1]\~\f[]\f[I]\$*\f[]
137 .  \}
138 .  rm @1
140 .c reference of a request
141 .de request
142 .  BR \$*
145 .c --------- numerical elements ---------
147 .c number with a trailing unit
148 .de scalednumber
149 .  Text \$1\^\f[CB]\$2\f[]\$3\f[R]
150 .  ft P
153 .c representation of units within the text
154 .de scaleindicator
155 .  Text \f[CB]\$1\f[]\$2\f[R]
156 .  ft P
159 .c representation of mathematical operators within the text
160 .de operator
161 .  squoted_char \$@
165 .c --------- escape sequences ---------
167 .c ---------------------------------------------------------------------
168 .c .ESC name [arg]
170 .c Synopsis of an escape sequence, optionally with argument
171 .c Args   : 1 or 2; `name' obligatory, `arg' optional
172 .c   name : suitable name for an escape sequence (c, (xy, [long])
173 .c   arg  : arbitrary word
174 .c Result : prints \namearg, where `name' is in CB, `arg' in I
176 .de ESC
177 .  if (\n[.$] < 1)
178 .    ab .ESC needs 1 or 2 arguments.
179 .  ExecFF IP CB I "\[rs]\$1" "\,\$2\/"
181 .c ---------------------------------------------------------------------
182 .c .ESC[] name arg
184 .c Synopsis for escape sequence with a bracketed long argument
185 .c Args   : 2 obligatory
186 .c   name : suitable name for an escape sequence (c, (xy, [long])
187 .c   arg  : arbitrary text
188 .c Result : prints \name[arg], where `name' is in CB, `arg' in I
190 .de ESC[]
191 .  if !(\n[.$] = 2) \
192 .    ab .ESC[] needs exactly 2 arguments.
193 .  ExecFF IP CB I "\[rs]\$1\[lB]" "\h'-0.2m'\$2\h'-0.15m'" \[rB]
195 .c ---------------------------------------------------------------------
196 .c .ESCq name arg
198 .c Synopsis for escape sequence with a bracketed long argument
199 .c Args   : 2 obligatory
200 .c   name : suitable name for an escape sequence (c, (xy, [long])
201 .c   arg  : arbitrary text
202 .c Result : prints \name'arg', where `name' is in CB, `arg' in I
204 .de ESCq
205 .  if !(\n[.$] = 2) \
206 .    ab .ESCq needs exactly 2 argument.
207 .  ExecFF IP CB I "\[rs]\$1\[cq]" "\h'-0.3m'\$2" \[cq]
209 .c ---------------------------------------------------------------------
210 .c .ESC? arg
212 .c Synopsis for escape sequence with a bracketed long argument
213 .c Args   : 1 obligatory
214 .c   arg  : arbitrary text
215 .c Result : prints `\?arg?', where the `?' are in CB, `arg' in I
217 .de ESC?
218 .  if !(\n[.$] = 1) \
219 .    ab .ESC? needs exactly 1 arguments.
220 .  ExecFF IP CB I \[rs]? "\$1" ?
222 .c ---------------------------------------------------------------------
223 .c .esc name [punct]
225 .c Reference of an escape sequence (no args), possibly punctuation
226 .c Args    : 1 obligatory
227 .c   name  : suitable name for an escape sequence (c, (xy, [long])
228 .c   punct : arbitrary
229 .c Result  : prints \name, where `name' is in B, `punct' in R
231 .de esc
232 .  if (\n[.$] < 1) \
233 .    ab .esc needs 1 or 2 arguments.
234 .  BR "\[rs]\$1" \$2
236 .c ---------------------------------------------------------------------
237 .c .escarg name arg [punct]
239 .c Reference of an escape sequence (no args)
240 .c Args    : 1 obligatory, 1 optional
241 .c   name  : suitable name for an escape sequence (c, (xy, [long])
242 .c   arg   : arbitrary word
243 .c Result  : prints \namearg, where
244 .c           `name' is in B, `arg' in I
246 .de escarg
247 .  if (\n[.$] < 2) \
248 .    ab .esc needs 2 or 3 arguments.
249 .  Text \f[B]\[rs]\$1\f[]\f[I]\$2\f[]\$3
251 .c ---------------------------------------------------------------------
252 .c .esc[] name arg [punct]
254 .c Reference for escape sequence with a bracketed long argument
255 .c Args   : 2 obligatory
256 .c   name : suitable name for an escape sequence (c, (xy, [long])
257 .c   arg  : arbitrary text
258 .c Result : prints \name[arg], where `name' is in CB, `arg' in CI
260 .de esc[]
261 .  if (\n[.$] < 2) \
262 .    ab .esc[] needs 2 or 3 arguments.
263 .  Text \f[B]\[rs]\$1\[lB]\f[]\f[I]\$2\f[]\f[B]\[rB]\f[]\$3
266 .c ---------------------------------------------------------------------
267 .c .escq name arg
269 .c Reference for escape sequence with a bracketed long argument
270 .c Args   : 2 obligatory
271 .c   name : suitable name for an escape sequence (c, (xy, [long])
272 .c   arg  : arbitrary text
273 .c Result : prints \name'arg', where `name' is in CB, `arg' in CI
275 .de escq
276 .  if (\n[.$] < 2) \
277 .    ab .escq needs 2 arguments.
278 .  Text \f[B]\[rs]\$1\[cq]\f[]\f[I]\$2\f[]\f[B]\[cq]\f[]\$3
281 .c --------- strings ---------
283 .c synopsis for string, with \*[]
284 .de STRING
285 .  ds @1 \$1\"
286 .  shift 1
287 .  TP 10n
288 .  ExecFF Text R CB \[rs]*[ \*[@1]\f[]\f[R]] \$*
289 .  rm @1
291 .c synopsis for a long string
292 .de string
293 .  if (\n[.$] = 0) \
294 .    return
295 .  Text \f[CB]\[rs]*\[lB]\$1\[rB]\f[]\$2
299 .c --------- registers ---------
301 .c synopsis for registers, with \n[]
302 .de REG
303 .  ds @1 \$1\"
304 .  shift 1
305 .  TP 10n
306 .  ExecFF Text R CB \[rs]n[ \*[@1]\f[]\f[R]] \$*
307 .  rm @1
309 .c reference of a register, without decoration
310 .de register
311 .  Text register
312 .  BR \$*
316 .\" end of macro definitions
319 .\" --------------------------------------------------------------------
320 .\" Title
321 .\" --------------------------------------------------------------------
323 .TH GROFF @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
324 .SH NAME
325 groff \- a short reference for the GNU roff language
328 .\" --------------------------------------------------------------------
329 .SH DESCRIPTION
330 .\" --------------------------------------------------------------------
332 The name
333 .I groff
334 stands for
335 .I GNU roff
336 and is the free implementation of the roff type-setting system.
339 .BR roff (@MAN7EXT@)
340 for a survey and the background of the groff system.
343 This document gives only short descriptions of the predefined roff
344 language elements as used in groff.
346 Both the classical features and the groff extensions are provided.
349 Historically, the
350 .I roff language
351 was called
352 .IR troff .
353 .I groff
354 is compatible with the classical system and provides proper
355 extensions.
357 So in GNU, the terms
358 .IR roff ,
359 .IR troff ,
361 .I groff language
362 could be used as synonyms.
364 However
365 .I troff
366 slightly tends to refer more to the classical aspects, whereas
367 .I groff
368 emphasizes the GNU extensions, and
369 .I roff
370 is the general term for the language.
373 This file is only a short version of the complete documentation that
374 is found in the
375 .I groff
376 .BR info (1)
377 file, which contains more detailed, actual, and concise information.
380 The general syntax for writing groff documents is relatively easy, but
381 writing extensions to the roff language can be a bit harder.
384 The roff language is line-oriented.
386 There are only two kinds of lines, control lines and text lines.
388 The control lines start with a control character, by default a period
389 .dquoted_char .
390 or a single quote
391 .dquoted_char ' ;
392 all other lines are text lines.
395 .B Control lines
396 represent commands, optionally with arguments.
398 They have the following syntax.
400 The leading control character can be followed by a command name;
401 arguments, if any, are separated by blanks from the command name and
402 among themselves, for example,
406 .Text .command_name arg1 arg2
410 For indentation, any number of space or tab characters can be inserted
411 between the leading control character and the command name, but the
412 control character must be on the first position of the line.
415 .B Text lines
416 represent the parts that will be printed.
417 They can be modified by escape sequences, which are recognized by a
418 leading backslash
419 .squoted_char \[rs] .
420 These are in-line or even in-word formatting elements or functions.
422 Some of these take arguments separated by single quotes
423 .dquoted_char ' ,
424 others are regulated by a length encoding introduced by an open
425 parenthesis
426 .squoted_char (
427 or enclosed in brackets
428 .squoted_char [
430 .squoted_char ] .
433 The roff language provides flexible instruments for writing language
434 extension, such as macros.
436 When interpreting macro definitions, the roff system enters a special
437 operating mode, called the
438 .BR "copy mode" .
441 The copy mode behavior can be quite tricky, but there are some rules
442 that ensure a safe usage.
444 .IP 1.
445 Printable backslashes must be denoted as
446 .esc e .
447 To be more precise,
448 .esc e
449 represents the current escape character.
451 To get a backslash glyph, use
452 .esc (rs
454 .esc [rs] .
455 .IP 2.
456 Double all backslashes.
457 .IP 3.
458 Begin all text lines with the special non-spacing character
459 .esc & .
462 This does not produce the most efficient code, but it should work as a
463 first measure.
465 For better strategies, see the groff info file and
466 .BR groff_tmac (@MAN5EXT@).
469 Reading roff source files is easier, just reduce all double backslashes
470 to a single one in all macro definitions.
473 .\" --------------------------------------------------------------------
474 .SH "GROFF ELEMENTS"
475 .\" --------------------------------------------------------------------
477 The roff language elements add formatting information to a text file.
479 The fundamental elements are predefined commands and variables that
480 make roff a full-blown programming language.
483 There are two kinds of roff commands, possibly with arguments.
484 .B Requests
485 are written on a line of their own starting with a dot
486 .squoted_char .
487 or a
488 .dquoted_char ' ,
489 whereas
490 .B Escape sequences
491 are in-line functions and in-word formatting elements starting with a
492 backslash
493 .squoted_char \[rs] .
496 The user can define her own formatting commands using the
497 .request de
498 request.
500 These commands are called
501 .BR macros ,
502 but they are used exactly like requests.
504 Macro packages are pre-defined sets of macros written in the groff
505 language.
507 A user's possibilities to create escape sequences herself is very
508 limited, only special characters can be mapped.
511 The groff language provides several kinds of variables with
512 different interfaces.
514 There are pre-defined variables, but the user can define her own
515 variables as well.
518 .B String
519 variables store character sequences.
521 They are set with the
522 .request ds
523 request and retrieved by the
524 .esc *
525 escape sequences.
527 Strings can have variables.
530 .B Register
531 variables can store numerical values, numbers with a scale unit, and
532 occasionally string-like objects.
534 They are set with the
535 .request nr
536 request and retrieved by the
537 .esc n
538 escape sequences.
541 .B Environments
542 allow the user to temporarily store global formatting parameters like
543 line length, font size, etc.\& for later reuse.
545 This is done by the
546 .request ev
547 request.
550 .B Fonts
551 are identified either by a name or by an internal number.
553 The current font is chosen by the
554 .request ft
555 request or by the
556 .esc f
557 escape sequences.
559 Each device has special fonts, but the following fonts are available
560 for all devices.
561 .B R
562 is the standard font Roman.
563 .B B
564 is its
565 .B bold
566 counterpart.
569 .I italic
570 font is called
571 .B I
572 and is available everywhere, but on text devices it is displayed as an
573 underlined Roman font.
575 For the graphical output devices, there exist constant-width pendants
576 of these fonts,
577 .BR CR ,
578 .BR CI ,
580 .BR CB .
581 On text devices, all characters have a constant width anyway.
584 Moreover, there are some advanced roff elements.
587 .B diversion
588 stores information into a macro for later usage.
591 .B trap
592 is a positional condition like a certain number of lines from page top
593 or in a diversion or in the input.
595 Some action can be prescribed to be run automatically when the
596 condition is met.
599 More detailed information and examples can be found in the groff info
600 file.
603 .\" --------------------------------------------------------------------
604 .SH "CONTROL CHARACTERS"
605 .\" --------------------------------------------------------------------
607 There is a small set of characters that have a special controlling
608 task in certain conditions.
611 .character .
612 A dot is only special at the beginning of a line or after the
613 condition in the requests
614 .request if ,
615 .request ie ,
616 .request el ,
618 .request while .
619 There it is the control character that introduces a request (or macro).
621 The special behavior can be delayed by using the
622 .esc .
623 escape.
625 By using the 
626 .request cc
627 request, the control character can be set to a different character,
628 making the dot
629 .squoted_char .
630 a non-special character.
631 .IP ""
632 In all other positions, it just means a dot character.
634 In text paragraphs, it is advantageous to start each sentence at a
635 line of its own.
638 .character '
639 The single quote has two controlling tasks.
641 At the beginning of a line and in the conditional requests it is the
642 non-breaking control character.
644 That means that it introduces a request like the dot, but with the
645 additional property that this request doesn't cause a linebreak.
647 By using the 
648 .request c2
649 request, the non-break control character can be set to a different
650 character.
652 .IP ""
653 As a second task, it is the most commonly used argument separator in
654 some functional escape sequences (but any pair of characters not part
655 of the argument will work).
657 In all other positions, it denotes the single quote or apostrophe
658 character.
660 Groff provides a printable representation with the
661 .esc (cq
662 escape sequence.
665 .character \[dq]
666 The double quote is used to enclose arguments in requests, macros, and
667 strings.
669 In the
670 .request ds
672 .request as
673 requests, a leading double quote in the argument will be stripped off,
674 making everything else afterwards the string to be defined (enabling
675 leading whitespace).
677 The escaped double quote
678 .esc \[dq]
679 introduces a comment.
681 Otherwise, it is not special.
683 Groff provides a printable representation with the
684 .esc (dq
685 escape sequence.
688 .character \[rs]
689 The backslash usually introduces an escape sequence (this can be
690 changed with the
691 .request ec
692 request).
694 A printed version of the escape character is the
695 .esc e
696 escape; a backslash glyph can be obtained by
697 .esc (rs .
699 .character (
700 The open parenthesis is only special in escape sequences when
701 introducing an escape name or argument consisting of exactly two
702 characters.
704 In groff, this behavior can be replaced by the \f[CB][]\f[] construct.
706 .character [
707 The opening bracket is only special in groff escape sequences; there
708 it is used to introduce a long escape name or long escape argument.
710 Otherwise, it is non-special, e.g.\& in macro calls.
712 .character ]
713 The closing bracket is only special in groff escape sequences; there
714 it terminates a long escape name or long escape argument.
716 Otherwise, it is non-special.
718 \f[CI]space\f[]
719 Space characters are only functional characters.
721 They separate the arguments in requests, macros, and strings, and the words
722 in text lines.
724 They are subject to groff's horizontal spacing calculations.
726 To get a defined space width, escape sequences like
727 .squoted_char "\[rs]\ "
728 (this is the escape character followed by a space),
729 .esc | ,
730 .esc ^ ,
732 .esc h
733 should be used.
735 .IP \f[CI]newline\f[]
736 In text paragraphs, newlines mostly behave like space characters.
738 Continuation lines can be specified by an escaped newline, i.e., by
739 specifying a backslash
740 .squoted_char \[rs]
741 as the last character of a line.
742 .IP \f[CI]tab\f[]
743 If a tab character occurs during text the interpreter makes a
744 horizontal jump to the next pre-defined tab position.
746 There is a sophisticated interface for handling tab positions.
749 .\" --------------------------------------------------------------------
750 .SH "NUMERICAL EXPRESSIONS"
751 .\" --------------------------------------------------------------------
754 .B numerical value
755 is a signed or unsigned integer or float with or without an appended
756 scaling indicator.
759 .B scaling indicator
760 is a one-character abbreviation for a unit of measurement.
762 A number followed by a scaling indicator signifies a size value.
764 By default, numerical values do not have a scaling indicator, i.e., they
765 are normal numbers.
769 .I roff
770 language defines the following scaling indicators.
774 .PD 0
777 .TPx
778 .B c
779 Centimeter
781 .TPx
782 .B i
783 Inch
785 .TPx
786 .B P
787 Pica\ \[eq]\ 1/6\ inch
789 .TPx
790 .B p
791 Point\ \[eq]\ 1/72\ inch
793 .TPx
794 .B m
795 Em\ \[eq]\ \f[R]the font size in points (width of letter `\f[CR]m\f[R]')
797 .TPx
798 .B M
799 100\^th \f[R]of an \f[CR]Em
801 .TPx
802 .B n
803 En\ \[eq]\ Em/2
805 .TPx
806 .B u
807 Basic unit for actual output device
809 .TPx
810 .B v
811 Vertical line space in basic units
812 scaled point\ \[eq]\ 1/\f[CI]sizescale\f[R] of a point (defined in
813 font \f[I]DESC\f[] file)
815 .TPx
816 .B f
817 Scale by 65536.
822 .B Numerical expressions
823 are combinations of the numerical values defined above with the
824 following arithmetical operators already defined in classical troff.
827 .PD 0
830 .TPx
831 .B +
832 Addition
834 .TPx
835 .B \-
836 Subtraction
838 .TPx
839 .B *
840 Multiplication
842 .TPx
843 .B /
844 Division
846 .TPx
847 .B %
848 Modulo
850 .TPx
851 .B =
852 Equals
854 .TPx
855 .B ==
856 Equals
858 .TPx
859 .B <
860 Less than
862 .TPx
863 .B >
864 Greater than
866 .TPx
867 .B <=
868 Less or equal
870 .TPx
871 .B >=
872 Greater or equal
874 .TPx
875 .B &
876 Logical and
878 .TPx
879 .B :
880 Logical or
882 .TPx
883 .B !
884 Logical not
886 .TPx
887 .B (
888 Grouping of expressions
890 .TPx
891 .B )
892 Close current grouping
898 Moreover,
899 .I groff
900 added the following operators for numerical expressions:
903 .PD 0
906 .TPx
907 .ExecFF Text I CB e1 >? e2
908 The maximum of
909 .I e1
911 .IR e2 .
913 .TPx
914 .ExecFF Text I CB e1 <? e2
915 The minimum of
916 .I e1
918 .IR e2 .
920 .TPx
921 .ExecFF Text CB I ( c ; e )
922 Evaluate
923 .I e
924 using
925 .I c
926 as the default scaling indicator.
932 For details see the groff info file.
935 .\" --------------------------------------------------------------------
936 .SH CONDITIONS
937 .\" --------------------------------------------------------------------
939 .B Conditions
940 occur in tests raised by the
941 .request if ,
942 .request ie ,
943 and the
944 .request while
945 requests.
947 The following table characterizes the different types of conditions.
950 .PD 0
953 .TPx
954 .I N
955 A numerical expression
956 .I N
957 yields true if its value is greater than\~0.
959 .TPx
960 .BI ! N
961 True if the value of
962 .I I
963 is\~0.
965 .TPx
966 .BI ' s1 ' s2 '
967 True if string\~\c
968 .I s1
969 is identical to string\~\c
970 .IR s2 .
972 .TPx
973 .BI !' s1 ' s2 '
974 True if string\~\c
975 .I s1
976 is not identical to string\~\c
977 .IR s2 .
979 .TPx
980 .BI c ch
981 True if there is a character\~\c
982 .I ch
983 available.
985 .TPx
986 .BI d name
987 True if there is a string, macro, diversion, or request called
988 .IR name .
990 .TPx
991 .B e
992 Current page number is even.
994 .TPx
995 .B o
996 Current page number is odd.
998 .TPx
999 .BI m name
1000 True if there is a color called
1001 .IR name .
1003 .TPx
1004 .B n
1005 Formatter is
1006 .BR nroff .
1008 .TPx
1009 .BI r reg
1010 True if there is a register named
1011 .IR reg .
1013 .TPx
1014 .B t
1015 Formatter is
1016 .BR troff .
1022 .\" --------------------------------------------------------------------
1023 .SH REQUESTS
1024 .\" --------------------------------------------------------------------
1026 This section provides a short reference for the predefined requests.
1028 In groff, request and macro names can be arbitrarily long.
1030 No bracketing or marking of long names is needed.
1033 Most requests take one or more arguments.
1035 The arguments are separated by space characters (no tabs!); there is
1036 no inherent limit for their length or number.
1038 An argument can be enclosed by a pair of double quotes.
1040 This is very handy if an argument contains space characters, e.g.,
1041 .RI \[dq] "arg with space" \[dq]
1042 denotes a single argument.
1045 Some requests have optional arguments with a different behaviour.
1047 Not all of these details are outlined here.
1049 Refer to the groff info file and
1050 .BR groff_diff (@MAN7EXT@)
1051 for all details.
1054 In the following request specifications, most argument names were
1055 chosen to be descriptive.
1057 Only the following denotations need clarification.
1060 .PD 0
1063 .TPx
1064 .I c
1065 denotes a single character.
1067 .TPx
1068 .I font
1069 a font either specified as a font name or a font number.
1071 .TPx
1072 .I anything
1073 all characters up to the end of the line or within
1074 .esc {
1076 .esc } .
1078 .TPx
1079 .I n
1080 is a numerical expression that evaluates to an integer value.
1082 .TPx
1083 .I N
1084 is an arbitrary numerical expression, signed or unsigned.
1086 .TPx
1087 .I \[+-]N
1088 has three meanings depending on its sign, described below.
1094 If an expression defined as
1095 .I \[+-]N
1096 starts with a
1097 .squoted_char +
1098 sign the resulting value of the expression will be added to an already
1099 existing value inherent to the related request, e.g.\& adding to a number
1100 register.
1102 If the expression starts with a
1103 .squoted_char -
1104 the value of the expression will be subtracted from the request value.
1107 Without a sign,
1108 .I N
1109 replaces the existing value directly.
1111 To assign a negative number either prepend\~0 or enclose the negative
1112 number in parentheses.
1115 .\" --------------------------------------------------------------------
1116 .SS "Request Short Reference"
1117 .\" --------------------------------------------------------------------
1119 .PD 0
1121 .REQ .
1122 Empty line, ignored.
1124 Useful for structuring documents.
1126 .REQ .\[rs]\[dq] anything
1127 Complete line is a comment.
1129 .REQ .ab string
1130 Print
1131 .I string
1132 on standard error, exit program.
1134 .REQ .ad
1135 Begin line adjustment for output lines in current adjust mode.
1137 .REQ .ad c
1138 Start line adjustment in mode
1139 .I c
1140 (\f[CI]c\f[]\f[CR]\|\^\[eq]\|l,r,b,n\f[]).
1142 .REQ .af register c
1143 Assign format
1144 .I c
1146 .I register
1147 (\f[CI]c\f[]\f[CR]\|\^\[eq]\|l,i,I,a,A\f[]).
1149 .REQ .aln alias register
1150 Create alias name for
1151 .IR register .
1153 .REQ .als alias object
1154 Create alias name for request, string, macro, or diversion
1155 .IR object .
1157 .REQ .am macro
1158 Append to
1159 .I macro
1160 until
1161 .B ..\&
1162 is encountered.
1164 .REQ .am macro end
1165 Append to
1166 .I macro
1167 until
1168 .request .end
1169 is called.
1171 .REQ .am1 macro
1172 Same as
1173 .request .am
1174 but with compatibility mode switched off during macro expansion.
1176 .REQ .am1 macro end
1177 Same as
1178 .request .am
1179 but with compatibility mode switched off during macro expansion.
1181 .REQ .ami macro
1182 Append to a macro whose name is contained in the string register
1183 .I macro
1184 until
1185 .B ..\&
1186 is encountered.
1188 .REQ .ami macro end
1189 Append to a macro indirectly.
1190 .I macro
1192 .I end
1193 are string registers whose contents are interpolated for the macro name
1194 and the end macro, respectively.
1196 .REQ .ami1 macro
1197 Same as
1198 .request .ami
1199 but with compatibility mode switched off during macro expansion.
1201 .REQ .ami1 macro end
1202 Same as
1203 .request .ami
1204 but with compatibility mode switched off during macro expansion.
1206 .REQ .as stringvar anything
1207 Append
1208 .I anything
1210 .IR stringvar .
1212 .REQ .as1 stringvar anything
1213 Same as
1214 .request .as
1215 but with compatibility mode switched off during string expansion.
1217 .REQ .asciify diversion
1218 Unformat ASCII characters, spaces, and some escape sequences in
1219 .IR diversion .
1221 .REQ .backtrace
1222 Print a backtrace of the input on stderr.
1224 .REQ .bd font N
1225 Embolden
1226 .I font
1228 .IR N -1
1229 units.
1231 .REQ .bd S font N
1232 Embolden Special Font
1233 .I S
1234 when current font is
1235 .IR font .
1237 .REQ .blm
1238 Unset the blank line macro.
1240 .REQ .blm macro
1241 Set the blank line macro to
1242 .IR macro .
1244 .REQ .box
1245 End current diversion.
1247 .REQ .box macro
1248 Divert to
1249 .IR macro ,
1250 omitting a partially filled line.
1252 .REQ .boxa
1253 End current diversion.
1255 .REQ .boxa macro
1256 Divert and append to
1257 .IR macro ,
1258 omitting a partially filled line.
1260 .REQ .bp
1261 Eject current page and begin new page.
1263 .REQ .bp \[+-]N
1264 Eject current page; next page number
1265 .IR \[+-]N .
1267 .REQ .br
1268 Line break.
1270 .REQ .brp
1271 Break and spread output line.
1272 Same as
1273 .esc p .
1275 .REQ .break
1276 Break out of a while loop.
1278 .REQ .c2
1279 Reset no-break control character to
1280 .dquoted_char ' .
1282 .REQ .c2 c
1283 Set no-break control character to
1284 .IR c .
1286 .REQ .cc
1287 Reset control character to
1288 .squoted_char . .
1290 .REQ .cc c
1291 Set control character to
1292 .IR c .
1294 .REQ .ce
1295 Center the next input line.
1297 .REQ .ce N
1298 Center following
1299 .I N
1300 input lines.
1302 .REQ .cf filename
1303 Copy contents of file
1304 .I filename
1305 unprocessed to stdout or to the diversion.
1307 .REQ .cflags mode c1 c2 .\|.\|.\&
1308 Treat characters
1309 .IR c1 ,
1310 .IR c2 ,
1311 .I .\|.\|.\&
1312 according to
1313 .I mode
1314 number.
1316 .REQ .ch trap N
1317 Change
1318 .I trap
1319 location
1321 .I N .
1323 .REQ .char c anything
1324 Define character
1325 .I c
1326 as string
1327 .IR anything .
1329 .REQ .chop object
1330 Chop the last character off macro, string, or diversion
1331 .IR object .
1333 .REQ .close stream
1334 Close the
1335 .IR stream .
1337 .REQ .color
1338 Enable colors.
1340 .REQ .color N
1342 .I N
1343 is zero disable colors, otherwise enable them.
1345 .REQ .composite from to
1346 Map glyph name
1347 .I from
1348 to glyph name
1349 .I to
1350 while constructing a composite glyph name.
1352 .REQ .continue
1353 Finish the current iteration of a while loop.
1355 .REQ .cp
1356 Enable compatibility mode.
1358 .REQ .cp N
1360 .I N
1361 is zero disable compatibility mode, otherwise enable it.
1363 .REQ .cs font N M
1364 Set constant character width mode for
1365 .I font
1367 .IR N /36
1368 ems with em
1369 .IR M .
1371 .REQ .cu N
1372 Continuous underline in nroff, like
1373 .request .ul
1374 in troff.
1376 .REQ .da
1377 End current diversion.
1379 .REQ .da macro
1380 Divert and append to
1381 .IR macro .
1383 .REQ .de macro
1384 Define or redefine
1385 .I macro
1386 until
1387 .B ..\&
1388 is encountered.
1390 .REQ .de macro end
1391 Define or redefine
1392 .I macro
1393 until
1394 .request .end
1395 is called.
1397 .REQ .de1 macro
1398 Same as
1399 .request .de
1400 but with compatibility mode switched off during macro expansion.
1402 .REQ .de1 macro end
1403 Same as
1404 .request .de
1405 but with compatibility mode switched off during macro expansion.
1407 .REQ .defcolor color scheme component
1408 Define or redefine a color with name
1409 .IR color .
1410 .I scheme
1411 can be
1412 .BR rgb ,
1413 .BR cym ,
1414 .BR cymk ,
1415 .BR gray ,
1417 .BR grey .
1418 .I component
1419 can be single components specified as fractions in the range 0 to 1
1420 (default scaling indicator\~\c
1421 .scaleindicator f ),
1422 as a string of two-digit hexadecimal color components with a leading
1423 .BR # ,
1424 or as a string of four-digit hexadecimal components with two leading
1425 .BR # .
1426 The color
1427 .B default
1428 can't be redefined.
1430 .REQ .dei macro
1431 Define or redefine a macro whose name is contained in the string register
1432 .I macro
1433 until
1434 .B ..\&
1435 is encountered.
1437 .REQ .dei macro end
1438 Define or redefine a macro indirectly.
1439 .I macro
1441 .I end
1442 are string registers whose contents are interpolated for the macro name
1443 and the end macro, respectively.
1445 .REQ .dei1 macro
1446 Same as
1447 .request .dei
1448 but with compatibility mode switched off during macro expansion.
1450 .REQ .dei1 macro end
1451 Same as
1452 .request .dei
1453 but with compatibility mode switched off during macro expansion.
1455 .REQ .di
1456 End current diversion.
1458 .REQ .di macro
1459 Divert to
1460 .I macro .
1462 .REQ .do name
1463 Interpret
1464 .request .name
1465 with compatibility mode disabled.
1467 .REQ .ds stringvar anything
1469 .I stringvar
1471 .IR anything .
1473 .REQ .ds1 stringvar anything
1474 Same as
1475 .request .ds
1476 but with compatibility mode switched off during string expansion.
1478 .REQ .dt N trap
1479 Set diversion trap to position
1480 .I N
1481 (default scaling indicator\~\c
1482 .scaleindicator v ).
1484 .REQ .ec
1485 Reset escape character to
1486 .squoted_char \[rs] .
1488 .REQ .ec c
1489 Set escape character to
1490 .IR c .
1492 .REQ .ecr
1493 Restore escape character saved with
1494 .request .ecs .
1496 .REQ .ecs
1497 Save current escape character.
1499 .REQ .el anything
1500 Else part for if-else (\c
1501 .request ie )
1502 request.
1504 .REQ .em macro
1506 .I macro
1507 will be run after the end of input.
1509 .REQ .eo
1510 Turn off escape character mechanism.
1512 .REQ .ev
1513 Switch to previous environment.
1515 .REQ .ev env
1516 Push down environment number or name
1517 .I env
1518 and switch to it.
1520 .REQ .evc env
1521 Copy the contents of environment
1522 .I env
1523 to the current environment.
1524 No pushing or popping.
1526 .REQ .ex
1527 Exit from roff processing.
1529 .REQ .fam
1530 Return to previous font family.
1532 .REQ .fam name
1533 Set the current font family to
1534 .IR name .
1536 .REQ .fc
1537 Disable field mechanism.
1539 .REQ .fc a
1540 Set field delimiter to
1541 .I a
1542 and pad character to space.
1544 .REQ .fc a b
1545 Set field delimiter to
1546 .I a
1547 and pad character to
1548 .IR b .
1550 .REQ .fchar c anything
1551 Define fallback character
1552 .I c
1553 as string
1554 .IR anything .
1556 .REQ .fi
1557 Fill output lines.
1559 .REQ .fl
1560 Flush output buffer.
1562 .REQ .fp n font
1563 Mount
1564 .I font
1565 on position
1566 .IR n .
1568 .REQ .fp n internal external
1569 Mount font with long
1570 .I external
1571 name to short
1572 .I internal
1573 name on position
1574 .IR n .
1576 .REQ .fschar f c anything
1577 Define fallback character
1578 .I c
1579 for font
1580 .I f
1581 as string
1582 .IR anything .
1584 .REQ .fspecial font
1585 Reset list of special fonts for
1586 .I font
1587 to be empty.
1589 .REQ .fspecial font s1 s2 .\|.\|.\&
1590 When the current font is
1591 .IR font ,
1592 then the fonts
1593 .IR s1 ,
1594 .IR s2 ,
1595 .I .\|.\|.\&
1596 will be special.
1598 .REQ .ft
1599 Return to previous font.
1600 Same as
1601 .request \[rs]f[]
1603 .request \[rs]fP .
1605 .REQ .ft font
1606 Change to font name or number
1607 .IR font ;
1608 same as
1609 .esc[] f font
1610 escape sequence.
1612 .REQ .ftr font1 font2
1613 Translate
1614 .I font1
1616 .IR font2 .
1618 .REQ .hc
1619 Remove additional hyphenation indicator character.
1621 .REQ .hc c
1622 Set up additional hyphenation indicator character\~\c
1623 .IR c .
1625 .REQ .hcode c1 code1 c2 code2 .\|.\|.\&
1626 Set the hyphenation code of character
1627 .I c1
1629 .IR code1 ,
1630 that of
1631 .I c2
1633 .IR code2 ,
1634 etc.
1636 .REQ .hla lang
1637 Set the current hyphenation language to
1638 .IR lang .
1640 .REQ .hlm n
1641 Set the maximum number of consecutive hyphenated lines to
1642 .IR n .
1644 .REQ .hpf file
1645 Read hyphenation patterns from
1646 .IR file .
1648 .REQ .hpfa file
1649 Append hyphenation patterns from
1650 .IR file .
1652 .REQ .hpfcode file
1653 Set input mapping for
1654 .request .hpf .
1656 .REQ .hw words
1657 List of
1658 .I words
1659 with exceptional hyphenation.
1661 .REQ .hy N
1662 Switch to hyphenation mode
1663 .IR N .
1665 .REQ .hym n
1666 Set the hyphenation margin to
1667 .I n
1668 (default scaling indicator\~\c
1669 .scaleindicator m ).
1671 .REQ .hys n
1672 Set the hyphenation space to
1673 .IR n .
1675 .REQ .ie cond anything
1677 .I cond
1678 then
1679 .I anything
1680 else goto
1681 .request .el .
1683 .REQ .if cond anything
1685 .I cond
1686 then
1687 .IR anything ;
1688 otherwise do nothing.
1690 .REQ .ig
1691 Ignore text until
1692 .B ..\&
1693 is encountered.
1695 .REQ .ig end
1696 Ignore text until
1697 .request .end .
1699 .REQ .in
1700 Change to previous indent value.
1702 .REQ .in \[+-]N
1703 Change indent according to
1704 .I \[+-]N
1705 (default scaling indicator\~\c
1706 .scaleindicator m ).
1708 .REQ .it N trap
1709 Set an input-line count trap for the next
1710 .I N
1711 lines.
1713 .REQ .itc N trap
1714 Same as
1715 .request .it
1716 but count lines interrupted with
1717 .esc c
1718 as one line.
1720 .REQ .kern
1721 Enable pairwise kerning.
1723 .REQ .kern n
1725 .I n
1726 is zero, disable pairwise kerning, otherwise enable it.
1728 .REQ .lc
1729 Remove leader repetition character.
1731 .REQ .lc c
1732 Set leader repetition character to\~\c
1733 .IR c .
1735 .REQ .length register anything
1736 Write the length of the string
1737 .I anything
1739 .IR register .
1741 .REQ .linetabs
1742 Enable line-tabs mode (i.e., calculate tab positions relative to output
1743 line).
1745 .REQ .linetabs n
1747 .I n
1748 is zero, disable line-tabs mode, otherwise enable it.
1750 .REQ .lf N
1751 Set input line number to
1752 .IR N .
1754 .REQ .lf N file
1755 Set input line number to
1756 .I N
1757 and filename to
1758 .IR file .
1760 .REQ .lg N
1761 Ligature mode on if
1762 .IR N >0.
1764 .REQ .ll
1765 Change to previous line length.
1767 .REQ .ll \[+-]N
1768 Set line length according to
1769 .I \[+-]N
1770 (default size
1771 .scalednumber 6.5 i ,
1772 default scaling indicator\~\c
1773 .scaleindicator m ).
1775 .REQ .ls
1776 Change to the previous value of additional intra-line skip.
1778 .REQ .ls N
1779 Set additional intra-line skip value to
1780 .IR N ,
1781 i.e.,
1782 .IR N -1
1783 blank lines are inserted after each text output line.
1785 .REQ .lt \[+-]N
1786 Length of title (default scaling indicator\~\c
1787 .scaleindicator m ).
1789 .REQ .mc
1790 Margin character off.
1792 .REQ .mc c
1793 Print character
1794 .I c
1795 after each text line at actual distance from right margin.
1797 .REQ .mc c N
1798 Set margin character to
1799 .I c
1800 and distance to
1801 .I N
1802 from right margin (default scaling indicator\~\c
1803 .scaleindicator m ).
1805 .REQ .mk register
1806 Mark current vertical position in
1807 .IR register .
1809 .REQ .mso file
1810 The same as the .so request except that
1811 .I file
1812 is searched in the tmac directories.
1814 .REQ .na
1815 No output-line adjusting.
1817 .REQ .ne
1818 Need a one-line vertical space.
1820 .REQ .ne N
1821 Need
1822 .I N
1823 vertical space (default scaling indicator\~\c
1824 .scaleindicator v ).
1826 .REQ .nf
1827 No filling or adjusting of output-lines.
1829 .REQ .nh
1830 No hyphenation.
1832 .REQ .nm
1833 Number mode off.
1835 .REQ .nm \[+-]N \fR[\fPM \fR[\fPS \fR[\fPI\fR]]]\fP
1836 In line number mode, set number, multiple, spacing, and indent.
1838 .REQ .nn
1839 Do not number next line.
1841 .REQ .nn N
1842 Do not number next
1843 .I N
1844 lines.
1846 .REQ .nop anything
1847 Always execute
1848 .IR anything .
1850 .REQ .nr register \[+-]N M
1851 Define or modify
1852 .I register
1853 using
1854 .I \[+-]N
1855 with auto-increment
1856 .IR M .
1858 .REQ .nroff
1859 Make the built-in condition
1860 .B n
1861 true and
1862 .B t
1863 false.
1865 .REQ .ns
1866 Turn no-space mode on.
1868 .REQ .nx
1869 Immediately jump to end of current file.
1871 .REQ .nx filename
1872 Next file.
1874 .REQ .open stream filename
1875 Open
1876 .register filename
1877 for writing and associate the stream named
1878 .register stream
1879 with it.
1881 .REQ .opena stream filename
1882 Like
1883 .request .open
1884 but append to it.
1886 .REQ .os
1887 Output vertical distance that was saved by the
1888 .request sv
1889 request.
1891 .REQ .output string
1892 Emit
1893 .I string
1894 directly to intermediate output, allowing leading whitespace if
1895 .I string
1896 starts with
1897 .character \[dq]
1898 (which will be stripped off).
1900 .REQ .pc
1901 Reset page number character to\~\c
1902 .squoted_char % .
1904 .REQ .pc c
1905 Page number character.
1907 .REQ .pi program
1908 Pipe output to
1909 .I program
1910 (nroff only).
1912 .REQ .pl
1913 Set page length to default
1914 .scalednumber 11 i .
1915 The current page length is stored in
1916 .register .p .
1918 .REQ .pl \[+-]N
1919 Change page length to
1920 .I \[+-]N
1921 (default scaling indicator\~\c
1922 .scaleindicator v ).
1924 .REQ .pm
1925 Print macro names and sizes (number of blocks of 128 bytes).
1927 .REQ ".pm t"
1928 Print only total of sizes of macros (number of 128 bytes blocks).
1930 .REQ .pn \[+-]N
1931 Next page number
1932 .IR N .
1934 .REQ .pnr
1935 Print the names and contents of all currently defined number registers
1936 on stderr.
1938 .REQ .po
1939 Change to previous page offset.
1941 The current page offset is available in
1942 .register .o .
1944 .REQ .po \[+-]N
1945 Page offset
1946 .IR N .
1948 .REQ .ps
1949 Return to previous point-size.
1950 .REQ .ps \[+-]N
1951 Point size; same as
1952 .esc[] s \[+-]N .
1954 .REQ .psbb filename
1955 Get the bounding box of a PostScript image
1956 .IR filename .
1958 .REQ .pso command
1959 This behaves like the
1960 .request so
1961 request except that input comes from the standard output of
1962 .IR command .
1964 .REQ .ptr
1965 Print the names and positions of all traps (not including input line
1966 traps and diversion traps) on stderr.
1968 .REQ .pvs
1969 Change to previous post-vertical line spacing.
1971 .REQ .pvs \[+-]N
1972 Change post-vertical line spacing according to
1973 .I \[+-]N
1974 (default scaling indicator\~\c
1975 .scaleindicator p ).
1977 .REQ .rchar c1 c2 .\|.\|.\&
1978 Remove the definitions of characters
1979 .IR c1 ,
1980 .IR c2 ,
1981 .I .\|.\|.\&
1983 .REQ .rd prompt
1984 Read insertion.
1986 .REQ .return
1987 Return from a macro.
1989 .REQ .return anything
1990 Return twice, namely from the macro at the current level and from the macro
1991 one level higher.
1993 .REQ .rfschar f c1 c2 .\|.\|.\&
1994 Remove the definitions of characters
1995 .IR c1 ,
1996 .IR c2 ,
1997 .I .\|.\|.\&
1998 for font
1999 .IR f .
2001 .REQ .rj n
2002 Right justify the next
2003 .I n
2004 input lines.
2006 .REQ .rm name
2007 Remove request, macro, or string
2008 .IR name .
2010 .REQ .rn old new
2011 Rename request, macro, or string
2012 .I old
2014 .IR new .
2016 .REQ .rnn reg1 reg2
2017 Rename register
2018 .I reg1
2020 .IR reg2 .
2022 .REQ .rr register
2023 Remove
2024 .IR register .
2026 .REQ .rs
2027 Restore spacing; turn no-space mode off.
2029 .REQ .rt \[+-]N
2030 Return
2031 .I (upward only)
2032 to marked vertical place (default scaling indicator\~\c
2033 .scaleindicator v ).
2035 .REQ .schar c anything
2036 Define global fallback character
2037 .I c
2038 as string
2039 .IR anything .
2041 .REQ .shc
2042 Reset soft hyphen character to
2043 .esc (hy .
2045 .REQ .shc c
2046 Set the soft hyphen character to
2047 .IR c .
2049 .REQ .shift n
2050 In a macro, shift the arguments by
2051 .IR n \~\c
2052 positions.
2054 .REQ .sizes s1 s2 .\|.\|.\& sn \fB[0]\fP
2055 Set available font sizes similar to the
2056 .B sizes
2057 command in a
2058 .B DESC
2059 file.
2061 .REQ .so filename
2062 Include source file.
2064 .REQ .sp
2065 Skip one line vertically.
2067 .REQ .sp N
2068 Space vertical distance
2069 .I N
2070 up or down according to sign of
2071 .I N
2072 (default scaling indicator\~\c
2073 .scaleindicator v ).
2075 .REQ .special
2076 Reset global list of special fonts to be empty.
2078 .REQ .special s1 s2 .\|.\|.\&
2079 Fonts
2080 .IR s1 ,
2081 .IR s2 ,
2082 etc.\& are special and will be searched for characters not in the
2083 current font.
2085 .REQ .spreadwarn
2086 Toggle the spread warning on and off without changing its value.
2088 .REQ .spreadwarn limit
2089 Emit a warning if each space in an output line is widened by
2090 .I limit
2091 or more (default scaling indicator\~\c
2092 .scaleindicator m ).
2094 .REQ .ss N
2095 Space-character size set to
2096 .IR N /12
2097 of the spacewidth in the current font.
2099 .REQ .ss N M
2100 Space-character size set to
2101 .IR N /12
2102 and sentence space size set to
2103 .IR M /12
2104 of the spacewidth in the current font (\f[CR]\[eq]1/3 em\f[]).
2106 .REQ .sty n style
2107 Associate
2108 .I style
2109 with font position
2110 .IR n .
2112 .REQ .substring xx n1 n2
2113 Replace the string named
2114 .I xx
2115 with the substring defined by the indices
2116 .I n1
2118 .IR n2 .
2120 .REQ .sv
2121 Save
2122 .scalednumber 1 v
2123 of vertical space.
2125 .REQ .sv N
2126 Save the vertical distance
2127 .I N
2128 for later output with
2129 .request os
2130 request.
2132 .REQ .sy command-line
2133 Execute program
2134 .IR command-line .
2136 .REQ ".ta T" N
2137 Set tabs after every position that is a multiple of
2138 .I N
2139 (default scaling indicator\~\c
2140 .scaleindicator m ).
2141 .REQ .ta n1 n2 .\|.\|.\& nn \f[CB]T\f[] r1 r2 .\|.\|.\& rn
2142 Set tabs at positions
2143 .IR n1 ,
2144 .IR n2 ,
2145 .Text .\|.\|.,
2146 .IR nn ,
2147 then set tabs at
2148 .IR nn + r1 ,
2149 .IR nn + r2 ,
2150 .Text .\|.\|.,
2151 .IR nn + rn ,
2152 then at
2153 .IR nn + rn + r1 ,
2154 .IR nn + rn + r2 ,
2155 .Text .\|.\|.,
2156 .IR nn + rn + rn ,
2157 and so on.
2159 .\".REQ .tar
2160 .\"Restore internally saved tab positions.
2161 .\".
2162 .\".REQ .tas
2163 .\"Save tab positions internally.
2165 .REQ .tc
2166 Remove tab repition character.
2167 .REQ .tc c
2168 Set tab repetition character to\~\c
2169 .IR c .
2171 .REQ .ti \[+-]N
2172 Temporary indent next line (default scaling indicator\~\c
2173 .scaleindicator m ).
2175 .REQ .tkf font s1 n1 s2 n2
2176 Enable track kerning for
2177 .IR font .
2179 .REQ .tl \f[CB]\[cq]\f[]left\f[CB]\[cq]\f[]center\f[CB]\[cq]\f[]right\f[CB]\[cq]\f[]
2180 Three-part title.
2182 .REQ .tm anything
2183 Print
2184 .I anything
2185 on terminal (UNIX standard message output).
2187 .REQ .tm1 anything
2188 Print
2189 .I anything
2190 on terminal (UNIX standard message output), allowing leading
2191 whitespace if
2192 .I anything
2193 starts with
2194 .character \[dq]
2195 (which will be stripped off).
2197 .REQ .tmc anything
2198 Similar to
2199 .request .tm1
2200 without emitting a final newline.
2202 .REQ .tr abcd.\|.\|.\&
2203 Translate
2204 .I a
2206 .IR b ,
2207 .I c
2209 .IR d ,
2210 etc.\& on output.
2212 .REQ .trf filename
2213 Transparently output the contents of file
2214 .IR filename .
2216 .REQ .trin abcd.\|.\|.\&
2217 This is the same as the
2218 .request tr
2219 request except that the
2220 .B asciify
2221 request will use the character code (if any) before the character
2222 translation.
2224 .REQ .trnt abcd.\|.\|.\&
2225 This is the same as the
2226 .request tr
2227 request except that the translations do not apply to text that is
2228 transparently throughput into a diversion with
2229 .esc ! .
2231 .REQ .troff
2232 Make the built-in condition
2233 .B t
2234 true and
2235 .B n
2236 false.
2238 .REQ .uf font
2239 Underline font set to
2240 .I font
2241 (to be switched to by
2242 .request .ul ).
2244 .REQ .ul N
2245 Underline (italicize in troff)
2246 .I N
2247 input lines.
2249 .REQ .unformat diversion
2250 Unformat space characters and tabs, preserving font information in
2251 .IR diversion .
2252 .REQ .vpt n
2253 Enable vertical position traps if
2254 .I n
2255 is non-zero, disable them otherwise.
2257 .REQ .vs
2258 Change to previous vertical base line spacing.
2260 .REQ .vs \[+-]N
2261 Set vertical base line spacing according to
2262 .I \[+-]N
2263 (default scaling indicator\~\c
2264 .scaleindicator p ).
2265 Default value is
2266 .scalednumber 12 p .
2268 .REQ .warn n
2269 Set warnings code to
2270 .IR n .
2272 .REQ .warnscale si
2273 Set scaling indicator used in warnings to
2274 .IR si .
2276 .REQ .wh N
2277 Remove (first) trap at position
2278 .IR N .
2280 .REQ .wh N trap
2281 Set location trap; negative means from page bottom.
2283 .REQ .while cond anything
2284 While condition
2285 .I cond
2286 is true, accept
2287 .I anything
2288 as input.
2290 .REQ .write stream anything
2291 Write
2292 .I anything
2293 to the stream named
2294 .IR stream .
2296 .REQ .writec stream anything
2297 Similar to
2298 .request .write
2299 without emitting a final newline.
2301 .REQ .writem stream xx
2302 Write contents of macro or string
2303 .I xx
2304 to the stream named
2305 .IR stream .
2310 Besides these standard groff requests, there might be further macro
2311 calls.
2312 They can originate from a macro package (see
2313 .BR roff (@MAN7EXT@)
2314 for an overview) or from a preprocessor.
2317 Preprocessor macros are easy to be recognized.
2319 They enclose their code into a pair of characteristic macros.
2323 box, center, tab (@);
2324 c | c | c
2325 CfCB | CfCB | CfCB.
2326 preprocessor@start macro@ end macro
2328 eqn@.PS@.PE
2329 grap@.G1@.G2
2330 grn@.GS@.GE
2331 pic@.PS@.PE
2332 refer@.R1@.R2
2333 soelim@\f[I]none@\f[I]none
2334 tbl@.TS@.TE
2339 .\" --------------------------------------------------------------------
2340 .SH "ESCAPE SEQUENCES"
2341 .\" --------------------------------------------------------------------
2343 Escape sequences are in-line language elements usually introduced by a
2344 backslash
2345 .squoted_char \[rs]
2346 and followed by an escape name and sometimes by a required argument.
2348 Input processing is continued directly after the escaped character or
2349 the argument resp.\& without an intervening separation character.
2351 So there must be a way to determine the end of the escape name and the
2352 end of the argument.
2355 This is done by enclosing names (escape name and arguments consisting
2356 of a variable name) by a pair of brackets
2357 .BI \[lB] name \[rB] 
2358 and constant arguments (number expressions and characters) by
2359 apostrophes (ASCII 0x27) like
2360 .BI \[cq] constant \[cq] \f[R].
2363 There are abbreviations for short names.
2365 Two character escape names can be specified by an opening parenthesis
2366 like
2367 .esc ( xy
2368 without a closing counterpart.
2370 And all one-character names different from the special characters
2371 .squoted_char [
2373 .squoted_char (
2374 can even be specified without a marker in the form
2375 .esc c .
2378 Constant arguments of length\~1 can omit the marker apostrophes, too,
2379 but there is no two-character analogue.
2382 While 1-character escape sequences are mainly used for in-line
2383 functions and system related tasks, the 2-letter names following the
2384 .esc (
2385 construct are used for special characters predefined by the roff system.
2387 Escapes sequences with names of more than two characters
2388 .esc[] "" name
2389 denote user defined named characters (see the
2390 .request char
2391 request).
2394 .\" --------------------------------------------------------------------
2395 .SS "Single Character Escapes"
2396 .\" --------------------------------------------------------------------
2398 .PD 0
2400 .\" --------- comments ---------
2402 .ESC \[dq]
2403 Beginning of a comment.
2405 Everything up to the end of the line is ignored.
2407 .ESC #
2408 Everything up to and including the next newline is ignored.
2410 This is interpreted in copy mode.
2412 This is like
2413 .esc \[dq]
2414 except that the terminating newline is ignored as well.
2416 .\" --------- strings ---------
2418 .ESC *\f[I]s\f[]
2419 The string stored in the string variable with 1-character name
2420 .IR s .
2422 .ESC *(\f[I]st\f[]
2423 The string stored in the string variable with 2-character name
2424 .IR st .
2426 .ESC[] * "stringvar arg1 arg2 .\|.\|."
2427 The string stored in the string variable with arbitrary length name
2428 .IR stringvar ,
2429 taking
2430 .IR arg1 ,
2431 .IR arg2 ,
2432 .I .\|.\|.\&
2433 as arguments.
2435 .\" --------- macro arguments ---------
2437 .ESC $0
2438 The name by which the current macro was invoked.
2441 .request als
2442 request can make a macro have more than one name.
2444 .ESC $ x
2445 Macro or string argument with 1-place number
2446 .IR x ,
2447 where
2448 .I x
2449 is a digit between 1 and 9.
2451 .ESC $( xy
2452 Macro or string argument with 2-digit number
2453 .IR xy .
2455 .ESC[] $ nexp
2456 Macro or string argument with number
2457 .IR nexp ,
2458 where
2459 .I nexp
2460 is a numerical expression evaluating to an integer \[>=]1.
2462 .ESC $*
2463 In a macro or string, the concatenation of all the arguments separated
2464 by spaces.
2466 .ESC $@
2467 In a macro or string, the concatenation of all the arguments with each
2468 surrounded by double quotes, and separated by spaces.
2470 .\" --------- escaped characters ---------
2472 .ESC \[rs]
2473 reduces to a single backslash; useful to delay its interpretation as
2474 escape character in copy mode.
2476 For a printable backslash, use
2477 .esc e ,
2478 or even better
2479 .esc [rs] ,
2480 to be independent from the current escape character.
2482 .ESC \[cq]
2483 The acute accent \[aa]; same as
2484 .esc (aa .
2485 Unescaped: apostrophe, right quotation mark, single quote (ASCII 0x27).
2487 .ESC `
2488 The grave accent \[ga]; same as
2489 .esc (ga .
2490 Unescaped: left quote, backquote (ASCII 0x60).
2492 .ESC \-
2493 The \- sign in the current font.
2495 .ESC .
2496 An uninterpreted dot (period), even at start of line.
2498 .ESC %
2499 Default optional hyphenation character.
2501 .ESC !
2502 Transparent line indicator.
2504 .ESC? anything
2505 In a diversion, this will transparently embed
2506 .I anything
2507 in the diversion.
2508 .I anything
2509 is read in copy mode.
2511 See also the escape sequences
2512 .esc !
2514 .esc ? .
2517 .\" --------- spacing ---------
2519 .ESC \& space
2520 Unpaddable space-size space character (no line break).
2522 .ESC 0
2523 Digit width.
2525 .ESC |
2526 1/6\ em narrow space character; zero width in nroff.
2528 .ESC ^
2529 1/12\ em half-narrow space character; zero width in nroff.
2531 .ESC &
2532 Non-printable, zero width character.
2534 .ESC )
2535 Like
2536 .esc &
2537 except that it behaves like a character declared with the cflags
2538 request to be transparent for the purposes of end of sentence
2539 recognition.
2541 .ESC /
2542 Increases the width of the preceding character so that the spacing
2543 between that character and the following character will be correct if
2544 the following character is a roman character.
2546 .ESC ,
2547 Modifies the spacing of the following character so that the spacing
2548 between that character and the preceding character will correct if the
2549 preceding character is a roman character.
2551 .ESC ~
2552 Unbreakable space that stretches like a normal inter-word space when a
2553 line is adjusted.
2555 .ESC :
2556 Inserts a zero-width break point (similar to
2557 .esc %
2558 but without a soft hyphen character).
2560 .ESC "" newline
2561 Ignored newline, for continuation lines.
2563 .\" --------- structuring ---------
2565 .ESC {
2566 Begin conditional input.
2568 .ESC }
2569 End conditional input.
2571 .\" --------- longer escape names ---------
2573 .ESC ( sc
2574 The special character with 2-character name
2575 .IR sc ,
2576 see section
2577 .BR "Special Characters" .
2579 .ESC[] "" name
2580 The named character (or rather glyph) with arbitrary length name
2581 .IR name .
2583 .ESC[] "" "comp1 comp2 .\|.\|."
2584 A composite glyph with components
2585 .IR comp1 ,
2586 .IR comp2 ,
2587 .I .\|.\|.
2589 .\" --------- alphabetical escapes ---------
2591 .ESC a
2592 Non-interpreted leader character.
2594 .ESCq A anything
2596 .I anything
2597 is acceptable as a name of a string, macro, diversion, register,
2598 environment or font it expands to\~1, and to\~0 otherwise.
2600 .ESCq b abc.\|.\|.\&
2601 Bracket building function.
2603 .ESCq B anything
2605 .I anything
2606 is acceptable as a valid numeric expression it expands to\~1, and
2607 to\~0 otherwise.
2609 .ESC c
2610 Interrupt text processing.
2612 .ESCq C char
2613 The character called
2614 .IR char ;
2615 same as
2616 .esc[] "" char ,
2617 but compatible to other roff versions.
2619 .ESC d
2620 Forward (down) 1/2 em vertical unit (1/2 line in nroff).
2622 .ESCq D charseq
2623 Draw a graphical element defined by the characters in
2624 .IR charseq ;
2625 see groff info file for details.
2627 .ESC e
2628 Printable version of the current escape character.
2630 .ESC E
2631 Equivalent to an escape character, but is not interpreted in copy-mode.
2633 .ESC f F
2634 Change to font with 1-character name or 1-digit number
2635 .IR F .
2637 .ESC fP
2638 Switch back to previous font.
2640 .ESC f( fo
2641 Change to font with 2-character name or 2-digit number
2642 .IR fo .
2644 .ESC[] f font
2645 Change to font with arbitrary length name or number expression
2646 .IR font .
2648 .ESC[] f ""
2649 Switch back to previous font.
2651 .ESC F f
2652 Change to font family with 1-character name
2653 .IR f .
2655 .ESC F( fm
2656 Change to font family with 2-character name
2657 .IR fm .
2659 .ESC[] F fam
2660 Change to font family with arbitrary length name
2661 .IR fam .
2663 .ESC[] F ""
2664 Switch back to previous font family.
2666 .ESC[] g reg
2667 Return format of register with name
2668 .I reg
2669 suitable for
2670 .request .af .
2672 Alternative forms
2673 .escarg g( xy
2675 .escarg g x .
2677 .ESCq h N
2678 Local horizontal motion; move right
2679 .I N
2680 (left if negative).
2682 .ESCq H N
2683 Set height of current font to
2684 .IR N .
2686 .ESC[] k reg
2687 Mark horizontal input place in register with arbitrary length name
2688 .IR reg .
2689 Alternative forms
2690 .escarg k( xy
2692 .escarg k x .
2694 .ESCq l Nc
2695 Horizontal line drawing function (optionally using character
2696 .IR c ).
2698 .ESCq L Nc
2699 Vertical line drawing function (optionally using character
2700 .IR c ).
2702 .ESC[] m color
2703 Change to color
2704 .IR color .
2706 Alternative forms
2707 .escarg m( co
2709 .escarg m c .
2711 .ESC[] m ""
2712 Switch back to previous color.
2714 .ESC[] M color
2715 Change filling color for closed drawn objects to color
2716 .IR color .
2718 Alternative forms
2719 .escarg M( co
2721 .escarg M c .
2723 .ESC[] M ""
2724 Switch to previous fill color.
2726 .ESC n r
2727 The numerical value stored in the register variable with the
2728 1-character name
2729 .IR r .
2731 .ESC n( re
2732 The numerical value stored in the register variable with the
2733 2-character name
2734 .IR re .
2736 .ESC[] n reg
2737 The numerical value stored in the register variable with arbitrary
2738 length name
2739 .IR reg .
2741 .ESCq N n
2742 Typeset the character with code
2743 .I n
2744 in the current font, no special fonts are searched.
2746 Useful for adding characters to a font using the
2747 .request char
2748 request.
2750 .ESCq o abc.\|.\|.\&
2751 Overstrike characters
2752 .IR a ,
2753 .IR b ,
2754 .IR c ,
2755 etc.
2757 .ESC O 0
2758 Disable glyph output.
2760 Mainly for internal use.
2762 .ESC O 1
2763 Enable glyph output.
2765 Mainly for internal use.
2767 .ESC p
2768 Break and spread output line.
2770 .ESC r
2771 Reverse 1\ em vertical motion (reverse line in nroff).
2773 .ESCq R "name\~\[+-]n"
2774 The same as
2775 .request .nr
2776 .I name
2777 .IR \[+-]n .
2779 .ESC[] s \[+-]N
2780 Set the point size to
2781 .I N
2782 scaled points.
2784 Note the alternative forms
2785 .BI \[rs]s \[+-] [ N ]\c
2787 .BI \[rs]s' \[+-]N '\c
2788 .Text ,
2789 .BI \[rs]s \[+-] ' N '\c
2790 .Text ,
2791 .escarg s( \[+-]xy\c
2792 .Text ,
2793 .BI \[rs]s \[+-] ( xy\c
2794 .Text ,
2795 .escarg s \[+-]x .
2796 Same as
2797 .request ps
2798 request.
2800 .ESCq S N
2801 Slant output
2802 .I N
2803 degrees.
2805 .ESC t
2806 Non-interpreted horizontal tab.
2808 .ESC u
2809 Reverse (up) 1/2 em vertical motion (1/2 line in nroff).
2811 .ESCq v N
2812 Local vertical motion; move down
2813 .I N
2814 (up if negative).
2816 .ESC[] V env
2817 The contents of the environment variable
2818 .IR env .
2820 Alternative forms
2821 .escarg V( xy
2823 .escarg V x .
2825 .ESCq w string
2826 The width of the character sequence
2827 .IR string .
2829 .ESCq x N
2830 Extra line-space function (negative before, positive after).
2832 .ESCq X string
2833 Output
2834 .I string
2835 as device control function.
2837 .ESC[] Y name
2838 Output string variable or macro
2839 .I name
2840 uninterpreted as device control function.
2842 Alternative forms
2843 .escarg Y( xy
2845 .escarg Y x .
2847 .ESC z c
2848 Print
2849 .I c
2850 with zero width (without spacing).
2852 .ESCq Z anything
2853 Print
2854 .I anything
2855 and then restore the horizontal and vertical position;
2856 .I anything
2857 may not contain tabs or leaders.
2861 The escape sequences
2862 .esc e ,
2863 .esc . ,
2864 .esc \[dq] ,
2865 .esc $ ,
2866 .esc * ,
2867 .esc a ,
2868 .esc n ,
2869 .esc t ,
2870 .esc g ,
2872 .escarg \& newline
2873 are interpreted in copy mode.
2876 Escape sequences starting with
2877 .esc (
2879 .esc [
2880 do not represent single character escape sequences, but introduce escape
2881 names with two or more characters.
2884 If a backslash is followed by a character that does not constitute a
2885 defined escape sequence the backslash is silently ignored and the
2886 character maps to itself.
2889 .\" --------------------------------------------------------------------
2890 .SS "Special Characters"
2891 .\" --------------------------------------------------------------------
2893 Common special characters are predefined by escape sequences of the
2894 form
2895 .BI \[rs]( xy
2896 with characters
2897 .I x
2899 .IR y .
2901 Some of these exist in the usual font while most of them are only
2902 available in the special font.
2904 Below you'll find a selection of the most important glyphs; a complete
2905 list can be found in
2906 .BR groff_char (@MAN7EXT@).
2909 .PD 0
2911 .ESC (bu
2912 Bullet sign
2913 .ESC (co
2914 Copyright
2915 .ESC (ct
2916 Cent
2917 .ESC (dd
2918 Double dagger
2919 .ESC (de
2920 Degree
2921 .ESC (dg
2922 Dagger
2923 .ESC (rs
2924 Printable double quote
2925 .ESC (em
2926 Em-dash
2927 .ESC (hy
2928 Hyphen
2929 .ESC (rg
2930 Registered sign
2931 .ESC (rs
2932 Printable backslash character
2933 .ESC (sc
2934 Section sign
2935 .ESC (ul
2936 Underline character
2937 .ESC (==
2938 Identical
2939 .ESC (>=
2940 Larger or equal
2941 .ESC (<=
2942 Less or equal
2943 .ESC (!=
2944 Not equal
2945 .ESC (->
2946 Right arrow
2947 .ESC (<-
2948 Left arrow
2949 .ESC (+-
2950 Plus-minus sign
2955 .\" --------------------------------------------------------------------
2956 .SS "Strings"
2957 .\" --------------------------------------------------------------------
2959 Strings are defined by the
2960 .request ds
2961 request and can be retrieved by the
2962 .esc *
2963 escape sequence.
2966 Strings share their name space with macros.
2968 So strings and macros without arguments are roughly equivalent; it is
2969 possible to call a string like a macro and vice-versa, but this often
2970 leads to unpredictable results.
2972 The following strings are predefined in groff.
2974 .STRING .T
2975 The name of the current output device as specified by the
2976 .option -T
2977 command line option.
2980 .\" --------------------------------------------------------------------
2981 .SH REGISTERS
2982 .\" --------------------------------------------------------------------
2984 Registers are variables that store a value.
2985 In groff, most registers store numerical values (see section
2986 .B NUMERICAL EXPRESSIONS
2987 above), but some can also hold a string value.
2990 Each register is given a name.
2991 Arbitrary registers can be defined and set with the request
2992 .request nr
2993 .IR register .
2996 The value stored in a register can be retrieved by the escape sequences
2997 introduced by
2998 .esc n .
3001 Most useful are predefined registers.
3003 In the following the notation
3004 .I name
3005 is used to refer to a register called
3006 .register name
3007 to make clear that we speak about registers.
3009 Please keep in mind that the
3010 .esc[] n ""
3011 decoration is not part of the register name.
3014 .\" --------------------------------------------------------------------
3015 .SS "Read-only Registers"
3016 .\" --------------------------------------------------------------------
3018 The following registers have predefined values that should not be
3019 modified by the user (usually, registers starting with a dot a
3020 read-only).
3022 Mostly, they provide information on the current settings or store
3023 results from request calls.
3026 .PD 0
3028 .REG .$
3029 Number of arguments in the current macro or string.
3031 .REG .a
3032 Post-line extra line-space most recently utilized using
3033 .escq x N .
3035 .REG .A
3036 Set to\~1 in
3037 .B troff
3038 if option
3039 .B \-A
3040 is used; always\~1 in
3041 .BR nroff .
3043 .REG .c
3044 Current input line number.
3046 .REG .C
3047 1\~if compatibility mode is in effect, 0\~otherwise.
3049 .REG .cdp
3050 The depth of the last character added to the current environment.
3051 It is positive if the character extends below the baseline.
3053 .REG .ce
3054 The number of lines remaining to be centered, as set by the
3055 .request ce
3056 request.
3058 .REG .cht
3059 The height of the last character added to the current environment.
3060 It is positive if the character extends above the baseline.
3062 .REG .color
3063 1\~if colors are enabled, 0\~otherwise.
3065 .REG .csk
3066 The skew of the last character added to the current environment.
3067 The skew of a character is how far to the right of the center of a character
3068 the center of an accent over that character should be placed.
3070 .REG .d
3071 Current vertical place in current diversion; equal to register
3072 .register nl .
3074 .REG .ev
3075 The name or number of the current environment (string-valued).
3077 .REG .f
3078 Current font number.
3080 .REG .fam
3081 The current font family (string-valued).
3083 .REG .fn
3084 The current (internal) real font name (string-valued).
3086 .REG .fp
3087 The number of the next free font position.
3089 .REG .g
3090 Always 1 in GNU troff.
3092 Macros should use it to test if running under groff.
3094 .REG .h
3095 Text base-line high-water mark on current page or diversion.
3097 .REG .H
3098 Available horizontal resolution in basic units.
3100 .REG .height
3101 The current font height as set with
3102 .request \[rs]H .
3104 .REG .hla
3105 The current hyphenation language as set by the
3106 .B .hla
3107 request.
3109 .REG .hlc
3110 The number of immediately preceding consecutive hyphenated lines.
3112 .REG .hlm
3113 The maximum allowed number of consecutive hyphenated lines, as set by
3115 .request hlm
3116 request.
3118 .REG .hy
3119 The current hyphenation flags (as set by the
3120 .request hy
3121 request).
3123 .REG .hym
3124 The current hyphenation margin (as set by the
3125 .request hym
3126 request).
3128 .REG .hys
3129 The current hyphenation space (as set by the
3130 .request hys
3131 request).
3133 .REG .i
3134 Current ident.
3136 .REG .in
3137 The indent that applies to the current output line.
3139 .REG .int
3140 Positive if last output line contains
3141 .esc c .
3143 .REG .kern
3144 1\~if pairwise kerning is enabled, 0\~otherwise.
3146 .REG .l
3147 Current line length.
3149 .REG .lg
3150 The current ligature mode (as set by the
3151 .request lg
3152 request).
3154 .REG .linetabs
3155 The current line-tabs mode (as set by the
3156 .request linetabs
3157 request).
3159 .REG .ll
3160 The line length that applies to the current output line.
3162 .REG .lt
3163 The title length (as set by the
3164 .request lt
3165 request).
3167 .REG .m
3168 The current drawing color (string-valued).
3170 .REG .M
3171 The current background color (string-valued).
3173 .REG .n
3174 Length of text portion on previous output line.
3176 .REG .ne
3177 The amount of space that was needed in the last
3178 .request ne
3179 request that caused a trap to be sprung.
3181 Useful in conjunction with
3182 .register .trunc .
3184 .REG .ns
3185 1\~if in no-space mode, 0\~otherwise.
3187 .REG .o
3188 Current page offset.
3190 .REG .p
3191 Current page length.
3193 .REG .pe
3194 1\~during page ejection, 0\~otherwise.
3196 .REG .pn
3197 The number of the next page: either the value set by a
3198 .request pn
3199 request, or the number of the current page plus\ 1.
3201 .REG .ps
3202 The current pointsize in scaled points.
3204 .REG .psr
3205 The last-requested pointsize in scaled points.
3207 .REG .pvs
3208 The current post-vertical line spacing.
3210 .REG .rj
3211 The number of lines to be right-justified as set by the rj request.
3213 .REG .s
3214 Current point size as a decimal fraction.
3216 .REG .slant
3217 The slant of the current font as set with
3218 .request \[rs]S .
3220 .REG .sr
3221 The last requested pointsize in points as a decimal fraction
3222 (string-valued).
3224 .REG .t
3225 Distance to the next trap.
3227 .REG .T
3228 Set to\~1
3229 if option
3230 .B \-T
3231 is used.
3233 .REG .tabs
3234 A string representation of the current tab settings suitable for use
3235 as an argument to the
3236 .request ta
3237 request.
3239 .REG .trunc
3240 The amount of vertical space truncated by the most recently sprung
3241 vertical position trap, or, if the trap was sprung by a
3242 .request ne
3243 request, minus the amount of vertical motion produced by
3244 .request .ne .
3246 In other words, at the point a trap is sprung, it represents
3247 the difference of what the vertical position would have been but for
3248 the trap, and what the vertical position actually is.
3250 Useful in conjunction with the
3251 .register .ne
3252 register.
3254 .REG .ss
3255 The value of the parameters set by the first argument of the
3256 .request ss
3257 request.
3259 .REG .sss
3260 The value of the parameters set by the second argument of the
3261 .request ss
3262 request.
3264 .REG .u
3265 Equal to 1 bin fill mode and 0 in nofill mode.
3267 .REG .v
3268 Current vertical line spacing.
3270 .REG .V
3271 Available vertical resolution in basic units.
3273 .REG .vpt
3274 1\~ if vertical position traps are enabled, 0\~otherwise.
3276 .REG .w
3277 Width of previous character.
3279 .REG .warn
3280 The sum of the number codes of the currently enabled warnings.
3282 .REG .x
3283 The major version number.
3285 .REG .y
3286 The minor version number.
3288 .REG .Y
3289 The revision number of groff.
3291 .REG .z
3292 Name of current diversion.
3296 .\" --------------------------------------------------------------------
3297 .SS "Writable Registers"
3298 .\" --------------------------------------------------------------------
3300 The following registers can be read and written by the user.
3301 They have predefined default values, but these can be modified for
3302 customizing a document.
3305 .PD 0
3306 .REG %
3307 Current page number.
3309 .REG c.
3310 Current input line number.
3312 .REG ct
3313 Character type (set by width function
3314 .esc w ).
3316 .REG dl
3317 Maximal width of last completed diversion.
3319 .REG dn
3320 Height of last completed diversion.
3322 .REG dw
3323 Current day of week (1-7).
3325 .REG dy
3326 Current day of month (1-31).
3328 .REG hours
3329 The number of hours past midnight.
3331 Initialized at start-up.
3333 .REG hp
3334 Current horizontal position at input line.
3336 .REG llx
3337 Lower left x-coordinate (in PostScript units) of a given PostScript
3338 image (set by
3339 .request .psbb ).
3341 .REG lly
3342 Lower left y-coordinate (in PostScript units) of a given PostScript
3343 image (set by
3344 .request .psbb ).
3346 .REG ln
3347 Output line number.
3349 .REG minutes
3350 The number of minutes after the hour.
3352 Initialized at start-up.
3354 .REG mo
3355 Current month (1-12).
3357 .REG nl
3358 Vertical position of last printed text base-line.
3360 .REG rsb
3361 Like
3362 .register sb ,
3363 but takes account of the heights and depths of characters.
3365 .REG rst
3366 Like
3367 .register st ,
3368 but takes account of the heights and depths of characters.
3370 .REG sb
3371 Depth of string below base line (generated by width function
3372 .esc w ).
3374 .REG seconds
3375 The number of seconds after the minute.
3377 Initialized at start-up.
3379 .REG skw
3380 Right skip width from the center of the last character in the
3381 .esc w
3382 argument.
3384 .REG slimit
3385 If greater than 0, the maximum number of objects on the input stack.
3387 If \[<=]0 there is no limit, i.e., recursion can continue until virtual
3388 memory is exhausted.
3390 .REG ssc
3391 The amount of horizontal space (possibly negative) that should be
3392 added to the last character before a subscript (generated by width
3393 function
3394 .esc w ).
3396 .REG st
3397 Height of string above base line (generated by width function
3398 .esc w ).
3400 .REG systat
3401 The return value of the
3402 .I system()
3403 function executed by the last
3404 .request sy
3405 request.
3407 .REG urx
3408 Upper right x-coordinate (in PostScript units) of a given PostScript
3409 image (set by
3410 .request .psbb ).
3412 .REG ury
3413 Upper right y-coordinate (in PostScript units) of a given PostScript
3414 image (set by
3415 .request .psbb ).
3417 .REG year
3418 The current year (year 2000 compliant).
3420 .REG yr
3421 Current year minus 1900.
3423 For Y2K compliance use register
3424 .register year
3425 instead.
3430 .\" --------------------------------------------------------------------
3431 .SH COMPATIBILITY
3432 .\" --------------------------------------------------------------------
3434 The differences of the groff language in comparison to classical troff
3435 as defined by
3436 .I [CSTR\~#54]
3437 are documented in
3438 .BR groff_diff (@MAN7EXT@).
3441 The groff system provides a compatibility mode, see
3442 .BR groff (@MAN1EXT@)
3443 on how to invoke this.
3446 .\" --------------------------------------------------------------------
3447 .SH BUGS
3448 .\" --------------------------------------------------------------------
3450 Report bugs to the
3451 .MTO bug-groff@gnu.org "groff bug mailing list" .
3452 Include a complete, self-contained example that will allow the bug to
3453 be reproduced, and say which version of groff you are using.
3456 .\" --------------------------------------------------------------------
3457 .SH AUTHORS
3458 .\" --------------------------------------------------------------------
3460 Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
3463 This document is distributed under the terms of the FDL (GNU Free
3464 Documentation License) version 1.1 or later.
3466 You should have received a copy of the FDL on your system, it is also
3467 available on-line at the
3468 .URL http://\:www.gnu.org/\:copyleft/\:fdl.html "GNU copyleft site" .
3471 This document is part of
3472 .IR groff ,
3473 the GNU roff distribution.
3475 It was written by
3476 .MTO bwarken@mayn.de "Bernd Warken" ;
3477 it is maintained by
3478 .MTO wl@gnu.org "Werner Lemberg" .
3481 .\" --------------------------------------------------------------------
3482 .SH "SEE ALSO"
3483 .\" --------------------------------------------------------------------
3486 The main source of information for the groff language is the
3487 .B groff
3488 .BR info (1)
3489 file.
3491 Besides the gory details, it contains many examples.
3494 .BR groff (@MAN1EXT@)
3495 the usage of the groff program and pointers to the documentation and
3496 availability of the groff system.
3499 .BR groff_diff (@MAN7EXT@)
3500 the differences of the groff language as compared to classical roff.
3502 This is the authoritative document for the predefined language
3503 elements that are specific to groff.
3506 .BR groff_char (@MAN7EXT@)
3507 the predefined groff characters (glyphs).
3510 .BR groff_font (@MAN5EXT@)
3511 the specification of fonts and the DESC file.
3514 .BR roff (@MAN7EXT@)
3515 the history of roff, the common parts shared by all roff systems, and
3516 pointers to further documentation.
3519 .I [CSTR\~#54]
3520 .URL http://\:cm.bell-labs.com/\:cm/\:cs/\:54.ps \
3521      "Nroff/\:Troff User's Manual by Osanna & Kernighan"
3522 \[em] the bible for classical troff.
3524 .cp \n[groff_C]
3526 .\" --------------------------------------------------------------------
3527 .\" Emacs Setup
3528 .\" --------------------------------------------------------------------
3530 .\" Local Variables:
3531 .\" mode: nroff
3532 .\" End: