2 .\" The above line should force the use of eqn as a preprocessor
6 Last update : 26 Jul 2004
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, 2003, 2004 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 .\" --------------------------------------------------------------------
29 .\" --------------------------------------------------------------------
31 .do nr groff_diff_C \n[.C]
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
51 .\" --------------------------------------------------------------------
52 .\" start of macro definitions
74 .\" Text \[oq]\f[CB]\*[@arg1]\f[]\[cq]\$*
75 . Text \[oq]\f[B]\*[@arg1]\f[]\[cq]\$*
78 .c A shell command line
81 . IR "shell#" "\h'1m'\f[CB]\$*\f[]\/"
83 .c reference of a request or macro
87 .\" Text \f[CB]\*[@arg1]\f[]\$*
88 . Text \f[B]\*[@arg1]\f[]\$*
93 .c representation of an escape sequence
97 .\" Text \f[CB]\[rs]\*[@arg1]\f[]\$*
98 . Text \f[B]\[rs]\*[@arg1]\&\f[]\$*
102 .\" end of macro definitions
104 .\" from old groff_out.man
111 .\" --------------------------------------------------------------------
113 .\" --------------------------------------------------------------------
115 .TH GROFF_DIFF @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
117 groff_diff \- differences between GNU troff and classical troff
120 .\" --------------------------------------------------------------------
122 .\" --------------------------------------------------------------------
124 This manual page describes the language differences between
128 text processing system and the classical
130 formatter of the freely available Unix\~7 of the 1970s, documented in
132 .I Troff User's Manual
137 This inludes the roff language as well as the intermediate output
138 format (troff output).
143 gives pointers to both the classical
150 .\" --------------------------------------------------------------------
152 .\" --------------------------------------------------------------------
154 In this section, all additional features of
156 compared to the classical Unix\~7
158 are described in detail.
161 .\" --------------------------------------------------------------------
163 .\" --------------------------------------------------------------------
165 The names of number registers, fonts, strings/\:macros/\:diversions,
166 special characters (glyphs), and colors can be of any length.
168 In escape sequences, additionally to the classical
170 construction for a two-character name, you can use
172 for a name of arbitrary length.
176 Print the special character (glyph) called
180 .BI \[rs][ "comp1 comp2 .\|.\|." ]
181 Print composite glyph consisting of multiple components.
183 Example: `\[rs][A\~ho]' is capital letter A with ogonek which finally maps
184 to glyph name `u0041_0328'.
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.
199 is a new syntax equal to
201 i.e., to return to the previous font.
204 .BI \[rs]*[ "xxx arg1 arg2 .\|.\|." ]
215 Interpolate number register
219 .\" --------------------------------------------------------------------
220 .SS "Fractional pointsizes"
221 .\" --------------------------------------------------------------------
233 There is a new scale indicator
235 that has the effect of multiplying by sizescale.
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
241 Arguments treated in this way are the argument to the
243 request, the third argument to the
245 request, the second and fourth arguments to the
247 request, the argument to the
249 escape sequence, and those variants of the
251 escape sequence that take a numeric expression as their argument.
254 For example, suppose sizescale is 1000; then a scaled point will be
255 equivalent to a millipoint; the call
259 and so sets the pointsize to 10250 scaled points, which is equal to
265 returns the pointsize in points as decimal fraction.
267 There is also a new number register
269 that returns the pointsize in scaled points.
272 It would make no sense to use the
274 scale indicator in a numeric expression whose default scale indicator
283 Similarly it would make no sense to use a scaling indicator other than
287 in a numeric expression whose default scale indicator was
291 disallows this as well.
294 There is also new scale indicator\~\c
296 which multiplies by the number of units in a scaled point.
302 Be sure not to confuse the
309 .\" --------------------------------------------------------------------
310 .SS "Numeric expressions"
311 .\" --------------------------------------------------------------------
313 Spaces are permitted in a number expression within parentheses.
317 indicates a scale of 100ths of an em.
319 indicates a scale of 65536 units, providing fractions for color
324 For example, 0.5f = 32768u.
346 as the default scaling indicator.
350 is missing, ignore scaling indicators in the evaluation of
354 .\" --------------------------------------------------------------------
355 .SS "New escape sequences"
356 .\" --------------------------------------------------------------------
359 .BI \[rs]A' anything '
364 resp., depending on whether
366 is or is not acceptable as the name of a string, macro, diversion, number
367 register, environment, font, or color.
374 This is useful if you want to lookup user input in some sort of
378 .BI \[rs]B' anything '
383 resp., depending on whether
385 is or is not a valid numeric expression.
397 Normally it is more convenient to use
398 .BI \[rs][ xxx ]\f[R].
401 has the advantage that it is compatible with recent versions of
403 and is available in compatibility mode.
407 This is equivalent to an escape character, but it is not interpreted in
410 For example, strings to start and end superscripting could be defined
416 .Text .ds { \[rs]v'\-.3m'\[rs]s'\[rs]En[.s]*6u/10u'
418 .Text .ds } \[rs]s0\[rs]v'.3m'
424 ensures that these definitions will work even if
426 gets interpreted in copy-mode (for example, by being used in a macro
438 This is the same as the
443 switches back to the previous color (note that
445 won't work; it selects font family `P' instead).
455 switches back to the previous color.
463 Set background color for filled objects drawn with the
464 .BI \[rs]D' .\|.\|. '
467 switches back to the previous color.
471 Typeset the glyph with index
477 Most devices only have glyphs with indices between 0 and 255.
479 If the current font does not contain a glyph with that code,
486 escape sequence can be conveniently used in conjunction with the
493 .Text .char \[rs][phone] \[rs]f(ZD\[rs]N'37'
498 The index of each glyph is given in the fourth column in the font
499 description file after the
503 It is possible to include unnamed glyphs in the font description
504 file by using a name of
508 escape sequence is the only way to use these.
514 Suppressing troff output.
522 are intended for internal use by
528 Disable any ditroff glyphs from being emitted to the device driver,
529 provided that the escape occurs at the outer level (see
536 Enable output of glyphs, provided that the escape occurs at the outer
542 also reset the registers
550 These four registers mark the top left and bottom right hand corners
551 of a box which encompasses all written glyphs.
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
562 Begin a nesting level.
568 This is really an internal mechanism for
570 while producing images.
572 They are generated by running the troff source through
574 to the postscript device and
576 to produce images in PNG format.
580 escape will start a new page if the device is not html (to reduce the
581 possibility of images crossing a page boundary).
588 .BI \[rs]O5[ Pfilename ]
593 Provided that this escape occurs at the outer nesting level, write
597 The position of the image,
599 must be specified and must be one of l, r, c, or i (left, right,
603 will be associated with the production of the next inline image.
607 .BI \[rs]R' name\ \[+-]n '
608 This has the same effect as
612 .BI .nr\ name\ \[+-]n
619 Set the point size to
623 must be exactly two digits.
633 Set the point size to
637 is a numeric expression with a default scale indicator of\~\c
646 Interpolate the contents of the environment variable
651 is interpreted in copy-mode.
659 This is approximately equivalent to
660 .BI \[rs]X'\[rs]*[ xxx ]'\f[R].
661 However the contents of the string or macro
663 are not interpreted; also it is permitted for
665 to have been defined as a macro and thus contain newlines (it is not
666 permitted for the argument to
668 to contain newlines).
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
675 .BI \[rs]Z' anything '
676 Print anything and then restore the horizontal and vertical position;
678 may not contain tabs or leaders.
682 The name by which the current macro was invoked.
686 request can make a macro have more than one name.
690 In a macro or string, the concatenation of all the arguments separated
695 In a macro or string, the concatenation of all the arguments with each
696 surrounded by double quotes, and separated by spaces.
702 In a macro or string, this gives the
708 Macros and strings can have an unlimited number of arguments.
711 .BI \[rs]? anything \[rs]?
712 When used in a diversion, this will transparently embed
716 is read in copy mode.
718 When the diversion is reread,
722 may not contain newlines; use
724 if you want to embed newlines in a diversion.
728 is also recognised in copy mode and turned into a single internal
729 code; it is this code that terminates
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]?
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.
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.
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.
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
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.
791 . nop For example, inserting
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].
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
806 except that it behaves like a character declared with the
808 request to be transparent for the purposes of end-of-sentence
813 This produces an unbreakable space that stretches like a normal
814 inter-word space when a line is adjusted.
818 This causes the insertion of a zero-width break point.
822 within a word but without insertion of a soft hyphen character.
826 Everything up to and including the next newline is ignored.
828 This is interpreted in copy mode.
834 does not ignore the terminating newline.
837 .\" --------------------------------------------------------------------
839 .\" --------------------------------------------------------------------
845 for number register object named
847 The new name and the old name will be exactly equivalent.
851 is undefined, a warning of type
853 will be generated, and the request will be ignored.
859 for request, string, macro, or diversion object named
862 The new name and the old name will be exactly equivalent (it is
863 similar to a hard rather than a soft link).
867 is undefined, a warning of type
869 will be generated, and the request will be ignored.
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.
887 but compatibility mode is switched off during execution.
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
893 As a consequence, the requests
899 can be intermixed freely since the compatibility save/\:restore tokens
900 only affect the macro parts defined by
907 Append to macro indirectly.
911 request below for more information.
917 request but compatibility mode is switched off during execution.
923 but compatibility mode is switched off during expansion.
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.
928 As a consequence, the requests
934 can be intermixed freely since the compatibility save/\:restore tokens
935 only affect the (sub)strings defined by
942 This request `unformats' the diversion
946 and space characters (and some escape sequences) that were formatted
949 will be treated like ordinary input characters when
952 Useful for diversions in conjunction with the
956 It can be also used for gross hacks; for example, this
976 will set register\~\c
980 Note that glyph information (font, font size, etc.) is not preserved;
987 Print a backtrace of the input stack on stderr.
991 Set the blank line macro to
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.
1000 These requests are similar to the
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.
1011 Break out of a while loop.
1019 Be sure not to confuse this with the
1029 .BI .cflags\ n\ c1\ c2\|.\|.\|.\&
1033 have properties determined by
1035 which is ORed from the following:
1039 The character ends sentences (initially characters
1041 have this property).
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
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
1057 The character overlaps horizontally (initially characters
1058 .B \[rs][ul]\[rs][rn]\[rs][ru]\[rs][radicalex]\[rs][sqrtex]
1059 have this property).
1062 The character overlaps vertically (initially character
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).
1077 .BI .char\ c\ string
1084 needs to be printed,
1086 will be processed in a temporary environment and the result will be
1087 wrapped up into a single object.
1089 Compatibility mode will be turned off and the escape character will be
1096 Any emboldening, constant spacing or track kerning will be applied to
1097 this object rather than to individual glyphs in
1101 A glyph defined by this request can be used just like a normal
1102 glyph provided by the output device.
1104 In particular other characters can be translated to it with the
1106 request; it can be made the leader character by the
1108 request; repeated patterns can be drawn with the character using the
1112 escape sequences; words containing the character can be hyphenated
1115 request is used to give the character a hyphenation code.
1118 There is a special anti-recursion feature: Use of glyph within the
1119 glyph's definition will be handled like normal glyphs not
1123 A glyph definition can be removed with the
1129 Chop the last element off macro, string, or diversion
1131 This is useful for removing the newline from the end of diversions
1132 that are to be interpolated as strings.
1136 Close the stream named
1139 will no longer be an acceptable argument to the
1148 .BI .composite\ glyph1\ glyph2
1155 with more than one component.
1159 Finish the current iteration of a while loop.
1171 is non-zero or missing, enable colors (this is the default), otherwise
1178 is non-zero or missing, enable compatibility mode, otherwise disable
1181 In compatibility mode, long names are not recognised, and the
1182 incompatibilities caused by long names do not arise.
1185 .BI .defcolor\ xxx\ scheme\ color_components
1188 can be one of the following values:
1194 (four components), and
1200 Color components can be given either as a hexadecimal string or as
1201 positive decimal integers in the range 0-65535.
1203 A hexadecimal string contains all color components concatenated; it
1204 must start with either
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.
1211 Examples: #FFC0CB (pink), ##ffff0000ffff (magenta).
1213 A new scaling indicator\~\c
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
1224 .Text .defcolor darkgreen rgb 0.1f 0.5f 0.2f
1232 is the default scaling indicator for the
1234 request, thus the above statement is equivalent to
1239 .Text .defcolor darkgreen rgb 0.1 0.5 0.2
1247 (which is device-specific) can't be redefined.
1249 It is possible that the default color for
1259 but compatibility mode is switched off during execution.
1261 On entry, the current compatibility mode is saved and restored at exit.
1265 Define macro indirectly.
1267 The following example
1296 request but compatibility mode is switched off during execution.
1302 with compatibility mode disabled.
1315 would have the same effect as
1324 except that it would work even if compatibility mode had been enabled.
1326 Note that the previous compatibility mode is restored before any files
1337 but compatibility mode is switched off during expansion.
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.
1344 Save current escape character.
1348 Restore escape character saved with
1350 Without a previous call to
1353 will be the new escape character.
1357 Copy the contents of environment
1359 to the current environment.
1361 No pushing or popping of environments will be done.
1365 Set the current font family to
1367 The current font family is part of the current environment.
1370 is missing, switch back to previous font family.
1372 The value at start-up is `T'.
1374 See the description of the
1376 request for more information on font families.
1379 .BI .fchar\ c\ string
1380 Define fallback glyph
1385 The syntax of this request is the same as the
1387 request; the only difference is that a glyph defined with
1389 hides the glyph with the same name in the current font, whereas a
1392 is checked only if the particular glyph isn't found in the current font.
1394 This test happens before checking special fonts.
1398 Set the fill color to
1403 switch to the previous fill color.
1406 .BI .fschar\ f\ c\ string
1407 Define fallback glyph
1414 The syntax of this request is the same as the
1416 request (with an additional argument to specify the font); a glyph
1419 is searched after the list of fonts declared with the
1421 request but before the list of fonts declared with
1425 .BI .fspecial\ f\ s1\ s2\|.\|.\|.\&
1426 When the current font is
1431 will be special, that is, they will searched for glyphs not in
1434 Any fonts specified in the
1436 request will be searched after fonts specified in the
1440 Without argument, reset the list of global special fonts to be empty.
1448 Whenever a font named
1450 is referred to in an
1452 escape sequence, in the
1456 conditional operators, or in the
1472 is missing, or equal to
1476 will not be translated.
1480 Set the glyph color to
1485 switch to the previous glyph color.
1488 .BI .hcode \ c1\ code1\ c2\ code2\|.\|.\|.\&
1489 Set the hyphenation code of character
1497 A hyphenation code must be a single input character (not a special
1498 character) other than a digit or a space.
1500 Initially each lower-case letter \%a-z has a hyphenation code, which is
1501 itself, and each upper-case letter \%A-Z has a hyphenation code which is
1502 the lower-case version of itself.
1510 Set the current hyphenation language to
1512 Hyphenation exceptions specified with the
1514 request and hyphenation patterns specified with the
1516 request are both associated with the current hyphenation language.
1520 request is usually invoked by the
1526 Set the maximum number of consecutive hyphenated lines to\~\c
1530 is negative, there is no maximum.
1532 The default value is\~\-1.
1534 This value is associated with the current environment.
1536 Only lines output from an environment count towards the maximum
1537 associated with that environment.
1539 Hyphens resulting from
1541 are counted; explicit hyphens are not.
1545 Read hyphenation patterns from
1547 this will be searched for in the same way that
1549 is searched for when the
1551 option is specified.
1553 It should have the same format as (simple) \*[tx] patterns files.
1555 More specifically, the following scanning rules are implemented.
1559 A percent sign starts a comment (up to the end of the line) even if
1560 preceded by a backslash.
1563 No support for `digraphs' like
1571 (character code of\~\c
1573 in the range 0-127) are recognized; other use of
1582 checks for the expression
1583 .B \[rs]patterns{.\|.\|.}
1584 (possibly with whitespace before and after the braces).
1586 Everything between the braces is taken as hyphenation patterns.
1592 are not allowed in patterns.
1596 .B \[rs]hyphenation{.\|.\|.}
1597 gives a list of hyphenation exceptions.
1604 For backwards compatibility, if
1606 is missing, the whole file is treated as a list of hyphenation patterns
1607 (only recognizing the
1609 character as the start of a comment).
1615 request to map the encoding used in hyphenation patterns files to
1619 The set of hyphenation patterns is associated with the current language
1626 request is usually invoked by the
1628 file; a second call replaces the old patterns with the new ones.
1634 except that the hyphenation patterns from
1636 are appended to the patterns already loaded in the current language.
1639 .BI .hpfcode\ a\ b\ c\ d\ .\|.\|.
1640 After reading a hyphenation patterns file with the
1644 request, convert all characters with character code\~\c
1646 in the recently read patterns to character code\~\c
1654 Initially, all character codes map to themselves.
1658 must be integers in the range 0 to\~255.
1660 Note that it is even possible to use character codes which are invalid in
1667 .I hyphenation margin
1670 when the current adjustment mode is not\~\c
1672 the line will not be hyphenated if the line is no more than
1676 The default hyphenation margin is\~0.
1678 The default scaling indicator for this request is\~\c
1680 The hyphenation margin is associated with the current environment.
1682 The current hyphenation margin is available in the
1689 .I hyphenation space
1692 when the current adjustment mode is\~\c
1694 don't hyphenate the line if the line can be justified by adding no
1697 extra space to each word space.
1699 The default hyphenation space is\~0.
1701 The default scaling indicator for this request is\~\c
1703 The hyphenation space is associated with the current environment.
1705 The current hyphenation space is available in the
1713 for which a line interrupted with
1715 counts as one input line.
1721 is non-zero or missing, enable pairwise kerning, otherwise disable it.
1724 .BI .length\ xx\ string
1725 Compute the length of
1727 and return it in the number register
1729 (which is not necessarily defined before).
1735 is non-zero or missing, enable line-tabs mode, otherwise disable it
1736 (which is the default).
1738 In line-tabs mode, tab distances are computed relative to the
1739 (current) output line.
1741 Otherwise they are taken relative to the input line.
1743 For example, the following
1750 .Text .ds x a\[rs]t\[rs]c
1751 .Text .ds y b\[rs]t\[rs]c
1770 In line-tabs mode, the same code gives
1778 Line-tabs mode is associated with the current environment; the
1779 read-only number register
1780 .B \\[rs]n[.linetabs]
1781 is set to\~1 if in line-tabs mode, and 0 otherwise.
1789 is searched for in the same directories as macro files for the the
1791 command line option.
1793 If the file name to be included has the form
1799 instead and vice versa.
1805 This is similar to `.if\ 1'.
1811 built-in condition true and the
1813 built-in condition false.
1815 This can be reversed using the
1820 .BI .open\ stream\ filename
1823 for writing and associate the stream named
1834 .BI .opena\ stream\ filename
1839 exists, append to it instead of truncating it.
1845 directly to the intermediate output (subject to copy-mode interpretation);
1848 used at the top level.
1850 An initial double quote in
1852 is stripped off to allow initial blanks.
1856 Print the names and contents of all currently defined number registers
1860 .BI .psbb \ filename
1861 Get the bounding box of a PostScript image
1863 This file must conform to Adobe's Document Structuring Conventions;
1864 the command looks for a
1866 comment to extract the bounding box values.
1868 After a successful call, the coordinates (in PostScript units) of the
1869 lower left and upper right corner can be found in the registers
1877 If some error has occurred, the four registers are set to zero.
1881 This behaves like the
1883 request except that input comes from the standard output of
1888 Print the names and positions of all traps (not including input line
1889 traps and diversion traps) on stderr.
1891 Empty slots in the page trap list are printed as well, because they
1892 can affect the priority of subsequently planted traps.
1896 Set the post-vertical line space to
1898 default scale indicator is\~\c
1901 This value will be added to each line after it has been output.
1903 With no argument, the post-vertical line space is set to its previous
1907 The total vertical line spacing consists of four components:
1911 with a negative value which are applied before the line is output, and
1915 with a positive value which are applied after the line is output.
1918 .BI .rchar\ c1\ c2\|.\|.\|.\&
1919 Remove the definitions of glyphs
1922 This undoes the effect of a
1928 Within a macro, return immediately.
1930 If called with an argument, return twice, namely from the current macro and
1931 from the macro one level higher.
1933 No effect otherwise.
1936 .BI .rfschar\ c1\ c2\|.\|.\|.\&
1937 Remove the font-specific definitions of glyphs
1940 This undoes the effect of a
1948 Right justify the next
1952 Without an argument right justify the next input line.
1954 The number of lines to be right justified is available in the
1958 This implicitly does
1962 request implicitly does
1967 Rename number register
1973 .BI .schar\ c\ string
1974 Define global fallback glyph
1979 The syntax of this request is the same as the
1981 request; a glyph defined with
1983 is searched after the list of fonts declared with the
1985 request but before the mounted special fonts.
1989 Set the soft hyphen character to
1993 is omitted, the soft hyphen character will be set to the default
1995 The soft hyphen character is the glyph which will be inserted when
1996 a word is hyphenated at a line break.
1998 If the soft hyphen character does not exist in the font of the
1999 glyph immediately preceding a potential break point, then the line
2000 will not be broken at that point.
2002 Neither definitions (specified with the
2004 request) nor translations (specified with the
2006 request) are considered when finding the soft hyphen character.
2010 In a macro, shift the arguments by
2012 positions: argument\~\c
2018 will no longer be available.
2022 is missing, arguments will be shifted by\~1.
2024 Shifting by negative amounts is currently undefined.
2027 .BI .sizes\ s1\ s2\|.\|.\|.\|sn\ [0]
2028 This command is similar to the
2034 It sets the available font sizes for the current font to
2036 .IR s2 ,\|.\|.\|.\|,\~ sn
2039 The list of sizes can be terminated by an optional\~\c
2044 can also be a range of sizes
2047 Contrary to the font file command, the list can't extend over more
2051 .BI .special\ s1\ s2\|.\|.\|.\&
2055 are special and will be searched for glyphs not in the current
2058 Without arguments, reset the list of special fonts to be empty.
2061 .BI .spreadwarn\ limit
2064 emit a warning if the additional space inserted for each space between
2065 words in an output line is larger or equal to
2068 A negative value is changed to zero; no argument toggles the warning on
2069 and off without changing
2072 The default scaling indicator is\~\c
2082 .B .spreadwarn\ 0.2m
2083 will cause a warning if
2085 must add 0.2m or more for each interword space in a line.
2087 This request is active only if text is justified to both margins (using
2094 with font position\~\c
2096 A font position can be associated either with a font or with a style.
2098 The current font is the index of a font position and so is also either
2101 When it is a style, the font that is actually used is the font the
2102 name of which is the concatenation of the name of the current family
2103 and the name of the current style.
2105 For example, if the current font is\~1 and font position\~1 is
2106 associated with style\~\c
2108 and the current font family is\~\c
2114 If the current font is not a style, then the current family is ignored.
2123 are applied to a style, then they will instead be applied to the
2124 member of the current family corresponding to that style.
2126 The default family can be set with the
2134 file controls which font positions (if any) are initially associated
2135 with styles rather than fonts.
2138 .BI .substring\ xx\ n1\ [ n2 ]
2139 Replace the string named
2141 with the substring defined by the indices
2145 The first character in the string has index\~0.
2149 is omitted, it is taken to be equal to the string's length.
2155 is negative, it will be counted from the end of the string,
2158 The last character has index\~-1, the character before the last
2159 character has index\~-2, etc.
2162 .BI .tkf\ f\ s1\ n1\ s2\ n2
2163 Enable track kerning for font
2165 When the current font is
2167 the width of every glyph will be increased by an amount between
2171 when the current point size is less than or equal to
2173 the width will be increased by
2175 when it is greater than or equal to
2177 the width will be increased by
2179 when the point size is greater than or equal to
2181 and less than or equal to
2183 the increase in width is a linear function of the point size.
2191 is read in copy mode and written on the standard error, but an initial
2194 is stripped off to allow initial blanks.
2200 but without writing a final newline.
2204 Transparently output the contents of file
2206 Each line is output as if preceded by
2208 however, the lines are not subject to copy-mode interpretation.
2210 If the file does not end with a newline, then a newline will be added.
2212 For example, you can define a macro\~\c
2214 containing the contents of file\~\c
2233 request, the file cannot contain characters such as
2235 that are not legal troff input characters.
2239 This is the same as the
2241 request except that the
2243 request will use the character code (if any) before the character
2276 This is the same as the
2278 request except that the translations do not apply to text that is
2279 transparently throughput into a diversion with
2311 built-in condition false, and the
2313 built-in condition true.
2315 This undoes the effect of the
2321 This request `unformats' the diversion
2325 request, which tries to convert formatted elements of the diversion
2326 back to input tokens as much as possible,
2328 will only handle tabs and spaces between words (usually caused by
2329 spaces or newlines in the input) specially.
2331 The former are treated as if they were input tokens, and the latter
2332 are stretchable again.
2334 Note that the vertical size of lines is not preserved.
2336 Glyph information (font, font size, space width, etc.) is retained.
2338 Useful in conjunction with the
2346 Enable vertical position traps if
2348 is non-zero, disable them otherwise.
2350 Vertical position traps are traps set by the
2358 request are not vertical position traps.
2360 The parameter that controls whether vertical position traps are
2363 Initially vertical position traps are enabled.
2369 is the sum of the numbers associated with each warning that is to be
2370 enabled; all other warnings will be disabled.
2372 The number associated with each warning is listed in
2373 .BR @g@troff (@MAN1EXT@).
2377 will disable all warnings, and
2379 will disable all warnings except that about missing glyphs.
2383 is not given, all warnings will be enabled.
2387 Set the scaling indicator used in warnings to
2400 At startup, it is set to\~\c
2404 .BI .while \ c\ anything
2411 can be any condition acceptable to an
2415 can comprise multiple lines if the first line starts with
2417 and the last line ends with
2426 .BI .write\ stream\ anything
2432 must previously have been the subject of an
2436 is read in copy mode;
2442 .BI .writec\ stream\ anything
2445 but without writing a final newline.
2448 .BI .writem\ stream\ xx
2449 Write the contents of the macro or string
2454 must previously have been the subject of an
2458 is read in copy mode.
2461 .\" --------------------------------------------------------------------
2462 .SS "Extended escape sequences"
2463 .\" --------------------------------------------------------------------
2466 .BI \[rs]D' .\|.\|. '
2467 All drawing commands of groff's intermediate output are accepted.
2470 .B "Drawing Commands"
2471 below for more information.
2474 .\" --------------------------------------------------------------------
2475 .SS "Extended requests"
2476 .\" --------------------------------------------------------------------
2480 When used in a diversion, this will embed in the diversion an object
2481 which, when reread, will cause the contents of
2483 to be transparently copied through to the output.
2485 In UNIX troff, the contents of
2487 is immediately copied through to the output regardless of whether
2488 there is a current diversion; this behaviour is so anomalous that it
2489 must be considered a bug.
2499 In compatibility mode, these requests behaves similar to
2505 respectively: A `compatibility save' token is inserted at the
2506 beginning, and a `compatibility restore' token at the end, with
2507 compatibility mode switched on during execution.
2513 is not a number, this will switch to a named environment called
2515 The environment should be popped with a matching
2517 request without any arguments, just as for numbered environments.
2519 There is no limit on the number of named environments; they will be
2520 created the first time that they are referenced.
2524 When two arguments are given to the
2526 request, the second argument gives the
2527 .IR "sentence space size" .
2528 If the second argument is not given, the sentence space size
2529 will be the same as the word space size.
2531 Like the word space size, the sentence space is in units of
2532 one twelfth of the spacewidth parameter for the current font.
2534 Initially both the word space size and the sentence
2537 Contrary to UNIX troff, GNU troff handles this request in nroff mode
2538 also; a given value is then rounded down to the nearest multiple
2541 The sentence space size is used in two circumstances.
2543 If the end of a sentence occurs at the end of a line in fill mode,
2544 then both an inter-word space and a sentence space will be added; if
2545 two spaces follow the end of a sentence in the middle of a line, then
2546 the second space will be a sentence space.
2548 Note that the behaviour of UNIX troff will be exactly that exhibited
2549 by GNU troff if a second argument is never given to the
2553 In GNU troff, as in UNIX troff, you should always follow a sentence
2554 with either a newline or two spaces.
2557 .BI .ta\ n1\ n2\|.\|.\|.nn \ T\ r1\ r2\|.\|.\|.\|rn
2558 Set tabs at positions
2560 .IR n2 ,\|.\|.\|.\|,
2562 and then set tabs at
2564 .IR nn + r2 ,\|.\|.\|.\|,
2568 .IR nn + rn + r2 ,\|.\|.\|.\|,
2581 will set tabs every half an inch.
2585 .\" --------------------------------------------------------------------
2586 .SS "New number registers"
2587 .\" --------------------------------------------------------------------
2589 The following read-only registers are available:
2593 1\~if compatibility mode is in effect, 0\~otherwise.
2597 The depth of the last glyph added to the current environment.
2599 It is positive if the glyph extends below the baseline.
2603 The number of lines remaining to be centered, as set by the
2609 The height of the last glyph added to the current environment.
2611 It is positive if the glyph extends above the baseline.
2615 1\~if colors are enabled, 0\~otherwise.
2619 The skew of the last glyph added to the current environment.
2623 of a glyph is how far to the right of the center of a glyph
2624 the center of an accent over that glyph should be placed.
2628 The name or number of the current environment.
2630 This is a string-valued register.
2634 The current font family.
2636 This is a string-valued register.
2640 The current (internal) real font name.
2642 This is a string-valued register.
2644 If the current font is a style, the value of
2646 is the proper concatenation of family and style name.
2650 The number of the next free font position.
2656 Macros should use this to determine whether they are running under GNU
2661 The current height of the font as set with
2666 The current hyphenation language as set by the
2672 The number of immediately preceding consecutive hyphenated lines.
2676 The maximum allowed number of consecutive hyphenated lines, as set by
2683 The current hyphenation flags (as set by the
2689 The current hyphenation margin (as set by the
2695 The current hyphenation space (as set by the
2701 The indent that applies to the current output line.
2705 Set to a positive value if last output line is interrupted (i.e., if
2711 1\~if pairwise kerning is enabled, 0\~otherwise.
2715 The current ligature mode (as set by the
2720 .B \[rs]n[.linetabs]
2721 The current line-tabs mode (as set by the
2727 The line length that applies to the current output line.
2731 The title length as set by the
2737 The name of the current drawing color.
2739 This is a string-valued register.
2743 The name of the current background color.
2745 This is a string-valued register.
2749 The amount of space that was needed in the last
2751 request that caused a trap to be sprung.
2753 Useful in conjunction with the
2759 1\~if no-space mode is active, 0\~otherwise.
2763 1\~during a page ejection caused by the
2765 request, 0\~otherwise.
2769 The number of the next page, either the value set by a
2771 request, or the number of the current page plus\~1.
2775 The current pointsize in scaled points.
2779 The last-requested pointsize in scaled points.
2783 The current post-vertical line space as set with the
2789 The number of lines to be right-justified as set by the
2795 The slant of the current font as set with
2800 The last requested pointsize in points as a decimal fraction.
2802 This is a string-valued register.
2808 These give the values of the parameters set by the first and second
2815 The current font style.
2817 This is a string-valued register.
2821 A string representation of the current tab settings suitable for use
2822 as an argument to the
2828 The amount of vertical space truncated by the most recently sprung
2829 vertical position trap, or, if the trap was sprung by a
2831 request, minus the amount of vertical motion produced by the
2835 In other words, at the point a trap is sprung, it represents the
2836 difference of what the vertical position would have been but for the
2837 trap, and what the vertical position actually is.
2839 Useful in conjunction with the
2845 Set to 1 if in safer mode and to 0 if in unsafe mode (as given with the
2847 command line option).
2851 1\~if vertical position traps are enabled, 0\~otherwise.
2855 The sum of the numbers associated with each of the currently enabled
2858 The number associated with each warning is listed in
2859 .BR @g@troff (@MAN1EXT@).
2863 The major version number.
2865 For example, if the version number is 1.03, then
2871 The minor version number.
2873 For example, if the version number is 1.03, then
2879 The revision number of groff.
2889 These four registers are set by the
2891 request and contain the bounding box values (in PostScript units) of a
2892 given PostScript image.
2895 The following read/write registers are set by the
2907 registers, but take account of the heights and depths of glyphs.
2911 The amount of horizontal space (possibly negative) that should be
2912 added to the last glyph before a subscript.
2916 How far to right of the center of the last glyph in the
2918 argument, the center of an accent from a roman font should be placed
2922 Other available read/write number registers are:
2926 The current input line number.
2928 is a read-only alias to this register.
2932 The number of hours past midnight.
2934 Initialized at start-up.
2938 The current horizontal position at input line.
2942 The number of minutes after the hour.
2944 Initialized at start-up.
2948 The number of seconds after the minute.
2950 Initialized at start-up.
2954 The return value of the system() function executed by the last
2960 If greater than\~0, the maximum number of objects on the input stack.
2962 If less than or equal to\~0, there is no limit on the number of
2963 objects on the input stack.
2965 With no limit, recursion can continue until virtual memory is
2972 Note that the traditional
2976 is the current year minus 1900.
2979 .\" --------------------------------------------------------------------
2981 .\" --------------------------------------------------------------------
2984 predefines a single (read/write) string-based register,
2986 which contains the argument given to the
2988 command line option, namely the current output device (for example,
2992 Note that this is not the same as the (read-only) number register
2994 which is defined to be\~1 if
2998 command line option, and zero otherwise.
3000 This behaviour is different to UNIX troff.
3003 Fonts not listed in the
3005 file are automatically mounted on the next available font position
3006 when they are referenced.
3008 If a font is to be mounted explicitly with the
3010 request on an unused font position, it should be mounted on the first
3011 unused font position, which can be found in the
3015 does not enforce this strictly, it will not allow a font to be mounted
3016 at a position whose number is much greater than that of any currently
3020 Interpolating a string does not hide existing macro arguments.
3022 Thus in a macro, a more efficient way of doing
3025 .BI . xx\ \[rs]\[rs]$@
3030 .BI \[rs]\[rs]*[ xx ]\[rs]\[rs]
3033 If the font description file contains pairwise kerning information,
3034 glyphs from that font will be kerned.
3036 Kerning between two glyphs can be inhibited by placing a
3041 In a string comparison in a condition, characters that appear at
3042 different input levels to the first delimiter character will not be
3043 recognised as the second or third delimiters.
3045 This applies also to the
3051 escape sequence, a character that appears at a different input level
3052 to the starting delimiter character will not be recognised as the
3053 closing delimiter character.
3055 The same is true for
3067 When decoding a macro or string argument that is delimited by double
3068 quotes, a character that appears at a different input level to the starting
3069 delimiter character will not be recognised as the closing delimiter
3072 The implementation of
3074 ensures that the double quotes surrounding an argument will appear the
3075 same input level, which will be different to the input level of the
3078 In a long escape name
3080 will not be recognized as a closing delimiter except when it occurs at
3081 the same input level as the opening
3084 In compatibility mode, no attention is paid to the input-level.
3087 There are some new types of condition:
3091 True if there is a number register named
3096 True if there is a string, macro, diversion, or request named
3101 True if there is a color named
3106 True if there is a glyph
3112 character or a glyph (special character)
3115 .BI \[rs][ xxx ]\f[R];
3116 the condition will also be true if
3118 has been defined by the
3129 is handled as if it was opened with the
3131 request (this is, font translation and styles are applied), without
3132 actually mounting it.
3138 has been registered.
3140 Font translation is applied.
3145 request can now map characters onto
3149 It is now possible to have whitespace between the first and second dot
3150 (or the name of the ending macro) to end a macro definition.
3158 .Text .if t \[rs]{\[rs]
3160 .Text . nop Hello, I'm `bar'.
3166 .\" --------------------------------------------------------------------
3167 .SH "INTERMEDIATE OUTPUT FORMAT"
3168 .\" --------------------------------------------------------------------
3170 This section describes the format output by GNU troff.
3172 The output format used by GNU troff is very similar to that used
3173 by Unix device-independent troff.
3175 Only the differences are documented here.
3178 .\" --------------------------------------------------------------------
3180 .\" --------------------------------------------------------------------
3184 command is in scaled points (units of
3188 is the argument to the
3190 command in the DESC file).
3194 command is also in scaled points.
3197 .\" --------------------------------------------------------------------
3199 .\" --------------------------------------------------------------------
3203 Print glyph with index\~\c
3205 (a non-negative integer) of the current font.
3210 line is present in the DESC file, troff will use the following two
3216 is any sequence of characters terminated by a space or a newline (to
3217 be more precise, it is a sequence of glyphs which are accessed with
3218 the corresponding characters); the first character should be printed at
3219 the current position, the current horizontal position should be increased
3220 by the width of the first character, and so on for each character.
3222 The width of the glyph is that given in the font file,
3223 appropriately scaled for the current point size, and rounded so that
3224 it is a multiple of the horizontal resolution.
3226 Special characters cannot be printed using this command.
3232 command except that after printing each character, the current
3233 horizontal position is increased by the sum of the width of that
3238 Note that single characters can have the eighth bit set, as can the
3239 names of fonts and special characters.
3242 The names of glyphs and fonts can be of arbitrary length; drivers
3243 should not assume that they will be only two characters long.
3246 When a glyph is to be printed, that glyph will always be
3247 in the current font.
3249 Unlike device-independent troff, it is not necessary for drivers to
3250 search special fonts to find a glyph.
3253 For color support, some new commands have been added:
3256 .Text \f[B]mc \f[I]cyan magenta yellow\f[R]
3260 .Text \f[B]mg \f[I]gray\f[R]
3262 .Text \f[B]mk \f[I]cyan magenta yellow black\f[R]
3264 .Text \f[B]mr \f[I]red green blue\f[R]
3265 Set the color components of the current drawing color, using various
3269 resets the drawing color to the default value.
3271 The arguments are integers in the range 0 to 65536.
3276 device control command has been extended.
3279 .Text \f[B]x u \f[I]n\f[R]
3282 is\~1, start underlining of spaces.
3286 is\~0, stop underlining of spaces.
3288 This is needed for the
3290 request in nroff mode and is ignored otherwise.
3293 .\" --------------------------------------------------------------------
3294 .SS "Drawing Commands"
3295 .\" --------------------------------------------------------------------
3299 drawing command has been extended.
3301 These extensions will not be used by GNU pic if the
3306 .Text \f[B]Df \f[I]n\f[R]\*[ic]\[rs]n
3307 Set the shade of gray to be used for filling solid objects to
3310 must be an integer between 0 and 1000, where 0 corresponds solid white
3311 and 1000 to solid black, and values in between correspond to
3312 intermediate shades of gray.
3314 This applies only to solid circles, solid ellipses and solid
3317 By default, a level of 1000 will be used.
3319 Whatever color a solid object has, it should completely obscure
3320 everything beneath it.
3322 A value greater than 1000 or less than 0 can also be used: this means
3323 fill with the shade of gray that is currently being used for lines and
3326 Normally this will be black, but some drivers may provide a way of
3331 .BI \[rs]D'f .\|.\|. '
3332 command shouldn't be used since its argument is always rounded to an
3333 integer multiple of the horizontal resolution which can lead to
3337 .Text \f[B]DC \f[I]d\f[R]\*[ic]\[rs]n
3338 Draw a solid circle with a diameter of
3340 with the leftmost point at the current position.
3343 .Text \f[B]DE \f[I]dx dy\f[R]\*[ic]\[rs]n
3344 Draw a solid ellipse with a horizontal diameter of
3346 and a vertical diameter of
3348 with the leftmost point at the current position.
3354 .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
3355 Draw a polygon with, for $i = 1 ,..., n+1$, the
3357 vertex at the current position
3359 $+ sum from j=1 to i-1 ( dx sub j , dy sub j )$.
3361 At the moment, GNU pic only uses this command to generate triangles
3365 .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
3369 but draw a solid rather than outlined polygon.
3372 .Text \f[B]Dt \f[I]n\f[R]\*[ic]\[rs]n
3373 Set the current line thickness to
3377 Traditionally Unix troff drivers use a line thickness proportional to
3378 the current point size; drivers should continue to do this if no
3380 command has been given, or if a
3382 command has been given with a negative value of
3386 selects the smallest available line thickness.
3389 A difficulty arises in how the current position should be changed after
3390 the execution of these commands.
3392 This is not of great importance since the code generated by GNU pic
3393 does not depend on this.
3395 Given a drawing command of the form
3397 \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]
3409 Unix troff will treat each of the $x sub i$ as a horizontal quantity,
3410 and each of the $y sub i$ as a vertical quantity and will assume that
3411 the width of the drawn object is $sum from i=1 to n x sub i$,
3412 and that the height is $sum from i=1 to n y sub i$.
3414 (The assumption about the height can be seen by examining the
3418 registers after using such a
3420 command in a \[rs]w escape sequence).
3422 This rule also holds for all the original drawing commands with the
3425 For the sake of compatibility GNU troff also follows this rule, even
3426 though it produces an ugly result in the case of the
3430 and, to a lesser extent,
3434 Thus after executing a
3438 \f[B]D\f[I]c\f[R] $x sub 1$ $y sub 1$ $x sub 2$ $y sub 2$ $...$ \c
3439 $x sub n$ $y sub n$\[rs]n
3442 the current position should be increased by
3444 $( sum from i=1 to n x sub i , sum from i=1 to n y sub i )$.
3447 Another set of extensions is
3450 .Text \f[B]DFc \f[I]cyan magenta yellow\f[R]\*[ic]\[rs]n
3452 .Text \f[B]DFd\f[R]\*[ic]\[rs]n
3454 .Text \f[B]DFg \f[I]gray\f[R]\*[ic]\[rs]n
3456 .Text \f[B]DFk \f[I]cyan magenta yellow black\f[R]\*[ic]\[rs]n
3458 .Text \f[B]DFr \f[I]red green blue\f[R]\*[ic]\[rs]n
3459 Set the color components of the filling color similar to the
3464 The current position isn't changed by those colour commands (contrary to
3468 .\" --------------------------------------------------------------------
3469 .SS "Device Control Commands"
3470 .\" --------------------------------------------------------------------
3472 There is a continuation convention which permits the argument to the
3474 command to contain newlines: when outputting the argument to the
3476 command, GNU troff will follow each newline in the argument with a
3478 character (as usual, it will terminate the entire argument with a
3479 newline); thus if the line after the line containing the
3483 then the newline ending the line containing the
3485 command should be treated as part of the argument to the
3489 should be ignored, and the part of the line following the
3491 should be treated like the part of the line following the
3496 The first three output commands are guaranteed to be:
3505 .\" --------------------------------------------------------------------
3506 .SH INCOMPATIBILITIES
3507 .\" --------------------------------------------------------------------
3509 In spite of the many extensions, groff has retained compatibility to
3510 classical troff to a large degree.
3512 For the cases where the extensions lead to collisions, a special
3513 compatibility mode with the restricted, old functionality was created
3517 .\" --------------------------------------------------------------------
3518 .SS "Groff Language"
3519 .\" --------------------------------------------------------------------
3523 .B compatibility mode
3524 that allows to process roff code written for classical
3526 or for other implementations of roff in a consistent way.
3529 Compatibility mode can be turned on with the
3531 command line option, and turned on or off with the
3537 is\~1 if compatibility mode is on, 0\~otherwise.
3540 This became necessary because the GNU concept for long names causes
3541 some incompatibilities.
3548 as defining a string
3554 mode, this will be considered as a call of a macro named
3564 as references to a string or number register called
3568 takes this as the start of a long name.
3572 .IR "compatibility mode" ,
3573 groff interprets these things in the traditional way; so long
3574 names are not recognized.
3577 On the other hand, groff in
3579 does not allow to use the single-character escapes
3608 (character c) in names of strings, macros, diversions, number
3609 registers, fonts or environments, whereas
3616 escape sequence can be helpful in avoiding these escape sequences in
3620 Fractional pointsizes cause one noteworthy incompatibility.
3627 request ignores scale indicators and so
3634 will set the pointsize to 10\~points, whereas in groff native mode the
3635 pointsize will be set to 10\~scaled points.
3640 there is a fundamental difference between unformatted input
3641 characters, and formatted output characters (glyphs).
3643 Everything that affects how a glyph will be output is
3644 stored with the glyph; once a glyph has been
3645 constructed it is unaffected by any subsequent requests that are
3646 executed, including the
3656 Normally glyphs are constructed from input characters at
3657 the moment immediately before the glyph is added to the current
3660 Macros, diversions and strings are all, in fact, the same type of
3661 object; they contain lists of input characters and glyphs
3665 Special characters can be both; before being added to the output, they
3666 act as input entities, afterwards they denote glyphs.
3669 A glyph does not behave like an input character for the
3670 purposes of macro processing; it does not inherit any of the special
3671 properties that the input character from which it was constructed
3674 The following example will make things clearer.
3681 .Text \[rs]\[rs]\[rs]\[rs]
3692 this will be printed as
3694 So each pair of input backslashes
3696 is turned into a single output backslash glyph
3698 and the resulting output backslashes are not interpreted as escape
3699 characters when they are reread.
3703 would interpret them as escape characters when they were reread and
3704 would end up printing a single backslash
3708 In GNU, the correct way to get a printable version of the backslash
3713 escape sequence, but classical troff does not provide a clean feature
3714 for getting a non-syntactical backslash.
3716 A close method is the printable version of the current escape
3719 escape sequence; this works if the current escape character is not
3722 It works in both GNU mode and compatibility mode, while dirty tricks
3723 like specifying a sequence of multiple backslashes do not work
3724 reliably; for the different handling in diversions, macro definitions,
3725 or text mode quickly leads to a confusion about the necessary number of
3729 To store an escape sequence in a diversion that will be interpreted
3730 when the diversion is reread, either the traditional
3732 transparent output facility or the
3735 escape sequence can be used.
3738 .\" --------------------------------------------------------------------
3739 .SS "Intermediate Output"
3740 .\" --------------------------------------------------------------------
3742 The groff intermediate output format is in a state of evolution.
3744 So far it has some incompatibilities, but it is intended to establish
3745 a full compatibility to the classical troff output format.
3747 Actually the following incompatibilities exist:
3750 The positioning after the drawing of the polygons conflicts with the
3751 classical definition.
3754 The intermediate output cannot be rescaled to other devices as
3755 classical "device-independent" troff did.
3758 .\" --------------------------------------------------------------------
3760 .\" --------------------------------------------------------------------
3762 Copyright (C) 1989, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
3765 This document is distributed under the terms of the FDL (GNU Free
3766 Documentation License) version 1.1 or later.
3768 You should have received a copy of the FDL on your system, it is also
3769 available on-line at the
3770 .URL http://\:www.gnu.org/\:copyleft/\:fdl.html "GNU copyleft site" .
3772 This document was written by James Clark, with modifications by
3773 .MTO wl@gnu.org "Werner Lemberg"
3775 .MTO bwarken@mayn.de "Bernd Warken" .
3778 This document is part of
3780 the GNU roff distribution.
3782 Formerly, the contents of this document was kept in the manual
3784 .BR @g@troff (@MAN1EXT@).
3785 Only the parts dealing with the language aspects of the different
3787 systems were carried over into this document.
3791 command line options and warnings are still documented in
3792 .BR @g@troff (@MAN1EXT@).
3794 .\" --------------------------------------------------------------------
3796 .\" --------------------------------------------------------------------
3803 presents all groff documentation within a single document.
3806 .BR groff (@MAN1EXT@)
3807 A list of all documentation around
3811 .BR groff (@MAN7EXT@)
3812 A description of the
3814 language, including a short, but complete reference of all predefined
3815 requests, registers, and escapes of plain
3817 From the command line, this is called using
3820 .ShellCommand man\~7\~groff
3823 .BR roff (@MAN7EXT@)
3826 systems, including pointers to further historical documentation.
3831 .I Nroff/\:Troff User's Manual
3834 of 1976 in the revision of
3837 .URL http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:54.ps.gz \
3838 "classical troff documentation" .
3840 .cp \n[groff_diff_C]
3842 .\" --------------------------------------------------------------------
3844 .\" --------------------------------------------------------------------
3846 .\" Local Variables: