Merge branch 'topic/sync-to-go-2'
[s-roff.git] / man / l_roff.7.in
blob1e10f1cc7cbd3cbd1f0138b231ae14f74ed8eb0a
1 .ig
2 @ @L_ROFF@.7
4 Copyright (c) 2014 - 2017 Steffen (Daode) Nurpmeso <steffen@sdaoden.eu>.
6 Copyright (C) 2000 - 2008
7   Free Software Foundation, Inc.
8 written by Bernd Warken <bwarken@mayn.de>
10 Permission is granted to copy, distribute and/or modify this document
11 under the terms of the GNU Free Documentation License, Version 1.1 or
12 any later version published by the Free Software Foundation; with the
13 Invariant Sections being this .ig-section and AUTHORS, with no
14 Front-Cover Texts, and with no Back-Cover Texts.
16 You should have received a copy of the Free Documentation License
17 as part of the file COPYING; also located in the main directory of the
18 source package of this program.
21 .\"
22 .\" Setup
23 .\"
25 .do nr roff_C \n[.C]
26 .cp 0
28 .\"
29 .\" start of macro definitions
31 .de TPx
32 .  TP 10n
34 .\"
35 .\" .Text anything ...
36 .\"
37 .\" All arguments are printed as text.
38 .\"
39 .de Text
40 .  nop \)\\$*
43 .\" --------- command line option ---------
45 .de option
46 .  Text \f[CB]\\$*
47 .  ft P
50 .\" --------- characters ---------
52 .de squoted_char
53 .  Text \[oq]\f[CB]\\$1\f[]\[cq]\\$2
55 .de dquoted_char
56 .  Text \[lq]\f[CB]\\$1\f[]\[rq]\\$2
58 .\" --------- requests ---------
60 .\" synopsis of a request
61 .de REQ
62 .  ie \n[.$]=1 \{\
63 .    Text \f[CB]\\$1\f[]
64 .  \}
65 .  el \{\
66 .    Text \f[CB]\\$1\~\f[]\f[I]\\$2\f[]
67 .  \}
70 .\" reference of a request
71 .de request
72 .  BR \\$*
75 .\" --------- numerical elements ---------
77 .\" number with a trailing unit
78 .de scalednumber
79 .  Text \\$1\^\f[CB]\\$2\f[]\\$3\f[R]
80 .  ft P
83 .\" representation of units within the text
84 .de scaleindicator
85 .  Text \f[CB]\\$1\f[]\\$2\f[R]
86 .  ft P
89 .\" representation of mathematical operators within the text
90 .de operator
91 .  squoted_char \\$@
95 .\" --------- escape sequences ---------
97 .\"
98 .\" .ESC name [arg]
99 .\"
100 .\" Synopsis of an escape sequence, optionally with argument
101 .\" Args   : 1 or 2; `name' obligatory, `arg' optional
102 .\"   name : suitable name for an escape sequence (c, (xy, [long])
103 .\"   arg  : arbitrary word
104 .\" Result : prints \namearg, where `name' is in CB, `arg' in I
106 .de ESC
107 .  Text "\f[CB]\[rs]\\$1\,\f[I]\\$2\/\fR"
110 .\" .ESC[] name arg
112 .\" Synopsis for escape sequence with a bracketed long argument
113 .\" Args   : 2 obligatory
114 .\"   name : suitable name for an escape sequence (c, (xy, [long])
115 .\"   arg  : arbitrary text
116 .\" Result : prints \name[arg], where `name' is in CB, `arg' in I
118 .de ESC[]
119 .  Text "\f[CB]\[rs]\\$1\[lB]\f[]\f[I]\\$2\f[]\f[CB]\[rB]\f[]"
122 .\" .ESCq name arg
124 .\" Synopsis for escape sequence with a bracketed long argument
125 .\" Args   : 2 obligatory
126 .\"   name : suitable name for an escape sequence (c, (xy, [long])
127 .\"   arg  : arbitrary text
128 .\" Result : prints \name'arg', where `name' is in CB, `arg' in I
130 .de ESCq
131 .  Text "\f[CB]\[rs]\\$1\[cq]\f[]\f[I]\\$2\f[]\f[CB]\[cq]\f[]"
134 .\" .ESC? arg
136 .\" Synopsis for escape sequence with a bracketed long argument
137 .\" Args   : 1 obligatory
138 .\"   arg  : arbitrary text
139 .\" Result : prints `\?arg?', where the `?' are in CB, `arg' in I
141 .de ESC?
142 .  Text "\f[CB]\[rs]?\f[I]\\$1\f[CB]?\f[R]"
145 .\" .esc name [punct]
147 .\" Reference of an escape sequence (no args), possibly punctuation
148 .\" Args    : 1 obligatory
149 .\"   name  : suitable name for an escape sequence (c, (xy, [long])
150 .\"   punct : arbitrary
151 .\" Result  : prints \name, where `name' is in B, `punct' in R
153 .de esc
154 .  BR "\[rs]\\$1" \\$2
157 .\" .escarg name arg [punct]
159 .\" Reference of an escape sequence (no args)
160 .\" Args    : 1 obligatory, 1 optional
161 .\"   name  : suitable name for an escape sequence (c, (xy, [long])
162 .\"   arg   : arbitrary word
163 .\" Result  : prints \namearg, where
164 .\"           `name' is in B, `arg' in I
166 .de escarg
167 .  Text \f[B]\[rs]\\$1\f[]\f[I]\\$2\f[]\\$3
170 .\" .esc[] name arg [punct]
172 .\" Reference for escape sequence with a bracketed long argument
173 .\" Args   : 2 obligatory
174 .\"   name : suitable name for an escape sequence (c, (xy, [long])
175 .\"   arg  : arbitrary text
176 .\" Result : prints \name[arg], where `name' is in CB, `arg' in CI
178 .de esc[]
179 .  Text \f[B]\[rs]\\$1\[lB]\f[]\f[I]\\$2\f[]\f[B]\[rB]\f[]\\$3
183 .\" .escq name arg
185 .\" Reference for escape sequence with a bracketed long argument
186 .\" Args   : 2 obligatory
187 .\"   name : suitable name for an escape sequence (c, (xy, [long])
188 .\"   arg  : arbitrary text
189 .\" Result : prints \name'arg', where `name' is in CB, `arg' in CI
191 .de escq
192 .  Text \f[B]\[rs]\\$1\[cq]\f[]\f[I]\\$2\f[]\f[B]\[cq]\f[]\\$3
195 .\" --------- strings ---------
197 .\" synopsis for string, with \*[]
198 .de STRING
199 .  Text \[rs]*[\f[CB]\\$1\f[]] \\$2
201 .\" synopsis for a long string
202 .de string
203 .  if \n[.$]=0 \
204 .    return
205 .  Text \f[CB]\[rs]*\[lB]\\$1\[rB]\f[]\\$2
208 .\" --------- registers ---------
210 .\" synopsis for registers, with \n[]
211 .de REG
212 .  Text \[rs]n[\f[CB]\\$1\f[]]
214 .\" reference of a register, without decoration
215 .de register
216 .  Text register
217 .  BR \\$*
220 .\" end of macro definitions
224 .\" Title
227 .TH @U_ROFF@ @MAN7EXT@ "@MDATE@" "@T_ROFF@ v@VERSION@"
228 .SH NAME
229 @L_ROFF@ \- a short reference for the roff language
233 .SH DESCRIPTION
236 .I @T_ROFF@
237 is a free implementation of the roff type-setting system.
240 .BR @L_ROFF@-history (@MAN7EXT@)
241 for a survey and the background of the @T_ROFF@ system.
244 This document gives only short descriptions of the predefined roff
245 language elements as used in @L_ROFF@.
247 Classical features, GNU troff and @T_ROFF@ extensions are provided.
250 Historically, the
251 .I roff language
252 was called
253 .IR troff .
254 .I @L_ROFF@
255 is compatible with the classical system and provides proper
256 extensions.
258 The terms
259 .IR roff ,
260 .IR troff ,
262 .I @T_ROFF@
263 language could be used as synonyms.
265 However
266 .I troff
267 slightly tends to refer more to the classical aspects, whereas
268 .I @T_ROFF@
269 emphasizes the extensions, and
270 .I roff
271 is the general term for the language.
274 The general syntax for writing roff documents is relatively easy, but
275 writing extensions to the roff language can be a bit harder.
278 The roff language is line-oriented.
280 There are only two kinds of lines, control lines and text lines.
282 The control lines start with a control character, by default a period
283 .dquoted_char .
284 or a single quote
285 .dquoted_char ' ;
286 all other lines are text lines.
289 .B Control lines
290 represent commands, optionally with arguments.
292 They have the following syntax.
294 The leading control character can be followed by a command name;
295 arguments, if any, are separated by spaces (but not tab characters)
296 from the command name and among themselves, for example,
300 .Text .command_name arg1 arg2
304 For indentation, any number of space or tab characters can be inserted
305 between the leading control character and the command name, but the
306 control character must be on the first position of the line.
309 .B Text lines
310 represent the parts that is printed.
311 They can be modified by escape sequences, which are recognized by a
312 leading backslash
313 .squoted_char \[rs] .
314 These are in-line or even in-word formatting elements or functions.
316 Some of these take arguments separated by single quotes
317 .dquoted_char ' ,
318 others are regulated by a length encoding introduced by an open
319 parenthesis
320 .squoted_char (
321 or enclosed in brackets
322 .squoted_char [
324 .squoted_char ] .
327 The roff language provides flexible instruments for writing language
328 extension, such as macros.
330 When interpreting macro definitions, the roff system enters a special
331 operating mode, called the
332 .BR "copy mode" .
335 The copy mode behavior can be quite tricky, but there are some rules
336 that ensure a safe usage.
338 .IP 1.
339 Printable backslashes must be denoted as
340 .esc e .
341 To be more precise,
342 .esc e
343 represents the current escape character.
345 To get a backslash glyph, use
346 .esc (rs
348 .esc [rs] .
349 .IP 2.
350 Double all backslashes.
351 .IP 3.
352 Begin all text lines with the special non-spacing character
353 .esc & .
356 This does not produce the most efficient code, but it should work as a
357 first measure.
359 Predefined macro packages may give a better user experience: see
360 .BR @L_ROFF@-tmac (@MAN5EXT@).
363 Reading roff source files is easier, just reduce all double backslashes
364 to a single one in all macro definitions.
368 .SH "ROFF ELEMENTS"
371 The roff language elements add formatting information to a text file.
373 The fundamental elements are predefined commands and variables that
374 make roff a full-blown programming language.
377 There are two kinds of roff commands, possibly with arguments.
378 .B Requests
379 are written on a line of their own starting with a dot
380 .squoted_char .
381 or a
382 .dquoted_char ' ,
383 whereas
384 .B Escape sequences
385 are in-line functions and in-word formatting elements starting with a
386 backslash
387 .squoted_char \[rs] .
390 The user can define her own formatting commands using the
391 .request de
392 request.
394 These commands are called
395 .BR macros ,
396 but they are used exactly like requests.
398 Macro packages are pre-defined sets of macros written in the roff
399 language.
401 A user's possibilities to create escape sequences herself is very
402 limited, only special characters can be mapped.
405 The roff language provides several kinds of variables with
406 different interfaces.
408 There are pre-defined variables, but the user can define her own
409 variables as well.
412 .B String
413 variables store character sequences.
415 They are set with the
416 .request ds
417 request and retrieved by the
418 .esc *
419 escape sequences.
421 Strings can have variables.
424 .B Register
425 variables can store numerical values, numbers with a scale unit, and
426 occasionally string-like objects.
428 They are set with the
429 .request nr
430 request and retrieved by the
431 .esc n
432 escape sequences.
435 .B Environments
436 allow the user to temporarily store global formatting parameters like
437 line length, font size, etc.\& for later reuse.
439 This is done by the
440 .request ev
441 request.
444 .B Fonts
445 are identified either by a name or by an internal number.
447 The current font is chosen by the
448 .request ft
449 request or by the
450 .esc f
451 escape sequences.
453 Each device has special fonts, but the following fonts are available
454 for all devices.
455 .B R
456 is the standard font Roman.
457 .B B
458 is its
459 .B bold
460 counterpart.
463 .I italic
464 font is called
465 .B I
466 and is available everywhere, but on text devices it is displayed as an
467 underlined Roman font.
469 For the graphical output devices, there exist constant-width pendants
470 of these fonts,
471 .BR CR ,
472 .BR CI ,
474 .BR CB .
475 On text devices, all glyphs have a constant width anyway.
478 .B Glyphs
479 are visual representation forms of
480 .BR characters .
481 In roff, the distinction between those two elements is not always
482 obvious (and a full discussion is beyond the scope of this man page).
484 A first approximation is that glyphs have a specific size and
485 colour and are taken from a specific font; they can't be modified any
486 more \[en] characters are the input, and glyphs are the output.
488 As soon as an output line has been generated, it no longer contains
489 characters but glyphs.
491 In this man page, we use either `glyph' or `character', whatever is
492 more appropriate.
495 Moreover, there are some advanced roff elements.
498 .B diversion
499 stores (formatted) information into a macro for later usage.
502 .B trap
503 is a positional condition like a certain number of lines from page top
504 or in a diversion or in the input.
506 Some action can be prescribed to be run automatically when the
507 condition is met.
510 .SH "CONTROL CHARACTERS"
513 There is a small set of characters that have a special controlling
514 task in certain conditions.
517 \&\f[CB].\f[]
518 A dot is only special at the beginning of a line or after the
519 condition in the requests
520 .request if ,
521 .request ie ,
522 .request el ,
524 .request while .
525 There it is the control character that introduces a request (or macro).
527 The special behavior can be delayed by using the
528 .esc .
529 escape.
531 By using the
532 .request cc
533 request, the control character can be set to a different character,
534 making the dot
535 .squoted_char .
536 a non-special character.
537 .IP ""
538 In all other positions, it just means a dot character.
540 In text paragraphs, it is advantageous to start each sentence at a
541 line of its own.
544 \&\f[CB]'\f[]
545 The single quote has two controlling tasks.
547 At the beginning of a line and in the conditional requests it is the
548 non-breaking control character.
550 That means that it introduces a request like the dot, but with the
551 additional property that this request doesn't cause a linebreak.
553 By using the
554 .request c2
555 request, the non-break control character can be set to a different
556 character.
558 .IP ""
559 As a second task, it is the most commonly used argument separator in
560 some functional escape sequences (but any pair of characters not part
561 of the argument do work).
563 In all other positions, it denotes the single quote or apostrophe
564 character.
566 Roff provides a printable representation with the
567 .esc (cq
568 escape sequence.
571 \&\f[CB]\[dq]\f[]
572 The double quote is used to enclose arguments in macros (but not in
573 requests and strings).
575 In the
576 .request ds
578 .request as
579 requests, a leading double quote in the argument is stripped off,
580 making everything else afterwards the string to be defined (enabling
581 leading whitespace).
583 The escaped double quote
584 .esc \[dq]
585 introduces a comment.
587 Otherwise, it is not special.
589 Roff provides a printable representation with the
590 .esc (dq
591 escape sequence.
594 \&\f[CB]\[rs]\f[]
595 The backslash usually introduces an escape sequence (this can be
596 changed with the
597 .request ec
598 request).
600 A printed version of the escape character is the
601 .esc e
602 escape; a backslash glyph can be obtained by
603 .esc (rs .
605 \&\f[CB](\f[]
606 The open parenthesis is only special in escape sequences when
607 introducing an escape name or argument consisting of exactly two
608 characters.
610 In @T_ROFF@, this behavior can be replaced by the \f[CB][]\f[] construct.
612 \&\f[CB][\f[]
613 The opening bracket is only special in roff escape sequences; there
614 it is used to introduce a long escape name or long escape argument.
616 Otherwise, it is non-special, e.g.\& in macro calls.
618 \&\f[CB]]\f[]
619 The closing bracket is only special in roff escape sequences; there
620 it terminates a long escape name or long escape argument.
622 Otherwise, it is non-special.
624 \f[CI]space\f[]
625 Space characters are only functional characters.
627 They separate the arguments in requests, macros, and strings, and the words
628 in text lines.
630 They are subject to roff's horizontal spacing calculations.
632 To get a defined space width, escape sequences like
633 .squoted_char "\[rs]\ "
634 (this is the escape character followed by a space),
635 .esc | ,
636 .esc ^ ,
638 .esc h
639 should be used.
641 .IP \f[CI]newline\f[]
642 In text paragraphs, newlines mostly behave like space characters.
644 Continuation lines can be specified by an escaped newline, i.e., by
645 specifying a backslash
646 .squoted_char \[rs]
647 as the last character of a line.
648 .IP \f[CI]tab\f[]
649 If a tab character occurs during text the interpreter makes a
650 horizontal jump to the next pre-defined tab position.
652 There is a sophisticated interface for handling tab positions.
656 .SH "NUMERICAL EXPRESSIONS"
660 .B numerical value
661 is a signed or unsigned integer or float with or without an appended
662 scaling indicator.
665 .B scaling indicator
666 is a one-character abbreviation for a unit of measurement.
668 A number followed by a scaling indicator signifies a size value.
670 By default, numerical values do not have a scaling indicator, i.e., they
671 are normal numbers.
675 .I roff
676 language defines the following scaling indicators.
680 .PD 0
683 .TPx
684 .B c
685 Centimeter
687 .TPx
688 .B i
689 Inch
691 .TPx
692 .B P
693 Pica\ \[eq]\ 1/6\ inch
695 .TPx
696 .B p
697 Point\ \[eq]\ 1/72\ inch
699 .TPx
700 .B m
701 Em\ \[eq]\ \f[R]the font size in points (approx.\& width of letter
702 `\f[CR]m\f[R]')
704 .TPx
705 .B M
706 100\^th \f[R]of an \f[CR]Em
708 .TPx
709 .B n
710 En\ \[eq]\ Em/2
712 .TPx
713 .B u
714 Basic unit for actual output device
716 .TPx
717 .B v
718 Vertical line space in basic units
719 scaled point\ \[eq]\ 1/\f[CI]sizescale\f[R] of a point (defined in
720 font \f[I]DESC\f[] file)
722 .TPx
723 .B f
724 Scale by 65536.
729 .B Numerical expressions
730 are combinations of the numerical values defined above with the
731 following arithmetical operators already defined in classical troff.
734 .PD 0
737 .TPx
738 .B +
739 Addition
741 .TPx
742 .B \-
743 Subtraction
745 .TPx
746 .B *
747 Multiplication
749 .TPx
750 .B /
751 Division
753 .TPx
754 .B %
755 Modulo
757 .TPx
758 .B =
759 Equals
761 .TPx
762 .B ==
763 Equals
765 .TPx
766 .B <
767 Less than
769 .TPx
770 .B >
771 Greater than
773 .TPx
774 .B <=
775 Less or equal
777 .TPx
778 .B >=
779 Greater or equal
781 .TPx
782 .B &
783 Logical and
785 .TPx
786 .B :
787 Logical or
789 .TPx
790 .B !
791 Logical not
793 .TPx
794 .B (
795 Grouping of expressions
797 .TPx
798 .B )
799 Close current grouping
805 Moreover,
806 .I @T_ROFF@
807 adds the following operators for numerical expressions:
810 .PD 0
813 .TPx
814 \f[I]e1\f[CB]>?\f[I]e2\f[R]
815 The maximum of
816 .I e1
818 .IR e2 .
820 .TPx
821 \f[I]e1\f[CB]<?\f[I]e2\f[R]
822 The minimum of
823 .I e1
825 .IR e2 .
827 .TPx
828 \f[CB](\f[I]c\f[CB];\f[I]e\f[CB])\f[R]
829 Evaluate
830 .I e
831 using
832 .I c
833 as the default scaling indicator.
839 .SH CONDITIONS
842 .B Conditions
843 occur in tests raised by the
844 .request if ,
845 .request ie ,
846 and the
847 .request while
848 requests.
850 The following table characterizes the different types of conditions.
853 .PD 0
856 .TPx
857 .I N
858 A numerical expression
859 .I N
860 yields true if its value is greater than\~0.
862 .TPx
863 .BI ! N
864 True if the value of
865 .I I
866 is\~0.
868 .TPx
869 .BI ' s1 ' s2 '
870 True if string\~\c
871 .I s1
872 is identical to string\~\c
873 .IR s2 .
875 .TPx
876 .BI !' s1 ' s2 '
877 True if string\~\c
878 .I s1
879 is not identical to string\~\c
880 .IR s2 .
882 .TPx
883 .BI c ch
884 True if there is a glyph\~\c
885 .I ch
886 available.
888 .TPx
889 .BI d name
890 True if there is a string, macro, diversion, or request called
891 .IR name .
893 .TPx
894 .B e
895 Current page number is even.
897 .TPx
898 .B o
899 Current page number is odd.
901 .TPx
902 .BI m name
903 True if there is a color called
904 .IR name .
906 .TPx
907 .B n
908 Formatter is
909 .BR nroff .
911 .TPx
912 .BI r reg
913 True if there is a register named
914 .IR reg .
916 .TPx
917 .B t
918 Formatter is
919 .BR troff .
921 .TPx
922 .BI F font
923 True if there exists a font named
924 .IR font .
926 .TPx
927 .BI S style
928 True if a style named
929 .I style
930 has been registered.
937 .SH REQUESTS
940 This section provides a short reference for the predefined requests.
942 In @T_ROFF@, request, macro, and string names can be arbitrarily long.
944 No bracketing or marking of long names is needed.
947 Most requests take one or more arguments.
949 The arguments are separated by space characters (no tabs!); there is
950 no inherent limit for their length or number.
953 Some requests have optional arguments with a different behaviour.
955 Not all of these details are outlined here.
957 Refer to
958 .BR @L_ROFF@-diff (@MAN7EXT@)
959 for all details.
962 In the following request specifications, most argument names were
963 chosen to be descriptive.
965 Only the following denotations need clarification.
968 .PD 0
971 .TPx
972 .I c
973 denotes a single character.
975 .TPx
976 .I font
977 a font either specified as a font name or a font number.
979 .TPx
980 .I anything
981 all characters up to the end of the line or within
982 .esc {
984 .esc } .
986 .TPx
987 .I n
988 is a numerical expression that evaluates to an integer value.
990 .TPx
991 .I N
992 is an arbitrary numerical expression, signed or unsigned.
994 .TPx
995 .I \[+-]N
996 has three meanings depending on its sign, described below.
1002 If an expression defined as
1003 .I \[+-]N
1004 starts with a
1005 .squoted_char +
1006 sign the resulting value of the expression is added to an already
1007 existing value inherent to the related request, e.g.\& adding to a number
1008 register.
1010 If the expression starts with a
1011 .squoted_char -
1012 the value of the expression is subtracted from the request value.
1015 Without a sign,
1016 .I N
1017 replaces the existing value directly.
1019 To assign a negative number either prepend\~0 or enclose the negative
1020 number in parentheses.
1024 .SS "Request Short Reference"
1027 .PD 0
1029 .TPx
1030 .REQ .
1031 Empty line, ignored.
1033 Useful for structuring documents.
1035 .TPx
1036 .REQ .\[rs]\[dq] "anything"
1037 Complete line is a comment.
1039 .TPx
1040 .REQ .ab "string
1041 Print
1042 .I string
1043 on standard error, exit program.
1045 .TPx
1046 .REQ .ad
1047 Begin line adjustment for output lines in current adjust mode.
1049 .TPx
1050 .REQ .ad "c"
1051 Start line adjustment in mode
1052 .I c
1053 (\f[CI]c\f[]\f[CR]\|\^\[eq]\|l,r,b,n\f[]).
1055 .TPx
1056 .REQ .af "register c"
1057 Assign format
1058 .I c
1060 .I register
1061 (\f[CI]c\f[]\f[CR]\|\^\[eq]\|l,i,I,a,A\f[]).
1063 .TPx
1064 .REQ .aln "alias register"
1065 Create alias name for
1066 .IR register .
1068 .TPx
1069 .REQ .als "alias object"
1070 Create alias name for request, string, macro, or diversion
1071 .IR object .
1073 .TPx
1074 .REQ .am "macro"
1075 Append to
1076 .I macro
1077 until
1078 .B ..\&
1079 is encountered.
1081 .TPx
1082 .REQ .am "macro end"
1083 Append to
1084 .I macro
1085 until
1086 .BI . end
1087 is called.
1089 .TPx
1090 .REQ .am1 "macro"
1091 Same as
1092 .request .am
1093 but with compatibility mode switched off during macro expansion.
1095 .TPx
1096 .REQ .am1 "macro end"
1097 Same as
1098 .request .am
1099 but with compatibility mode switched off during macro expansion.
1101 .TPx
1102 .REQ .ami "macro"
1103 Append to a macro whose name is contained in the string register
1104 .I macro
1105 until
1106 .B ..\&
1107 is encountered.
1109 .TPx
1110 .REQ .ami "macro end"
1111 Append to a macro indirectly.
1112 .I macro
1114 .I end
1115 are string registers whose contents are interpolated for the macro name
1116 and the end macro, respectively.
1118 .TPx
1119 .REQ .ami1 "macro"
1120 Same as
1121 .request .ami
1122 but with compatibility mode switched off during macro expansion.
1124 .TPx
1125 .REQ .ami1 "macro end"
1126 Same as
1127 .request .ami
1128 but with compatibility mode switched off during macro expansion.
1130 .TPx
1131 .REQ .as "stringvar anything"
1132 Append
1133 .I anything
1135 .IR stringvar .
1137 .TPx
1138 .REQ .as1 "stringvar anything"
1139 Same as
1140 .request .as
1141 but with compatibility mode switched off during string expansion.
1143 .TPx
1144 .REQ .asciify "diversion"
1145 Unformat ASCII characters, spaces, and some escape sequences in
1146 .IR diversion .
1148 .TPx
1149 .REQ .backtrace
1150 Print a backtrace of the input on stderr.
1152 .TPx
1153 .REQ .bd "font N"
1154 Embolden
1155 .I font
1157 .IR N \-1
1158 units.
1160 .TPx
1161 .REQ .bd "S font N"
1162 Embolden Special Font
1163 .I S
1164 when current font is
1165 .IR font .
1167 .TPx
1168 .REQ .blm
1169 Unset the blank line macro.
1171 .TPx
1172 .REQ .blm "macro"
1173 Set the blank line macro to
1174 .IR macro .
1176 .TPx
1177 .REQ .box
1178 End current diversion.
1180 .TPx
1181 .REQ .box "macro"
1182 Divert to
1183 .IR macro ,
1184 omitting a partially filled line.
1186 .TPx
1187 .REQ .boxa
1188 End current diversion.
1190 .TPx
1191 .REQ .boxa "macro"
1192 Divert and append to
1193 .IR macro ,
1194 omitting a partially filled line.
1196 .TPx
1197 .REQ .bp
1198 Eject current page and begin new page.
1200 .TPx
1201 .REQ .bp "\[+-]N"
1202 Eject current page; next page number
1203 .IR \[+-]N .
1205 .TPx
1206 .REQ .br
1207 Line break.
1209 .TPx
1210 .REQ .brp
1211 Break and spread output line.
1212 Same as
1213 .esc p .
1215 .TPx
1216 .REQ .break
1217 Break out of a while loop.
1219 .TPx
1220 .REQ .c2
1221 Reset no-break control character to
1222 .dquoted_char ' .
1224 .TPx
1225 .REQ .c2 "c"
1226 Set no-break control character to
1227 .IR c .
1229 .TPx
1230 .REQ .cc
1231 Reset control character to
1232 .squoted_char . .
1234 .TPx
1235 .REQ .cc "c"
1236 Set control character to
1237 .IR c .
1239 .TPx
1240 .REQ .ce
1241 Center the next input line.
1243 .TPx
1244 .REQ .ce "N"
1245 Center following
1246 .I N
1247 input lines.
1249 .TPx
1250 .REQ .cf "filename"
1251 Copy contents of file
1252 .I filename
1253 unprocessed to stdout or to the diversion.
1255 .TPx
1256 .REQ .cflags "mode c1 c2 .\|.\|.\&"
1257 Treat characters
1258 .IR c1 ,
1259 .IR c2 ,
1260 .I .\|.\|.\&
1261 according to
1262 .I mode
1263 number.
1265 .TPx
1266 .REQ .ch "trap N"
1267 Change
1268 .I trap
1269 location
1271 .IR N .
1273 .TPx
1274 .REQ .char "c anything"
1275 Define entity
1276 .I c
1277 as string
1278 .IR anything .
1280 .TPx
1281 .REQ .chop "object"
1282 Chop the last character off macro, string, or diversion
1283 .IR object .
1285 .TPx
1286 .REQ .close "stream"
1287 Close the
1288 .IR stream .
1290 .TPx
1291 .REQ .color
1292 Enable colors.
1294 .TPx
1295 .REQ .color "N"
1297 .I N
1298 is zero disable colors, otherwise enable them.
1300 .TPx
1301 .REQ .composite "from to"
1302 Map glyph name
1303 .I from
1304 to glyph name
1305 .I to
1306 while constructing a composite glyph name.
1308 .TPx
1309 .REQ .continue
1310 Finish the current iteration of a while loop.
1312 .TPx
1313 .REQ .cp
1314 Enable compatibility mode.
1316 .TPx
1317 .REQ .cp "N"
1319 .I N
1320 is zero disable compatibility mode, otherwise enable it.
1322 .TPx
1323 .REQ .cs "font N M"
1324 Set constant character width mode for
1325 .I font
1327 .IR N /36
1328 ems with em
1329 .IR M .
1331 .TPx
1332 .REQ .cu "N"
1333 Continuous underline in nroff, like
1334 .request .ul
1335 in troff.
1337 .TPx
1338 .REQ .da
1339 End current diversion.
1341 .TPx
1342 .REQ .da "macro"
1343 Divert and append to
1344 .IR macro .
1346 .TPx
1347 .REQ .de "macro"
1348 Define or redefine
1349 .I macro
1350 until
1351 .B ..\&
1352 is encountered.
1354 .TPx
1355 .REQ .de "macro end"
1356 Define or redefine
1357 .I macro
1358 until
1359 .BI . end
1360 is called.
1362 .TPx
1363 .REQ .de1 "macro"
1364 Same as
1365 .request .de
1366 but with compatibility mode switched off during macro expansion.
1368 .TPx
1369 .REQ .de1 "macro end"
1370 Same as
1371 .request .de
1372 but with compatibility mode switched off during macro expansion.
1374 .TPx
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 .TPx
1399 .REQ .dei "macro"
1400 Define or redefine a macro whose name is contained in the string register
1401 .I macro
1402 until
1403 .B ..\&
1404 is encountered.
1406 .TPx
1407 .REQ .dei "macro end"
1408 Define or redefine a macro indirectly.
1409 .I macro
1411 .I end
1412 are string registers whose contents are interpolated for the macro name
1413 and the end macro, respectively.
1415 .TPx
1416 .REQ .dei1 "macro"
1417 Same as
1418 .request .dei
1419 but with compatibility mode switched off during macro expansion.
1421 .TPx
1422 .REQ .dei1 "macro end"
1423 Same as
1424 .request .dei
1425 but with compatibility mode switched off during macro expansion.
1427 .TPx
1428 .REQ .device "anything"
1429 Write
1430 .I anything
1431 to the intermediate output as a device control function.
1433 .TPx
1434 .REQ .devicem "name"
1435 Write contents of macro or string
1436 .I name
1437 uninterpreted to the intermediate output as a device control function.
1439 .TPx
1440 .REQ .di
1441 End current diversion.
1443 .TPx
1444 .REQ .di "macro"
1445 Divert to
1446 .IR macro .
1448 .TPx
1449 .REQ .do "name"
1450 Interpret
1451 .BI . name
1452 with compatibility mode disabled.
1454 .TPx
1455 .REQ .ds "stringvar anything"
1457 .I stringvar
1459 .IR anything .
1461 .TPx
1462 .REQ .ds1 "stringvar anything"
1463 Same as
1464 .request .ds
1465 but with compatibility mode switched off during string expansion.
1467 .TPx
1468 .REQ .dt "N trap"
1469 Set diversion trap to position
1470 .I N
1471 (default scaling indicator\~\c
1472 .scaleindicator v ).
1474 .TPx
1475 .REQ .ec
1476 Reset escape character to
1477 .squoted_char \[rs] .
1479 .TPx
1480 .REQ .ec "c"
1481 Set escape character to
1482 .IR c .
1484 .TPx
1485 .REQ .ecr
1486 Restore escape character saved with
1487 .request .ecs .
1489 .TPx
1490 .REQ .ecs
1491 Save current escape character.
1493 .TPx
1494 .REQ .el "anything"
1495 Else part for if-else (\c
1496 .request ie )
1497 request.
1499 .TPx
1500 .REQ .em "macro"
1502 .I macro
1503 is run after the end of input.
1505 .TPx
1506 .REQ .eo
1507 Turn off escape character mechanism.
1509 .TPx
1510 .REQ .ev
1511 Switch to previous environment and pop it off the stack.
1513 .TPx
1514 .REQ .ev "env"
1515 Push down environment number or name
1516 .I env
1517 to the stack and switch to it.
1519 .TPx
1520 .REQ .evc "env"
1521 Copy the contents of environment
1522 .I env
1523 to the current environment.
1524 No pushing or popping.
1526 .TPx
1527 .REQ .ex
1528 Exit from roff processing.
1530 .TPx
1531 .REQ .fam
1532 Return to previous font family.
1534 .TPx
1535 .REQ .fam "name"
1536 Set the current font family to
1537 .IR name .
1539 .TPx
1540 .REQ .fc
1541 Disable field mechanism.
1543 .TPx
1544 .REQ .fc "a"
1545 Set field delimiter to\~\c
1546 .I a
1547 and pad glyph to space.
1549 .TPx
1550 .REQ .fc "a b"
1551 Set field delimiter to\~\c
1552 .I a
1553 and pad glyph to\~\c
1554 .IR b .
1556 .TPx
1557 .REQ .fchar "c anything"
1558 Define fallback character (or glyph)
1559 .I c
1560 as string
1561 .IR anything .
1563 .TPx
1564 .REQ .fcolor
1565 Set fill color to previous fill color.
1567 .TPx
1568 .REQ .fcolor "c"
1569 Set fill color to
1570 .IR c .
1572 .TPx
1573 .REQ .fi
1574 Fill output lines.
1576 .TPx
1577 .REQ .fl
1578 Flush output buffer.
1580 .TPx
1581 .REQ .fp "n font"
1582 Mount
1583 .I font
1584 on position
1585 .IR n .
1587 .TPx
1588 .REQ .fp "n internal external"
1589 Mount font with long
1590 .I external
1591 name to short
1592 .I internal
1593 name on position
1594 .IR n .
1596 .TPx
1597 .REQ .fschar "f c anything"
1598 Define fallback character (or glyph)
1599 .I c
1600 for font
1601 .I f
1602 as string
1603 .IR anything .
1605 .TPx
1606 .REQ .fspecial "font"
1607 Reset list of special fonts for
1608 .I font
1609 to be empty.
1611 .TPx
1612 .REQ .fspecial "font s1 s2 .\|.\|.\&"
1613 When the current font is
1614 .IR font ,
1615 then the fonts
1616 .IR s1 ,
1617 .IR s2 ,
1618 .I .\|.\|.\&
1619 are special.
1621 .TPx
1622 .REQ .ft
1623 Return to previous font.
1624 Same as
1625 .request \[rs]f[]
1627 .request \[rs]fP .
1629 .TPx
1630 .REQ .ft "font"
1631 Change to font name or number
1632 .IR font ;
1633 same as
1634 .esc[] f font
1635 escape sequence.
1637 .TPx
1638 .REQ .ftr "font1 font2"
1639 Translate
1640 .I font1
1642 .IR font2 .
1644 .TPx
1645 .REQ .fzoom "font"
1646 Don't magnify
1647 .IR font .
1649 .TPx
1650 .REQ .fzoom "font zoom"
1651 Set zoom factor for
1652 .I font
1653 (in multiples of 1/1000th).
1655 .TPx
1656 .REQ .gcolor
1657 Set glyph color to previous glyph color.
1659 .TPx
1660 .REQ .gcolor "c"
1661 Set glyph color to
1662 .IR c .
1664 .TPx
1665 .REQ .hc
1666 Remove additional hyphenation indicator character.
1668 .TPx
1669 .REQ .hc "c"
1670 Set up additional hyphenation indicator character\~\c
1671 .IR c .
1673 .TPx
1674 .REQ .hcode "c1 code1 c2 code2 .\|.\|.\&"
1675 Set the hyphenation code of character
1676 .I c1
1678 .IR code1 ,
1679 that of
1680 .I c2
1682 .IR code2 ,
1683 etc.
1685 .TPx
1686 .REQ .hla "lang"
1687 Set the current hyphenation language to
1688 .IR lang .
1690 .TPx
1691 .REQ .hlm "n"
1692 Set the maximum number of consecutive hyphenated lines to
1693 .IR n .
1695 .TPx
1696 .REQ .hpf "file"
1697 Read hyphenation patterns from
1698 .IR file .
1700 .TPx
1701 .REQ .hpfa "file"
1702 Append hyphenation patterns from
1703 .IR file .
1705 .TPx
1706 .REQ .hpfcode "a b c d .\|.\|.\&"
1707 Set input mapping for
1708 .request .hpf .
1710 .TPx
1711 .REQ .hw "words"
1712 List of
1713 .I words
1714 with exceptional hyphenation.
1716 .TPx
1717 .REQ .hy "N"
1718 Switch to hyphenation mode
1719 .IR N .
1721 .TPx
1722 .REQ .hym "n"
1723 Set the hyphenation margin to
1724 .I n
1725 (default scaling indicator\~\c
1726 .scaleindicator m ).
1728 .TPx
1729 .REQ .hys "n"
1730 Set the hyphenation space to
1731 .IR n .
1733 .TPx
1734 .REQ .ie "cond anything"
1736 .I cond
1737 then
1738 .I anything
1739 else goto
1740 .request .el .
1742 .TPx
1743 .REQ .if "cond anything"
1745 .I cond
1746 then
1747 .IR anything ;
1748 otherwise do nothing.
1750 .TPx
1751 .REQ .ig
1752 Ignore text until
1753 .B ..\&
1754 is encountered.
1756 .TPx
1757 .REQ .ig "end"
1758 Ignore text until
1759 .BI . end
1760 is called.
1762 .TPx
1763 .REQ .in
1764 Change to previous indentation value.
1766 .TPx
1767 .REQ .in "\[+-]N"
1768 Change indentation according to
1769 .I \[+-]N
1770 (default scaling indicator\~\c
1771 .scaleindicator m ).
1773 .TPx
1774 .REQ .it "N trap"
1775 Set an input-line count trap for the next
1776 .I N
1777 lines.
1779 .TPx
1780 .REQ .itc "N trap"
1781 Same as
1782 .request .it
1783 but count lines interrupted with
1784 .esc c
1785 as one line.
1787 .TPx
1788 .REQ .kern
1789 Enable pairwise kerning.
1791 .TPx
1792 .REQ .kern "n"
1794 .I n
1795 is zero, disable pairwise kerning, otherwise enable it.
1797 .TPx
1798 .REQ .lc
1799 Remove leader repetition glyph.
1801 .TPx
1802 .REQ .lc "c"
1803 Set leader repetition glyph to\~\c
1804 .IR c .
1806 .TPx
1807 .REQ .length "register anything"
1808 Write the length of the string
1809 .I anything
1811 .IR register .
1813 .TPx
1814 .REQ .linetabs
1815 Enable line-tabs mode (i.e., calculate tab positions relative to output
1816 line).
1818 .TPx
1819 .REQ .linetabs "n"
1821 .I n
1822 is zero, disable line-tabs mode, otherwise enable it.
1824 .TPx
1825 .REQ .lf "N"
1826 Set input line number to
1827 .IR N .
1829 .TPx
1830 .REQ .lf "N file"
1831 Set input line number to
1832 .I N
1833 and filename to
1834 .IR file .
1836 .TPx
1837 .REQ .lg "N"
1838 Ligature mode on if
1839 .IR N >0.
1841 .TPx
1842 .REQ .ll
1843 Change to previous line length.
1845 .TPx
1846 .REQ .ll "\[+-]N"
1847 Set line length according to
1848 .I \[+-]N
1849 (default length
1850 .scalednumber 6.5 i ,
1851 default scaling indicator\~\c
1852 .scaleindicator m ).
1854 .TPx
1855 .REQ .ls
1856 Change to the previous value of additional intra-line skip.
1858 .TPx
1859 .REQ .ls "N"
1860 Set additional intra-line skip value to
1861 .IR N ,
1862 i.e.,
1863 .IR N \-1
1864 blank lines are inserted after each text output line.
1866 .TPx
1867 .REQ .lt "\[+-]N"
1868 Length of title (default scaling indicator\~\c
1869 .scaleindicator m ).
1871 .TPx
1872 .REQ .mc
1873 Margin glyph off.
1875 .TPx
1876 .REQ .mc "c"
1877 Print glyph\~\c
1878 .I c
1879 after each text line at actual distance from right margin.
1881 .TPx
1882 .REQ .mc "c N"
1883 Set margin glyph to\~\c
1884 .I c
1885 and distance to\~\c
1886 .I N
1887 from right margin (default scaling indicator\~\c
1888 .scaleindicator m ).
1890 .TPx
1891 .REQ .mk "register"
1892 Mark current vertical position in
1893 .IR register .
1895 .TPx
1896 .REQ .mso "file"
1897 The same as
1898 .request .so
1899 except that
1900 .I file
1901 is searched in the tmac directories.
1903 .TPx
1904 .REQ .na
1905 No output-line adjusting.
1907 .TPx
1908 .REQ .ne
1909 Need a one-line vertical space.
1911 .TPx
1912 .REQ .ne "N"
1913 Need
1914 .I N
1915 vertical space (default scaling indicator\~\c
1916 .scaleindicator v ).
1918 .TPx
1919 .REQ .nf
1920 No filling or adjusting of output-lines.
1922 .TPx
1923 .REQ .nh
1924 No hyphenation.
1926 .TPx
1927 .REQ .nm
1928 Number mode off.
1930 .TPx
1931 .REQ .nm "\[+-]N \fR[\fPM \fR[\fPS \fR[\fPI\fR]]]\fP"
1932 In line number mode, set number, multiple, spacing, and indentation.
1934 .TPx
1935 .REQ .nn
1936 Do not number next line.
1938 .TPx
1939 .REQ .nn "N"
1940 Do not number next
1941 .I N
1942 lines.
1944 .TPx
1945 .REQ .nop "anything"
1946 Always process
1947 .IR anything .
1949 .TPx
1950 .REQ .nr "register \[+-]N \fR[\fPM\fR]\fP"
1951 Define or modify
1952 .I register
1953 using
1954 .I \[+-]N
1955 with auto-increment
1956 .IR M .
1958 .TPx
1959 .REQ .nroff
1960 Make the built-in conditions
1961 .B n
1962 true and
1963 .B t
1964 false.
1966 .TPx
1967 .REQ .ns
1968 Turn on no-space mode.
1970 .TPx
1971 .REQ .nx
1972 Immediately jump to end of current file.
1974 .TPx
1975 .REQ .nx "filename"
1976 Immediately continue processing with file
1977 .IR file .
1979 .TPx
1980 .REQ .open "stream filename"
1981 Open
1982 .I filename
1983 for writing and associate the stream named
1984 .I stream
1985 with it.
1987 .TPx
1988 .REQ .opena "stream filename"
1989 Like
1990 .request .open
1991 but append to it.
1993 .TPx
1994 .REQ .os
1995 Output vertical distance that was saved by the
1996 .request sv
1997 request.
1999 .TPx
2000 .REQ .output "string"
2001 Emit
2002 .I string
2003 directly to intermediate output, allowing leading whitespace if
2004 .I string
2005 starts with
2006 \&\f[CB]\[dq]\f[]
2007 (which is stripped off).
2009 .TPx
2010 .REQ .pc
2011 Reset page number character to\~\c
2012 .squoted_char % .
2014 .TPx
2015 .REQ .pc "c"
2016 Page number character.
2018 .TPx
2019 .REQ .pev
2020 Print the current environment and each defined environment
2021 state to stderr.
2023 .TPx
2024 .REQ .pi "program"
2025 Pipe output to
2026 .I program
2027 (nroff only).
2029 .TPx
2030 .REQ .pl
2031 Set page length to default
2032 .scalednumber 11 i .
2033 The current page length is stored in
2034 .register .p .
2036 .TPx
2037 .REQ .pl "\[+-]N"
2038 Change page length to
2039 .I \[+-]N
2040 (default scaling indicator\~\c
2041 .scaleindicator v ).
2043 .TPx
2044 .REQ .pm
2045 Print macro names and sizes (number of blocks of 128 bytes).
2047 .TPx
2048 .REQ .pm "t"
2049 Print only total of sizes of macros (number of 128 bytes blocks).
2051 .TPx
2052 .REQ .pn "\[+-]N"
2053 Next page number
2054 .IR N .
2056 .TPx
2057 .REQ .pnr
2058 Print the names and contents of all currently defined number registers
2059 on stderr.
2061 .TPx
2062 .REQ .po
2063 Change to previous page offset.
2065 The current page offset is available in
2066 .register .o .
2068 .TPx
2069 .REQ .po "\[+-]N"
2070 Page offset
2071 .IR N .
2073 .TPx
2074 .REQ .ps
2075 Return to previous point size.
2076 .TPx
2077 .REQ .ps "\[+-]N"
2078 Point size; same as
2079 .esc[] s \[+-]N .
2081 .TPx
2082 .REQ .psbb "filename"
2083 Get the bounding box of a PostScript image
2084 .IR filename .
2086 .TPx
2087 .REQ .pso "command"
2088 This behaves like the
2089 .request so
2090 request except that input comes from the standard output of
2091 .IR command .
2093 .TPx
2094 .REQ .ptr
2095 Print the names and positions of all traps (not including input line
2096 traps and diversion traps) on stderr.
2098 .TPx
2099 .REQ .pvs
2100 Change to previous post-vertical line spacing.
2102 .TPx
2103 .REQ .pvs "\[+-]N"
2104 Change post-vertical line spacing according to
2105 .I \[+-]N
2106 (default scaling indicator\~\c
2107 .scaleindicator p ).
2109 .TPx
2110 .REQ .rchar "c1 c2 .\|.\|.\&"
2111 Remove the definitions of entities
2112 .IR c1 ,
2113 .IR c2 ,
2114 .I .\|.\|.\&
2116 .TPx
2117 .REQ .rd "prompt"
2118 Read insertion.
2120 .TPx
2121 .REQ .return
2122 Return from a macro.
2124 .TPx
2125 .REQ .return "anything"
2126 Return twice, namely from the macro at the current level and from the macro
2127 one level higher.
2129 .TPx
2130 .REQ .rfschar "f c1 c2 .\|.\|.\&"
2131 Remove the definitions of entities
2132 .IR c1 ,
2133 .IR c2 ,
2134 .I .\|.\|.\&
2135 for font
2136 .IR f .
2138 .TPx
2139 .REQ .rj "n"
2140 Right justify the next
2141 .I n
2142 input lines.
2144 .TPx
2145 .REQ .rm "name"
2146 Remove request, macro, or string
2147 .IR name .
2149 .TPx
2150 .REQ .rn "old new"
2151 Rename request, macro, or string
2152 .I old
2154 .IR new .
2156 .TPx
2157 .REQ .rnn "reg1 reg2"
2158 Rename register
2159 .I reg1
2161 .IR reg2 .
2163 .TPx
2164 .REQ .rr "register"
2165 Remove
2166 .IR register .
2168 .TPx
2169 .REQ .rs
2170 Restore spacing; turn no-space mode off.
2172 .TPx
2173 .REQ .rt "\[+-]N"
2174 Return
2175 .I (upward only)
2176 to marked vertical place (default scaling indicator\~\c
2177 .scaleindicator v ).
2179 .TPx
2180 .REQ .schar "c anything"
2181 Define global fallback character (or glyph)\~\c
2182 .I c
2183 as string
2184 .IR anything .
2186 .TPx
2187 .REQ .shc
2188 Reset soft hyphen glyph to
2189 .esc (hy .
2191 .TPx
2192 .REQ .shc "c"
2193 Set the soft hyphen glyph to\~\c
2194 .IR c .
2196 .TPx
2197 .REQ .shift "n"
2198 In a macro, shift the arguments by
2199 .IR n \~\c
2200 positions.
2202 .TPx
2203 .REQ .sizes "s1 s2 .\|.\|.\& sn \fB[0]\fP"
2204 Set available font sizes similar to the
2205 .B sizes
2206 command in a
2207 .B DESC
2208 file.
2210 .TPx
2211 .REQ .so "filename"
2212 Include source file.
2214 .TPx
2215 .REQ .sp
2216 Skip one line vertically.
2218 .TPx
2219 .REQ .sp "N"
2220 Space vertical distance
2221 .I N
2222 up or down according to sign of
2223 .I N
2224 (default scaling indicator\~\c
2225 .scaleindicator v ).
2227 .TPx
2228 .REQ .special
2229 Reset global list of special fonts to be empty.
2231 .TPx
2232 .REQ .special "s1 s2 .\|.\|.\&"
2233 Fonts
2234 .IR s1 ,
2235 .IR s2 ,
2236 etc.\& are special and are searched for glyphs not in the
2237 current font.
2239 .TPx
2240 .REQ .spreadwarn
2241 Toggle the spread warning on and off without changing its value.
2243 .TPx
2244 .REQ .spreadwarn "limit"
2245 Emit a warning if each space in an output line is widened by
2246 .I limit
2247 or more (default scaling indicator\~\c
2248 .scaleindicator m ).
2250 .TPx
2251 .REQ .ss "N"
2252 Set space glyph size to
2253 .IR N /12
2254 of the space width in the current font.
2256 .TPx
2257 .REQ .ss "N M"
2258 Set space glyph size to
2259 .IR N /12
2260 and sentence space size set to
2261 .IR M /12
2262 of the space width in the current font.
2264 .TPx
2265 .REQ .sty "n style"
2266 Associate
2267 .I style
2268 with font position
2269 .IR n .
2271 .TPx
2272 .REQ .substring "xx n1 n2"
2273 Replace the string named
2274 .I xx
2275 with the substring defined by the indices
2276 .I n1
2278 .IR n2 .
2280 .TPx
2281 .REQ .sv
2282 Save
2283 .scalednumber "1 v"
2284 of vertical space.
2285 .TPx
2286 .REQ .sv "N"
2287 Save the vertical distance
2288 .I N
2289 for later output with
2290 .request os
2291 request (default scaling indicator\~\c
2292 .scaleindicator v ).
2294 .TPx
2295 .REQ .sy "command-line"
2296 Execute program
2297 .IR command-line .
2299 .TPx
2300 .REQ .ta "T N"
2301 Set tabs after every position that is a multiple of
2302 .I N
2303 (default scaling indicator\~\c
2304 .scaleindicator m ).
2305 .TPx
2306 .REQ .ta "n1 n2 .\|.\|.\& nn \f[CB]T\f[] r1 r2 .\|.\|.\& rn"
2307 Set tabs at positions
2308 .IR n1 ,
2309 .IR n2 ,
2310 .Text .\|.\|.,
2311 .IR nn ,
2312 then set tabs at
2313 .IR nn + r1 ,
2314 .IR nn + r2 ,
2315 .Text .\|.\|.,
2316 .IR nn + rn ,
2317 then at
2318 .IR nn + rn + r1 ,
2319 .IR nn + rn + r2 ,
2320 .Text .\|.\|.,
2321 .IR nn + rn + rn ,
2322 and so on.
2324 .\".TPx
2325 .\".REQ .tar
2326 .\"Restore internally saved tab positions.
2327 .\".
2328 .\".TPx
2329 .\".REQ .tas
2330 .\"Save tab positions internally.
2332 .TPx
2333 .REQ .tc
2334 Remove tab repetition glyph.
2335 .TPx
2336 .REQ .tc "c"
2337 Set tab repetition glyph to\~\c
2338 .IR c .
2340 .TPx
2341 .REQ .ti "\[+-]N"
2342 Temporary indent next line (default scaling indicator\~\c
2343 .scaleindicator m ).
2345 .TPx
2346 .REQ .tkf "font s1 n1 s2 n2"
2347 Enable track kerning for
2348 .IR font .
2350 .TPx
2351 .REQ .tl "\f[CB]\[cq]\f[]left\f[CB]\[cq]\f[]center\f[CB]\[cq]\f[]right\f[CB]\[cq]\f[]"
2352 Three-part title.
2354 .TPx
2355 .REQ .tm "anything"
2356 Print
2357 .I anything
2358 on standard error output.
2360 .TPx
2361 .REQ .tm1 "anything"
2362 Print
2363 .I anything
2364 on standard error output, allowing leading whitespace if
2365 .I anything
2366 starts with
2367 \&\f[CB]\[dq]\f[]
2368 (which is stripped off).
2370 .TPx
2371 .REQ .tmc "anything"
2372 Similar to
2373 .request .tm1
2374 without emitting a final newline.
2376 .TPx
2377 .REQ .tr "abcd.\|.\|.\&"
2378 Translate
2379 .I a
2381 .IR b ,
2382 .I c
2384 .IR d ,
2385 etc.\& on output.
2387 .TPx
2388 .REQ .trf "filename"
2389 Transparently output the contents of file
2390 .IR filename .
2392 .TPx
2393 .REQ .trin "abcd.\|.\|.\&"
2394 This is the same as the
2395 .request tr
2396 request except that the
2397 .B asciify
2398 request uses the character code (if any) before the character
2399 translation.
2401 .TPx
2402 .REQ .trnt "abcd.\|.\|.\&"
2403 This is the same as the
2404 .request tr
2405 request except that the translations do not apply to text that is
2406 transparently throughput into a diversion with
2407 .esc ! .
2409 .TPx
2410 .REQ .troff
2411 Make the built-in conditions
2412 .B t
2413 true and
2414 .B n
2415 false.
2417 .TPx
2418 .REQ .uf "font"
2419 Set underline font to
2420 .I font
2421 (to be switched to by
2422 .request .ul ).
2424 .TPx
2425 .REQ .ul "N"
2426 Underline (italicize in troff)
2427 .I N
2428 input lines.
2430 .TPx
2431 .REQ .unformat "diversion"
2432 Unformat space characters and tabs in
2433 .IR diversion ,
2434 preserving font information.
2435 .TPx
2436 .REQ .vpt "n"
2437 Enable vertical position traps if
2438 .I n
2439 is non-zero, disable them otherwise.
2441 .TPx
2442 .REQ .vs
2443 Change to previous vertical base line spacing.
2445 .TPx
2446 .REQ .vs "\[+-]N"
2447 Set vertical base line spacing to
2448 .I \[+-]N
2449 (default scaling indicator\~\c
2450 .scaleindicator p ).
2452 .TPx
2453 .REQ .warn "n"
2454 Set warnings code to
2455 .IR n .
2457 .TPx
2458 .REQ .warnscale "si"
2459 Set scaling indicator used in warnings to
2460 .IR si .
2462 .TPx
2463 .REQ .wh "N"
2464 Remove (first) trap at position
2465 .IR N .
2467 .TPx
2468 .REQ .wh "N trap"
2469 Set location trap; negative means from page bottom.
2471 .TPx
2472 .REQ .while "cond anything"
2473 While condition
2474 .I cond
2475 is true, accept
2476 .I anything
2477 as input.
2479 .TPx
2480 .REQ .write "stream anything"
2481 Write
2482 .I anything
2483 to the stream named
2484 .IR stream .
2486 .TPx
2487 .REQ .writec "stream anything"
2488 Similar to
2489 .request .write
2490 without emitting a final newline.
2492 .TPx
2493 .REQ .writem "stream xx"
2494 Write contents of macro or string
2495 .I xx
2496 to the stream named
2497 .IR stream .
2502 Besides these standard roff requests, there might be further macro
2503 calls.
2504 They can originate from a macro package (see
2505 .BR @L_ROFF@-history (@MAN7EXT@)
2506 for an overview) or from a preprocessor.
2509 Preprocessor macros are easy to be recognized.
2511 They enclose their code into a pair of characteristic macros.
2515 box, center, tab (@);
2516 c | c | c
2517 CfCB | CfCB | CfCB.
2518 preprocessor@start macro@ end macro
2520 eqn@.EQ@.EN
2521 grap@.G1@.G2
2522 grn@.GS@.GE
2523 pic@.PS@.PE
2524 refer@.R1@.R2
2525 soelim@\f[I]none@\f[I]none
2526 tbl@.TS@.TE
2532 .SH "ESCAPE SEQUENCES"
2535 Escape sequences are in-line language elements usually introduced by a
2536 backslash
2537 .squoted_char \[rs]
2538 and followed by an escape name and sometimes by a required argument.
2540 Input processing is continued directly after the escaped character or
2541 the argument (without an intervening separation character).
2543 So there must be a way to determine the end of the escape name and the
2544 end of the argument.
2547 This is done by enclosing names (escape name and arguments consisting
2548 of a variable name) by a pair of brackets
2549 .BI \[lB] name \[rB]
2550 and constant arguments (number expressions and characters) by
2551 apostrophes (ASCII 0x27) like
2552 .BI \[cq] constant \[cq] \f[R].
2555 There are abbreviations for short names.
2557 Two-character escape names can be specified by an opening parenthesis
2558 like
2559 .esc ( xy
2561 .esc *( xy
2562 without a closing counterpart.
2564 And all one-character names different from the special characters
2565 .squoted_char [
2567 .squoted_char (
2568 can even be specified without a marker, for example
2569 .esc n c
2571 .esc $ c.
2574 Constant arguments of length\~1 can omit the marker apostrophes, too,
2575 but there is no two-character analogue.
2578 While one-character escape sequences are mainly used for in-line
2579 functions and system related tasks, the two-letter names following the
2580 .esc (
2581 construct are glyphs predefined by the roff system; these are called
2582 `Special Characters' in the classical documentation.
2584 Escapes sequences of the form
2585 .esc[] "" name
2586 denote glyphs too.
2590 .SS "Single-Character Escapes"
2593 .PD 0
2595 .\" --------- comments ---------
2598 .ESC \[dq]
2599 Start of a comment.
2601 Everything up to the end of the line is ignored.
2604 .ESC #
2605 Everything up to and including the next newline is ignored.
2607 This is interpreted in copy mode.
2609 This is like
2610 .esc \[dq]
2611 except that the terminating newline is ignored as well.
2613 .\" --------- strings ---------
2616 .ESC *\f[I]s\f[]
2617 The string stored in the string variable with one-character name\~\c
2618 .IR s .
2621 .ESC *(\f[I]st\f[]
2622 The string stored in the string variable with two-character name
2623 .IR st .
2626 .ESC[] * string
2627 The string stored in the string variable with name
2628 .I string
2629 (with arbitrary length).
2632 .ESC[] * "stringvar arg1 arg2 .\|.\|."
2633 The string stored in the string variable with arbitrarily long name
2634 .IR stringvar ,
2635 taking
2636 .IR arg1 ,
2637 .IR arg2 ,
2638 .I .\|.\|.\&
2639 as arguments.
2641 .\" --------- macro arguments ---------
2644 .ESC $0
2645 The name by which the current macro was invoked.
2648 .request als
2649 request can make a macro have more than one name.
2652 .ESC $ x
2653 Macro or string argument with one-digit number\~\c
2654 .I x
2655 in the range 1 to\~9.
2658 .ESC $( xy
2659 Macro or string argument with two-digit number
2660 .I xy
2661 (larger than zero).
2664 .ESC[] $ nexp
2665 Macro or string argument with number
2666 .IR nexp ,
2667 where
2668 .I nexp
2669 is a numerical expression evaluating to an integer \[>=]1.
2672 .ESC $*
2673 In a macro or string, the concatenation of all the arguments separated
2674 by spaces.
2677 .ESC $@
2678 In a macro or string, the concatenation of all the arguments with each
2679 surrounded by double quotes, and separated by spaces.
2682 .ESC $^
2683 In a macro, the representation of all parameters as if they were an
2684 argument to the
2685 .request ds
2686 request.
2688 .\" --------- escaped characters ---------
2691 .ESC \[rs]
2692 reduces to a single backslash; useful to delay its interpretation as
2693 escape character in copy mode.
2695 For a printable backslash, use
2696 .esc e ,
2697 or even better
2698 .esc [rs] ,
2699 to be independent from the current escape character.
2702 .ESC \[cq]
2703 The acute accent \[aa]; same as
2704 .esc (aa .
2705 Unescaped: apostrophe, right quotation mark, single quote (ASCII 0x27).
2708 .ESC `
2709 The grave accent \[ga]; same as
2710 .esc (ga .
2711 Unescaped: left quote, backquote (ASCII 0x60).
2714 .ESC -
2715 The \- (minus) sign in the current font.
2718 .ESC _
2719 The same as
2720 .esc (ul ,
2721 the underline character.
2724 .ESC .
2725 An uninterpreted dot (period), even at start of line.
2728 .ESC %
2729 Default optional hyphenation character.
2732 .ESC !
2733 Transparent line indicator.
2736 .ESC? anything
2737 In a diversion, this transparently embeds
2738 .I anything
2739 in the diversion.
2740 .I anything
2741 is read in copy mode.
2743 See also the escape sequences
2744 .esc !
2746 .esc ? .
2749 .\" --------- spacing ---------
2752 .ESC \& space
2753 Unpaddable space size space glyph (no line break).
2756 .ESC 0
2757 Digit-width space.
2760 .ESC |
2761 1/6\ em narrow space glyph; zero width in nroff.
2764 .ESC ^
2765 1/12\ em half-narrow space glyph; zero width in nroff.
2768 .ESC &
2769 Non-printable, zero-width glyph.
2772 .ESC )
2773 Like
2774 .esc &
2775 except that it behaves like a glyph declared with the
2776 .request cflags
2777 request to be transparent for the purposes of end-of-sentence
2778 recognition.
2781 .ESC /
2782 Increases the width of the preceding glyph so that the spacing
2783 between that glyph and the following glyph is correct if
2784 the following glyph is a roman glyph.
2787 .ESC ,
2788 Modifies the spacing of the following glyph so that the spacing
2789 between that glyph and the preceding glyph is correct if the
2790 preceding glyph is a roman glyph.
2793 .ESC ~
2794 Unbreakable space that stretches like a normal inter-word space when a
2795 line is adjusted.
2798 .ESC :
2799 Inserts a zero-width break point (similar to
2800 .esc %
2801 but without a soft hyphen character).
2804 .ESC "" newline
2805 Ignored newline, for continuation lines.
2807 .\" --------- structuring ---------
2810 .ESC {
2811 Begin conditional input.
2814 .ESC }
2815 End conditional input.
2817 .\" --------- longer escape names ---------
2820 .ESC ( sc
2821 A glyph with two-character name
2822 .IR sc ;
2823 see section
2824 .BR "Special Characters" .
2827 .ESC[] "" name
2828 A glyph with name
2829 .I name
2830 (of arbitrary length).
2833 .ESC[] "" "comp1 comp2 .\|.\|."
2834 A composite glyph with components
2835 .IR comp1 ,
2836 .IR comp2 ,
2837 .I .\|.\|.
2839 .\" --------- alphabetical escapes ---------
2842 .ESC a
2843 Non-interpreted leader character.
2846 .ESCq A anything
2848 .I anything
2849 is acceptable as a name of a string, macro, diversion, register,
2850 environment or font it expands to\~1, and to\~0 otherwise.
2853 .ESCq b abc.\|.\|.\&
2854 Bracket building function.
2857 .ESCq B anything
2859 .I anything
2860 is acceptable as a valid numeric expression it expands to\~1, and
2861 to\~0 otherwise.
2864 .ESC c
2865 Interrupt text processing.
2868 .ESCq C glyph
2869 The glyph called
2870 .IR glyph ;
2871 same as
2872 .esc[] "" glyph ,
2873 but compatible to other roff versions.
2876 .ESC d
2877 Forward (down) 1/2 em (1/2 line in nroff).
2880 .ESCq D charseq
2881 Draw a graphical element defined by the characters in
2882 .IR charseq .
2885 .ESC e
2886 Printable version of the current escape character.
2889 .ESC E
2890 Equivalent to an escape character, but is not interpreted in copy mode.
2893 .ESC f F
2894 Change to font with one-character name or one-digit number\~\c
2895 .IR F .
2898 .ESC fP
2899 Switch back to previous font.
2902 .ESC f( fo
2903 Change to font with two-character name or two-digit number
2904 .IR fo .
2907 .ESC[] f font
2908 Change to font with arbitrarily long name or number expression
2909 .IR font .
2912 .ESC[] f ""
2913 Switch back to previous font.
2916 .ESC F f
2917 Change to font family with one-character name\~\c
2918 .IR f .
2921 .ESC F( fm
2922 Change to font family with two-character name
2923 .IR fm .
2926 .ESC[] F fam
2927 Change to font family with arbitrarily long name
2928 .IR fam .
2931 .ESC[] F ""
2932 Switch back to previous font family.
2935 .ESC g r
2936 Return format of register with one-character name\~\c
2937 .I r
2938 suitable for
2939 .request af
2940 request.
2943 .ESC g( rg
2944 Return format of register with two-character name
2945 .I rg
2946 suitable for
2947 .request af
2948 request.
2951 .ESC[] g reg
2952 Return format of register with arbitrarily long name
2953 .I reg
2954 suitable for
2955 .request af
2956 request.
2959 .ESCq h N
2960 Local horizontal motion; move right
2961 .I N
2962 (left if negative).
2965 .ESCq H N
2966 Set height of current font to
2967 .IR N .
2970 .ESC k r
2971 Mark horizontal input place in one-character register\~\c
2972 .IR r .
2975 .ESC k( rg
2976 Mark horizontal input place in two-character register
2977 .IR rg .
2980 .ESC[] k reg
2981 Mark horizontal input place in register with arbitrarily long name
2982 .IR reg .
2985 .ESCq l Nc
2986 Horizontal line drawing function (optionally using character
2987 .IR c ).
2990 .ESCq L Nc
2991 Vertical line drawing function (optionally using character
2992 .IR c ).
2995 .ESC m c
2996 Change to color with one-character name\~\c
2997 .IR c .
3000 .ESC m( cl
3001 Change to color with two-character name
3002 .IR cl .
3005 .ESC[] m color
3006 Change to color with arbitrarily long name
3007 .IR color .
3010 .ESC[] m ""
3011 Switch back to previous color.
3014 .ESC M c
3015 Change filling color for closed drawn objects to color with
3016 one-character name\~\c
3017 .IR c .
3020 .ESC M( cl
3021 Change filling color for closed drawn objects to color with
3022 two-character name
3023 .IR cl .
3026 .ESC[] M color
3027 Change filling color for closed drawn objects to color with
3028 arbitrarily long name
3029 .IR color .
3032 .ESC[] M ""
3033 Switch to previous fill color.
3036 .ESC n r
3037 The numerical value stored in the register variable with the
3038 one-character name\~\c
3039 .IR r .
3042 .ESC n( re
3043 The numerical value stored in the register variable with the
3044 two-character name
3045 .IR re .
3048 .ESC[] n reg
3049 The numerical value stored in the register variable with arbitrarily
3050 long name
3051 .IR reg .
3054 .ESCq N n
3055 Typeset the glyph with index\~\c
3056 .I n
3057 in the current font.
3059 No special fonts are searched.
3061 Useful for adding (named) entities to a document using the
3062 .request char
3063 request and friends.
3066 .ESCq o abc.\|.\|.\&
3067 Overstrike glyphs
3068 .IR a ,
3069 .IR b ,
3070 .IR c ,
3071 etc.
3074 .ESC O0
3075 Disable glyph output.
3077 Mainly for internal use.
3080 .ESC O1
3081 Enable glyph output.
3083 Mainly for internal use.
3086 .ESC p
3087 Break and spread output line.
3090 .ESC r
3091 Reverse 1\ em vertical motion (reverse line in nroff).
3094 .ESCq R "name\~\[+-]n"
3095 The same as
3096 .request .nr
3097 .I name
3098 .IR \[+-]n .
3101 .ESC s \[+-]N
3102 Set/increase/decrease the point size to/by
3103 .I N
3104 scaled points;
3105 .I N
3106 is a one-digit number in the range 1 to\~9.
3108 Same as
3109 .request ps
3110 request.
3113 .ESC s( \[+-]N
3115 .ESC s\[+-]( N
3116 Set/increase/decrease the point size to/by
3117 .I N
3118 scaled points;
3119 .I N
3120 is a two-digit number \[>=]1.
3122 Same as
3123 .request ps
3124 request.
3127 .ESC[] s \[+-]N
3129 .ESC[] s\[+-] N
3131 .ESCq s \[+-]N
3133 .ESCq s\[+-] N
3134 Set/increase/decrease the point size to/by
3135 .I N
3136 scaled points.
3138 Same as
3139 .request ps
3140 request.
3143 .ESCq S N
3144 Slant output by
3145 .I N
3146 degrees.
3149 .ESC t
3150 Non-interpreted horizontal tab.
3153 .ESC u
3154 Reverse (up) 1/2 em vertical motion (1/2 line in nroff).
3157 .ESCq v N
3158 Local vertical motion; move down
3159 .I N
3160 (up if negative).
3163 .ESC V e
3164 The contents of the environment variable with one-character
3165 name\~\c
3166 .IR e .
3169 .ESC V( ev
3170 The contents of the environment variable with two-character name
3171 .IR ev .
3174 .ESC[] V env
3175 The contents of the environment variable with arbitrarily long name
3176 .IR env .
3179 .ESCq w string
3180 The width of the glyph sequence
3181 .IR string .
3184 .ESCq x N
3185 Extra line-space function (negative before, positive after).
3188 .ESCq X string
3189 Output
3190 .I string
3191 as device control function.
3194 .ESC Y n
3195 Output string variable or macro with one-character name\~\c
3196 .I n
3197 uninterpreted as device control function.
3200 .ESC Y( nm
3201 Output string variable or macro with two-character name
3202 .I nm
3203 uninterpreted as device control function.
3206 .ESC[] Y name
3207 Output string variable or macro with arbitrarily long name
3208 .I name
3209 uninterpreted as device control function.
3212 .ESC z c
3213 Print
3214 .I c
3215 with zero width (without spacing).
3218 .ESCq Z anything
3219 Print
3220 .I anything
3221 and then restore the horizontal and vertical position;
3222 .I anything
3223 may not contain tabs or leaders.
3227 The escape sequences
3228 .esc e ,
3229 .esc . ,
3230 .esc \[dq] ,
3231 .esc $ ,
3232 .esc * ,
3233 .esc a ,
3234 .esc n ,
3235 .esc t ,
3236 .esc g ,
3238 .escarg \& newline
3239 are interpreted in copy mode.
3242 Escape sequences starting with
3243 .esc (
3245 .esc [
3246 do not represent single character escape sequences, but introduce escape
3247 names with two or more characters.
3250 If a backslash is followed by a character that does not constitute a
3251 defined escape sequence, the backslash is silently ignored and the
3252 character maps to itself.
3256 .SS "Special Characters"
3259 [Note: `Special Characters' is a misnomer; those entities are (output)
3260 glyphs, not (input) characters.]
3263 Common special characters are predefined by escape sequences of the
3264 form
3265 .BI \[rs]( xy
3266 with characters
3267 .I x
3269 .IR y .
3271 Some of these exist in the usual font while most of them are only
3272 available in the special font.
3274 Below you can find a selection of the most important glyphs; a complete
3275 list can be found in
3276 .BR @L_ROFF@-char (@MAN7EXT@).
3279 .PD 0
3282 .ESC (bu
3283 Bullet sign
3285 .ESC (co
3286 Copyright
3288 .ESC (ct
3289 Cent
3291 .ESC (dd
3292 Double dagger
3294 .ESC (de
3295 Degree
3297 .ESC (dg
3298 Dagger
3300 .ESC (rq
3301 Printable double quote
3303 .ESC (em
3304 Em-dash
3306 .ESC (hy
3307 Hyphen
3309 .ESC (rg
3310 Registered sign
3312 .ESC (rs
3313 Printable backslash character
3315 .ESC (sc
3316 Section sign
3318 .ESC (ul
3319 Underline character
3321 .ESC (==
3322 Identical
3324 .ESC (>=
3325 Larger or equal
3327 .ESC (<=
3328 Less or equal
3330 .ESC (!=
3331 Not equal
3333 .ESC (->
3334 Right arrow
3336 .ESC (<-
3337 Left arrow
3339 .ESC (+-
3340 Plus-minus sign
3345 .SS "Unicode Characters"
3347 Via the special escape
3348 .BI \e[u HEX ]
3349 it is possible to include Unicode codepoints and even complete graphem
3350 clusters into a document.
3351 Here
3352 .B u
3353 denotes the escape and
3354 .B HEX
3355 is the hexadecimal Unicode codepoint to include; to specify a graphem
3356 cluster specify multiple codepoints separated by underscores, as in
3357 .BI \e[u HEX1 _ HEX2 _ HEX3 ]\c
3359 e.g.,
3360 .B \e[u0041_0301]
3362 .IR "A acute" ,
3363 .BR \['A] .
3366 The availability of Unicode characters depends on the used output device
3367 and the used font.
3370 .SS "Strings"
3372 Strings are defined by the
3373 .request ds
3374 request and can be retrieved by the
3375 .esc *
3376 escape sequence.
3379 Strings share their name space with macros.
3381 So strings and macros without arguments are roughly equivalent; it is
3382 possible to call a string like a macro and vice-versa, but this often
3383 leads to unpredictable results.
3385 The following string is the only one predefined in @T_ROFF@.
3387 .TPx
3388 .STRING .T
3389 The name of the current output device as specified by the
3390 .option \-T
3391 command line option.
3395 .SH REGISTERS
3398 Registers are variables that store a value.
3399 In @T_ROFF@, most registers store numerical values (see section
3400 .B NUMERICAL EXPRESSIONS
3401 above), but some can also hold a string value.
3404 Each register is given a name.
3405 Arbitrary registers can be defined and set with the
3406 .request nr
3407 request.
3410 The value stored in a register can be retrieved by the escape sequences
3411 introduced by
3412 .esc n .
3415 Most useful are predefined registers.
3417 In the following the notation
3418 .I name
3419 is used to refer to
3420 .register name
3421 to make clear that we speak about registers.
3423 Please keep in mind that the
3424 .esc[] n ""
3425 decoration is not part of the register name.
3429 .SS "Read-only Registers"
3432 The following registers have predefined values that should not be
3433 modified by the user (usually, registers starting with a dot a
3434 read-only).
3436 Mostly, they provide information on the current settings or store
3437 results from request calls.
3440 .PD 0
3442 .TPx
3443 .REG $$
3444 The process ID of 
3445 .BR troff .
3447 .TPx
3448 .REG .$
3449 Number of arguments in the current macro or string.
3451 .TPx
3452 .REG .a
3453 Post-line extra line-space most recently utilized using
3454 .esc x .
3456 .TPx
3457 .REG .A
3458 Set to\~1 in
3459 .B troff
3460 if option
3461 .option \-A
3462 is used; always\~1 in
3463 .BR nroff .
3465 .TPx
3466 .REG .b
3467 The emboldening offset while
3468 .request .bd
3469 is active.
3471 .TPx
3472 .REG .br
3473 Within a macro, set to\~1 if macro called with the `normal' control
3474 character, and to\~0 otherwise.
3476 .TPx
3477 .REG .c
3478 Current input line number.
3480 .TPx
3481 .REG .C
3482 1\~if compatibility mode is in effect, 0\~otherwise.
3484 .TPx
3485 .REG .cdp
3486 The depth of the last glyph added to the current environment.
3488 It is positive if the glyph extends below the baseline.
3490 .TPx
3491 .REG .ce
3492 The number of lines remaining to be centered, as set by the
3493 .request ce
3494 request.
3496 .TPx
3497 .REG .cht
3498 The height of the last glyph added to the current environment.
3500 It is positive if the glyph extends above the baseline.
3502 .TPx
3503 .REG .color
3504 1\~if colors are enabled, 0\~otherwise.
3506 .TPx
3507 .REG .csk
3508 The skew of the last glyph added to the current environment.
3510 The skew of a glyph is how far to the right of the center of a glyph
3511 the center of an accent over that glyph should be placed.
3513 .TPx
3514 .REG .d
3515 Current vertical place in current diversion; equal to
3516 .register nl .
3518 .TPx
3519 .REG .ev
3520 The name or number of the current environment (string-valued).
3522 .TPx
3523 .REG .f
3524 Current font number.
3526 .TPx
3527 .REG .F
3528 The name of the current input file (string-valued).
3530 .TPx
3531 .REG .fam
3532 The current font family (string-valued).
3534 .TPx
3535 .REG .fn
3536 The current (internal) real font name (string-valued).
3538 .TPx
3539 .REG .fp
3540 The number of the next free font position.
3542 .TPx
3543 .REG .g
3544 Always 1 in GNU troff and @T_ROFF@.
3546 Macros should use it to test if running under @T_ROFF@.
3548 .TPx
3549 .REG .h
3550 Text base-line high-water mark on current page or diversion.
3552 .TPx
3553 .REG .H
3554 Available horizontal resolution in basic units.
3556 .TPx
3557 .REG .height
3558 The current font height as set with
3559 .request \[rs]H .
3561 .TPx
3562 .REG .hla
3563 The current hyphenation language as set by the
3564 .request hla
3565 request.
3567 .TPx
3568 .REG .hlc
3569 The number of immediately preceding consecutive hyphenated lines.
3571 .TPx
3572 .REG .hlm
3573 The maximum allowed number of consecutive hyphenated lines, as set by
3575 .request hlm
3576 request.
3578 .TPx
3579 .REG .hy
3580 The current hyphenation flags (as set by the
3581 .request hy
3582 request).
3584 .TPx
3585 .REG .hym
3586 The current hyphenation margin (as set by the
3587 .request hym
3588 request).
3590 .TPx
3591 .REG .hys
3592 The current hyphenation space (as set by the
3593 .request hys
3594 request).
3596 .TPx
3597 .REG .i
3598 Current indentation.
3600 .TPx
3601 .REG .in
3602 The indentation that applies to the current output line.
3604 .TPx
3605 .REG .int
3606 Positive if last output line contains
3607 .esc c .
3609 .TPx
3610 .REG .j
3611 The current adjustment mode.
3612 It can be stored and used to set adjustment.
3613 (n=1, b=1, l=0, r=5, c=3).
3615 .TPx
3616 .REG .k
3617 The current horizontal output position (relative to the current indentation).
3619 .TPx
3620 .REG .kern
3621 1\~if pairwise kerning is enabled, 0\~otherwise.
3623 .TPx
3624 .REG .l
3625 Current line length.
3627 .TPx
3628 .REG .L
3629 The current line spacing setting as set by
3630 .request .ls .
3632 .TPx
3633 .REG .lg
3634 The current ligature mode (as set by the
3635 .request lg
3636 request).
3638 .TPx
3639 .REG .linetabs
3640 The current line-tabs mode (as set by the
3641 .request linetabs
3642 request).
3644 .TPx
3645 .REG .ll
3646 The line length that applies to the current output line.
3648 .TPx
3649 .REG .lt
3650 The title length (as set by the
3651 .request lt
3652 request).
3654 .TPx
3655 .REG .m
3656 The current drawing color (string-valued).
3658 .TPx
3659 .REG .M
3660 The current background color (string-valued).
3662 .TPx
3663 .REG .n
3664 Length of text portion on previous output line.
3666 .TPx
3667 .REG .ne
3668 The amount of space that was needed in the last
3669 .request ne
3670 request that caused a trap to be sprung.
3672 Useful in conjunction with
3673 .register .trunc .
3675 .TPx
3676 .REG .ns
3677 1\~if in no-space mode, 0\~otherwise.
3679 .TPx
3680 .REG .o
3681 Current page offset.
3683 .TPx
3684 .REG .O
3685 The suppression nesting level (see
3686 .esc O ).
3688 .TPx
3689 .REG .p
3690 Current page length.
3692 .TPx
3693 .REG .P
3694 1\~if the current page is being printed, 0\~otherwise (as determined by the
3695 .option \-o
3696 command line option).
3698 .TPx
3699 .REG .pe
3700 1\~during page ejection, 0\~otherwise.
3702 .TPx
3703 .REG .pn
3704 The number of the next page: either the value set by a
3705 .request pn
3706 request, or the number of the current page plus\ 1.
3708 .TPx
3709 .REG .ps
3710 The current point size in scaled points.
3712 .TPx
3713 .REG .psr
3714 The last-requested point size in scaled points.
3716 .TPx
3717 .REG .pvs
3718 The current post-vertical line spacing.
3720 .TPx
3721 .REG .rj
3722 The number of lines to be right-justified as set by the
3723 .request rj
3724 request.
3726 .TPx
3727 .REG .s
3728 Current point size as a decimal fraction.
3730 .TPx
3731 .REG .slant
3732 The slant of the current font as set with
3733 .request \[rs]S .
3735 .TPx
3736 .REG .sr
3737 The last requested point size in points as a decimal fraction
3738 (string-valued).
3740 .TPx
3741 .REG .ss
3742 The value of the parameters set by the first argument of the
3743 .request ss
3744 request.
3746 .TPx
3747 .REG .sss
3748 The value of the parameters set by the second argument of the
3749 .request ss
3750 request.
3752 .TPx
3753 .REG .sty
3754 The current font style (string-valued).
3756 .TPx
3757 .REG .t
3758 Vertical distance to the next trap.
3760 .TPx
3761 .REG .T
3762 Set to\~1
3763 if option
3764 .option \-T
3765 is used.
3767 .TPx
3768 .REG .tabs
3769 A string representation of the current tab settings suitable for use
3770 as an argument to the
3771 .request ta
3772 request.
3774 .TPx
3775 .REG .trunc
3776 The amount of vertical space truncated by the most recently sprung
3777 vertical position trap, or, if the trap was sprung by a
3778 .request ne
3779 request, minus the amount of vertical motion produced by
3780 .request .ne .
3782 Useful in conjunction with the
3783 .register .ne .
3785 .TPx
3786 .REG .u
3787 Equal to 1 in fill mode and 0 in no-fill mode.
3789 .TPx
3790 .REG .U
3791 Equal to 1 in safer mode and 0 in unsafe mode.
3793 .TPx
3794 .REG .v
3795 Current vertical line spacing.
3797 .TPx
3798 .REG .V
3799 Available vertical resolution in basic units.
3801 .TPx
3802 .REG .vpt
3803 1\~if vertical position traps are enabled, 0\~otherwise.
3805 .TPx
3806 .REG .w
3807 Width of previous glyph.
3809 .TPx
3810 .REG .warn
3811 The sum of the number codes of the currently enabled warnings.
3813 .TPx
3814 .REG .x
3815 The major version number.
3817 .TPx
3818 .REG .y
3819 The minor version number.
3821 .TPx
3822 .REG .Y
3823 The revision number of @T_ROFF@.
3825 .TPx
3826 .REG .z
3827 Name of current diversion.
3829 .TPx
3830 .REG .zoom
3831 Zoom factor for current font (in multiples of 1/1000th; zero if no
3832 magnification).
3837 .SS "Writable Registers"
3840 The following registers can be read and written by the user.
3841 They have predefined default values, but these can be modified for
3842 customizing a document.
3845 .PD 0
3846 .TPx
3847 .REG %
3848 Current page number.
3850 .TPx
3851 .REG c.
3852 Current input line number.
3854 .TPx
3855 .REG ct
3856 Character type (set by width function
3857 .esc w ).
3859 .TPx
3860 .REG dl
3861 Maximal width of last completed diversion.
3863 .TPx
3864 .REG dn
3865 Height of last completed diversion.
3867 .TPx
3868 .REG dw
3869 Current day of week (1-7).
3871 .TPx
3872 .REG dy
3873 Current day of month (1-31).
3875 .TPx
3876 .REG hours
3877 The number of hours past midnight.
3879 Initialized at start-up.
3881 .TPx
3882 .REG hp
3883 Current horizontal position at input line.
3885 .TPx
3886 .REG llx
3887 Lower left x-coordinate (in PostScript units) of a given PostScript
3888 image (set by
3889 .request .psbb ).
3891 .TPx
3892 .REG lly
3893 Lower left y-coordinate (in PostScript units) of a given PostScript
3894 image (set by
3895 .request .psbb ).
3897 .TPx
3898 .REG ln
3899 Output line number.
3902 .TPx
3903 .REG minutes
3904 The number of minutes after the hour.
3906 Initialized at start-up.
3908 .TPx
3909 .REG mo
3910 Current month (1-12).
3912 .TPx
3913 .REG nl
3914 Vertical position of last printed text base-line.
3916 .TPx
3917 .REG opmaxx
3918 .TPx
3919 .REG opmaxy
3920 .TPx
3921 .REG opminx
3922 .TPx
3923 .REG opminy
3924 These four registers mark the top left and bottom right hand corners of a box
3925 which encompasses all written glyphs.
3926 They are reset to \-1 by
3927 .escarg O 0
3929 .escarg O 1 .
3931 .TPx
3932 .REG rsb
3933 Like
3934 .register sb ,
3935 but takes account of the heights and depths of glyphs.
3937 .TPx
3938 .REG rst
3939 Like
3940 .register st ,
3941 but takes account of the heights and depths of glyphs.
3943 .TPx
3944 .REG sb
3945 Depth of string below base line (generated by width function
3946 .esc w ).
3948 .TPx
3949 .REG seconds
3950 The number of seconds after the minute.
3952 Initialized at start-up.
3954 .TPx
3955 .REG skw
3956 Right skip width from the center of the last glyph in the
3957 .esc w
3958 argument.
3960 .TPx
3961 .REG slimit
3962 If greater than 0, the maximum number of objects on the input stack.
3964 If \[<=]0 there is no limit, i.e., recursion can continue until virtual
3965 memory is exhausted.
3967 .TPx
3968 .REG ssc
3969 The amount of horizontal space (possibly negative) that should be
3970 added to the last glyph before a subscript (generated by width
3971 function
3972 .esc w ).
3974 .TPx
3975 .REG st
3976 Height of string above base line (generated by width function
3977 .esc w ).
3979 .TPx
3980 .REG systat
3981 The return value of the
3982 .I system()
3983 function executed by the last
3984 .request sy
3985 request.
3987 .TPx
3988 .REG urx
3989 Upper right x-coordinate (in PostScript units) of a given PostScript
3990 image (set by
3991 .request .psbb ).
3993 .TPx
3994 .REG ury
3995 Upper right y-coordinate (in PostScript units) of a given PostScript
3996 image (set by
3997 .request .psbb ).
3999 .TPx
4000 .REG year
4001 The current year (year 2000 compliant).
4003 .TPx
4004 .REG yr
4005 Current year minus 1900.
4007 For Y2K compliance use
4008 .register year
4009 instead.
4015 .SH COMPATIBILITY
4018 The differences of the @T_ROFF@ language in comparison to classical
4019 troff as defined by
4020 .I [CSTR\~#54]
4021 are documented in
4022 .BR @L_ROFF@-diff (@MAN7EXT@).
4025 The @T_ROFF@ system provides a compatibility mode, see
4026 .BR @L_ROFF@ (@MAN1EXT@)
4027 on how to invoke this.
4031 .SH BUGS
4034 Report bugs to
4035 .MT @BUGMAIL@
4036 .ME .
4037 Include a complete, self-contained example that will allow the bug to
4038 be reproduced, and say which version of groff you are using.
4041 .SH AUTHORS
4044 Copyright (c) 2014 - 2017 Steffen (Daode) Nurpmeso <steffen@sdaoden.eu>.
4046 Copyright (C) 2000 - 2008
4047 Free Software Foundation, Inc.
4050 This document is distributed under the terms of the FDL (GNU Free
4051 Documentation License) version 1.1 or later.
4053 You should have received a copy of the FDL on your system, it is also
4054 available on-line at the
4055 .UR http://\:www.gnu.org/\:copyleft/\:fdl.html
4056 GNU copyleft site
4057 .UE .
4060 This document was written by
4061 .MT bwarken@mayn.de
4062 Bernd Warken
4063 .ME .
4066 .SH "SEE ALSO"
4070 .BR @L_ROFF@ (@MAN1EXT@)
4071 the usage of the @L_ROFF@ program and pointers to the documentation
4072 and availability of the @T_ROFF@ system.
4075 .BR @L_ROFF@-diff (@MAN7EXT@)
4076 the differences of the @T_ROFF@ language as compared to classical roff.
4078 This is the authoritative document for the predefined language
4079 elements that are specific to @T_ROFF@.
4082 .BR @L_ROFF@-char (@MAN7EXT@)
4083 the predefined @T_ROFF@ special characters (glyphs).
4086 .BR @L_ROFF@-font (@MAN5EXT@)
4087 the specification of fonts and the DESC file.
4090 .BR @L_ROFF@-history (@MAN7EXT@)
4091 the history of roff, the common parts shared by all roff systems, and
4092 pointers to further documentation.
4095 .I [CSTR\~#54]
4096 .UR http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:54.ps.gz
4097 Nroff/\:Troff User's Manual by Ossanna & Kernighan
4099 \[em] the bible for classical troff.
4101 .cp \n[roff_C]
4102 .\" s-ts-mode