Add support for font families `T' and `H'.
[s-roff.git] / man / groff_diff.man
blobabf0d7689b826451c9b02576c19e1a399213d729
1 '\" e
2 .\" The above line should force the use of eqn as a preprocessor
3 .ig
4 groff_diff.man
6 Last update : 6 Jan 2002
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).
11 Copyright (C) 1989, 2001, 2002 Free Software Foundation, Inc.
12 written by James Clark
14 modified by Werner Lemberg <wl@gnu.org>
15             Bernd Warken <bwarken@mayn.de>
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.
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.
27 .\" --------------------------------------------------------------------
28 .\" Setup
29 .\" --------------------------------------------------------------------
31 .mso www.tmac
33 .if n \{\
34 .  mso tty-char.tmac
35 .  ftr CR R
36 .  ftr CI I
37 .  ftr CB B
38 .\}
40 .if '\*[.T]'dvi' \
41 .  ftr CB CW
43 .\" define a string tx for the TeX logo
44 .ie t .ds tx T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X
45 .el   .ds tx TeX
48 .\" --------------------------------------------------------------------
49 .\" start of macro definitions
50 .eo
52 .de TQ
53 .  br
54 .  ns
55 .  TP \$1
57 .\" Don't use .ne for TTY devices
58 .de NE
59 .  if t \
60 .    ne \$1
62 .de Text
63 .  RI "\$*"
65 .de Topic
66 .  TP 2m
67 .  Text \[bu]
69 .de squoted
70 .  ds @arg1 \$1
71 .  shift
72 .\"  Text \[oq]\f[CB]\*[@arg1]\f[P]\[cq]\$*
73 .  Text \[oq]\f[B]\*[@arg1]\f[P]\[cq]\$*
74 .  rm @arg1
76 .\" A shell command line
77 .de ShellCommand
78 .  br
79 .  IR "shell#" "\h'1m'\f[CB]\$*\f[P]\/"
81 .\" reference of a request or macro
82 .de request
83 .  ds @arg1 \$1
84 .  shift 1
85 .\"  Text \f[CB]\*[@arg1]\f[P]\$*
86 .  Text \f[B]\*[@arg1]\f[P]\$*
87 .  rm @arg1
89 .als option request
91 .\" representation of an escape sequence
92 .de esc
93 .  ds @arg1 \$1
94 .  shift
95 .\"  Text \f[CB]\[rs]\*[@arg1]\f[P]\$*
96 .  Text \f[B]\[rs]\*[@arg1]\f[P]\$*
97 .  rm @arg1
99 .ec
100 .\" end of macro definitions
102 .\" from old groff_out.man
103 .ie \n(.g \
104 .  ds ic \/
105 .el \
106 .  ds ic \^
109 .\" --------------------------------------------------------------------
110 .\" Title
111 .\" --------------------------------------------------------------------
113 .TH GROFF_DIFF @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
114 .SH NAME
115 groff_diff \- differences between GNU troff and classical troff
118 .\" --------------------------------------------------------------------
119 .SH DESCRIPTION
120 .\" --------------------------------------------------------------------
122 This manual page describes the language differences between
123 .IR groff ,
124 the GNU
125 .I roff
126 text processing system and the classical
127 .I roff
128 formatter of the freely available Unix\~7 of the 1970s, documented in
130 .I Troff User's Manual
132 .I Osanna
134 .IR Kernighan .
135 This inludes the roff language as well as the intermediate output
136 format (troff output).
139 The section
140 .I SEE ALSO
141 gives pointers to both the classical
142 .I roff
143 and the modern
144 .I groff
145 documentation.
148 At the moment, this document is the place of the most actual
149 documentation within the
150 .I groff
151 system.
153 This might change in the future.
155 Actually, all novelties of the groff language are first described here
156 and will pervade into the other documents only at a later stage.
159 .\" --------------------------------------------------------------------
160 .SH "GROFF LANGUAGE"
161 .\" --------------------------------------------------------------------
163 In this section, all additional features of
164 .I groff
165 compared to the classical Unix\~7
166 .I troff
167 are described in detail.
170 .\" --------------------------------------------------------------------
171 .SS "Long names"
172 .\" --------------------------------------------------------------------
174 The names of number registers, fonts, strings/\:macros/\:diversions,
175 special characters, and colors can be of any length.
177 In escape sequences, additionally to the classical
178 .BI ( xx
179 construction for a two character name, you can use
180 .BI [ xxx ]
181 for a name of arbitrary length, for example in
183 .TP \w'\[rs]f[xxx]'u+3n
184 .BI \[rs][ xxx ]
185 Print the special character called
186 .IR xxx .
189 .BI \[rs]f[ xxx ]
190 Set font
191 .IR xxx .
194 .BI \[rs]*[ xxx ]
195 Interpolate string
196 .IR xxx .
199 .BI \[rs]n[ xxx ]
200 Interpolate number register
201 .IR xxx .
204 .\" --------------------------------------------------------------------
205 .SS "Fractional pointsizes"
206 .\" --------------------------------------------------------------------
209 .I scaled point
210 is equal to
211 .B 1/sizescale
212 points, where
213 .B sizescale
214 is specified in the
215 .B DESC
216 file (1 by default).
218 There is a new scale indicator
219 .B z
220 that has the effect of multiplying by sizescale.
222 Requests and escape sequences in troff interpret arguments that
223 represent a pointsize as being in units of scaled points, but they
224 evaluate each such argument using a default scale indicator of
225 .BR z .
226 Arguments treated in this way are the argument to the
227 .B ps
228 request, the third argument to the
229 .B cs
230 request, the second and fourth arguments to the
231 .B tkf
232 request, the argument to the
233 .B \[rs]H
234 escape sequence, and those variants of the
235 .B \[rs]s
236 escape sequence that take a numeric expression as their argument.
239 For example, suppose sizescale is 1000; then a scaled point will be
240 equivalent to a millipoint; the call
241 .B .ps\ 10.25
242 is equivalent to
243 .B .ps\ 10.25z
244 and so sets the pointsize to 10250 scaled points, which is equal to
245 10.25 points.
248 The number register
249 .B \[rs]n[.s]
250 returns the pointsize in points as decimal fraction.
252 There is also a new number register
253 .B \[rs]n[.ps]
254 that returns the pointsize in scaled points.
257 It would make no sense to use the
258 .B z
259 scale indicator in a numeric expression whose default scale indicator
260 was neither
261 .B u
263 .BR z ,
264 and so
265 .B troff
266 disallows this.
268 Similarly it would make no sense to use a scaling indicator other than
269 .B z
271 .B u
272 in a numeric expression whose default scale indicator was
273 .BR z ,
274 and so
275 .B troff
276 disallows this as well.
279 There is also new scale indicator\~\c
280 .B s
281 which multiplies by the number of units in a scaled point.
283 So, for example,
284 .B \[rs]n[.ps]s
285 is equal to
286 .BR 1m .
287 Be sure not to confuse the
288 .B s
290 .B z
291 scale indicators.
294 .\" --------------------------------------------------------------------
295 .SS "Numeric expressions"
296 .\" --------------------------------------------------------------------
298 Spaces are permitted in a number expression within parentheses.
301 .B M
302 indicates a scale of 100ths of an em.
303 .B f
304 indicates a scale of 65536 units, providing fractions for color
305 definitions with the
306 .B defcolor
307 request.
309 For example, 0.5f = 32768u.
312 .IB e1 >? e2
313 The maximum of
314 .I e1
316 .IR e2 .
319 .IB e1 <? e2
320 The minimum of
321 .I e1
323 .IR e2 .
326 .BI ( c ; e )
327 Evaluate
328 .I e
329 using
330 .I c
331 as the default scaling indicator.
334 .I c
335 is missing, ignore scaling indicators in the evaluation of
336 .IR e .
339 .\" --------------------------------------------------------------------
340 .SS "New escape sequences"
341 .\" --------------------------------------------------------------------
344 .BI \[rs]A' anything '
345 This expands to
346 .B 1
348 .B 0
349 resp., depending on whether
350 .I anything
351 is or is not acceptable as the name of a string, macro, diversion, number
352 register, environment, font, or color.
353 It will return\~\c
354 .B 0
356 .I anything
357 is empty.
359 This is useful if you want to lookup user input in some sort of
360 associative table.
363 .BI \[rs]B' anything '
364 This expands to
365 .B 1
367 .B 0
368 resp., depending on whether
369 .I anything
370 is or is not a valid numeric expression.
372 It will return\~\c
373 .B 0
375 .I anything
376 is empty.
379 .BI \[rs]C' xxx '
380 Typeset character named
381 .IR xxx .
382 Normally it is more convenient to use
383 .BI \[rs][ xxx ]\f[R].
385 .B \[rs]C
386 has the advantage that it is compatible with recent versions of
387 .SM UNIX
388 and is available in compatibility mode.
391 .B \[rs]E
392 This is equivalent to an escape character, but it is not interpreted in
393 copy-mode.
395 For example, strings to start and end superscripting could be defined
396 like this
400 .ft CB
401 .Text .ds { \[rs]v'\-.3m'\[rs]s'\[rs]En[.s]*6u/10u'
403 .Text .ds } \[rs]s0\[rs]v'.3m'
407 The use of
408 .B \[rs]E
409 ensures that these definitions will work even if
410 .B \[rs]*{
411 gets interpreted in copy-mode (for example, by being used in a macro
412 argument).
416 .BI \[rs]m x
418 .BI \[rs]m( xx
420 .BI \[rs]m[ xxx ]
421 Set drawing color.
422 .B \[rs]mP
423 switches back to the previous color.
426 .BI \[rs]M x
428 .BI \[rs]M( xx
430 .BI \[rs]M[ xxx ]
431 Set background color for filled objects drawn with the
432 .BI \[rs]D' .\|.\|. '
433 commands.
434 .B \[rs]MP
435 switches back to the previous color.
438 .BI \[rs]N' n '
439 Typeset the character with code
440 .I n
441 in the current font.
442 .I n
443 can be any integer.
445 Most devices only have characters with codes between 0 and 255.
447 If the current font does not contain a character with that code,
448 special fonts will
449 .I not
450 be searched.
453 .B \[rs]N
454 escape sequence can be conveniently used in conjunction with the
455 .B char
456 request, for example
459 .ft CB
461 .Text .char \[rs][phone] \[rs]f(ZD\[rs]N'37'
466 The code of each character is given in the fourth column in the font
467 description file after the
468 .B charset
469 command.
471 It is possible to include unnamed characters in the font description
472 file by using a name of
473 .BR \-\-\- ;
475 .B \[rs]N
476 escape sequence is the only way to use these.
479 .BI \[rs]O n
480 Suppressing troff output.
482 The escapes
483 .BR \[rs]02 ,
484 .BR \[rs]O3 ,
485 .BR \[rs]O4 ,
487 .B \[rs]O5
488 are intended for internal use by
489 .BR \%grohtml .
493 .B \[rs]O0
494 Disable any ditroff glyphs from being emitted to the device driver,
495 provided that the escape occurs at the outer level (see
496 .B \[rs]O3
498 .BR \[rs]O4 ).
501 .B \[rs]O1
502 Enable output of glyphs, provided that the escape occurs at the outer
503 level.
505 .B \[rs]O0
507 .B \[rs]O1
508 also reset the registers
509 .BR \[rs]n[opminx] ,
510 .BR \[rs]n[opminy] ,
511 .BR \[rs]n[opmaxx] ,
513 .B \[rs]n[opmaxy]
514 to\~-1.
516 These four registers mark the top left and bottom right hand corners
517 of a box which encompasses all written glyphs.
520 .B \[rs]O2
521 Provided that the escape occurs at the outer level, enable output of
522 glyphs and also write out to stderr the page number and four registers
523 encompassing the glyphs previously written since the last call to
524 .BR \[rs]O .
527 .B \[rs]O3
528 Begin a nesting level.
530 This is really an internal mechanism for
531 .B \%grohtml
532 while producing images.
534 They are generated by running the troff source through troff to the
535 postscript device and ghostscript to produce images in PNG format.
537 .B \[rs]O3
538 escape will start a new page if the device is not html (to reduce the
539 possibility of images crossing a page boundary).
542 .B \[rs]O4
543 End a nesting level.
545 .BI \[rs]O5[ Pfilename ]
546 This escape is
547 .B \%grohtml
548 specific.
550 Provided that this escape occurs at the outer nesting level, write
551 .I filename
552 to stderr.
554 The position of the image,
555 .IR P ,
556 must be specified and must be one of l, r, c or i (left, right,
557 centered, inline).
558 .I filename
559 will be associated with the production of the next inline image.
563 .BI \[rs]R' name\ \[+-]n '
564 This has the same effect as
568 .BI .nr\  name\ \[+-]n
572 .BI \[rs]s( nn
574 .BI \[rs]s\[+-]( nn
575 Set the point size to
576 .I nn
577 points;
578 .I nn
579 must be exactly two digits.
582 .BI \[rs]s[\[+-] n ]
584 .BI \[rs]s\[+-][ n ]
586 .BI \[rs]s'\[+-] n '
588 .BI \[rs]s\[+-]' n '
589 Set the point size to
590 .I n
591 scaled points;
592 .I n
593 is a numeric expression with a default scale indicator of\~\c
594 .BR z .
597 .BI \[rs]V x
599 .BI \[rs]V( xx
601 .BI \[rs]V[ xxx ]
602 Interpolate the contents of the environment variable
603 .IR xxx ,
604 as returned by
605 .BR getenv (3).
606 .B \[rs]V
607 is interpreted in copy-mode.
610 .BI \[rs]Y x
612 .BI \[rs]Y( xx
614 .BI \[rs]Y[ xxx ]
615 This is approximately equivalent to
616 .BI \[rs]X'\[rs]*[ xxx ]'\f[R].
617 However the contents of the string or macro
618 .I xxx
619 are not interpreted; also it is permitted for
620 .I xxx
621 to have been defined as a macro and thus contain newlines (it is not
622 permitted for the argument to
623 .B \[rs]X
624 to contain newlines).
626 The inclusion of newlines requires an extension to the UNIX troff
627 output format, and will confuse drivers that do not know about this
628 extension.
631 .BI \[rs]Z' anything '
632 Print anything and then restore the horizontal and vertical position;
633 .I anything
634 may not contain tabs or leaders.
637 .B \[rs]$0
638 The name by which the current macro was invoked.
641 .B als
642 request can make a macro have more than one name.
645 .B \[rs]$*
646 In a macro, the concatenation of all the arguments separated by spaces.
649 .B \[rs]$@
650 In a macro, the concatenation of all the arguments with each
651 surrounded by double quotes, and separated by spaces.
654 .BI \[rs]$( nn
656 .BI \[rs]$[ nnn ]
657 In a macro, this gives the
658 .IR nn -th
660 .IR nnn -th
661 argument.
663 Macros can have an unlimited number of arguments.
666 .BI \[rs]? anything \[rs]?
667 When used in a diversion, this will transparently embed
668 .I anything
669 in the diversion.
670 .I anything
671 is read in copy mode.
673 When the diversion is reread,
674 .I anything
675 will be interpreted.
676 .I anything
677 may not contain newlines; use
678 .B \[rs]!\&
679 if you want to embed newlines in a diversion.
681 The escape sequence
682 .B \[rs]?\&
683 is also recognised in copy mode and turned into a single internal
684 code; it is this code that terminates
685 .IR anything .
686 Thus
690 .NE 14v+\n(.Vu
691 .ft CB
693 .Text .nr x 1
694 .Text .nf
695 .Text .di d
696 .Text \[rs]?\[rs]\[rs]?\[rs]\[rs]\[rs]\[rs]?\[rs]\[rs]\[rs]\[rs]\[rs]\[rs]\[rs]\c
697 .Text \[rs]nx\[rs]\[rs]\[rs]\[rs]?\[rs]\[rs]?\[rs]?
698 .Text .di
699 .Text .nr x 2
700 .Text .di e
701 .Text .d
702 .Text .di
703 .Text .nr x 3
704 .Text .di f
705 .Text .e
706 .Text .di
707 .Text .nr x 4
708 .Text .f
714 will print\~\c
715 .BR 4 .
718 .B \[rs]/
719 This increases the width of the preceding character so that the
720 spacing between that character and the following character will be
721 correct if the following character is a roman character.
723 .if t \{\
724 .  nop For example, if an italic f is immediately followed by a roman
725 .  nop right parenthesis, then in many fonts the top right portion of
726 .  nop the f will overlap the top left of the right parenthesis
727 .  nop producing \f[I]f\f[R])\f[R], which is ugly.
728 .  nop Inserting
729 .  B \[rs]/
730 .  nop produces
731 .  ie \n(.g \f[I]f\/\f[R])\f[R]
732 .  el       \f[I]f\|\f[R])\f[R]
733 .  nop and avoids this problem.
735 It is a good idea to use this escape sequence whenever an italic
736 character is immediately followed by a roman character without any
737 intervening space.
740 .B \[rs],
741 This modifies the spacing of the following character so that the
742 spacing between that character and the preceding character will
743 correct if the preceding character is a roman character.
745 .if t \{\
746 .  nop For example, inserting
747 .  B \[rs],
748 .  nop between the parenthesis and the f changes
749 .  nop \f[R](\f[I]f\f[R] to
750 .  ie \n(.g \f[R](\,\f[I]f\f[R].
751 .  el       \f[R](\^\f[I]f\f[R].
753 It is a good idea to use this escape sequence whenever a roman
754 character is immediately followed by an italic character without any
755 intervening space.
758 .B \[rs])
759 Like
760 .B \[rs]&
761 except that it behaves like a character declared with the
762 .B cflags
763 request to be transparent for the purposes of end-of-sentence
764 recognition.
767 .B \[rs]~
768 This produces an unbreakable space that stretches like a normal
769 inter-word space when a line is adjusted.
772 .B \[rs]:
773 This causes the insertion of a zero-width break point.
775 It is equal to
776 .B \[rs]%
777 within a word but without insertion of a soft hyphen character.
780 .B \[rs]#
781 Everything up to and including the next newline is ignored.
783 This is interpreted in copy mode.
785 It is like
786 .B \[rs]"
787 except that
788 .B \[rs]"
789 does not ignore the terminating newline.
792 .\" --------------------------------------------------------------------
793 .SS "New requests"
794 .\" --------------------------------------------------------------------
797 .BI .aln\  xx\ yy
798 Create an alias
799 .I xx
800 for number register object named
801 .IR yy .
802 The new name and the old name will be exactly equivalent.
805 .I yy
806 is undefined, a warning of type
807 .B reg
808 will be generated, and the request will be ignored.
811 .BI .als\  xx\ yy
812 Create an alias
813 .I xx
814 for request, string, macro, or diversion object named
815 .IR yy .
817 The new name and the old name will be exactly equivalent (it is
818 similar to a hard rather than a soft link).
821 .I yy
822 is undefined, a warning of type
823 .B mac
824 will be generated, and the request will be ignored.
827 .BR de ,
828 .BR am ,
829 .BR di ,
830 .BR da ,
831 .BR ds ,
833 .B as
834 requests only create a new object if the name of the macro, diversion
835 or string diversion is currently undefined or if it is defined to be a
836 request; normally they modify the value of an existing object.
839 .BI .ami\  xx\ yy
840 Append to macro indirectly.
842 See the
843 .B dei
844 request below for more information.
847 .BI .am1\  xx\ yy
848 Similar to
849 .BR .am , 
850 but compatibility mode is switched off during execution.
852 To be more precise, a `compatibility save' token is inserted at the
853 beginning of the macro addition, and a `compatibility restore' token at
854 the end.
856 As a consequence, the requests
857 .BR am ,
858 .BR am1 ,
859 .BR de ,
861 .B de1
862 can be intermixed freely since the compatibility save/\:restore tokens
863 only affect the macro parts defined by
864 .B .am1
866 .BR .ds1 .
869 .BI .asciify\  xx
870 This request `unformats' the diversion
871 .I xx
872 in such a way that
873 .SM ASCII
874 and space characters (and some escape sequences) that were formatted
875 and diverted into
876 .I xx
877 will be treated like ordinary input characters when
878 .I xx
879 is reread.
880 Useful for diversions in conjunction with the
881 .B .writem
882 request.
884 It can be also used for gross hacks; for example, this
888 .NE 7v+\n(.Vu
889 .ft CB
891 .Text .tr @.
892 .Text .di x
893 .Text @nr n 1
894 .Text .br
895 .Text .di
896 .Text .tr @@
897 .Text .asciify x
898 .Text .x
904 will set register\~\c
905 .B n
906 to\~1.
908 Note that glyph information (font, font size, etc.) is not preserved;
910 .B .unformat
911 instead.
914 .BI .as1\  xx\ yy
915 Similar to
916 .BR .as , 
917 but compatibility mode is switched off during expansion.
919 To be more precise, a `compatibility save' token is inserted at the
920 beginning of the string, and a `compatibility restore' token at the end.
922 As a consequence, the requests
923 .BR as ,
924 .BR as1 ,
925 .BR ds ,
927 .B ds1
928 can be intermixed freely since the compatibility save/\:restore tokens
929 only affect the (sub)strings defined by
930 .B as1
932 .BR ds1 .
935 .B .backtrace
936 Print a backtrace of the input stack on stderr.
939 .BI .blm\  xx
940 Set the blank line macro to
941 .IR xx .
942 If there is a blank line macro, it will be invoked when a blank line
943 is encountered instead of the usual troff behaviour.
946 .BI .box\  xx
948 .BI .boxa\  xx
949 These requests are similar to the
950 .B di
952 .B da
953 requests with the exception that a partially filled line will not
954 become part of the diversion (i.e., the diversion always starts with a
955 new line) but restored after ending the diversion, discarding the
956 partially filled line which possibly comes from the diversion.
959 .B .break
960 Break out of a while loop.
962 See also the
963 .B while
965 .B continue
966 requests.
968 Be sure not to confuse this with the
969 .B br
970 request.
973 .B .brp
974 This is the same as
975 .BR \[rs]p .
978 .BI .cflags\  n\ c1\ c2\|.\|.\|.\&
979 Characters
980 .IR c1 ,
981 .IR c2 ,\|.\|.\|.\&
982 have properties determined by
983 .IR n ,
984 which is ORed from the following:
987 .IP 1
988 The character ends sentences (initially characters
989 .B .?!\&
990 have this property).
992 .IP 2
993 Lines can be broken before the character (initially no characters have
994 this property); a line will not be broken at a character with this
995 property unless the characters on each side both have non-zero
996 hyphenation codes.
998 .IP 4
999 Lines can be broken after the character (initially characters
1000 .B \-\[rs](hy\[rs](em
1001 have this property); a line will not be broken at a character with
1002 this property unless the characters on each side both have non-zero
1003 hyphenation codes.
1005 .IP 8
1006 The character overlaps horizontally (initially characters
1007 .B \[rs](ul\[rs](rn\[rs](ru
1008 have this property).
1010 .IP 16
1011 The character overlaps vertically (initially character
1012 .B \[rs](br
1013 has this property).
1015 .IP 32
1016 An end-of-sentence character followed by any number of characters with
1017 this property will be treated as the end of a sentence if followed by
1018 a newline or two spaces; in other words the character is transparent
1019 for the purposes of end-of-sentence recognition; this is the same as
1020 having a zero space factor in \*[tx] (initially characters
1021 .B \[dq]')]*\[rs](dg\[rs](rq
1022 have this property).
1026 .BI .char\  c\ string
1027 Define character
1028 .I c
1029 to be
1030 .IR string .
1031 Every time character
1032 .I c
1033 needs to be printed,
1034 .I string
1035 will be processed in a temporary environment and the result will be
1036 wrapped up into a single object.
1038 Compatibility mode will be turned off and the escape character will be
1039 set to
1040 .B \[rs]
1041 while
1042 .I string
1043 is being processed.
1045 Any emboldening, constant spacing or track kerning will be applied to
1046 this object rather than to individual characters in
1047 .IR string .
1049 A character defined by this request can be used just like a normal
1050 character provided by the output device.
1052 In particular other characters can be translated to it with the
1053 .B tr
1054 request; it can be made the leader character by the
1055 .B lc
1056 request; repeated patterns can be drawn with the character using the
1057 .B \[rs]l
1059 .B \[rs]L
1060 escape sequences; words containing the character can be hyphenated
1061 correctly, if the
1062 .B hcode
1063 request is used to give the character a hyphenation code.
1065 There is a special anti-recursion feature: use of character within the
1066 character's definition will be handled like normal characters not
1067 defined with
1068 .BR char .
1069 A character definition can be removed with the
1070 .B rchar
1071 request.
1074 .BI .chop\  xx
1075 Chop the last character off macro, string, or diversion
1076 .IR xx .
1077 This is useful for removing the newline from the end of diversions
1078 that are to be interpolated as strings.
1081 .BI .close\  stream
1082 Close the stream named
1083 .IR stream ;
1084 .I stream
1085 will no longer be an acceptable argument to the
1086 .B write
1087 request.
1089 See the
1090 .B open
1091 request.
1094 .B .continue
1095 Finish the current iteration of a while loop.
1097 See also the
1098 .B while
1100 .B break
1101 requests.
1104 .BI .cp\  n
1106 .I n
1107 is non-zero or missing, enable compatibility mode, otherwise disable
1110 In compatibility mode, long names are not recognised, and the
1111 incompatibilities caused by long names do not arise.
1114 .BI .defcolor\  xxx\ scheme\ color_components
1115 Define color.
1116 .I scheme
1117 can be one of the following values:
1118 .B rgb
1119 (three components),
1120 .B cym
1121 (three components),
1122 .B cmyk
1123 (four components), and
1124 .B gray
1126 .B grey
1127 (one component).
1129 Color components can be given either as a hexadecimal string or as
1130 positive decimal integers in the range 0-65535.
1132 A hexadecimal string contains all color components concatenated; it
1133 must start with either
1134 .B #
1136 .BR ## .
1137 The former specifies hex values in the range 0-255 (which are
1138 internally multiplied by\~257), the latter in the range 0-65535.
1140 Examples: #FFC0CB (pink), ##ffff0000ffff (magenta).
1142 A new scaling indicator\~\c
1143 .B f
1144 has been introduced which multiplies its value by\~65536; this makes
1145 it convenient to specify color components as fractions in the range 0
1146 to\~1.
1148 Example:
1152 .ft CB
1153 .Text .defcolor darkgreen rgb 0.1f 0.5f 0.2f
1159 Note that
1160 .B f
1161 is the default scaling indicator for the
1162 .B defcolor
1163 request, thus the above statement is equivalent to
1167 .ft CB
1168 .Text .defcolor darkgreen rgb 0.1 0.5 0.2
1174 The color named
1175 .B default
1176 (which is device-specific) can't be redefined.
1178 It is possible that the default color for
1179 .esc M
1181 .esc m
1182 is not the same.
1185 .BI .dei\  xx\ yy
1186 Define macro indirectly.
1188 The following example
1192 .NE 2v+\n(.Vu
1193 .ft CB
1195 .Text .ds xx aa
1196 .Text .ds yy bb
1197 .Text .dei xx yy
1203 is equivalent to
1207 .ft CB
1208 .Text .de aa bb
1214 .BI .de1\  xx\ yy
1215 Similar to
1216 .BR .de , 
1217 but compatibility mode is switched off during execution.
1219 On entry, the current compatibility mode is saved and restored at exit.
1222 .BI .do\  xxx
1223 Interpret
1224 .I .xxx
1225 with compatibility mode disabled.
1227 For example,
1232 .ft CB
1233 .Text .do fam T
1238 would have the same effect as
1241 .ft CB
1242 .Text .fam T
1247 except that it would work even if compatibility mode had been enabled.
1249 Note that the previous compatibility mode is restored before any files
1250 sourced by
1251 .I xxx
1252 are interpreted.
1257 .BI .ds1\  xx\ yy
1258 Similar to
1259 .BR .ds , 
1260 but compatibility mode is switched off during expansion.
1262 To be more precise, a `compatibility save' token is inserted at the
1263 beginning of the string, and a `compatibility restore' token at the end.
1266 .B .ecs
1267 Save current escape character.
1270 .B .ecr
1271 Restore escape character saved with
1272 .BR ecs .
1273 Without a previous call to
1274 .BR ecs ,
1275 .RB ` \[rs] '
1276 will be the new escape character.
1279 .BI .evc\  xx
1280 Copy the contents of environment
1281 .I xx
1282 to the current environment.
1284 No pushing or popping of environments will be done.
1287 .BI .fam\  xx
1288 Set the current font family to
1289 .IR xx .
1290 The current font family is part of the current environment.
1292 .I xx
1293 is missing, switch back to previous font family.
1295 The value at start-up is `T'.
1297 See the description of the
1298 .B sty
1299 request for more information on font families.
1302 .BI .fchar\  c\ string
1303 Define fallback character
1304 .I c
1305 to be
1306 .IR string .
1307 The syntax of this request is the same as the
1308 .B char
1309 request; the only difference is that a character defined with
1310 .B char
1311 hides the glyph with the same name in the current font, whereas a
1312 character defined with
1313 .B fchar
1314 is checked only if the particular glyph isn't found in the current font.
1316 This test happens before checking special fonts.
1319 .BI .fspecial\  f\ s1\ s2\|.\|.\|.\&
1320 When the current font is
1321 .IR f ,
1322 fonts
1323 .IR s1 ,
1324 .IR s2 ,\|.\|.\|.\&
1325 will be special, that is, they will searched for characters not in
1326 the current font.
1328 Any fonts specified in the
1329 .B special
1330 request will be searched after fonts specified in the
1331 .B fspecial
1332 request.
1335 .BI .ftr\  f\ g
1336 Translate font
1337 .I f
1339 .IR g .
1340 Whenever a font named
1341 .I f
1342 is referred to in an
1343 .B \[rs]f
1344 escape sequence, or in the
1345 .BR ft ,
1346 .BR ul ,
1347 .BR bd ,
1348 .BR cs ,
1349 .BR tkf ,
1350 .BR special ,
1351 .BR fspecial ,
1352 .BR fp ,
1354 .BR sty
1355 requests, font
1356 .I g
1357 will be used.
1359 .I g
1360 is missing, or equal to
1361 .I f
1362 then font
1363 .I f
1364 will not be translated.
1367 .BI .hcode \ c1\ code1\ c2\ code2\|.\|.\|.\&
1368 Set the hyphenation code of character
1369 .I c1
1371 .I code1
1372 and that of
1373 .I c2
1375 .IR code2 .
1376 A hyphenation code must be a single input character (not a special
1377 character) other than a digit or a space.
1379 Initially each lower-case letter has a hyphenation code, which is
1380 itself, and each upper-case letter has a hyphenation code which is the
1381 lower-case version of itself.
1383 See also the
1384 .B hpf
1385 request.
1388 .BI .hla\  lang
1389 Set the current hyphenation language to
1390 .IR lang .
1391 Hyphenation exceptions specified with the
1392 .B hw
1393 request and hyphenation patterns specified with the
1394 .B hpf
1395 request are both associated with the current hyphenation language.
1398 .B hla
1399 request is usually invoked by the
1400 .B troffrc
1401 file.
1404 .BI .hlm\  n
1405 Set the maximum number of consecutive hyphenated lines to\~\c
1406 .IR n .
1408 .I n
1409 is negative, there is no maximum.
1411 The default value is\~\-1.
1413 This value is associated with the current environment.
1415 Only lines output from an environment count towards the maximum
1416 associated with that environment.
1418 Hyphens resulting from
1419 .B \[rs]%
1420 are counted; explicit hyphens are not.
1423 .BI .hpf\  file
1424 Read hyphenation patterns from
1425 .IR file ;
1426 this will be searched for in the same way that
1427 .IB name .tmac
1428 is searched for when the
1429 .BI \-m name
1430 option is specified.
1432 It should have the same format as the argument to the \[rs]patterns
1433 primitive in \*[tx]; the letters appearing in this file are interpreted
1434 as hyphenation codes.
1437 .BR % \~\c
1438 character in the patterns file introduces a comment that continues
1439 to the end of the line.
1441 The set of hyphenation patterns is associated with the current language
1442 set by the
1443 .B hla
1444 request.
1447 .B hpf
1448 request is usually invoked by the
1449 .B troffrc
1450 file.
1453 .BI .hym\  n
1454 Set the
1455 .I hyphenation margin
1456 to\~\c
1457 .IR n :
1458 when the current adjustment mode is not\~\c
1459 .BR b ,
1460 the line will not be hyphenated if the line is no more than
1461 .I n
1462 short.
1464 The default hyphenation margin is\~0.
1466 The default scaling indicator for this request is\~\c
1467 .IR m .
1468 The hyphenation margin is associated with the current environment.
1470 The current hyphenation margin is available in the
1471 .B \[rs]n[.hym]
1472 register.
1475 .BI .hys\  n
1476 Set the
1477 .I hyphenation space
1478 to\~\c
1479 .IR n :
1480 when the current adjustment mode is\~\c
1481 .B b
1482 don't hyphenate the line if the line can be justified by adding no
1483 more than
1484 .I n
1485 extra space to each word space.
1487 The default hyphenation space is\~0.
1489 The default scaling indicator for this request is\~\c
1490 .BR m .
1491 The hyphenation space is associated with the current environment.
1493 The current hyphenation space is available in the
1494 .B \[rs]n[.hys]
1495 register.
1498 .BI .itc\  n\ macro
1499 Variant of
1500 .B .it
1501 for which a line interrupted with
1502 .B \[rs]c
1503 counts as one input line.
1506 .BI .kern\  n
1508 .I n
1509 is non-zero or missing, enable pairwise kerning, otherwise disable it.
1512 .BI .length\  xx\ string
1513 Compute the length of
1514 .I string
1515 and return it in the number register
1516 .I xx
1517 (which is not necessarily defined before).
1520 .BI .linetabs\  n
1522 .I n
1523 is non-zero or missing, enable line-tabs mode, otherwise disable it
1524 (which is the default).
1526 In line-tabs mode, tab distances are computed relative to the
1527 (current) output line.
1529 Otherwise they are taken relative to the input line.
1531 For example, the following
1535 .NE 6v+\n(.Vu
1536 .ft CB
1538 .Text .ds x a\[rs]t\[rs]c
1539 .Text .ds y b\[rs]t\[rs]c
1540 .Text .ds z c
1541 .Text .ta 1i 3i
1542 .Text \[rs]*x
1543 .Text \[rs]*y
1544 .Text \[rs]*z
1550 yields
1554 a         b         c
1558 In line-tabs mode, the same code gives
1562 a         b                   c
1566 Line-tabs mode is associated with the current environment; the
1567 read-only number register
1568 .B \\[rs]n[.linetabs]
1569 is set to\~1 if in line-tabs mode, and 0 otherwise.
1572 .BI .mso\  file
1573 The same as the
1574 .B so
1575 request except that
1576 .I file
1577 is searched for in the same directories as macro files for the the
1578 .B \-m
1579 command line option.
1581 If the file name to be included has the form
1582 .IB name .tmac
1583 and it isn't found,
1584 .B mso
1585 tries to include
1586 .BI tmac. name
1587 instead and vice versa.
1590 .BI .nop \ anything
1591 Execute
1592 .IR anything .
1593 This is similar to `.if\ 1'.
1596 .B .nroff
1597 Make the
1598 .B n
1599 built-in condition true and the
1600 .B t
1601 built-in condition false.
1603 This can be reversed using the
1604 .B troff
1605 request.
1608 .BI .open\  stream\ filename
1609 Open
1610 .I filename
1611 for writing and associate the stream named
1612 .I stream
1613 with it.
1615 See also the
1616 .B close
1618 .B write
1619 requests.
1621 .TP 
1622 .BI .opena\  stream\ filename
1623 Like
1624 .BR open ,
1625 but if
1626 .I filename
1627 exists, append to it instead of truncating it.
1630 .B .pnr
1631 Print the names and contents of all currently defined number registers
1632 on stderr.
1635 .BI .psbb \ filename
1636 Get the bounding box of a PostScript image
1637 .IR filename .
1638 This file must conform to Adobe's Document Structuring Conventions;
1639 the command looks for a
1640 .B \%%%BoundingBox
1641 comment to extract the bounding box values.
1643 After a successful call, the coordinates (in PostScript units) of the
1644 lower left and upper right corner can be found in the registers
1645 .BR \[rs]n[llx] ,
1646 .BR \[rs]n[lly] ,
1647 .BR \[rs]n[urx] ,
1649 .BR \[rs]n[ury] ,
1650 respectively.
1652 If some error has occurred, the four registers are set to zero.
1655 .BI .pso \ command
1656 This behaves like the
1657 .B so
1658 request except that input comes from the standard output of
1659 .IR command .
1662 .B .ptr
1663 Print the names and positions of all traps (not including input line
1664 traps and diversion traps) on stderr.
1666 Empty slots in the page trap list are printed as well, because they
1667 can affect the priority of subsequently planted traps.
1670 .BI .rchar\  c1\ c2\|.\|.\|.\&
1671 Remove the definitions of characters
1672 .IR c1 ,
1673 .IR c2 ,\|.\|.\|.
1674 This undoes the effect of a
1675 .B char
1676 request.
1679 .B .return
1680 Within a macro, return immediately.
1682 No effect otherwise.
1685 .B .rj
1687 .BI .rj \~n
1688 Right justify the next
1689 .IR n \~\c
1690 input lines.
1692 Without an argument right justify the next input line.
1694 The number of lines to be right justified is available in the
1695 .B \[rs]n[.rj]
1696 register.
1698 This implicitly does
1699 .BR .ce \~0 .
1701 .B ce
1702 request implicitly does
1703 .BR .rj \~0 .
1706 .BI .rnn \ xx\ yy
1707 Rename number register
1708 .I xx
1710 .IR yy .
1713 .BI .shc\  c
1714 Set the soft hyphen character to
1715 .IR c .
1717 .I c
1718 is omitted, the soft hyphen character will be set to the default
1719 .BR \[rs](hy .
1720 The soft hyphen character is the character which will be inserted when
1721 a word is hyphenated at a line break.
1723 If the soft hyphen character does not exist in the font of the
1724 character immediately preceding a potential break point, then the line
1725 will not be broken at that point.
1727 Neither definitions (specified with the
1728 .B char
1729 request) nor translations (specified with the
1730 .B tr
1731 request) are considered when finding the soft hyphen character.
1734 .BI .shift\  n
1735 In a macro, shift the arguments by
1736 .I n
1737 positions: argument\~\c
1738 .I i
1739 becomes argument
1740 .IR i \- n ;
1741 arguments 1 to\~\c
1742 .I n
1743 will no longer be available.
1746 .I n
1747 is missing, arguments will be shifted by\~1.
1749 Shifting by negative amounts is currently undefined.
1752 .BI .special\  s1\ s2\|.\|.\|.\&
1753 Fonts
1754 .IR s1 ,
1755 .IR s2 ,
1756 are special and will be searched for characters not in the current
1757 font.
1760 .BI .sty\  n\ f
1761 Associate style\~\c
1762 .I f
1763 with font position\~\c
1764 .IR n .
1765 A font position can be associated either with a font or with a style.
1767 The current font is the index of a font position and so is also either
1768 a font or a style.
1770 When it is a style, the font that is actually used is the font the
1771 name of which is the concatenation of the name of the current family
1772 and the name of the current style.
1774 For example, if the current font is\~1 and font position\~1 is
1775 associated with style\~\c
1776 .B R
1777 and the current font family is\~\c
1778 .BR T ,
1779 then font
1780 .BR TR
1781 will be used.
1783 If the current font is not a style, then the current family is ignored.
1785 When the requests
1786 .BR cs ,
1787 .BR bd ,
1788 .BR tkf ,
1789 .BR uf ,
1791 .B fspecial
1792 are applied to a style, then they will instead be applied to the
1793 member of the current family corresponding to that style.
1795 The default family can be set with the
1796 .B \-f
1797 option.
1800 .B styles
1801 command in the
1802 .SM DESC
1803 file controls which font positions (if any) are initially associated
1804 with styles rather than fonts.
1807 .BI .substring\  xx\ n1\  [ n2 ]
1808 Replace the string in register
1809 .I xx
1810 with the substring defined by the indices
1811 .I n1
1813 .IR n2 .
1814 The first character in the string has index one.
1817 .I n2
1818 is omitted, it is taken to be equal to the string's length.
1820 If the index value
1821 .I n1
1823 .I n2
1824 is negative or zero, it will be counted from the end of the string,
1825 going backwards:
1827 The last character has index\~0, the character before the last
1828 character has index\~-1, etc.
1831 .BI .tkf\  f\ s1\ n1\ s2\ n2
1832 Enable track kerning for font
1833 .IR f .
1834 When the current font is
1835 .I f
1836 the width of every character will be increased by an amount between
1837 .I n1
1839 .IR n2 ;
1840 when the current point size is less than or equal to
1841 .I s1
1842 the width will be increased by
1843 .IR n1 ;
1844 when it is greater than or equal to
1845 .I s2
1846 the width will be increased by
1847 .IR n2 ;
1848 when the point size is greater than or equal to
1849 .I s1
1850 and less than or equal to
1851 .I s2
1852 the increase in width is a linear function of the point size.
1855 .BI .tm1\  string
1856 Similar to the
1857 .B tm
1858 request,
1859 .I string
1860 is read in copy mode and written on the standard error, but an initial
1861 double quote in
1862 .I string
1863 is stripped off to allow initial blanks.
1866 .BI .tmc\  string
1867 Similar to
1868 .BR tm1
1869 but without writing a final newline.
1872 .BI .trf\  filename
1873 Transparently output the contents of file
1874 .IR filename .
1875 Each line is output as if preceded by
1876 .BR \[rs]! ;
1877 however, the lines are not subject to copy-mode interpretation.
1879 If the file does not end with a newline, then a newline will be added.
1881 For example, you can define a macro\~\c
1882 .I x
1883 containing the contents of file\~\c
1884 .IR f ,
1885 using
1889 .NE 2v+\n(.Vu
1890 .ft CB
1892 .Text .di x
1893 .Text .trf f
1894 .Text .di
1900 Unlike with the
1901 .B cf
1902 request, the file cannot contain characters such as
1903 .SM NUL
1904 that are not legal troff input characters.
1907 .B .trnt abcd
1908 This is the same as the
1909 .B tr
1910 request except that the translations do not apply to text that is
1911 transparently throughput into a diversion with
1912 .BR \[rs]! .
1913 For example,
1918 .ft CB
1919 .Text .tr ab
1920 .Text .di x
1921 .Text \[rs]!.tm a
1922 .Text .di
1923 .Text .x
1929 will print\~\c
1930 .BR b ;
1932 .B trnt
1933 is used instead of
1934 .B tr
1935 it will print\~\c
1936 .BR a .
1940 .B .troff
1941 Make the
1942 .B n
1943 built-in condition false, and the
1944 .B t
1945 built-in condition true.
1947 This undoes the effect of the
1948 .B nroff
1949 request.
1952 .BI .unformat\  xx
1953 This request `unformats' the diversion
1954 .IR xx .
1955 Contrary to the
1956 .B .asciify
1957 request, which tries to convert formatted elements of the diversion
1958 back to input tokens as much as possible,
1959 .B .unformat
1960 will only handle tabs and spaces between words (usually caused by
1961 spaces or newlines in the input) specially.
1963 The former are treated as if they were input tokens, and the latter
1964 are stretchable again.
1966 Note that the vertical size of lines is not preserved.
1968 Glyph information (font, font size, space width, etc.) is retained.
1970 Useful in conjunction with the
1971 .B .box
1973 .B .boxa
1974 requests.
1977 .BI .vpt\  n
1978 Enable vertical position traps if
1979 .I n
1980 is non-zero, disable them otherwise.
1982 Vertical position traps are traps set by the
1983 .B wh
1985 .B dt
1986 requests.
1988 Traps set by the
1989 .B it
1990 request are not vertical position traps.
1992 The parameter that controls whether vertical position traps are
1993 enabled is global.
1995 Initially vertical position traps are enabled.
1998 .BI .warn\  n
1999 Control warnings.
2000 .I n
2001 is the sum of the numbers associated with each warning that is to be
2002 enabled; all other warnings will be disabled.
2004 The number associated with each warning is listed in
2005 .BR @g@troff (@MAN1EXT@).
2007 For example,
2008 .B .warn\~0
2009 will disable all warnings, and
2010 .B .warn\~1
2011 will disable all warnings except that about missing characters.
2014 .I n
2015 is not given, all warnings will be enabled.
2018 .BI .while \ c\ anything
2019 While condition\~\c
2020 .I c
2021 is true, accept
2022 .I anything
2023 as input;
2024 .IR c \~\c
2025 can be any condition acceptable to an
2026 .B if
2027 request;
2028 .I anything
2029 can comprise multiple lines if the first line starts with
2030 .B \[rs]{
2031 and the last line ends with
2032 .BR \[rs]} .
2033 See also the
2034 .B break
2036 .B continue
2037 requests.
2040 .BI .write\  stream\ anything
2041 Write
2042 .I anything
2043 to the stream named
2044 .IR stream .
2045 .I stream
2046 must previously have been the subject of an
2047 .B open
2048 request.
2049 .I anything
2050 is read in copy mode;
2051 a leading\~\c
2052 .B \[dq]
2053 will be stripped.
2056 .BI .writem\  stream\ xx
2057 Write the contents of the macro or string
2058 .I xx
2059 to the stream named
2060 .IR stream .
2061 .I stream
2062 must previously have been the subject of an
2063 .B open
2064 request.
2065 .I xx
2066 is read in copy mode.
2069 .\" --------------------------------------------------------------------
2070 .SS "Extended requests"
2071 .\" --------------------------------------------------------------------
2074 .BI .cf\  filename
2075 When used in a diversion, this will embed in the diversion an object
2076 which, when reread, will cause the contents of
2077 .I filename
2078 to be transparently copied through to the output.
2080 In UNIX troff, the contents of
2081 .I filename
2082 is immediately copied through to the output regardless of whether
2083 there is a current diversion; this behaviour is so anomalous that it
2084 must be considered a bug.
2087 .BI .ev\  xx
2089 .I xx
2090 is not a number, this will switch to a named environment called
2091 .IR xx .
2092 The environment should be popped with a matching
2093 .B ev
2094 request without any arguments, just as for numbered environments.
2096 There is no limit on the number of named environments; they will be
2097 created the first time that they are referenced.
2100 .BI .ss\  m\ n
2101 When two arguments are given to the
2102 .B ss
2103 request, the second argument gives the
2104 .IR "sentence space size" .
2105 If the second argument is not given, the sentence space size
2106 will be the same as the word space size.
2108 Like the word space size, the sentence space is in units of
2109 one twelfth of the spacewidth parameter for the current font.
2111 Initially both the word space size and the sentence
2112 space size are\~12.
2114 Contrary to UNIX troff, GNU troff handles this request in nroff mode
2115 also; a given value is then rounded down to the nearest multiple
2116 of\~12.
2118 The sentence space size is used in two circumstances.
2120 If the end of a sentence occurs at the end of a line in fill mode,
2121 then both an inter-word space and a sentence space will be added; if
2122 two spaces follow the end of a sentence in the middle of a line, then
2123 the second space will be a sentence space.
2125 Note that the behaviour of UNIX troff will be exactly that exhibited
2126 by GNU troff if a second argument is never given to the
2127 .B ss
2128 request.
2130 In GNU troff, as in UNIX troff, you should always follow a sentence
2131 with either a newline or two spaces.
2134 .BI .ta\  n1\ n2\|.\|.\|.nn \ T\  r1\ r2\|.\|.\|.\|rn
2135 Set tabs at positions
2136 .IR n1 ,
2137 .IR n2 ,\|.\|.\|.\|,
2138 .I nn
2139 and then set tabs at
2140 .IR nn + r1 ,
2141 .IR nn + r2 ,\|.\|.\|.\|,
2142 .IR nn + rn
2143 and then at
2144 .IR nn + rn + r1 ,
2145 .IR nn + rn + r2 ,\|.\|.\|.\|,
2146 .IR nn + rn + rn ,
2147 and so on.
2148 For example,
2152 .ft CB
2153 .Text .ta T .5i
2158 will set tabs every half an inch.
2162 .\" --------------------------------------------------------------------
2163 .SS "New number registers"
2164 .\" --------------------------------------------------------------------
2166 The following read-only registers are available:
2169 .B \[rs]n[.C]
2170 1\~if compatibility mode is in effect, 0\~otherwise.
2173 .B \[rs]n[.cdp]
2174 The depth of the last character added to the current environment.
2176 It is positive if the character extends below the baseline.
2179 .B \[rs]n[.ce]
2180 The number of lines remaining to be centered, as set by the
2181 .B ce
2182 request.
2185 .B \[rs]n[.cht]
2186 The height of the last character added to the current environment.
2188 It is positive if the character extends above the baseline.
2191 .B \[rs]n[.csk]
2192 The skew of the last character added to the current environment.
2195 .I skew
2196 of a character is how far to the right of the center of a character
2197 the center of an accent over that character should be placed.
2200 .B \[rs]n[.ev]
2201 The name or number of the current environment.
2203 This is a string-valued register.
2206 .B \[rs]n[.fam]
2207 The current font family.
2209 This is a string-valued register.
2212 .B \[rs]n[.fn]
2213 The current (internal) real font name.
2215 This is a string-valued register.
2217 If the current font is a style, the value of
2218 .B \[rs]n[.fn]
2219 is the proper concatenation of family and style name.
2222 .B \[rs]n[.fp]
2223 The number of the next free font position.
2226 .B \[rs]n[.g]
2227 Always\~1.
2229 Macros should use this to determine whether they are running under GNU
2230 troff.
2233 .B \[rs]n[.hla]
2234 The current hyphenation language as set by the
2235 .B hla
2236 request.
2239 .B \[rs]n[.hlc]
2240 The number of immediately preceding consecutive hyphenated lines.
2243 .B \[rs]n[.hlm]
2244 The maximum allowed number of consecutive hyphenated lines, as set by
2246 .B hlm
2247 request.
2250 .B \[rs]n[.hy]
2251 The current hyphenation flags (as set by the
2252 .B hy
2253 request).
2256 .B \[rs]n[.hym]
2257 The current hyphenation margin (as set by the
2258 .B hym
2259 request).
2262 .B \[rs]n[.hys]
2263 The current hyphenation space (as set by the
2264 .B hys
2265 request).
2268 .B \[rs]n[.in]
2269 The indent that applies to the current output line.
2272 .B \[rs]n[.int]
2273 Set to a positive value if last output line is interrupted (i.e., if
2274 it contains
2275 .IR \[rs]c ).
2278 .B \[rs]n[.kern]
2279 1\~if pairwise kerning is enabled, 0\~otherwise.
2282 .B \[rs]n[.lg]
2283 The current ligature mode (as set by the
2284 .B lg
2285 request).
2288 .B \[rs]n[.linetabs]
2289 The current line-tabs mode (as set by the
2290 .B linetabs
2291 request).
2294 .B \[rs]n[.ll]
2295 The line length that applies to the current output line.
2298 .B \[rs]n[.lt]
2299 The title length as set by the
2300 .B lt
2301 request.
2304 .B \[rs]n[.ne]
2305 The amount of space that was needed in the last
2306 .B ne
2307 request that caused a trap to be sprung.
2309 Useful in conjunction with the
2310 .B \[rs]n[.trunc]
2311 register.
2314 .B \[rs]n[.ns]
2315 1\~if no-space mode is active, 0\~otherwise.
2318 .B \[rs]n[.pn]
2319 The number of the next page, either the value set by a
2320 .B pn
2321 request, or the number of the current page plus\~1.
2324 .B \[rs]n[.ps]
2325 The current pointsize in scaled points.
2328 .B \[rs]n[.psr]
2329 The last-requested pointsize in scaled points.
2332 .B \[rs]n[.rj]
2333 The number of lines to be right-justified as set by the
2334 .B rj
2335 request.
2338 .B \[rs]n[.sr]
2339 The last requested pointsize in points as a decimal fraction.
2341 This is a string-valued register.
2344 .B \[rs]n[.ss]
2346 .B \[rs]n[.sss]
2347 These give the values of the parameters set by the first and second
2348 arguments of the
2349 .B ss
2350 request.
2353 .B \[rs]n[.tabs]
2354 A string representation of the current tab settings suitable for use
2355 as an argument to the
2356 .B ta
2357 request.
2360 .B \[rs]n[.trunc]
2361 The amount of vertical space truncated by the most recently sprung
2362 vertical position trap, or, if the trap was sprung by a
2363 .B ne
2364 request, minus the amount of vertical motion produced by the
2365 .B ne
2366 request.
2368 In  other  words, at the point  a  trap is  sprung,  it represents the
2369 difference of  what the vertical position  would have been but for the
2370 trap, and what the vertical position actually is.
2372 Useful in conjunction with the
2373 .B \[rs]n[.ne]
2374 register.
2377 .B \[rs]n[.vpt]
2378 1\~if vertical position traps are enabled, 0\~otherwise.
2381 .B \[rs]n[.warn]
2382 The sum of the numbers associated with each of the currently enabled
2383 warnings.
2385 The number associated with each warning is listed in
2386 .BR @g@troff (@MAN1EXT@).
2389 .B \[rs]n[.x]
2390 The major version number.
2392 For example, if the version number is 1.03, then
2393 .B \[rs]n[.x]
2394 will contain\~1.
2397 .B \[rs]n[.y]
2398 The minor version number.
2400 For example, if the version number is 1.03, then
2401 .B \[rs]n[.y]
2402 will contain\~03.
2405 .B \[rs]n[.Y]
2406 The revision number of groff.
2409 .B \[rs]n[llx]
2411 .B \[rs]n[lly]
2413 .B \[rs]n[urx]
2415 .B \[rs]n[ury]
2416 These four registers are set by the
2417 .B .psbb
2418 request and contain the bounding box values (in PostScript units) of a
2419 given PostScript image.
2422 The following read/write registers are set by the
2423 .B \[rs]w
2424 escape sequence:
2427 .B \[rs]n[rst]
2429 .B \[rs]n[rsb]
2430 Like the
2431 .B st
2433 .B sb
2434 registers, but take account of the heights and depths of characters.
2437 .B \[rs]n[ssc]
2438 The amount of horizontal space (possibly negative) that should be
2439 added to the last character before a subscript.
2442 .B \[rs]n[skw]
2443 How far to right of the center of the last character in the
2444 .B \[rs]w
2445 argument, the center of an accent from a roman font should be placed
2446 over that character.
2449 Other available read/write number registers are:
2452 .B \[rs]n[c.]
2453 The current input line number.
2454 .B \[rs]n[.c]
2455 is a read-only alias to this register.
2458 .B \[rs]n[hp]
2459 The current horizontal position at input line.
2462 .B \[rs]n[systat]
2463 The return value of the system() function executed by the last
2464 .B sy
2465 request.
2468 .B \[rs]n[slimit]
2469 If greater than\~0, the maximum number of objects on the input stack.
2471 If less than or equal to\~0, there is no limit on the number of
2472 objects on the input stack.
2474 With no limit, recursion can continue until virtual memory is
2475 exhausted.
2478 .B \[rs]n[year]
2479 The current year.
2481 Note that the traditional
2482 .B troff
2483 number register
2484 .B \[rs]n[yr]
2485 is the current year minus 1900.
2488 .\" --------------------------------------------------------------------
2489 .SS Miscellaneous
2490 .\" --------------------------------------------------------------------
2492 .B @g@troff
2493 predefines a single (read/write) string-based register,
2494 .BR \[rs]*(.T ,
2495 which contains the argument given to the
2496 .B -T
2497 command line option, namely the current output device (for example,
2498 .I latin1
2500 .IR ascii ).
2501 Note that this is not the same as the (read-only) number register
2502 .B \[rs]n[.T]
2503 which is defined to be\~1 if
2504 .B troff
2505 is called with the
2506 .B -T
2507 command line option, and zero otherwise.
2509 This behaviour is different to UNIX troff.
2512 Fonts not listed in the
2513 .SM DESC
2514 file are automatically mounted on the next available font position
2515 when they are referenced.
2517 If a font is to be mounted explicitly with the
2518 .B fp
2519 request on an unused font position, it should be mounted on the first
2520 unused font position, which can be found in the
2521 .B \[rs]n[.fp]
2522 register; although
2523 .B troff
2524 does not enforce this strictly, it will not allow a font to be mounted
2525 at a position whose number is much greater than that of any currently
2526 used position.
2529 Interpolating a string does not hide existing macro arguments.
2531 Thus in a macro, a more efficient way of doing
2534 .BI . xx\  \[rs]\[rs]$@
2539 .BI \[rs]\[rs]*[ xx ]\[rs]\[rs]  
2542 If the font description file contains pairwise kerning information,
2543 characters from that font will be kerned.
2545 Kerning between two characters can be inhibited by placing a
2546 .B \[rs]&
2547 between them.
2550 In a string comparison in a condition, characters that appear at
2551 different input levels to the first delimiter character will not be
2552 recognised as the second or third delimiters.
2554 This applies also to the
2555 .B tl
2556 request.
2558 In a
2559 .B \[rs]w
2560 escape sequence, a character that appears at a different input level
2561 to the starting delimiter character will not be recognised as the
2562 closing delimiter character.
2564 The same is true for
2565 .BR \[rs]A ,
2566 .BR \[rs]b ,
2567 .BR \[rs]B ,
2568 .BR \[rs]C ,
2569 .BR \[rs]l ,
2570 .BR \[rs]L ,
2571 .BR \[rs]o ,
2572 .BR \[rs]X ,
2574 .BR \[rs]Z .
2576 When decoding a macro argument that is delimited by double quotes, a
2577 character that appears at a different input level to the starting
2578 delimiter character will not be recognised as the closing delimiter
2579 character.
2581 The implementation of
2582 .B \[rs]$@
2583 ensures that the double quotes surrounding an argument will appear the
2584 same input level, which will be different to the input level of the
2585 argument itself.
2587 In a long escape name
2588 .B ]
2589 will not be recognized as a closing delimiter except when it occurs at
2590 the same input level as the opening
2591 .BR ] .
2593 In compatibility mode, no attention is paid to the input-level.
2596 There are some new types of condition:
2599 .BI .if\ r xxx
2600 True if there is a number register named
2601 .IR xxx .
2604 .BI .if\ d xxx
2605 True if there is a string, macro, diversion, or request named
2606 .IR xxx .
2609 .BI .if\ m xxx
2610 True if there is a color named
2611 .IR xxx .
2614 .BI .if\ c ch
2615 True if there is a character
2616 .IR ch
2617 available;
2618 .I ch
2619 is either an
2620 .SM ASCII
2621 character or a special character
2622 .BI \[rs]( xx
2624 .BI \[rs][ xxx ]\f[R];
2625 the condition will also be true if
2626 .I ch
2627 has been defined by the
2628 .B char
2629 request.
2633 .B tr
2634 request can now map characters onto
2635 .BR \[rs]~ .
2638 It is now possible to have whitespace between the first and second dot
2639 (or the name of the ending macro) to end a macro definition.
2641 Example:
2644 .NE 6v+\n(.Vu
2645 .ft CB
2647 .Text .de foo
2648 .Text .  nop Hello, I'm `foo'.
2649 .Text .  nop I will now define `bar'.
2650 .Text .  de bar
2651 .Text .    nop Hello, I'm `bar'.
2652 .Text .  .
2653 .Text .  nop Done.
2654 .Text ..
2655 .Text .foo
2656 .Text .bar
2660 .\" --------------------------------------------------------------------
2661 .SH "INTERMEDIATE OUTPUT FORMAT"
2662 .\" --------------------------------------------------------------------
2664 This section describes the format output by GNU troff.
2666 The output format used by GNU troff is very similar to that used
2667 by Unix device-independent troff.
2669 Only the differences are documented here.
2672 .\" --------------------------------------------------------------------
2673 .SS "Units"
2674 .\" --------------------------------------------------------------------
2676 The argument to the
2677 .B s
2678 command is in scaled points (units of
2679 .IR points/ n ,
2680 where
2681 .I n
2682 is the argument to the
2683 .B sizescale
2684 command  in the DESC file).
2686 The argument to the
2687 .B x\ Height
2688 command is also in scaled points.
2691 .\" --------------------------------------------------------------------
2692 .SS "Text Commands"
2693 .\" --------------------------------------------------------------------
2696 .BI N n
2697 Print character with index\~\c
2698 .I n
2699 (a non-negative integer) of the current font.
2702 If the
2703 .B tcommand
2704 line is present in the DESC file, troff will use the following two
2705 commands.
2708 .BI t xxx
2709 .I xxx
2710 is any sequence of characters terminated by a space or a newline; the
2711 first character should be printed at the current position, the current
2712 horizontal position should be increased by the width of the first
2713 character, and so on for each character.
2715 The width of the character is that given in the font file,
2716 appropriately scaled for the current point size, and rounded so that
2717 it is a multiple of the horizontal resolution.
2719 Special characters cannot be printed using this command.
2722 .BI u n\ xxx
2723 This is same as the
2724 .B t
2725 command except that after printing each character, the current
2726 horizontal position is increased by the sum of the width of that
2727 character and
2728 .IR n .
2731 Note that single characters can have the eighth bit set, as can the
2732 names of fonts and special characters.
2735 The names of characters and fonts can be of arbitrary length; drivers
2736 should not assume that they will be only two characters long.
2739 When a character is to be printed, that character will always be
2740 in the current font.
2742 Unlike device-independent troff, it is not necessary for drivers to
2743 search special fonts to find a character.
2746 For color support, some new commands have been added:
2749 .Text \f[B]mc \f[I]cyan magenta yellow\f[R]
2751 .Text \f[B]md\f[R]
2753 .Text \f[B]mg \f[I]gray\f[R]
2755 .Text \f[B]mk \f[I]cyan magenta yellow black\f[R]
2757 .Text \f[B]mr \f[I]red green blue\f[R]
2758 Set the color components of the current drawing color, using various
2759 color schemes.
2761 .B md
2762 resets the drawing color to the default value.
2764 The arguments are integers in the range 0 to 65536.
2768 .B x
2769 device control command has been extended.
2772 .Text \f[B]x u \f[I]n\f[R]
2774 .I n
2775 is\~1, start underlining of spaces.
2778 .I n
2779 is\~0, stop underlining of spaces.
2781 This is needed for the
2782 .B cu
2783 request in nroff mode and is ignored otherwise.
2786 .\" --------------------------------------------------------------------
2787 .SS "Drawing Commands"
2788 .\" --------------------------------------------------------------------
2791 .B D
2792 drawing command has been extended.
2794 These extensions will not be used by GNU pic if the
2795 .B \-n
2796 option is given.
2799 .Text \f[B]Df \f[I]n\f[R]\*[ic]\[rs]n
2800 Set the shade of gray to be used for filling solid objects to
2801 .IR n ;
2802 .I n
2803 must be an integer between 0 and 1000, where 0 corresponds solid white
2804 and 1000 to solid black, and values in between correspond to
2805 intermediate shades of gray.
2807 This applies only to solid circles, solid ellipses and solid
2808 polygons.
2810 By default, a level of 1000 will be used.
2812 Whatever color a solid object has, it should completely obscure
2813 everything beneath it.
2815 A value greater than 1000 or less than 0 can also be used: this means
2816 fill with the shade of gray that is currently being used for lines and
2817 text.
2819 Normally this will be black, but some drivers may provide a way of
2820 changing this.
2823 .Text \f[B]DC \f[I]d\f[R]\*[ic]\[rs]n
2824 Draw a solid circle with a diameter of
2825 .I d
2826 with the leftmost point at the current position.
2829 .Text \f[B]DE \f[I]dx dy\f[R]\*[ic]\[rs]n
2830 Draw a solid ellipse with a horizontal diameter of
2831 .I dx
2832 and a vertical diameter of
2833 .I dy
2834 with the leftmost point at the current position.
2836 delim $$
2840 .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
2841 Draw a polygon with, for $i = 1 ,..., n+1$, the
2842 .IR i -th
2843 vertex at the current position 
2845 $+ sum from j=1 to i-1 ( dx sub j , dy sub j )$.
2847 At the moment, GNU pic only uses this command to generate triangles
2848 and rectangles.
2851 .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
2853 Like
2854 .B Dp
2855 but draw a solid rather than outlined polygon.
2858 .Text \f[B]Dt \f[I]n\f[R]\*[ic]\[rs]n
2859 Set the current line thickness to
2860 .I n
2861 machine units.
2863 Traditionally Unix troff drivers use a line thickness proportional to
2864 the current point size; drivers should continue to do this if no
2865 .B Dt
2866 command has been given, or if a
2867 .B Dt
2868 command has been given with a negative value of
2869 .IR n .
2870 A zero value of
2871 .I n
2872 selects the smallest available line thickness.
2875 A difficulty arises in how the current position should be changed after
2876 the execution of these commands.
2878 This is not of great importance since the code generated by GNU pic
2879 does not depend on this.
2881 Given a drawing command of the form
2883 \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]
2886 where
2887 .I c
2888 is not one of
2889 .BR c ,
2890 .BR e ,
2891 .BR l ,
2892 .BR a ,
2894 .BR ~ ,
2895 Unix troff will treat each of the $x sub i$ as a horizontal quantity,
2896 and each of the $y sub i$ as a vertical quantity and will assume that
2897 the width of the drawn object is $sum from i=1 to n x sub i$,
2898 and that the height is $sum from i=1 to n y sub i$.
2900 (The assumption about the height can be seen by examining the
2901 .B st
2903 .B sb
2904 registers after using such a
2905 .B D
2906 command in a \[rs]w escape sequence).
2908 This rule also holds for all the original drawing commands with the
2909 exception of
2910 .BR De .
2911 For the sake of compatibility GNU troff also follows this rule, even
2912 though it produces an ugly result in the case of the
2913 .BR Dt ,
2914 and, to a lesser extent,
2915 .B DE
2916 commands.
2918 Thus after executing a
2919 .B D
2920 command of the form
2922 \f[B]D\f[I]c\f[R] $x sub 1$ $y sub 1$ $x sub 2$ $y sub 2$ $...$ \c
2923 $x sub n$ $y sub n$\[rs]n
2926 the current position should be increased by
2928 $( sum from i=1 to n x sub i , sum from i=1 to n y sub i )$.
2931 Another set of extensions is
2934 .Text \f[B]DFc \f[I]cyan magenta yellow\f[R]\*[ic]\[rs]n
2936 .Text \f[B]DFd\f[R]\*[ic]\[rs]n
2938 .Text \f[B]DFg \f[I]gray\f[R]\*[ic]\[rs]n
2940 .Text \f[B]DFk \f[I]cyan magenta yellow black\f[R]\*[ic]\[rs]n
2942 .Text \f[B]DFr \f[I]red green blue\f[R]\*[ic]\[rs]n
2943 Set the color components of the filling color similar to the
2944 .B m
2945 commands above.
2948 Note that
2949 .B Df
2950 is now mapped onto
2951 .BR DFg .
2952 The current position isn't changed by those colour commands.
2955 .\" --------------------------------------------------------------------
2956 .SS "Device Control Commands"
2957 .\" --------------------------------------------------------------------
2959 There is a continuation convention which permits the argument to the
2960 .B x\ X
2961 command to contain newlines: when outputting the argument to the
2962 .B x\ X
2963 command, GNU troff will follow each newline in the argument with a
2964 .B +
2965 character (as usual, it will terminate the entire argument with a
2966 newline); thus if the line after the line containing the
2967 .B x\ X
2968 command starts with
2969 .BR + ,
2970 then the newline ending the line containing the
2971 .B x\ X
2972 command should be treated as part of the argument to the
2973 .B x\ X
2974 command, the
2975 .B +
2976 should be ignored, and the part of the line following the
2977 .B +
2978 should be treated like the part of the line following the
2979 .B x\ X
2980 command.
2983 The first three output commands are guaranteed to be:
2985 .BI x\ T\  device
2987 .BI x\ res\  n\ h\ v
2989 .B x init
2992 .\" --------------------------------------------------------------------
2993 .SH INCOMPATIBILITIES
2994 .\" --------------------------------------------------------------------
2996 In spite of the many extensions, groff has retained compatibility to
2997 classical troff to a large degree.
2999 For the cases where the extensions lead to collisions, a special
3000 compatibility mode with the restricted, old functionality was created
3001 for groff.
3004 .\" --------------------------------------------------------------------
3005 .SS "Groff Language"
3006 .\" --------------------------------------------------------------------
3008 .I groff
3009 provides a
3010 .B compatibility mode
3011 that allows to process roff code written for classical
3012 .troff
3013 or for other implementations of roff in a consistent way.
3016 Compatibility mode can be turned on with the
3017 .option \-C
3018 command line option, and turned on or off with the
3019 .request .cp
3020 request.
3022 The number register
3023 .esc n(.C
3024 is\~1 if compatibility mode is on, 0\~otherwise.
3027 This became necessary because the GNU concept for long names causes
3028 some incompatibilities.
3029 .I Classical troff
3030 interprets
3032 .request .dsabcd
3035 as defining a string
3036 .B ab
3037 with contents
3038 .BR cd .
3040 .IR groff
3041 mode, this will be considered as a call of a macro named
3042 .request dsabcd .
3045 Also
3046 .I classical troff
3047 interprets
3048 .esc *[
3050 .esc n[
3051 as references to a string or number register called
3052 .request [
3053 while
3054 .I groff
3055 takes this as the start of a long name.
3059 .IR "compatibility mode" ,
3060 groff interprets these things in the traditional way; so long
3061 names are not recognized.
3064 On the other hand, groff in
3065 .I GNU native mode
3066 does not allow to use the single-character escapes
3067 .esc \[rs]
3068 (backslash),
3069 .esc |
3070 (vertical bar),
3071 .esc ^
3072 (caret),
3073 .esc &
3074 (ampersand),
3075 .esc {
3076 (opening brace),
3077 .esc }
3078 (closing brace),
3079 .squoted "\[rs]\ "
3080 (space),
3081 .esc '
3082 (single quote),
3083 .esc `
3084 (backquote),
3085 .esc \-
3086 (minus),
3087 .esc _
3088 (underline),
3089 .esc !
3090 (bang),
3091 .esc %
3092 (percent),
3094 .esc c
3095 (character c) in names of strings, macros, diversions, number
3096 registers, fonts or environments, whereas
3097 .I classical troff
3098 does.
3102 .esc A
3103 escape sequence can be helpful in avoiding these escape sequences in
3104 names.
3107 Fractional pointsizes cause one noteworthy incompatibility.
3110 .I classical
3111 .IR troff ,
3113 .request ps
3114 request ignores scale indicators and so
3117 .B .ps\~10u
3121 will set the pointsize to 10\~points, whereas in groff native mode the
3122 pointsize will be set to 10\~scaled points.
3126 .I groff
3127 mode, there is a fundamental difference between unformatted input
3128 characters, and formatted output characters.
3130 Everything that affects how an output character will be output is
3131 stored with the character; once an output character has been
3132 constructed it is unaffected by any subsequent requests that are
3133 executed, including the
3134 .request bd ,
3135 .request cs ,
3136 .request tkf ,
3137 .request tr ,
3139 .request fp
3140 requests.
3143 Normally output characters are constructed from input characters at
3144 the moment immediately before the character is added to the current
3145 output line.
3147 Macros, diversions and strings are all, in fact, the same type of
3148 object; they contain lists of input characters and output characters
3149 in any combination.
3152 An output character does not behave like an input character for the
3153 purposes of macro processing; it does not inherit any of the special
3154 properties that the input character from which it was constructed
3155 might have had.
3157 The following example will make things clearer.
3162 .ft CB
3163 .Text .di x
3164 .Text \[rs]\[rs]\[rs]\[rs]
3165 .Text .br
3166 .Text .di
3167 .Text .x
3174 .I GNU mode
3175 this will be printed as
3176 .esc \[rs] .
3177 So each pair of input backslashes
3178 .squoted \[rs]\[rs]
3179 is turned into a single output backslash
3180 .squoted \[rs]
3181 and the resulting output backslashes are not interpreted as escape
3182 characters when they are reread.
3185 .I Classical troff
3186 would interpret them as escape characters when they were reread and
3187 would end up printing a single backslash
3188 .squoted \[rs] .
3191 In GNU, the correct way to get a printable version of the backslash
3192 character
3193 .squoted \[rs]
3194 is the
3195 .esc (rs
3196 escape sequence, but classical troff does not provide a clean feature
3197 for getting a non-syntactical backslash.
3199 A close method is the printable version of the current escape
3200 character using the
3201 .esc e
3202 escape sequence; this works if the current escape character is not
3203 redefined.
3205 It works in both GNU mode and compatibility mode, while dirty tricks
3206 like specifying a sequence of multiple backslashes do not work
3207 reliably; for the different handling in diversions, macro definitions,
3208 or text mode quickly leads to a confusion about the necessary number of
3209 backslashes.
3212 To store an escape sequence in a diversion that will be interpreted
3213 when the diversion is reread, either the traditional
3214 .esc !
3215 transparent output facility or the
3217 .esc ?
3218 escape sequence can be used.
3221 .\" --------------------------------------------------------------------
3222 .SS "Intermediate Output"
3223 .\" --------------------------------------------------------------------
3225 The groff intermediate output format is in a state of evolution.
3227 So far it has some incompatibilities, but it is intended to establish
3228 a full compatibility to the classical troff output format.
3230 Actually the following incompatibilities exist:
3232 .Topic
3233 The positioning after the drawing of the polygons conflicts with the
3234 classical definition.
3236 .Topic
3237 The intermediate output cannot be rescaled to other devices as
3238 classical "device-independent" troff did.
3241 .\" --------------------------------------------------------------------
3242 .SH AUTHORS
3243 .\" --------------------------------------------------------------------
3245 Copyright (C) 1989, 2001, 2002 Free Software Foundation, Inc.
3248 This document is distributed under the terms of the FDL (GNU Free
3249 Documentation License) version 1.1 or later.
3251 You should have received a copy of the FDL on your system, it is also
3252 available on-line at the
3253 .URL http://\:www.gnu.org/\:copyleft/\:fdl.html "GNU copyleft site" .
3255 This document was written by James Clark, with modifications by
3256 .MTO wl@gnu.org "Werner Lemberg"
3258 .MTO bwarken@mayn.de "Bernd Warken" .
3261 This document is part of
3262 .IR groff ,
3263 the GNU roff distribution.
3265 Formerly, the contents of this document was kept in the manual
3266 page
3267 .BR @g@troff (@MAN1EXT@).
3268 Only the parts dealing with the language aspects of the different
3269 .I roff
3270 systems were carried over into this document.
3273 .I troff
3274 command line options and warnings are still documented in
3275 .BR @g@troff (@MAN1EXT@).
3277 .\" --------------------------------------------------------------------
3278 .SH "SEE ALSO"
3279 .\" --------------------------------------------------------------------
3282 .I groff info
3283 .IR file ,
3284 cf.\&
3285 .BR info (1)
3286 presents all groff documentation within a single document.
3289 .BR groff (@MAN1EXT@)
3290 A list of all documentation around
3291 .IR groff .
3294 .BR groff (@MAN7EXT@)
3295 A description of the
3296 .I groff
3297 language, including a short, but complete reference of all predefined
3298 requests, registers, and escapes of plain
3299 .IR groff .
3300 From the command line, this is called using
3303 .ShellCommand man\~7\~groff
3306 .BR roff (@MAN7EXT@)
3307 A survey of
3308 .I roff
3309 systems, including pointers to further historical documentation.
3312 .RI [ CSTR\~#54\/ ]
3314 .I Nroff/\:Troff User's Manual
3316 .I J.\& F.\& Osanna
3317 of 1976 in the revision of
3318 .I Brian Kernighan
3319 of 1992, being the
3320 .URL http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:54.ps.gz \
3321      "classical troff documentation" .
3324 .\" --------------------------------------------------------------------
3325 .\" Emacs variables
3326 .\" --------------------------------------------------------------------
3328 .\" Local Variables:
3329 .\" mode: nroff
3330 .\" End: