2 .\" The above line should force the use of eqn as a preprocessor
6 This file is part of groff, the GNU roff type-setting system.
8 Copyright (C) 1989, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
9 Free Software Foundation, Inc.
10 rewritten from scrach 2001 by Bernd Warken <bwarken@mayn.de>
12 Permission is granted to copy, distribute and/or modify this document
13 under the terms of the GNU Free Documentation License, Version 1.1 or
14 any later version published by the Free Software Foundation; with the
15 Invariant Sections being this .ig-section and AUTHORS, with no
16 Front-Cover Texts, and with no Back-Cover Texts.
18 A copy of the Free Documentation License is included as a file called
19 FDL in the main directory of the groff source package.
22 .\" --------------------------------------------------------------------
24 .\" --------------------------------------------------------------------
26 .\" ----------------- Document configuration
28 .\" Number register to decide whether the commands `{' and `}' are used
29 .\" 0: disable (actual default); 1: enable
33 Unfortunately, old versions of groff used an illogical position change
34 after some D\~commands (Dp, DP, Dt). If the number register
35 @STUPID_DRAWING_POSITIONING is 1 (actual default) then change position
36 after these commands, otherwise the position is not changed.
38 .nr @STUPID_DRAWING_POSITIONING 1
40 .\" ----------------- Semantical definitions
43 .ds @backslash \[rs]\"
44 .ds @linebreak \fR\[la]line_break\[ra]\fP\"
46 .\" Begin of macro definitions
49 .RI ( \,\\$1\/ ,\ \,\\$2\/ )\\$3
52 .offset \fI\\$1\fP\d\s-3\\$2\s+3\u \fI\\$3\fP\d\s-3\\$4\s+3\u \\$5
54 .\" format: .command <name> "<arguments>" <punctuation>
56 \fB\\$1\fP\ \fI\,\\$2\/\fP\\$3
58 .\" format: .D-command <subcommand> "<arguments>"
60 \fBD\\$1\fP\ \fI\,\\$2\/\fP\|\*[@linebreak]
63 .\" We set these as troff micromotions rather than eqn because \d and \u
64 .\" can be lifted to XML subscript/superscript tags. Don't change
65 .\" these to a parameterized string, man2html won't handle that.
66 .ds hv1 \fIh\d\s-3\&1\s+3\u\~v\d\s-3\&1\s+3\u\fP
67 .ds hv2 \fIh\d\s-3\&2\s+3\u\~v\d\s-3\&2\s+3\u\fP
68 .ds hvn \fIh\d\s-3\&n\s+3\u\~v\d\s-3\&n\s+3\u\fP
71 \fBDa\fP\ \*[hv1] \*[hv2]\|\*[@linebreak]
73 .\" graphics command .D with a variable number of arguments
74 .\" format: .D-multiarg <subcommand>
76 \fBD\\$1\fP\ \*[hv1] \*[hv2] ... \*[hvn]\|\*[@linebreak]
78 .\" format: .x-command <subname> "<arguments>"
80 \fBx\\$1\fP\ \fI\\$2\fP\|\*[@linebreak]
83 .RI "(" "\\$1" " control command)"
86 .\" End of macro definitions
89 .\" --------------------------------------------------------------------
91 .\" --------------------------------------------------------------------
93 .TH GROFF_OUT @MAN5EXT@ "@MDATE@" "Groff Version @VERSION@"
96 groff_out \- groff intermediate output format
99 .\" --------------------------------------------------------------------
101 .\" --------------------------------------------------------------------
103 This manual page describes the
104 .I intermediate output
107 text processing system
108 .BR groff (@MAN1EXT@).
110 This output is produced by a run of the GNU
111 .BR @g@troff (@MAN1EXT@)
114 It contains already all device-specific information, but it is not yet
115 fed into a device postprocessor program.
122 .BR groff (@MAN1EXT@)
123 is a wrapper program around
125 that automatically calls a
126 postprocessor, this output does not show up normally.
128 This is why it is called
136 program provides the option
138 to inhibit postprocessing, such that the produced
139 .I intermediate output
140 is sent to standard output just like calling
146 In this document, the term
148 describes what is output by the GNU
151 .I intermediate output
152 refers to the language that is accepted by the parser that prepares
153 this output for the postprocessors.
155 This parser is smarter on whitespace and implements obsolete elements
156 for compatibility, otherwise both formats are the same.
158 Both formats can be viewed directly with
159 .BR \%gxditview (@MAN1EXT@).
163 The main purpose of the
164 .I intermediate output
165 concept is to facilitate the development of postprocessors by
166 providing a common programming interface for all devices.
168 It has a language of its own that is completely different from the
169 .BR groff (@MAN7EXT@)
174 language is a high-level programming language for text processing, the
175 .I intermediate output
176 language is a kind of low-level assembler language by specifying all
177 positions on the page for writing and drawing.
184 versions are denoted as
188 .I intermediate output
191 is fairly readable, while
193 output was hard to understand because of strange habits that are
194 still supported, but not used any longer by
199 .\" --------------------------------------------------------------------
200 .SH "LANGUAGE CONCEPTS"
201 .\" --------------------------------------------------------------------
207 input is cracked down to the information on what has to be printed at
208 what position on the intended device.
210 So the language of the
211 .I intermediate output
212 format can be quite small.
214 Its only elements are commands with or without arguments.
216 In this document, the term "command" always refers to the
217 .I intermediate output
218 language, never to the
220 language used for document formatting.
222 There are commands for positioning and text writing, for drawing, and
223 for device controlling.
226 .\" --------------------------------------------------------------------
228 .\" --------------------------------------------------------------------
230 .I Classical troff output
231 had strange requirements on whitespace.
235 output parser, however, is smart about whitespace by making it
238 The whitespace characters, i.e., the
243 characters, always have a syntactical meaning.
245 They are never printable because spacing within the output is always
246 done by positioning commands.
254 characters is treated as a single
258 It separates commands and arguments, but is only required when there
259 would occur a clashing between the command code and the arguments
262 Most often, this happens when variable length command names,
263 arguments, argument lists, or command clusters meet.
265 Commands and arguments with a known, fixed length need not be
272 A line break is a syntactical element, too.
274 Every command argument can be followed by whitespace, a comment, or a
278 .I syntactical line break
279 is defined to consist of optional
281 that is optionally followed by a comment, and a newline character.
285 The normal commands, those for positioning and text, consist of a
286 single letter taking a fixed number of arguments.
288 For historical reasons, the parser allows to stack such commands on
289 the same line, but fortunately, in
290 .I groff intermediate
292 every command with at least one argument is followed by a line break,
293 thus providing excellent readability.
296 The other commands \[em] those for drawing and device controlling \[em]
297 have a more complicated structure; some recognize long command names,
298 and some take a variable number of arguments.
304 commands were designed to request a
305 .I syntactical line break
306 after their last argument.
310 has an argument that can stretch over several lines, all other
311 commands must have all of their arguments on the same line as the
312 command, i.e., the arguments may not be split by a line break.
315 Empty lines, i.e., lines containing only space and/or a comment, can
318 They are just ignored.
321 .\" --------------------------------------------------------------------
323 .\" --------------------------------------------------------------------
325 Some commands take integer arguments that are assumed to represent
326 values in a measurement unit, but the letter for the corresponding
328 is not written with the output command arguments; see
329 .BR groff (@MAN7EXT@)
332 for more on this topic.
334 Most commands assume the scale indicator\~\c
336 the basic unit of the device, some use\~\c
340 of the device, while others, such as the color commands expect plain
343 Note that these scale indicators are relative to the chosen device.
345 They are defined by the parameters specified in the device's
348 .BR groff_font (@MAN5EXT@).
352 Note that single characters can have the eighth bit set, as can the
353 names of fonts and special characters.
355 The names of characters and fonts can be of arbitrary length.
357 A character that is to be printed will always be in the current font.
361 A string argument is always terminated by the next whitespace
362 character (space, tab, or newline); an embedded
364 character is regarded as part of the argument, not as the beginning of
367 An integer argument is already terminated by the next non-digit
368 character, which then is regarded as the first character of the next
372 .\" --------------------------------------------------------------------
374 .\" --------------------------------------------------------------------
376 .I intermediate output
377 document consists of two parts, the
385 is to set the general device parameters using three exactly specified
390 is guaranteed to consist of the following three lines (in that order):
402 with the arguments set as outlined in the section
403 .BR "Device Control Commands" .
405 But the parser for the
406 .I intermediate output
407 format is able to swallow additional whitespace and comments as well.
413 is the main section for processing the document data.
415 Syntactically, it is a sequence of any commands different from the
419 Processing is terminated as soon as the first
421 command is encountered; the last line of any
422 .I groff intermediate output
423 always contains such a command.
431 A new page is started by a
434 Positioning, writing, and drawing commands are always done within the
435 current page, so they cannot occur before the first
438 Absolute positioning (by the
442 is done relative to the current page, all other positioning
443 is done relative to the current location within this page.
446 .\" --------------------------------------------------------------------
447 .SH "COMMAND REFERENCE"
448 .\" --------------------------------------------------------------------
450 This section describes all
451 .I intermediate output
452 commands, the classical commands as well as the
457 .\" --------------------------------------------------------------------
458 .SS "Comment Command"
459 .\" --------------------------------------------------------------------
462 .BI # anything \[la]end_of_line\[ra]
465 Ignore any characters from the
467 character up to the next newline character.
470 This command is the only possibility for commenting in the
474 Each comment can be preceded by arbitrary
477 every command can be terminated by a comment.
480 .\" --------------------------------------------------------------------
481 .SS "Simple Commands"
482 .\" --------------------------------------------------------------------
484 The commands in this subsection have a command code consisting of a
485 single character, taking a fixed number of arguments.
487 Most of them are commands for positioning and text writing.
489 These commands are smart about whitespace.
493 can be inserted before, after, and between the command letter and its
496 All of these commands are stackable, i.e., they can be preceded by
497 other simple commands or followed by arbitrary other commands on the
502 is only necessary when two integer arguments would clash or if the
503 preceding argument ends with a string argument.
506 .if \n[@USE_ENV_STACK]=1 \{\
509 Open a new environment by copying the actual device configuration data
510 to the environment stack.
512 The current environment is setup by the device specification and
513 manipulated by the setting commands.
518 Close the actual environment (opened by a preceding
520 and restore the previous environment from the environment
521 stack as the actual device configuration data.
523 .\} \" endif @USE_ENV_STACK
527 .command C xxx \[la]white_space\[ra]
528 Print a special groff character named
535 is necessary to allow character names of arbitrary length.
537 The character is printed at the current print position; the
538 character's size is read from the font file.
540 The print position is not changed.
547 at the current print position;
548 the character's size is read from the font file.
550 The print position is not changed.
555 Set font to font number\~\c
557 (a non-negative integer).
562 Move right to the absolute vertical position\~\c
564 (a non-negative integer in basic units\~\c
566 relative to left edge of current page.
573 (a non-negative integer) basic units\~\c
575 horizontally to the right.
578 allows negative values for
586 .command m "color_scheme \fR[\fPcomponent .\|.\|.\fR]\fP"
587 Set the color for text (glyphs), line drawing, and the outline of
588 graphic objects using different color schemes; the analoguous command
589 for the filling color of graphic objects is
592 The color components are specified as integer arguments between 0 and
595 The number of color components and their meaning vary for the
596 different color schemes.
598 These commands are generated by the
601 .BR \*[@backslash]m .
603 No position changing.
613 .command mc "cyan magenta yellow"
614 Set color using the CMY color scheme, having the 3\~color components
615 cyan, magenta, and yellow.
620 Set color to the default color value
621 (black in most cases).
623 No component arguments.
628 Set color to the shade of gray given by the argument, an integer
629 between 0 (black) and \n[@maxcolor] (white).
633 .command mk "cyan magenta yellow black"
634 Set color using the CMYK color scheme, having the 4\~color components
635 cyan, magenta, yellow, and black.
638 .command mr "red green blue"
639 Set color using the RGB color scheme, having the 3\~color components
640 red, green, and blue.
647 Print character with index\~\c
649 (an integer, normally non-negative) of the current font.
651 The print position is not changed.
655 is used, negative values are emitted also to indicate an unbreakable space
660 represents an unbreakable space which has a width of 193u.
669 Inform the device about a line break, but no positioning is done by
675 the integer arguments
679 informed about the space before and after the current line to
681 .I intermediate output
682 more human readable without performing any action.
686 they are just ignored, but they must be provided for compatibility
692 Begin a new page in the outprint.
694 The page number is set to\~\c
697 This page is completely independent of pages formerly processed even
698 if those have the same page number.
700 The vertical position on the outprint is automatically set to\~0.
702 All positioning, writing, and drawing is always done relative to a
705 must be issued before any of these commands.
728 .command t xxx \[la]white_space\[ra]
730 .command t "xxx dummy_arg" \[la]white_space\[ra]
731 Print a word, i.e., a sequence of characters
733 terminated by a space character or a line break; an optional second
734 integer argument is ignored (this allows the formatter to generate
735 an even number of arguments).
737 The first character should be printed at the current position, the
738 current horizontal position should then be increased by the width of
739 the first character, and so on for each character.
741 The widths of the characters are read from the font file, scaled for the
742 current point size, and rounded to a multiple of the horizontal
745 Special characters cannot be printed using this command (use the
747 command for named characters).
751 extension; it is only used for devices whose
756 .BR groff_font (@MAN5EXT@).
760 .command u "n xxx" \[la]white_space\[ra]
761 Print word with track kerning.
763 This is the same as the
765 command except that after printing each character, the current
766 horizontal position is increased by the sum of the width of that
774 extension; it is only used for devices whose
779 .BR groff_font (@MAN5EXT@).
784 Move down to the absolute vertical position\~\c
786 (a non-negative integer in basic units\~\c
788 relative to upper edge of current page.
799 is a non-negative integer).
802 allows negative values for
811 Informs about a paddable whitespace to increase readability.
813 The spacing itself must be performed explicitly by a move command.
816 .\" --------------------------------------------------------------------
817 .SS "Graphics Commands"
818 .\" --------------------------------------------------------------------
820 Each graphics or drawing command in the
821 .I intermediate output
822 starts with the letter\~\c
824 followed by one or two characters that specify a subcommand; this
825 is followed by a fixed or variable number of integer arguments that
826 are separated by a single space character.
831 may not be followed by another command on the same line (apart from a
842 output follows the classical spacing rules (no space between command
843 and subcommand, all arguments are preceded by a single space
844 character), but the parser allows optional space between the command
845 letters and makes the space before the first argument optional.
847 As usual, each space can be any sequence of tab and space characters.
851 Some graphics commands can take a variable number of arguments.
853 In this case, they are integers representing a size measured in basic
860 stand for horizontal distances where positive means right, negative
866 stand for vertical distances where positive means down, negative up.
868 All these distances are offsets relative to the current location.
872 Unless indicated otherwise, each graphics command directly corresponds
877 .BR groff (@MAN7EXT@).
883 \~commands are assumed to be device-specific.
885 Its arguments are parsed as strings; the whole information is then
886 sent to the postprocessor.
890 In the following command reference, the syntax element
891 .I \[la]line_break\[ra]
893 .I syntactical line break
894 as defined in section
900 Draw B-spline from current position to offset
901 .indexed_offset h 1 v 1 ,
903 .indexed_offset h 2 v 2
904 if given, etc.\& up to
905 .indexed_offset h n v n .
906 This command takes a variable number of argument pairs; the current
907 position is moved to the terminal point of the drawn curve.
912 Draw arc from current position to
913 .indexed_offset h 1 v 1 \|+\|\c
914 .indexed_offset h 2 v 2
916 .indexed_offset h 1 v 1 ;
917 then move the current position to the final point of the arc.
923 .D-command C "d dummy_arg"
924 Draw a solid circle using the current fill color with diameter\~\c
926 (integer in basic units\~\c
928 with leftmost point at the current position; then move the current
929 position to the rightmost point of the circle.
931 An optional second integer argument is ignored (this allows to the
932 formatter to generate an even number of arguments).
941 Draw circle line with diameter\~\c
943 (integer in basic units\~\c
945 with leftmost point at the current position; then move the current
946 position to the rightmost point of the circle.
951 Draw a solid ellipse in the current fill color with a horizontal
954 and a vertical diameter of\~\c
956 (both integers in basic units\~\c
958 with the leftmost point at the current position; then move to the
959 rightmost point of the ellipse.
968 Draw an outlined ellipse with a horizontal diameter of\~\c
970 and a vertical diameter of\~\c
972 (both integers in basic units\~\c
974 with the leftmost point at current position; then move to the
975 rightmost point of the ellipse.
979 .D-command F "color_scheme \fR[\fPcomponent .\|.\|.\fR]\fP"
980 Set fill color for solid drawing objects using different color
981 schemes; the analoguous command for setting the color of text, line
982 graphics, and the outline of graphic objects is
985 The color components are specified as integer arguments between 0 and
988 The number of color components and their meaning vary for the
989 different color schemes.
991 These commands are generated by the
994 .B \*[@backslash]D'F\ .\|.\|.'
997 (with no other corresponding graphics commands).
999 No position changing.
1009 .D-command Fc "cyan magenta yellow"
1010 Set fill color for solid drawing objects using the CMY color scheme,
1011 having the 3\~color components cyan, magenta, and yellow.
1016 Set fill color for solid drawing objects to the default fill color value
1017 (black in most cases).
1019 No component arguments.
1023 .D-command Fg "gray"
1024 Set fill color for solid drawing objects to the shade of gray given by
1025 the argument, an integer between 0 (black) and \n[@maxcolor] (white).
1029 .D-command Fk "cyan magenta yellow black"
1030 Set fill color for solid drawing objects using the CMYK color scheme,
1031 having the 4\~color components cyan, magenta, yellow, and black.
1034 .D-command Fr "red green blue"
1035 Set fill color for solid drawing objects using the RGB color scheme,
1036 having the 3\~color components red, green, and blue.
1045 must be an integer in the range -32767 to 32767.
1049 .RI "0 \[<=] " n " \[<=] 1000"
1050 Set the color for filling solid drawing objects to a shade of gray,
1051 where 0 corresponds to solid white, 1000 (the default) to solid black,
1052 and values in between to intermediate shades of gray; this is
1053 obsoleted by command
1057 .IR n " < 0 or " n " > 1000"
1058 Set the filling color to the color that is currently being used for
1059 the text and the outline, see command
1061 For example, the command sequence
1067 mg 0 0 \n[@maxcolor]
1073 sets all colors to blue.
1078 No position changing.
1089 Draw line from current position to offset
1091 (integers in basic units\~\c
1093 then set current position to the end of the drawn line.
1098 Draw a polygon line from current position to offset
1100 from there to offset
1104 and from there back to the starting position.
1106 .ie \n[@STUPID_DRAWING_POSITIONING]=1 \{\
1107 For historical reasons, the position is changed by adding the sum of
1108 all arguments with odd index to the actual horizontal position and the
1109 even ones to the vertical position.
1111 Although this doesn't make sense it is kept for compatibility.
1115 As the polygon is closed, the end of drawing is the starting point, so
1116 the position doesn't change.
1126 The same macro as the corresponding
1128 command with the same arguments, but draws a solid polygon in the
1129 current fill color rather than an outlined polygon.
1131 .ie \n[@STUPID_DRAWING_POSITIONING]=1 \{\
1132 The position is changed in the same way as with
1136 No position changing.
1145 Set the current line thickness to\~\c
1147 (an integer in basic units\~\c
1153 select the smallest available line thickness; if
1155 set the line thickness proportional to the point size (this is the
1156 default before the first
1158 command was specified).
1160 .ie \n[@STUPID_DRAWING_POSITIONING]=1 \{\
1161 For historical reasons, the horizontal position is changed by adding
1162 the argument to the actual horizontal position, while the vertical
1163 position is not changed.
1165 Although this doesn't make sense it is kept for compatibility.
1169 No position changing.
1176 .\" --------------------------------------------------------------------
1177 .SS "Device Control Commands"
1178 .\" --------------------------------------------------------------------
1180 Each device control command starts with the letter
1182 followed by a space character (optional or arbitrary space/\:tab in
1184 and a subcommand letter or word; each argument (if any) must be
1191 commands are terminated by a
1192 .IR "syntactical line break" ;
1193 no device control command can be followed by another command on the same
1194 line (except a comment).
1197 The subcommand is basically a single letter, but to increase
1198 readability, it can be written as a word, i.e., an arbitrary sequence
1199 of characters terminated by the next tab, space, or newline character.
1201 All characters of the subcommand word but the first are simply ignored.
1205 outputs the initialization command
1209 and the resolution command
1218 resp.\& are accepted as well to mean the same commands.
1221 In the following, the syntax element
1222 .I \[la]line_break\[ra]
1224 .I syntactical line break
1225 as defined in section
1233 as the intended name for the current file in error reports.
1235 This is useful for remembering the original file name when
1237 uses an internal piping mechanism.
1239 The input file is not changed by this command.
1249 Mount font position\~\c
1251 (a non-negative integer) with font named\~\c
1255 .BR groff_font (@MAN5EXT@).
1261 Set character height to\~\c
1263 (a positive integer in scaled points\~\c
1267 used the unit points (\c
1269 instead; see section
1278 This is the third command of the
1287 The classical documentation reads
1288 .I pause device, can be
1293 .x-command r "n\ h\ v"
1299 is the minimal horizontal motion, and
1301 the minimal vertical motion possible with this device; all arguments
1302 are positive integers in basic units\~\c
1306 This is the second command of the
1315 degrees (an integer in basic units\~\c
1322 Terminates the processing of the current file; issued as the last
1324 .I intermediate @g@troff
1331 Generate trailer information, if any.
1335 this is actually just ignored.
1341 Set name of device to word
1343 a sequence of characters ended by the next whitespace character.
1345 The possible device names coincide with those from the groff
1349 This is the first command of the
1356 Configure underlining of spaces.
1360 is\~1, start underlining of spaces;
1363 is\~0, stop underlining of spaces.
1365 This is needed for the
1369 mode and is ignored otherwise.
1377 .x-command X anything
1381 uninterpreted to the device.
1383 If the line following this command starts with a
1385 character this line is interpreted as a continuation line in the
1390 is ignored, but a newline character is sent instead to the device, the
1391 rest of the line is sent uninterpreted.
1393 The same applies to all following lines until the first character of a
1398 This command is generated by the
1401 .BR \*[@backslash]X .
1403 The line-continuing feature is a
1408 .\" --------------------------------------------------------------------
1409 .SS "Obsolete Command"
1410 .\" --------------------------------------------------------------------
1414 output, the writing of a single character was mostly done by a very
1415 strange command that combined a horizontal move and the printing of a
1418 It didn't have a command code, but is represented by a 3-character
1419 argument consisting of exactly 2\~digits and a character.
1425 (exactly two decimal digits) basic units\~\c
1427 then print character\~\c
1436 .I syntactical space
1437 around and within this command is allowed to be added.
1439 Only when a preceding command on the same line ends with an argument
1440 of variable length a separating space is obligatory.
1445 large clusters of these and other commands were used, mostly without
1446 spaces; this made such output almost unreadable.
1452 For modern high-resolution devices, this command does not make sense
1453 because the width of the characters can become much larger than two
1458 this is only used for the devices
1470 provide a better functionality.
1473 .\" --------------------------------------------------------------------
1474 .SH "POSTPROCESSING"
1475 .\" --------------------------------------------------------------------
1479 postprocessors are programs that have the task to translate the
1480 .I intermediate output
1481 into actions that are sent to a device.
1483 A device can be some piece of hardware such as a printer, or a software
1484 file format suitable for graphical or text processing.
1488 system provides powerful means that make the programming of such
1489 postprocessors an easy task.
1491 There is a library function that parses the
1492 .I intermediate output
1493 and sends the information obtained to the device via methods of a
1494 class with a common interface for each device.
1498 postprocessor must only redefine the methods of this class.
1500 For details, see the reference in section
1504 .\" --------------------------------------------------------------------
1506 .\" --------------------------------------------------------------------
1508 This section presents the
1509 .I intermediate output
1510 generated from the same input for three different devices.
1512 The input is the sentence
1516 on the command line.
1520 High-resolution device
1527 \fBshell>\fP echo "hell world" | groff -Z -T ps
1558 This output can be fed into the postprocessor
1559 .BR grops (@MAN1EXT@)
1560 to get its representation as a PostScript file.
1564 Low-resolution device
1570 This is similar to the high-resolution device except that the
1571 positioning is done at a minor scale.
1573 Some comments (lines starting with
1575 were added for clarification; they were not generated by the
1581 \fBshell>\fP "hell world" | groff -Z -T latin1
1592 .I "# begin a new page"
1600 .I "# initial positioning on the page"
1604 .I "# write text `hell'"
1607 .I "# inform about a space, and do it by a horizontal jump"
1610 .I "# write text `world'"
1613 .I "# announce line break, but do nothing because ..."
1616 .I "# ... the end of the document has been reached"
1627 This output can be fed into the postprocessor
1628 .BR grotty (@MAN1EXT@)
1629 to get a formatted text document.
1633 Classical style output
1638 As a computer monitor has a very low resolution compared to modern
1640 .I intermediate output
1641 for the X\~devices can use the jump-and-write command with its 2-digit
1647 \fBshell>\fP "hell world" | groff -Z -T X100
1663 .I "# write text with old-style jump-and-write command"
1665 ch07e07l03lw06w11o07r05l03dh7
1676 This output can be fed into the postprocessor
1679 .BR \%gxditview (@MAN1EXT@)
1680 for displaying in\~X.
1684 Due to the obsolete jump-and-write command, the text clusters in the
1685 classical output are almost unreadable.
1688 .\" --------------------------------------------------------------------
1690 .\" --------------------------------------------------------------------
1693 .I intermediate output
1696 was first documented in
1700 .I groff intermediate output
1701 format is compatible with this specification except for the following
1706 The classical quasi device independence is not yet implemented.
1710 The old hardware was very different from what we use today.
1714 devices are also fundamentally different from the ones in
1718 For example, the classical PostScript device was called
1720 and had a resolution of 720 units per inch,
1724 device has a resolution of 72000 units per inch.
1726 Maybe, by implementing some rescaling mechanism similar to the
1727 classical quasi device independence, these could be integrated into
1733 The B-spline command
1735 is correctly handled by the
1736 .I intermediate output
1737 parser, but the drawing routines aren't implemented in some of the
1738 postprocessor programs.
1742 The argument of the commands
1746 has the implicit unit scaled point\~\c
1755 This isn't an incompatibility, but a compatible extension, for both
1756 units coincide for all devices without a
1758 parameter, including all classical and the
1764 devices with a sizescale parameter either did not exist, had a
1765 different name, or seem to have had a different resolution.
1767 So conflicts with classical devices are very unlikely.
1770 .ie \n[@STUPID_DRAWING_POSITIONING]=1 \{\
1772 The position changing after the commands
1777 is illogical, but as old versions of groff used this feature it is
1778 kept for compatibility reasons.
1779 .\} \" @STUPID_DRAWING_POSITIONING
1782 Temporarily, there existed some confusion on the positioning after the
1788 This has been clarified by establishing the classical rule for all
1789 groff drawing commands:
1795 The position after a graphic object has been drawn is at its end;
1796 for circles and ellipses, the "end" is at the right side.
1802 From this, the positionings specified for the drawing commands above
1803 follow quite naturally.
1804 .\} \" @STUPID_DRAWING_POSITIONING
1807 The differences between
1812 .BR groff_diff (@MAN7EXT@).
1815 .\" --------------------------------------------------------------------
1817 .\" --------------------------------------------------------------------
1820 .BI @FONTDIR@/dev name /DESC
1821 Device description file for device
1825 .IB \[la]groff_source_dir\[ra] /src/libs/libdriver/input.cpp
1826 Defines the parser and postprocessor for the
1830 It is located relative to the top directory of the
1835 This parser is the definitive specification of the
1836 .I groff intermediate output
1840 .\" --------------------------------------------------------------------
1842 .\" --------------------------------------------------------------------
1845 .BR groff (@MAN7EXT@)
1846 refers to a manual page; here
1850 of the man-page documentation system.
1852 To read the example, look up section\~@MAN7EXT@ in your desktop help
1853 system or call from the shell prompt
1859 \fBshell>\fP man @MAN7EXT@ groff
1865 For more details, see
1870 .BR groff (@MAN1EXT@)
1873 and further readings on groff.
1877 .BR groff (@MAN7EXT@)
1880 language such as numerical units and escape sequences.
1884 .BR groff_font (@MAN5EXT@)
1885 for details on the device scaling parameters of the
1891 .BR @g@troff (@MAN1EXT@)
1892 generates the device-independent intermediate output.
1896 .BR roff (@MAN7EXT@)
1897 for historical aspects and the general structure of roff systems.
1901 .BR groff_diff (@MAN7EXT@)
1902 The differences between the intermediate output in groff and classical
1907 .BR gxditview (@MAN1EXT@)
1914 .BR \%grodvi (@MAN1EXT@),
1915 .BR \%grohtml (@MAN1EXT@),
1916 .BR \%grolbp (@MAN1EXT@),
1917 .BR \%grolj4 (@MAN1EXT@),
1918 .BR \%grops (@MAN1EXT@),
1919 .BR \%grotty (@MAN1EXT@)
1922 the groff postprocessor programs.
1927 For a treatment of all aspects of the groff system within a single
1932 It can be read within the integrated help systems, within
1934 or from the shell prompt by
1938 \fBshell>\fP info groff
1945 .I classical troff output language
1946 is described in two AT&T Bell Labs CSTR documents available on-line at
1947 .UR http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr.html
1954 .I A Typesetter-independent TROFF
1957 is the original and most comprehensive documentation on the output
1959 .UR http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:97.ps.gz
1966 The 1992 revision of the
1967 .I Nroff/\:Troff User's Manual
1969 .I J.\& F.\& Ossanna
1972 isn't as comprehensive as
1974 regarding the output language; see
1975 .UR http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:54.ps.gz
1980 .\" --------------------------------------------------------------------
1982 .\" --------------------------------------------------------------------
1984 Copyright (C) 1989, 2001, 2002, 2003, 2004, 2005, 2006, 2007
1985 Free Software Foundation, Inc.
1989 This document is distributed under the terms of the FDL (GNU Free
1990 Documentation License) version 1.1 or later.
1992 You should have received a copy of the FDL with this package; it is also
1993 available on-line at the
1994 .UR http://\:www.gnu.org/\:copyleft/\:fdl.html
2000 This document is part of
2006 It is based on a former version \- published under the GPL \- that
2007 described only parts of the
2009 extensions of the output language.
2011 It was rewritten in 2002 by Bernd Warken and is
2017 .\" --------------------------------------------------------------------
2019 .\" --------------------------------------------------------------------
2021 .\" Local Variables: