Add groff 1.19.1, stripped down appropriately.
[dragonfly.git] / contrib / groff-1.19 / man / groff_diff.man
1 '\" e
2 .\" The above line should force the use of eqn as a preprocessor
3 .ig
4 groff_diff.man
5
6 Last update : 04 May 2004
7
8 This file is part of groff, the GNU roff type-setting system.
9 It is the source of the man-page groff_diff(7).
10
11 Copyright (C) 1989, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
12 written by James Clark
13
14 modified by Werner Lemberg <wl@gnu.org>
15             Bernd Warken <bwarken@mayn.de>
16
17 Permission is granted to copy, distribute and/or modify this document
18 under the terms of the GNU Free Documentation License, Version 1.1 or
19 any later version published by the Free Software Foundation; with the
20 Invariant Sections being this .ig-section and AUTHORS, with no
21 Front-Cover Texts, and with no Back-Cover Texts.
22
23 A copy of the Free Documentation License is included as a file called
24 FDL in the main directory of the groff source package.
25 ..
26 .
27 .\" --------------------------------------------------------------------
28 .\" Setup
29 .\" --------------------------------------------------------------------
30 .
31 .do nr groff_diff_C \n[.C]
32 .cp 0
33 .
34 .mso www.tmac
35 .
36 .if n \{\
37 .  mso tty-char.tmac
38 .  ftr CR R
39 .  ftr CI I
40 .  ftr CB B
41 .\}
42 .
43 .if '\*[.T]'dvi' \
44 .  ftr CB CW
45 .
46 .\" define a string tx for the TeX logo
47 .ie t .ds tx T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X
48 .el   .ds tx TeX
49 .
50 .
51 .\" --------------------------------------------------------------------
52 .\" start of macro definitions
53 .
54 .eo
55 .
56 .de c
57 ..
58 .
59 .de TQ
60 .  br
61 .  ns
62 .  TP \$1
63 ..
64 .de Text
65 .  RI "\$*"
66 ..
67 .de Topic
68 .  TP 2m
69 .  Text \[bu]
70 ..
71 .de squoted
72 .  ds @arg1 \$1
73 .  shift
74 .\"  Text \[oq]\f[CB]\*[@arg1]\f[]\[cq]\$*
75 .  Text \[oq]\f[B]\*[@arg1]\f[]\[cq]\$*
76 .  rm @arg1
77 ..
78 .c A shell command line
79 .de ShellCommand
80 .  br
81 .  IR "shell#" "\h'1m'\f[CB]\$*\f[]\/"
82 ..
83 .c reference of a request or macro
84 .de request
85 .  ds @arg1 \$1
86 .  shift 1
87 .\"  Text \f[CB]\*[@arg1]\f[]\$*
88 .  Text \f[B]\*[@arg1]\f[]\$*
89 .  rm @arg1
90 ..
91 .als option request
92 .
93 .c representation of an escape sequence
94 .de esc
95 .  ds @arg1 \$1
96 .  shift
97 .\"  Text \f[CB]\[rs]\*[@arg1]\f[]\$*
98 .  Text \f[B]\[rs]\*[@arg1]\&\f[]\$*
99 .  rm @arg1
100 ..
101 .ec
102 .\" end of macro definitions
103 .
104 .\" from old groff_out.man
105 .ie \n(.g \
106 .  ds ic \/
107 .el \
108 .  ds ic \^
109 .
110 .
111 .\" --------------------------------------------------------------------
112 .\" Title
113 .\" --------------------------------------------------------------------
114 .
115 .TH GROFF_DIFF @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
116 .SH NAME
117 groff_diff \- differences between GNU troff and classical troff
118 .
119 .
120 .\" --------------------------------------------------------------------
121 .SH DESCRIPTION
122 .\" --------------------------------------------------------------------
123 .
124 This manual page describes the language differences between
125 .IR groff ,
126 the GNU
127 .I roff
128 text processing system and the classical
129 .I roff
130 formatter of the freely available Unix\~7 of the 1970s, documented in
131 the
132 .I Troff User's Manual
133 by
134 .I Osanna
135 and
136 .IR Kernighan .
137 This inludes the roff language as well as the intermediate output
138 format (troff output).
139 .
140 .P
141 The section
142 .I SEE ALSO
143 gives pointers to both the classical
144 .I roff
145 and the modern
146 .I groff
147 documentation.
148 .
149 .
150 .\" --------------------------------------------------------------------
151 .SH "GROFF LANGUAGE"
152 .\" --------------------------------------------------------------------
153 .
154 In this section, all additional features of
155 .I groff
156 compared to the classical Unix\~7
157 .I troff
158 are described in detail.
159 .
160 .
161 .\" --------------------------------------------------------------------
162 .SS "Long names"
163 .\" --------------------------------------------------------------------
164 .
165 The names of number registers, fonts, strings/\:macros/\:diversions,
166 special characters (glyphs), and colors can be of any length.
167 .
168 In escape sequences, additionally to the classical
169 .BI ( xx
170 construction for a two-character name, you can use
171 .BI [ xxx ]
172 for a name of arbitrary length.
173 .
174 .TP
175 .BI \[rs][ xxx ]
176 Print the special character (glyph) called
177 .IR xxx .
178 .
179 .TP
180 .BI \[rs][ "comp1 comp2 .\|.\|." ]
181 Print composite glyph consisting of multiple components.
182 .
183 Example: `\[rs][A\~ho]' is capital letter A with ogonek which finally maps
184 to glyph name `u0041_0328'.
185 .
186 See the
187 .I groff info file
188 for details how a glyph name for a composite glyph is constructed, and
189 .BR groff_char (@MAN7EXT@)
190 for list of glyph name components used composite glyph names.
191 .
192 .TP
193 .BI \[rs]f[ xxx ]
194 Set font
195 .IR xxx .
196 .
197 Additionally,
198 .B \[rs]f[]
199 is a new syntax equal to
200 .BR \[rs]fP ,
201 i.e., to return to the previous font.
202 .
203 .TP
204 .BI \[rs]*[ "xxx arg1 arg2 .\|.\|." ]
205 Interpolate string
206 .IR xxx ,
207 taking
208 .IR arg1 ,
209 .IR arg2 ,
210 .I .\|.\|.\&
211 as arguments.
212 .
213 .TP
214 .BI \[rs]n[ xxx ]
215 Interpolate number register
216 .IR xxx .
217 .
218 .
219 .\" --------------------------------------------------------------------
220 .SS "Fractional pointsizes"
221 .\" --------------------------------------------------------------------
222 .
223 A
224 .I scaled point
225 is equal to
226 .B 1/sizescale
227 points, where
228 .B sizescale
229 is specified in the
230 .B DESC
231 file (1 by default).
232 .
233 There is a new scale indicator
234 .B z
235 that has the effect of multiplying by sizescale.
236 .
237 Requests and escape sequences in troff interpret arguments that
238 represent a pointsize as being in units of scaled points, but they
239 evaluate each such argument using a default scale indicator of
240 .BR z .
241 Arguments treated in this way are the argument to the
242 .B ps
243 request, the third argument to the
244 .B cs
245 request, the second and fourth arguments to the
246 .B tkf
247 request, the argument to the
248 .B \[rs]H
249 escape sequence, and those variants of the
250 .B \[rs]s
251 escape sequence that take a numeric expression as their argument.
252 .
253 .P
254 For example, suppose sizescale is 1000; then a scaled point will be
255 equivalent to a millipoint; the call
256 .B .ps\ 10.25
257 is equivalent to
258 .B .ps\ 10.25z
259 and so sets the pointsize to 10250 scaled points, which is equal to
260 10.25 points.
261 .
262 .P
263 The number register
264 .B \[rs]n[.s]
265 returns the pointsize in points as decimal fraction.
266 .
267 There is also a new number register
268 .B \[rs]n[.ps]
269 that returns the pointsize in scaled points.
270 .
271 .P
272 It would make no sense to use the
273 .B z
274 scale indicator in a numeric expression whose default scale indicator
275 was neither
276 .B u
277 nor
278 .BR z ,
279 and so
280 .B troff
281 disallows this.
282 .
283 Similarly it would make no sense to use a scaling indicator other than
284 .B z
285 or
286 .B u
287 in a numeric expression whose default scale indicator was
288 .BR z ,
289 and so
290 .B troff
291 disallows this as well.
292 .
293 .P
294 There is also new scale indicator\~\c
295 .B s
296 which multiplies by the number of units in a scaled point.
297 .
298 So, for example,
299 .B \[rs]n[.ps]s
300 is equal to
301 .BR 1m .
302 Be sure not to confuse the
303 .B s
304 and
305 .B z
306 scale indicators.
307 .
308 .
309 .\" --------------------------------------------------------------------
310 .SS "Numeric expressions"
311 .\" --------------------------------------------------------------------
312 .
313 Spaces are permitted in a number expression within parentheses.
314 .
315 .P
316 .B M
317 indicates a scale of 100ths of an em.
318 .B f
319 indicates a scale of 65536 units, providing fractions for color
320 definitions with the
321 .B defcolor
322 request.
323 .
324 For example, 0.5f = 32768u.
325 .
326 .TP
327 .IB e1 >? e2
328 The maximum of
329 .I e1
330 and
331 .IR e2 .
332 .
333 .TP
334 .IB e1 <? e2
335 The minimum of
336 .I e1
337 and
338 .IR e2 .
339 .
340 .TP
341 .BI ( c ; e )
342 Evaluate
343 .I e
344 using
345 .I c
346 as the default scaling indicator.
347 .
348 If
349 .I c
350 is missing, ignore scaling indicators in the evaluation of
351 .IR e .
352 .
353 .
354 .\" --------------------------------------------------------------------
355 .SS "New escape sequences"
356 .\" --------------------------------------------------------------------
357 .
358 .TP
359 .BI \[rs]A' anything '
360 This expands to
361 .B 1
362 or
363 .B 0
364 resp., depending on whether
365 .I anything
366 is or is not acceptable as the name of a string, macro, diversion, number
367 register, environment, font, or color.
368 It will return\~\c
369 .B 0
370 if
371 .I anything
372 is empty.
373 .
374 This is useful if you want to lookup user input in some sort of
375 associative table.
376 .
377 .TP
378 .BI \[rs]B' anything '
379 This expands to
380 .B 1
381 or
382 .B 0
383 resp., depending on whether
384 .I anything
385 is or is not a valid numeric expression.
386 .
387 It will return\~\c
388 .B 0
389 if
390 .I anything
391 is empty.
392 .
393 .TP
394 .BI \[rs]C' xxx '
395 Typeset glyph named
396 .IR xxx .
397 Normally it is more convenient to use
398 .BI \[rs][ xxx ]\f[R].
399 But
400 .B \[rs]C
401 has the advantage that it is compatible with recent versions of
402 .SM UNIX
403 and is available in compatibility mode.
404 .
405 .TP
406 .B \[rs]E
407 This is equivalent to an escape character, but it is not interpreted in
408 copy-mode.
409 .
410 For example, strings to start and end superscripting could be defined
411 like this
412 .
413 .RS
414 .IP
415 .ft CB
416 .Text .ds { \[rs]v'\-.3m'\[rs]s'\[rs]En[.s]*6u/10u'
417 .br
418 .Text .ds } \[rs]s0\[rs]v'.3m'
419 .ft
420 .
421 .P
422 The use of
423 .B \[rs]E
424 ensures that these definitions will work even if
425 .B \[rs]*{
426 gets interpreted in copy-mode (for example, by being used in a macro
427 argument).
428 .RE
429 .
430 .TP
431 .BI \[rs]F f
432 .TQ
433 .BI \[rs]F( fm
434 .TQ
435 .BI \[rs]F[ fam ]
436 Change font family.
437 .
438 This is the same as the
439 .B fam
440 request.
441 .
442 .B \[rs]F[]
443 switches back to the previous color (note that
444 .B \[rs]FP
445 won't work; it selects font family `P' instead).
446 .
447 .TP
448 .BI \[rs]m x
449 .TQ
450 .BI \[rs]m( xx
451 .TQ
452 .BI \[rs]m[ xxx ]
453 Set drawing color.
454 .B \[rs]m[]
455 switches back to the previous color.
456 .
457 .TP
458 .BI \[rs]M x
459 .TQ
460 .BI \[rs]M( xx
461 .TQ
462 .BI \[rs]M[ xxx ]
463 Set background color for filled objects drawn with the
464 .BI \[rs]D' .\|.\|. '
465 commands.
466 .B \[rs]M[]
467 switches back to the previous color.
468 .
469 .TP
470 .BI \[rs]N' n '
471 Typeset the glyph with index
472 .I n
473 in the current font.
474 .I n
475 can be any integer.
476 .
477 Most devices only have glyphs with indices between 0 and 255.
478 .
479 If the current font does not contain a glyph with that code,
480 special fonts will
481 .I not
482 be searched.
483 .
484 The
485 .B \[rs]N
486 escape sequence can be conveniently used in conjunction with the
487 .B char
488 request, for example
489 .
490 .RS
491 .ft CB
492 .IP
493 .Text .char \[rs][phone] \[rs]f(ZD\[rs]N'37'
494 .ft
495 .RE
496 .
497 .IP
498 The index of each glyph is given in the fourth column in the font
499 description file after the
500 .B charset
501 command.
502 .
503 It is possible to include unnamed glyphs in the font description
504 file by using a name of
505 .BR \-\-\- ;
506 the
507 .B \[rs]N
508 escape sequence is the only way to use these.
509 .
510 .TP
511 .BI \[rs]O n
512 .TQ
513 .BI \[rs]O[ n ]
514 Suppressing troff output.
515 .
516 The escapes
517 .BR \[rs]02 ,
518 .BR \[rs]O3 ,
519 .BR \[rs]O4 ,
520 and
521 .B \[rs]O5
522 are intended for internal use by
523 .BR \%grohtml .
524 .
525 .RS
526 .TP
527 .B \[rs]O0
528 Disable any ditroff glyphs from being emitted to the device driver,
529 provided that the escape occurs at the outer level (see
530 .B \[rs]O3
531 and
532 .BR \[rs]O4 ).
533 .
534 .TP
535 .B \[rs]O1
536 Enable output of glyphs, provided that the escape occurs at the outer
537 level.
538 .IP
539 .B \[rs]O0
540 and
541 .B \[rs]O1
542 also reset the registers
543 .BR \[rs]n[opminx] ,
544 .BR \[rs]n[opminy] ,
545 .BR \[rs]n[opmaxx] ,
546 and
547 .B \[rs]n[opmaxy]
548 to\~-1.
549 .
550 These four registers mark the top left and bottom right hand corners
551 of a box which encompasses all written glyphs.
552 .
553 .TP
554 .B \[rs]O2
555 Provided that the escape occurs at the outer level, enable output of
556 glyphs and also write out to stderr the page number and four registers
557 encompassing the glyphs previously written since the last call to
558 .BR \[rs]O .
559 .
560 .TP
561 .B \[rs]O3
562 Begin a nesting level.
563 .
564 At start-up,
565 .B troff
566 is at outer level.
567 .
568 This is really an internal mechanism for
569 .B \%grohtml
570 while producing images.
571 .
572 They are generated by running the troff source through
573 .B troff
574 to the postscript device and
575 .B ghostscript
576 to produce images in PNG format.
577 .
578 The
579 .B \[rs]O3
580 escape will start a new page if the device is not html (to reduce the
581 possibility of images crossing a page boundary).
582 .
583 .TP
584 .B \[rs]O4
585 End a nesting level.
586 .
587 .TP
588 .BI \[rs]O5[ Pfilename ]
589 This escape is
590 .B \%grohtml
591 specific.
592 .
593 Provided that this escape occurs at the outer nesting level, write
594 .I filename
595 to stderr.
596 .
597 The position of the image,
598 .IR P ,
599 must be specified and must be one of l, r, c, or i (left, right,
600 centered, inline).
601 .
602 .I filename
603 will be associated with the production of the next inline image.
604 .RE
605 .
606 .TP
607 .BI \[rs]R' name\ \[+-]n '
608 This has the same effect as
609 .
610 .RS
611 .IP
612 .BI .nr\  name\ \[+-]n
613 .RE
614 .
615 .TP
616 .BI \[rs]s( nn
617 .TQ
618 .BI \[rs]s\[+-]( nn
619 Set the point size to
620 .I nn
621 points;
622 .I nn
623 must be exactly two digits.
624 .
625 .TP
626 .BI \[rs]s[\[+-] n ]
627 .TQ
628 .BI \[rs]s\[+-][ n ]
629 .TQ
630 .BI \[rs]s'\[+-] n '
631 .TQ
632 .BI \[rs]s\[+-]' n '
633 Set the point size to
634 .I n
635 scaled points;
636 .I n
637 is a numeric expression with a default scale indicator of\~\c
638 .BR z .
639 .
640 .TP
641 .BI \[rs]V x
642 .TQ
643 .BI \[rs]V( xx
644 .TQ
645 .BI \[rs]V[ xxx ]
646 Interpolate the contents of the environment variable
647 .IR xxx ,
648 as returned by
649 .BR getenv (3).
650 .B \[rs]V
651 is interpreted in copy-mode.
652 .
653 .TP
654 .BI \[rs]Y x
655 .TQ
656 .BI \[rs]Y( xx
657 .TQ
658 .BI \[rs]Y[ xxx ]
659 This is approximately equivalent to
660 .BI \[rs]X'\[rs]*[ xxx ]'\f[R].
661 However the contents of the string or macro
662 .I xxx
663 are not interpreted; also it is permitted for
664 .I xxx
665 to have been defined as a macro and thus contain newlines (it is not
666 permitted for the argument to
667 .B \[rs]X
668 to contain newlines).
669 .
670 The inclusion of newlines requires an extension to the UNIX troff
671 output format, and will confuse drivers that do not know about this
672 extension.
673 .
674 .TP
675 .BI \[rs]Z' anything '
676 Print anything and then restore the horizontal and vertical position;
677 .I anything
678 may not contain tabs or leaders.
679 .
680 .TP
681 .B \[rs]$0
682 The name by which the current macro was invoked.
683 .
684 The
685 .B als
686 request can make a macro have more than one name.
687 .
688 .TP
689 .B \[rs]$*
690 In a macro or string, the concatenation of all the arguments separated
691 by spaces.
692 .
693 .TP
694 .B \[rs]$@
695 In a macro or string, the concatenation of all the arguments with each
696 surrounded by double quotes, and separated by spaces.
697 .
698 .TP
699 .BI \[rs]$( nn
700 .TQ
701 .BI \[rs]$[ nnn ]
702 In a macro or string, this gives the
703 .IR nn -th
704 or
705 .IR nnn -th
706 argument.
707 .
708 Macros and strings can have an unlimited number of arguments.
709 .
710 .TP
711 .BI \[rs]? anything \[rs]?
712 When used in a diversion, this will transparently embed
713 .I anything
714 in the diversion.
715 .I anything
716 is read in copy mode.
717 .
718 When the diversion is reread,
719 .I anything
720 will be interpreted.
721 .I anything
722 may not contain newlines; use
723 .B \[rs]!\&
724 if you want to embed newlines in a diversion.
725 .
726 The escape sequence
727 .B \[rs]?\&
728 is also recognised in copy mode and turned into a single internal
729 code; it is this code that terminates
730 .IR anything .
731 Thus
732 .
733 .RS
734 .IP
735 .ne 14v+\n(.Vu
736 .ft CB
737 .nf
738 .Text .nr x 1
739 .Text .nf
740 .Text .di d
741 .Text \[rs]?\[rs]\[rs]?\[rs]\[rs]\[rs]\[rs]?\[rs]\[rs]\[rs]\[rs]\[rs]\[rs]\[rs]\c
742 .Text \[rs]nx\[rs]\[rs]\[rs]\[rs]?\[rs]\[rs]?\[rs]?
743 .Text .di
744 .Text .nr x 2
745 .Text .di e
746 .Text .d
747 .Text .di
748 .Text .nr x 3
749 .Text .di f
750 .Text .e
751 .Text .di
752 .Text .nr x 4
753 .Text .f
754 .fi
755 .ft
756 .RE
757 .
758 .IP
759 will print\~\c
760 .BR 4 .
761 .
762 .TP
763 .B \[rs]/
764 This increases the width of the preceding glyph so that the
765 spacing between that glyph and the following glyph will be
766 correct if the following glyph is a roman glyph.
767 .
768 .if t \{\
769 .  nop For example, if an italic f is immediately followed by a roman
770 .  nop right parenthesis, then in many fonts the top right portion of
771 .  nop the f will overlap the top left of the right parenthesis
772 .  nop producing \f[I]f\f[R])\f[R], which is ugly.
773 .  nop Inserting
774 .  B \[rs]/
775 .  nop produces
776 .  ie \n(.g \f[I]f\/\f[R])\f[R]
777 .  el       \f[I]f\|\f[R])\f[R]
778 .  nop and avoids this problem.
779 .\}
780 It is a good idea to use this escape sequence whenever an italic
781 glyph is immediately followed by a roman glyph without any
782 intervening space.
783 .
784 .TP
785 .B \[rs],
786 This modifies the spacing of the following glyph so that the
787 spacing between that glyph and the preceding glyph will
788 correct if the preceding glyph is a roman glyph.
789 .
790 .if t \{\
791 .  nop For example, inserting
792 .  B \[rs],
793 .  nop between the parenthesis and the f changes
794 .  nop \f[R](\f[I]f\f[R] to
795 .  ie \n(.g \f[R](\,\f[I]f\f[R].
796 .  el       \f[R](\^\f[I]f\f[R].
797 .\}
798 It is a good idea to use this escape sequence whenever a roman
799 glyph is immediately followed by an italic glyph without any
800 intervening space.
801 .
802 .TP
803 .B \[rs])
804 Like
805 .B \[rs]&
806 except that it behaves like a character declared with the
807 .B cflags
808 request to be transparent for the purposes of end-of-sentence
809 recognition.
810 .
811 .TP
812 .B \[rs]~
813 This produces an unbreakable space that stretches like a normal
814 inter-word space when a line is adjusted.
815 .
816 .TP
817 .B \[rs]:
818 This causes the insertion of a zero-width break point.
819 .
820 It is equal to
821 .B \[rs]%
822 within a word but without insertion of a soft hyphen character.
823 .
824 .TP
825 .B \[rs]#
826 Everything up to and including the next newline is ignored.
827 .
828 This is interpreted in copy mode.
829 .
830 It is like
831 .B \[rs]"
832 except that
833 .B \[rs]"
834 does not ignore the terminating newline.
835 .
836 .
837 .\" --------------------------------------------------------------------
838 .SS "New requests"
839 .\" --------------------------------------------------------------------
840 .
841 .TP
842 .BI .aln\  xx\ yy
843 Create an alias
844 .I xx
845 for number register object named
846 .IR yy .
847 The new name and the old name will be exactly equivalent.
848 .
849 If
850 .I yy
851 is undefined, a warning of type
852 .B reg
853 will be generated, and the request will be ignored.
854 .
855 .TP
856 .BI .als\  xx\ yy
857 Create an alias
858 .I xx
859 for request, string, macro, or diversion object named
860 .IR yy .
861 .
862 The new name and the old name will be exactly equivalent (it is
863 similar to a hard rather than a soft link).
864 .
865 If
866 .I yy
867 is undefined, a warning of type
868 .B mac
869 will be generated, and the request will be ignored.
870 .
871 The
872 .BR de ,
873 .BR am ,
874 .BR di ,
875 .BR da ,
876 .BR ds ,
877 and
878 .B as
879 requests only create a new object if the name of the macro, diversion
880 or string diversion is currently undefined or if it is defined to be a
881 request; normally they modify the value of an existing object.
882 .
883 .TP
884 .BI .am1\  xx\ yy
885 Similar to
886 .BR .am , 
887 but compatibility mode is switched off during execution.
888 .
889 To be more precise, a `compatibility save' token is inserted at the
890 beginning of the macro addition, and a `compatibility restore' token at
891 the end.
892 .
893 As a consequence, the requests
894 .BR am ,
895 .BR am1 ,
896 .BR de ,
897 and
898 .B de1
899 can be intermixed freely since the compatibility save/\:restore tokens
900 only affect the macro parts defined by
901 .B .am1
902 and
903 .BR .ds1 .
904 .
905 .TP
906 .BI .ami\  xx\ yy
907 Append to macro indirectly.
908 .
909 See the
910 .B dei
911 request below for more information.
912 .
913 .TP
914 .BI .ami1\  xx\ yy
915 Same as the
916 .B ami
917 request but compatibility mode is switched off during execution.
918 .
919 .TP
920 .BI .as1\  xx\ yy
921 Similar to
922 .BR .as , 
923 but compatibility mode is switched off during expansion.
924 .
925 To be more precise, a `compatibility save' token is inserted at the
926 beginning of the string, and a `compatibility restore' token at the end.
927 .
928 As a consequence, the requests
929 .BR as ,
930 .BR as1 ,
931 .BR ds ,
932 and
933 .B ds1
934 can be intermixed freely since the compatibility save/\:restore tokens
935 only affect the (sub)strings defined by
936 .B as1
937 and
938 .BR ds1 .
939 .
940 .TP
941 .BI .asciify\  xx
942 This request `unformats' the diversion
943 .I xx
944 in such a way that
945 .SM ASCII
946 and space characters (and some escape sequences) that were formatted
947 and diverted into
948 .I xx
949 will be treated like ordinary input characters when
950 .I xx
951 is reread.
952 Useful for diversions in conjunction with the
953 .B .writem
954 request.
955 .
956 It can be also used for gross hacks; for example, this
957 .
958 .RS
959 .IP
960 .ne 7v+\n(.Vu
961 .ft CB
962 .nf
963 .Text .tr @.
964 .Text .di x
965 .Text @nr n 1
966 .Text .br
967 .Text .di
968 .Text .tr @@
969 .Text .asciify x
970 .Text .x
971 .fi
972 .ft
973 .RE
974 .
975 .IP
976 will set register\~\c
977 .B n
978 to\~1.
979 .
980 Note that glyph information (font, font size, etc.) is not preserved;
981 use
982 .B .unformat
983 instead.
984 .
985 .TP
986 .B .backtrace
987 Print a backtrace of the input stack on stderr.
988 .
989 .TP
990 .BI .blm\  xx
991 Set the blank line macro to
992 .IR xx .
993 If there is a blank line macro, it will be invoked when a blank line
994 is encountered instead of the usual troff behaviour.
995 .
996 .TP
997 .BI .box\  xx
998 .TQ
999 .BI .boxa\  xx
1000 These requests are similar to the
1001 .B di
1002 and
1003 .B da
1004 requests with the exception that a partially filled line will not
1005 become part of the diversion (i.e., the diversion always starts with a
1006 new line) but restored after ending the diversion, discarding the
1007 partially filled line which possibly comes from the diversion.
1008 .
1009 .TP
1010 .B .break
1011 Break out of a while loop.
1012 .
1013 See also the
1014 .B while
1015 and
1016 .B continue
1017 requests.
1018 .
1019 Be sure not to confuse this with the
1020 .B br
1021 request.
1022 .
1023 .TP
1024 .B .brp
1025 This is the same as
1026 .BR \[rs]p .
1027 .
1028 .TP
1029 .BI .cflags\  n\ c1\ c2\|.\|.\|.\&
1030 Characters
1031 .IR c1 ,
1032 .IR c2 ,\|.\|.\|.\&
1033 have properties determined by
1034 .IR n ,
1035 which is ORed from the following:
1036 .
1037 .RS
1038 .IP 1
1039 The character ends sentences (initially characters
1040 .B .?!\&
1041 have this property).
1042 .
1043 .IP 2
1044 Lines can be broken before the character (initially no characters have
1045 this property); a line will not be broken at a character with this
1046 property unless the characters on each side both have non-zero
1047 hyphenation codes.
1048 .
1049 .IP 4
1050 Lines can be broken after the character (initially characters
1051 .B \-\[rs][hy]\[rs][em]
1052 have this property); a line will not be broken at a character with
1053 this property unless the characters on each side both have non-zero
1054 hyphenation codes.
1055 .
1056 .IP 8
1057 The character overlaps horizontally (initially characters
1058 .B \[rs][ul]\[rs][rn]\[rs][ru]\[rs][radicalex]\[rs][sqrtex]
1059 have this property).
1060 .
1061 .IP 16
1062 The character overlaps vertically (initially character
1063 .B \[rs][br]
1064 has this property).
1065 .
1066 .IP 32
1067 An end-of-sentence character followed by any number of characters with
1068 this property will be treated as the end of a sentence if followed by
1069 a newline or two spaces; in other words the character is transparent
1070 for the purposes of end-of-sentence recognition; this is the same as
1071 having a zero space factor in \*[tx] (initially characters
1072 .B \[dq]')]*\[rs](dg\[rs](rq
1073 have this property).
1074 .RE
1075 .
1076 .TP
1077 .BI .char\  c\ string
1078 Define glyph
1079 .I c
1080 to be
1081 .IR string .
1082 Every time glyph
1083 .I c
1084 needs to be printed,
1085 .I string
1086 will be processed in a temporary environment and the result will be
1087 wrapped up into a single object.
1088 .
1089 Compatibility mode will be turned off and the escape character will be
1090 set to
1091 .B \[rs]
1092 while
1093 .I string
1094 is being processed.
1095 .
1096 Any emboldening, constant spacing or track kerning will be applied to
1097 this object rather than to individual glyphs in
1098 .IR string .
1099 .
1100 .IP
1101 A glyph defined by this request can be used just like a normal
1102 glyph provided by the output device.
1103 .
1104 In particular other characters can be translated to it with the
1105 .B tr
1106 request; it can be made the leader character by the
1107 .B lc
1108 request; repeated patterns can be drawn with the character using the
1109 .B \[rs]l
1110 and
1111 .B \[rs]L
1112 escape sequences; words containing the character can be hyphenated
1113 correctly, if the
1114 .B hcode
1115 request is used to give the character a hyphenation code.
1116 .
1117 .IP
1118 There is a special anti-recursion feature: Use of glyph within the
1119 glyph's definition will be handled like normal glyphs not
1120 defined with
1121 .BR char .
1122 .IP
1123 A glyph definition can be removed with the
1124 .B rchar
1125 request.
1126 .
1127 .TP
1128 .BI .chop\  xx
1129 Chop the last element off macro, string, or diversion
1130 .IR xx .
1131 This is useful for removing the newline from the end of diversions
1132 that are to be interpolated as strings.
1133 .
1134 .TP
1135 .BI .close\  stream
1136 Close the stream named
1137 .IR stream ;
1138 .I stream
1139 will no longer be an acceptable argument to the
1140 .B write
1141 request.
1142 .
1143 See the
1144 .B open
1145 request.
1146 .
1147 .TP
1148 .BI .composite\  glyph1\ glyph2
1149 Map glyph name
1150 .I glyph1
1151 to glyph name
1152 .I glyph2
1153 if it is used in
1154 .BI \[rs][ ... ]
1155 with more than one component.
1156 .
1157 .TP
1158 .B .continue
1159 Finish the current iteration of a while loop.
1160 .
1161 See also the
1162 .B while
1163 and
1164 .B break
1165 requests.
1166 .
1167 .TP
1168 .BI .color\  n
1169 If
1170 .I n
1171 is non-zero or missing, enable colors (this is the default), otherwise
1172 disable them.
1173 .
1174 .TP
1175 .BI .cp\  n
1176 If
1177 .I n
1178 is non-zero or missing, enable compatibility mode, otherwise disable
1179 it.
1180 .
1181 In compatibility mode, long names are not recognised, and the
1182 incompatibilities caused by long names do not arise.
1183 .
1184 .TP
1185 .BI .defcolor\  xxx\ scheme\ color_components
1186 Define color.
1187 .I scheme
1188 can be one of the following values:
1189 .B rgb
1190 (three components),
1191 .B cym
1192 (three components),
1193 .B cmyk
1194 (four components), and
1195 .B gray
1196 or
1197 .B grey
1198 (one component).
1199 .
1200 Color components can be given either as a hexadecimal string or as
1201 positive decimal integers in the range 0-65535.
1202 .
1203 A hexadecimal string contains all color components concatenated; it
1204 must start with either
1205 .B #
1206 or
1207 .BR ## .
1208 The former specifies hex values in the range 0-255 (which are
1209 internally multiplied by\~257), the latter in the range 0-65535.
1210 .
1211 Examples: #FFC0CB (pink), ##ffff0000ffff (magenta).
1212 .
1213 A new scaling indicator\~\c
1214 .B f
1215 has been introduced which multiplies its value by\~65536; this makes
1216 it convenient to specify color components as fractions in the range 0
1217 to\~1.
1218 .
1219 Example:
1220 .
1221 .RS
1222 .IP
1223 .ft CB
1224 .Text .defcolor darkgreen rgb 0.1f 0.5f 0.2f
1225 .br
1226 .ft
1227 .RE
1228 .
1229 .IP
1230 Note that
1231 .B f
1232 is the default scaling indicator for the
1233 .B defcolor
1234 request, thus the above statement is equivalent to
1235 .
1236 .RS
1237 .IP
1238 .ft CB
1239 .Text .defcolor darkgreen rgb 0.1 0.5 0.2
1240 .br
1241 .ft
1242 .RE
1243 .
1244 .IP
1245 The color named
1246 .B default
1247 (which is device-specific) can't be redefined.
1248 .
1249 It is possible that the default color for
1250 .esc M
1251 and
1252 .esc m
1253 is not the same.
1254 .
1255 .TP
1256 .BI .de1\  xx\ yy
1257 Similar to
1258 .BR .de , 
1259 but compatibility mode is switched off during execution.
1260 .
1261 On entry, the current compatibility mode is saved and restored at exit.
1262 .
1263 .TP
1264 .BI .dei\  xx\ yy
1265 Define macro indirectly.
1266 .
1267 The following example
1268 .
1269 .RS
1270 .IP
1271 .ne 2v+\n(.Vu
1272 .ft CB
1273 .nf
1274 .Text .ds xx aa
1275 .Text .ds yy bb
1276 .Text .dei xx yy
1277 .fi
1278 .ft
1279 .RE
1280 .
1281 .IP
1282 is equivalent to
1283 .
1284 .RS
1285 .IP
1286 .ft CB
1287 .Text .de aa bb
1288 .br
1289 .ft
1290 .RE
1291 .
1292 .TP
1293 .BI .dei1\  xx\ yy
1294 Similar to the
1295 .B dei
1296 request but compatibility mode is switched off during execution.
1297 .
1298 .TP
1299 .BI .do\  xxx
1300 Interpret
1301 .I .xxx
1302 with compatibility mode disabled.
1303 .
1304 For example,
1305 .
1306 .RS
1307 .
1308 .IP
1309 .ft CB
1310 .Text .do fam T
1311 .br
1312 .ft
1313 .
1314 .P
1315 would have the same effect as
1316 .
1317 .IP
1318 .ft CB
1319 .Text .fam T
1320 .br
1321 .ft
1322 .
1323 .P
1324 except that it would work even if compatibility mode had been enabled.
1325 .
1326 Note that the previous compatibility mode is restored before any files
1327 sourced by
1328 .I xxx
1329 are interpreted.
1330 .
1331 .RE
1332 .
1333 .TP
1334 .BI .ds1\  xx\ yy
1335 Similar to
1336 .BR .ds , 
1337 but compatibility mode is switched off during expansion.
1338 .
1339 To be more precise, a `compatibility save' token is inserted at the
1340 beginning of the string, and a `compatibility restore' token at the end.
1341 .
1342 .TP
1343 .B .ecs
1344 Save current escape character.
1345 .
1346 .TP
1347 .B .ecr
1348 Restore escape character saved with
1349 .BR ecs .
1350 Without a previous call to
1351 .BR ecs ,
1352 .RB ` \[rs] '
1353 will be the new escape character.
1354 .
1355 .TP
1356 .BI .evc\  xx
1357 Copy the contents of environment
1358 .I xx
1359 to the current environment.
1360 .
1361 No pushing or popping of environments will be done.
1362 .
1363 .TP
1364 .BI .fam\  xx
1365 Set the current font family to
1366 .IR xx .
1367 The current font family is part of the current environment.
1368 If
1369 .I xx
1370 is missing, switch back to previous font family.
1371 .
1372 The value at start-up is `T'.
1373 .
1374 See the description of the
1375 .B sty
1376 request for more information on font families.
1377 .
1378 .TP
1379 .BI .fchar\  c\ string
1380 Define fallback glyph
1381 .I c
1382 to be
1383 .IR string .
1384 .
1385 The syntax of this request is the same as the
1386 .B char
1387 request; the only difference is that a glyph defined with
1388 .B char
1389 hides the glyph with the same name in the current font, whereas a
1390 glyph defined with
1391 .B fchar
1392 is checked only if the particular glyph isn't found in the current font.
1393 .
1394 This test happens before checking special fonts.
1395 .
1396 .TP
1397 .BI .fschar\  f\ c\ string
1398 Define fallback glyph
1399 .I c
1400 for font
1401 .I f
1402 to be
1403 .IR string .
1404 .
1405 The syntax of this request is the same as the
1406 .B char
1407 request (with an additional argument to specify the font); a glyph
1408 defined with
1409 .B fschar
1410 is searched after the list of fonts declared with the
1411 .B fspecial
1412 request but before the list of fonts declared with
1413 .BR special .
1414 .
1415 .TP
1416 .BI .fspecial\  f\ s1\ s2\|.\|.\|.\&
1417 When the current font is
1418 .IR f ,
1419 fonts
1420 .IR s1 ,
1421 .IR s2 ,\|.\|.\|.\&
1422 will be special, that is, they will searched for glyphs not in
1423 the current font.
1424 .
1425 Any fonts specified in the
1426 .B special
1427 request will be searched after fonts specified in the
1428 .B fspecial
1429 request.
1430 .
1431 Without argument, reset the list of global special fonts to be empty.
1432 .
1433 .TP
1434 .BI .ftr\  f\ g
1435 Translate font
1436 .I f
1437 to
1438 .IR g .
1439 Whenever a font named
1440 .I f
1441 is referred to in an
1442 .B \[rs]f
1443 escape sequence, or in the
1444 .BR ft ,
1445 .BR ul ,
1446 .BR bd ,
1447 .BR cs ,
1448 .BR tkf ,
1449 .BR special ,
1450 .BR fspecial ,
1451 .BR fp ,
1452 or
1453 .BR sty
1454 requests, font
1455 .I g
1456 will be used.
1457 If
1458 .I g
1459 is missing, or equal to
1460 .I f
1461 then font
1462 .I f
1463 will not be translated.
1464 .
1465 .TP
1466 .BI .hcode \ c1\ code1\ c2\ code2\|.\|.\|.\&
1467 Set the hyphenation code of character
1468 .I c1
1469 to
1470 .I code1
1471 and that of
1472 .I c2
1473 to
1474 .IR code2 .
1475 A hyphenation code must be a single input character (not a special
1476 character) other than a digit or a space.
1477 .
1478 Initially each lower-case letter \%a-z has a hyphenation code, which is
1479 itself, and each upper-case letter \%A-Z has a hyphenation code which is
1480 the lower-case version of itself.
1481 .
1482 See also the
1483 .B hpf
1484 request.
1485 .
1486 .TP
1487 .BI .hla\  lang
1488 Set the current hyphenation language to
1489 .IR lang .
1490 Hyphenation exceptions specified with the
1491 .B hw
1492 request and hyphenation patterns specified with the
1493 .B hpf
1494 request are both associated with the current hyphenation language.
1495 .
1496 The
1497 .B hla
1498 request is usually invoked by the
1499 .B troffrc
1500 file.
1501 .
1502 .TP
1503 .BI .hlm\  n
1504 Set the maximum number of consecutive hyphenated lines to\~\c
1505 .IR n .
1506 If
1507 .I n
1508 is negative, there is no maximum.
1509 .
1510 The default value is\~\-1.
1511 .
1512 This value is associated with the current environment.
1513 .
1514 Only lines output from an environment count towards the maximum
1515 associated with that environment.
1516 .
1517 Hyphens resulting from
1518 .B \[rs]%
1519 are counted; explicit hyphens are not.
1520 .
1521 .TP
1522 .BI .hpf\  file
1523 Read hyphenation patterns from
1524 .IR file ;
1525 this will be searched for in the same way that
1526 .IB name .tmac
1527 is searched for when the
1528 .BI \-m name
1529 option is specified.
1530 .
1531 It should have the same format as (simple) \*[tx] patterns files.
1532 .
1533 More specifically, the following scanning rules are implemented.
1534 .
1535 .RS
1536 .IP \[bu]
1537 A percent sign starts a comment (up to the end of the line) even if
1538 preceded by a backslash.
1539 .
1540 .IP \[bu]
1541 No support for `digraphs' like
1542 .BR \[rs]$ .
1543 .
1544 .IP \[bu]
1545 .BI ^^ xx
1546 .RI ( x
1547 is 0-9 or a-f) and
1548 .BI ^^ x
1549 (character code of\~\c
1550 .I x
1551 in the range 0-127) are recognized; other use of
1552 .B ^
1553 causes an error.
1554 .
1555 .IP \[bu]
1556 No macro expansion.
1557 .
1558 .IP \[bu]
1559 .B hpf
1560 checks for the expression
1561 .B \[rs]patterns{.\|.\|.}
1562 (possibly with whitespace before and after the braces).
1563 .
1564 Everything between the braces is taken as hyphenation patterns.
1565 .
1566 Consequently,
1567 .B {
1568 and
1569 .B }
1570 are not allowed in patterns.
1571 .
1572 .IP \[bu]
1573 Similarly,
1574 .B \[rs]hyphenation{.\|.\|.}
1575 gives a list of hyphenation exceptions.
1576 .
1577 .IP \[bu]
1578 .B \[rs]endinput
1579 is recognized also.
1580 .
1581 .IP \[bu]
1582 For backwards compatibility, if
1583 .B \[rs]patterns
1584 is missing, the whole file is treated as a list of hyphenation patterns
1585 (only recognizing the
1586 .BR % \~\c
1587 character as the start of a comment).
1588 .RE
1589 .
1590 .IP
1591 Use the
1592 .B hpfcode
1593 request to map the encoding used in hyphenation patterns files to
1594 .BR groff 's
1595 input encoding.
1596 .IP
1597 The set of hyphenation patterns is associated with the current language
1598 set by the
1599 .B hla
1600 request.
1601 .
1602 The
1603 .B hpf
1604 request is usually invoked by the
1605 .B troffrc
1606 file; a second call replaces the old patterns with the new ones.
1607 .
1608 .TP
1609 .BI .hpfa\  file
1610 The same as
1611 .B hpf
1612 except that the hyphenation patterns from
1613 .I file
1614 are appended to the patterns already loaded in the current language.
1615 .
1616 .TP
1617 .BI .hpfcode\  a\ b\ c\ d\ .\|.\|.
1618 After reading a hyphenation patterns file with the
1619 .B hpf
1620 or
1621 .B hpfa
1622 request, convert all characters with character code\~\c
1623 .I a
1624 in the recently read patterns to character code\~\c
1625 .IR b ,
1626 character code\~\c
1627 .I c
1628 to\~\c
1629 .IR d ,
1630 etc.
1631 .
1632 Initially, all character codes map to themselves.
1633 .
1634 The arguments of
1635 .B hpfcode
1636 must be integers in the range 0 to\~255.
1637 .
1638 Note that it is even possible to use character codes which are invalid in
1639 .B groff
1640 otherwise.
1641 .
1642 .TP
1643 .BI .hym\  n
1644 Set the
1645 .I hyphenation margin
1646 to\~\c
1647 .IR n :
1648 when the current adjustment mode is not\~\c
1649 .BR b ,
1650 the line will not be hyphenated if the line is no more than
1651 .I n
1652 short.
1653 .
1654 The default hyphenation margin is\~0.
1655 .
1656 The default scaling indicator for this request is\~\c
1657 .IR m .
1658 The hyphenation margin is associated with the current environment.
1659 .
1660 The current hyphenation margin is available in the
1661 .B \[rs]n[.hym]
1662 register.
1663 .
1664 .TP
1665 .BI .hys\  n
1666 Set the
1667 .I hyphenation space
1668 to\~\c
1669 .IR n :
1670 when the current adjustment mode is\~\c
1671 .B b
1672 don't hyphenate the line if the line can be justified by adding no
1673 more than
1674 .I n
1675 extra space to each word space.
1676 .
1677 The default hyphenation space is\~0.
1678 .
1679 The default scaling indicator for this request is\~\c
1680 .BR m .
1681 The hyphenation space is associated with the current environment.
1682 .
1683 The current hyphenation space is available in the
1684 .B \[rs]n[.hys]
1685 register.
1686 .
1687 .TP
1688 .BI .itc\  n\ macro
1689 Variant of
1690 .B .it
1691 for which a line interrupted with
1692 .B \[rs]c
1693 counts as one input line.
1694 .
1695 .TP
1696 .BI .kern\  n
1697 If
1698 .I n
1699 is non-zero or missing, enable pairwise kerning, otherwise disable it.
1700 .
1701 .TP
1702 .BI .length\  xx\ string
1703 Compute the length of
1704 .I string
1705 and return it in the number register
1706 .I xx
1707 (which is not necessarily defined before).
1708 .
1709 .TP
1710 .BI .linetabs\  n
1711 If
1712 .I n
1713 is non-zero or missing, enable line-tabs mode, otherwise disable it
1714 (which is the default).
1715 .
1716 In line-tabs mode, tab distances are computed relative to the
1717 (current) output line.
1718 .
1719 Otherwise they are taken relative to the input line.
1720 .
1721 For example, the following
1722 .
1723 .RS
1724 .IP
1725 .ne 6v+\n(.Vu
1726 .ft CB
1727 .nf
1728 .Text .ds x a\[rs]t\[rs]c
1729 .Text .ds y b\[rs]t\[rs]c
1730 .Text .ds z c
1731 .Text .ta 1i 3i
1732 .Text \[rs]*x
1733 .Text \[rs]*y
1734 .Text \[rs]*z
1735 .fi
1736 .ft
1737 .RE
1738 .
1739 .IP
1740 yields
1741 .
1742 .RS
1743 .IP
1744 a         b         c
1745 .RE
1746 .
1747 .IP
1748 In line-tabs mode, the same code gives
1749 .
1750 .RS
1751 .IP
1752 a         b                   c
1753 .RE
1754 .
1755 .IP
1756 Line-tabs mode is associated with the current environment; the
1757 read-only number register
1758 .B \\[rs]n[.linetabs]
1759 is set to\~1 if in line-tabs mode, and 0 otherwise.
1760 .
1761 .TP
1762 .BI .mso\  file
1763 The same as the
1764 .B so
1765 request except that
1766 .I file
1767 is searched for in the same directories as macro files for the the
1768 .B \-m
1769 command line option.
1770 .
1771 If the file name to be included has the form
1772 .IB name .tmac
1773 and it isn't found,
1774 .B mso
1775 tries to include
1776 .BI tmac. name
1777 instead and vice versa.
1778 .
1779 .TP
1780 .BI .nop \ anything
1781 Execute
1782 .IR anything .
1783 This is similar to `.if\ 1'.
1784 .
1785 .TP
1786 .B .nroff
1787 Make the
1788 .B n
1789 built-in condition true and the
1790 .B t
1791 built-in condition false.
1792 .
1793 This can be reversed using the
1794 .B troff
1795 request.
1796 .
1797 .TP
1798 .BI .open\  stream\ filename
1799 Open
1800 .I filename
1801 for writing and associate the stream named
1802 .I stream
1803 with it.
1804 .
1805 See also the
1806 .B close
1807 and
1808 .B write
1809 requests.
1810 .
1811 .TP 
1812 .BI .opena\  stream\ filename
1813 Like
1814 .BR open ,
1815 but if
1816 .I filename
1817 exists, append to it instead of truncating it.
1818 .
1819 .TP
1820 .BI .output\  string
1821 Emit
1822 .I string
1823 directly to the intermediate output (subject to copy-mode interpretation);
1824 this is similar to
1825 .B \[rs]!
1826 used at the top level.
1827 .
1828 An initial double quote in
1829 .I string
1830 is stripped off to allow initial blanks.
1831 .
1832 .TP
1833 .B .pnr
1834 Print the names and contents of all currently defined number registers
1835 on stderr.
1836 .
1837 .TP
1838 .BI .psbb \ filename
1839 Get the bounding box of a PostScript image
1840 .IR filename .
1841 This file must conform to Adobe's Document Structuring Conventions;
1842 the command looks for a
1843 .B \%%%BoundingBox
1844 comment to extract the bounding box values.
1845 .
1846 After a successful call, the coordinates (in PostScript units) of the
1847 lower left and upper right corner can be found in the registers
1848 .BR \[rs]n[llx] ,
1849 .BR \[rs]n[lly] ,
1850 .BR \[rs]n[urx] ,
1851 and
1852 .BR \[rs]n[ury] ,
1853 respectively.
1854 .
1855 If some error has occurred, the four registers are set to zero.
1856 .
1857 .TP
1858 .BI .pso \ command
1859 This behaves like the
1860 .B so
1861 request except that input comes from the standard output of
1862 .IR command .
1863 .
1864 .TP
1865 .B .ptr
1866 Print the names and positions of all traps (not including input line
1867 traps and diversion traps) on stderr.
1868 .
1869 Empty slots in the page trap list are printed as well, because they
1870 can affect the priority of subsequently planted traps.
1871 .
1872 .TP
1873 .BI .pvs \ \[+-]n
1874 Set the post-vertical line space to
1875 .IR n ;
1876 default scale indicator is\~\c
1877 .BR p .
1878 .
1879 This value will be added to each line after it has been output.
1880 .
1881 With no argument, the post-vertical line space is set to its previous
1882 value.
1883 .
1884 .IP
1885 The total vertical line spacing consists of four components:
1886 .B .vs
1887 and
1888 .B \[rs]x
1889 with a negative value which are applied before the line is output, and
1890 .B .pvs
1891 and
1892 .B \[rs]x
1893 with a positive value which are applied after the line is output.
1894 .
1895 .TP
1896 .BI .rchar\  c1\ c2\|.\|.\|.\&
1897 Remove the definitions of glyphs
1898 .IR c1 ,
1899 .IR c2 ,\|.\|.\|.
1900 This undoes the effect of a
1901 .B char
1902 request.
1903 .
1904 .TP
1905 .B .return
1906 Within a macro, return immediately.
1907 .
1908 If called with an argument, return twice, namely from the current macro and
1909 from the macro one level higher.
1910 .
1911 No effect otherwise.
1912 .
1913 .TP
1914 .BI .rfschar\  c1\ c2\|.\|.\|.\&
1915 Remove the font-specific definitions of glyphs
1916 .IR c1 ,
1917 .IR c2 ,\|.\|.\|.
1918 This undoes the effect of a
1919 .B fschar
1920 request.
1921 .
1922 .TP
1923 .B .rj
1924 .TQ
1925 .BI .rj \~n
1926 Right justify the next
1927 .IR n \~\c
1928 input lines.
1929 .
1930 Without an argument right justify the next input line.
1931 .
1932 The number of lines to be right justified is available in the
1933 .B \[rs]n[.rj]
1934 register.
1935 .
1936 This implicitly does
1937 .BR .ce \~0 .
1938 The
1939 .B ce
1940 request implicitly does
1941 .BR .rj \~0 .
1942 .
1943 .TP
1944 .BI .rnn \ xx\ yy
1945 Rename number register
1946 .I xx
1947 to
1948 .IR yy .
1949 .
1950 .TP
1951 .BI .schar\  c\ string
1952 Define global fallback glyph
1953 .I c
1954 to be
1955 .IR string .
1956 .
1957 The syntax of this request is the same as the
1958 .B char
1959 request; a glyph defined with
1960 .B schar
1961 is searched after the list of fonts declared with the
1962 .B special
1963 request but before the mounted special fonts.
1964 .
1965 .TP
1966 .BI .shc\  c
1967 Set the soft hyphen character to
1968 .IR c .
1969 If
1970 .I c
1971 is omitted, the soft hyphen character will be set to the default
1972 .BR \[rs](hy .
1973 The soft hyphen character is the glyph which will be inserted when
1974 a word is hyphenated at a line break.
1975 .
1976 If the soft hyphen character does not exist in the font of the
1977 glyph immediately preceding a potential break point, then the line
1978 will not be broken at that point.
1979 .
1980 Neither definitions (specified with the
1981 .B char
1982 request) nor translations (specified with the
1983 .B tr
1984 request) are considered when finding the soft hyphen character.
1985 .
1986 .TP
1987 .BI .shift\  n
1988 In a macro, shift the arguments by
1989 .I n
1990 positions: argument\~\c
1991 .I i
1992 becomes argument
1993 .IR i \- n ;
1994 arguments 1 to\~\c
1995 .I n
1996 will no longer be available.
1997 .
1998 If
1999 .I n
2000 is missing, arguments will be shifted by\~1.
2001 .
2002 Shifting by negative amounts is currently undefined.
2003 .
2004 .TP
2005 .BI .sizes\  s1\ s2\|.\|.\|.\|sn\  [0]
2006 This command is similar to the
2007 .B sizes
2008 command of a
2009 .B DESC
2010 file.
2011 .
2012 It sets the available font sizes for the current font to
2013 .IR s1 ,
2014 .IR s2 ,\|.\|.\|.\|,\~ sn
2015 scaled points.
2016 .
2017 The list of sizes can be terminated by an optional\~\c
2018 .BR 0 .
2019 .
2020 Each
2021 .I si
2022 can also be a range of sizes
2023 .IR m - n .
2024 .
2025 Contrary to the font file command, the list can't extend over more
2026 than a single line.
2027 .
2028 .TP
2029 .BI .special\  s1\ s2\|.\|.\|.\&
2030 Fonts
2031 .IR s1 ,
2032 .IR s2 ,
2033 are special and will be searched for glyphs not in the current
2034 font.
2035 .
2036 Without arguments, reset the list of special fonts to be empty.
2037 .
2038 .TP
2039 .BI .spreadwarn\  limit
2040 Make
2041 .B troff
2042 emit a warning if the additional space inserted for each space between
2043 words in an output line is larger or equal to
2044 .IR limit .
2045 .
2046 A negative value is changed to zero; no argument toggles the warning on
2047 and off without changing
2048 .IR limit .
2049 .
2050 The default scaling indicator is\~\c
2051 .BR m .
2052 .
2053 At startup,
2054 .B spreadwarn
2055 is deactivated, and
2056 .I limit
2057 is set to 3m.
2058 .
2059 For example,
2060 .B .spreadwarn\ 0.2m
2061 will cause a warning if
2062 .B troff
2063 must add 0.2m or more for each interword space in a line.
2064 .
2065 This request is active only if text is justified to both margins (using
2066 .BR .ad\ b ).
2067 .
2068 .TP
2069 .BI .sty\  n\ f
2070 Associate style\~\c
2071 .I f
2072 with font position\~\c
2073 .IR n .
2074 A font position can be associated either with a font or with a style.
2075 .
2076 The current font is the index of a font position and so is also either
2077 a font or a style.
2078 .
2079 When it is a style, the font that is actually used is the font the
2080 name of which is the concatenation of the name of the current family
2081 and the name of the current style.
2082 .
2083 For example, if the current font is\~1 and font position\~1 is
2084 associated with style\~\c
2085 .B R
2086 and the current font family is\~\c
2087 .BR T ,
2088 then font
2089 .BR TR
2090 will be used.
2091 .
2092 If the current font is not a style, then the current family is ignored.
2093 .
2094 When the requests
2095 .BR cs ,
2096 .BR bd ,
2097 .BR tkf ,
2098 .BR uf ,
2099 or
2100 .B fspecial
2101 are applied to a style, then they will instead be applied to the
2102 member of the current family corresponding to that style.
2103 .
2104 The default family can be set with the
2105 .B \-f
2106 option.
2107 .
2108 The
2109 .B styles
2110 command in the
2111 .SM DESC
2112 file controls which font positions (if any) are initially associated
2113 with styles rather than fonts.
2114 .
2115 .TP
2116 .BI .substring\  xx\ n1\  [ n2 ]
2117 Replace the string named
2118 .I xx
2119 with the substring defined by the indices
2120 .I n1
2121 and
2122 .IR n2 .
2123 The first character in the string has index\~0.
2124 .
2125 If
2126 .I n2
2127 is omitted, it is taken to be equal to the string's length.
2128 .
2129 If the index value
2130 .I n1
2131 or
2132 .I n2
2133 is negative, it will be counted from the end of the string,
2134 going backwards:
2135 .
2136 The last character has index\~-1, the character before the last
2137 character has index\~-2, etc.
2138 .
2139 .TP
2140 .BI .tkf\  f\ s1\ n1\ s2\ n2
2141 Enable track kerning for font
2142 .IR f .
2143 When the current font is
2144 .I f
2145 the width of every glyph will be increased by an amount between
2146 .I n1
2147 and
2148 .IR n2 ;
2149 when the current point size is less than or equal to
2150 .I s1
2151 the width will be increased by
2152 .IR n1 ;
2153 when it is greater than or equal to
2154 .I s2
2155 the width will be increased by
2156 .IR n2 ;
2157 when the point size is greater than or equal to
2158 .I s1
2159 and less than or equal to
2160 .I s2
2161 the increase in width is a linear function of the point size.
2162 .
2163 .TP
2164 .BI .tm1\  string
2165 Similar to the
2166 .B tm
2167 request,
2168 .I string
2169 is read in copy mode and written on the standard error, but an initial
2170 double quote in
2171 .I string
2172 is stripped off to allow initial blanks.
2173 .
2174 .TP
2175 .BI .tmc\  string
2176 Similar to
2177 .B tm1
2178 but without writing a final newline.
2179 .
2180 .TP
2181 .BI .trf\  filename
2182 Transparently output the contents of file
2183 .IR filename .
2184 Each line is output as if preceded by
2185 .BR \[rs]! ;
2186 however, the lines are not subject to copy-mode interpretation.
2187 .
2188 If the file does not end with a newline, then a newline will be added.
2189 .
2190 For example, you can define a macro\~\c
2191 .I x
2192 containing the contents of file\~\c
2193 .IR f ,
2194 using
2195 .
2196 .RS
2197 .IP
2198 .ne 2v+\n(.Vu
2199 .ft CB
2200 .nf
2201 .Text .di x
2202 .Text .trf f
2203 .Text .di
2204 .fi
2205 .ft
2206 .RE
2207 .
2208 .IP
2209 Unlike with the
2210 .B cf
2211 request, the file cannot contain characters such as
2212 .SM NUL
2213 that are not legal troff input characters.
2214 .
2215 .TP
2216 .BI .trin\  abcd
2217 This is the same as the
2218 .B tr
2219 request except that the
2220 .B asciify
2221 request will use the character code (if any) before the character
2222 translation.
2223 .
2224 Example:
2225 .
2226 .RS
2227 .IP
2228 .nf
2229 .ft CB
2230 .Text .trin ax
2231 .Text .di xxx
2232 .Text a
2233 .Text .br
2234 .Text .di
2235 .Text .xxx
2236 .Text .trin aa
2237 .Text .asciify xxx
2238 .Text .xxx
2239 .fi
2240 .ft
2241 .RE
2242 .
2243 .IP
2244 The result is
2245 .BR x\ a .
2246 .
2247 Using
2248 .BR tr ,
2249 the result would be
2250 .BR x\ x .
2251 .
2252 .TP
2253 .BI .trnt\  abcd
2254 This is the same as the
2255 .B tr
2256 request except that the translations do not apply to text that is
2257 transparently throughput into a diversion with
2258 .BR \[rs]! .
2259 For example,
2260 .
2261 .RS
2262 .IP
2263 .nf
2264 .ft CB
2265 .Text .tr ab
2266 .Text .di x
2267 .Text \[rs]!.tm a
2268 .Text .di
2269 .Text .x
2270 .fi
2271 .ft
2272 .RE
2273 .
2274 .IP
2275 will print\~\c
2276 .BR b ;
2277 if
2278 .B trnt
2279 is used instead of
2280 .B tr
2281 it will print\~\c
2282 .BR a .
2283 .RE
2284 .
2285 .TP
2286 .B .troff
2287 Make the
2288 .B n
2289 built-in condition false, and the
2290 .B t
2291 built-in condition true.
2292 .
2293 This undoes the effect of the
2294 .B nroff
2295 request.
2296 .
2297 .TP
2298 .BI .unformat\  xx
2299 This request `unformats' the diversion
2300 .IR xx .
2301 Contrary to the
2302 .B .asciify
2303 request, which tries to convert formatted elements of the diversion
2304 back to input tokens as much as possible,
2305 .B .unformat
2306 will only handle tabs and spaces between words (usually caused by
2307 spaces or newlines in the input) specially.
2308 .
2309 The former are treated as if they were input tokens, and the latter
2310 are stretchable again.
2311 .
2312 Note that the vertical size of lines is not preserved.
2313 .
2314 Glyph information (font, font size, space width, etc.) is retained.
2315 .
2316 Useful in conjunction with the
2317 .B .box
2318 and
2319 .B .boxa
2320 requests.
2321 .
2322 .TP
2323 .BI .vpt\  n
2324 Enable vertical position traps if
2325 .I n
2326 is non-zero, disable them otherwise.
2327 .
2328 Vertical position traps are traps set by the
2329 .B wh
2330 or
2331 .B dt
2332 requests.
2333 .
2334 Traps set by the
2335 .B it
2336 request are not vertical position traps.
2337 .
2338 The parameter that controls whether vertical position traps are
2339 enabled is global.
2340 .
2341 Initially vertical position traps are enabled.
2342 .
2343 .TP
2344 .BI .warn\  n
2345 Control warnings.
2346 .I n
2347 is the sum of the numbers associated with each warning that is to be
2348 enabled; all other warnings will be disabled.
2349 .
2350 The number associated with each warning is listed in
2351 .BR @g@troff (@MAN1EXT@).
2352 .
2353 For example,
2354 .B .warn\~0
2355 will disable all warnings, and
2356 .B .warn\~1
2357 will disable all warnings except that about missing glyphs.
2358 .
2359 If
2360 .I n
2361 is not given, all warnings will be enabled.
2362 .
2363 .TP
2364 .BI .warnscale\  si
2365 Set the scaling indicator used in warnings to
2366 .IR si .
2367 .
2368 Valid values for
2369 .I si
2370 are
2371 .BR u ,
2372 .BR i ,
2373 .BR c ,
2374 .BR p ,
2375 and
2376 .BR P .
2377 .
2378 At startup, it is set to\~\c
2379 .BR i .
2380 .
2381 .TP
2382 .BI .while \ c\ anything
2383 While condition\~\c
2384 .I c
2385 is true, accept
2386 .I anything
2387 as input;
2388 .IR c \~\c
2389 can be any condition acceptable to an
2390 .B if
2391 request;
2392 .I anything
2393 can comprise multiple lines if the first line starts with
2394 .B \[rs]{
2395 and the last line ends with
2396 .BR \[rs]} .
2397 See also the
2398 .B break
2399 and
2400 .B continue
2401 requests.
2402 .
2403 .TP
2404 .BI .write\  stream\ anything
2405 Write
2406 .I anything
2407 to the stream named
2408 .IR stream .
2409 .I stream
2410 must previously have been the subject of an
2411 .B open
2412 request.
2413 .I anything
2414 is read in copy mode;
2415 a leading\~\c
2416 .B \[dq]
2417 will be stripped.
2418 .
2419 .TP
2420 .BI .writec\  stream\ anything
2421 Similar to
2422 .B write
2423 but without writing a final newline.
2424 .
2425 .TP
2426 .BI .writem\  stream\ xx
2427 Write the contents of the macro or string
2428 .I xx
2429 to the stream named
2430 .IR stream .
2431 .I stream
2432 must previously have been the subject of an
2433 .B open
2434 request.
2435 .I xx
2436 is read in copy mode.
2437 .
2438 .
2439 .\" --------------------------------------------------------------------
2440 .SS "Extended escape sequences"
2441 .\" --------------------------------------------------------------------
2442 .
2443 .TP
2444 .BI \[rs]D' .\|.\|. '
2445 All drawing commands of groff's intermediate output are accepted.
2446 .
2447 See subsection
2448 .B "Drawing Commands"
2449 below for more information.
2450 .
2451 .
2452 .\" --------------------------------------------------------------------
2453 .SS "Extended requests"
2454 .\" --------------------------------------------------------------------
2455 .
2456 .TP
2457 .BI .cf\  filename
2458 When used in a diversion, this will embed in the diversion an object
2459 which, when reread, will cause the contents of
2460 .I filename
2461 to be transparently copied through to the output.
2462 .
2463 In UNIX troff, the contents of
2464 .I filename
2465 is immediately copied through to the output regardless of whether
2466 there is a current diversion; this behaviour is so anomalous that it
2467 must be considered a bug.
2468 .
2469 .TP
2470 .BI .ev\  xx
2471 If
2472 .I xx
2473 is not a number, this will switch to a named environment called
2474 .IR xx .
2475 The environment should be popped with a matching
2476 .B ev
2477 request without any arguments, just as for numbered environments.
2478 .
2479 There is no limit on the number of named environments; they will be
2480 created the first time that they are referenced.
2481 .
2482 .TP
2483 .BI .ss\  m\ n
2484 When two arguments are given to the
2485 .B ss
2486 request, the second argument gives the
2487 .IR "sentence space size" .
2488 If the second argument is not given, the sentence space size
2489 will be the same as the word space size.
2490 .
2491 Like the word space size, the sentence space is in units of
2492 one twelfth of the spacewidth parameter for the current font.
2493 .
2494 Initially both the word space size and the sentence
2495 space size are\~12.
2496 .
2497 Contrary to UNIX troff, GNU troff handles this request in nroff mode
2498 also; a given value is then rounded down to the nearest multiple
2499 of\~12.
2500 .
2501 The sentence space size is used in two circumstances.
2502 .
2503 If the end of a sentence occurs at the end of a line in fill mode,
2504 then both an inter-word space and a sentence space will be added; if
2505 two spaces follow the end of a sentence in the middle of a line, then
2506 the second space will be a sentence space.
2507 .
2508 Note that the behaviour of UNIX troff will be exactly that exhibited
2509 by GNU troff if a second argument is never given to the
2510 .B ss
2511 request.
2512 .
2513 In GNU troff, as in UNIX troff, you should always follow a sentence
2514 with either a newline or two spaces.
2515 .
2516 .TP
2517 .BI .ta\  n1\ n2\|.\|.\|.nn \ T\  r1\ r2\|.\|.\|.\|rn
2518 Set tabs at positions
2519 .IR n1 ,
2520 .IR n2 ,\|.\|.\|.\|,
2521 .I nn
2522 and then set tabs at
2523 .IR nn + r1 ,
2524 .IR nn + r2 ,\|.\|.\|.\|,
2525 .IR nn + rn
2526 and then at
2527 .IR nn + rn + r1 ,
2528 .IR nn + rn + r2 ,\|.\|.\|.\|,
2529 .IR nn + rn + rn ,
2530 and so on.
2531 For example,
2532 .
2533 .RS
2534 .IP
2535 .ft CB
2536 .Text .ta T .5i
2537 .br
2538 .ft
2539 .
2540 .P
2541 will set tabs every half an inch.
2542 .RE
2543 .
2544 .
2545 .\" --------------------------------------------------------------------
2546 .SS "New number registers"
2547 .\" --------------------------------------------------------------------
2548 .
2549 The following read-only registers are available:
2550 .
2551 .TP
2552 .B \[rs]n[.C]
2553 1\~if compatibility mode is in effect, 0\~otherwise.
2554 .
2555 .TP
2556 .B \[rs]n[.cdp]
2557 The depth of the last glyph added to the current environment.
2558 .
2559 It is positive if the glyph extends below the baseline.
2560 .
2561 .TP
2562 .B \[rs]n[.ce]
2563 The number of lines remaining to be centered, as set by the
2564 .B ce
2565 request.
2566 .
2567 .TP
2568 .B \[rs]n[.cht]
2569 The height of the last glyph added to the current environment.
2570 .
2571 It is positive if the glyph extends above the baseline.
2572 .
2573 .TP
2574 .B \[rs]n[.color]
2575 1\~if colors are enabled, 0\~otherwise.
2576 .
2577 .TP
2578 .B \[rs]n[.csk]
2579 The skew of the last glyph added to the current environment.
2580 .
2581 The
2582 .I skew
2583 of a glyph is how far to the right of the center of a glyph
2584 the center of an accent over that glyph should be placed.
2585 .
2586 .TP
2587 .B \[rs]n[.ev]
2588 The name or number of the current environment.
2589 .
2590 This is a string-valued register.
2591 .
2592 .TP
2593 .B \[rs]n[.fam]
2594 The current font family.
2595 .
2596 This is a string-valued register.
2597 .
2598 .TP
2599 .B \[rs]n[.fn]
2600 The current (internal) real font name.
2601 .
2602 This is a string-valued register.
2603 .
2604 If the current font is a style, the value of
2605 .B \[rs]n[.fn]
2606 is the proper concatenation of family and style name.
2607 .
2608 .TP
2609 .B \[rs]n[.fp]
2610 The number of the next free font position.
2611 .
2612 .TP
2613 .B \[rs]n[.g]
2614 Always\~1.
2615 .
2616 Macros should use this to determine whether they are running under GNU
2617 troff.
2618 .
2619 .TP
2620 .B \[rs]n[.height]
2621 The current height of the font as set with
2622 .BR \[rs]H .
2623 .
2624 .TP
2625 .B \[rs]n[.hla]
2626 The current hyphenation language as set by the
2627 .B hla
2628 request.
2629 .
2630 .TP
2631 .B \[rs]n[.hlc]
2632 The number of immediately preceding consecutive hyphenated lines.
2633 .
2634 .TP
2635 .B \[rs]n[.hlm]
2636 The maximum allowed number of consecutive hyphenated lines, as set by
2637 the
2638 .B hlm
2639 request.
2640 .
2641 .TP
2642 .B \[rs]n[.hy]
2643 The current hyphenation flags (as set by the
2644 .B hy
2645 request).
2646 .
2647 .TP
2648 .B \[rs]n[.hym]
2649 The current hyphenation margin (as set by the
2650 .B hym
2651 request).
2652 .
2653 .TP
2654 .B \[rs]n[.hys]
2655 The current hyphenation space (as set by the
2656 .B hys
2657 request).
2658 .
2659 .TP
2660 .B \[rs]n[.in]
2661 The indent that applies to the current output line.
2662 .
2663 .TP
2664 .B \[rs]n[.int]
2665 Set to a positive value if last output line is interrupted (i.e., if
2666 it contains
2667 .IR \[rs]c ).
2668 .
2669 .TP
2670 .B \[rs]n[.kern]
2671 1\~if pairwise kerning is enabled, 0\~otherwise.
2672 .
2673 .TP
2674 .B \[rs]n[.lg]
2675 The current ligature mode (as set by the
2676 .B lg
2677 request).
2678 .
2679 .TP
2680 .B \[rs]n[.linetabs]
2681 The current line-tabs mode (as set by the
2682 .B linetabs
2683 request).
2684 .
2685 .TP
2686 .B \[rs]n[.ll]
2687 The line length that applies to the current output line.
2688 .
2689 .TP
2690 .B \[rs]n[.lt]
2691 The title length as set by the
2692 .B lt
2693 request.
2694 .
2695 .TP
2696 .B \[rs]n[.m]
2697 The name of the current drawing color.
2698 .
2699 This is a string-valued register.
2700 .
2701 .TP
2702 .B \[rs]n[.M]
2703 The name of the current background color.
2704 .
2705 This is a string-valued register.
2706 .
2707 .TP
2708 .B \[rs]n[.ne]
2709 The amount of space that was needed in the last
2710 .B ne
2711 request that caused a trap to be sprung.
2712 .
2713 Useful in conjunction with the
2714 .B \[rs]n[.trunc]
2715 register.
2716 .
2717 .TP
2718 .B \[rs]n[.ns]
2719 1\~if no-space mode is active, 0\~otherwise.
2720 .
2721 .TP
2722 .B \[rs]n[.pe]
2723 1\~during a page ejection caused by the
2724 .B bp
2725 request, 0\~otherwise.
2726 .
2727 .TP
2728 .B \[rs]n[.pn]
2729 The number of the next page, either the value set by a
2730 .B pn
2731 request, or the number of the current page plus\~1.
2732 .
2733 .TP
2734 .B \[rs]n[.ps]
2735 The current pointsize in scaled points.
2736 .
2737 .TP
2738 .B \[rs]n[.psr]
2739 The last-requested pointsize in scaled points.
2740 .
2741 .TP
2742 .B \[rs]n[.pvs]
2743 The current post-vertical line space as set with the
2744 .B pvs
2745 request.
2746 .
2747 .TP
2748 .B \[rs]n[.rj]
2749 The number of lines to be right-justified as set by the
2750 .B rj
2751 request.
2752 .
2753 .TP
2754 .B \[rs]n[.slant]
2755 The slant of the current font as set with
2756 .BR \[rs]S .
2757 .
2758 .TP
2759 .B \[rs]n[.sr]
2760 The last requested pointsize in points as a decimal fraction.
2761 .
2762 This is a string-valued register.
2763 .
2764 .TP
2765 .B \[rs]n[.ss]
2766 .TQ
2767 .B \[rs]n[.sss]
2768 These give the values of the parameters set by the first and second
2769 arguments of the
2770 .B ss
2771 request.
2772 .
2773 .TP
2774 .B \[rs]n[.tabs]
2775 A string representation of the current tab settings suitable for use
2776 as an argument to the
2777 .B ta
2778 request.
2779 .
2780 .TP
2781 .B \[rs]n[.trunc]
2782 The amount of vertical space truncated by the most recently sprung
2783 vertical position trap, or, if the trap was sprung by a
2784 .B ne
2785 request, minus the amount of vertical motion produced by the
2786 .B ne
2787 request.
2788 .
2789 In  other  words, at the point  a  trap is  sprung,  it represents the
2790 difference of  what the vertical position  would have been but for the
2791 trap, and what the vertical position actually is.
2792 .
2793 Useful in conjunction with the
2794 .B \[rs]n[.ne]
2795 register.
2796 .
2797 .TP
2798 .B \[rs]n[.U]
2799 Set to 1 if in safer mode and to 0 if in unsafe mode (as given with the
2800 .B \-U
2801 command line option).
2802 .
2803 .TP
2804 .B \[rs]n[.vpt]
2805 1\~if vertical position traps are enabled, 0\~otherwise.
2806 .
2807 .TP
2808 .B \[rs]n[.warn]
2809 The sum of the numbers associated with each of the currently enabled
2810 warnings.
2811 .
2812 The number associated with each warning is listed in
2813 .BR @g@troff (@MAN1EXT@).
2814 .
2815 .TP
2816 .B \[rs]n[.x]
2817 The major version number.
2818 .
2819 For example, if the version number is 1.03, then
2820 .B \[rs]n[.x]
2821 will contain\~1.
2822 .
2823 .TP
2824 .B \[rs]n[.y]
2825 The minor version number.
2826 .
2827 For example, if the version number is 1.03, then
2828 .B \[rs]n[.y]
2829 will contain\~03.
2830 .
2831 .TP
2832 .B \[rs]n[.Y]
2833 The revision number of groff.
2834 .
2835 .TP
2836 .B \[rs]n[llx]
2837 .TQ
2838 .B \[rs]n[lly]
2839 .TQ
2840 .B \[rs]n[urx]
2841 .TQ
2842 .B \[rs]n[ury]
2843 These four registers are set by the
2844 .B .psbb
2845 request and contain the bounding box values (in PostScript units) of a
2846 given PostScript image.
2847 .
2848 .P
2849 The following read/write registers are set by the
2850 .B \[rs]w
2851 escape sequence:
2852 .
2853 .TP
2854 .B \[rs]n[rst]
2855 .TQ
2856 .B \[rs]n[rsb]
2857 Like the
2858 .B st
2859 and
2860 .B sb
2861 registers, but take account of the heights and depths of glyphs.
2862 .
2863 .TP
2864 .B \[rs]n[ssc]
2865 The amount of horizontal space (possibly negative) that should be
2866 added to the last glyph before a subscript.
2867 .
2868 .TP
2869 .B \[rs]n[skw]
2870 How far to right of the center of the last glyph in the
2871 .B \[rs]w
2872 argument, the center of an accent from a roman font should be placed
2873 over that glyph.
2874 .
2875 .P
2876 Other available read/write number registers are:
2877 .
2878 .TP
2879 .B \[rs]n[c.]
2880 The current input line number.
2881 .B \[rs]n[.c]
2882 is a read-only alias to this register.
2883 .
2884 .TP
2885 .B \[rs]n[hours]
2886 The number of hours past midnight.
2887 .
2888 Initialized at start-up.
2889 .
2890 .TP
2891 .B \[rs]n[hp]
2892 The current horizontal position at input line.
2893 .
2894 .TP
2895 .B \[rs]n[minutes]
2896 The number of minutes after the hour.
2897 .
2898 Initialized at start-up.
2899 .
2900 .TP
2901 .B \[rs]n[seconds]
2902 The number of seconds after the minute.
2903 .
2904 Initialized at start-up.
2905 .
2906 .TP
2907 .B \[rs]n[systat]
2908 The return value of the system() function executed by the last
2909 .B sy
2910 request.
2911 .
2912 .TP
2913 .B \[rs]n[slimit]
2914 If greater than\~0, the maximum number of objects on the input stack.
2915 .
2916 If less than or equal to\~0, there is no limit on the number of
2917 objects on the input stack.
2918 .
2919 With no limit, recursion can continue until virtual memory is
2920 exhausted.
2921 .
2922 .TP
2923 .B \[rs]n[year]
2924 The current year.
2925 .
2926 Note that the traditional
2927 .B troff
2928 number register
2929 .B \[rs]n[yr]
2930 is the current year minus 1900.
2931 .
2932 .
2933 .\" --------------------------------------------------------------------
2934 .SS Miscellaneous
2935 .\" --------------------------------------------------------------------
2936 .
2937 .B @g@troff
2938 predefines a single (read/write) string-based register,
2939 .BR \[rs]*(.T ,
2940 which contains the argument given to the
2941 .B \-T
2942 command line option, namely the current output device (for example,
2943 .I latin1
2944 or
2945 .IR ascii ).
2946 Note that this is not the same as the (read-only) number register
2947 .B \[rs]n[.T]
2948 which is defined to be\~1 if
2949 .B troff
2950 is called with the
2951 .B \-T
2952 command line option, and zero otherwise.
2953 .
2954 This behaviour is different to UNIX troff.
2955 .
2956 .P
2957 Fonts not listed in the
2958 .SM DESC
2959 file are automatically mounted on the next available font position
2960 when they are referenced.
2961 .
2962 If a font is to be mounted explicitly with the
2963 .B fp
2964 request on an unused font position, it should be mounted on the first
2965 unused font position, which can be found in the
2966 .B \[rs]n[.fp]
2967 register; although
2968 .B troff
2969 does not enforce this strictly, it will not allow a font to be mounted
2970 at a position whose number is much greater than that of any currently
2971 used position.
2972 .
2973 .P
2974 Interpolating a string does not hide existing macro arguments.
2975 .
2976 Thus in a macro, a more efficient way of doing
2977 .
2978 .IP
2979 .BI . xx\  \[rs]\[rs]$@
2980 .P
2981 is
2982 .
2983 .IP
2984 .BI \[rs]\[rs]*[ xx ]\[rs]\[rs]  
2985 .
2986 .P
2987 If the font description file contains pairwise kerning information,
2988 glyphs from that font will be kerned.
2989 .
2990 Kerning between two glyphs can be inhibited by placing a
2991 .B \[rs]&
2992 between them.
2993 .
2994 .P
2995 In a string comparison in a condition, characters that appear at
2996 different input levels to the first delimiter character will not be
2997 recognised as the second or third delimiters.
2998 .
2999 This applies also to the
3000 .B tl
3001 request.
3002 .
3003 In a
3004 .B \[rs]w
3005 escape sequence, a character that appears at a different input level
3006 to the starting delimiter character will not be recognised as the
3007 closing delimiter character.
3008 .
3009 The same is true for
3010 .BR \[rs]A ,
3011 .BR \[rs]b ,
3012 .BR \[rs]B ,
3013 .BR \[rs]C ,
3014 .BR \[rs]l ,
3015 .BR \[rs]L ,
3016 .BR \[rs]o ,
3017 .BR \[rs]X ,
3018 and
3019 .BR \[rs]Z .
3020 .
3021 When decoding a macro or string argument that is delimited by double
3022 quotes, a character that appears at a different input level to the starting
3023 delimiter character will not be recognised as the closing delimiter
3024 character.
3025 .
3026 The implementation of
3027 .B \[rs]$@
3028 ensures that the double quotes surrounding an argument will appear the
3029 same input level, which will be different to the input level of the
3030 argument itself.
3031 .
3032 In a long escape name
3033 .B ]
3034 will not be recognized as a closing delimiter except when it occurs at
3035 the same input level as the opening
3036 .BR ] .
3037 .
3038 In compatibility mode, no attention is paid to the input-level.
3039 .
3040 .P
3041 There are some new types of condition:
3042 .
3043 .TP
3044 .BI .if\ r xxx
3045 True if there is a number register named
3046 .IR xxx .
3047 .
3048 .TP
3049 .BI .if\ d xxx
3050 True if there is a string, macro, diversion, or request named
3051 .IR xxx .
3052 .
3053 .TP
3054 .BI .if\ m xxx
3055 True if there is a color named
3056 .IR xxx .
3057 .
3058 .TP
3059 .BI .if\ c ch
3060 True if there is a glyph
3061 .IR ch
3062 available;
3063 .I ch
3064 is either an
3065 .SM ASCII
3066 character or a glyph (special character)
3067 .BI \[rs]( xx
3068 or
3069 .BI \[rs][ xxx ]\f[R];
3070 the condition will also be true if
3071 .I ch
3072 has been defined by the
3073 .B char
3074 request.
3075 .
3076 .P
3077 The
3078 .B tr
3079 request can now map characters onto
3080 .BR \[rs]~ .
3081 .
3082 .P
3083 It is now possible to have whitespace between the first and second dot
3084 (or the name of the ending macro) to end a macro definition.
3085 .
3086 Example:
3087 .
3088 .IP
3089 .ne 6v+\n(.Vu
3090 .ft CB
3091 .nf
3092 .Text .de foo
3093 .Text .  nop Hello, I'm `foo'.
3094 .Text .  nop I will now define `bar'.
3095 .Text .  de bar
3096 .Text .    nop Hello, I'm `bar'.
3097 .Text .  .
3098 .Text .  nop Done.
3099 .Text ..
3100 .Text .foo
3101 .Text .bar
3102 .fi
3103 .
3104 .
3105 .\" --------------------------------------------------------------------
3106 .SH "INTERMEDIATE OUTPUT FORMAT"
3107 .\" --------------------------------------------------------------------
3108 .
3109 This section describes the format output by GNU troff.
3110 .
3111 The output format used by GNU troff is very similar to that used
3112 by Unix device-independent troff.
3113 .
3114 Only the differences are documented here.
3115 .
3116 .
3117 .\" --------------------------------------------------------------------
3118 .SS "Units"
3119 .\" --------------------------------------------------------------------
3120 .
3121 The argument to the
3122 .B s
3123 command is in scaled points (units of
3124 .RI points/ n ,
3125 where
3126 .I n
3127 is the argument to the
3128 .B sizescale
3129 command  in the DESC file).
3130 .
3131 The argument to the
3132 .B x\ Height
3133 command is also in scaled points.
3134 .
3135 .
3136 .\" --------------------------------------------------------------------
3137 .SS "Text Commands"
3138 .\" --------------------------------------------------------------------
3139 .
3140 .TP
3141 .BI N n
3142 Print glyph with index\~\c
3143 .I n
3144 (a non-negative integer) of the current font.
3145 .
3146 .P
3147 If the
3148 .B tcommand
3149 line is present in the DESC file, troff will use the following two
3150 commands.
3151 .
3152 .TP
3153 .BI t xxx
3154 .I xxx
3155 is any sequence of characters terminated by a space or a newline (to
3156 be more precise, it is a sequence of glyphs which are accessed with
3157 the corresponding characters); the first character should be printed at
3158 the current position, the current horizontal position should be increased
3159 by the width of the first character, and so on for each character.
3160 .
3161 The width of the glyph is that given in the font file,
3162 appropriately scaled for the current point size, and rounded so that
3163 it is a multiple of the horizontal resolution.
3164 .
3165 Special characters cannot be printed using this command.
3166 .
3167 .TP
3168 .BI u n\ xxx
3169 This is same as the
3170 .B t
3171 command except that after printing each character, the current
3172 horizontal position is increased by the sum of the width of that
3173 character and
3174 .IR n .
3175 .
3176 .P
3177 Note that single characters can have the eighth bit set, as can the
3178 names of fonts and special characters.
3179 .
3180 .P
3181 The names of glyphs and fonts can be of arbitrary length; drivers
3182 should not assume that they will be only two characters long.
3183 .
3184 .P
3185 When a glyph is to be printed, that glyph will always be
3186 in the current font.
3187 .
3188 Unlike device-independent troff, it is not necessary for drivers to
3189 search special fonts to find a glyph.
3190 .
3191 .P
3192 For color support, some new commands have been added:
3193 .
3194 .TP
3195 .Text \f[B]mc \f[I]cyan magenta yellow\f[R]
3196 .TQ
3197 .Text \f[B]md\f[R]
3198 .TQ
3199 .Text \f[B]mg \f[I]gray\f[R]
3200 .TQ
3201 .Text \f[B]mk \f[I]cyan magenta yellow black\f[R]
3202 .TQ
3203 .Text \f[B]mr \f[I]red green blue\f[R]
3204 Set the color components of the current drawing color, using various
3205 color schemes.
3206 .
3207 .B md
3208 resets the drawing color to the default value.
3209 .
3210 The arguments are integers in the range 0 to 65536.
3211 .
3212 .P
3213 The
3214 .B x
3215 device control command has been extended.
3216 .
3217 .TP
3218 .Text \f[B]x u \f[I]n\f[R]
3219 If
3220 .I n
3221 is\~1, start underlining of spaces.
3222 .
3223 If
3224 .I n
3225 is\~0, stop underlining of spaces.
3226 .
3227 This is needed for the
3228 .B cu
3229 request in nroff mode and is ignored otherwise.
3230 .
3231 .
3232 .\" --------------------------------------------------------------------
3233 .SS "Drawing Commands"
3234 .\" --------------------------------------------------------------------
3235 .
3236 The
3237 .B D
3238 drawing command has been extended.
3239 .
3240 These extensions will not be used by GNU pic if the
3241 .B \-n
3242 option is given.
3243 .
3244 .TP
3245 .Text \f[B]Df \f[I]n\f[R]\*[ic]\[rs]n
3246 Set the shade of gray to be used for filling solid objects to
3247 .IR n ;
3248 .I n
3249 must be an integer between 0 and 1000, where 0 corresponds solid white
3250 and 1000 to solid black, and values in between correspond to
3251 intermediate shades of gray.
3252 .
3253 This applies only to solid circles, solid ellipses and solid
3254 polygons.
3255 .
3256 By default, a level of 1000 will be used.
3257 .
3258 Whatever color a solid object has, it should completely obscure
3259 everything beneath it.
3260 .
3261 A value greater than 1000 or less than 0 can also be used: this means
3262 fill with the shade of gray that is currently being used for lines and
3263 text.
3264 .
3265 Normally this will be black, but some drivers may provide a way of
3266 changing this.
3267 .
3268 .IP
3269 The corresponding
3270 .BI \[rs]D'f .\|.\|. '
3271 command shouldn't be used since its argument is always rounded to an
3272 integer multiple of the horizontal resolution which can lead to
3273 surprising results.
3274 .
3275 .TP
3276 .Text \f[B]DC \f[I]d\f[R]\*[ic]\[rs]n
3277 Draw a solid circle with a diameter of
3278 .I d
3279 with the leftmost point at the current position.
3280 .
3281 .TP
3282 .Text \f[B]DE \f[I]dx dy\f[R]\*[ic]\[rs]n
3283 Draw a solid ellipse with a horizontal diameter of
3284 .I dx
3285 and a vertical diameter of
3286 .I dy
3287 with the leftmost point at the current position.
3288 .EQ
3289 delim $$
3290 .EN
3291 .
3292 .TP
3293 .Text \f[B]Dp\f[R] $dx sub 1$ $dy sub 1$ $dx sub 2$ $dy sub 2$ $...$ $dx sub n$ $dy sub n$\[rs]n
3294 Draw a polygon with, for $i = 1 ,..., n+1$, the
3295 .IR i -th
3296 vertex at the current position 
3297 .
3298 $+ sum from j=1 to i-1 ( dx sub j , dy sub j )$.
3299 .
3300 At the moment, GNU pic only uses this command to generate triangles
3301 and rectangles.
3302 .
3303 .TP
3304 .Text \f[B]DP\f[R] $dx sub 1$ $dy sub 1$ $dx sub 2$ $dy sub 2$ $...$ $dx sub n$ $dy sub n$\[rs]n
3305 .
3306 Like
3307 .B Dp
3308 but draw a solid rather than outlined polygon.
3309 .
3310 .TP
3311 .Text \f[B]Dt \f[I]n\f[R]\*[ic]\[rs]n
3312 Set the current line thickness to
3313 .I n
3314 machine units.
3315 .
3316 Traditionally Unix troff drivers use a line thickness proportional to
3317 the current point size; drivers should continue to do this if no
3318 .B Dt
3319 command has been given, or if a
3320 .B Dt
3321 command has been given with a negative value of
3322 .IR n .
3323 A zero value of
3324 .I n
3325 selects the smallest available line thickness.
3326 .
3327 .P
3328 A difficulty arises in how the current position should be changed after
3329 the execution of these commands.
3330 .
3331 This is not of great importance since the code generated by GNU pic
3332 does not depend on this.
3333 .
3334 Given a drawing command of the form
3335 .IP
3336 \f[B]\[rs]D\[fm]\f[I]c\f[R] $x sub 1$ $y sub 1$ $x sub 2$ $y sub 2$ $...$ $x sub n$ $y sub n$\[fm]
3337 .
3338 .P
3339 where
3340 .I c
3341 is not one of
3342 .BR c ,
3343 .BR e ,
3344 .BR l ,
3345 .BR a ,
3346 or
3347 .BR ~ ,
3348 Unix troff will treat each of the $x sub i$ as a horizontal quantity,
3349 and each of the $y sub i$ as a vertical quantity and will assume that
3350 the width of the drawn object is $sum from i=1 to n x sub i$,
3351 and that the height is $sum from i=1 to n y sub i$.
3352 .
3353 (The assumption about the height can be seen by examining the
3354 .B st
3355 and
3356 .B sb
3357 registers after using such a
3358 .B D
3359 command in a \[rs]w escape sequence).
3360 .
3361 This rule also holds for all the original drawing commands with the
3362 exception of
3363 .BR De .
3364 For the sake of compatibility GNU troff also follows this rule, even
3365 though it produces an ugly result in the case of the
3366 .B Dt
3367 and
3368 .BR Df ,
3369 and, to a lesser extent,
3370 .B DE
3371 commands.
3372 .
3373 Thus after executing a
3374 .B D
3375 command of the form
3376 .IP
3377 \f[B]D\f[I]c\f[R] $x sub 1$ $y sub 1$ $x sub 2$ $y sub 2$ $...$ \c
3378 $x sub n$ $y sub n$\[rs]n
3379 .
3380 .P
3381 the current position should be increased by
3382 .
3383 $( sum from i=1 to n x sub i , sum from i=1 to n y sub i )$.
3384 .
3385 .P
3386 Another set of extensions is
3387 .
3388 .TP
3389 .Text \f[B]DFc \f[I]cyan magenta yellow\f[R]\*[ic]\[rs]n
3390 .TQ
3391 .Text \f[B]DFd\f[R]\*[ic]\[rs]n
3392 .TQ
3393 .Text \f[B]DFg \f[I]gray\f[R]\*[ic]\[rs]n
3394 .TQ
3395 .Text \f[B]DFk \f[I]cyan magenta yellow black\f[R]\*[ic]\[rs]n
3396 .TQ
3397 .Text \f[B]DFr \f[I]red green blue\f[R]\*[ic]\[rs]n
3398 Set the color components of the filling color similar to the
3399 .B m
3400 commands above.
3401 .
3402 .P
3403 The current position isn't changed by those colour commands (contrary to
3404 .BR Df ).
3405 .
3406 .
3407 .\" --------------------------------------------------------------------
3408 .SS "Device Control Commands"
3409 .\" --------------------------------------------------------------------
3410 .
3411 There is a continuation convention which permits the argument to the
3412 .B x\ X
3413 command to contain newlines: when outputting the argument to the
3414 .B x\ X
3415 command, GNU troff will follow each newline in the argument with a
3416 .B +
3417 character (as usual, it will terminate the entire argument with a
3418 newline); thus if the line after the line containing the
3419 .B x\ X
3420 command starts with
3421 .BR + ,
3422 then the newline ending the line containing the
3423 .B x\ X
3424 command should be treated as part of the argument to the
3425 .B x\ X
3426 command, the
3427 .B +
3428 should be ignored, and the part of the line following the
3429 .B +
3430 should be treated like the part of the line following the
3431 .B x\ X
3432 command.
3433 .
3434 .P
3435 The first three output commands are guaranteed to be:
3436 .IP
3437 .BI x\ T\  device
3438 .br
3439 .BI x\ res\  n\ h\ v
3440 .br
3441 .B x init
3442 .
3443 .
3444 .\" --------------------------------------------------------------------
3445 .SH INCOMPATIBILITIES
3446 .\" --------------------------------------------------------------------
3447 .
3448 In spite of the many extensions, groff has retained compatibility to
3449 classical troff to a large degree.
3450 .
3451 For the cases where the extensions lead to collisions, a special
3452 compatibility mode with the restricted, old functionality was created
3453 for groff.
3454 .
3455 .
3456 .\" --------------------------------------------------------------------
3457 .SS "Groff Language"
3458 .\" --------------------------------------------------------------------
3459 .
3460 .I groff
3461 provides a
3462 .B compatibility mode
3463 that allows to process roff code written for classical
3464 .troff
3465 or for other implementations of roff in a consistent way.
3466 .
3467 .P
3468 Compatibility mode can be turned on with the
3469 .option \-C
3470 command line option, and turned on or off with the
3471 .request .cp
3472 request.
3473 .
3474 The number register
3475 .esc n(.C
3476 is\~1 if compatibility mode is on, 0\~otherwise.
3477 .
3478 .P
3479 This became necessary because the GNU concept for long names causes
3480 some incompatibilities.
3481 .I Classical troff
3482 interprets
3483 .IP
3484 .request .dsabcd
3485 .
3486 .P
3487 as defining a string
3488 .B ab
3489 with contents
3490 .BR cd .
3491 In
3492 .IR groff
3493 mode, this will be considered as a call of a macro named
3494 .request dsabcd .
3495 .
3496 .P
3497 Also
3498 .I classical troff
3499 interprets
3500 .esc *[
3501 or
3502 .esc n[
3503 as references to a string or number register called
3504 .request [
3505 while
3506 .I groff
3507 takes this as the start of a long name.
3508 .
3509 .P
3510 In
3511 .IR "compatibility mode" ,
3512 groff interprets these things in the traditional way; so long
3513 names are not recognized.
3514 .
3515 .P
3516 On the other hand, groff in
3517 .I GNU native mode
3518 does not allow to use the single-character escapes
3519 .esc \[rs]
3520 (backslash),
3521 .esc |
3522 (vertical bar),
3523 .esc ^
3524 (caret),
3525 .esc &
3526 (ampersand),
3527 .esc {
3528 (opening brace),
3529 .esc }
3530 (closing brace),
3531 .squoted "\[rs]\ "
3532 (space),
3533 .esc '
3534 (single quote),
3535 .esc `
3536 (backquote),
3537 .esc \-
3538 (minus),
3539 .esc _
3540 (underline),
3541 .esc !
3542 (bang),
3543 .esc %
3544 (percent),
3545 and
3546 .esc c
3547 (character c) in names of strings, macros, diversions, number
3548 registers, fonts or environments, whereas
3549 .I classical troff
3550 does.
3551 .
3552 .P
3553 The
3554 .esc A
3555 escape sequence can be helpful in avoiding these escape sequences in
3556 names.
3557 .
3558 .P
3559 Fractional pointsizes cause one noteworthy incompatibility.
3560 .
3561 In
3562 .I classical
3563 .IR troff ,
3564 the
3565 .request ps
3566 request ignores scale indicators and so
3567 .RS
3568 .P
3569 .B .ps\~10u
3570 .RE
3571 .
3572 .P
3573 will set the pointsize to 10\~points, whereas in groff native mode the
3574 pointsize will be set to 10\~scaled points.
3575 .
3576 .P
3577 In
3578 .IR groff ,
3579 there is a fundamental difference between unformatted input
3580 characters, and formatted output characters (glyphs).
3581 .
3582 Everything that affects how a glyph will be output is
3583 stored with the glyph; once a glyph has been
3584 constructed it is unaffected by any subsequent requests that are
3585 executed, including the
3586 .request bd ,
3587 .request cs ,
3588 .request tkf ,
3589 .request tr ,
3590 or
3591 .request fp
3592 requests.
3593 .
3594 .P
3595 Normally glyphs are constructed from input characters at
3596 the moment immediately before the glyph is added to the current
3597 output line.
3598 .
3599 Macros, diversions and strings are all, in fact, the same type of
3600 object; they contain lists of input characters and glyphs
3601 in any combination.
3602 .
3603 .P
3604 Special characters can be both; before being added to the output, they
3605 act as input entities, afterwards they denote glyphs.
3606 .
3607 .P
3608 A glyph does not behave like an input character for the
3609 purposes of macro processing; it does not inherit any of the special
3610 properties that the input character from which it was constructed
3611 might have had.
3612 .
3613 The following example will make things clearer.
3614 .
3615 .P
3616 .RS
3617 .nf
3618 .ft CB
3619 .Text .di x
3620 .Text \[rs]\[rs]\[rs]\[rs]
3621 .Text .br
3622 .Text .di
3623 .Text .x
3624 .ft
3625 .fi
3626 .RE
3627 .
3628 .P
3629 With
3630 .I GNU troff
3631 this will be printed as
3632 .esc \[rs] .
3633 So each pair of input backslashes
3634 .squoted \[rs]\[rs]
3635 is turned into a single output backslash glyph
3636 .squoted \[rs]
3637 and the resulting output backslashes are not interpreted as escape
3638 characters when they are reread.
3639 .
3640 .P
3641 .I Classical troff
3642 would interpret them as escape characters when they were reread and
3643 would end up printing a single backslash
3644 .squoted \[rs] .
3645 .
3646 .P
3647 In GNU, the correct way to get a printable version of the backslash
3648 character
3649 .squoted \[rs]
3650 is the
3651 .esc (rs
3652 escape sequence, but classical troff does not provide a clean feature
3653 for getting a non-syntactical backslash.
3654 .
3655 A close method is the printable version of the current escape
3656 character using the
3657 .esc e
3658 escape sequence; this works if the current escape character is not
3659 redefined.
3660 .
3661 It works in both GNU mode and compatibility mode, while dirty tricks
3662 like specifying a sequence of multiple backslashes do not work
3663 reliably; for the different handling in diversions, macro definitions,
3664 or text mode quickly leads to a confusion about the necessary number of
3665 backslashes.
3666 .
3667 .P
3668 To store an escape sequence in a diversion that will be interpreted
3669 when the diversion is reread, either the traditional
3670 .esc !
3671 transparent output facility or the
3672 new
3673 .esc ?
3674 escape sequence can be used.
3675 .
3676 .
3677 .\" --------------------------------------------------------------------
3678 .SS "Intermediate Output"
3679 .\" --------------------------------------------------------------------
3680 .
3681 The groff intermediate output format is in a state of evolution.
3682 .
3683 So far it has some incompatibilities, but it is intended to establish
3684 a full compatibility to the classical troff output format.
3685 .
3686 Actually the following incompatibilities exist:
3687 .
3688 .Topic
3689 The positioning after the drawing of the polygons conflicts with the
3690 classical definition.
3691 .
3692 .Topic
3693 The intermediate output cannot be rescaled to other devices as
3694 classical "device-independent" troff did.
3695 .
3696 .
3697 .\" --------------------------------------------------------------------
3698 .SH AUTHORS
3699 .\" --------------------------------------------------------------------
3700 .
3701 Copyright (C) 1989, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
3702 .
3703 .P
3704 This document is distributed under the terms of the FDL (GNU Free
3705 Documentation License) version 1.1 or later.
3706 .
3707 You should have received a copy of the FDL on your system, it is also
3708 available on-line at the
3709 .URL http://\:www.gnu.org/\:copyleft/\:fdl.html "GNU copyleft site" .
3710 .
3711 This document was written by James Clark, with modifications by
3712 .MTO wl@gnu.org "Werner Lemberg"
3713 and
3714 .MTO bwarken@mayn.de "Bernd Warken" .
3715 .
3716 .P
3717 This document is part of
3718 .IR groff ,
3719 the GNU roff distribution.
3720 .
3721 Formerly, the contents of this document was kept in the manual
3722 page
3723 .BR @g@troff (@MAN1EXT@).
3724 Only the parts dealing with the language aspects of the different
3725 .I roff
3726 systems were carried over into this document.
3727 .
3728 The
3729 .I troff
3730 command line options and warnings are still documented in
3731 .BR @g@troff (@MAN1EXT@).
3732 .
3733 .\" --------------------------------------------------------------------
3734 .SH "SEE ALSO"
3735 .\" --------------------------------------------------------------------
3736 .
3737 The
3738 .I groff info
3739 .IR file ,
3740 cf.\&
3741 .BR info (1)
3742 presents all groff documentation within a single document.
3743 .
3744 .TP
3745 .BR groff (@MAN1EXT@)
3746 A list of all documentation around
3747 .IR groff .
3748 .
3749 .TP
3750 .BR groff (@MAN7EXT@)
3751 A description of the
3752 .I groff
3753 language, including a short, but complete reference of all predefined
3754 requests, registers, and escapes of plain
3755 .IR groff .
3756 From the command line, this is called using
3757 .
3758 .IP
3759 .ShellCommand man\~7\~groff
3760 .
3761 .TP
3762 .BR roff (@MAN7EXT@)
3763 A survey of
3764 .I roff
3765 systems, including pointers to further historical documentation.
3766 .
3767 .TP
3768 .RI [ CSTR\~#54\/ ]
3769 The
3770 .I Nroff/\:Troff User's Manual
3771 by
3772 .I J.\& F.\& Osanna
3773 of 1976 in the revision of
3774 .I Brian Kernighan
3775 of 1992, being the
3776 .URL http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:54.ps.gz \
3777      "classical troff documentation" .
3778 .
3779 .cp \n[groff_diff_C]
3780 .
3781 .\" --------------------------------------------------------------------
3782 .\" Emacs variables
3783 .\" --------------------------------------------------------------------
3784 .
3785 .\" Local Variables:
3786 .\" mode: nroff
3787 .\" End: