Deleted Added
full compact
groff_out.man (114409) groff_out.man (151502)
1'\" e
2.\" The above line should force the use of eqn as a preprocessor
3.ig
4groff_out.5
5
1'\" e
2.\" The above line should force the use of eqn as a preprocessor
3.ig
4groff_out.5
5
6Last update: 13 Apr 2003
6Last update: 2 Jul 2005
7
8This file is part of groff, the GNU roff type-setting system.
9
7
8This file is part of groff, the GNU roff type-setting system.
9
10Copyright (C) 1989, 2001, 2002, 2003 Free Software Foundation, Inc.
10Copyright (C) 1989, 2001, 2002, 2003, 2004, 2005
11Free Software Foundation, Inc.
11rewritten from scrach 2001 by Bernd Warken <bwarken@mayn.de>
12
13Permission is granted to copy, distribute and/or modify this document
14under the terms of the GNU Free Documentation License, Version 1.1 or
15any later version published by the Free Software Foundation; with the
16Invariant Sections being this .ig-section and AUTHORS, with no
17Front-Cover Texts, and with no Back-Cover Texts.
18
19A copy of the Free Documentation License is included as a file called
20FDL in the main directory of the groff source package.
21..
22.
23.\" --------------------------------------------------------------------
24.\" Setup
25.\" --------------------------------------------------------------------
26.
12rewritten from scrach 2001 by Bernd Warken <bwarken@mayn.de>
13
14Permission is granted to copy, distribute and/or modify this document
15under the terms of the GNU Free Documentation License, Version 1.1 or
16any later version published by the Free Software Foundation; with the
17Invariant Sections being this .ig-section and AUTHORS, with no
18Front-Cover Texts, and with no Back-Cover Texts.
19
20A copy of the Free Documentation License is included as a file called
21FDL in the main directory of the groff source package.
22..
23.
24.\" --------------------------------------------------------------------
25.\" Setup
26.\" --------------------------------------------------------------------
27.
28.do nr groff_out_C \n[.C]
29.cp 0
30.
27.mso www.tmac
28.
29.if n \{\
30. mso tty-char.tmac
31. ftr CR R
32. ftr CI I
33. ftr CB B
34.\}
35.
36.if '\*[.T]'dvi' \
37. ftr CB CW
38.
39.if t \{\
40.EQ
41delim $$
42.EN
43.\}
44.
45.\" ----------------- Document configuration
46.
47.\" Number register to decide whether the commands `{' and `}' are used
48.\" 0: disable (actual default); 1: enable
49.nr @USE_ENV_STACK 0
50.
51.ig
52Unfortunately, old versions of groff used an illogical position change
53after some D\~commands (Dp, DP, Dt). If the number register
54@STUPID_DRAWING_POSITIONING is 1 (actual default) then change position
55after these commands, otherwise the position is not changed.
56..
57.nr @STUPID_DRAWING_POSITIONING 1
58.
59.\" ----------------- Syntactical definitions
60.
61.\" comments when escapes are switched off
62.de c
63..
64.\" Begin of macro definitions
65.eo
66.
67.de Text
68. nop \)\$*
69..
70.c follow-up line for a .TP header
71.de TP+
72. br
73. ns
74. TP \$1
75..
76.c a bulleted paragraph
77.de Topic
78. TP 2m
79. nop \[bu]
80..
81.de ShellCommand
82. br
83. IR "shell>" "\h'1m'\f[CB]\$*\f[]\/"
84..
85.ec
86.\" End of macro definitions
87.
88.c ----------------- Semantical definitions
89.
90.nr @maxcolor 65536
91.ds @backslash \[rs]\"
92.ds @linebreak \f[R]\[la]line_break\[ra]\f[]\"
93.
94.\" Begin of macro definitions
95.eo
96.
97.c format: .unit <letter> <punctuation>
98.de unit
99. BR \$@
100..
101.c argument in italic with punctuation
102.de argument
103. if (\n[.$] == 0) \
104. return
105. IR \$@
106..
107.c comma separated list of indexed variables
108.de list1..n
109. ds @arg1 \$1\"
110. nop \c
111. ie t \
112. nop $\*[@arg1] sub 1$, $\*[@arg1] sub 2$, .\|.\|., $\*[@arg1] sub n$ \c
113. el \{\
114. IR \*[@arg1]1 ,
115. IR \*[@arg1]2 ,
116. nop \&...,
117. I \*[@arg1]n
118. \}
119. rm @arg1
120..
121.de offset
122. if (\n[.$] < 2) \
123. ab `.offset' needs at least 2 arguments
124. ds @arg1 \$1\"
125. ds @arg2 \$2\"
126. shift 2
127. nop (\f[I]\,\*[@arg1]\/\f[],\ \f[I]\,\*[@arg2]\/\f[])\$*
128. rm @arg1
129. rm @arg2
130..
131.de indexed_offset
132. if (\n[.$] < 4) \
133. ab `.indexed_offset' needs at least 4 arguments
134. ds @arg1 \$1\"
135. ds @index1 \$2\"
136. ds @arg2 \$3\"
137. ds @index2 \$4\"
138. shift 4
139. ie t \{\
140. ie \B'\*[@index1]' \{\
141. nop ($\*[@arg1] sub roman \*[@index1]$,\ \c
142. \}
143. el \{\
144. nop ($\*[@arg1] sub \*[@index1]$,\ \c
145. \}
146. ie \B'\*[@index2]' \{\
147. nop $\*[@arg2] sub roman \*[@index2]$)\$* \c
148. \}
149. el \{\
150. nop $\*[@arg2] sub \*[@index2]$)\$* \c
151. \}
152. \}
153. el \{\
154. nop (\f[I]\*[@arg1]\*[@index1]\f[],\ \c
155. nop \f[I]\*[@arg2]\*[@index2]\f[])\$* \c
156. \}
157. rm @arg1
158. rm @arg2
159. rm @index1
160. rm @index2
161..
162.c format: .command <name> "<arguments>" <punctuation>
163.de command
164. ds @arg1 \$1\"
165. ds @arg2 \$2\"
166. shift 2
167. IP "\f[B]\*[@arg1]\f[]\ \f[I]\,\*[@arg2]\/\f[]\$*"
168. rm @arg1
169. rm @arg2
170..
171.c format: .command+ <name> "<arguments>" <punctuation>
172.c continue previous .command heading
173.de command+
174. ds @arg1 \$1\"
175. ds @arg2 \$2\"
176. shift 2
177. TP+
178. Text "\f[B]\*[@arg1]\f[]\ \f[I]\,\*[@arg2]\/\f[]\$*"
179. rm @arg1
180. rm @arg2
181..
182.c format: .D-command <subcommand> "<arguments>"
183.de D-command
184. ds @sub \$1\"
185. shift 1
186. IP "\f[B]D\*[@sub]\f[]\ \f[I]\,\$*\/\f[]\|\*[@linebreak]"
187. rm @sub
188..
189.c format: .D-command+ <subcommand> "<arguments>"
190.c continue previous .D-command heading
191.de D-command+
192. ds @sub \$1\"
193. shift 1
194. TP+
195. Text "\f[B]D\*[@sub]\f[]\ \f[I]\,\$*\/\f[]\*[@linebreak]"
196. rm @sub
197..
198.de Da-command
199. shift 1
200. ie t \
201. ds @args $h sub 1$\~$v sub 1$ $h sub 2$\~$v sub 2$\"
202. el \
203. ds @args \f[I]h1\~v1 h2\~v2\f[]\"
204. IP "\f[B]Da\f[]\ \*[@args]\|\*[@linebreak]"
205. rm @args
206..
207.c graphics command .D with a variable number of arguments
208.c format: .D-multiarg <subcommand>
209.de D-multiarg
210. ds @sub \$1\"
211. shift 1
212. ie t \{\
213. ds @args "$h sub 1$\~$v sub 1$ $h sub 2$\~$v sub 2$ .\|.\|. \"
214. as @args "$h sub n$\~$v sub n$\"
215. \}
216. el \
217. ds @args \f[I]h1\~v1 h2\~v2\f[] ... \f[I]\,hn\~vn\f[]\"
218. IP "\f[B]D\*[@sub]\f[]\ \*[@args]\|\*[@linebreak]"
219. rm @args
220. rm @sub
221..
222.c format: .x-command <subname> "<arguments>"
223.de x-command
224. ds @sub \$1\"
225. shift 1
226. ds @args
227. if (\n[.$] > 0) \
228. ds @args \ \f[I]\,\$*\/\f[]\"
229. IP "\f[B]x\*[@sub]\f[]\*[@args]\f[]\|\*[@linebreak]"
230. rm @sub
231. rm @args
232..
233.de xsub
234. RI "(" "\$1" " control command)"
235. br
236..
237.ec
238.\" End of macro definitions
239.
240.
241.\" --------------------------------------------------------------------
242.\" Title
243.\" --------------------------------------------------------------------
244.
245.TH GROFF_OUT @MAN5EXT@ "@MDATE@" "Groff Version @VERSION@"
246.
247.SH NAME
248groff_out \- groff intermediate output format
249.
250.
251.\" --------------------------------------------------------------------
252.SH DESCRIPTION
253.\" --------------------------------------------------------------------
254.
31.mso www.tmac
32.
33.if n \{\
34. mso tty-char.tmac
35. ftr CR R
36. ftr CI I
37. ftr CB B
38.\}
39.
40.if '\*[.T]'dvi' \
41. ftr CB CW
42.
43.if t \{\
44.EQ
45delim $$
46.EN
47.\}
48.
49.\" ----------------- Document configuration
50.
51.\" Number register to decide whether the commands `{' and `}' are used
52.\" 0: disable (actual default); 1: enable
53.nr @USE_ENV_STACK 0
54.
55.ig
56Unfortunately, old versions of groff used an illogical position change
57after some D\~commands (Dp, DP, Dt). If the number register
58@STUPID_DRAWING_POSITIONING is 1 (actual default) then change position
59after these commands, otherwise the position is not changed.
60..
61.nr @STUPID_DRAWING_POSITIONING 1
62.
63.\" ----------------- Syntactical definitions
64.
65.\" comments when escapes are switched off
66.de c
67..
68.\" Begin of macro definitions
69.eo
70.
71.de Text
72. nop \)\$*
73..
74.c follow-up line for a .TP header
75.de TP+
76. br
77. ns
78. TP \$1
79..
80.c a bulleted paragraph
81.de Topic
82. TP 2m
83. nop \[bu]
84..
85.de ShellCommand
86. br
87. IR "shell>" "\h'1m'\f[CB]\$*\f[]\/"
88..
89.ec
90.\" End of macro definitions
91.
92.c ----------------- Semantical definitions
93.
94.nr @maxcolor 65536
95.ds @backslash \[rs]\"
96.ds @linebreak \f[R]\[la]line_break\[ra]\f[]\"
97.
98.\" Begin of macro definitions
99.eo
100.
101.c format: .unit <letter> <punctuation>
102.de unit
103. BR \$@
104..
105.c argument in italic with punctuation
106.de argument
107. if (\n[.$] == 0) \
108. return
109. IR \$@
110..
111.c comma separated list of indexed variables
112.de list1..n
113. ds @arg1 \$1\"
114. nop \c
115. ie t \
116. nop $\*[@arg1] sub 1$, $\*[@arg1] sub 2$, .\|.\|., $\*[@arg1] sub n$ \c
117. el \{\
118. IR \*[@arg1]1 ,
119. IR \*[@arg1]2 ,
120. nop \&...,
121. I \*[@arg1]n
122. \}
123. rm @arg1
124..
125.de offset
126. if (\n[.$] < 2) \
127. ab `.offset' needs at least 2 arguments
128. ds @arg1 \$1\"
129. ds @arg2 \$2\"
130. shift 2
131. nop (\f[I]\,\*[@arg1]\/\f[],\ \f[I]\,\*[@arg2]\/\f[])\$*
132. rm @arg1
133. rm @arg2
134..
135.de indexed_offset
136. if (\n[.$] < 4) \
137. ab `.indexed_offset' needs at least 4 arguments
138. ds @arg1 \$1\"
139. ds @index1 \$2\"
140. ds @arg2 \$3\"
141. ds @index2 \$4\"
142. shift 4
143. ie t \{\
144. ie \B'\*[@index1]' \{\
145. nop ($\*[@arg1] sub roman \*[@index1]$,\ \c
146. \}
147. el \{\
148. nop ($\*[@arg1] sub \*[@index1]$,\ \c
149. \}
150. ie \B'\*[@index2]' \{\
151. nop $\*[@arg2] sub roman \*[@index2]$)\$* \c
152. \}
153. el \{\
154. nop $\*[@arg2] sub \*[@index2]$)\$* \c
155. \}
156. \}
157. el \{\
158. nop (\f[I]\*[@arg1]\*[@index1]\f[],\ \c
159. nop \f[I]\*[@arg2]\*[@index2]\f[])\$* \c
160. \}
161. rm @arg1
162. rm @arg2
163. rm @index1
164. rm @index2
165..
166.c format: .command <name> "<arguments>" <punctuation>
167.de command
168. ds @arg1 \$1\"
169. ds @arg2 \$2\"
170. shift 2
171. IP "\f[B]\*[@arg1]\f[]\ \f[I]\,\*[@arg2]\/\f[]\$*"
172. rm @arg1
173. rm @arg2
174..
175.c format: .command+ <name> "<arguments>" <punctuation>
176.c continue previous .command heading
177.de command+
178. ds @arg1 \$1\"
179. ds @arg2 \$2\"
180. shift 2
181. TP+
182. Text "\f[B]\*[@arg1]\f[]\ \f[I]\,\*[@arg2]\/\f[]\$*"
183. rm @arg1
184. rm @arg2
185..
186.c format: .D-command <subcommand> "<arguments>"
187.de D-command
188. ds @sub \$1\"
189. shift 1
190. IP "\f[B]D\*[@sub]\f[]\ \f[I]\,\$*\/\f[]\|\*[@linebreak]"
191. rm @sub
192..
193.c format: .D-command+ <subcommand> "<arguments>"
194.c continue previous .D-command heading
195.de D-command+
196. ds @sub \$1\"
197. shift 1
198. TP+
199. Text "\f[B]D\*[@sub]\f[]\ \f[I]\,\$*\/\f[]\*[@linebreak]"
200. rm @sub
201..
202.de Da-command
203. shift 1
204. ie t \
205. ds @args $h sub 1$\~$v sub 1$ $h sub 2$\~$v sub 2$\"
206. el \
207. ds @args \f[I]h1\~v1 h2\~v2\f[]\"
208. IP "\f[B]Da\f[]\ \*[@args]\|\*[@linebreak]"
209. rm @args
210..
211.c graphics command .D with a variable number of arguments
212.c format: .D-multiarg <subcommand>
213.de D-multiarg
214. ds @sub \$1\"
215. shift 1
216. ie t \{\
217. ds @args "$h sub 1$\~$v sub 1$ $h sub 2$\~$v sub 2$ .\|.\|. \"
218. as @args "$h sub n$\~$v sub n$\"
219. \}
220. el \
221. ds @args \f[I]h1\~v1 h2\~v2\f[] ... \f[I]\,hn\~vn\f[]\"
222. IP "\f[B]D\*[@sub]\f[]\ \*[@args]\|\*[@linebreak]"
223. rm @args
224. rm @sub
225..
226.c format: .x-command <subname> "<arguments>"
227.de x-command
228. ds @sub \$1\"
229. shift 1
230. ds @args
231. if (\n[.$] > 0) \
232. ds @args \ \f[I]\,\$*\/\f[]\"
233. IP "\f[B]x\*[@sub]\f[]\*[@args]\f[]\|\*[@linebreak]"
234. rm @sub
235. rm @args
236..
237.de xsub
238. RI "(" "\$1" " control command)"
239. br
240..
241.ec
242.\" End of macro definitions
243.
244.
245.\" --------------------------------------------------------------------
246.\" Title
247.\" --------------------------------------------------------------------
248.
249.TH GROFF_OUT @MAN5EXT@ "@MDATE@" "Groff Version @VERSION@"
250.
251.SH NAME
252groff_out \- groff intermediate output format
253.
254.
255.\" --------------------------------------------------------------------
256.SH DESCRIPTION
257.\" --------------------------------------------------------------------
258.
255This manual page describes the intermediate output format of the GNU
259This manual page describes the
260.I intermediate output
261format of the GNU
256.BR roff (@MAN7EXT@)
262.BR roff (@MAN7EXT@)
257text processing system.
263text processing system
264.BR groff (@MAN1EXT@).
258.
259This output is produced by a run of the GNU
265.
266This output is produced by a run of the GNU
260.BR troff (@MAN1EXT@)
261program before it is fed into a device postprocessor program.
267.BR @g@troff (@MAN1EXT@)
268program.
262.
269.
270It contains already all device-specific information, but it is not yet
271fed into a device postprocessor program.
272.
273.
263.P
274.P
264As the GNU roff processor
275As the GNU
276.I roff
277processor
265.BR groff (@MAN1EXT@)
278.BR groff (@MAN1EXT@)
266is a wrapper program around troff that automatically calls a
279is a wrapper program around
280.B @g@troff
281that automatically calls a
267postprocessor, this output does not show up normally.
268.
269This is why it is called
270.I intermediate
271within the
272.I groff
273.IR system .
274.
275The
276.B groff
277program provides the option
278.B -Z
282postprocessor, this output does not show up normally.
283.
284This is why it is called
285.I intermediate
286within the
287.I groff
288.IR system .
289.
290The
291.B groff
292program provides the option
293.B -Z
279to inhibit postprocessing, such that the produced intermediate output
294to inhibit postprocessing, such that the produced
295.I intermediate output
280is sent to standard output just like calling
296is sent to standard output just like calling
281.B troff
297.B @g@troff
282manually.
283.
298manually.
299.
300.
284.P
285In this document, the term
301.P
302In this document, the term
286.I troff output
287describes what is output by the GNU troff program, while
303.I @g@troff output
304describes what is output by the GNU
305.B @g@troff
306program, while
288.I intermediate output
289refers to the language that is accepted by the parser that prepares
290this output for the postprocessors.
291.
292This parser is smarter on whitespace and implements obsolete elements
293for compatibility, otherwise both formats are the same.
294.
307.I intermediate output
308refers to the language that is accepted by the parser that prepares
309this output for the postprocessors.
310.
311This parser is smarter on whitespace and implements obsolete elements
312for compatibility, otherwise both formats are the same.
313.
295The pre-groff roff versions are denoted as
296.I classical
297.IR troff .
314Both formats can be viewed directly with
315.BR \%gxditview (@MAN1EXT@).
298.
316.
317.
299.P
318.P
300The main purpose of the intermediate output concept is to facilitate
301the development of postprocessors by providing a common programming
302interface for all devices.
319The main purpose of the
320.I intermediate output
321concept is to facilitate the development of postprocessors by
322providing a common programming interface for all devices.
303.
304It has a language of its own that is completely different from the
305.BR groff (@MAN7EXT@)
306language.
307.
308While the
309.I groff
310language is a high-level programming language for text processing, the
323.
324It has a language of its own that is completely different from the
325.BR groff (@MAN7EXT@)
326language.
327.
328While the
329.I groff
330language is a high-level programming language for text processing, the
311intermediate output language is a kind of low-level assembler language
312by specifying all positions on the page for writing and drawing.
331.I intermediate output
332language is a kind of low-level assembler language by specifying all
333positions on the page for writing and drawing.
313.
334.
335.
314.P
336.P
315The intermediate output produced by
316.I groff
337The
338.RI pre- groff
339.I roff
340versions are denoted as
341.I classical
342.IR troff .
343The
344.I intermediate output
345produced by
346.B groff
317is fairly readable, while
318.I classical troff
319output was hard to understand because of strange habits that are
320still supported, but not used any longer by
321.I GNU
347is fairly readable, while
348.I classical troff
349output was hard to understand because of strange habits that are
350still supported, but not used any longer by
351.I GNU
322.IR troff .
352.IR @g@troff .
323.
324.
325.\" --------------------------------------------------------------------
326.SH "LANGUAGE CONCEPTS"
327.\" --------------------------------------------------------------------
328.
329During the run of
353.
354.
355.\" --------------------------------------------------------------------
356.SH "LANGUAGE CONCEPTS"
357.\" --------------------------------------------------------------------
358.
359During the run of
330.BR troff ,
331the roff input is cracked down to the information on what has to be
332printed at what position on the intended device.
360.BR @g@troff ,
361the
362.I roff
363input is cracked down to the information on what has to be printed at
364what position on the intended device.
333.
365.
334So the language of the intermediate output format can be quite small.
366So the language of the
367.I intermediate output
368format can be quite small.
335.
336Its only elements are commands with or without arguments.
337.
369.
370Its only elements are commands with or without arguments.
371.
338In this document, the term "command" always refers to the intermediate
339output language, never to the roff language used for document
340formatting.
372In this document, the term "command" always refers to the
373.I intermediate output
374language, never to the
375.I roff
376language used for document formatting.
341.
342There are commands for positioning and text writing, for drawing, and
343for device controlling.
344.
345.
346.\" --------------------------------------------------------------------
347.SS "Separation"
348.\" --------------------------------------------------------------------
349.
350.I Classical troff output
351had strange requirements on whitespace.
352.
353The
377.
378There are commands for positioning and text writing, for drawing, and
379for device controlling.
380.
381.
382.\" --------------------------------------------------------------------
383.SS "Separation"
384.\" --------------------------------------------------------------------
385.
386.I Classical troff output
387had strange requirements on whitespace.
388.
389The
354.I groff
390.B groff
355output parser, however, is smart about whitespace by making it
356maximally optional.
357.
391output parser, however, is smart about whitespace by making it
392maximally optional.
393.
358The whitespace characters, i.e.\& the
394The whitespace characters, i.e., the
359.IR tab ,
360.IR space ,
361and
362.I newline
363characters, always have a syntactical meaning.
364.
365They are never printable because spacing within the output is always
366done by positioning commands.
367.
395.IR tab ,
396.IR space ,
397and
398.I newline
399characters, always have a syntactical meaning.
400.
401They are never printable because spacing within the output is always
402done by positioning commands.
403.
404.
368.P
369Any sequence of
370.I space
371or
372.I tab
373characters is treated as a single
405.P
406Any sequence of
407.I space
408or
409.I tab
410characters is treated as a single
374.B syntactical
375.BR space .
411.I syntactical
412.IR space .
376.
377It separates commands and arguments, but is only required when there
378would occur a clashing between the command code and the arguments
379without the space.
380.
381Most often, this happens when variable length command names,
382arguments, argument lists, or command clusters meet.
383.
384Commands and arguments with a known, fixed length need not be
413.
414It separates commands and arguments, but is only required when there
415would occur a clashing between the command code and the arguments
416without the space.
417.
418Most often, this happens when variable length command names,
419arguments, argument lists, or command clusters meet.
420.
421Commands and arguments with a known, fixed length need not be
385separated by syntactical space.
422separated by
423.I syntactical
424.IR space .
386.
425.
426.
387.P
388A line break is a syntactical element, too.
389.
390Every command argument can be followed by whitespace, a comment, or a
391newline character.
392.
393Thus a
427.P
428A line break is a syntactical element, too.
429.
430Every command argument can be followed by whitespace, a comment, or a
431newline character.
432.
433Thus a
394.B syntactical line break
395is defined to consist of optional syntactical space that is optionally
396followed by a comment, and a newline character.
434.I syntactical line break
435is defined to consist of optional
436.I syntactical space
437that is optionally followed by a comment, and a newline character.
397.
438.
439.
398.P
399The normal commands, those for positioning and text, consist of a
400single letter taking a fixed number of arguments.
401.
402For historical reasons, the parser allows to stack such commands on
440.P
441The normal commands, those for positioning and text, consist of a
442single letter taking a fixed number of arguments.
443.
444For historical reasons, the parser allows to stack such commands on
403the same line, but fortunately, in groff intermediate output, every
404command with at least one argument is followed by a line break, thus
405providing excellent readability.
445the same line, but fortunately, in
446.I groff intermediate
447.IR output ,
448every command with at least one argument is followed by a line break,
449thus providing excellent readability.
406.
407.P
408The other commands \[em] those for drawing and device controlling \[em]
409have a more complicated structure; some recognize long command names,
410and some take a variable number of arguments.
411.
412So all
413.B D
414and
415.B x
416commands were designed to request a
417.I syntactical line break
418after their last argument.
419.
420Only one command,
421.RB ` x\ X '
422has an argument that can stretch over several lines, all other
423commands must have all of their arguments on the same line as the
450.
451.P
452The other commands \[em] those for drawing and device controlling \[em]
453have a more complicated structure; some recognize long command names,
454and some take a variable number of arguments.
455.
456So all
457.B D
458and
459.B x
460commands were designed to request a
461.I syntactical line break
462after their last argument.
463.
464Only one command,
465.RB ` x\ X '
466has an argument that can stretch over several lines, all other
467commands must have all of their arguments on the same line as the
424command, i.e.\& the arguments may not be splitted by a line break.
468command, i.e., the arguments may not be splitted by a line break.
425.
426.P
469.
470.P
427Empty lines, i.e.\& lines containing only space and/or a comment, can
471Empty lines, i.e., lines containing only space and/or a comment, can
428occur everywhere.
429.
430They are just ignored.
431.
432.
433.\" --------------------------------------------------------------------
434.SS "Argument Units"
435.\" --------------------------------------------------------------------
436.
437Some commands take integer arguments that are assumed to represent
438values in a measurement unit, but the letter for the corresponding
439.I scale indicator
440is not written with the output command arguments; see
441.BR groff (@MAN7EXT@)
472occur everywhere.
473.
474They are just ignored.
475.
476.
477.\" --------------------------------------------------------------------
478.SS "Argument Units"
479.\" --------------------------------------------------------------------
480.
481Some commands take integer arguments that are assumed to represent
482values in a measurement unit, but the letter for the corresponding
483.I scale indicator
484is not written with the output command arguments; see
485.BR groff (@MAN7EXT@)
442and the groff info file for more on this topic.
486and the
487.I groff info file
488for more on this topic.
443.
444Most commands assume the scale indicator\~\c
445.unit u ,
446the basic unit of the device, some use\~\c
447.unit z ,
448the
449.I scaled point unit
450of the device, while others, such as the color commands expect plain
451integers.
452.
453Note that these scale indicators are relative to the chosen device.
454.
455They are defined by the parameters specified in the device's
456.I DESC
457file; see
458.BR groff_font (@MAN5EXT@).
459.
489.
490Most commands assume the scale indicator\~\c
491.unit u ,
492the basic unit of the device, some use\~\c
493.unit z ,
494the
495.I scaled point unit
496of the device, while others, such as the color commands expect plain
497integers.
498.
499Note that these scale indicators are relative to the chosen device.
500.
501They are defined by the parameters specified in the device's
502.I DESC
503file; see
504.BR groff_font (@MAN5EXT@).
505.
506.
460.P
461Note that single characters can have the eighth bit set, as can the
462names of fonts and special characters.
463.
464The names of characters and fonts can be of arbitrary length.
465.
466A character that is to be printed will always be in the current font.
467.
507.P
508Note that single characters can have the eighth bit set, as can the
509names of fonts and special characters.
510.
511The names of characters and fonts can be of arbitrary length.
512.
513A character that is to be printed will always be in the current font.
514.
515.
468.P
469A string argument is always terminated by the next whitespace
470character (space, tab, or newline); an embedded
471.B #
472character is regarded as part of the argument, not as the beginning of
473a comment command.
474.
475An integer argument is already terminated by the next non-digit
476character, which then is regarded as the first character of the next
477argument or command.
478.
479.
480.\" --------------------------------------------------------------------
481.SS "Document Parts"
482.\" --------------------------------------------------------------------
516.P
517A string argument is always terminated by the next whitespace
518character (space, tab, or newline); an embedded
519.B #
520character is regarded as part of the argument, not as the beginning of
521a comment command.
522.
523An integer argument is already terminated by the next non-digit
524character, which then is regarded as the first character of the next
525argument or command.
526.
527.
528.\" --------------------------------------------------------------------
529.SS "Document Parts"
530.\" --------------------------------------------------------------------
483A correct intermediate output document consists of two parts, the
484prologue and the body.
531A correct
532.I intermediate output
533document consists of two parts, the
534.I prologue
535and the
536.IR body .
485.
486.P
487The task of the
488.I prologue
489is to set the general device parameters using three exactly specified
490commands.
491.
492The
493.I groff prologue
494is guaranteed to consist of the following three lines (in that order):
495.RS
496.P
497.B x\ T
498.I device
499.br
500.B x\ res
501.I n\ h\ v
502.br
503.B x init
504.RE
505.P
506with the arguments set as outlined in the section
507.BR "Device Control Commands" .
508.
537.
538.P
539The task of the
540.I prologue
541is to set the general device parameters using three exactly specified
542commands.
543.
544The
545.I groff prologue
546is guaranteed to consist of the following three lines (in that order):
547.RS
548.P
549.B x\ T
550.I device
551.br
552.B x\ res
553.I n\ h\ v
554.br
555.B x init
556.RE
557.P
558with the arguments set as outlined in the section
559.BR "Device Control Commands" .
560.
509But the parser for the intermediate output format is able to swallow
510additional whitespace and comments as well.
561But the parser for the
562.I intermediate output
563format is able to swallow additional whitespace and comments as well.
511.
564.
565.
512.P
513The
514.I body
515is the main section for processing the document data.
516.
517Syntactically, it is a sequence of any commands different from the
566.P
567The
568.I body
569is the main section for processing the document data.
570.
571Syntactically, it is a sequence of any commands different from the
518ones used in the prologue.
572ones used in the
573.IR prologue .
519.
520Processing is terminated as soon as the first
521.B x\ stop
574.
575Processing is terminated as soon as the first
576.B x\ stop
522command is encountered; the last line of any groff intermediate output
577command is encountered; the last line of any
578.I groff intermediate output
523always contains such a command.
524.
579always contains such a command.
580.
581.
525.P
582.P
526Semantically, the body is page oriented.
583Semantically, the
584.I body
585is page oriented.
527.
528A new page is started by a
529.BR p \~command.
530.
531Positioning, writing, and drawing commands are always done within the
532current page, so they cannot occur before the first
533.BR p \~command.
534.
535Absolute positioning (by the
536.B H
537and
538.BR V \~commands)
539is done relative to the current page, all other positioning
540is done relative to the current location within this page.
541.
542.
543.\" --------------------------------------------------------------------
544.SH "COMMAND REFERENCE"
545.\" --------------------------------------------------------------------
546.
586.
587A new page is started by a
588.BR p \~command.
589.
590Positioning, writing, and drawing commands are always done within the
591current page, so they cannot occur before the first
592.BR p \~command.
593.
594Absolute positioning (by the
595.B H
596and
597.BR V \~commands)
598is done relative to the current page, all other positioning
599is done relative to the current location within this page.
600.
601.
602.\" --------------------------------------------------------------------
603.SH "COMMAND REFERENCE"
604.\" --------------------------------------------------------------------
605.
547This section describes all intermediate output commands, the classical
548commands as well as the
606This section describes all
607.I intermediate output
608commands, the classical commands as well as the
549.I groff
550extensions.
551.
552.
553.\" --------------------------------------------------------------------
554.SS "Comment Command"
555.\" --------------------------------------------------------------------
556.
557.TP
558.BI # anything \[la]end_of_line\[ra]
559A comment.
560.
561Ignore any characters from the
562.BR # \~\c
563character up to the next newline character.
564.
565.P
609.I groff
610extensions.
611.
612.
613.\" --------------------------------------------------------------------
614.SS "Comment Command"
615.\" --------------------------------------------------------------------
616.
617.TP
618.BI # anything \[la]end_of_line\[ra]
619A comment.
620.
621Ignore any characters from the
622.BR # \~\c
623character up to the next newline character.
624.
625.P
566This command is the only possibility for commenting in the intermediate
567output.
626This command is the only possibility for commenting in the
627.I intermediate
628.IR output .
568.
569Each comment can be preceded by arbitrary
570.I syntactical
571.IR space ;
572every command can be terminated by a comment.
573.
574.
575.\" --------------------------------------------------------------------
576.SS "Simple Commands"
577.\" --------------------------------------------------------------------
578.
579The commands in this subsection have a command code consisting of a
580single character, taking a fixed number of arguments.
581.
582Most of them are commands for positioning and text writing.
583.
584These commands are smart about whitespace.
585.
586Optionally,
587.I syntactical space
588can be inserted before, after, and between the command letter and its
589arguments.
590.
591All of these commands are stackable, i.e., they can be preceded by
592other simple commands or followed by arbitrary other commands on the
593same line.
594.
629.
630Each comment can be preceded by arbitrary
631.I syntactical
632.IR space ;
633every command can be terminated by a comment.
634.
635.
636.\" --------------------------------------------------------------------
637.SS "Simple Commands"
638.\" --------------------------------------------------------------------
639.
640The commands in this subsection have a command code consisting of a
641single character, taking a fixed number of arguments.
642.
643Most of them are commands for positioning and text writing.
644.
645These commands are smart about whitespace.
646.
647Optionally,
648.I syntactical space
649can be inserted before, after, and between the command letter and its
650arguments.
651.
652All of these commands are stackable, i.e., they can be preceded by
653other simple commands or followed by arbitrary other commands on the
654same line.
655.
595A separating syntactical space is only necessary when two integer
596arguments would clash or if the preceding argument ends with a string
597argument.
656A separating
657.I syntactical space
658is only necessary when two integer arguments would clash or if the
659preceding argument ends with a string argument.
598.
599.
600.if (\n[@USE_ENV_STACK] == 1) \{\
601.command {
602Open a new environment by copying the actual device configuration data
603to the environment stack.
604.
605The current environment is setup by the device specification and
606manipulated by the setting commands.
607.
608.
609.command }
610Close the actual environment (opened by a preceding
611.BR { \~command)
612and restore the previous environment from the environment
613stack as the actual device configuration data.
614.
615\} \" endif @USE_ENV_STACK
616.
617.
618.command C xxx \[la]white_space\[ra]
619Print a special groff character named
620.argument xxx .
621.
660.
661.
662.if (\n[@USE_ENV_STACK] == 1) \{\
663.command {
664Open a new environment by copying the actual device configuration data
665to the environment stack.
666.
667The current environment is setup by the device specification and
668manipulated by the setting commands.
669.
670.
671.command }
672Close the actual environment (opened by a preceding
673.BR { \~command)
674and restore the previous environment from the environment
675stack as the actual device configuration data.
676.
677\} \" endif @USE_ENV_STACK
678.
679.
680.command C xxx \[la]white_space\[ra]
681Print a special groff character named
682.argument xxx .
683.
622The trailing syntactical space or line break is necessary to allow
623character names of arbitrary length.
684The trailing
685.I syntactical space
686or
687.I line break
688is necessary to allow character names of arbitrary length.
624.
689.
625The character is printed at the current print position;
626the character's size is read from the font file.
690The character is printed at the current print position; the
691character's size is read from the font file.
627.
628The print position is not changed.
629.
630.
631.command c c
632Print character\~\c
633.argument c
634at the current print position;
635the character's size is read from the font file.
636.
637The print position is not changed.
638.
639.
640.command f n
641Set font to font number\~\c
642.argument n
643(a non-negative integer).
644.
645.
646.command H n
647Move right to the absolute vertical position\~\c
648.argument n
649(a non-negative integer in basic units\~\c
650.unit u )
651relative to left edge of current page.
652.
653.
654.command h n
655Move
656.argument n
657(a non-negative integer) basic units\~\c
658.unit u
659horizontally to the right.
660.
692.
693The print position is not changed.
694.
695.
696.command c c
697Print character\~\c
698.argument c
699at the current print position;
700the character's size is read from the font file.
701.
702The print position is not changed.
703.
704.
705.command f n
706Set font to font number\~\c
707.argument n
708(a non-negative integer).
709.
710.
711.command H n
712Move right to the absolute vertical position\~\c
713.argument n
714(a non-negative integer in basic units\~\c
715.unit u )
716relative to left edge of current page.
717.
718.
719.command h n
720Move
721.argument n
722(a non-negative integer) basic units\~\c
723.unit u
724horizontally to the right.
725.
661.I [54]
726.I [CSTR\~#54]
662allows negative values for
663.I n
664also, but
665.I groff
666doesn't use this.
667.
668.
669.command m "color_scheme \f[R][\f[]component .\|.\|.\f[R]]\f[]"
670Set the color for text (glyphs), line drawing, and the outline of
671graphic objects using different color schemes; the analoguous command
672for the filling color of graphic objects is
673.BR DF .
674.
675The color components are specified as integer arguments between 0 and
676\n[@maxcolor].
677.
678The number of color components and their meaning vary for the
679different color schemes.
680.
727allows negative values for
728.I n
729also, but
730.I groff
731doesn't use this.
732.
733.
734.command m "color_scheme \f[R][\f[]component .\|.\|.\f[R]]\f[]"
735Set the color for text (glyphs), line drawing, and the outline of
736graphic objects using different color schemes; the analoguous command
737for the filling color of graphic objects is
738.BR DF .
739.
740The color components are specified as integer arguments between 0 and
741\n[@maxcolor].
742.
743The number of color components and their meaning vary for the
744different color schemes.
745.
681These commands are generated by the groff escape sequence
746These commands are generated by the
747.I groff
748escape sequence
682.BR \*[@backslash]m .
683.
684No position changing.
685.
749.BR \*[@backslash]m .
750.
751No position changing.
752.
686These commands are a groff extension.
753These commands are a
754.I groff
755extension.
687.
688.
689.RS
690.
691.command mc "cyan magenta yellow"
692Set color using the CMY color scheme, having the 3\~color components
693cyan, magenta, and yellow.
694.
695.
696.command md
697Set color to the default color value
698(black in most cases).
699.
700No component arguments.
701.
702.
703.command mg "gray"
704Set color to the shade of gray given by the argument, an integer
705between 0 (black) and \n[@maxcolor] (white).
706.
707.
708.command mk "cyan magenta yellow black"
709Set color using the CMYK color scheme, having the 4\~color components
710cyan, magenta, yellow, and black.
711.
712.command mr "red green blue"
713Set color using the RGB color scheme, having the 3\~color components
714red, green, and blue.
715.
716.RE
717.
718.
719.command N n
720Print character with index\~\c
721.argument n
722(an integer, normally non-negative) of the current font.
723.
724The print position is not changed.
725.
726If
727.B \-T\~html
728is used, negative values are emitted also to indicate an unbreakable space
729with given width.
730.
731For example,
732.B N\~-193
733represents an unbreakable space which has a width of 193u.
734.
756.
757.
758.RS
759.
760.command mc "cyan magenta yellow"
761Set color using the CMY color scheme, having the 3\~color components
762cyan, magenta, and yellow.
763.
764.
765.command md
766Set color to the default color value
767(black in most cases).
768.
769No component arguments.
770.
771.
772.command mg "gray"
773Set color to the shade of gray given by the argument, an integer
774between 0 (black) and \n[@maxcolor] (white).
775.
776.
777.command mk "cyan magenta yellow black"
778Set color using the CMYK color scheme, having the 4\~color components
779cyan, magenta, yellow, and black.
780.
781.command mr "red green blue"
782Set color using the RGB color scheme, having the 3\~color components
783red, green, and blue.
784.
785.RE
786.
787.
788.command N n
789Print character with index\~\c
790.argument n
791(an integer, normally non-negative) of the current font.
792.
793The print position is not changed.
794.
795If
796.B \-T\~html
797is used, negative values are emitted also to indicate an unbreakable space
798with given width.
799.
800For example,
801.B N\~-193
802represents an unbreakable space which has a width of 193u.
803.
735This command is a groff extension.
804This command is a
805.I groff
806extension.
736.
737.
738.command n b\ a
739Inform the device about a line break, but no positioning is done by
740this command.
741.
807.
808.
809.command n b\ a
810Inform the device about a line break, but no positioning is done by
811this command.
812.
742In classical troff, the integer arguments
813In
814.I classical
815.IR troff ,
816the integer arguments
743.argument b
744and\~\c
745.argument a
746informed about the space before and after the current line to
817.argument b
818and\~\c
819.argument a
820informed about the space before and after the current line to
747make the intermediate output more human readable without performing
748any action.
821make the
822.I intermediate output
823more human readable without performing any action.
749.
824.
750In groff, they are just ignored, but they must be provided for
751compatibility reasons.
825In
826.IR groff ,
827they are just ignored, but they must be provided for compatibility
828reasons.
752.
753.
754.command p n
755Begin a new page in the outprint.
756.
757The page number is set to\~\c
758.argument n .
759.
760This page is completely independent of pages formerly processed even
761if those have the same page number.
762.
763The vertical position on the outprint is automatically set to\~0.
764.
765All positioning, writing, and drawing is always done relative to a
766page, so a
767.BR p \~command
768must be issued before any of these commands.
769.
770.
771.command s n
772Set point size to
773.argument n
774scaled points
775(this is unit\~\c
776.unit z
777in GNU
829.
830.
831.command p n
832Begin a new page in the outprint.
833.
834The page number is set to\~\c
835.argument n .
836.
837This page is completely independent of pages formerly processed even
838if those have the same page number.
839.
840The vertical position on the outprint is automatically set to\~0.
841.
842All positioning, writing, and drawing is always done relative to a
843page, so a
844.BR p \~command
845must be issued before any of these commands.
846.
847.
848.command s n
849Set point size to
850.argument n
851scaled points
852(this is unit\~\c
853.unit z
854in GNU
778.BR troff ).
855.BR @g@troff ).
779.
856.
780Classical troff used the unit
857.I Classical troff
858used the unit
781.I points
782(\c
783.unit p )
784instead; see section
785.BR COMPATIBILITY .
786.
787.
788.command t xxx \[la]white_space\[ra]
789.command+ t "xxx dummy_arg" \[la]white_space\[ra]
859.I points
860(\c
861.unit p )
862instead; see section
863.BR COMPATIBILITY .
864.
865.
866.command t xxx \[la]white_space\[ra]
867.command+ t "xxx dummy_arg" \[la]white_space\[ra]
790Print a word, i.e.\& a sequence of characters
868Print a word, i.e., a sequence of characters
791.argument xxx
792terminated by a space character or a line break; an optional second
793integer argument is ignored (this allows the formatter to generate
794an even number of arguments).
795.
796The first character should be printed at the current position, the
797current horizontal position should then be increased by the width of
798the first character, and so on for each character.
799.
800The widths of the characters are read from the font file, scaled for the
801current point size, and rounded to a multiple of the horizontal
802resolution.
803.
804Special characters cannot be printed using this command (use the
805.B C
806command for named characters).
807.
869.argument xxx
870terminated by a space character or a line break; an optional second
871integer argument is ignored (this allows the formatter to generate
872an even number of arguments).
873.
874The first character should be printed at the current position, the
875current horizontal position should then be increased by the width of
876the first character, and so on for each character.
877.
878The widths of the characters are read from the font file, scaled for the
879current point size, and rounded to a multiple of the horizontal
880resolution.
881.
882Special characters cannot be printed using this command (use the
883.B C
884command for named characters).
885.
808This command is a groff extension; it is only used for devices whose
886This command is a
887.I groff
888extension; it is only used for devices whose
809.I DESC
810file contains the
811.B tcommand
812keyword; see
813.BR groff_font (@MAN5EXT@).
814.
815.
816.command u "n xxx" \[la]white_space\[ra]
817Print word with track kerning.
818.
819This is the same as the
820.B t
821command except that after printing each character, the current
822horizontal position is increased by the sum of the width of that
823character and\~\c
824.argument n
825(an integer in
826basic units\~\c
827.unit u ).
889.I DESC
890file contains the
891.B tcommand
892keyword; see
893.BR groff_font (@MAN5EXT@).
894.
895.
896.command u "n xxx" \[la]white_space\[ra]
897Print word with track kerning.
898.
899This is the same as the
900.B t
901command except that after printing each character, the current
902horizontal position is increased by the sum of the width of that
903character and\~\c
904.argument n
905(an integer in
906basic units\~\c
907.unit u ).
828This command is a groff extension; it is only used for devices whose
908This command is a
909.I groff
910extension; it is only used for devices whose
829.I DESC
830file contains the
831.B tcommand
832keyword; see
833.BR groff_font (@MAN5EXT@).
834.
835.
836.command V n
837Move down to the absolute vertical position\~\c
838.argument n
839(a non-negative integer in basic units\~\c
840.unit u )
841relative to upper edge of current page.
842.
843.
844.command v n
845Move
846.argument n
847basic units\~\c
848.unit u
849down
850.RI ( n
851is a non-negative integer).
852.
911.I DESC
912file contains the
913.B tcommand
914keyword; see
915.BR groff_font (@MAN5EXT@).
916.
917.
918.command V n
919Move down to the absolute vertical position\~\c
920.argument n
921(a non-negative integer in basic units\~\c
922.unit u )
923relative to upper edge of current page.
924.
925.
926.command v n
927Move
928.argument n
929basic units\~\c
930.unit u
931down
932.RI ( n
933is a non-negative integer).
934.
853.I [54]
935.I [CSTR\~#54]
854allows negative values for
855.I n
856also, but
857.I groff
858doesn't use this.
859.
860.
861.command w
862Informs about a paddable whitespace to increase readability.
863.
864The spacing itself must be performed explicitly by a move command.
865.
866.
867.\" --------------------------------------------------------------------
868.SS "Graphics Commands"
869.\" --------------------------------------------------------------------
870.
936allows negative values for
937.I n
938also, but
939.I groff
940doesn't use this.
941.
942.
943.command w
944Informs about a paddable whitespace to increase readability.
945.
946The spacing itself must be performed explicitly by a move command.
947.
948.
949.\" --------------------------------------------------------------------
950.SS "Graphics Commands"
951.\" --------------------------------------------------------------------
952.
871Each graphics or drawing command in the intermediate output starts
872with the letter\~\c
953Each graphics or drawing command in the
954.I intermediate output
955starts with the letter\~\c
873.B D
874followed by one or two characters that specify a subcommand; this
875is followed by a fixed or variable number of integer arguments that
876are separated by a single space character.
877.
878A
956.B D
957followed by one or two characters that specify a subcommand; this
958is followed by a fixed or variable number of integer arguments that
959are separated by a single space character.
960.
961A
879.BR D \ command
880may not be followed by another command on the same line
881(apart from a comment), so each
882.BR D \ command
883is terminated by a syntactical line break.
962.B D\c
963\~command
964may not be followed by another command on the same line (apart from a
965comment), so each
966.B D\c
967\~command
968is terminated by a
969.I syntactical line
970.IR break .
884.
971.
972.
885.P
973.P
886.I troff
974.B @g@troff
887output follows the classical spacing rules (no space between command
888and subcommand, all arguments are preceded by a single space
889character), but the parser allows optional space between the command
890letters and makes the space before the first argument optional.
891.
892As usual, each space can be any sequence of tab and space characters.
893.
975output follows the classical spacing rules (no space between command
976and subcommand, all arguments are preceded by a single space
977character), but the parser allows optional space between the command
978letters and makes the space before the first argument optional.
979.
980As usual, each space can be any sequence of tab and space characters.
981.
982.
894.P
895Some graphics commands can take a variable number of arguments.
896.
897In this case, they are integers representing a size measured in basic
898units\~\c
899.unit u .
900.
901The arguments called
902.list1..n h
903stand for horizontal distances where positive means right, negative
904left.
905.
906The arguments called
907.list1..n v
908stand for vertical distances where positive means down, negative up.
909.
910All these distances are offsets relative to the current location.
911.
983.P
984Some graphics commands can take a variable number of arguments.
985.
986In this case, they are integers representing a size measured in basic
987units\~\c
988.unit u .
989.
990The arguments called
991.list1..n h
992stand for horizontal distances where positive means right, negative
993left.
994.
995The arguments called
996.list1..n v
997stand for vertical distances where positive means down, negative up.
998.
999All these distances are offsets relative to the current location.
1000.
1001.
912.P
913Unless indicated otherwise, each graphics command directly corresponds
914to a similar
915.I groff
916.B \*[@backslash]D
917escape sequence; see
918.BR groff (@MAN7EXT@).
919.
1002.P
1003Unless indicated otherwise, each graphics command directly corresponds
1004to a similar
1005.I groff
1006.B \*[@backslash]D
1007escape sequence; see
1008.BR groff (@MAN7EXT@).
1009.
1010.
920.P
1011.P
921Unknown D\~commands are assumed to be device-specific.
1012Unknown
1013.B D\c
1014\~commands are assumed to be device-specific.
922.
923Its arguments are parsed as strings; the whole information is then
924sent to the postprocessor.
925.
1015.
1016Its arguments are parsed as strings; the whole information is then
1017sent to the postprocessor.
1018.
1019.
926.P
927In the following command reference, the syntax element
928.I \[la]line_break\[ra]
929means a
930.I syntactical line break
931as defined in section
932.BR Separation .
933.
934.
935.D-multiarg ~
936Draw B-spline from current position to offset
937.indexed_offset h 1 v 1 ,
938then to offset
939.indexed_offset h 2 v 2
940if given, etc.\& up to
941.indexed_offset h n v n .
1020.P
1021In the following command reference, the syntax element
1022.I \[la]line_break\[ra]
1023means a
1024.I syntactical line break
1025as defined in section
1026.BR Separation .
1027.
1028.
1029.D-multiarg ~
1030Draw B-spline from current position to offset
1031.indexed_offset h 1 v 1 ,
1032then to offset
1033.indexed_offset h 2 v 2
1034if given, etc.\& up to
1035.indexed_offset h n v n .
942This command takes a variable number of argument pairs;
943the current position is moved to the terminal point of the drawn curve.
1036This command takes a variable number of argument pairs; the current
1037position is moved to the terminal point of the drawn curve.
944.
945.
946.Da-command
947Draw arc from current position to
948.indexed_offset h 1 v 1 \|+\|\c
949.indexed_offset h 2 v 2
950with center at
951.indexed_offset h 1 v 1 ;
952then move the current position to the final point of the arc.
953.
954.
955.D-command C d
956.D-command+ C d dummy_arg
957Draw a solid circle using the current fill color with diameter\~\c
958.argument d
959(integer in basic units\~\c
960.unit u )
961with leftmost point at the current position; then move the current
962position to the rightmost point of the circle.
963.
964An optional second integer argument is ignored (this allows to the
965formatter to generate an even number of arguments).
966.
1038.
1039.
1040.Da-command
1041Draw arc from current position to
1042.indexed_offset h 1 v 1 \|+\|\c
1043.indexed_offset h 2 v 2
1044with center at
1045.indexed_offset h 1 v 1 ;
1046then move the current position to the final point of the arc.
1047.
1048.
1049.D-command C d
1050.D-command+ C d dummy_arg
1051Draw a solid circle using the current fill color with diameter\~\c
1052.argument d
1053(integer in basic units\~\c
1054.unit u )
1055with leftmost point at the current position; then move the current
1056position to the rightmost point of the circle.
1057.
1058An optional second integer argument is ignored (this allows to the
1059formatter to generate an even number of arguments).
1060.
967This command is a groff extension.
1061This command is a
1062.I groff
1063extension.
968.
969.
970.D-command c d
971Draw circle line with diameter\~\c
972.argument d
973(integer in basic units\~\c
974.unit u )
975with leftmost point at the current position; then move the current
976position to the rightmost point of the circle.
977.
978.
979.D-command E "h v"
980Draw a solid ellipse in the current fill color with a horizontal
981diameter of\~\c
982.argument h
983and a vertical diameter of\~\c
984.argument v
985(both integers in basic units\~\c
986.unit u )
987with the leftmost point at the current position; then move to the
988rightmost point of the ellipse.
989.
1064.
1065.
1066.D-command c d
1067Draw circle line with diameter\~\c
1068.argument d
1069(integer in basic units\~\c
1070.unit u )
1071with leftmost point at the current position; then move the current
1072position to the rightmost point of the circle.
1073.
1074.
1075.D-command E "h v"
1076Draw a solid ellipse in the current fill color with a horizontal
1077diameter of\~\c
1078.argument h
1079and a vertical diameter of\~\c
1080.argument v
1081(both integers in basic units\~\c
1082.unit u )
1083with the leftmost point at the current position; then move to the
1084rightmost point of the ellipse.
1085.
990This command is a groff extension.
1086This command is a
1087.I groff
1088extension.
991.
992.
993.D-command e "h v"
994Draw an outlined ellipse with a horizontal diameter of\~\c
995.argument h
996and a vertical diameter of\~\c
997.argument v
998(both integers in basic units\~\c
999.unit u )
1000with the leftmost point at current position; then move to the
1001rightmost point of the ellipse.
1002.
1003.
1004.D-command F "color_scheme \f[R][\f[]component .\|.\|.\f[R]]\f[]"
1005Set fill color for solid drawing objects using different color
1006schemes; the analoguous command for setting the color of text, line
1007graphics, and the outline of graphic objects is
1008.BR m .
1009.
1010The color components are specified as integer arguments between 0 and
1011\n[@maxcolor].
1012.
1013The number of color components and their meaning vary for the
1014different color schemes.
1015.
1089.
1090.
1091.D-command e "h v"
1092Draw an outlined ellipse with a horizontal diameter of\~\c
1093.argument h
1094and a vertical diameter of\~\c
1095.argument v
1096(both integers in basic units\~\c
1097.unit u )
1098with the leftmost point at current position; then move to the
1099rightmost point of the ellipse.
1100.
1101.
1102.D-command F "color_scheme \f[R][\f[]component .\|.\|.\f[R]]\f[]"
1103Set fill color for solid drawing objects using different color
1104schemes; the analoguous command for setting the color of text, line
1105graphics, and the outline of graphic objects is
1106.BR m .
1107.
1108The color components are specified as integer arguments between 0 and
1109\n[@maxcolor].
1110.
1111The number of color components and their meaning vary for the
1112different color schemes.
1113.
1016These commands are generated by the groff escape sequences
1114These commands are generated by the
1115.I groff
1116escape sequences
1017.B \*[@backslash]D'F\ .\|.\|.'
1018and
1019.B \*[@backslash]M
1020(with no other corresponding graphics commands).
1021.
1022No position changing.
1023.
1117.B \*[@backslash]D'F\ .\|.\|.'
1118and
1119.B \*[@backslash]M
1120(with no other corresponding graphics commands).
1121.
1122No position changing.
1123.
1024This command is a groff extension.
1124This command is a
1125.I groff
1126extension.
1025.
1026.
1027.RS
1028.
1029.D-command Fc "cyan magenta yellow"
1030Set fill color for solid drawing objects using the CMY color scheme,
1031having the 3\~color components cyan, magenta, and yellow.
1032.
1033.
1034.D-command Fd
1035Set fill color for solid drawing objects to the default fill color value
1036(black in most cases).
1037.
1038No component arguments.
1039.
1040.
1041.D-command Fg "gray"
1042Set fill color for solid drawing objects to the shade of gray given by
1043the argument, an integer between 0 (black) and \n[@maxcolor] (white).
1044.
1045.
1046.D-command Fk "cyan magenta yellow black"
1047Set fill color for solid drawing objects using the CMYK color scheme,
1048having the 4\~color components cyan, magenta, yellow, and black.
1049.
1050.D-command Fr "red green blue"
1051Set fill color for solid drawing objects using the RGB color scheme,
1052having the 3\~color components red, green, and blue.
1053.
1054.RE
1055.
1056.
1057.D-command f n
1058The argument
1059.argument n
1060must be an integer in the range -32767 to 32767.
1061.
1062.RS
1063.TP
1064.RI "0 \[<=] " n " \[<=] 1000"
1065Set the color for filling solid drawing objects to a shade of gray,
1066where 0 corresponds to solid white, 1000 (the default) to solid black,
1067and values in between to intermediate shades of gray; this is
1068obsoleted by command
1069.BR DFg .
1070.
1071.TP
1072.IR n " < 0 or " n " > 1000"
1073Set the filling color to the color that is currently being used for
1074the text and the outline, see command
1075.BR m .
1076For example, the command sequence
1077.
1078.nf
1079.ft CB
1080.RS
1081.RS
1082mg 0 0 \n[@maxcolor]
1083Df -1
1084.RE
1085.ft
1086.fi
1087.
1088sets all colors to blue.
1089.RE
1090.
1127.
1128.
1129.RS
1130.
1131.D-command Fc "cyan magenta yellow"
1132Set fill color for solid drawing objects using the CMY color scheme,
1133having the 3\~color components cyan, magenta, and yellow.
1134.
1135.
1136.D-command Fd
1137Set fill color for solid drawing objects to the default fill color value
1138(black in most cases).
1139.
1140No component arguments.
1141.
1142.
1143.D-command Fg "gray"
1144Set fill color for solid drawing objects to the shade of gray given by
1145the argument, an integer between 0 (black) and \n[@maxcolor] (white).
1146.
1147.
1148.D-command Fk "cyan magenta yellow black"
1149Set fill color for solid drawing objects using the CMYK color scheme,
1150having the 4\~color components cyan, magenta, yellow, and black.
1151.
1152.D-command Fr "red green blue"
1153Set fill color for solid drawing objects using the RGB color scheme,
1154having the 3\~color components red, green, and blue.
1155.
1156.RE
1157.
1158.
1159.D-command f n
1160The argument
1161.argument n
1162must be an integer in the range -32767 to 32767.
1163.
1164.RS
1165.TP
1166.RI "0 \[<=] " n " \[<=] 1000"
1167Set the color for filling solid drawing objects to a shade of gray,
1168where 0 corresponds to solid white, 1000 (the default) to solid black,
1169and values in between to intermediate shades of gray; this is
1170obsoleted by command
1171.BR DFg .
1172.
1173.TP
1174.IR n " < 0 or " n " > 1000"
1175Set the filling color to the color that is currently being used for
1176the text and the outline, see command
1177.BR m .
1178For example, the command sequence
1179.
1180.nf
1181.ft CB
1182.RS
1183.RS
1184mg 0 0 \n[@maxcolor]
1185Df -1
1186.RE
1187.ft
1188.fi
1189.
1190sets all colors to blue.
1191.RE
1192.
1193.
1091.P
1092No position changing.
1093.
1194.P
1195No position changing.
1196.
1094This command is a groff extension.
1197This command is a
1198.I groff
1199extension.
1095.
1096.RE
1097.
1098.
1099.D-command l "h v"
1100Draw line from current position to offset
1101.offset h v
1102(integers in basic units\~\c
1103.unit u );
1104then set current position to the end of the drawn line.
1105.
1106.
1107.D-multiarg p
1108Draw a polygon line from current position to offset
1109.offset h1 v1 ,
1110from there to offset
1111.offset h2 v2 ,
1112etc.\& up to offset
1113.offset hn vn ,
1114and from there back to the starting position.
1115.
1116.ie (\n[@STUPID_DRAWING_POSITIONING] == 1) \{\
1117For historical reasons, the position is changed by adding the sum of
1118all arguments with odd index to the actual horizontal position and the
1119even ones to the vertical position.
1120.
1121Although this doesn't make sense it is kept for compatibility.
1122.
1123\}
1124.el \{\
1125As the polygon is closed, the end of drawing is the starting point, so
1126the position doesn't change.
1127\}
1128.
1200.
1201.RE
1202.
1203.
1204.D-command l "h v"
1205Draw line from current position to offset
1206.offset h v
1207(integers in basic units\~\c
1208.unit u );
1209then set current position to the end of the drawn line.
1210.
1211.
1212.D-multiarg p
1213Draw a polygon line from current position to offset
1214.offset h1 v1 ,
1215from there to offset
1216.offset h2 v2 ,
1217etc.\& up to offset
1218.offset hn vn ,
1219and from there back to the starting position.
1220.
1221.ie (\n[@STUPID_DRAWING_POSITIONING] == 1) \{\
1222For historical reasons, the position is changed by adding the sum of
1223all arguments with odd index to the actual horizontal position and the
1224even ones to the vertical position.
1225.
1226Although this doesn't make sense it is kept for compatibility.
1227.
1228\}
1229.el \{\
1230As the polygon is closed, the end of drawing is the starting point, so
1231the position doesn't change.
1232\}
1233.
1129This command is a groff extension.
1234This command is a
1235.I groff
1236extension.
1130.
1131.
1132.D-multiarg P
1133The same macro as the corresponding
1134.B Dp
1135command with the same arguments, but draws a solid polygon in the
1136current fill color rather than an outlined polygon.
1137.
1138.ie (\n[@STUPID_DRAWING_POSITIONING] == 1) \{\
1139The position is changed in the same way as with
1140.BR Dp .
1141\}
1142.el \
1143No position changing.
1144.
1237.
1238.
1239.D-multiarg P
1240The same macro as the corresponding
1241.B Dp
1242command with the same arguments, but draws a solid polygon in the
1243current fill color rather than an outlined polygon.
1244.
1245.ie (\n[@STUPID_DRAWING_POSITIONING] == 1) \{\
1246The position is changed in the same way as with
1247.BR Dp .
1248\}
1249.el \
1250No position changing.
1251.
1145This command is a groff extension.
1252This command is a
1253.I groff
1254extension.
1146.
1147.
1148.D-command t n
1149Set the current line thickness to\~\c
1150.argument n
1151(an integer in basic units\~\c
1152.unit u )
1153if
1154.argument n >0;
1155if
1156.argument n =0
1157select the smallest available line thickness; if
1158.argument n <0
1159set the line thickness proportional to the point size (this is the
1160default before the first
1161.B Dt
1162command was specified).
1163.
1164.ie (\n[@STUPID_DRAWING_POSITIONING] == 1) \{\
1165For historical reasons, the horizontal position is changed by adding
1166the argument to the actual horizontal position, while the vertical
1167position is not changed.
1168.
1169Although this doesn't make sense it is kept for compatibility.
1170.
1171\}
1172.el \
1173No position changing.
1174.
1255.
1256.
1257.D-command t n
1258Set the current line thickness to\~\c
1259.argument n
1260(an integer in basic units\~\c
1261.unit u )
1262if
1263.argument n >0;
1264if
1265.argument n =0
1266select the smallest available line thickness; if
1267.argument n <0
1268set the line thickness proportional to the point size (this is the
1269default before the first
1270.B Dt
1271command was specified).
1272.
1273.ie (\n[@STUPID_DRAWING_POSITIONING] == 1) \{\
1274For historical reasons, the horizontal position is changed by adding
1275the argument to the actual horizontal position, while the vertical
1276position is not changed.
1277.
1278Although this doesn't make sense it is kept for compatibility.
1279.
1280\}
1281.el \
1282No position changing.
1283.
1175This command is a groff extension.
1284This command is a
1285.I groff
1286extension.
1176.
1177.
1178.\" --------------------------------------------------------------------
1179.SS "Device Control Commands"
1180.\" --------------------------------------------------------------------
1181.
1182Each device control command starts with the letter
1183.B x
1184followed by a space character (optional or arbitrary space/\:tab in
1287.
1288.
1289.\" --------------------------------------------------------------------
1290.SS "Device Control Commands"
1291.\" --------------------------------------------------------------------
1292.
1293Each device control command starts with the letter
1294.B x
1295followed by a space character (optional or arbitrary space/\:tab in
1185groff) and a subcommand letter or word; each argument (if any) must be
1186preceded by a syntactical space.
1296.IR groff )
1297and a subcommand letter or word; each argument (if any) must be
1298preceded by a
1299.I syntactical
1300.IR space .
1187.
1188All
1189.B x
1190commands are terminated by a
1191.IR "syntactical line break" ;
1192no device control command can be followed by another command on the same
1193line (except a comment).
1194.
1195.P
1196The subcommand is basically a single letter, but to increase
1301.
1302All
1303.B x
1304commands are terminated by a
1305.IR "syntactical line break" ;
1306no device control command can be followed by another command on the same
1307line (except a comment).
1308.
1309.P
1310The subcommand is basically a single letter, but to increase
1197readability, it can be written as a word, i.e.\& an arbitrary sequence
1311readability, it can be written as a word, i.e., an arbitrary sequence
1198of characters terminated by the next tab, space, or newline character.
1199.
1200All characters of the subcommand word but the first are simply ignored.
1201.
1202For example,
1312of characters terminated by the next tab, space, or newline character.
1313.
1314All characters of the subcommand word but the first are simply ignored.
1315.
1316For example,
1203.I troff
1317.B @g@troff
1204outputs the initialization command
1205.B x\ i
1206as
1207.B x\ init
1208and the resolution command
1209.B x\ r
1210as
1211.BR "x\ res" .
1212.
1213But writings like
1214.B x\ i_like_groff
1215and
1216.B x\ roff_is_groff
1217resp.\& are accepted as well to mean the same commands.
1218.
1219.P
1220In the following, the syntax element
1221.I \[la]line_break\[ra]
1222means a
1223.I syntactical line break
1224as defined in section
1225.BR Separation .
1226.
1227.x-command F name
1228.xsub Filename
1229Use
1230.argument name
1231as the intended name for the current file in error reports.
1232.
1318outputs the initialization command
1319.B x\ i
1320as
1321.B x\ init
1322and the resolution command
1323.B x\ r
1324as
1325.BR "x\ res" .
1326.
1327But writings like
1328.B x\ i_like_groff
1329and
1330.B x\ roff_is_groff
1331resp.\& are accepted as well to mean the same commands.
1332.
1333.P
1334In the following, the syntax element
1335.I \[la]line_break\[ra]
1336means a
1337.I syntactical line break
1338as defined in section
1339.BR Separation .
1340.
1341.x-command F name
1342.xsub Filename
1343Use
1344.argument name
1345as the intended name for the current file in error reports.
1346.
1233This is useful for remembering the original file name when groff uses
1234an internal piping mechanism.
1347This is useful for remembering the original file name when
1348.B groff
1349uses an internal piping mechanism.
1235.
1236The input file is not changed by this command.
1237.
1350.
1351The input file is not changed by this command.
1352.
1238This command is a groff extension.
1353This command is a
1354.I groff
1355extension.
1239.
1240.
1241.x-command f "n\ s"
1242.xsub font
1243Mount font position\~\c
1244.argument n
1245(a non-negative integer) with font named\~\c
1246.argument s
1247(a text word),
1248cf.
1249.BR groff_font (@MAN5EXT@).
1250.
1251.
1252.x-command H n
1253.xsub Height
1254Set character height to\~\c
1255.argument n
1256(a positive integer in scaled points\~\c
1257.unit z ).
1258.
1356.
1357.
1358.x-command f "n\ s"
1359.xsub font
1360Mount font position\~\c
1361.argument n
1362(a non-negative integer) with font named\~\c
1363.argument s
1364(a text word),
1365cf.
1366.BR groff_font (@MAN5EXT@).
1367.
1368.
1369.x-command H n
1370.xsub Height
1371Set character height to\~\c
1372.argument n
1373(a positive integer in scaled points\~\c
1374.unit z ).
1375.
1259Classical troff used the unit
1260points (\c
1376.I Classical troff
1377used the unit points (\c
1261.unit p )
1262instead; see section
1263.BR COMPATIBILITY .
1264.
1265.
1266.x-command i
1267.xsub init
1268Initialize device.
1269.
1378.unit p )
1379instead; see section
1380.BR COMPATIBILITY .
1381.
1382.
1383.x-command i
1384.xsub init
1385Initialize device.
1386.
1270This is the third command of the prologue.
1387This is the third command of the
1388.IR prologue .
1271.
1272.
1273.x-command p
1274.xsub pause
1275Parsed but ignored.
1276.
1277The classical documentation reads
1278.I pause device, can be
1279.IR restarted .
1280.
1281.
1282.x-command r "n\ h\ v"
1283.xsub resolution
1284Resolution is\~\c
1285.argument n ,
1286while
1287.argument h
1288is the minimal horizontal motion, and
1289.argument v
1290the minimal vertical motion possible with this device; all arguments
1291are positive integers in basic units\~\c
1292.unit u
1293per inch.
1294.
1389.
1390.
1391.x-command p
1392.xsub pause
1393Parsed but ignored.
1394.
1395The classical documentation reads
1396.I pause device, can be
1397.IR restarted .
1398.
1399.
1400.x-command r "n\ h\ v"
1401.xsub resolution
1402Resolution is\~\c
1403.argument n ,
1404while
1405.argument h
1406is the minimal horizontal motion, and
1407.argument v
1408the minimal vertical motion possible with this device; all arguments
1409are positive integers in basic units\~\c
1410.unit u
1411per inch.
1412.
1295This is the second command of the prologue.
1413This is the second command of the
1414.IR prologue .
1296.
1297.
1298.x-command S n
1299.xsub Slant
1300Set slant to\~\c
1301.argument n
1302degrees (an integer in basic units\~\c
1303.unit u ).
1304.
1305.
1306.x-command s
1307.xsub stop
1308Terminates the processing of the current file; issued as the last
1415.
1416.
1417.x-command S n
1418.xsub Slant
1419Set slant to\~\c
1420.argument n
1421degrees (an integer in basic units\~\c
1422.unit u ).
1423.
1424.
1425.x-command s
1426.xsub stop
1427Terminates the processing of the current file; issued as the last
1309command of any intermediate troff output.
1428command of any
1429.I intermediate @g@troff
1430.IR output .
1310.
1311.
1312.x-command t
1313.xsub trailer
1314Generate trailer information, if any.
1315.
1316In
1431.
1432.
1433.x-command t
1434.xsub trailer
1435Generate trailer information, if any.
1436.
1437In
1317.IR groff ,
1438.BR groff ,
1318this is actually just ignored.
1319.
1320.
1321.x-command T xxx
1322.xsub Typesetter
1323Set name of device to word
1324.argument xxx ,
1325a sequence of characters ended by the next whitespace character.
1326.
1327The possible device names coincide with those from the groff
1328.B -T
1329option.
1330.
1439this is actually just ignored.
1440.
1441.
1442.x-command T xxx
1443.xsub Typesetter
1444Set name of device to word
1445.argument xxx ,
1446a sequence of characters ended by the next whitespace character.
1447.
1448The possible device names coincide with those from the groff
1449.B -T
1450option.
1451.
1331This is the first command of the prologue.
1452This is the first command of the
1453.IR prologue .
1332.
1333.
1334.x-command u n
1335.xsub underline
1336Configure underlining of spaces.
1337.
1338If
1339.argument n
1340is\~1, start underlining of spaces;
1341if
1342.argument n
1343is\~0, stop underlining of spaces.
1344.
1345This is needed for the
1346.B cu
1347request in
1454.
1455.
1456.x-command u n
1457.xsub underline
1458Configure underlining of spaces.
1459.
1460If
1461.argument n
1462is\~1, start underlining of spaces;
1463if
1464.argument n
1465is\~0, stop underlining of spaces.
1466.
1467This is needed for the
1468.B cu
1469request in
1348.I nroff
1470.B @g@nroff
1349mode and is ignored otherwise.
1350.
1471mode and is ignored otherwise.
1472.
1351This command is a groff extension.
1473This command is a
1474.I groff
1475extension.
1352.
1353.
1354.x-command X anything
1355.xsub X-escape
1356Send string
1357.argument anything
1358uninterpreted to the device.
1359.
1360If the line following this command starts with a
1361.B +
1362character this line is interpreted as a continuation line in the
1363following sense.
1364.
1365The
1366.B +
1367is ignored, but a newline character is sent instead to the device, the
1368rest of the line is sent uninterpreted.
1369.
1370The same applies to all following lines until the first character of a
1371line is not a
1372.B +
1373character.
1374.
1375This command is generated by the
1376.I groff
1377escape sequence
1378.BR \*[@backslash]X .
1379.
1476.
1477.
1478.x-command X anything
1479.xsub X-escape
1480Send string
1481.argument anything
1482uninterpreted to the device.
1483.
1484If the line following this command starts with a
1485.B +
1486character this line is interpreted as a continuation line in the
1487following sense.
1488.
1489The
1490.B +
1491is ignored, but a newline character is sent instead to the device, the
1492rest of the line is sent uninterpreted.
1493.
1494The same applies to all following lines until the first character of a
1495line is not a
1496.B +
1497character.
1498.
1499This command is generated by the
1500.I groff
1501escape sequence
1502.BR \*[@backslash]X .
1503.
1380The line-continuing feature is a groff extension.
1504The line-continuing feature is a
1505.I groff
1506extension.
1381.
1382.
1383.\" --------------------------------------------------------------------
1384.SS "Obsolete Command"
1385.\" --------------------------------------------------------------------
1386.
1387In
1388.I classical troff
1389output, the writing of a single character was mostly done by a very
1390strange command that combined a horizontal move and the printing of a
1391character.
1392.
1393It didn't have a command code, but is represented by a 3-character
1394argument consisting of exactly 2\~digits and a character.
1395.
1396.TP
1397.argument ddc
1398Move right
1399.argument dd
1400(exactly two decimal digits) basic units\~\c
1401.unit u ,
1402then print character\~\c
1403.argument c .
1404.
1507.
1508.
1509.\" --------------------------------------------------------------------
1510.SS "Obsolete Command"
1511.\" --------------------------------------------------------------------
1512.
1513In
1514.I classical troff
1515output, the writing of a single character was mostly done by a very
1516strange command that combined a horizontal move and the printing of a
1517character.
1518.
1519It didn't have a command code, but is represented by a 3-character
1520argument consisting of exactly 2\~digits and a character.
1521.
1522.TP
1523.argument ddc
1524Move right
1525.argument dd
1526(exactly two decimal digits) basic units\~\c
1527.unit u ,
1528then print character\~\c
1529.argument c .
1530.
1531.
1405.RS
1406.P
1532.RS
1533.P
1407In groff, arbitrary syntactical space around and within this command
1408is allowed to be added.
1534In
1535.IR groff ,
1536arbitrary
1537.I syntactical space
1538around and within this command is allowed to be added.
1409.
1410Only when a preceding command on the same line ends with an argument
1411of variable length a separating space is obligatory.
1412.
1413In
1414.I classical
1415.IR troff ,
1416large clusters of these and other commands were used, mostly without
1417spaces; this made such output almost unreadable.
1418.
1419.RE
1420.
1539.
1540Only when a preceding command on the same line ends with an argument
1541of variable length a separating space is obligatory.
1542.
1543In
1544.I classical
1545.IR troff ,
1546large clusters of these and other commands were used, mostly without
1547spaces; this made such output almost unreadable.
1548.
1549.RE
1550.
1551.
1421.P
1422For modern high-resolution devices, this command does not make sense
1423because the width of the characters can become much larger than two
1424decimal digits.
1425.
1552.P
1553For modern high-resolution devices, this command does not make sense
1554because the width of the characters can become much larger than two
1555decimal digits.
1556.
1426In groff, this is only used for the devices
1557In
1558.BR groff ,
1559this is only used for the devices
1427.BR X75 ,
1428.BR X75-12 ,
1429.BR X100 ,
1430and
1431.BR X100-12 .
1432.
1433For other devices,
1434the commands
1435.B t
1436and\~\c
1437.B u
1438provide a better functionality.
1439.
1440.
1441.\" --------------------------------------------------------------------
1442.SH "POSTPROCESSING"
1443.\" --------------------------------------------------------------------
1444.
1445The
1446.I roff
1447postprocessors are programs that have the task to translate the
1560.BR X75 ,
1561.BR X75-12 ,
1562.BR X100 ,
1563and
1564.BR X100-12 .
1565.
1566For other devices,
1567the commands
1568.B t
1569and\~\c
1570.B u
1571provide a better functionality.
1572.
1573.
1574.\" --------------------------------------------------------------------
1575.SH "POSTPROCESSING"
1576.\" --------------------------------------------------------------------
1577.
1578The
1579.I roff
1580postprocessors are programs that have the task to translate the
1448intermediate output into actions that are sent to a device.
1581.I intermediate output
1582into actions that are sent to a device.
1449.
1450A device can be some piece of hardware such as a printer, or a software
1451file format suitable for graphical or text processing.
1452.
1453The
1454.I groff
1455system provides powerful means that make the programming of such
1456postprocessors an easy task.
1457.P
1583.
1584A device can be some piece of hardware such as a printer, or a software
1585file format suitable for graphical or text processing.
1586.
1587The
1588.I groff
1589system provides powerful means that make the programming of such
1590postprocessors an easy task.
1591.P
1458There is a library function that parses the intermediate output and
1459sends the information obtained to the device via methods of a class
1460with a common interface for each device.
1592There is a library function that parses the
1593.I intermediate output
1594and sends the information obtained to the device via methods of a
1595class with a common interface for each device.
1461.
1462So a
1463.I groff
1464postprocessor must only redefine the methods of this class.
1465.
1466For details, see the reference in section
1467.BR FILES .
1468.
1469.
1470.\" --------------------------------------------------------------------
1471.SH "EXAMPLES"
1472.\" --------------------------------------------------------------------
1473.
1596.
1597So a
1598.I groff
1599postprocessor must only redefine the methods of this class.
1600.
1601For details, see the reference in section
1602.BR FILES .
1603.
1604.
1605.\" --------------------------------------------------------------------
1606.SH "EXAMPLES"
1607.\" --------------------------------------------------------------------
1608.
1474This section presents the intermediate output generated from the same
1475input for three different devices.
1609This section presents the
1610.I intermediate output
1611generated from the same input for three different devices.
1476.
1477The input is the sentence
1478.I hell world
1612.
1613The input is the sentence
1614.I hell world
1479fed into groff on the command line.
1615fed into
1616.B groff
1617on the command line.
1480.
1618.
1619.
1481.Topic
1482High-resolution device
1483.I ps
1484.
1620.Topic
1621High-resolution device
1622.I ps
1623.
1485.RS
1486.
1624.
1625.RS
1487.P
1488.ShellCommand echo "hell world" | groff -Z -T ps
1489.
1626.P
1627.ShellCommand echo "hell world" | groff -Z -T ps
1628.
1629.
1490.P
1491.nf
1492.ft CB
1493x T ps
1494x res 72000 1 1
1495x init
1496p1
1497x font 5 TR
1498f5
1499s10000
1500V12000
1501H72000
1502thell
1503wh2500
1504tw
1505H96620
1506torld
1507n12000 0
1508x trailer
1509V792000
1510x stop
1511.ft P
1512.fi
1513.RE
1514.
1630.P
1631.nf
1632.ft CB
1633x T ps
1634x res 72000 1 1
1635x init
1636p1
1637x font 5 TR
1638f5
1639s10000
1640V12000
1641H72000
1642thell
1643wh2500
1644tw
1645H96620
1646torld
1647n12000 0
1648x trailer
1649V792000
1650x stop
1651.ft P
1652.fi
1653.RE
1654.
1655.
1515.P
1516This output can be fed into the postprocessor
1517.BR grops (@MAN1EXT@)
1518to get its representation as a PostScript file.
1519.
1520.
1521.Topic
1522Low-resolution device
1523.I latin1
1524.
1656.P
1657This output can be fed into the postprocessor
1658.BR grops (@MAN1EXT@)
1659to get its representation as a PostScript file.
1660.
1661.
1662.Topic
1663Low-resolution device
1664.I latin1
1665.
1525.RS
1526.
1666.
1667.RS
1527.P
1528This is similar to the high-resolution device except that the
1529positioning is done at a minor scale.
1530.
1531Some comments (lines starting with
1532.IR # )
1533were added for clarification; they were not generated by the
1534formatter.
1535.
1668.P
1669This is similar to the high-resolution device except that the
1670positioning is done at a minor scale.
1671.
1672Some comments (lines starting with
1673.IR # )
1674were added for clarification; they were not generated by the
1675formatter.
1676.
1677.
1536.P
1537.ShellCommand echo "hell world" | groff -Z -T latin1
1538.
1678.P
1679.ShellCommand echo "hell world" | groff -Z -T latin1
1680.
1681.
1539.P
1540.nf
1682.P
1683.nf
1541.I # prologue
1684.I "# prologue"
1542.ft CB
1543x T latin1
1544x res 240 24 40
1545x init
1685.ft CB
1686x T latin1
1687x res 240 24 40
1688x init
1546.I # begin a new page
1689.I "# begin a new page"
1547.ft CB
1548p1
1690.ft CB
1691p1
1549.I # font setup
1692.I "# font setup"
1550.ft CB
1551x font 1 R
1552f1
1553s10
1693.ft CB
1694x font 1 R
1695f1
1696s10
1554.I # initial positioning on the page
1697.I "# initial positioning on the page"
1555.ft CB
1556V40
1557H0
1698.ft CB
1699V40
1700H0
1558.I # write text `hell'
1701.I "# write text `hell'"
1559.ft CB
1560thell
1702.ft CB
1703thell
1561.I # inform about a space, and do it by a horizontal jump
1704.I "# inform about a space, and do it by a horizontal jump"
1562.ft CB
1563wh24
1705.ft CB
1706wh24
1564.I # write text `world'
1707.I "# write text `world'"
1565.ft CB
1566tworld
1708.ft CB
1709tworld
1567.I # announce line break, but do nothing because ...
1710.I "# announce line break, but do nothing because ..."
1568.ft CB
1569n40 0
1711.ft CB
1712n40 0
1570.I # ... the end of the document has been reached
1713.I "# ... the end of the document has been reached"
1571.ft CB
1572x trailer
1573V2640
1574x stop
1575.ft P
1576.fi
1577.RE
1578.
1714.ft CB
1715x trailer
1716V2640
1717x stop
1718.ft P
1719.fi
1720.RE
1721.
1722.
1579.P
1580This output can be fed into the postprocessor
1581.BR grotty (@MAN1EXT@)
1582to get a formatted text document.
1583.
1584.
1585.Topic
1586Classical style output
1587.
1723.P
1724This output can be fed into the postprocessor
1725.BR grotty (@MAN1EXT@)
1726to get a formatted text document.
1727.
1728.
1729.Topic
1730Classical style output
1731.
1588.RS
1589.
1732.
1733.RS
1590.P
1591As a computer monitor has a very low resolution compared to modern
1734.P
1735As a computer monitor has a very low resolution compared to modern
1592printers the intermediate output for the X\~devices can use the
1593jump-and-write command with its 2-digit displacements.
1736printers the
1737.I intermediate output
1738for the X\~devices can use the jump-and-write command with its 2-digit
1739displacements.
1594.
1740.
1741.
1595.P
1596.ShellCommand echo "hell world" | groff -Z -T X100
1597.
1742.P
1743.ShellCommand echo "hell world" | groff -Z -T X100
1744.
1745.
1598.P
1599.nf
1600.ft CB
1601x T X100
1602x res 100 1 1
1603x init
1604p1
1605x font 5 TR
1606f5
1607s10
1608V16
1609H100
1746.P
1747.nf
1748.ft CB
1749x T X100
1750x res 100 1 1
1751x init
1752p1
1753x font 5 TR
1754f5
1755s10
1756V16
1757H100
1610.I # write text with old-style jump-and-write command
1758.I "# write text with old-style jump-and-write command"
1611.ft CB
1612ch07e07l03lw06w11o07r05l03dh7
1613n16 0
1614x trailer
1615V1100
1616x stop
1617.ft P
1618.fi
1619.RE
1620.
1759.ft CB
1760ch07e07l03lw06w11o07r05l03dh7
1761n16 0
1762x trailer
1763V1100
1764x stop
1765.ft P
1766.fi
1767.RE
1768.
1769.
1621.P
1622This output can be fed into the postprocessor
1770.P
1771This output can be fed into the postprocessor
1623.BR xditview (1x)
1772.BR \%xditview (1x)
1624or
1773or
1625.BR gxditview (@MAN1EXT@)
1774.BR \%gxditview (@MAN1EXT@)
1626for displaying in\~X.
1627.
1775for displaying in\~X.
1776.
1777.
1628.P
1629Due to the obsolete jump-and-write command, the text clusters in the
1630classical output are almost unreadable.
1631.
1632.
1633.\" --------------------------------------------------------------------
1634.SH "COMPATIBILITY"
1635.\" --------------------------------------------------------------------
1636.
1778.P
1779Due to the obsolete jump-and-write command, the text clusters in the
1780classical output are almost unreadable.
1781.
1782.
1783.\" --------------------------------------------------------------------
1784.SH "COMPATIBILITY"
1785.\" --------------------------------------------------------------------
1786.
1637The intermediate output language of the
1787The
1788.I intermediate output
1789language of the
1638.I classical troff
1639was first documented in
1790.I classical troff
1791was first documented in
1640.IR [97] .
1792.IR [CSTR\~#97] .
1641.
1642The
1793.
1794The
1643.I groff
1644intermediate output format is compatible with this specification
1645except for the following features.
1795.I groff intermediate output
1796format is compatible with this specification except for the following
1797features.
1798.
1799.
1646.Topic
1647The classical quasi device independence is not yet implemented.
1648.
1800.Topic
1801The classical quasi device independence is not yet implemented.
1802.
1803.
1649.Topic
1650The old hardware was very different from what we use today.
1651.
1804.Topic
1805The old hardware was very different from what we use today.
1806.
1652So the groff devices are also fundamentally different from the ones in
1653classical troff.
1807So the
1808.I groff
1809devices are also fundamentally different from the ones in
1810.I classical
1811.IR troff .
1654.
1655For example, the classical PostScript device was called
1656.I post
1657and had a resolution of 720 units per inch,
1812.
1813For example, the classical PostScript device was called
1814.I post
1815and had a resolution of 720 units per inch,
1658while groff's
1816while
1817.IR groff 's
1659.I ps
1660device has a resolution of 72000 units per inch.
1661.
1662Maybe, by implementing some rescaling mechanism similar to the
1663classical quasi device independence, these could be integrated into
1818.I ps
1819device has a resolution of 72000 units per inch.
1820.
1821Maybe, by implementing some rescaling mechanism similar to the
1822classical quasi device independence, these could be integrated into
1664modern groff.
1823modern
1824.IR groff .
1665.
1825.
1826.
1666.Topic
1667The B-spline command
1668.B D~
1827.Topic
1828The B-spline command
1829.B D~
1669is correctly handled by the intermediate output parser, but the
1670drawing routines aren't implemented in some of the postprocessor
1671programs.
1830is correctly handled by the
1831.I intermediate output
1832parser, but the drawing routines aren't implemented in some of the
1833postprocessor programs.
1834.
1835.
1672.Topic
1673The argument of the commands
1674.B s
1675and
1676.B x H
1677has the implicit unit scaled point\~\c
1678.unit z
1836.Topic
1837The argument of the commands
1838.B s
1839and
1840.B x H
1841has the implicit unit scaled point\~\c
1842.unit z
1679in groff, while classical troff had point (\c
1843in
1844.IR groff ,
1845while
1846.I classical troff
1847had point (\c
1680.unit p ).
1681.
1848.unit p ).
1849.
1682This isn't an incompatibility, but a compatible extension,
1683for both units coincide for all devices without a
1850This isn't an incompatibility, but a compatible extension, for both
1851units coincide for all devices without a
1684.I sizescale
1852.I sizescale
1685parameter, including all classical and the groff text devices.
1853parameter, including all classical and the
1854.I groff
1855text devices.
1686.
1856.
1687The few groff devices with a sizescale parameter either did
1688not exist, had a different name, or seem to have had a different
1689resolution.
1857The few
1858.I groff
1859devices with a sizescale parameter either did not exist, had a
1860different name, or seem to have had a different resolution.
1690.
1691So conflicts with classical devices are very unlikely.
1692.
1861.
1862So conflicts with classical devices are very unlikely.
1863.
1864.
1693.ie (\n[@STUPID_DRAWING_POSITIONING] == 1) \{\
1694.Topic
1695The position changing after the commands
1696.BR Dp ,
1697.BR DP ,
1698and
1699.B Dt
1700is illogical, but as old versions of groff used this feature it is
1701kept for compatibility reasons.
1702.\} \" @STUPID_DRAWING_POSITIONING
1703.el \{\
1704.Topic
1705Temporarily, there existed some confusion on the positioning after the
1706.B D
1865.ie (\n[@STUPID_DRAWING_POSITIONING] == 1) \{\
1866.Topic
1867The position changing after the commands
1868.BR Dp ,
1869.BR DP ,
1870and
1871.B Dt
1872is illogical, but as old versions of groff used this feature it is
1873kept for compatibility reasons.
1874.\} \" @STUPID_DRAWING_POSITIONING
1875.el \{\
1876.Topic
1877Temporarily, there existed some confusion on the positioning after the
1878.B D
1707commands that are groff extensions.
1879commands that are
1880.I groff
1881extensions.
1708.
1709This has been clarified by establishing the classical rule for all
1710groff drawing commands:
1711.
1882.
1883This has been clarified by establishing the classical rule for all
1884groff drawing commands:
1885.
1886.
1712.RS
1713.P
1887.RS
1888.P
1714.I The position after a graphic object has been drawn is at its end;
1715.I for circles and ellipses, the "end" is at the right side.
1889.ft I
1890The position after a graphic object has been drawn is at its end;
1891for circles and ellipses, the "end" is at the right side.
1892.ft
1716.RE
1717.
1893.RE
1894.
1895.
1718.P
1719From this, the positionings specified for the drawing commands above
1720follow quite naturally.
1721.\} \" @STUPID_DRAWING_POSITIONING
1722.
1723.P
1896.P
1897From this, the positionings specified for the drawing commands above
1898follow quite naturally.
1899.\} \" @STUPID_DRAWING_POSITIONING
1900.
1901.P
1724The differences between groff and classical troff are documented in
1902The differences between
1903.I groff
1904and
1905.I classical troff
1906are documented in
1725.BR groff_diff (@MAN7EXT@).
1726.
1727.
1728.\" --------------------------------------------------------------------
1729.SH "FILES"
1730.\" --------------------------------------------------------------------
1731.
1732.TP
1733.BI @FONTDIR@/dev name /DESC
1734Device description file for device
1735.IR name .
1736.
1737.TP
1738.IB \[la]groff_source_dir\[ra] /src/libs/libdriver/input.cpp
1907.BR groff_diff (@MAN7EXT@).
1908.
1909.
1910.\" --------------------------------------------------------------------
1911.SH "FILES"
1912.\" --------------------------------------------------------------------
1913.
1914.TP
1915.BI @FONTDIR@/dev name /DESC
1916Device description file for device
1917.IR name .
1918.
1919.TP
1920.IB \[la]groff_source_dir\[ra] /src/libs/libdriver/input.cpp
1739Defines the parser and postprocessor for the intermediate output.
1921Defines the parser and postprocessor for the
1922.I intermediate
1923.IR output .
1740.
1741It is located relative to the top directory of the
1742.I groff
1743source tree, e.g.
1744.IR @GROFFSRCDIR@ .
1745.
1746This parser is the definitive specification of the
1924.
1925It is located relative to the top directory of the
1926.I groff
1927source tree, e.g.
1928.IR @GROFFSRCDIR@ .
1929.
1930This parser is the definitive specification of the
1747.I groff
1748intermediate output format.
1931.I groff intermediate output
1932format.
1749.
1750.
1751.\" --------------------------------------------------------------------
1752.SH "SEE ALSO"
1753.\" --------------------------------------------------------------------
1754.
1755A reference like
1756.BR groff (@MAN7EXT@)
1757refers to a manual page; here
1933.
1934.
1935.\" --------------------------------------------------------------------
1936.SH "SEE ALSO"
1937.\" --------------------------------------------------------------------
1938.
1939A reference like
1940.BR groff (@MAN7EXT@)
1941refers to a manual page; here
1758.I groff
1942.B groff
1759in section\~\c
1760.I @MAN7EXT@
1761of the man-page documentation system.
1762.
1763To read the example, look up section\~@MAN7EXT@ in your desktop help
1764system or call from the shell prompt
1765.
1943in section\~\c
1944.I @MAN7EXT@
1945of the man-page documentation system.
1946.
1947To read the example, look up section\~@MAN7EXT@ in your desktop help
1948system or call from the shell prompt
1949.
1950.
1766.RS
1767.P
1768.ShellCommand man @MAN7EXT@ groff
1769.RE
1770.
1951.RS
1952.P
1953.ShellCommand man @MAN7EXT@ groff
1954.RE
1955.
1956.
1771.P
1772For more details, see
1773.BR man (1).
1774.
1957.P
1958For more details, see
1959.BR man (1).
1960.
1961.
1775.TP
1776.BR groff (@MAN1EXT@)
1777option
1778.B -Z
1779and further readings on groff.
1780.
1962.TP
1963.BR groff (@MAN1EXT@)
1964option
1965.B -Z
1966and further readings on groff.
1967.
1968.
1781.TP
1782.BR groff (@MAN7EXT@)
1783for details of the
1784.I groff
1785language such as numerical units and escape sequences.
1786.
1969.TP
1970.BR groff (@MAN7EXT@)
1971for details of the
1972.I groff
1973language such as numerical units and escape sequences.
1974.
1975.
1787.TP
1788.BR groff_font (@MAN5EXT@)
1789for details on the device scaling parameters of the
1790.B DESC
1791file.
1792.
1976.TP
1977.BR groff_font (@MAN5EXT@)
1978for details on the device scaling parameters of the
1979.B DESC
1980file.
1981.
1982.
1793.TP
1983.TP
1794.BR troff (@MAN1EXT@)
1984.BR @g@troff (@MAN1EXT@)
1795generates the device-independent intermediate output.
1796.
1985generates the device-independent intermediate output.
1986.
1987.
1797.TP
1798.BR roff (@MAN7EXT@)
1799for historical aspects and the general structure of roff systems.
1800.
1988.TP
1989.BR roff (@MAN7EXT@)
1990for historical aspects and the general structure of roff systems.
1991.
1992.
1801.TP
1802.BR groff_diff (@MAN7EXT@)
1803The differences between the intermediate output in groff and classical
1804troff.
1805.
1993.TP
1994.BR groff_diff (@MAN7EXT@)
1995The differences between the intermediate output in groff and classical
1996troff.
1997.
1998.
1999.TP
2000.BR gxditview (@MAN1EXT@)
2001Viewer for the
2002.I intermediate
2003.IR output .
2004.
2005.
1806.P
1807.BR \%grodvi (@MAN1EXT@),
1808.BR \%grohtml (@MAN1EXT@),
1809.BR \%grolbp (@MAN1EXT@),
1810.BR \%grolj4 (@MAN1EXT@),
1811.BR \%grops (@MAN1EXT@),
1812.BR \%grotty (@MAN1EXT@)
1813.br
1814.RS
1815the groff postprocessor programs.
1816.RE
1817.
2006.P
2007.BR \%grodvi (@MAN1EXT@),
2008.BR \%grohtml (@MAN1EXT@),
2009.BR \%grolbp (@MAN1EXT@),
2010.BR \%grolj4 (@MAN1EXT@),
2011.BR \%grops (@MAN1EXT@),
2012.BR \%grotty (@MAN1EXT@)
2013.br
2014.RS
2015the groff postprocessor programs.
2016.RE
2017.
2018.
1818.P
1819For a treatment of all aspects of the groff system within a single
1820document, see the
1821.I groff info
1822.IR file .
1823.
1824It can be read within the integrated help systems, within
1825.BR emacs (1)
1826or from the shell prompt by
1827.
1828.RS
1829.ShellCommand info groff
1830.RE
1831.
2019.P
2020For a treatment of all aspects of the groff system within a single
2021document, see the
2022.I groff info
2023.IR file .
2024.
2025It can be read within the integrated help systems, within
2026.BR emacs (1)
2027or from the shell prompt by
2028.
2029.RS
2030.ShellCommand info groff
2031.RE
2032.
2033.
1832.P
1833The
1834.I classical troff output language
1835is described in two AT&T Bell Labs CSTR documents available on-line at
1836.URL http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr.html \
1837 "Bell Labs CSTR site" .
1838.
2034.P
2035The
2036.I classical troff output language
2037is described in two AT&T Bell Labs CSTR documents available on-line at
2038.URL http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr.html \
2039 "Bell Labs CSTR site" .
2040.
2041.
1839.TP
1840.I [CSTR #97]
1841.I A Typesetter-independent TROFF
1842by
1843.I Brian Kernighan
1844is the original and most concise documentation on the output language;
1845see
1846.URL http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:97.ps.gz CSTR\~#97 .
1847.
2042.TP
2043.I [CSTR #97]
2044.I A Typesetter-independent TROFF
2045by
2046.I Brian Kernighan
2047is the original and most concise documentation on the output language;
2048see
2049.URL http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:97.ps.gz CSTR\~#97 .
2050.
2051.
1848.TP
1849.I [CSTR\~#54]
1850The 1992 revision of the
1851.I Nroff/\:Troff User's Manual
1852by
1853.I J.\& F.\& Osanna
1854and
1855.I Brian Kernighan
1856isn't as concise as
1857.I [CSTR\~#97]
2052.TP
2053.I [CSTR\~#54]
2054The 1992 revision of the
2055.I Nroff/\:Troff User's Manual
2056by
2057.I J.\& F.\& Osanna
2058and
2059.I Brian Kernighan
2060isn't as concise as
2061.I [CSTR\~#97]
1858regarding the output language;
1859see
2062regarding the output language; see
1860.URL http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:54.ps.gz CSTR\~#54 .
1861.
1862.
1863.\" --------------------------------------------------------------------
1864.SH "AUTHORS"
1865.\" --------------------------------------------------------------------
1866.
2063.URL http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:54.ps.gz CSTR\~#54 .
2064.
2065.
2066.\" --------------------------------------------------------------------
2067.SH "AUTHORS"
2068.\" --------------------------------------------------------------------
2069.
1867Copyright (C) 1989, 2001, 2002, 2003 Free Software Foundation, Inc.
2070Copyright (C) 1989, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
2071.
2072.
1868.P
1869This document is distributed under the terms of the FDL (GNU Free
1870Documentation License) version 1.1 or later.
1871.
1872You should have received a copy of the FDL with this package; it is also
1873available on-line at the
1874.URL http://\:www.gnu.org/\:copyleft/\:fdl.html "GNU copyleft site" .
1875.
2073.P
2074This document is distributed under the terms of the FDL (GNU Free
2075Documentation License) version 1.1 or later.
2076.
2077You should have received a copy of the FDL with this package; it is also
2078available on-line at the
2079.URL http://\:www.gnu.org/\:copyleft/\:fdl.html "GNU copyleft site" .
2080.
2081.
1876.P
1877This document is part of
1878.IR groff ,
2082.P
2083This document is part of
2084.IR groff ,
1879the GNU roff distribution.
2085the GNU
2086.I roff
2087distribution.
1880.
1881It is based on a former version \- published under the GPL \- that
1882described only parts of the
1883.I groff
1884extensions of the output language.
1885.
2088.
2089It is based on a former version \- published under the GPL \- that
2090described only parts of the
2091.I groff
2092extensions of the output language.
2093.
1886It has been rewritten 2002 by
1887.MTO bwarken@mayn.de "Bernd Warken"
1888and is maintained by
2094It has been rewritten 2002 by \m[blue]Bernd Warken\m[] and is
2095maintained by
1889.MTO wl@gnu.org "Werner Lemberg" .
1890.
2096.MTO wl@gnu.org "Werner Lemberg" .
2097.
2098.cp \n[groff_out_C]
2099.
1891.\" --------------------------------------------------------------------
1892.\" Emacs settings
1893.\" --------------------------------------------------------------------
1894.\"
1895.\" Local Variables:
1896.\" mode: nroff
1897.\" End:
2100.\" --------------------------------------------------------------------
2101.\" Emacs settings
2102.\" --------------------------------------------------------------------
2103.\"
2104.\" Local Variables:
2105.\" mode: nroff
2106.\" End: