]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/groff/man/groff.man
This commit was generated by cvs2svn to compensate for changes in r95978,
[FreeBSD/FreeBSD.git] / contrib / groff / man / groff.man
1 '\" t
2 .ig
3 groff.7
4
5 This file is part of groff, the GNU roff type-setting system.
6
7 Copyright (C) 2000, 2001 Free Software Foundation, Inc.
8 written by Bernd Warken <bwarken@mayn.de>
9
10 Permission is granted to copy, distribute and/or modify this document
11 under the terms of the GNU Free Documentation License, Version 1.1 or
12 any later version published by the Free Software Foundation; with the
13 Invariant Sections being this .ig-section and AUTHOR, with no
14 Front-Cover Texts, and with no Back-Cover Texts.
15
16 A copy of the Free Documentation License is included as a file called
17 FDL in the main directory of the groff source package.
18 ..
19 .
20 .\" --------------------------------------------------------------------
21 .\" Setup
22 .\" --------------------------------------------------------------------
23 .
24 .if n \{\
25 .  mso tty-char.tmac
26 .  ftr CR R
27 .  ftr CI I
28 .  ftr CB B
29 .\}
30 .
31 .if '\*[.T]'dvi' \{\
32 .  ftr CB CW
33 .\}
34 .
35 .\" a comment macro which does nothing
36 .de c
37 ..
38 .
39 .\" a tab string
40 .ds t "\t
41 .
42 .eo
43 .
44 .c text lines in macro definitions or bracketed sections \{...\}
45 .de text
46 .  if 1 \&\$*\&
47 ..
48 .
49 .de option
50 .  ds @tmp@ \f(CB\$1\fP
51 .  shift 1
52 .  text \*[@tmp@]\$*
53 .  rm @tmp@
54 ..
55 .
56 .als shellcommand option
57 .
58 .c --------- characters ---------
59 .
60 .de character
61 .  ds @tmp@ \f(CB\$1\fP
62 .  shift
63 .  text \*[@tmp@]\$*
64 .  rm @tmp@
65 ..
66 .
67 .de 'char
68 .  ds @tmp@ \(oq\f(CB\$1\fP\(cq
69 .  shift
70 .  text \*[@tmp@]\$*
71 .  rm @tmp@
72 ..
73 .
74 .de ''char
75 .  ds @tmp@ \(lq\f(CB\$1\fP\(rq
76 .  shift
77 .  text \*[@tmp@]\$*
78 .  rm @tmp@
79 ..
80 .
81 .c --------- requests ---------
82 .
83 .c request synopsis
84 .de REQ
85 .  ds @tmp@ \&\$1
86 .  shift 1
87 .  IP "\f(CB\&\*[@tmp@] \fP\f(CI\&\$*\fP" 10n
88 .  rm @tmp@
89 ..
90 .
91 .de request
92 .  ds @tmp@ \f(CB\$1\fP
93 .  shift 1
94 .  text \*[@tmp@]\$*
95 .  rm @tmp@
96 ..
97 .
98 .c --------- macro or function arguments ---------
99 .
100 .de argument
101 .  ds @tmp@ \f(CI\$1\fP
102 .  shift 1
103 .  while (\n[.$] >= 2) \{\
104 .    as @tmp@ \/\f(CR\$1\fP\f(CI\,\$2\fP
105 .    shift 2
106 .  \}
107 .  if \n[.$] .as @tmp@ \/\f(CR\$1\fP
108 .  text \*[@tmp@]
109 .  rm @tmp@
110 ..
111 .
112 .c argument followed by a numerical expression
113 .de argterm
114 .  ds @tmp@ \f(CI\$1\fP\|\f(CR\$2\fP
115 .  shift 2
116 .  text \*[@tmp@]\$*
117 .  rm @tmp@
118 ..
119 .
120 .c --------- numerical elements ---------
121 .
122 .de number
123 .  ds @tmp@ \f(CR\$1\fP
124 .  shift 1
125 .  text \*[@tmp@]\$*
126 .  rm @tmp@
127 ..
128 .
129 .de prefixednumber
130 .  ds @tmp@ \&\$1\ \f(CR\$2\fP
131 .  shift 2
132 .  text \*[@tmp@]\$*
133 .  rm @tmp@
134 ..
135 .
136 .als scaleindicator request
137 .
138 .de scalednumber
139 .  ds @tmp@ \f(CR\$1\fP\f(CB\$2\fP
140 .  shift 2
141 .  text \*[@tmp@]\$*
142 .  rm @tmp@
143 ..
144 .
145 .de operator
146 .  ds @tmp@ \(oq\f(CB\$1\fP\(cq
147 .  shift
148 .  text \*[@tmp@]\$*
149 .  rm @tmp@
150 ..
151 .
152 .c --------- escape sequences ---------
153 .
154 .de esc[arg]
155 .  ds @tmp@ \f(CB\(rs\$1[\fP\f(CI\$2\fP\f(CB]\fP
156 .  shift 2
157 .  text \*[@tmp@]\$*
158 .  rm @tmp@
159 ..
160 .
161 .de esc(arg
162 .  ds @tmp@ \f(CB\(rs\$1(\fP\f(CI\$2\fP
163 .  shift 2
164 .  text \*[@tmp@]\$*
165 .  rm @tmp@
166 ..
167 .
168 .de escarg
169 .  ds @tmp@ \f(CB\(rs\$1\fP\f(CI\$2\fP
170 .  shift 2
171 .  text \*[@tmp@]\$*
172 .  rm @tmp@
173 ..
174 .
175 .de esc[]
176 .  ds @tmp@ \f(CB\(rs[\fP\f(CI\$1\fP\f(CB]\fP
177 .  shift
178 .  text \*[@tmp@]\$*
179 .  rm @tmp@
180 ..
181 .
182 .de esc(
183 .  ds @tmp@ \f(CB\(rs(\fP\f(CI\$1\fP
184 .  shift
185 .  text \*[@tmp@]\$*
186 .  rm @tmp@
187 ..
188 .
189 .de esc
190 .  ds @tmp@ \f(CB\(rs\$1\fP
191 .  shift
192 .  text \*[@tmp@]\$*
193 .  rm @tmp@
194 ..
195 .
196 .de (esc
197 .  ds @tmp@ \f(CB\(rs(\$1\fP
198 .  shift
199 .  text \*[@tmp@]\$*
200 .  rm @tmp@
201 ..
202 .
203 .de [esc]
204 .  ds @tmp@ \f(CB\(rs[\$1]\fP
205 .  shift
206 .  text \*[@tmp@]\$*
207 .  rm @tmp@
208 ..
209 .
210 .c escape sequence synopsis
211 .de ESC
212 .  ds @tmp@ \&\$1
213 .  shift 1
214 .  IP "\f(CB\(rs\&\*[@tmp@]\fP\f(CI\&\$*\fP"
215 .  rm @tmp@
216 ..
217 .
218 .c synopsis for escape sequences with a long name
219 .de ESC[]
220 .  ds @arg1@ \&\$1
221 .  ds @arg2@ \&\$2
222 .  shift 2
223 .  IP "\f(CB\(rs\&\*[@arg1@][\fP\f(CI\&\*[@arg2@]\fP\f(CB]\&\$*\fP"
224 .  rm @arg1@
225 .  rm @arg2@
226 ..
227 .
228 .c synopsis escape sequence with quoted argument
229 .  de ESCq
230 .  ds @tmp@ \&\$1
231 .  shift 1
232 .  IP "\f(CB\(rs\&\*[@tmp@]\(cq\fP\f(CI\h'-0.2m'\$*\/\fP\f(CB\(cq\fP"
233 .  rm @tmp@
234 ..
235 .
236 .c synopsis for 2-escapes (special characters)
237 .de ESc
238 .  ds @tmp@ \$1
239 .  TP 14n
240 .  text \f(CB\(rs(\&\*[@tmp@]\ \ \ \fP\fR\(\*[@tmp@]\fP
241 .  shift 1
242 .  text \$*.
243 .  rm @tmp@
244 ..
245 .
246 .c --------- registers ---------
247 .
248 .c synopsis for registers
249 .de REG
250 .  TP 10n
251 .  text \&\f(CR\(rsn[\fP\f(CB\$1\fP\f(CR]\fP
252 .  shift 1
253 .if \n[.$] \&\$*
254 ..
255 .
256 .als register request
257 .
258 .c --------- warnings ---------
259 .
260 .als warning request
261 .
262 .c description of warnings
263 .de Warning
264 .  ne (2v + 1)
265 .  TP 12n
266 .  text \f(CB\$1\fP
267 .  text \f(CI\$2\fP
268 .  br
269 ..
270 .
271 .ec
272 .
273 .\" --------------------------------------------------------------------
274 .\" Title
275 .\" --------------------------------------------------------------------
276 .
277 .TH GROFF @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
278 .SH NAME
279 groff \- a short reference for the GNU roff language
280 .
281 .\" --------------------------------------------------------------------
282 .SH DESCRIPTION
283 .\" --------------------------------------------------------------------
284 .I groff
285 stands for
286 .I GNU roff
287 and is the free implementation of the roff type-setting system.
288 See
289 .BR roff (@MAN7EXT@)
290 for a survey and the background of the groff system.
291 .LP
292 This document gives only short descriptions of the predefined roff
293 language elements as used in groff.
294 Both the classical features and the groff extensions are provided.
295 .LP
296 Historically, the
297 .I roff language
298 was called
299 .IR troff .
300 .I groff
301 is compatible with the classical system and provides proper extensions.
302 So in GNU, the terms
303 .IR roff ,
304 .IR troff ,
305 and
306 .I groff language
307 could be used as synonyms.
308 However
309 .I troff
310 slightly tends to refer more to the classical aspects, whereas
311 .I groff
312 emphasizes the GNU extensions, and
313 .I roff
314 is the general term for the language.
315 .LP
316 This file is only a short version of the complete documentation that is
317 found in the
318 .I groff
319 .BR info (1)
320 file, which contains more detailed, actual, and concise information.
321 .LP
322 The general syntax for writing groff documents is relatively easy, but
323 writing extensions to the roff language can be a bit harder.
324 .LP
325 The roff language is line-oriented.
326 There are only two kinds of lines, control lines and text lines.
327 The control lines start with a control character, by default a period
328 .''char .
329 or a single quote
330 .''char ' ;
331 all other lines are text lines.
332 .LP
333 .B Control lines
334 represent commands, optionally with arguments.
335 They have the following syntax.
336 The leading control character can be followed by a command name;
337 arguments, if any, are separated by blanks from the command name and
338 among themselves, for example,
339 .RS
340 .LP
341 \&\.command_name arg1 arg2
342 .RE
343 .LP
344 For indentation, any number of space or tab characters can be inserted
345 between the leading control character and the command name, but the control
346 character must be on the first position of the line.
347 .LP
348 .B Text lines
349 represent the parts that will be printed.
350 They can be modified by escape sequences, which are recognized by a
351 leading backslash
352 .'char \(rs .
353 These are in-line or even in-word formatting elements or functions.
354 Some of these take arguments separated by single quotes
355 .''char ' ,
356 others are regulated by a length encoding introduced by an open
357 parenthesis
358 .'char (
359 or enclosed in brackets
360 .'char [
361 and
362 .'char ] .
363 .LP
364 The roff language provides flexible instruments for writing language
365 extension, such as macros.
366 When interpreting macro definitions, the roff system enters a special
367 operating mode, called the
368 .BR "copy mode" .
369 .LP
370 The copy mode behavior can be quite tricky, but there are some rules
371 that ensure a safe usage.
372 .IP 1.
373 Printable backslashes must be denoted as
374 .esc e .
375 To be more precise,
376 .esc e
377 represents the current escape character.
378 To get a backslash glyph, use
379 .esc (rs .
380 .IP 2.
381 Double all backslashes.
382 .IP 3.
383 Begin all text lines with the special non-spacing character
384 .esc & .
385 .LP
386 This does not produce the most efficient code, but it should work as a
387 first measure.
388 For better strategies, see the groff info file and
389 .BR groff_tmac (@MAN5EXT@).
390 .LP
391 Reading roff source files is easier, just reduce all double backslashes
392 to a single one in all macro definitions.
393 .
394 .\" --------------------------------------------------------------------
395 .SH "GROFF ELEMENTS"
396 .\" --------------------------------------------------------------------
397 The roff language elements add formatting information to a text file.
398 The fundamental elements are predefined commands and variables that make
399 roff a full-blown programming language.
400 .LP
401 There are two kinds of roff commands, possibly with arguments.
402 .B Requests
403 are written on a line of their own starting with a dot
404 .'char .
405 or a
406 .''char ' ,
407 whereas
408 .B Escape sequences
409 are in-line functions and in-word formatting elements starting with a
410 backslash
411 .'char \(rs .
412 .LP
413 The user can define her own formatting commands using the
414 .request .de
415 request.  These commands are called
416 .BR macros ,
417 but they are used exactly like requests.  Macro packages are pre-defined 
418 sets of macros written in the groff language.
419 A user's possibilities to create escape sequences herself is very
420 limited, only special characters can be mapped.
421 .LP
422 The groff language provides several kinds of variables with
423 different interfaces.
424 There are pre-defined variables, but the user can define her own
425 variables as well.
426 .LP
427 .B String
428 variables store character sequences.
429 They are set with the
430 .request .ds
431 request and retrieved by the
432 .esc *
433 escape sequences.
434 .LP
435 .B Register
436 variables can store numerical values, numbers with a scale unit, and
437 occasionally string-like objects.
438 They are set with the
439 .request .nr
440 request and retrieved by the
441 .esc n
442 escape sequences.
443 .LP
444 .B Environments
445 allow the user to temporarily store global formatting parameters like
446 line length, font size, etc. for later reuse.
447 This is done by the
448 .request .ev
449 request.
450 .LP
451 .B Fonts
452 are identified either by a name or by an internal number.
453 The current font is chosen by the
454 .request .ft
455 request or by the
456 .esc f
457 escape sequences.
458 Each device has special fonts, but the following fonts are available for 
459 all devices.
460 .B R
461 is the standard font Roman.
462 .B B
463 is its
464 .B bold
465 counterpart.
466 The
467 .I italic
468 font is called
469 .B I
470 is everywhere available, but on text devices, it is displayed as an
471 underlined Roman font.
472 For the graphical output devices, there exist constant-width pendants of
473 these font,
474 .BR CR ,
475 .BR CI ,
476 and
477 .BR CB .
478 On text devices, all characters have a constant width anyway.
479 .LP
480 Moreover, there are some advanced roff elements.
481 A
482 .B diversion
483 stores information into a macro for later usage.
484 A
485 .B trap
486 is a positional condition like a certain number of lines from page top
487 or in a diversion or in the input.
488 Some action can be prescribed to be run automatically when the condition
489 is met.
490 .LP
491 More detailed information can be found in the groff info file.
492 .
493 .\" --------------------------------------------------------------------
494 .SH "CONTROL CHARACTERS"
495 .\" --------------------------------------------------------------------
496 There is a small set of characters that have a special controlling task
497 in certain conditions.
498 .TP
499 .character .
500 A dot is only special at the beginning of a line or after the
501 condition in the requests
502 .request .if ,
503 .request .ie ,
504 .request .el ,
505 and
506 .request .while .
507 There it is the control character that introduces a request (or macro).
508 The special behavior can be delayed by using the
509 .esc .
510 escape.
511 By using the 
512 .request .cc
513 request, the control character can be set to a different character,
514 making the dot
515 .'char .
516 a non-special character.
517 .IP ""
518 In all other positions, it just means a dot character.
519 In text paragraphs, it is advantageous to start each sentence at a line
520 of its own.
521 .TP
522 .character '
523 The single quote has two controlling tasks.  At the beginning of a line
524 and in the conditional requests it is the non-breaking control
525 character.
526 That means that it introduces a request like the dot, but with the
527 additional property that this request doesn't cause a linebreak.
528 By using the 
529 .request .c2
530 request, the non-break control character can be set to a different
531 character.
532 .IP ""
533 As a second task, it is the most commonly used argument separator in
534 some functional escape sequences (but any pair of characters not part
535 of the argument will work).
536 In all other positions, it denotes the single quote or apostrophe
537 character.
538 Groff provides a printable representation with the
539 .esc (cq
540 escape sequence.
541 .TP
542 .character \(dq
543 The double quote is used to enclose arguments in requests and macros.  In
544 the
545 .request .ds
546 and
547 .request .as
548 requests, a leading double quote in the argument will be stripped off,
549 making everything else afterwards the string to be defined (enabling leading
550 whitespace).
551 The escaped double quote
552 .esc \(dq
553 introduces a comment.
554 Otherwise, it is not special.
555 Groff provides a printable representation with the
556 .esc (dq
557 escape sequence.
558 .TP
559 .character \(rs
560 The backslash usually introduces an escape sequence (this can be
561 changed with the
562 .request ec
563 request).
564 A printed version of the escape character is the
565 .esc e
566 escape; a backslash glyph can be obtained by
567 .esc (rs .
568 .TP
569 .character (
570 The open parenthesis is only special in escape sequences when
571 introducing an escape name or argument consisting of exactly two
572 characters.
573 In groff, this behavior can be replaced by the \f(CB[]\fP construct.
574 .TP
575 .character [
576 The opening bracket is only special in groff escape sequences; there it
577 is used to introduce a long escape name or long escape argument.
578 Otherwise, it is non-special, e.g. in macro calls.
579 .TP
580 .character ]
581 The closing bracket is only special in groff escape sequences; there it
582 terminates a long escape name or long escape argument.
583 Otherwise, it is non-special.
584 .TP
585 \f(CIspace\fP
586 Space characters are only functional characters.  They separate the
587 arguments in requests or macros, and the words in text lines.
588 They are subject to groff's horizontal spacing calculations.
589 To get a defined space width, escape sequences like
590 .'char "\(rs\ "
591 (this is the escape character followed by a space),
592 .esc | ,
593 .esc ^ ,
594 or
595 .esc h
596 should be used.
597 .IP \f(CInewline\fP
598 In text paragraphs, newlines mostly behave like space characters.
599 Continuation lines can be specified by an escaped newline, i.e., by
600 specifying a backslash
601 .'char \(rs
602 as the last character of a line.
603 .IP \f(CItab\fP
604 If a tab character occurs during text the interpreter makes a horizontal 
605 jump to the next pre-defined tab position.
606 There is a sophisticated interface for handling tab positions.
607 .
608 .\" --------------------------------------------------------------------
609 .SH "NUMERICAL EXPRESSIONS"
610 .\" --------------------------------------------------------------------
611 A
612 .B numerical value
613 is a signed or unsigned integer or float with or without an appended
614 scale indicator.
615 A
616 .B scale indicator
617 is a one-character abbreviation for a unit of measurement.
618 A number followed by a scale indicator signifies a size value.
619 By default, numerical values do not have a scale indicator, i.e., they are
620 normal numbers.
621 .LP
622 The roff language defines the following scale indicators.
623 .LP
624 .na
625 .nh
626 .TS
627 center, tab(@);
628 LfCB Lw(4i).
629 c@Centimeter
630 i@Inch
631 P@Pica\ \(eq\ 1/6\ inch
632 p@Point\ \(eq\ 1/72\ inch
633 m@T{
634 Em\ \(eq\ \fRthe font size in points (width of letter `\f(CRm\fR')
635 T}
636 M@100th \fRof an \f(CREm
637 n@En\ \(eq\ Em/2
638 u@\fRBasic unit for actual output device
639 v@\fRVertical line space in basic units
640 z@T{
641 scaled point\ \(eq\ 1/\f(CIsizescale\fR of a point (defined in
642 font \fIDESC\fP file)
643 T}
644 .TE
645 .LP
646 .ad
647 .hy
648 .B Numerical expressions
649 are combinations of the numerical values defined above with
650 the arithmetical operators
651 .operator + ,
652 .operator \- ,
653 .operator * ,
654 .operator / ,
655 .operator %
656 .RI ( modulo ),
657 the comparative operators
658 .operator ==
659 (this is the same as
660 .operator = ),
661 .operator <= ,
662 .operator >= ,
663 .operator < ,
664 .operator > ,
665 the logical operators
666 .operator &
667 .RI ( and ),
668 .operator :
669 .RI ( or ),
670 .operator !
671 .RI ( not ),
672 and the parentheses
673 .operator (
674 and
675 .operator ) .
676 .LP
677 Moreover,
678 .I groff
679 added the following operators for numerical expressions:
680 .LP
681 .na
682 .nh
683 .TS
684 center, tab(@);
685 LfCB Lw(4i).
686 e1\f(CB>?\fPe2@The maximum of \f(CIe1\fP and \f(CIe2\fP.
687 e1\f(CB<?\fPe2@The minimum of \f(CIe1\fP and \f(CIe2\fP.
688 \f(CB(\fPc\f(CB;\fPe\f(CB)@T{
689 Evaluate \f(CIe\fP using \f(CIc\fP as the default scaling
690 indicator.
691 T}
692 .TE
693 .LP
694 .ad
695 .hy
696 For details see the groff info file.
697 .
698 .\" --------------------------------------------------------------------
699 .SH CONDITIONS
700 .\" --------------------------------------------------------------------
701 .B Conditions
702 occur in tests raised by the
703 .request .if ,
704 .request .ie ,
705 and the
706 .request .while
707 requests.
708 The following table characterizes the different types of conditions.
709 .LP
710 .na
711 .nh
712 .TS
713 center, tab(@);
714 LfCB Lw(4i).
715 \f(CIN\fP@T{
716 A numerical expression \f(CIN\fP yields true if its value
717 is\ \f(CR>0\fP.
718 T}
719 !\f(CIN\fP@T{
720 True if the value of \f(CIN\fP is\ \f(CR\(<=0\fP.
721 T}
722 \&'\f(CIs1\fP'\f(CIs2\fP'@T{
723 True if string\ \f(CIs1\fP is identical to string\ \f(CIs2\fP.
724 T}
725 !'\f(CIs1\fP'\f(CIs2\fP'@T{
726 True if string\ \f(CIs1\fP is not identical to string\ \f(CIs2\fP.
727 T}
728 c\f(CIch@T{
729 True if there is a character\ \f(CIch\fP available.
730 T}
731 d\f(CIname@T{
732 True if there is a string, macro, diversion, or request
733 called \f(CIname\fP.
734 T}
735 e@Current page number is even.
736 o@Current page number is odd.
737 n@Formatter is \fBnroff\fP.
738 r\f(CIreg@T{
739 True if there is a register named \f(CIreg\fP.
740 T}
741 t@Formatter is \fBtroff\fR.
742 .TE
743 .LP
744 .ad
745 .hy
746 .
747 .\" --------------------------------------------------------------------
748 .SH REQUESTS
749 .\" --------------------------------------------------------------------
750 This section provides a short reference for the predefined requests.
751 In groff, request and macro names can be arbitrarily long.
752 No bracketing or marking of long names is needed.
753 .LP
754 Most requests take one or more arguments.
755 The arguments are separated by space characters (no tabs!); there is no
756 inherent limit for their length or number.
757 An argument can be enclosed by a pair of double quotes: This is very handy
758 if an argument contains space characters, e.g.,
759 .argument "\(dqarg\ with\ space\(dq"
760 denotes a single argument.
761 .LP
762 Some requests have optional arguments with a different behaviour.
763 Not all of these details are outlined here.
764 Refer to the groff info file for all details.
765 .LP
766 In the following request specifications, most argument names were chosen
767 to be descriptive.
768 Only the following denotations need clarification.
769 .LP
770 .na
771 .nh
772 .TS
773 center, tab(@);
774 LfCI Lw(4i).
775 c@denotes a single character.
776 font@T{
777 a font either specified as a font name or a font number.
778 T}
779 anything@T{
780 all characters up to the end of the line or within \f(CB\(rs{\fP
781 and \f(CB\(rs}\fP.
782 T}
783 n@T{
784 is a numerical expression that evaluates to an integer value.
785 T}
786 N@T{
787 is an arbitrary numerical expression, signed or unsigned.
788 T}
789 \(+-N@T{
790 has three meanings depending on its sign, described below.
791 T}
792 .TE
793 .LP
794 .ad
795 .hy
796 If an expression defined as
797 .argument \(+-N
798 starts with a
799 .operator +
800 sign the resulting value of the expression will be added to an already
801 existing value inherent to the related request, e.g. adding to a number
802 register.
803 If the expression starts with a
804 .operator -
805 the value of the expression will be subtracted from the request value.
806 .LP
807 Without a sign,
808 .argument N
809 replaces the existing value directly.
810 To assign a negative number either prepend\ \c
811 .number 0
812 or enclose the negative number in parentheses.
813 .
814 .\" --------------------------------------------------------------------
815 .SS "REQUEST SHORT REFERENCE"
816 .\" --------------------------------------------------------------------
817 .PD 0
818 .
819 .REQ .
820 Empty line, ignored.  Useful for structuring documents.
821 .
822 .REQ .\(rs\(dq anything
823 Complete line is a comment.
824 .
825 .REQ .ab string
826 Print
827 .argument string
828 on standard error, exit program.
829 .
830 .REQ .ad
831 Begin line adjustment for output lines in current adjust mode.
832 .
833 .REQ .ad c
834 Start line adjustment in mode
835 .argument c
836 (\f(CIc\fP\f(CR\|\^\(eq\|l,r,b,n\fP).
837 .
838 .REQ .af register c
839 Assign format
840 .argument c
841 to
842 .argument register
843 (\f(CIc\fP\f(CR\|\^\(eq\|l,i,I,a,A\fP).
844 .
845 .REQ .aln alias register
846 Create alias name for
847 .argument register .
848 .
849 .REQ .als alias object
850 Create alias name for request, string, macro, or diversion
851 .argument object .
852 .
853 .REQ .am macro
854 Append to
855 .argument macro
856 until
857 .request ..
858 is called.
859 .
860 .REQ .am macro end
861 Append to
862 .argument macro
863 until
864 .request .end
865 is called.
866 .
867 .REQ .am1 macro
868 Same as
869 .request .am
870 but with compatibility mode switched off during macro expansion.
871 .
872 .REQ .am1 macro end
873 Same as
874 .request .am
875 but with compatibility mode switched off during macro expansion.
876 .
877 .REQ .as stringvar anything
878 Append
879 .argument anything
880 to
881 .argument stringvar .
882 .
883 .REQ .asciify diversion
884 Unformat ASCII characters, spaces, and some escape sequences in
885 .argument diversion .
886 .
887 .REQ .backtrace
888 Print a backtrace of the input on stderr.
889 .
890 .REQ .bd font N
891 Embolden
892 .argument font
893 by
894 .argterm N -1
895 units.
896 .
897 .REQ .bd S font N
898 Embolden Special Font
899 .argument S
900 when current font is
901 .argument font .
902 .
903 .REQ .blm
904 Unset the blank line macro.
905 .
906 .REQ .blm macro
907 Set the blank line macro to
908 .argument macro .
909 .
910 .REQ .box
911 End current diversion.
912 .
913 .REQ .box macro
914 Divert to
915 .argument macro ,
916 omitting a partially filled line.
917 .
918 .REQ .boxa
919 End current diversion.
920 .
921 .REQ .boxa macro
922 Divert and append to
923 .argument macro ,
924 omitting a partially filled line.
925 .
926 .REQ .bp
927 Eject current page and begin new page.
928 .
929 .REQ .bp \(+-N
930 Eject current page; next page number
931 .argument \(+-N .
932 .
933 .REQ .br
934 Line break.
935 .
936 .REQ .brp
937 Break and spread output line.
938 Same as
939 .esc p .
940 .
941 .REQ .break
942 Break out of a while loop.
943 .
944 .REQ .c2
945 Reset no-break control character to
946 .''char ' .
947 .
948 .REQ .c2 c
949 Set no-break control character to
950 .argument c .
951 .
952 .REQ .cc
953 Reset control character to
954 .'char . .
955 .
956 .REQ .cc c
957 Set control character to
958 .argument c .
959 .
960 .REQ .ce
961 Center the next input line.
962 .
963 .REQ .ce N
964 Center following
965 .argument N
966 input lines.
967 .
968 .REQ .cf filename
969 Copy contents of file
970 .argument filename
971 unprocessed to stdout or to the diversion.
972 .
973 .REQ .cflags mode c1 c2 ...
974 Treat characters
975 .argument c1 ,
976 .argument c2 ,
977 .argument ...
978 according to
979 .argument mode
980 number.
981 .
982 .REQ .ch trap N
983 Change
984 .argument trap
985 location
986 to
987 .argument N .
988 .
989 .REQ .char c anything
990 Define character
991 .argument c
992 to string
993 .argument anything .
994 .
995 .REQ .chop object
996 Chop the last character off macro, string, or diversion
997 .argument object .
998 .
999 .REQ .close stream
1000 Close the
1001 .argument stream .
1002 .
1003 .REQ .continue
1004 Finish the current iteration of a while loop.
1005 .
1006 .REQ .cp
1007 Enable compatibility mode.
1008 .
1009 .REQ .cp N
1010 If
1011 .I N
1012 is zero disable compatibility mode, otherwise enable it.
1013 .
1014 .REQ .cs font N M
1015 Set constant character width mode for
1016 .argument font
1017 to
1018 .argterm N /36
1019 ems with em
1020 .argument M .
1021 .
1022 .REQ .cu N
1023 Continuous underline in nroff, like
1024 .request .ul
1025 in troff.
1026 .
1027 .REQ .da
1028 End current diversion.
1029 .
1030 .REQ .da macro
1031 Divert and append to
1032 .argument macro .
1033 .
1034 .REQ .de macro
1035 Define or redefine
1036 .argument macro
1037 until
1038 .request ..
1039 is called.
1040 .
1041 .REQ .de macro end
1042 Define or redefine
1043 .argument macro
1044 until
1045 .request .end
1046 is called.
1047 .
1048 .REQ .de1 macro
1049 Same as
1050 .request .de
1051 but with compatibility mode switched off during macro expansion.
1052 .
1053 .REQ .de1 macro end
1054 Same as
1055 .request .de
1056 but with compatibility mode switched off during macro expansion.
1057 .
1058 .REQ .dei macro
1059 Define or redefine a macro whose name is contained in the string register
1060 .argument macro
1061 until
1062 .request ..
1063 is called.
1064 .
1065 .REQ .dei macro end
1066 Define or redefine a macro indirectly.
1067 .argument macro
1068 and
1069 .argument end
1070 are string registers whose contents are interpolated for the macro name
1071 and the end macro, respectively.
1072 .
1073 .REQ .di
1074 End current diversion.
1075 .
1076 .REQ .di macro
1077 Divert to
1078 .argument macro .
1079 .
1080 .REQ .do name
1081 Interpret
1082 .request .name
1083 with compatibility mode disabled.
1084 .
1085 .REQ .ds stringvar anything
1086 Set
1087 .argument stringvar
1088 to
1089 .argument anything .
1090 .
1091 .REQ .dt N trap
1092 Set diversion trap to position
1093 .argument N
1094 (default scale indicator\ \c
1095 .scaleindicator v ).
1096 .
1097 .REQ .ec
1098 Reset escape character to
1099 .'char \(rs .
1100 .
1101 .REQ .ec c
1102 Set escape character to
1103 .argument c .
1104 .
1105 .REQ .ecr
1106 Restore escape character saved with
1107 .request .ecs .
1108 .
1109 .REQ .ecs
1110 Save current escape character.
1111 .
1112 .REQ .el anything
1113 Else part for if-else (\c
1114 .argument .ie )
1115 request.
1116 .
1117 .REQ .em macro
1118 The
1119 .argument macro
1120 will be run after the end of input.
1121 .
1122 .REQ .eo
1123 Turn off escape character mechanism.
1124 .
1125 .REQ .ev
1126 Switch to previous environment.
1127 .
1128 .REQ .ev env
1129 Push down environment number or name
1130 .argument env
1131 and switch to it.
1132 .
1133 .REQ .evc env
1134 Copy the contents of environment
1135 .argument env
1136 to the current environment.
1137 No pushing or popping.
1138 .
1139 .REQ .ex
1140 Exit from roff processing.
1141 .
1142 .REQ .fam
1143 Return to previous font family.
1144 .
1145 .REQ .fam name
1146 Set the current font family to
1147 .argument name .
1148 .
1149 .REQ .fc
1150 Disable field mechanism.
1151 .
1152 .REQ .fc a
1153 Set field delimiter to
1154 .argument a
1155 and pad character to space.
1156 .REQ .fc a b
1157 Set field delimiter to
1158 .argument a
1159 and pad character to
1160 .argument b .
1161 .
1162 .REQ .fi
1163 Fill output lines.
1164 .
1165 .REQ .fl
1166 Flush output buffer.
1167 .
1168 .REQ .fp n font
1169 Mount
1170 .argument font
1171 on position
1172 .argument n .
1173 .
1174 .REQ .fp n internal external
1175 Mount font with long
1176 .argument external
1177 name to short
1178 .argument internal
1179 name on position
1180 .argument n .
1181 .
1182 .REQ .fspecial font s1 s2...
1183 When the current font is
1184 .argument font ,
1185 then the fonts
1186 .argument s1 ,
1187 .argument s2 ,
1188 .argument ...
1189 will be special.
1190 .
1191 .REQ .ft
1192 Return to previous font.
1193 Same as
1194 .request \(rsfP .
1195 .REQ .ft font
1196 Change to font name or number
1197 .argument font ;
1198 same as
1199 .esc[arg] f font
1200 escape sequence.
1201 .
1202 .REQ .ftr font1 font2
1203 Translate
1204 .argument font1
1205 to
1206 .argument font2 .
1207 .
1208 .REQ .hc
1209 Remove additional hyphenation indicator character.
1210 .
1211 .REQ .hc c
1212 Set up additional hyphenation indicator character\ \c
1213 .argument c .
1214 .
1215 .REQ .hcode c1 code1 c2 code2 ...
1216 Set the hyphenation code of character
1217 .argument c1
1218 to
1219 .argument code1 ,
1220 that of
1221 .argument c2
1222 to
1223 .argument code2 ,
1224 etc.
1225 .
1226 .REQ .hla lang
1227 Set the current hyphenation language to
1228 .argument lang .
1229 .
1230 .REQ .hlm n
1231 Set the maximum number of consecutive hyphenated lines to
1232 .argument n .
1233 .
1234 .REQ .hpf file
1235 Read hyphenation patterns from
1236 .argument file .
1237 .
1238 .REQ .hw words
1239 List of
1240 .argument words
1241 with exceptional hyphenation.
1242 .
1243 .REQ .hy N
1244 Switch to hyphenation mode
1245 .argument N .
1246 .
1247 .REQ .hym n
1248 Set the hyphenation margin to
1249 .argument n
1250 (default scale indicator\ \c
1251 .scaleindicator m ).
1252 .
1253 .REQ .hys n
1254 Set the hyphenation space to
1255 .argument n .
1256 .
1257 .REQ .ie cond anything
1258 If
1259 .argument cond
1260 then
1261 .argument anything
1262 else goto
1263 .request .el .
1264 .
1265 .REQ .if cond anything
1266 If
1267 .argument cond
1268 then
1269 .argument anything ;
1270 otherwise do nothing.
1271 .
1272 .REQ .ig
1273 Ignore text until
1274 .request ..
1275 is called.
1276 .
1277 .REQ .ig end
1278 Ignore text until
1279 .request .end .
1280 .
1281 .REQ .in
1282 Change to previous indent value.
1283 .
1284 .REQ .in \(+-N
1285 Change indent according to
1286 .argument \(+-N
1287 (default scale indicator\ \c
1288 .scaleindicator m ).
1289 .
1290 .REQ .it N trap
1291 Set an input-line count trap at position
1292 .argument N .
1293 .
1294 .REQ .kern
1295 Enable pairwise kerning.
1296 .
1297 .REQ .kern n
1298 If
1299 .argument n
1300 is zero, disable pairwise kerning, otherwise enable it.
1301 .
1302 .REQ .lc
1303 Remove leader repetition character.
1304 .
1305 .REQ .lc c
1306 Set leader repetition character to\ \c
1307 .argument c .
1308 .
1309 .REQ .length register anything
1310 Write the length of the string
1311 .argument anything
1312 in
1313 .argument register .
1314 .
1315 .REQ .linetabs
1316 Enable line-tabs mode (i.e., calculate tab positions relative to output
1317 line).
1318 .
1319 .REQ .linetabs n
1320 If
1321 .argument n
1322 is zero, disable line-tabs mode, otherwise enable it.
1323 .
1324 .REQ .lf N file
1325 Set input line number to
1326 .argument N
1327 and filename to
1328 .argument file .
1329 .
1330 .REQ .lg N
1331 Ligature mode on if
1332 .argterm N >0 .
1333 .
1334 .REQ .ll
1335 Change to previous line length.
1336 .
1337 .REQ .ll \(+-N
1338 Set line length according to
1339 .argument \(+-N
1340 (default size
1341 .scalednumber 6.5 i ,
1342 default scale indicator\ \c
1343 .scaleindicator m ).
1344 .
1345 .REQ .ls
1346 Change to the previous value of additional intra-line skip.
1347 .
1348 .REQ .ls N
1349 Set additional intra-line skip value to
1350 .argument N ,
1351 i.e.,
1352 .argterm N -1
1353 blank lines are inserted after each text output line.
1354 .
1355 .REQ .lt \(+-N
1356 Length of title (default scale indicator\ \c
1357 .scaleindicator m ).
1358 .
1359 .REQ .mc
1360 Margin character off.
1361 .
1362 .REQ .mc c
1363 Print character
1364 .argument c
1365 after each text line at actual distance from right margin.
1366 .
1367 .REQ .mc c N
1368 Set margin character to
1369 .argument c
1370 and distance to
1371 .argument N
1372 from right margin (default scale indicator\ \c
1373 .scaleindicator m ).
1374 .
1375 .REQ .mk register
1376 Mark current vertical position in
1377 .argument register .
1378 .
1379 .REQ .mso file
1380 The same as the .so request except that
1381 .I file
1382 is searched in the tmac directories.
1383 .
1384 .REQ .na
1385 No output-line adjusting.
1386 .
1387 .REQ .ne
1388 Need a one-line vertical space.
1389 .
1390 .REQ .ne N
1391 Need
1392 .argument N
1393 vertical space (default scale indicator\ \c
1394 .scaleindicator v ).
1395 .
1396 .REQ .nf
1397 No filling or adjusting of output-lines.
1398 .
1399 .REQ .nh
1400 No hyphenation.
1401 .
1402 .REQ .nm
1403 Number mode off.
1404 .
1405 .REQ .nm \(+-N M S I
1406 In line number mode, set number, multiple, spacing, and indent.
1407 .
1408 .REQ .nn
1409 Do not number next line.
1410 .
1411 .REQ .nn N
1412 Do not number next
1413 .argument N
1414 lines.
1415 .
1416 .REQ .nop anything
1417 Always execute
1418 .argument anything .
1419 .
1420 .REQ .nr register \(+-N M
1421 Define or modify
1422 .argument register
1423 using
1424 .argument \(+-N
1425 with auto-increment
1426 .argument M .
1427 .
1428 .REQ .nroff
1429 Make the built-in condition
1430 .B n
1431 true and
1432 .B t
1433 false.
1434 .
1435 .REQ .ns
1436 Turn no-space mode on.
1437 .
1438 .REQ .nx filename
1439 Next file.
1440 .
1441 .REQ .open stream filename
1442 Open
1443 .register filename
1444 for writing and associate the stream named
1445 .register stream
1446 with it.
1447 .
1448 .REQ .opena stream filename
1449 Like
1450 .request .open
1451 but append to it.
1452 .
1453 .REQ .os
1454 Output vertical distance that was saved by the
1455 .request .sv
1456 request.
1457 .
1458 .REQ .pc
1459 Reset page number character to\ \c
1460 .'char % .
1461 .
1462 .REQ .pc c
1463 Page number character.
1464 .
1465 .REQ .pi program
1466 Pipe output to
1467 .argument program
1468 (nroff only).
1469 .
1470 .REQ .pl
1471 Set page length to default
1472 .scalednumber 11 i .
1473 The current page length is stored in
1474 .register .p .
1475 .
1476 .REQ .pl \(+-N
1477 Change page length to
1478 .argument \(+-N
1479 (default scale indicator\ \c
1480 .scaleindicator v ).
1481 .
1482 .REQ .pm
1483 Print macro names and sizes (number of blocks of 128 bytes).
1484 .
1485 .REQ ".pm t"
1486 Print only total of sizes of macros (number of 128 bytes blocks).
1487 .
1488 .REQ .pn \(+-N
1489 Next page number
1490 .argument N .
1491 .
1492 .REQ .pnr
1493 Print the names and contents of all currently defined number registers
1494 on stderr.
1495 .
1496 .REQ .po
1497 Change to previous page offset.  The current page offset is available in
1498 .register .o .
1499 .
1500 .REQ .po \(+-N
1501 Page offset
1502 .argument N .
1503 .
1504 .REQ .ps
1505 Return to previous point-size.
1506 .REQ .ps \(+-N
1507 Point size; same as
1508 .esc[arg] s \(+-N .
1509 .
1510 .REQ .psbb filename
1511 Get the bounding box of a PostScript image
1512 .argument filename .
1513 .
1514 .REQ .pso command
1515 This behaves like the
1516 .request .so
1517 request except that input comes from the standard output of
1518 .argument command .
1519 .
1520 .REQ .ptr
1521 Print the names and positions of all traps (not including input line
1522 traps and diversion traps) on stderr.
1523 .
1524 .REQ .rchar c1 c2...
1525 Remove the definitions of characters
1526 .argument c1 ,
1527 .argument c2 ,
1528 .argument ...
1529 .
1530 .REQ .rd prompt
1531 Read insertion.
1532 .
1533 .REQ .return
1534 Return from a macro.
1535 .
1536 .REQ .rj n
1537 Right justify the next
1538 .argument n
1539 input lines.
1540 .
1541 .REQ .rm name
1542 Remove request, macro, or string
1543 .argument name .
1544 .
1545 .REQ .rn old new
1546 Rename request, macro, or string
1547 .argument old
1548 to
1549 .argument new .
1550 .
1551 .REQ .rnn reg1 reg2
1552 Rename register
1553 .argument reg1
1554 to
1555 .argument reg2 .
1556 .
1557 .REQ .rr register
1558 Remove
1559 .argument register .
1560 .
1561 .REQ .rs
1562 Restore spacing; turn no-space mode off.
1563 .
1564 .REQ .rt \(+-N
1565 Return
1566 .I (upward only)
1567 to marked vertical place (default scale indicator\ \c
1568 .scaleindicator v ).
1569 .
1570 .REQ .shc
1571 Reset soft hyphen character to
1572 .esc (hy .
1573 .
1574 .REQ .shc c
1575 Set the soft hyphen character to
1576 .argument c .
1577 .
1578 .REQ .shift n
1579 In a macro, shift the arguments by
1580 .argument n \ \c
1581 positions.
1582 .
1583 .REQ .so filename
1584 Include source file.
1585 .
1586 .REQ .sp
1587 Skip one line vertically.
1588 .
1589 .REQ .sp N
1590 Space vertical distance
1591 .argument N
1592 up or down according to sign of
1593 .argument N
1594 (default scaling indicator\ \c
1595 .scaleindicator v ).
1596 .
1597 .REQ .special s1 s2 ...
1598 Fonts
1599 .argument s1 ,
1600 .argument s2 ,
1601 etc. are special and will be searched for characters not in the current font.
1602 .
1603 .REQ .ss N
1604 Space-character size set to
1605 .argument N /12
1606 of the spacewidth in the current font.
1607 .
1608 .REQ .ss N M
1609 Space-character size set to
1610 .argterm N /12
1611 and sentence space size set to
1612 .argterm M /12
1613 of the spacewidth in the current font (\f(CR\(eq1/3 em\fP).
1614 .
1615 .REQ .sty n style
1616 Associate
1617 .argument style
1618 with font position
1619 .argument n .
1620 .
1621 .REQ .substring register n1 n2
1622 Replace the string in
1623 .argument register
1624 with the substring defined by the indices
1625 .argument n1
1626 and
1627 .argument n2 .
1628 .
1629 .REQ .sv
1630 Save
1631 .scalednumber 1 v
1632 of vertical space.
1633 .
1634 .REQ .sv N
1635 Save the vertical distance
1636 .argument N
1637 for later output with
1638 .request .os
1639 request.
1640 .
1641 .REQ .sy command-line
1642 Execute program
1643 .argument command-line .
1644 .
1645 .REQ ".ta T" N
1646 Set tabs after every position that is a multiple of
1647 .argument N
1648 (default scaling indicator\ \c
1649 .scaleindicator m ).
1650 .REQ .ta n1 n2 ... nn \f(CBT\fP r1 r2 ... rn
1651 Set tabs at positions
1652 .argument n1 ,
1653 .argument n2 ,
1654 \&...,
1655 .argument nn ,
1656 then set tabs at
1657 .argument nn + r1 ,
1658 .argument nn + r2 ,
1659 \&...,
1660 .argument nn + rn ,
1661 then at
1662 .argument nn + rn + r1 ,
1663 .argument nn + rn + r2 ,
1664 \&...,
1665 .argument nn + rn + rn ,
1666 and so on.
1667 .
1668 .\".REQ .tar
1669 .\"Restore internally saved tab positions.
1670 .\".
1671 .\".REQ .tas
1672 .\"Save tab positions internally.
1673 .
1674 .REQ .tc
1675 Remove tab repition character.
1676 .REQ .tc c
1677 Set tab repetition character to\ \c
1678 .argument c .
1679 .
1680 .REQ .ti \(+-N
1681 Temporary indent next line (default scaling indicator\ \c
1682 .scaleindicator m ).
1683 .
1684 .REQ .tkf font s1 n1 s2 n2
1685 Enable track kerning for
1686 .argument font .
1687 .
1688 .REQ .tl \f(CB\(cq\fPleft\f(CB\(cq\fPcenter\f(CB\(cq\fPright\f(CB\(cq\fP
1689 Three-part title.
1690 .
1691 .REQ .tm anything
1692 Print
1693 .argument anything
1694 on terminal (UNIX standard message output).
1695 .
1696 .REQ .tm1 anything
1697 Print
1698 .argument anything
1699 on terminal (UNIX standard message output), allowing leading whitespace if
1700 .argument anything
1701 starts with
1702 .character \(dq
1703 (which will be stripped off).
1704 .
1705 .REQ .tmc anything
1706 Similar to
1707 .request .tm1
1708 without emitting a final newline.
1709 .
1710 .REQ .tr abcd....
1711 Translate
1712 .argument a
1713 to
1714 .argument b ,
1715 .argument c
1716 to
1717 .argument d ,
1718 etc. on output.
1719 .
1720 .REQ .trf filename
1721 Transparently output the contents of file
1722 .argument filename .
1723 .
1724 .REQ .trnt abcd....
1725 This is the same as the
1726 .request .tr
1727 request except that the translations do not apply to text that is
1728 transparently throughput into a diversion with
1729 .esc ! .
1730 .
1731 .REQ .troff
1732 Make the built-in condition
1733 .B t
1734 true and
1735 .B n
1736 false.
1737 .
1738 .REQ .uf font
1739 Underline font set to
1740 .argument font
1741 (to be switched to by
1742 .request .ul ).
1743 .
1744 .REQ .ul N
1745 Underline (italicize in troff)
1746 .argument N
1747 input lines.
1748 .
1749 .REQ .unformat diversion
1750 Unformat space characters and tabs, preserving font information in
1751 .argument diversion .
1752 .REQ .vpt n
1753 Enable vertical position traps if
1754 .argument n
1755 is non-zero, disable them otherwise.
1756 .
1757 .REQ .vs
1758 Change to previous vertical base line spacing.
1759 .
1760 .REQ .vs N
1761 Set vertical base line spacing to
1762 .argument N .
1763 Default value is
1764 .scalednumber 12 p .
1765 .
1766 .REQ .warn n
1767 Set warnings code to
1768 .argument n .
1769 .
1770 .REQ .wh N trap
1771 Set location trap; negative means from page bottom.
1772 .
1773 .REQ .while cond anything
1774 While condition
1775 .argument cond
1776 is true, accept
1777 .argument anything
1778 as input.
1779 .
1780 .REQ .write stream anything
1781 Write
1782 .argument anything
1783 to the stream named
1784 .argument stream .
1785 .
1786 .PD
1787 .LP
1788 Besides these standard groff requests, there might be further macro
1789 calls.
1790 They can originate from a macro package (see
1791 .BR roff (@MAN7EXT@)
1792 for an overview) or from a preprocessor.
1793 .LP
1794 Preprocessor macros are easy to be recognized.  They enclose their code
1795 into a pair of characteristic macros.
1796 .LP
1797 .TS
1798 box, center, tab (@);
1799 c | c | c
1800 CfCB | CfCB | CfCB.
1801 preprocessor@start macro@ end macro
1802 =
1803 eqn@.PS@.PE
1804 grap@.G1@.G2
1805 grn@.GS@.GE
1806 pic@.PS@.PE
1807 refer@.R1@.R2
1808 soelim@\fInone@\fInone
1809 tbl@.TS@.TE
1810 .TE
1811 .LP
1812 .
1813 .\" --------------------------------------------------------------------
1814 .SH "ESCAPE SEQUENCES"
1815 .\" --------------------------------------------------------------------
1816 .
1817 Escape sequences are in-line language elements usually introduced by
1818 a backslash
1819 .'char \(rs
1820 and followed by an escape name and sometimes by a required argument.
1821 Input processing is continued directly after the escaped character or
1822 the argument resp. without an intervening separation character.
1823 So there must be a way to determine the end of the escape name and the end
1824 of the argument.
1825 .LP
1826 This is done by enclosing names (escape name and arguments consisting of
1827 a variable name) by a pair of brackets
1828 .esc[] name
1829 and constant arguments (number expressions and characters) by apostrophes
1830 (ASCII 0x27) like
1831 .IR \(cqconstant\(cq .
1832 .LP
1833 There are abbreviations for short names.
1834 Two character escape names can be specified by an opening parenthesis like
1835 .esc( xy
1836 without a closing counterpart.
1837 And all one-character names different from the special characters
1838 .'char [
1839 and
1840 .'char (
1841 can even be specified without a marker in the form
1842 .esc \fP\f(CIc .
1843 .LP
1844 Constant arguments of length
1845 .number 1
1846 can omit the marker apostrophes, too, but there is no two-character
1847 analogue.
1848 .LP
1849 While 1-character escape sequences are mainly used for in-line functions
1850 and system related tasks, the 2-letter names following the
1851 .esc( ""
1852 construct are used for special characters predefined by the roff system.
1853 Names with more than two characters
1854 .esc[] name
1855 mostly denote user defined named characters (see the
1856 .request .char
1857 request).
1858 .
1859 .\" --------------------------------------------------------------------
1860 .SS "SINGLE CHARACTER ESCAPES"
1861 .\" --------------------------------------------------------------------
1862 .
1863 .PD 0
1864 .
1865 .\" --------- comments ---------
1866 .
1867 .ESC \(dq
1868 Beginning of a comment.
1869 Everything up to the end of the line is ignored.
1870 .
1871 .ESC #
1872 Everything up to and including the next newline is ignored.
1873 This is interpreted in copy mode.
1874 This is like
1875 .esc \(dq
1876 except the ignoring of the terminating newline.
1877 .
1878 .\" --------- strings ---------
1879 .
1880 .ESC * s
1881 The string stored in the string variable with 1-character name
1882 .argument s .
1883 .
1884 .ESC *( st
1885 The string stored in the string variable with 2-character name
1886 .argument st .
1887 .
1888 .ESC[] * stringvar
1889 The string stored in the string variable with arbitrary length name
1890 .argument stringvar .
1891 .
1892 .\" --------- macro arguments ---------
1893 .
1894 .ESC $0
1895 The name by which the current macro was invoked.  The
1896 .request .als
1897 request can make a macro have more than one name.
1898 .
1899 .ESC $ x
1900 Macro argument with 1-place number
1901 .argument x ,
1902 where
1903 .argument x
1904 is a digit between 1 and 9.
1905 .
1906 .ESC $( xy
1907 Macro argument with 2-digit number
1908 .argument xy .
1909 .
1910 .ESC[] $ nexp
1911 Macro argument with number
1912 .argument nexp ,
1913 where
1914 .argument nexp
1915 is a numerical expression evaluating to an integer \(>=1.
1916 .
1917 .ESC $*
1918 In a macro, the concatenation of all the arguments separated by spaces.
1919 .
1920 .ESC $@
1921 In a macro, the concatenation of all the arguments with each surrounded
1922 by double quotes, and separated by spaces.
1923 .
1924 .\" --------- escaped characters ---------
1925 .
1926 .ESC \(rs
1927 reduces to a single backslash; useful to delay its interpretation as
1928 escape character in copy mode.
1929 For a printable backslash, use
1930 .esc e .
1931 .
1932 .ESC \(cq
1933 The acute accent \(aa; same as
1934 .esc( aa .
1935 Unescaped: apostrophe, right quotation mark, single quote (ASCII 0x27).
1936 .
1937 .ESC `
1938 The grave accent \(ga; same as
1939 .esc( ga .
1940 Unescaped: left quote, backquote (ASCII 0x60).
1941 .
1942 .ESC \-
1943 The \- sign in the current font.
1944 .
1945 .ESC .
1946 An uninterpreted dot (period), even at start of line.
1947 .
1948 .ESC %
1949 Default optional hyphenation character.
1950 .
1951 .ESC !
1952 Transparent line indicator.
1953 .
1954 .ESC ? anything\fB?\fP
1955 In a diversion, this will transparently embed
1956 .argument anything
1957 in the diversion.
1958 .argument anything
1959 is read in copy mode.
1960 See also the escape sequences
1961 .esc !
1962 and
1963 .esc ? .
1964 .
1965 .
1966 .\" --------- spacing ---------
1967 .
1968 .ESC \& space
1969 Unpaddable space-size space character (no line break).
1970 .
1971 .ESC 0
1972 Digit width.
1973 .
1974 .ESC |
1975 1/6\ em narrow space character; zero width in nroff.
1976 .
1977 .ESC ^
1978 1/12\ em half-narrow space character; zero width in nroff.
1979 .
1980 .ESC &
1981 Non-printable, zero width character.
1982 .
1983 .ESC )
1984 Like
1985 .esc &
1986 except that it behaves like a character declared with the cflags
1987 request to be transparent for the purposes of end of sentence
1988 recognition.
1989 .
1990 .ESC /
1991 Increases the width of the preceding character so that the spacing
1992 between that character and the following character will be correct if
1993 the following character is a roman character.
1994 .
1995 .ESC ,
1996 Modifies the spacing of the following character so that the spacing
1997 between that character and the preceding character will correct if the
1998 preceding character is a roman character.
1999 .
2000 .ESC ~
2001 Unbreakable space that stretches like a normal inter-word space when a
2002 line is adjusted.
2003 .
2004 .ESC :
2005 Inserts a zero-width break point (similar to
2006 .esc %
2007 but without a soft hyphen character).
2008 .
2009 .ESC \& newline
2010 Ignored newline, for continuation lines.
2011 .
2012 .\" --------- structuring ---------
2013 .
2014 .ESC {
2015 Begin conditional input.
2016 .
2017 .ESC }
2018 End conditional input.
2019 .
2020 .\" --------- longer escape names ---------
2021 .
2022 .ESC ( st
2023 The special character with 2-character name
2024 .argument st ,
2025 see section
2026 .BR "SPECIAL CHARACTERS" .
2027 .
2028 .ESC[] \& name
2029 The named character with arbitrary length name
2030 .argument name .
2031 .
2032 .\" --------- alphabetical escapes ---------
2033 .
2034 .ESC a
2035 Non-interpreted leader character.
2036 .
2037 .ESCq A anything
2038 If
2039 .argument anything
2040 is acceptable as a name of a string, macro, diversion, register,
2041 environment or font it expands to
2042 .number 1 ,
2043 and
2044 .number 0
2045 otherwise.
2046 .
2047 .ESCq b abc...
2048 Bracket building function.
2049 .
2050 .ESCq B anything
2051 If
2052 .argument anything
2053 is acceptable as a valid numeric expression it expands to
2054 .number 1 ,
2055 and
2056 .number 0
2057 otherwise.
2058 .
2059 .ESC c
2060 Interrupt text processing.
2061 .
2062 .ESCq C char
2063 The character called
2064 .argument char ;
2065 same as
2066 .esc[] char ,
2067 but compatible to other roff versions.
2068 .
2069 .ESC d
2070 Forward (down) 1/2 em vertical unit (1/2 line in nroff).
2071 .
2072 .ESCq D charseq
2073 Draw a graphical element defined by the characters in
2074 .argument charseq ;
2075 see groff info file for details.
2076 .
2077 .ESC e
2078 Printable version of the current escape character.
2079 .
2080 .ESC E
2081 Equivalent to an escape character, but is not interpreted in copy-mode.
2082 .
2083 .ESC f F
2084 Change to font with 1-character name or 1-digit number
2085 .argument F .
2086 .
2087 .ESC f( fo
2088 Change to font with 2-characer name or 2-digit number
2089 .argument fo .
2090 .
2091 .ESC[] f font
2092 Change to font with arbitrary length name or number expression
2093 .argument font .
2094 .
2095 .ESC[] g reg
2096 Return format of register with name
2097 .argument reg
2098 suitable for
2099 .request .af .
2100 Alternative forms
2101 .esc(arg g xy
2102 and
2103 .escarg g x .
2104 .
2105 .ESCq h N
2106 Local horizontal motion; move right
2107 .argument N
2108 (left if negative).
2109 .
2110 .ESCq H N
2111 Set height of current font to
2112 .argument N .
2113 .
2114 .ESC[] k reg
2115 Mark horizontal input place in register with arbitrary length name
2116 .argument reg .
2117 Alternative forms
2118 .esc(arg k xy
2119 and
2120 .escarg k x .
2121 .
2122 .ESCq l Nc
2123 Horizontal line drawing function (optionally using character
2124 .argument c ).
2125 .
2126 .ESCq L Nc
2127 Vertical line drawing function (optionally using character
2128 .argument c ).
2129 .
2130 .ESC n r
2131 The numerical value stored in the register variable with the 1-character
2132 name
2133 .argument r .
2134 .
2135 .ESC n( re
2136 The numerical value stored in the register variable with the 2-character
2137 name
2138 .argument re .
2139 .
2140 .ESC[] n reg
2141 The numerical value stored in the register variable with arbitrary
2142 lenght name
2143 .argument reg .
2144 .
2145 .ESCq N n
2146 Typeset the character with code
2147 .argument n
2148 in the current font, no special fonts are searched.  Useful for adding
2149 characters to a font using the
2150 .request .char
2151 request.
2152 .
2153 .ESCq o abc...
2154 Overstrike characters
2155 .argument a ,
2156 .argument b ,
2157 .argument c ,
2158 etc.
2159 .
2160 .ESC p
2161 Break and spread output line.
2162 .
2163 .ESC r
2164 Reverse 1\ em vertical motion (reverse line in nroff).
2165 .
2166 .ESCq R name \(+-n
2167 The same as
2168 .request .nr
2169 .argument name
2170 .argument \(+-n .
2171 .
2172 .ESC[] s \(+-N
2173 Set the point size to
2174 .I N
2175 scaled points.  Note the alternative forms
2176 .BI \(rss \(+- [ N ]\c
2177 ,
2178 .BI \(rss' \(+-N '\c
2179 ,
2180 .BI \(rss \(+- ' N '\c
2181 ,
2182 .esc(arg s \(+-xy ,
2183 .BI \(rss \(+- ( xy\c
2184 ,
2185 .escarg s \(+-x .
2186 Same as
2187 .request .ps
2188 request.
2189 .
2190 .ESCq S N
2191 Slant output
2192 .argument N
2193 degrees.
2194 .
2195 .ESC t
2196 Non-interpreted horizontal tab.
2197 .
2198 .ESC u
2199 Reverse (up) 1/2 em vertical motion (1/2 line in nroff).
2200 .
2201 .ESCq v N
2202 Local vertical motion; move down
2203 .argument N
2204 (up if negative).
2205 .
2206 .ESC[] V env
2207 The contents of the environment variable
2208 .argument env .
2209 Alternative forms
2210 .esc(arg V xy
2211 and
2212 .escarg V x .
2213 .
2214 .ESCq w string
2215 The width of the character sequence
2216 .argument string .
2217 .
2218 .ESCq x N
2219 Extra line-space function (negative before, positive after).
2220 .
2221 .ESCq X string
2222 Output
2223 .argument string
2224 as device control function.
2225 .
2226 .ESC[] Y name
2227 Output string variable or macro
2228 .argument name
2229 uninterpreted as device control function.
2230 Alternative forms
2231 .esc(arg Y xy
2232 and
2233 .escarg Y x .
2234 .
2235 .ESC z c
2236 Print
2237 .argument c
2238 with zero width (without spacing).
2239 .
2240 .ESCq Z anything
2241 Print
2242 .argument anything
2243 and then restore the horizontal and vertical position;
2244 .argument anything
2245 may not contain tabs or leaders.
2246 .PD
2247 .LP
2248 The escape sequences
2249 .esc e ,
2250 .esc . ,
2251 .esc \(dq ,
2252 .esc $ ,
2253 .esc * ,
2254 .esc a ,
2255 .esc n ,
2256 .esc t ,
2257 .esc g ,
2258 and
2259 .escarg \& newline
2260 are interpreted in copy mode.
2261 .LP
2262 Escape sequences starting with
2263 .esc (
2264 or
2265 .esc [
2266 do not represent single character escape sequences, but introduce escape
2267 names with two or more characters.
2268 .LP
2269 If a backslash is followed by a character that does not constitute a
2270 defined escape sequence the backslash is silently ignored and the
2271 character maps to itself.
2272 .
2273 .\" --------------------------------------------------------------------
2274 .SS "SPECIAL CHARACTERS"
2275 .\" --------------------------------------------------------------------
2276 Common special characters are predefined by escape sequences of the form
2277 .(esc \fP\f(CIxy
2278 with characters
2279 .argument x
2280 and
2281 .argument y .
2282 Some of these exist in the usual font while most of them are only
2283 available in the special font.  Below you'll find a selection of the most
2284 important glyphs; a complete list can be found in
2285 .BR groff_char (@MAN7EXT@).
2286 .RS
2287 .LP
2288 .PD 0
2289 .
2290 .ESc bu Bullet sign
2291 .ESc co Copyright
2292 .ESc ct Cent
2293 .ESc dd Double dagger
2294 .ESc de Degree
2295 .ESc dg Dagger
2296 .ESc em Em-dash
2297 .ESc hy Hyphen
2298 .ESc rg Registered sign
2299 .ESc sc Section sign
2300 .ESc ul Underline character
2301 .ESc == Identical
2302 .ESc >= Larger or equal
2303 .ESc <= Less or equal
2304 .ESc != Not equal
2305 .ESc -> Right arrow
2306 .ESc <- Left arrow
2307 .ESc +- Plus-minus sign
2308 .PD
2309 .RE
2310 .
2311 .\" --------------------------------------------------------------------
2312 .SH REGISTERS
2313 .\" --------------------------------------------------------------------
2314 Registers are variables that store a value.
2315 In groff, most registers store numerical values (see section
2316 .B NUMERICAL EXPRESSIONS
2317 above), but some can also hold a string value.
2318 .LP
2319 Each register is given a name.
2320 Arbitrary registers can be defined and set with the request
2321 .request .nr
2322 .argument register .
2323 .LP
2324 The value stored in a register can be retrieved by the escape sequences
2325 introduced by
2326 .esc n .
2327 .LP
2328 Most useful are predefined registers.
2329 In the following the notation
2330 .argument name
2331 is used to refer to a register called
2332 .register name
2333 to make clear that we speak about registers.
2334 Please keep in mind that the
2335 .esc en[]
2336 decoration is not part of the register name.
2337 .
2338 .\" --------------------------------------------------------------------
2339 .SS "READ-ONLY REGISTERS"
2340 .\" --------------------------------------------------------------------
2341 The following registers have predefined values that should not be
2342 modified by the user (usually, registers starting with a dot a read-only).
2343 Mostly, they provide information on the current settings or store results
2344 from request calls.
2345 .LP
2346 .PD 0
2347 .REG .$ Number of arguments in the current macro.
2348 .REG .a
2349 Post-line extra line-space most recently utilized using
2350 .escarg x 'N' .
2351 .REG .A
2352 Set to
2353 .number 1
2354 in
2355 .B troff
2356 if option
2357 .B \-A
2358 is used; always
2359 .number 1
2360 in
2361 .BR nroff .
2362 .REG .c Current input line number.
2363 .REG .C 1 if compatibility mode is in effect, 0 otherwise.
2364 .REG .cdp
2365 The depth of the last character added to the current environment.
2366 It is positive if the character extends below the baseline.
2367 .REG .ce
2368 The number of lines remaining to be centered, as set by the
2369 .request .ce
2370 request.
2371 .REG .cht
2372 The height of the last character added to the current environment.
2373 It is positive if the character extends above the baseline.
2374 .REG .csk
2375 The skew of the last character added to the current environment.
2376 The skew of a character is how far to the right of the center of a character
2377 the center of an accent over that character should be placed.
2378 .REG .d
2379 Current vertical place in current diversion; equal to register
2380 .register nl .
2381 .REG .ev The name or number of the current environment (string-valued).
2382 .REG .f Current font number.
2383 .REG .fam  The current font family (string-valued).
2384 .REG .fp The number of the next free font position.
2385 .REG .g
2386 Always 1 in GNU troff.
2387 Macros should use it to test if running under groff.
2388 .REG .h Text base-line high-water mark on current page or diversion.
2389 .REG .H Available horizontal resolution in basic units.
2390 .REG .hla
2391 The current hyphenation language as set by the
2392 .B .hla
2393 request.
2394 .REG .hlc
2395 The number of immediately preceding consecutive hyphenated lines.
2396 .REG .hlm
2397 The maximum allowed number of consecutive hyphenated lines, as set by
2398 the
2399 .request .hlm
2400 request.
2401 .REG .hy
2402 The current hyphenation flags (as set by the
2403 .request .hy
2404 request).
2405 .REG .hym
2406 The current hyphenation margin (as set by the
2407 .request .hym
2408 request).
2409 .REG .hys
2410 The current hyphenation space (as set by the
2411 .request .hys
2412 request).
2413 .REG .i Current ident.
2414 .REG .in The indent that applies to the current output line.
2415 .REG .int
2416 Positive if last output line contains
2417 .esc c .
2418 .REG .kern
2419 .number 1
2420 if pairwise kerning is enabled,
2421 .number 0
2422 otherwise.
2423 .REG .l Current line length.
2424 .REG .lg
2425 The current ligature mode (as set by the
2426 .request .lg
2427 request).
2428 .REG .linetabs
2429 The current line-tabs mode (as set by the
2430 .request .linetabs
2431 request).
2432 .REG .ll The line length that applies to the current output line.
2433 .REG .lt
2434 The title length (as set by the
2435 .request .lt
2436 request).
2437 .REG .n Length of text portion on previous output line.
2438 .REG .ne
2439 The amount of space that was needed in the last
2440 .request .ne
2441 request that caused a trap to be sprung.
2442 Useful in conjunction with
2443 .register .trunc .
2444 .REG .ns
2445 .number 1
2446 if in no-space mode,
2447 .number 0
2448 otherwise.
2449 .REG .o Current page offset.
2450 .REG .p Current page length.
2451 .REG .pn
2452 The number of the next page: either the value set by a
2453 .request .pn
2454 request, or the number of the current page plus\ 1.
2455 .REG .ps The current pointsize in scaled points.
2456 .REG .psr The last-requested pointsize in scaled points.
2457 .REG .rj
2458 The number of lines to be right-justified as set by the rj request.
2459 .REG .s Current point size as a decimal fraction.
2460 .REG .sr
2461 The last requested pointsize in points as a decimal fraction
2462 (string-valued).
2463 .REG .t Distance to the next trap.
2464 .REG .T
2465 Set to
2466 .number 1
2467 if option
2468 .B \-T
2469 is used.
2470 .REG .tabs
2471 A string representation of the current tab settings suitable for use as
2472 an argument to the
2473 .request .ta
2474 request.
2475 .REG .trunc
2476 The amount of vertical space truncated by the most recently sprung
2477 vertical position trap, or, if the trap was sprung by a
2478 .request .ne
2479 request, minus the amount of vertical motion produced by
2480 .request .ne .
2481 request.
2482 In other words, at the point a trap is sprung, it represents the difference
2483 of what the vertical position would have been but for the trap, and what the
2484 vertical position actually is.
2485 Useful in conjunction with the
2486 .register .ne
2487 register.
2488 .REG .ss
2489 The value of the parameters set by the first argument of the
2490 .request .ss
2491 request.
2492 .REG .sss
2493 The value of the parameters set by the second argument of the
2494 .request .ss
2495 request.
2496 .REG .u Equal to 1 bin fill mode and 0 in nofill mode.
2497 .REG .v Current vertical line spacing.
2498 .REG .V Available vertical resolution in basic units.
2499 .REG .vpt
2500 .number 1
2501 if vertical position traps are enabled,
2502 .number 0
2503 otherwise.
2504 .REG .w Width of previous character.
2505 .REG .warn
2506 The sum of the number codes of the currently enabled warnings.
2507 .REG .x The major version number.
2508 .REG .y The minor version number.
2509 .REG .Y The revision number of groff.
2510 .REG .z Name of current diversion.
2511 .PD
2512 .
2513 .\" --------------------------------------------------------------------
2514 .SS "WRITABLE REGISTERS"
2515 .\" --------------------------------------------------------------------
2516 The following registers can be read and written by the user.
2517 They have predefined default values, but these can be modified for
2518 customizing a document.
2519 .LP
2520 .PD 0
2521 .REG % Current page number.
2522 .REG c. Current input line number.
2523 .REG ct Character type (set by width function
2524 .esc w ).
2525 .REG dl Maximal width of last completed diversion.
2526 .REG dn Height of last completed diversion.
2527 .REG dw Current day of week (1-7).
2528 .REG dy Current day of month (1-31).
2529 .REG hp Current horizontal position at input line.
2530 .REG llx
2531 Lower left x-coordinate (in PostScript units) of a given PostScript
2532 image (set by
2533 .request .psbb ).
2534 .REG lly
2535 Lower left y-coordinate (in PostScript units) of a given PostScript
2536 image (set by
2537 .request .psbb ).
2538 .REG ln Output line number.
2539 .REG mo Current month (1-12).
2540 .REG nl Vertical position of last printed text base-line.
2541 .REG rsb Like
2542 .register sb ,
2543 but takes account of the heights and depths of characters.
2544 .REG rst
2545 Like
2546 .register st ,
2547 but takes account of the heights and depths of characters.
2548 .REG sb
2549 Depth of string below base line (generated by width function
2550 .esc w ).
2551 .REG skw
2552 Right skip width from the center of the last character in the
2553 .esc w
2554 argument.
2555 .REG slimit
2556 If greater than 0, the maximum number of objects on the input stack.
2557 If \(<=0 there is no limit, i.e., recursion can continue until virtual
2558 memory is exhausted.
2559 .REG ssc
2560 The amount of horizontal space (possibly negative) that should be added
2561 to the last character before a subscript (generated by width function
2562 .esc w ).
2563 .REG st
2564 Height of string above base line (generated by width function
2565 .esc w ).
2566 .REG systat
2567 The return value of the
2568 .I system()
2569 function executed by the last
2570 .request .sy
2571 request.
2572 .REG urx
2573 Upper right x-coordinate (in PostScript units) of a given PostScript
2574 image (set by
2575 .request .psbb ).
2576 .REG ury
2577 Upper right y-coordinate (in PostScript units) of a given PostScript
2578 image (set by
2579 .request .psbb ).
2580 .REG year The current year (year 2000 compliant).
2581 .REG yr
2582 Current year minus 1900.  For Y2K compliance use register
2583 .register year
2584 instead.
2585 .PD
2586 .
2587 .\" --------------------------------------------------------------------
2588 .SH WARNINGS
2589 .\" --------------------------------------------------------------------
2590 Each warning generated by groff is identified by a name and a code
2591 number.  The codes are powers of 2 to allow bit-encoding with a single
2592 integer.  There are also names that can be used to refer to groups of
2593 warnings.
2594 .LP
2595 The name associated with a warning is used by the
2596 .option \-w
2597 and
2598 .option \-W
2599 options;
2600 the number code is used by the
2601 .request .warn
2602 request and by the
2603 .esc[arg] n warn
2604 register.
2605 .LP
2606 .PD 0
2607 .Warning all group
2608 All warnings except
2609 .warning di ,
2610 .warning mac
2611 and
2612 .warning reg .
2613 Intended to cover all warnings with traditional macro packages.
2614 .Warning break 4
2615 In fill mode, lines which could not be broken so that their length was
2616 less than the line length.  This is enabled by default.
2617 .Warning char 1
2618 Non-existent characters.  This is enabled by default.
2619 .Warning delim 8
2620 Missing or mismatched closing delimiters.
2621 .Warning di 256
2622 Use of
2623 .request .di
2624 or
2625 .request .da
2626 without an argument when there is no current diversion.
2627 .Warning el 16
2628 Use of the
2629 .request .el
2630 request with no matching
2631 .request .ie
2632 request.
2633 .Warning escape 32768
2634 Unrecognized escape sequence.  Then the escape character is ignored.
2635 .Warning font 131072
2636 Non-existent fonts.  This is enabled by default.
2637 .Warning ig 262144
2638 Illegal escapes in text ignored with the
2639 .request \.ig
2640 request.  These are conditions that are errors when they occur outside
2641 of ignored text.
2642 .Warning mac 512
2643 Use of undefined strings, macros, and diversions.  Automatically handled
2644 as empty.  Usually, only one warning per name.
2645 .Warning missing 8192
2646 Request that is missing non-optional arguments.
2647 .Warning input 16384
2648 Illegal input character.
2649 .Warning number 2
2650 Invalid numeric expressions.  This is enabled by default.
2651 .Warning range 64
2652 Out of range arguments.
2653 .Warning reg 1024
2654 Use of undefined number register.  Automatically defined as having
2655 value 0.  Usually, only one warning per name.
2656 .Warning right-brace 4096
2657 Use of
2658 .esc }
2659 where a number was expected.
2660 .Warning scale 32
2661 Meaningless scaling indicators.
2662 .Warning space 65536
2663 Missing space between a request or macro and its argument.  Then no
2664 macro is automatically defined.  This is enabled by default.  This
2665 warning will never occur in compatibility mode.
2666 .Warning syntax 128
2667 Dubious syntax in numeric expressions.
2668 .Warning tab 2048
2669 Inappropriate use of a tab character (either in an unquoted macro
2670 argument or where a number was expected).
2671 .Warning w group
2672 All warnings.
2673 .PD
2674 .LP
2675 .TS
2676 tab(@), box, expand;
2677 c c c | c  c  c | c  c  c
2678 R RI CB | R RI CB | R RI CB.
2679 Bit@Code@Warning@Bit@Code@Warning@Bit@Code@Warning
2680 _
2681 0@1@char@8@256@di@16@65536@space
2682 1@2@number@9@512@mac@17@131072@font
2683 2@4@break@10@1024@reg@18@262144@ig
2684 3@8@delim@11@2048@tab
2685 4@16@el@12@4096@right-brace
2686 5@32@scale@13@8192@missing
2687 6@64@range@14@16384@input
2688 7@128@syntax@15@32768@escape
2689 .TE
2690 .LP
2691 .
2692 .\" --------------------------------------------------------------------
2693 .SH COMPATIBILITY
2694 .\" --------------------------------------------------------------------
2695 .I groff
2696 provides a
2697 .B compatibility mode
2698 that allows to process roff code written for classical
2699 .troff
2700 or for other implementations of roff in a consistent way.
2701 .LP
2702 Compatibility mode can be turned on with the
2703 .option \-C
2704 command line option, and turned on or off with the
2705 .request .cp
2706 request.  The number register
2707 .esc(arg n .C
2708 is
2709 .number 1
2710 if compatibility mode is on,
2711 .number 0
2712 otherwise.
2713 .LP
2714 This became necessary because the GNU concept for long names causes some
2715 incompatibilities.
2716 .I Classical troff
2717 will interpret
2718 .IP
2719 .B
2720 \&.dsabcd
2721 .LP
2722 as defining a string
2723 .B ab
2724 with contents
2725 .BR cd .
2726 Normally,
2727 .I groff
2728 will interpret this as a call of a macro named
2729 .request dsabcd .
2730 .LP
2731 Also
2732 .I classical troff
2733 will interpret
2734 .esc *[
2735 or
2736 .esc n[
2737 as references to a string or number register called
2738 .register [ .
2739 In
2740 .I GNU native
2741 .IR mode ,
2742 however, this will normally be interpreted as the start of a long name.
2743 .LP
2744 In
2745 .I compatibility
2746 .IR mode ,
2747 groff will interpret these things in the traditional way, but long names
2748 are not recognized.
2749 .LP
2750 On the other hand, groff in
2751 .I GNU native mode
2752 does not allow to use the escape sequences
2753 .esc e ,
2754 .esc | ,
2755 .esc ^ ,
2756 .esc & ,
2757 .esc } ,
2758 .esc { ,
2759 .esc "\ " (space),
2760 .esc ' ,
2761 .esc ` ,
2762 .esc - ,
2763 .esc _ ,
2764 .esc ! ,
2765 .esc % ,
2766 and
2767 .esc c
2768 in names of strings, macros, diversions, number registers, fonts or
2769 environments, whereas
2770 .I classical troff
2771 does.  The
2772 .esc A
2773 escape sequence can be helpful in avoiding these escape sequences in
2774 names.
2775 .LP
2776 Fractional pointsizes cause one noteworthy incompatibility.
2777 In
2778 .I classical
2779 .IR troff ,
2780 the
2781 .request .ps
2782 request ignores scale indicators and so
2783 .RS
2784 .LP
2785 .B .ps\ 10u
2786 .RE
2787 .LP
2788 will set the pointsize to 10 points, whereas in groff native mode the
2789 pointsize will be set to 10 scaled points.
2790 .LP
2791 In
2792 .I groff
2793 mode, there is a fundamental difference between unformatted input
2794 characters, and formatted output characters.
2795 Everything that affects how an output character will be output is stored
2796 with the character; once an output character has been constructed it is
2797 unaffected by any subsequent requests that are executed, including the
2798 .request .bd ,
2799 .request .cs ,
2800 .request .tkf ,
2801 .request .tr ,
2802 or
2803 .request .fp
2804 requests.
2805 .LP
2806 Normally output characters are constructed from input characters at the
2807 moment immediately before the character is added to the current output
2808 line.
2809 Macros, diversions and strings are all, in fact, the same type of object;
2810 they contain lists of input characters and output characters in any
2811 combination.
2812 .LP
2813 An output character does not behave like an input character for the
2814 purposes of macro processing; it does not inherit any of the special
2815 properties that the input character from which it was constructed might
2816 have had.
2817 The following example will make things clearer.
2818 .LP
2819 .RS
2820 .nf
2821 .ft B
2822 \&.di x
2823 \(rs\(rs\(rs\(rs
2824 \&.br
2825 \&.di
2826 \&.x
2827 .ft
2828 .fi
2829 .RE
2830 .LP
2831 In
2832 .I GNU mode
2833 this will be printed as
2834 .esc \(rs .
2835 So each pair of input backslashes
2836 .'char \(rs\(rs
2837 is turned into a single output backslash
2838 .'char \(rs
2839 and the resulting output backslashes are not interpreted as escape
2840 characters when they are reread.
2841 .LP
2842 .I Classical troff
2843 would interpret them as escape characters when they were reread and
2844 would end up printing a single backslash
2845 .'char \(rs .
2846 .LP
2847 The correct way to get a printable
2848 .'char \(rs
2849 is to use the
2850 .esc e
2851 escape sequence.  This will always print a single instance of the
2852 current escape character, regardless of whether or not it is used in a
2853 diversion.  It will also work in both GNU mode and compatibility mode.
2854 .LP
2855 To store an escape sequence in a diversion that will be interpreted when
2856 the diversion is reread, either the traditional
2857 .esc !
2858 transparent output facility or the
2859 new
2860 .esc ?
2861 escape sequence can be used.
2862 .
2863 .\" --------------------------------------------------------------------
2864 .SH BUGS
2865 .\" --------------------------------------------------------------------
2866 At the moment, the documentation of the groff system is in a state of
2867 change and evolution.  It is possible that there are small
2868 inconsistencies between different documents temporarily.
2869 .LP
2870 The
2871 .B WARNINGS
2872 section belongs to
2873 .BR troff (@MAN1EXT@).
2874 .
2875 .\" --------------------------------------------------------------------
2876 .SH AUTHOR
2877 .\" --------------------------------------------------------------------
2878 This document is part of groff, the GNU roff distribution.  It was
2879 written by Bernd Warken <bwarken@mayn.de>.
2880 .LP
2881 It is distributed under the terms of the FDL (GNU Free Documentation
2882 License) version 1.1 or later.  You should have received a copy of the
2883 FDL on your system, it is also available on-line under
2884 .RS
2885 .LP
2886 .IR http://www.gnu.org/copyleft/fdl.html .
2887 .RE
2888 .LP
2889 Formerly, the extensions of the groff language were kept in the manual
2890 page
2891 .BR troff (@MAN1EXT@).
2892 This document contains the essential parts of that documentation, but
2893 the gory details are found in the groff info file.
2894 .
2895 .\" --------------------------------------------------------------------
2896 .SH "SEE ALSO"
2897 .\" --------------------------------------------------------------------
2898 The main source of information for the groff language is the
2899 .B groff
2900 .BR info (1)
2901 file.
2902 .LP
2903 For a survey of roff and the groff system and further documentation
2904 pointers see
2905 .BR roff (@MAN7EXT@).
2906 .LP
2907 The formatter programs are described in
2908 .BR groff (@MAN1EXT@)
2909 and
2910 .BR troff (@MAN1EXT@);
2911 a complete of all predefined glyph names can be found in
2912 .BR groff_char (@MAN7EXT@).
2913 .LP
2914 The classical
2915 .I troff
2916 documentation is available on-line at
2917 .RS
2918 .LP
2919 .I http://cm.bell-labs.com/cm/cs/cstr.html
2920 .RE
2921 and
2922 .RS
2923 .IR http://www.kohala.com/start/troff/ .
2924 .
2925 .\" Local Variables:
2926 .\" mode: nroff
2927 .\" End: