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:
|