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