xref: /netbsd-src/external/gpl2/groff/dist/doc/groff-2 (revision 89a07cf815a29524268025a1139fac4c5190f765)
1*89a07cf8SchristosThis is groff, produced by makeinfo version 4.8 from ./groff.texinfo.
2*89a07cf8Schristos
3*89a07cf8Schristos   This manual documents GNU `troff' version 1.19.2.
4*89a07cf8Schristos
5*89a07cf8Schristos   Copyright (C) 1994-2000, 2001, 2002, 2003, 2004, 2005 Free Software
6*89a07cf8SchristosFoundation, Inc.
7*89a07cf8Schristos
8*89a07cf8Schristos     Permission is granted to copy, distribute and/or modify this
9*89a07cf8Schristos     document under the terms of the GNU Free Documentation License,
10*89a07cf8Schristos     Version 1.1 or any later version published by the Free Software
11*89a07cf8Schristos     Foundation; with no Invariant Sections, with the Front-Cover texts
12*89a07cf8Schristos     being `A GNU Manual," and with the Back-Cover Texts as in (a)
13*89a07cf8Schristos     below.  A copy of the license is included in the section entitled
14*89a07cf8Schristos     `GNU Free Documentation License."
15*89a07cf8Schristos
16*89a07cf8Schristos     (a) The FSF's Back-Cover Text is: `You have freedom to copy and
17*89a07cf8Schristos     modify this GNU Manual, like GNU software.  Copies published by
18*89a07cf8Schristos     the Free Software Foundation raise funds for GNU development."
19*89a07cf8Schristos
20*89a07cf8SchristosINFO-DIR-SECTION Typesetting
21*89a07cf8SchristosSTART-INFO-DIR-ENTRY
22*89a07cf8Schristos* Groff: (groff).               The GNU troff document formatting system.
23*89a07cf8SchristosEND-INFO-DIR-ENTRY
24*89a07cf8Schristos
25*89a07cf8Schristos
26*89a07cf8SchristosFile: groff,  Node: Drawing Requests,  Next: Traps,  Prev: Page Motions,  Up: gtroff Reference
27*89a07cf8Schristos
28*89a07cf8Schristos5.23 Drawing Requests
29*89a07cf8Schristos=====================
30*89a07cf8Schristos
31*89a07cf8Schristos`gtroff' provides a number of ways to draw lines and other figures on
32*89a07cf8Schristosthe page.  Used in combination with the page motion commands (see *Note
33*89a07cf8SchristosPage Motions::, for more info), a wide variety of figures can be drawn.
34*89a07cf8SchristosHowever, for complex drawings these operations can be quite
35*89a07cf8Schristoscumbersome, and it may be wise to use graphic preprocessors like `gpic'
36*89a07cf8Schristosor `ggrn'.  *Note gpic::, and *Note ggrn::, for more information.
37*89a07cf8Schristos
38*89a07cf8Schristos   All drawing is done via escapes.
39*89a07cf8Schristos
40*89a07cf8Schristos -- Escape: \l'l'
41*89a07cf8Schristos -- Escape: \l'lg'
42*89a07cf8Schristos     Draw a line horizontally.  L is the length of the line to be
43*89a07cf8Schristos     drawn.  If it is positive, start the line at the current location
44*89a07cf8Schristos     and draw to the right; its end point is the new current location.
45*89a07cf8Schristos     Negative values are handled differently: The line starts at the
46*89a07cf8Schristos     current location and draws to the left, but the current location
47*89a07cf8Schristos     doesn't move.
48*89a07cf8Schristos
49*89a07cf8Schristos     L can also be specified absolutely (i.e. with a leading `|') which
50*89a07cf8Schristos     draws back to the beginning of the input line.  Default scaling
51*89a07cf8Schristos     indicator is `m'.
52*89a07cf8Schristos
53*89a07cf8Schristos     The optional second parameter G is a glyph to draw the line with.
54*89a07cf8Schristos     If this second argument is not specified, `gtroff' uses the
55*89a07cf8Schristos     underscore glyph, `\[ru]'.
56*89a07cf8Schristos
57*89a07cf8Schristos     To separate the two arguments (to prevent `gtroff' from
58*89a07cf8Schristos     interpreting a drawing glyph as a scaling indicator if the glyph is
59*89a07cf8Schristos     represented by a single character) use `\&'.
60*89a07cf8Schristos
61*89a07cf8Schristos     Here a small useful example:
62*89a07cf8Schristos
63*89a07cf8Schristos
64*89a07cf8Schristos          .de box
65*89a07cf8Schristos          \[br]\\$*\[br]\l'|0\[rn]'\l'|0\[ul]'
66*89a07cf8Schristos          ..
67*89a07cf8Schristos
68*89a07cf8Schristos     Note that this works by outputting a box rule (a vertical line),
69*89a07cf8Schristos     then the text given as an argument and then another box rule.
70*89a07cf8Schristos     Finally, the line drawing escapes both draw from the current
71*89a07cf8Schristos     location to the beginning of the _input_ line - this works because
72*89a07cf8Schristos     the line length is negative, not moving the current point.
73*89a07cf8Schristos
74*89a07cf8Schristos -- Escape: \L'l'
75*89a07cf8Schristos -- Escape: \L'lg'
76*89a07cf8Schristos     Draw vertical lines.  Its parameters are similar to the `\l'
77*89a07cf8Schristos     escape, except that the default scaling indicator is `v'.  The
78*89a07cf8Schristos     movement is downwards for positive values, and upwards for
79*89a07cf8Schristos     negative values.  The default glyph is the box rule glyph,
80*89a07cf8Schristos     `\[br]'.  As with the vertical motion escapes, text processing
81*89a07cf8Schristos     blindly continues where the line ends.
82*89a07cf8Schristos
83*89a07cf8Schristos
84*89a07cf8Schristos          This is a \L'3v'test.
85*89a07cf8Schristos
86*89a07cf8Schristos     Here the result, produced with `grotty'.
87*89a07cf8Schristos
88*89a07cf8Schristos
89*89a07cf8Schristos          This is a
90*89a07cf8Schristos                    |
91*89a07cf8Schristos                    |
92*89a07cf8Schristos                    |test.
93*89a07cf8Schristos
94*89a07cf8Schristos
95*89a07cf8Schristos -- Escape: \D'command arg ...'
96*89a07cf8Schristos     The `\D' escape provides a variety of drawing functions.  Note
97*89a07cf8Schristos     that on character devices, only vertical and horizontal lines are
98*89a07cf8Schristos     supported within `grotty'; other devices may only support a subset
99*89a07cf8Schristos     of the available drawing functions.
100*89a07cf8Schristos
101*89a07cf8Schristos     The default scaling indicator for all subcommands of `\D' is `m'
102*89a07cf8Schristos     for horizontal distances and `v' for vertical ones.  Exceptions
103*89a07cf8Schristos     are `\D'f ...'' and `\D't ...'' which use `u' as the default, and
104*89a07cf8Schristos     `\D'FX ...'' which arguments are treated similar to the `defcolor'
105*89a07cf8Schristos     request.
106*89a07cf8Schristos
107*89a07cf8Schristos    `\D'l DX DY''
108*89a07cf8Schristos          Draw a line from the current location to the relative point
109*89a07cf8Schristos          specified by (DX,DY), where positive values mean down and
110*89a07cf8Schristos          right, respectively.  The end point of the line is the new
111*89a07cf8Schristos          current location.
112*89a07cf8Schristos
113*89a07cf8Schristos          The following example is a macro for creating a box around a
114*89a07cf8Schristos          text string; for simplicity, the box margin is taken as a
115*89a07cf8Schristos          fixed value, 0.2m.
116*89a07cf8Schristos
117*89a07cf8Schristos
118*89a07cf8Schristos               .de BOX
119*89a07cf8Schristos               .  nr @wd \w'\\$1'
120*89a07cf8Schristos               \h'.2m'\
121*89a07cf8Schristos               \h'-.2m'\v'(.2m - \\n[rsb]u)'\
122*89a07cf8Schristos               \D'l 0 -(\\n[rst]u - \\n[rsb]u + .4m)'\
123*89a07cf8Schristos               \D'l (\\n[@wd]u + .4m) 0'\
124*89a07cf8Schristos               \D'l 0 (\\n[rst]u - \\n[rsb]u + .4m)'\
125*89a07cf8Schristos               \D'l -(\\n[@wd]u + .4m) 0'\
126*89a07cf8Schristos               \h'.2m'\v'-(.2m - \\n[rsb]u)'\
127*89a07cf8Schristos               \\$1\
128*89a07cf8Schristos               \h'.2m'
129*89a07cf8Schristos               ..
130*89a07cf8Schristos
131*89a07cf8Schristos          First, the width of the string is stored in register `@wd'.
132*89a07cf8Schristos          Then, four lines are drawn to form a box, properly offset by
133*89a07cf8Schristos          the box margin.  The registers `rst' and `rsb' are set by the
134*89a07cf8Schristos          `\w' escape, containing the largest height and depth of the
135*89a07cf8Schristos          whole string.
136*89a07cf8Schristos
137*89a07cf8Schristos    `\D'c D''
138*89a07cf8Schristos          Draw a circle with a diameter of D with the leftmost point at
139*89a07cf8Schristos          the current position.  After drawing, the current location is
140*89a07cf8Schristos          positioned at the rightmost point of the circle.
141*89a07cf8Schristos
142*89a07cf8Schristos    `\D'C D''
143*89a07cf8Schristos          Draw a solid circle with the same parameters and behaviour as
144*89a07cf8Schristos          an outlined circle.  No outline is drawn.
145*89a07cf8Schristos
146*89a07cf8Schristos    `\D'e X Y''
147*89a07cf8Schristos          Draw an ellipse with a horizontal diameter of X and a vertical
148*89a07cf8Schristos          diameter of Y with the leftmost point at the current position.
149*89a07cf8Schristos          After drawing, the current location is positioned at the
150*89a07cf8Schristos          rightmost point of the ellipse.
151*89a07cf8Schristos
152*89a07cf8Schristos    `\D'E X Y''
153*89a07cf8Schristos          Draw a solid ellipse with the same parameters and behaviour
154*89a07cf8Schristos          as an outlined ellipse.  No outline is drawn.
155*89a07cf8Schristos
156*89a07cf8Schristos    `\D'a DX1 DY1 DX2 DY2''
157*89a07cf8Schristos          Draw an arc clockwise from the current location through the
158*89a07cf8Schristos          two specified relative locations (DX1,DY1) and (DX2,DY2).
159*89a07cf8Schristos          The coordinates of the first point are relative to the
160*89a07cf8Schristos          current position, and the coordinates of the second point are
161*89a07cf8Schristos          relative to the first point.  After drawing, the current
162*89a07cf8Schristos          position is moved to the final point of the arc.
163*89a07cf8Schristos
164*89a07cf8Schristos    `\D'~ DX1 DY1 DX2 DY2 ...''
165*89a07cf8Schristos          Draw a spline from the current location to the relative point
166*89a07cf8Schristos          (DX1,DY1) and then to (DX2,DY2), and so on.  The current
167*89a07cf8Schristos          position is moved to the terminal point of the drawn curve.
168*89a07cf8Schristos
169*89a07cf8Schristos    `\D'f N''
170*89a07cf8Schristos          Set the shade of gray to be used for filling solid objects
171*89a07cf8Schristos          to N; N must be an integer between 0 and 1000, where 0
172*89a07cf8Schristos          corresponds solid white and 1000 to solid black, and values
173*89a07cf8Schristos          in between correspond to intermediate shades of gray.  This
174*89a07cf8Schristos          applies only to solid circles, solid ellipses, and solid
175*89a07cf8Schristos          polygons.  By default, a level of 1000 is used.
176*89a07cf8Schristos
177*89a07cf8Schristos          Despite of being silly, the current point is moved
178*89a07cf8Schristos          horizontally to the right by N.
179*89a07cf8Schristos
180*89a07cf8Schristos          Don't use this command!  It has the serious drawback that it
181*89a07cf8Schristos          will be always rounded to the next integer multiple of the
182*89a07cf8Schristos          horizontal resolution (the value of the `hor' keyword in the
183*89a07cf8Schristos          `DESC' file).  Use `\M' (*note Colors::) or `\D'Fg ...''
184*89a07cf8Schristos          instead.
185*89a07cf8Schristos
186*89a07cf8Schristos    `\D'p DX1 DY1 DX2 DY2 ...''
187*89a07cf8Schristos          Draw a polygon from the current location to the relative
188*89a07cf8Schristos          position (DX1,DY1) and then to (DX2,DY2) and so on.  When the
189*89a07cf8Schristos          specified data points are exhausted, a line is drawn back to
190*89a07cf8Schristos          the starting point.  The current position is changed by
191*89a07cf8Schristos          adding the sum of all arguments with odd index to the actual
192*89a07cf8Schristos          horizontal position and the even ones to the vertical
193*89a07cf8Schristos          position.
194*89a07cf8Schristos
195*89a07cf8Schristos    `\D'P DX1 DY1 DX2 DY2 ...''
196*89a07cf8Schristos          Draw a solid polygon with the same parameters and behaviour
197*89a07cf8Schristos          as an outlined polygon.  No outline is drawn.
198*89a07cf8Schristos
199*89a07cf8Schristos          Here a better variant of the box macro to fill the box with
200*89a07cf8Schristos          some color.  Note that the box must be drawn before the text
201*89a07cf8Schristos          since colors in `gtroff' are not transparent; the filled
202*89a07cf8Schristos          polygon would hide the text completely.
203*89a07cf8Schristos
204*89a07cf8Schristos
205*89a07cf8Schristos               .de BOX
206*89a07cf8Schristos               .  nr @wd \w'\\$1'
207*89a07cf8Schristos               \h'.2m'\
208*89a07cf8Schristos               \h'-.2m'\v'(.2m - \\n[rsb]u)'\
209*89a07cf8Schristos               \M[lightcyan]\
210*89a07cf8Schristos               \D'P 0 -(\\n[rst]u - \\n[rsb]u + .4m) \
211*89a07cf8Schristos                    (\\n[@wd]u + .4m) 0 \
212*89a07cf8Schristos                    0 (\\n[rst]u - \\n[rsb]u + .4m) \
213*89a07cf8Schristos                    -(\\n[@wd]u + .4m) 0'\
214*89a07cf8Schristos               \h'.2m'\v'-(.2m - \\n[rsb]u)'\
215*89a07cf8Schristos               \M[]\
216*89a07cf8Schristos               \\$1\
217*89a07cf8Schristos               \h'.2m'
218*89a07cf8Schristos               ..
219*89a07cf8Schristos
220*89a07cf8Schristos    `\D't N''
221*89a07cf8Schristos          Set the current line thickness to N machine units.  A value of
222*89a07cf8Schristos          zero selects the smallest available line thickness.  A
223*89a07cf8Schristos          negative value makes the line thickness proportional to the
224*89a07cf8Schristos          current point size (this is the default behaviour of AT&T
225*89a07cf8Schristos          `troff').
226*89a07cf8Schristos
227*89a07cf8Schristos          Despite of being silly, the current point is moved
228*89a07cf8Schristos          horizontally to the right by N.
229*89a07cf8Schristos
230*89a07cf8Schristos    `\D'FSCHEME COLOR_COMPONENTS''
231*89a07cf8Schristos          Change current fill color.  SCHEME is a single letter
232*89a07cf8Schristos          denoting the color scheme: `r' (rgb), `c' (cmy), `k' (cmyk),
233*89a07cf8Schristos          `g' (gray), or `d' (default color).  The color components use
234*89a07cf8Schristos          exactly the same syntax as in the `defcolor' request (*note
235*89a07cf8Schristos          Colors::); the command `\D'Fd'' doesn't take an argument.
236*89a07cf8Schristos
237*89a07cf8Schristos          _No_ position changing!
238*89a07cf8Schristos
239*89a07cf8Schristos          Examples:
240*89a07cf8Schristos
241*89a07cf8Schristos
242*89a07cf8Schristos          \D'Fg .3'      \" same gray as \D'f 700' \D'Fr #0000ff' \"
243*89a07cf8Schristos          blue
244*89a07cf8Schristos
245*89a07cf8Schristos   *Note Graphics Commands::.
246*89a07cf8Schristos
247*89a07cf8Schristos -- Escape: \b'string'
248*89a07cf8Schristos     "Pile" a sequence of glyphs vertically, and center it vertically
249*89a07cf8Schristos     on the current line.  Use it to build large brackets and braces.
250*89a07cf8Schristos
251*89a07cf8Schristos     Here an example how to create a large opening brace:
252*89a07cf8Schristos
253*89a07cf8Schristos
254*89a07cf8Schristos          \b'\[lt]\[bv]\[lk]\[bv]\[lb]'
255*89a07cf8Schristos
256*89a07cf8Schristos     The first glyph is on the top, the last glyph in STRING is at the
257*89a07cf8Schristos     bottom.  Note that `gtroff' separates the glyphs vertically by 1m,
258*89a07cf8Schristos     and the whole object is centered 0.5m above the current baseline;
259*89a07cf8Schristos     the largest glyph width is used as the width for the whole object.
260*89a07cf8Schristos     This rather unflexible positioning algorithm doesn't work with
261*89a07cf8Schristos     `-Tdvi' since the bracket pieces vary in height for this device.
262*89a07cf8Schristos     Instead, use the `eqn' preprocessor.
263*89a07cf8Schristos
264*89a07cf8Schristos     *Note Manipulating Spacing::, how to adjust the vertical spacing
265*89a07cf8Schristos     with the `\x' escape.
266*89a07cf8Schristos
267*89a07cf8Schristos
268*89a07cf8SchristosFile: groff,  Node: Traps,  Next: Diversions,  Prev: Drawing Requests,  Up: gtroff Reference
269*89a07cf8Schristos
270*89a07cf8Schristos5.24 Traps
271*89a07cf8Schristos==========
272*89a07cf8Schristos
273*89a07cf8Schristos"Traps" are locations, which, when reached, call a specified macro.
274*89a07cf8SchristosThese traps can occur at a given location on the page, at a given
275*89a07cf8Schristoslocation in the current diversion, at a blank line, after a certain
276*89a07cf8Schristosnumber of input lines, or at the end of input.
277*89a07cf8Schristos
278*89a07cf8Schristos   Setting a trap is also called "planting".  It is also said that a
279*89a07cf8Schristostrap is "sprung" if the associated macro is executed.
280*89a07cf8Schristos
281*89a07cf8Schristos* Menu:
282*89a07cf8Schristos
283*89a07cf8Schristos* Page Location Traps::
284*89a07cf8Schristos* Diversion Traps::
285*89a07cf8Schristos* Input Line Traps::
286*89a07cf8Schristos* Blank Line Traps::
287*89a07cf8Schristos* End-of-input Traps::
288*89a07cf8Schristos
289*89a07cf8Schristos
290*89a07cf8SchristosFile: groff,  Node: Page Location Traps,  Next: Diversion Traps,  Prev: Traps,  Up: Traps
291*89a07cf8Schristos
292*89a07cf8Schristos5.24.1 Page Location Traps
293*89a07cf8Schristos--------------------------
294*89a07cf8Schristos
295*89a07cf8Schristos"Page location traps" perform an action when `gtroff' reaches or passes
296*89a07cf8Schristosa certain vertical location on the page.  Page location traps have a
297*89a07cf8Schristosvariety of purposes, including:
298*89a07cf8Schristos
299*89a07cf8Schristos   * setting headers and footers
300*89a07cf8Schristos
301*89a07cf8Schristos   * setting body text in multiple columns
302*89a07cf8Schristos
303*89a07cf8Schristos   * setting footnotes
304*89a07cf8Schristos
305*89a07cf8Schristos -- Request: .vpt flag
306*89a07cf8Schristos -- Register: \n[.vpt]
307*89a07cf8Schristos     Enable vertical position traps if FLAG is non-zero, or disables
308*89a07cf8Schristos     them otherwise.  Vertical position traps are traps set by the `wh'
309*89a07cf8Schristos     or `dt' requests.  Traps set by the `it' request are not vertical
310*89a07cf8Schristos     position traps.  The parameter that controls whether vertical
311*89a07cf8Schristos     position traps are enabled is global.  Initially vertical position
312*89a07cf8Schristos     traps are enabled.  The current setting of this is available in the
313*89a07cf8Schristos     `.vpt' read-only number register.
314*89a07cf8Schristos
315*89a07cf8Schristos     Note that a page can't be ejected if `vpt' is set to zero.
316*89a07cf8Schristos
317*89a07cf8Schristos -- Request: .wh dist [macro]
318*89a07cf8Schristos     Set a page location trap.  Non-negative values for DIST set the
319*89a07cf8Schristos     trap relative to the top of the page; negative values set the trap
320*89a07cf8Schristos     relative to the bottom of the page.  Default scaling indicator is
321*89a07cf8Schristos     `v'.
322*89a07cf8Schristos
323*89a07cf8Schristos     MACRO is the name of the macro to execute when the trap is sprung.
324*89a07cf8Schristos     If MACRO is missing, remove the first trap (if any) at DIST.
325*89a07cf8Schristos
326*89a07cf8Schristos     The following is a simple example of how many macro packages set
327*89a07cf8Schristos     headers and footers.
328*89a07cf8Schristos
329*89a07cf8Schristos
330*89a07cf8Schristos          .de hd                \" Page header
331*89a07cf8Schristos          '  sp .5i
332*89a07cf8Schristos          .  tl 'Title''date'
333*89a07cf8Schristos          '  sp .3i
334*89a07cf8Schristos          ..
335*89a07cf8Schristos          .
336*89a07cf8Schristos          .de fo                \" Page footer
337*89a07cf8Schristos          '  sp 1v
338*89a07cf8Schristos          .  tl ''%''
339*89a07cf8Schristos          '  bp
340*89a07cf8Schristos          ..
341*89a07cf8Schristos          .
342*89a07cf8Schristos          .wh 0   hd            \" trap at top of the page
343*89a07cf8Schristos          .wh -1i fo            \" trap one inch from bottom
344*89a07cf8Schristos
345*89a07cf8Schristos     A trap at or below the bottom of the page is ignored; it can be
346*89a07cf8Schristos     made active by either moving it up or increasing the page length
347*89a07cf8Schristos     so that the trap is on the page.
348*89a07cf8Schristos
349*89a07cf8Schristos     It is possible to have more than one trap at the same location; to
350*89a07cf8Schristos     do so, the traps must be defined at different locations, then
351*89a07cf8Schristos     moved together with the `ch' request; otherwise the second trap
352*89a07cf8Schristos     would replace the first one.  Earlier defined traps hide later
353*89a07cf8Schristos     defined traps if moved to the same position (the many empty lines
354*89a07cf8Schristos     caused by the `bp' request are omitted in the following example):
355*89a07cf8Schristos
356*89a07cf8Schristos
357*89a07cf8Schristos          .de a
358*89a07cf8Schristos          .  nop a
359*89a07cf8Schristos          ..
360*89a07cf8Schristos          .de b
361*89a07cf8Schristos          .  nop b
362*89a07cf8Schristos          ..
363*89a07cf8Schristos          .de c
364*89a07cf8Schristos          .  nop c
365*89a07cf8Schristos          ..
366*89a07cf8Schristos          .
367*89a07cf8Schristos          .wh 1i a
368*89a07cf8Schristos          .wh 2i b
369*89a07cf8Schristos          .wh 3i c
370*89a07cf8Schristos          .bp
371*89a07cf8Schristos              => a b c
372*89a07cf8Schristos
373*89a07cf8Schristos
374*89a07cf8Schristos          .ch b 1i
375*89a07cf8Schristos          .ch c 1i
376*89a07cf8Schristos          .bp
377*89a07cf8Schristos              => a
378*89a07cf8Schristos
379*89a07cf8Schristos
380*89a07cf8Schristos          .ch a 0.5i
381*89a07cf8Schristos          .bp
382*89a07cf8Schristos              => a b
383*89a07cf8Schristos
384*89a07cf8Schristos
385*89a07cf8Schristos -- Register: \n[.t]
386*89a07cf8Schristos     A read-only number register holding the distance to the next trap.
387*89a07cf8Schristos
388*89a07cf8Schristos     If there are no traps between the current position and the bottom
389*89a07cf8Schristos     of the page, it contains the distance to the page bottom.  In a
390*89a07cf8Schristos     diversion, the distance to the page bottom is infinite (the
391*89a07cf8Schristos     returned value is the biggest integer which can be represented in
392*89a07cf8Schristos     `groff') if there are no diversion traps.
393*89a07cf8Schristos
394*89a07cf8Schristos -- Request: .ch macro [dist]
395*89a07cf8Schristos     Change the location of a trap.  The first argument is the name of
396*89a07cf8Schristos     the macro to be invoked at the trap, and the second argument is
397*89a07cf8Schristos     the new location for the trap (note that the parameters are
398*89a07cf8Schristos     specified in opposite order as in the `wh' request).  This is
399*89a07cf8Schristos     useful for building up footnotes in a diversion to allow more
400*89a07cf8Schristos     space at the bottom of the page for them.
401*89a07cf8Schristos
402*89a07cf8Schristos     Default scaling indicator for DIST is `v'.  If DIST is missing,
403*89a07cf8Schristos     the trap is removed.
404*89a07cf8Schristos
405*89a07cf8Schristos
406*89a07cf8Schristos -- Register: \n[.ne]
407*89a07cf8Schristos     The read-only number register `.ne' contains the amount of space
408*89a07cf8Schristos     that was needed in the last `ne' request that caused a trap to be
409*89a07cf8Schristos     sprung.  Useful in conjunction with the `.trunc' register.  *Note
410*89a07cf8Schristos     Page Control::, for more information.
411*89a07cf8Schristos
412*89a07cf8Schristos     Since the `.ne' register is only set by traps it doesn't make much
413*89a07cf8Schristos     sense to use it outside of trap macros.
414*89a07cf8Schristos
415*89a07cf8Schristos -- Register: \n[.trunc]
416*89a07cf8Schristos     A read-only register containing the amount of vertical space
417*89a07cf8Schristos     truncated by the most recently sprung vertical position trap, or,
418*89a07cf8Schristos     if the trap was sprung by an `ne' request, minus the amount of
419*89a07cf8Schristos     vertical motion produced by the `ne' request.  In other words, at
420*89a07cf8Schristos     the point a trap is sprung, it represents the difference of what
421*89a07cf8Schristos     the vertical position would have been but for the trap, and what
422*89a07cf8Schristos     the vertical position actually is.
423*89a07cf8Schristos
424*89a07cf8Schristos     Since the `.trunc' register is only set by traps it doesn't make
425*89a07cf8Schristos     much sense to use it outside of trap macros.
426*89a07cf8Schristos
427*89a07cf8Schristos -- Register: \n[.pe]
428*89a07cf8Schristos     A read-only register which is set to 1 while a page is ejected with
429*89a07cf8Schristos     the `bp' request (or by the end of input).
430*89a07cf8Schristos
431*89a07cf8Schristos     Outside of traps this register is always zero.  In the following
432*89a07cf8Schristos     example, only the second call to `x' is caused by `bp'.
433*89a07cf8Schristos
434*89a07cf8Schristos
435*89a07cf8Schristos          .de x
436*89a07cf8Schristos          \&.pe=\\n[.pe]
437*89a07cf8Schristos          .br
438*89a07cf8Schristos          ..
439*89a07cf8Schristos          .wh 1v x
440*89a07cf8Schristos          .wh 4v x
441*89a07cf8Schristos          A line.
442*89a07cf8Schristos          .br
443*89a07cf8Schristos          Another line.
444*89a07cf8Schristos          .br
445*89a07cf8Schristos              => A line.
446*89a07cf8Schristos                 .pe=0
447*89a07cf8Schristos                 Another line.
448*89a07cf8Schristos
449*89a07cf8Schristos                 .pe=1
450*89a07cf8Schristos
451*89a07cf8Schristos
452*89a07cf8Schristos   An important fact to consider while designing macros is that
453*89a07cf8Schristosdiversions and traps do not interact normally.  For example, if a trap
454*89a07cf8Schristosinvokes a header macro (while outputting a diversion) which tries to
455*89a07cf8Schristoschange the font on the current page, the effect will not be visible
456*89a07cf8Schristosbefore the diversion has completely been printed (except for input
457*89a07cf8Schristosprotected with `\!' or `\?') since the data in the diversion is already
458*89a07cf8Schristosformatted.  In most cases, this is not the expected behaviour.
459*89a07cf8Schristos
460*89a07cf8Schristos
461*89a07cf8SchristosFile: groff,  Node: Diversion Traps,  Next: Input Line Traps,  Prev: Page Location Traps,  Up: Traps
462*89a07cf8Schristos
463*89a07cf8Schristos5.24.2 Diversion Traps
464*89a07cf8Schristos----------------------
465*89a07cf8Schristos
466*89a07cf8Schristos -- Request: .dt [dist macro]
467*89a07cf8Schristos     Set a trap _within_ a diversion.  DIST is the location of the trap
468*89a07cf8Schristos     (identical to the `wh' request; default scaling indicator is `v')
469*89a07cf8Schristos     and MACRO is the name of the macro to be invoked.  If called
470*89a07cf8Schristos     without arguments, the diversion trap is removed.
471*89a07cf8Schristos
472*89a07cf8Schristos     Note that there exists only a single diversion trap.
473*89a07cf8Schristos
474*89a07cf8Schristos     The number register `.t' still works within diversions.  *Note
475*89a07cf8Schristos     Diversions::, for more information.
476*89a07cf8Schristos
477*89a07cf8Schristos
478*89a07cf8SchristosFile: groff,  Node: Input Line Traps,  Next: Blank Line Traps,  Prev: Diversion Traps,  Up: Traps
479*89a07cf8Schristos
480*89a07cf8Schristos5.24.3 Input Line Traps
481*89a07cf8Schristos-----------------------
482*89a07cf8Schristos
483*89a07cf8Schristos -- Request: .it n macro
484*89a07cf8Schristos -- Request: .itc n macro
485*89a07cf8Schristos     Set an input line trap.  N is the number of lines of input which
486*89a07cf8Schristos     may be read before springing the trap, MACRO is the macro to be
487*89a07cf8Schristos     invoked.  Request lines are not counted as input lines.
488*89a07cf8Schristos
489*89a07cf8Schristos     For example, one possible use is to have a macro which prints the
490*89a07cf8Schristos     next N lines in a bold font.
491*89a07cf8Schristos
492*89a07cf8Schristos
493*89a07cf8Schristos          .de B
494*89a07cf8Schristos          .  it \\$1 B-end
495*89a07cf8Schristos          .  ft B
496*89a07cf8Schristos          ..
497*89a07cf8Schristos          .
498*89a07cf8Schristos          .de B-end
499*89a07cf8Schristos          .  ft R
500*89a07cf8Schristos          ..
501*89a07cf8Schristos
502*89a07cf8Schristos     The `itc' request is identical except that an interrupted text
503*89a07cf8Schristos     line (ending with `\c') is not counted as a separate line.
504*89a07cf8Schristos
505*89a07cf8Schristos     Both requests are associated with the current environment (*note
506*89a07cf8Schristos     Environments::); switching to another environment disables the
507*89a07cf8Schristos     current input trap, and going back reactivates it, restoring the
508*89a07cf8Schristos     number of already processed lines.
509*89a07cf8Schristos
510*89a07cf8Schristos
511*89a07cf8SchristosFile: groff,  Node: Blank Line Traps,  Next: End-of-input Traps,  Prev: Input Line Traps,  Up: Traps
512*89a07cf8Schristos
513*89a07cf8Schristos5.24.4 Blank Line Traps
514*89a07cf8Schristos-----------------------
515*89a07cf8Schristos
516*89a07cf8Schristos -- Request: .blm macro
517*89a07cf8Schristos     Set a blank line trap.  `gtroff' executes MACRO when it encounters
518*89a07cf8Schristos     a blank line in the input file.
519*89a07cf8Schristos
520*89a07cf8Schristos
521*89a07cf8SchristosFile: groff,  Node: End-of-input Traps,  Prev: Blank Line Traps,  Up: Traps
522*89a07cf8Schristos
523*89a07cf8Schristos5.24.5 End-of-input Traps
524*89a07cf8Schristos-------------------------
525*89a07cf8Schristos
526*89a07cf8Schristos -- Request: .em macro
527*89a07cf8Schristos     Set a trap at the end of input.  MACRO is executed after the last
528*89a07cf8Schristos     line of the input file has been processed.
529*89a07cf8Schristos
530*89a07cf8Schristos     For example, if the document had to have a section at the bottom
531*89a07cf8Schristos     of the last page for someone to approve it, the `em' request could
532*89a07cf8Schristos     be used.
533*89a07cf8Schristos
534*89a07cf8Schristos
535*89a07cf8Schristos          .de approval
536*89a07cf8Schristos          .  ne 5v
537*89a07cf8Schristos          .  sp |(\\n[.t] - 6v)
538*89a07cf8Schristos          .  in +4i
539*89a07cf8Schristos          .  lc _
540*89a07cf8Schristos          .  br
541*89a07cf8Schristos          Approved:\t\a
542*89a07cf8Schristos          .  sp
543*89a07cf8Schristos          Date:\t\t\a
544*89a07cf8Schristos          ..
545*89a07cf8Schristos          .
546*89a07cf8Schristos          .em approval
547*89a07cf8Schristos
548*89a07cf8Schristos
549*89a07cf8Schristos
550*89a07cf8SchristosFile: groff,  Node: Diversions,  Next: Environments,  Prev: Traps,  Up: gtroff Reference
551*89a07cf8Schristos
552*89a07cf8Schristos5.25 Diversions
553*89a07cf8Schristos===============
554*89a07cf8Schristos
555*89a07cf8SchristosIn `gtroff' it is possible to "divert" text into a named storage area.
556*89a07cf8SchristosDue to the similarity to defining macros it is sometimes said to be
557*89a07cf8Schristosstored in a macro.  This is used for saving text for output at a later
558*89a07cf8Schristostime, which is useful for keeping blocks of text on the same page,
559*89a07cf8Schristosfootnotes, tables of contents, and indices.
560*89a07cf8Schristos
561*89a07cf8Schristos   For orthogonality it is said that `gtroff' is in the "top-level
562*89a07cf8Schristosdiversion" if no diversion is active (i.e., the data is diverted to the
563*89a07cf8Schristosoutput device).
564*89a07cf8Schristos
565*89a07cf8Schristos -- Request: .di macro
566*89a07cf8Schristos -- Request: .da macro
567*89a07cf8Schristos     Begin a diversion.  Like the `de' request, it takes an argument of
568*89a07cf8Schristos     a macro name to divert subsequent text into.  The `da' macro
569*89a07cf8Schristos     appends to an existing diversion.
570*89a07cf8Schristos
571*89a07cf8Schristos     `di' or `da' without an argument ends the diversion.
572*89a07cf8Schristos
573*89a07cf8Schristos -- Request: .box macro
574*89a07cf8Schristos -- Request: .boxa macro
575*89a07cf8Schristos     Begin (or appends to) a diversion like the `di' and `da' requests.
576*89a07cf8Schristos     The difference is that `box' and `boxa' do not include a
577*89a07cf8Schristos     partially-filled line in the diversion.
578*89a07cf8Schristos
579*89a07cf8Schristos     Compare this:
580*89a07cf8Schristos
581*89a07cf8Schristos
582*89a07cf8Schristos          Before the box.
583*89a07cf8Schristos          .box xxx
584*89a07cf8Schristos          In the box.
585*89a07cf8Schristos          .br
586*89a07cf8Schristos          .box
587*89a07cf8Schristos          After the box.
588*89a07cf8Schristos          .br
589*89a07cf8Schristos              => Before the box.  After the box.
590*89a07cf8Schristos          .xxx
591*89a07cf8Schristos              => In the box.
592*89a07cf8Schristos
593*89a07cf8Schristos     with this:
594*89a07cf8Schristos
595*89a07cf8Schristos
596*89a07cf8Schristos          Before the diversion.
597*89a07cf8Schristos          .di yyy
598*89a07cf8Schristos          In the diversion.
599*89a07cf8Schristos          .br
600*89a07cf8Schristos          .di
601*89a07cf8Schristos          After the diversion.
602*89a07cf8Schristos          .br
603*89a07cf8Schristos              => After the diversion.
604*89a07cf8Schristos          .yyy
605*89a07cf8Schristos              => Before the diversion.  In the diversion.
606*89a07cf8Schristos
607*89a07cf8Schristos     `box' or `boxa' without an argument ends the diversion.
608*89a07cf8Schristos
609*89a07cf8Schristos -- Register: \n[.z]
610*89a07cf8Schristos -- Register: \n[.d]
611*89a07cf8Schristos     Diversions may be nested.  The read-only number register `.z'
612*89a07cf8Schristos     contains the name of the current diversion (this is a string-valued
613*89a07cf8Schristos     register).  The read-only number register `.d' contains the current
614*89a07cf8Schristos     vertical place in the diversion.  If not in a diversion it is the
615*89a07cf8Schristos     same as register `nl'.
616*89a07cf8Schristos
617*89a07cf8Schristos -- Register: \n[.h]
618*89a07cf8Schristos     The "high-water mark" on the current page.  It corresponds to the
619*89a07cf8Schristos     text baseline of the lowest line on the page.  This is a read-only
620*89a07cf8Schristos     register.
621*89a07cf8Schristos
622*89a07cf8Schristos
623*89a07cf8Schristos          .tm .h==\n[.h], nl==\n[nl]
624*89a07cf8Schristos              => .h==0, nl==-1
625*89a07cf8Schristos          This is a test.
626*89a07cf8Schristos          .br
627*89a07cf8Schristos          .sp 2
628*89a07cf8Schristos          .tm .h==\n[.h], nl==\n[nl]
629*89a07cf8Schristos              => .h==40, nl==120
630*89a07cf8Schristos
631*89a07cf8Schristos     As can be seen in the previous example, empty lines are not
632*89a07cf8Schristos     considered in the return value of the `.h' register.
633*89a07cf8Schristos
634*89a07cf8Schristos -- Register: \n[dn]
635*89a07cf8Schristos -- Register: \n[dl]
636*89a07cf8Schristos     After completing a diversion, the read-write number registers `dn'
637*89a07cf8Schristos     and `dl' contain the vertical and horizontal size of the diversion.
638*89a07cf8Schristos     Note that only the just processed lines are counted: For the
639*89a07cf8Schristos     computation of `dn' and `dl', the requests `da' and `boxa' are
640*89a07cf8Schristos     handled as if `di' and `box' had been used - lines which have been
641*89a07cf8Schristos     already stored in a macro are not taken into account.
642*89a07cf8Schristos
643*89a07cf8Schristos
644*89a07cf8Schristos          .\" Center text both horizontally & vertically
645*89a07cf8Schristos          .
646*89a07cf8Schristos          .\" Enclose macro definitions in .eo and .ec
647*89a07cf8Schristos          .\" to avoid the doubling of the backslash
648*89a07cf8Schristos          .eo
649*89a07cf8Schristos          .\" macro .(c starts centering mode
650*89a07cf8Schristos          .de (c
651*89a07cf8Schristos          .  br
652*89a07cf8Schristos          .  ev (c
653*89a07cf8Schristos          .  evc 0
654*89a07cf8Schristos          .  in 0
655*89a07cf8Schristos          .  nf
656*89a07cf8Schristos          .  di @c
657*89a07cf8Schristos          ..
658*89a07cf8Schristos
659*89a07cf8Schristos
660*89a07cf8Schristos          .\" macro .)c terminates centering mode
661*89a07cf8Schristos          .de )c
662*89a07cf8Schristos          .  br
663*89a07cf8Schristos          .  ev
664*89a07cf8Schristos          .  di
665*89a07cf8Schristos          .  nr @s (((\n[.t]u - \n[dn]u) / 2u) - 1v)
666*89a07cf8Schristos          .  sp \n[@s]u
667*89a07cf8Schristos          .  ce 1000
668*89a07cf8Schristos          .  @c
669*89a07cf8Schristos          .  ce 0
670*89a07cf8Schristos          .  sp \n[@s]u
671*89a07cf8Schristos          .  br
672*89a07cf8Schristos          .  fi
673*89a07cf8Schristos          .  rr @s
674*89a07cf8Schristos          .  rm @s
675*89a07cf8Schristos          .  rm @c
676*89a07cf8Schristos          ..
677*89a07cf8Schristos          .\" End of macro definitions, restore escape mechanism
678*89a07cf8Schristos          .ec
679*89a07cf8Schristos
680*89a07cf8Schristos
681*89a07cf8Schristos -- Escape: \!
682*89a07cf8Schristos -- Escape: \?anything\?
683*89a07cf8Schristos     Prevent requests, macros, and escapes from being interpreted when
684*89a07cf8Schristos     read into a diversion.  Both escapes take the given text and
685*89a07cf8Schristos     "transparently" embed it into the diversion.  This is useful for
686*89a07cf8Schristos     macros which shouldn't be invoked until the diverted text is
687*89a07cf8Schristos     actually output.
688*89a07cf8Schristos
689*89a07cf8Schristos     The `\!' escape transparently embeds text up to and including the
690*89a07cf8Schristos     end of the line.  The `\?' escape transparently embeds text until
691*89a07cf8Schristos     the next occurrence of the `\?' escape.  Example:
692*89a07cf8Schristos
693*89a07cf8Schristos
694*89a07cf8Schristos          \?ANYTHING\?
695*89a07cf8Schristos
696*89a07cf8Schristos     ANYTHING may not contain newlines; use `\!'  to embed newlines in
697*89a07cf8Schristos     a diversion.  The escape sequence `\?' is also recognized in copy
698*89a07cf8Schristos     mode and turned into a single internal code; it is this code that
699*89a07cf8Schristos     terminates ANYTHING.  Thus the following example prints 4.
700*89a07cf8Schristos
701*89a07cf8Schristos
702*89a07cf8Schristos          .nr x 1
703*89a07cf8Schristos          .nf
704*89a07cf8Schristos          .di d
705*89a07cf8Schristos          \?\\?\\\\?\\\\\\\\nx\\\\?\\?\?
706*89a07cf8Schristos          .di
707*89a07cf8Schristos          .nr x 2
708*89a07cf8Schristos          .di e
709*89a07cf8Schristos          .d
710*89a07cf8Schristos          .di
711*89a07cf8Schristos          .nr x 3
712*89a07cf8Schristos          .di f
713*89a07cf8Schristos          .e
714*89a07cf8Schristos          .di
715*89a07cf8Schristos          .nr x 4
716*89a07cf8Schristos          .f
717*89a07cf8Schristos
718*89a07cf8Schristos     Both escapes read the data in copy mode.
719*89a07cf8Schristos
720*89a07cf8Schristos     If `\!' is used in the top-level diversion, its argument is
721*89a07cf8Schristos     directly embedded into the `gtroff' intermediate output.  This can
722*89a07cf8Schristos     be used for example to control a postprocessor which processes the
723*89a07cf8Schristos     data before it is sent to the device driver.
724*89a07cf8Schristos
725*89a07cf8Schristos     The `\?' escape used in the top-level diversion produces no output
726*89a07cf8Schristos     at all; its argument is simply ignored.
727*89a07cf8Schristos
728*89a07cf8Schristos -- Request: .output string
729*89a07cf8Schristos     Emit STRING directly to the `gtroff' intermediate output (subject
730*89a07cf8Schristos     to copy-mode interpretation); this is similar to `\!' used at the
731*89a07cf8Schristos     top level.  An initial double quote in STRING is stripped off to
732*89a07cf8Schristos     allow initial blanks.
733*89a07cf8Schristos
734*89a07cf8Schristos     This request can't be used before the first page has started - if
735*89a07cf8Schristos     you get an error, simply insert `.br' before the `output' request.
736*89a07cf8Schristos
737*89a07cf8Schristos     Without argument, `output' is ignored.
738*89a07cf8Schristos
739*89a07cf8Schristos     Use with caution!  It is normally only needed for mark-up used by a
740*89a07cf8Schristos     postprocessor which does something with the output before sending
741*89a07cf8Schristos     it to the output device, filtering out STRING again.
742*89a07cf8Schristos
743*89a07cf8Schristos -- Request: .asciify div
744*89a07cf8Schristos     "Unformat" the diversion specified by DIV in such a way that ASCII
745*89a07cf8Schristos     characters, characters translated with the `trin' request, space
746*89a07cf8Schristos     characters, and some escape sequences that were formatted and
747*89a07cf8Schristos     diverted are treated like ordinary input characters when the
748*89a07cf8Schristos     diversion is reread.  It can be also used for gross hacks; for
749*89a07cf8Schristos     example, the following sets register `n' to 1.
750*89a07cf8Schristos
751*89a07cf8Schristos
752*89a07cf8Schristos          .tr @.
753*89a07cf8Schristos          .di x
754*89a07cf8Schristos          @nr n 1
755*89a07cf8Schristos          .br
756*89a07cf8Schristos          .di
757*89a07cf8Schristos          .tr @@
758*89a07cf8Schristos          .asciify x
759*89a07cf8Schristos          .x
760*89a07cf8Schristos
761*89a07cf8Schristos     *Note Copy-in Mode::.
762*89a07cf8Schristos
763*89a07cf8Schristos -- Request: .unformat div
764*89a07cf8Schristos     Like `asciify', unformat the specified diversion.  However,
765*89a07cf8Schristos     `unformat' only unformats spaces and tabs between words.
766*89a07cf8Schristos     Unformatted tabs are treated as input tokens, and spaces are
767*89a07cf8Schristos     stretchable again.
768*89a07cf8Schristos
769*89a07cf8Schristos     The vertical size of lines is not preserved; glyph information
770*89a07cf8Schristos     (font, font size, space width, etc.) is retained.
771*89a07cf8Schristos
772*89a07cf8Schristos
773*89a07cf8SchristosFile: groff,  Node: Environments,  Next: Suppressing output,  Prev: Diversions,  Up: gtroff Reference
774*89a07cf8Schristos
775*89a07cf8Schristos5.26 Environments
776*89a07cf8Schristos=================
777*89a07cf8Schristos
778*89a07cf8SchristosIt happens frequently that some text should be printed in a certain
779*89a07cf8Schristosformat regardless of what may be in effect at the time, for example, in
780*89a07cf8Schristosa trap invoked macro to print headers and footers.  To solve this
781*89a07cf8Schristos`gtroff' processes text in "environments".  An environment contains
782*89a07cf8Schristosmost of the parameters that control text processing.  It is possible to
783*89a07cf8Schristosswitch amongst these environments; by default `gtroff' processes text
784*89a07cf8Schristosin environment 0.  The following is the information kept in an
785*89a07cf8Schristosenvironment.
786*89a07cf8Schristos
787*89a07cf8Schristos   * font parameters (size, family, style, glyph height and slant, space
788*89a07cf8Schristos     and sentence space size)
789*89a07cf8Schristos
790*89a07cf8Schristos   * page parameters (line length, title length, vertical spacing, line
791*89a07cf8Schristos     spacing, indentation, line numbering, centering, right-justifying,
792*89a07cf8Schristos     underlining, hyphenation data)
793*89a07cf8Schristos
794*89a07cf8Schristos   * fill and adjust mode
795*89a07cf8Schristos
796*89a07cf8Schristos   * tab stops, tab and leader characters, escape character, no-break
797*89a07cf8Schristos     and hyphen indicators, margin character data
798*89a07cf8Schristos
799*89a07cf8Schristos   * partially collected lines
800*89a07cf8Schristos
801*89a07cf8Schristos   * input traps
802*89a07cf8Schristos
803*89a07cf8Schristos   * drawing and fill colours
804*89a07cf8Schristos
805*89a07cf8Schristos   These environments may be given arbitrary names (see *Note
806*89a07cf8SchristosIdentifiers::, for more info).  Old versions of `troff' only had
807*89a07cf8Schristosenvironments named `0', `1', and `2'.
808*89a07cf8Schristos
809*89a07cf8Schristos -- Request: .ev [env]
810*89a07cf8Schristos -- Register: \n[.ev]
811*89a07cf8Schristos     Switch to another environment.  The argument ENV is the name of
812*89a07cf8Schristos     the environment to switch to.  With no argument, `gtroff' switches
813*89a07cf8Schristos     back to the previous environment.  There is no limit on the number
814*89a07cf8Schristos     of named environments; they are created the first time that they
815*89a07cf8Schristos     are referenced.  The `.ev' read-only register contains the name or
816*89a07cf8Schristos     number of the current environment.  This is a string-valued
817*89a07cf8Schristos     register.
818*89a07cf8Schristos
819*89a07cf8Schristos     Note that a call to `ev' (with argument) pushes the previously
820*89a07cf8Schristos     active environment onto a stack.  If, say, environments `foo',
821*89a07cf8Schristos     `bar', and `zap' are called (in that order), the first `ev'
822*89a07cf8Schristos     request without parameter switches back to environment `bar'
823*89a07cf8Schristos     (which is popped off the stack), and a second call switches back
824*89a07cf8Schristos     to environment `foo'.
825*89a07cf8Schristos
826*89a07cf8Schristos     Here is an example:
827*89a07cf8Schristos
828*89a07cf8Schristos
829*89a07cf8Schristos          .ev footnote-env
830*89a07cf8Schristos          .fam N
831*89a07cf8Schristos          .ps 6
832*89a07cf8Schristos          .vs 8
833*89a07cf8Schristos          .ll -.5i
834*89a07cf8Schristos          .ev
835*89a07cf8Schristos
836*89a07cf8Schristos          ...
837*89a07cf8Schristos
838*89a07cf8Schristos          .ev footnote-env
839*89a07cf8Schristos          \(dg Note the large, friendly letters.
840*89a07cf8Schristos          .ev
841*89a07cf8Schristos
842*89a07cf8Schristos
843*89a07cf8Schristos -- Request: .evc env
844*89a07cf8Schristos     Copy the environment ENV into the current environment.
845*89a07cf8Schristos
846*89a07cf8Schristos     The following environment data is not copied:
847*89a07cf8Schristos
848*89a07cf8Schristos        * Partially filled lines.
849*89a07cf8Schristos
850*89a07cf8Schristos        * The status whether the previous line was interrupted.
851*89a07cf8Schristos
852*89a07cf8Schristos        * The number of lines still to center, or to right-justify, or
853*89a07cf8Schristos          to underline (with or without underlined spaces); they are
854*89a07cf8Schristos          set to zero.
855*89a07cf8Schristos
856*89a07cf8Schristos        * The status whether a temporary indentation is active.
857*89a07cf8Schristos
858*89a07cf8Schristos        * Input traps and its associated data.
859*89a07cf8Schristos
860*89a07cf8Schristos        * Line numbering mode is disabled; it can be reactivated with
861*89a07cf8Schristos          `.nm +0'.
862*89a07cf8Schristos
863*89a07cf8Schristos        * The number of consecutive hyphenated lines (set to zero).
864*89a07cf8Schristos
865*89a07cf8Schristos -- Register: \n[.w]
866*89a07cf8Schristos -- Register: \n[.cht]
867*89a07cf8Schristos -- Register: \n[.cdp]
868*89a07cf8Schristos -- Register: \n[.csk]
869*89a07cf8Schristos     The `\n[.w]' register contains the width of the last glyph added
870*89a07cf8Schristos     to the current environment.
871*89a07cf8Schristos
872*89a07cf8Schristos     The `\n[.cht]' register contains the height of the last glyph
873*89a07cf8Schristos     added to the current environment.
874*89a07cf8Schristos
875*89a07cf8Schristos     The `\n[.cdp]' register contains the depth of the last glyph added
876*89a07cf8Schristos     to the current environment.  It is positive for glyphs extending
877*89a07cf8Schristos     below the baseline.
878*89a07cf8Schristos
879*89a07cf8Schristos     The `\n[.csk]' register contains the "skew" (how far to the right
880*89a07cf8Schristos     of the glyph's center that `gtroff' should place an accent) of the
881*89a07cf8Schristos     last glyph added to the current environment.
882*89a07cf8Schristos
883*89a07cf8Schristos -- Register: \n[.n]
884*89a07cf8Schristos     The `\n[.n]' register contains the length of the previous output
885*89a07cf8Schristos     line in the current environment.
886*89a07cf8Schristos
887*89a07cf8Schristos
888*89a07cf8SchristosFile: groff,  Node: Suppressing output,  Next: Colors,  Prev: Environments,  Up: gtroff Reference
889*89a07cf8Schristos
890*89a07cf8Schristos5.27 Suppressing output
891*89a07cf8Schristos=======================
892*89a07cf8Schristos
893*89a07cf8Schristos -- Escape: \Onum
894*89a07cf8Schristos     Disable or enable output depending on the value of NUM:
895*89a07cf8Schristos
896*89a07cf8Schristos    `\O0'
897*89a07cf8Schristos          Disable any glyphs from being emitted to the device driver,
898*89a07cf8Schristos          provided that the escape occurs at the outer level (see
899*89a07cf8Schristos          `\O[3]' and `\O[4]').  Motion is not suppressed so
900*89a07cf8Schristos          effectively `\O[0]' means _pen up_.
901*89a07cf8Schristos
902*89a07cf8Schristos    `\O1'
903*89a07cf8Schristos          Enable output of glyphs, provided that the escape occurs at
904*89a07cf8Schristos          the outer level.
905*89a07cf8Schristos
906*89a07cf8Schristos     `\O0' and `\O1' also reset the four registers `opminx', `opminy',
907*89a07cf8Schristos     `opmaxx', and `opmaxy' to -1.  *Note Register Index::.  These four
908*89a07cf8Schristos     registers mark the top left and bottom right hand corners of a box
909*89a07cf8Schristos     which encompasses all written glyphs.
910*89a07cf8Schristos
911*89a07cf8Schristos     For example the input text:
912*89a07cf8Schristos
913*89a07cf8Schristos
914*89a07cf8Schristos          Hello \O[0]world \O[1]this is a test.
915*89a07cf8Schristos
916*89a07cf8Schristos     produces the following output:
917*89a07cf8Schristos
918*89a07cf8Schristos
919*89a07cf8Schristos          Hello       this is a test.
920*89a07cf8Schristos
921*89a07cf8Schristos    `\O2'
922*89a07cf8Schristos          Provided that the escape occurs at the outer level, enable
923*89a07cf8Schristos          output of glyphs and also write out to `stderr' the page
924*89a07cf8Schristos          number and four registers encompassing the glyphs previously
925*89a07cf8Schristos          written since the last call to `\O'.
926*89a07cf8Schristos
927*89a07cf8Schristos    `\O3'
928*89a07cf8Schristos          Begin a nesting level.  At start-up, `gtroff' is at outer
929*89a07cf8Schristos          level.
930*89a07cf8Schristos
931*89a07cf8Schristos    `\O4'
932*89a07cf8Schristos          End a nesting level.
933*89a07cf8Schristos
934*89a07cf8Schristos    `\O[5PFILENAME]'
935*89a07cf8Schristos          This escape is `grohtml' specific.  Provided that this escape
936*89a07cf8Schristos          occurs at the outer nesting level write the `filename' to
937*89a07cf8Schristos          `stderr'.  The position of the image, P, must be specified
938*89a07cf8Schristos          and must be one of `l', `r', `c', or `i' (left, right,
939*89a07cf8Schristos          centered, inline).  FILENAME will be associated with the
940*89a07cf8Schristos          production of the next inline image.
941*89a07cf8Schristos
942*89a07cf8Schristos
943*89a07cf8SchristosFile: groff,  Node: Colors,  Next: I/O,  Prev: Suppressing output,  Up: gtroff Reference
944*89a07cf8Schristos
945*89a07cf8Schristos5.28 Colors
946*89a07cf8Schristos===========
947*89a07cf8Schristos
948*89a07cf8Schristos -- Request: .color [n]
949*89a07cf8Schristos -- Register: \n[.color]
950*89a07cf8Schristos     If N is missing or non-zero, activate colors (this is the default);
951*89a07cf8Schristos     otherwise, turn it off.
952*89a07cf8Schristos
953*89a07cf8Schristos     The read-only number register `.color' is 1 if colors are active,
954*89a07cf8Schristos     0 otherwise.
955*89a07cf8Schristos
956*89a07cf8Schristos     Internally, `color' sets a global flag; it does not produce a
957*89a07cf8Schristos     token.  Similar to the `cp' request, you should use it at the
958*89a07cf8Schristos     beginning of your document to control color output.
959*89a07cf8Schristos
960*89a07cf8Schristos     Colors can be also turned off with the `-c' command line option.
961*89a07cf8Schristos
962*89a07cf8Schristos -- Request: .defcolor ident scheme color_components
963*89a07cf8Schristos     Define color with name IDENT.  SCHEME can be one of  the following
964*89a07cf8Schristos     values: `rgb' (three components), `cmy' (three components), `cmyk'
965*89a07cf8Schristos     (four components), and `gray' or `grey' (one component).
966*89a07cf8Schristos
967*89a07cf8Schristos     Color components can be given either as a hexadecimal string or as
968*89a07cf8Schristos     positive decimal integers in the range 0-65535.  A hexadecimal
969*89a07cf8Schristos     string contains all color components concatenated.  It must start
970*89a07cf8Schristos     with either `#' or `##'; the former specifies hex values in the
971*89a07cf8Schristos     range 0-255 (which are internally multiplied by 257), the latter
972*89a07cf8Schristos     in the range 0-65535.  Examples: `#FFC0CB' (pink), `##ffff0000ffff'
973*89a07cf8Schristos     (magenta).  The default color name value is device-specific
974*89a07cf8Schristos     (usually black).  It is possible that the default color for `\m'
975*89a07cf8Schristos     and `\M' is not identical.
976*89a07cf8Schristos
977*89a07cf8Schristos     A new scaling indicator `f' has been introduced which multiplies
978*89a07cf8Schristos     its value by 65536; this makes it convenient to specify color
979*89a07cf8Schristos     components as fractions in the range 0 to 1 (1f equals 65536u).
980*89a07cf8Schristos     Example:
981*89a07cf8Schristos
982*89a07cf8Schristos
983*89a07cf8Schristos          .defcolor darkgreen rgb 0.1f 0.5f 0.2f
984*89a07cf8Schristos
985*89a07cf8Schristos     Note that `f' is the default scaling indicator for the `defcolor'
986*89a07cf8Schristos     request, thus the above statement is equivalent to
987*89a07cf8Schristos
988*89a07cf8Schristos
989*89a07cf8Schristos          .defcolor darkgreen rgb 0.1 0.5 0.2
990*89a07cf8Schristos
991*89a07cf8Schristos
992*89a07cf8Schristos -- Request: .gcolor [color]
993*89a07cf8Schristos -- Escape: \mc
994*89a07cf8Schristos -- Escape: \m(co
995*89a07cf8Schristos -- Escape: \m[color]
996*89a07cf8Schristos -- Register: \n[.m]
997*89a07cf8Schristos     Set (glyph) drawing color.  The following examples show how to
998*89a07cf8Schristos     turn the next four words red.
999*89a07cf8Schristos
1000*89a07cf8Schristos
1001*89a07cf8Schristos          .gcolor red
1002*89a07cf8Schristos          these are in red
1003*89a07cf8Schristos          .gcolor
1004*89a07cf8Schristos          and these words are in black.
1005*89a07cf8Schristos
1006*89a07cf8Schristos
1007*89a07cf8Schristos          \m[red]these are in red\m[] and these words are in black.
1008*89a07cf8Schristos
1009*89a07cf8Schristos     The escape `\m[]' returns to the previous color, as does a call to
1010*89a07cf8Schristos     `gcolor' without an argument.
1011*89a07cf8Schristos
1012*89a07cf8Schristos     The name of the current drawing color is available in the
1013*89a07cf8Schristos     read-only, string-valued number register `.m'.
1014*89a07cf8Schristos
1015*89a07cf8Schristos     The drawing color is associated with the current environment
1016*89a07cf8Schristos     (*note Environments::).
1017*89a07cf8Schristos
1018*89a07cf8Schristos     Note that `\m' doesn't produce an input token in `gtroff'.  As a
1019*89a07cf8Schristos     consequence, it can be used in requests like `mc' (which expects a
1020*89a07cf8Schristos     single character as an argument) to change the color on the fly:
1021*89a07cf8Schristos
1022*89a07cf8Schristos
1023*89a07cf8Schristos          .mc \m[red]x\m[]
1024*89a07cf8Schristos
1025*89a07cf8Schristos
1026*89a07cf8Schristos -- Request: .fcolor [color]
1027*89a07cf8Schristos -- Escape: \Mc
1028*89a07cf8Schristos -- Escape: \M(co
1029*89a07cf8Schristos -- Escape: \M[color]
1030*89a07cf8Schristos -- Register: \n[.M]
1031*89a07cf8Schristos     Set fill (background) color for filled objects drawn with the
1032*89a07cf8Schristos     `\D'...'' commands.
1033*89a07cf8Schristos
1034*89a07cf8Schristos     A red ellipse can be created with the following code:
1035*89a07cf8Schristos
1036*89a07cf8Schristos
1037*89a07cf8Schristos          \M[red]\h'0.5i'\D'E 2i 1i'\M[]
1038*89a07cf8Schristos
1039*89a07cf8Schristos     The escape `\M[]' returns to the previous fill color, as does a
1040*89a07cf8Schristos     call to `fcolor' without an argument.
1041*89a07cf8Schristos
1042*89a07cf8Schristos     The name of the current fill (background) color is available in the
1043*89a07cf8Schristos     read-only, string-valued number register `.M'.
1044*89a07cf8Schristos
1045*89a07cf8Schristos     The fill color is associated with the current environment (*note
1046*89a07cf8Schristos     Environments::).
1047*89a07cf8Schristos
1048*89a07cf8Schristos     Note that `\M' doesn't produce an input token in `gtroff'.
1049*89a07cf8Schristos
1050*89a07cf8Schristos
1051*89a07cf8SchristosFile: groff,  Node: I/O,  Next: Postprocessor Access,  Prev: Colors,  Up: gtroff Reference
1052*89a07cf8Schristos
1053*89a07cf8Schristos5.29 I/O
1054*89a07cf8Schristos========
1055*89a07cf8Schristos
1056*89a07cf8Schristos`gtroff' has several requests for including files:
1057*89a07cf8Schristos
1058*89a07cf8Schristos -- Request: .so file
1059*89a07cf8Schristos     Read in the specified FILE and includes it in place of the `so'
1060*89a07cf8Schristos     request.  This is quite useful for large documents, e.g. keeping
1061*89a07cf8Schristos     each chapter in a separate file.  *Note gsoelim::, for more
1062*89a07cf8Schristos     information.
1063*89a07cf8Schristos
1064*89a07cf8Schristos     Since `gtroff' replaces the `so' request with the contents of
1065*89a07cf8Schristos     `file', it makes a difference whether the data is terminated with
1066*89a07cf8Schristos     a newline or not: Assuming that file `xxx' contains the word `foo'
1067*89a07cf8Schristos     without a final newline, this
1068*89a07cf8Schristos
1069*89a07cf8Schristos
1070*89a07cf8Schristos          This is
1071*89a07cf8Schristos          .so xxx
1072*89a07cf8Schristos          bar
1073*89a07cf8Schristos
1074*89a07cf8Schristos     yields `This is foobar'.
1075*89a07cf8Schristos
1076*89a07cf8Schristos     The search path for FILE can be controlled with the `-I' command
1077*89a07cf8Schristos     line option.
1078*89a07cf8Schristos
1079*89a07cf8Schristos -- Request: .pso command
1080*89a07cf8Schristos     Read the standard output from the specified COMMAND and includes
1081*89a07cf8Schristos     it in place of the `pso' request.
1082*89a07cf8Schristos
1083*89a07cf8Schristos     This request causes an error if used in safer mode (which is the
1084*89a07cf8Schristos     default).  Use `groff''s or `troff''s `-U' option to activate
1085*89a07cf8Schristos     unsafe mode.
1086*89a07cf8Schristos
1087*89a07cf8Schristos     The comment regarding a final newline for the `so' request is valid
1088*89a07cf8Schristos     for `pso' also.
1089*89a07cf8Schristos
1090*89a07cf8Schristos -- Request: .mso file
1091*89a07cf8Schristos     Identical to the `so' request except that `gtroff' searches for
1092*89a07cf8Schristos     the specified FILE in the same directories as macro files for the
1093*89a07cf8Schristos     the `-m' command line option.  If the file name to be included has
1094*89a07cf8Schristos     the form `NAME.tmac' and it isn't found, `mso' tries to include
1095*89a07cf8Schristos     `tmac.NAME' and vice versa.
1096*89a07cf8Schristos
1097*89a07cf8Schristos -- Request: .trf file
1098*89a07cf8Schristos -- Request: .cf file
1099*89a07cf8Schristos     Transparently output the contents of FILE.  Each line is output as
1100*89a07cf8Schristos     if it were preceded by `\!'; however, the lines are not subject to
1101*89a07cf8Schristos     copy mode interpretation.  If the file does not end with a newline,
1102*89a07cf8Schristos     then a newline is added (`trf' only).  For example, to define a
1103*89a07cf8Schristos     macro `x' containing the contents of file `f', use
1104*89a07cf8Schristos
1105*89a07cf8Schristos
1106*89a07cf8Schristos          .di x
1107*89a07cf8Schristos          .trf f
1108*89a07cf8Schristos          .di
1109*89a07cf8Schristos
1110*89a07cf8Schristos     Both `trf' and `cf', when used in a diversion, embeds an object in
1111*89a07cf8Schristos     the diversion which, when reread, causes the contents of FILE to
1112*89a07cf8Schristos     be transparently copied through to the output.  In UNIX `troff',
1113*89a07cf8Schristos     the contents of FILE is immediately copied through to the output
1114*89a07cf8Schristos     regardless of whether there is a current diversion; this behaviour
1115*89a07cf8Schristos     is so anomalous that it must be considered a bug.
1116*89a07cf8Schristos
1117*89a07cf8Schristos     While `cf' copies the contents of FILE completely unprocessed,
1118*89a07cf8Schristos     `trf' disallows characters such as NUL that are not valid `gtroff'
1119*89a07cf8Schristos     input characters (*note Identifiers::).
1120*89a07cf8Schristos
1121*89a07cf8Schristos     Both requests cause a line break.
1122*89a07cf8Schristos
1123*89a07cf8Schristos -- Request: .nx [file]
1124*89a07cf8Schristos     Force `gtroff' to continue processing of the file specified as an
1125*89a07cf8Schristos     argument.  If no argument is given, immediately jump to the end of
1126*89a07cf8Schristos     file.
1127*89a07cf8Schristos
1128*89a07cf8Schristos -- Request: .rd [prompt [arg1 arg2 ...]]
1129*89a07cf8Schristos     Read from standard input, and include what is read as though it
1130*89a07cf8Schristos     were part of the input file.  Text is read until a blank line is
1131*89a07cf8Schristos     encountered.
1132*89a07cf8Schristos
1133*89a07cf8Schristos     If standard input is a TTY input device (keyboard), write PROMPT
1134*89a07cf8Schristos     to standard error, followed by a colon (or send BEL for a beep if
1135*89a07cf8Schristos     no argument is given).
1136*89a07cf8Schristos
1137*89a07cf8Schristos     Arguments after PROMPT are available for the input.  For example,
1138*89a07cf8Schristos     the line
1139*89a07cf8Schristos
1140*89a07cf8Schristos
1141*89a07cf8Schristos          .rd data foo bar
1142*89a07cf8Schristos
1143*89a07cf8Schristos     with the input `This is \$2.' prints
1144*89a07cf8Schristos
1145*89a07cf8Schristos
1146*89a07cf8Schristos          This is bar.
1147*89a07cf8Schristos
1148*89a07cf8Schristos
1149*89a07cf8Schristos   Using the `nx' and `rd' requests, it is easy to set up form letters.
1150*89a07cf8SchristosThe form letter template is constructed like this, putting the
1151*89a07cf8Schristosfollowing lines into a file called `repeat.let':
1152*89a07cf8Schristos
1153*89a07cf8Schristos
1154*89a07cf8Schristos     .ce
1155*89a07cf8Schristos     \*(td
1156*89a07cf8Schristos     .sp 2
1157*89a07cf8Schristos     .nf
1158*89a07cf8Schristos     .rd
1159*89a07cf8Schristos     .sp
1160*89a07cf8Schristos     .rd
1161*89a07cf8Schristos     .fi
1162*89a07cf8Schristos     Body of letter.
1163*89a07cf8Schristos     .bp
1164*89a07cf8Schristos     .nx repeat.let
1165*89a07cf8Schristos
1166*89a07cf8SchristosWhen this is run, a file containing the following lines should be
1167*89a07cf8Schristosredirected in.  Note that requests included in this file are executed
1168*89a07cf8Schristosas though they were part of the form letter.  The last block of input
1169*89a07cf8Schristosis the `ex' request which tells `groff' to stop processing.  If this
1170*89a07cf8Schristoswas not there, `groff' would not know when to stop.
1171*89a07cf8Schristos
1172*89a07cf8Schristos
1173*89a07cf8Schristos     Trent A. Fisher
1174*89a07cf8Schristos     708 NW 19th Av., #202
1175*89a07cf8Schristos     Portland, OR  97209
1176*89a07cf8Schristos
1177*89a07cf8Schristos     Dear Trent,
1178*89a07cf8Schristos
1179*89a07cf8Schristos     Len Adollar
1180*89a07cf8Schristos     4315 Sierra Vista
1181*89a07cf8Schristos     San Diego, CA  92103
1182*89a07cf8Schristos
1183*89a07cf8Schristos     Dear Mr. Adollar,
1184*89a07cf8Schristos
1185*89a07cf8Schristos     .ex
1186*89a07cf8Schristos
1187*89a07cf8Schristos -- Request: .pi pipe
1188*89a07cf8Schristos     Pipe the output of `gtroff' to the shell command(s) specified by
1189*89a07cf8Schristos     PIPE.  This request must occur before `gtroff' has a chance to
1190*89a07cf8Schristos     print anything.
1191*89a07cf8Schristos
1192*89a07cf8Schristos     `pi' causes an error if used in safer mode (which is the default).
1193*89a07cf8Schristos     Use `groff''s or `troff''s `-U' option to activate unsafe mode.
1194*89a07cf8Schristos
1195*89a07cf8Schristos     Multiple calls to `pi' are allowed, acting as a chain.  For
1196*89a07cf8Schristos     example,
1197*89a07cf8Schristos
1198*89a07cf8Schristos
1199*89a07cf8Schristos          .pi foo
1200*89a07cf8Schristos          .pi bar
1201*89a07cf8Schristos          ...
1202*89a07cf8Schristos
1203*89a07cf8Schristos     is the same as `.pi foo | bar'.
1204*89a07cf8Schristos
1205*89a07cf8Schristos     Note that the intermediate output format of `gtroff' is piped to
1206*89a07cf8Schristos     the specified commands.  Consequently, calling `groff' without the
1207*89a07cf8Schristos     `-Z' option normally causes a fatal error.
1208*89a07cf8Schristos
1209*89a07cf8Schristos -- Request: .sy cmds
1210*89a07cf8Schristos -- Register: \n[systat]
1211*89a07cf8Schristos     Execute the shell command(s) specified by CMDS.  The output is not
1212*89a07cf8Schristos     saved anyplace, so it is up to the user to do so.
1213*89a07cf8Schristos
1214*89a07cf8Schristos     This request causes an error if used in safer mode (which is the
1215*89a07cf8Schristos     default).  Use `groff''s or `troff''s `-U' option to activate
1216*89a07cf8Schristos     unsafe mode.
1217*89a07cf8Schristos
1218*89a07cf8Schristos     For example, the following code fragment introduces the current
1219*89a07cf8Schristos     time into a document:
1220*89a07cf8Schristos
1221*89a07cf8Schristos
1222*89a07cf8Schristos          .sy perl -e 'printf ".nr H %d\\n.nr M %d\\n.nr S %d\\n",\
1223*89a07cf8Schristos                       (localtime(time))[2,1,0]' > /tmp/x\n[$$]
1224*89a07cf8Schristos          .so /tmp/x\n[$$]
1225*89a07cf8Schristos          .sy rm /tmp/x\n[$$]
1226*89a07cf8Schristos          \nH:\nM:\nS
1227*89a07cf8Schristos
1228*89a07cf8Schristos     Note that this works by having the `perl' script (run by `sy')
1229*89a07cf8Schristos     print out the `nr' requests which set the number registers `H',
1230*89a07cf8Schristos     `M', and `S', and then reads those commands in with the `so'
1231*89a07cf8Schristos     request.
1232*89a07cf8Schristos
1233*89a07cf8Schristos     For most practical purposes, the number registers `seconds',
1234*89a07cf8Schristos     `minutes', and `hours' which are initialized at start-up of
1235*89a07cf8Schristos     `gtroff' should be sufficient.  Use the `af' request to get a
1236*89a07cf8Schristos     formatted output:
1237*89a07cf8Schristos
1238*89a07cf8Schristos
1239*89a07cf8Schristos          .af hours 00
1240*89a07cf8Schristos          .af minutes 00
1241*89a07cf8Schristos          .af seconds 00
1242*89a07cf8Schristos          \n[hours]:\n[minutes]:\n[seconds]
1243*89a07cf8Schristos
1244*89a07cf8Schristos     The `systat' read-write number register contains the return value
1245*89a07cf8Schristos     of the `system()' function executed by the last `sy' request.
1246*89a07cf8Schristos
1247*89a07cf8Schristos -- Request: .open stream file
1248*89a07cf8Schristos -- Request: .opena stream file
1249*89a07cf8Schristos     Open the specified FILE for writing and associates the specified
1250*89a07cf8Schristos     STREAM with it.
1251*89a07cf8Schristos
1252*89a07cf8Schristos     The `opena' request is like `open', but if the file exists, append
1253*89a07cf8Schristos     to it instead of truncating it.
1254*89a07cf8Schristos
1255*89a07cf8Schristos     Both `open' and `opena' cause an error if used in safer mode
1256*89a07cf8Schristos     (which is the default).  Use `groff''s or `troff''s `-U' option to
1257*89a07cf8Schristos     activate unsafe mode.
1258*89a07cf8Schristos
1259*89a07cf8Schristos -- Request: .write stream data
1260*89a07cf8Schristos -- Request: .writec stream data
1261*89a07cf8Schristos     Write to the file associated with the specified STREAM.  The
1262*89a07cf8Schristos     stream must previously have been the subject of an open request.
1263*89a07cf8Schristos     The remainder of the line is interpreted as the `ds' request reads
1264*89a07cf8Schristos     its second argument: A leading `"' is stripped, and it is read in
1265*89a07cf8Schristos     copy-in mode.
1266*89a07cf8Schristos
1267*89a07cf8Schristos     The `writec' request is like `write', but only `write' appends a
1268*89a07cf8Schristos     newline to the data.
1269*89a07cf8Schristos
1270*89a07cf8Schristos -- Request: .writem stream xx
1271*89a07cf8Schristos     Write the contents of the macro or string XX to the file
1272*89a07cf8Schristos     associated with the specified STREAM.
1273*89a07cf8Schristos
1274*89a07cf8Schristos     XX is read in copy mode, i.e., already formatted elements are
1275*89a07cf8Schristos     ignored.  Consequently, diversions must be unformatted with the
1276*89a07cf8Schristos     `asciify' request before calling `writem'.  Usually, this means a
1277*89a07cf8Schristos     loss of information.
1278*89a07cf8Schristos
1279*89a07cf8Schristos -- Request: .close stream
1280*89a07cf8Schristos     Close the specified STREAM; the stream is no longer an acceptable
1281*89a07cf8Schristos     argument to the `write' request.
1282*89a07cf8Schristos
1283*89a07cf8Schristos     Here a simple macro to write an index entry.
1284*89a07cf8Schristos
1285*89a07cf8Schristos
1286*89a07cf8Schristos          .open idx test.idx
1287*89a07cf8Schristos          .
1288*89a07cf8Schristos          .de IX
1289*89a07cf8Schristos          .  write idx \\n[%] \\$*
1290*89a07cf8Schristos          ..
1291*89a07cf8Schristos          .
1292*89a07cf8Schristos          .IX test entry
1293*89a07cf8Schristos          .
1294*89a07cf8Schristos          .close idx
1295*89a07cf8Schristos
1296*89a07cf8Schristos
1297*89a07cf8Schristos -- Escape: \Ve
1298*89a07cf8Schristos -- Escape: \V(ev
1299*89a07cf8Schristos -- Escape: \V[env]
1300*89a07cf8Schristos     Interpolate the contents of the specified environment variable ENV
1301*89a07cf8Schristos     (one-character name E, two-character name EV) as returned by the
1302*89a07cf8Schristos     function `getenv'.  `\V' is interpreted in copy-in mode.
1303*89a07cf8Schristos
1304*89a07cf8Schristos
1305*89a07cf8SchristosFile: groff,  Node: Postprocessor Access,  Next: Miscellaneous,  Prev: I/O,  Up: gtroff Reference
1306*89a07cf8Schristos
1307*89a07cf8Schristos5.30 Postprocessor Access
1308*89a07cf8Schristos=========================
1309*89a07cf8Schristos
1310*89a07cf8SchristosThere are two escapes which give information directly to the
1311*89a07cf8Schristospostprocessor.  This is particularly useful for embedding POSTSCRIPT
1312*89a07cf8Schristosinto the final document.
1313*89a07cf8Schristos
1314*89a07cf8Schristos -- Escape: \X'xxx'
1315*89a07cf8Schristos     Embeds its argument into the `gtroff' output preceded with `x X'.
1316*89a07cf8Schristos
1317*89a07cf8Schristos     The escapes `\&', `\)', `\%', and `\:' are ignored within `\X',
1318*89a07cf8Schristos     `\ ' and `\~' are converted to single space characters.  All other
1319*89a07cf8Schristos     escapes (except `\\' which produces a backslash) cause an error.
1320*89a07cf8Schristos
1321*89a07cf8Schristos     If the `use_charnames_in_special' keyword is set in the `DESC'
1322*89a07cf8Schristos     file, special characters no longer cause an error; the name XX is
1323*89a07cf8Schristos     represented as `\(XX)' in the `x X' output command.  Additionally,
1324*89a07cf8Schristos     the backslash is represented as `\\'.
1325*89a07cf8Schristos
1326*89a07cf8Schristos     `use_charnames_in_special' is currently used by `grohtml' only.
1327*89a07cf8Schristos
1328*89a07cf8Schristos -- Escape: \Yn
1329*89a07cf8Schristos -- Escape: \Y(nm
1330*89a07cf8Schristos -- Escape: \Y[name]
1331*89a07cf8Schristos     This is approximately equivalent to `\X'\*[NAME]'' (one-character
1332*89a07cf8Schristos     name N, two-character name NM).  However, the contents of the
1333*89a07cf8Schristos     string or macro NAME are not interpreted; also it is permitted for
1334*89a07cf8Schristos     NAME to have been defined as a macro and thus contain newlines (it
1335*89a07cf8Schristos     is not permitted for the argument to `\X' to contain newlines).
1336*89a07cf8Schristos     The inclusion of newlines requires an extension to the UNIX `troff'
1337*89a07cf8Schristos     output format, and confuses drivers that do not know about this
1338*89a07cf8Schristos     extension (*note Device Control Commands::).
1339*89a07cf8Schristos
1340*89a07cf8Schristos   *Note Output Devices::.
1341*89a07cf8Schristos
1342*89a07cf8Schristos
1343*89a07cf8SchristosFile: groff,  Node: Miscellaneous,  Next: Gtroff Internals,  Prev: Postprocessor Access,  Up: gtroff Reference
1344*89a07cf8Schristos
1345*89a07cf8Schristos5.31 Miscellaneous
1346*89a07cf8Schristos==================
1347*89a07cf8Schristos
1348*89a07cf8SchristosThis section documents parts of `gtroff' which cannot (yet) be
1349*89a07cf8Schristoscategorized elsewhere in this manual.
1350*89a07cf8Schristos
1351*89a07cf8Schristos -- Request: .nm [start [inc [space [indent]]]]
1352*89a07cf8Schristos     Print line numbers.  START is the line number of the _next_ output
1353*89a07cf8Schristos     line.  INC indicates which line numbers are printed.  For example,
1354*89a07cf8Schristos     the value 5 means to emit only line numbers which are multiples
1355*89a07cf8Schristos     of 5; this defaults to 1.  SPACE is the space to be left between
1356*89a07cf8Schristos     the number and the text; this defaults to one digit space.  The
1357*89a07cf8Schristos     fourth argument is the indentation of the line numbers, defaulting
1358*89a07cf8Schristos     to zero.  Both SPACE and INDENT are given as multiples of digit
1359*89a07cf8Schristos     spaces; they can be negative also.  Without any arguments, line
1360*89a07cf8Schristos     numbers are turned off.
1361*89a07cf8Schristos
1362*89a07cf8Schristos     `gtroff' reserves three digit spaces for the line number (which is
1363*89a07cf8Schristos     printed right-justified) plus the amount given by INDENT; the
1364*89a07cf8Schristos     output lines are concatenated to the line numbers, separated by
1365*89a07cf8Schristos     SPACE, and _without_ reducing the line length.  Depending on the
1366*89a07cf8Schristos     value of the horizontal page offset (as set with the `po'
1367*89a07cf8Schristos     request), line numbers which are longer than the reserved space
1368*89a07cf8Schristos     stick out to the left, or the whole line is moved to the right.
1369*89a07cf8Schristos
1370*89a07cf8Schristos     Parameters corresponding to missing arguments are not changed; any
1371*89a07cf8Schristos     non-digit argument (to be more precise, any argument starting with
1372*89a07cf8Schristos     a character valid as a delimiter for identifiers) is also treated
1373*89a07cf8Schristos     as missing.
1374*89a07cf8Schristos
1375*89a07cf8Schristos     If line numbering has been disabled with a call to `nm' without an
1376*89a07cf8Schristos     argument, it can be reactivated with `.nm +0', using the
1377*89a07cf8Schristos     previously active line numbering parameters.
1378*89a07cf8Schristos
1379*89a07cf8Schristos     The parameters of `nm' are associated with the current environment
1380*89a07cf8Schristos     (*note Environments::).  The current output line number is
1381*89a07cf8Schristos     available in the number register `ln'.
1382*89a07cf8Schristos
1383*89a07cf8Schristos
1384*89a07cf8Schristos          .po 1m
1385*89a07cf8Schristos          .ll 2i
1386*89a07cf8Schristos          This test shows how line numbering works with groff.
1387*89a07cf8Schristos          .nm 999
1388*89a07cf8Schristos          This test shows how line numbering works with groff.
1389*89a07cf8Schristos          .br
1390*89a07cf8Schristos          .nm xxx 3 2
1391*89a07cf8Schristos          .ll -\w'0'u
1392*89a07cf8Schristos          This test shows how line numbering works with groff.
1393*89a07cf8Schristos          .nn 2
1394*89a07cf8Schristos          This test shows how line numbering works with groff.
1395*89a07cf8Schristos
1396*89a07cf8Schristos     And here the result:
1397*89a07cf8Schristos
1398*89a07cf8Schristos
1399*89a07cf8Schristos           This  test shows how
1400*89a07cf8Schristos           line numbering works
1401*89a07cf8Schristos           999 with   groff.   This
1402*89a07cf8Schristos          1000 test shows how  line
1403*89a07cf8Schristos          1001 numbering works with
1404*89a07cf8Schristos          1002 groff.
1405*89a07cf8Schristos                This test shows how
1406*89a07cf8Schristos                line      numbering
1407*89a07cf8Schristos           works  with  groff.
1408*89a07cf8Schristos           This test shows how
1409*89a07cf8Schristos          1005  line      numbering
1410*89a07cf8Schristos                works with groff.
1411*89a07cf8Schristos
1412*89a07cf8Schristos
1413*89a07cf8Schristos -- Request: .nn [skip]
1414*89a07cf8Schristos     Temporarily turn off line numbering.  The argument is the number
1415*89a07cf8Schristos     of lines not to be numbered; this defaults to 1.
1416*89a07cf8Schristos
1417*89a07cf8Schristos -- Request: .mc glyph [dist]
1418*89a07cf8Schristos     Print a "margin character" to the right of the text.(1) (*note
1419*89a07cf8Schristos     Miscellaneous-Footnote-1::)  The first argument is the glyph to be
1420*89a07cf8Schristos     printed.  The second argument is the distance away from the right
1421*89a07cf8Schristos     margin.  If missing, the previously set value is used; default is
1422*89a07cf8Schristos     10pt).  For text lines that are too long (that is, longer than the
1423*89a07cf8Schristos     text length plus DIST), the margin character is directly appended
1424*89a07cf8Schristos     to the lines.
1425*89a07cf8Schristos
1426*89a07cf8Schristos     With no arguments the margin character is turned off.  If this
1427*89a07cf8Schristos     occurs before a break, no margin character is printed.
1428*89a07cf8Schristos
1429*89a07cf8Schristos     For compatibility with AT&T `troff', a call to `mc' to set the
1430*89a07cf8Schristos     margin character can't be undone immediately; at least one line
1431*89a07cf8Schristos     gets a margin character.  Thus
1432*89a07cf8Schristos
1433*89a07cf8Schristos
1434*89a07cf8Schristos          .ll 1i
1435*89a07cf8Schristos          .mc \[br]
1436*89a07cf8Schristos          .mc
1437*89a07cf8Schristos          xxx
1438*89a07cf8Schristos          .br
1439*89a07cf8Schristos          xxx
1440*89a07cf8Schristos
1441*89a07cf8Schristos     produces
1442*89a07cf8Schristos
1443*89a07cf8Schristos
1444*89a07cf8Schristos          xxx        |
1445*89a07cf8Schristos          xxx
1446*89a07cf8Schristos
1447*89a07cf8Schristos     For empty lines and lines produced by the `tl' request no margin
1448*89a07cf8Schristos     character is emitted.
1449*89a07cf8Schristos
1450*89a07cf8Schristos     The margin character is associated with the current environment
1451*89a07cf8Schristos     (*note Environments::).
1452*89a07cf8Schristos
1453*89a07cf8Schristos     This is quite useful for indicating text that has changed, and, in
1454*89a07cf8Schristos     fact, there are programs available for doing this (they are called
1455*89a07cf8Schristos     `nrchbar' and `changebar' and can be found in any
1456*89a07cf8Schristos     `comp.sources.unix' archive).
1457*89a07cf8Schristos
1458*89a07cf8Schristos
1459*89a07cf8Schristos          .ll 3i
1460*89a07cf8Schristos          .mc |
1461*89a07cf8Schristos          This paragraph is highlighted with a margin
1462*89a07cf8Schristos          character.
1463*89a07cf8Schristos          .sp
1464*89a07cf8Schristos          Note that vertical space isn't marked.
1465*89a07cf8Schristos          .br
1466*89a07cf8Schristos          \&
1467*89a07cf8Schristos          .br
1468*89a07cf8Schristos          But we can fake it with `\&'.
1469*89a07cf8Schristos
1470*89a07cf8Schristos     Result:
1471*89a07cf8Schristos
1472*89a07cf8Schristos
1473*89a07cf8Schristos          This  paragraph is highlighted |
1474*89a07cf8Schristos          with a margin character.       |
1475*89a07cf8Schristos
1476*89a07cf8Schristos          Note that vertical space isn't |
1477*89a07cf8Schristos          marked.                        |
1478*89a07cf8Schristos                                         |
1479*89a07cf8Schristos          But we can fake it with `\&'.  |
1480*89a07cf8Schristos
1481*89a07cf8Schristos
1482*89a07cf8Schristos -- Request: .psbb filename
1483*89a07cf8Schristos -- Register: \n[llx]
1484*89a07cf8Schristos -- Register: \n[lly]
1485*89a07cf8Schristos -- Register: \n[urx]
1486*89a07cf8Schristos -- Register: \n[ury]
1487*89a07cf8Schristos     Retrieve the bounding box of the PostScript image found in
1488*89a07cf8Schristos     FILENAME.  The file must conform to Adobe's "Document Structuring
1489*89a07cf8Schristos     Conventions" (DSC); the command searches for a `%%BoundingBox'
1490*89a07cf8Schristos     comment and extracts the bounding box values into the number
1491*89a07cf8Schristos     registers `llx', `lly', `urx', and `ury'.  If an error occurs (for
1492*89a07cf8Schristos     example, `psbb' cannot find the `%%BoundingBox' comment), it sets
1493*89a07cf8Schristos     the four number registers to zero.
1494*89a07cf8Schristos
1495*89a07cf8Schristos     The search path for FILENAME can be controlled with the `-I'
1496*89a07cf8Schristos     command line option.
1497*89a07cf8Schristos
1498*89a07cf8Schristos
1499*89a07cf8SchristosFile: groff,  Node: Miscellaneous-Footnotes,  Up: Miscellaneous
1500*89a07cf8Schristos
1501*89a07cf8Schristos   (1) "Margin character" is a misnomer since it is an output glyph.
1502*89a07cf8Schristos
1503*89a07cf8Schristos
1504*89a07cf8SchristosFile: groff,  Node: Gtroff Internals,  Next: Debugging,  Prev: Miscellaneous,  Up: gtroff Reference
1505*89a07cf8Schristos
1506*89a07cf8Schristos5.32 `gtroff' Internals
1507*89a07cf8Schristos=======================
1508*89a07cf8Schristos
1509*89a07cf8Schristos`gtroff' processes input in three steps.  One or more input characters
1510*89a07cf8Schristosare converted to an "input token".(1) (*note Gtroff
1511*89a07cf8SchristosInternals-Footnote-1::)  Then, one or more input tokens are converted
1512*89a07cf8Schristosto an "output node".  Finally, output nodes are converted to the
1513*89a07cf8Schristosintermediate output language understood by all output devices.
1514*89a07cf8Schristos
1515*89a07cf8Schristos   Actually, before step one happens, `gtroff' converts certain escape
1516*89a07cf8Schristossequences into reserved input characters (not accessible by the user);
1517*89a07cf8Schristossuch reserved characters are used for other internal processing also -
1518*89a07cf8Schristosthis is the very reason why not all characters are valid input.  *Note
1519*89a07cf8SchristosIdentifiers::, for more on this topic.
1520*89a07cf8Schristos
1521*89a07cf8Schristos   For example, the input string `fi\[:u]' is converted into a
1522*89a07cf8Schristoscharacter token `f', a character token `i', and a special token `:u'
1523*89a07cf8Schristos(representing u umlaut).  Later on, the character tokens `f' and `i'
1524*89a07cf8Schristosare merged to a single output node representing the ligature glyph `fi'
1525*89a07cf8Schristos(provided the current font has a glyph for this ligature); the same
1526*89a07cf8Schristoshappens with `:u'.  All output glyph nodes are `processed' which means
1527*89a07cf8Schristosthat they are invariably associated with a given font, font size,
1528*89a07cf8Schristosadvance width, etc.  During the formatting process, `gtroff' itself
1529*89a07cf8Schristosadds various nodes to control the data flow.
1530*89a07cf8Schristos
1531*89a07cf8Schristos   Macros, diversions, and strings collect elements in two chained
1532*89a07cf8Schristoslists: a list of input tokens which have been passed unprocessed, and a
1533*89a07cf8Schristoslist of output nodes.  Consider the following the diversion.
1534*89a07cf8Schristos
1535*89a07cf8Schristos
1536*89a07cf8Schristos     .di xxx
1537*89a07cf8Schristos     a
1538*89a07cf8Schristos     \!b
1539*89a07cf8Schristos     c
1540*89a07cf8Schristos     .br
1541*89a07cf8Schristos     .di
1542*89a07cf8Schristos
1543*89a07cf8SchristosIt contains these elements.
1544*89a07cf8Schristos
1545*89a07cf8Schristosnode list            token list   element number
1546*89a07cf8Schristosline start node      --           1
1547*89a07cf8Schristosglyph node `a'       --           2
1548*89a07cf8Schristosword space node      --           3
1549*89a07cf8Schristos--                   `b'          4
1550*89a07cf8Schristos--                   `\n'         5
1551*89a07cf8Schristosglyph node `c'       --           6
1552*89a07cf8Schristosvertical size node   --           7
1553*89a07cf8Schristosvertical size node   --           8
1554*89a07cf8Schristos--                   `\n'         9
1555*89a07cf8Schristos
1556*89a07cf8SchristosElements 1, 7, and 8 are inserted by `gtroff'; the latter two (which
1557*89a07cf8Schristosare always present) specify the vertical extent of the last line,
1558*89a07cf8Schristospossibly modified by `\x'.  The `br' request finishes the current
1559*89a07cf8Schristospartial line, inserting a newline input token which is subsequently
1560*89a07cf8Schristosconverted to a space when the diversion is reread.  Note that the word
1561*89a07cf8Schristosspace node has a fixed width which isn't stretchable anymore.  To
1562*89a07cf8Schristosconvert horizontal space nodes back to input tokens, use the `unformat'
1563*89a07cf8Schristosrequest.
1564*89a07cf8Schristos
1565*89a07cf8Schristos   Macros only contain elements in the token list (and the node list is
1566*89a07cf8Schristosempty); diversions and strings can contain elements in both lists.
1567*89a07cf8Schristos
1568*89a07cf8Schristos   Note that the `chop' request simply reduces the number of elements
1569*89a07cf8Schristosin a macro, string, or diversion by one.  Exceptions are "compatibility
1570*89a07cf8Schristossave" and "compatibility ignore" input tokens which are ignored.  The
1571*89a07cf8Schristos`substring' request also ignores those input tokens.
1572*89a07cf8Schristos
1573*89a07cf8Schristos   Some requests like `tr' or `cflags' work on glyph identifiers only;
1574*89a07cf8Schristosthis means that the associated glyph can be changed without destroying
1575*89a07cf8Schristosthis association.  This can be very helpful for substituting glyphs.
1576*89a07cf8SchristosIn the following example, we assume that glyph `foo' isn't available by
1577*89a07cf8Schristosdefault, so we provide a substitution using the `fchar' request and map
1578*89a07cf8Schristosit to input character `x'.
1579*89a07cf8Schristos
1580*89a07cf8Schristos
1581*89a07cf8Schristos     .fchar \[foo] foo
1582*89a07cf8Schristos     .tr x \[foo]
1583*89a07cf8Schristos
1584*89a07cf8SchristosNow let us assume that we install an additional special font `bar'
1585*89a07cf8Schristoswhich has glyph `foo'.
1586*89a07cf8Schristos
1587*89a07cf8Schristos
1588*89a07cf8Schristos     .special bar
1589*89a07cf8Schristos     .rchar \[foo]
1590*89a07cf8Schristos
1591*89a07cf8SchristosSince glyphs defined with `fchar' are searched before glyphs in special
1592*89a07cf8Schristosfonts, we must call `rchar' to remove the definition of the fallback
1593*89a07cf8Schristosglyph.  Anyway, the translation is still active; `x' now maps to the
1594*89a07cf8Schristosreal glyph `foo'.
1595*89a07cf8Schristos
1596*89a07cf8Schristos   Macro and request arguments preserve the compatibility mode:
1597*89a07cf8Schristos
1598*89a07cf8Schristos
1599*89a07cf8Schristos     .cp 1     \" switch to compatibility mode
1600*89a07cf8Schristos     .de xx
1601*89a07cf8Schristos     \\$1
1602*89a07cf8Schristos     ..
1603*89a07cf8Schristos     .cp 0     \" switch compatibility mode off
1604*89a07cf8Schristos     .xx caf\['e]
1605*89a07cf8Schristos         => caf�
1606*89a07cf8Schristos
1607*89a07cf8SchristosSince compatibility mode is on while `de' is called, the macro `xx'
1608*89a07cf8Schristosactivates compatibility mode while executing.  Argument `$1' can still
1609*89a07cf8Schristosbe handled properly because it inherits the compatibility mode status
1610*89a07cf8Schristoswhich was active at the point where `xx' is called.
1611*89a07cf8Schristos
1612*89a07cf8Schristos   After expansion of the parameters, the compatibility save and restore
1613*89a07cf8Schristostokens are removed.
1614*89a07cf8Schristos
1615*89a07cf8Schristos
1616*89a07cf8SchristosFile: groff,  Node: Gtroff Internals-Footnotes,  Up: Gtroff Internals
1617*89a07cf8Schristos
1618*89a07cf8Schristos   (1) Except the escapes `\f', `\F', `\H', `\m', `\M', `\R', `\s', and
1619*89a07cf8Schristos`\S' which are processed immediately if not in copy-in mode.
1620*89a07cf8Schristos
1621*89a07cf8Schristos
1622*89a07cf8SchristosFile: groff,  Node: Debugging,  Next: Implementation Differences,  Prev: Gtroff Internals,  Up: gtroff Reference
1623*89a07cf8Schristos
1624*89a07cf8Schristos5.33 Debugging
1625*89a07cf8Schristos==============
1626*89a07cf8Schristos
1627*89a07cf8Schristos`gtroff' is not easy to debug, but there are some useful features and
1628*89a07cf8Schristosstrategies for debugging.
1629*89a07cf8Schristos
1630*89a07cf8Schristos -- Request: .lf line [filename]
1631*89a07cf8Schristos     Change the line number and optionally the file name `gtroff' shall
1632*89a07cf8Schristos     use for error and warning messages.  LINE is the input line number
1633*89a07cf8Schristos     of the _next_ line.
1634*89a07cf8Schristos
1635*89a07cf8Schristos     Without argument, the request is ignored.
1636*89a07cf8Schristos
1637*89a07cf8Schristos     This is a debugging aid for documents which are split into many
1638*89a07cf8Schristos     files, then put together with `soelim' and other preprocessors.
1639*89a07cf8Schristos     Usually, it isn't invoked manually.
1640*89a07cf8Schristos
1641*89a07cf8Schristos     Note that other `troff' implementations (including the original
1642*89a07cf8Schristos     AT&T version) handle `lf' differently.  For them, LINE changes the
1643*89a07cf8Schristos     line number of the _current_ line.
1644*89a07cf8Schristos
1645*89a07cf8Schristos -- Request: .tm string
1646*89a07cf8Schristos -- Request: .tm1 string
1647*89a07cf8Schristos -- Request: .tmc string
1648*89a07cf8Schristos     Send STRING to the standard error output; this is very useful for
1649*89a07cf8Schristos     printing debugging messages among other things.
1650*89a07cf8Schristos
1651*89a07cf8Schristos     STRING is read in copy mode.
1652*89a07cf8Schristos
1653*89a07cf8Schristos     The `tm' request ignores leading spaces of STRING; `tm1' handles
1654*89a07cf8Schristos     its argument similar to the `ds' request: a leading double quote
1655*89a07cf8Schristos     in STRING is stripped to allow initial blanks.
1656*89a07cf8Schristos
1657*89a07cf8Schristos     The `tmc' request is similar to `tm1' but does not append a
1658*89a07cf8Schristos     newline (as is done in `tm' and `tm1').
1659*89a07cf8Schristos
1660*89a07cf8Schristos -- Request: .ab [string]
1661*89a07cf8Schristos     Similar to the `tm' request, except that it causes `gtroff' to
1662*89a07cf8Schristos     stop processing.  With no argument it prints `User Abort.' to
1663*89a07cf8Schristos     standard error.
1664*89a07cf8Schristos
1665*89a07cf8Schristos -- Request: .ex
1666*89a07cf8Schristos     The `ex' request also causes `gtroff' to stop processing; see also
1667*89a07cf8Schristos     *Note I/O::.
1668*89a07cf8Schristos
1669*89a07cf8Schristos   When doing something involved it is useful to leave the debugging
1670*89a07cf8Schristosstatements in the code and have them turned on by a command line flag.
1671*89a07cf8Schristos
1672*89a07cf8Schristos
1673*89a07cf8Schristos     .if \n(DB .tm debugging output
1674*89a07cf8Schristos
1675*89a07cf8SchristosTo activate these statements say
1676*89a07cf8Schristos
1677*89a07cf8Schristos
1678*89a07cf8Schristos     groff -rDB=1 file
1679*89a07cf8Schristos
1680*89a07cf8Schristos   If it is known in advance that there will be many errors and no
1681*89a07cf8Schristosuseful output, `gtroff' can be forced to suppress formatted output with
1682*89a07cf8Schristosthe `-z' flag.
1683*89a07cf8Schristos
1684*89a07cf8Schristos -- Request: .pm
1685*89a07cf8Schristos     Print the entire symbol table on `stderr'.  Names of all defined
1686*89a07cf8Schristos     macros, strings, and diversions are print together with their size
1687*89a07cf8Schristos     in bytes.  Since `gtroff' sometimes adds nodes by itself, the
1688*89a07cf8Schristos     returned size can be larger than expected.
1689*89a07cf8Schristos
1690*89a07cf8Schristos     This request differs from UNIX `troff': `gtroff' reports the sizes
1691*89a07cf8Schristos     of diversions, ignores an additional argument to print only the
1692*89a07cf8Schristos     total of the sizes, and the size isn't returned in blocks of 128
1693*89a07cf8Schristos     characters.
1694*89a07cf8Schristos
1695*89a07cf8Schristos -- Request: .pnr
1696*89a07cf8Schristos     Print the names and contents of all currently defined number
1697*89a07cf8Schristos     registers on `stderr'.
1698*89a07cf8Schristos
1699*89a07cf8Schristos -- Request: .ptr
1700*89a07cf8Schristos     Print the names and positions of all traps (not including input
1701*89a07cf8Schristos     line traps and diversion traps) on `stderr'.  Empty slots in the
1702*89a07cf8Schristos     page trap list are printed as well, because they can affect the
1703*89a07cf8Schristos     priority of subsequently planted traps.
1704*89a07cf8Schristos
1705*89a07cf8Schristos -- Request: .fl
1706*89a07cf8Schristos     Instruct `gtroff' to flush its output immediately.  The intent is
1707*89a07cf8Schristos     for interactive use, but this behaviour is currently not
1708*89a07cf8Schristos     implemented in `gtroff'.  Contrary to UNIX `troff', TTY output is
1709*89a07cf8Schristos     sent to a device driver also (`grotty'), making it non-trivial to
1710*89a07cf8Schristos     communicate interactively.
1711*89a07cf8Schristos
1712*89a07cf8Schristos     This request causes a line break.
1713*89a07cf8Schristos
1714*89a07cf8Schristos -- Request: .backtrace
1715*89a07cf8Schristos     Print a backtrace of the input stack to the standard error stream.
1716*89a07cf8Schristos
1717*89a07cf8Schristos     Consider the following in file `test':
1718*89a07cf8Schristos
1719*89a07cf8Schristos
1720*89a07cf8Schristos          .de xxx
1721*89a07cf8Schristos          .  backtrace
1722*89a07cf8Schristos          ..
1723*89a07cf8Schristos          .de yyy
1724*89a07cf8Schristos          .  xxx
1725*89a07cf8Schristos          ..
1726*89a07cf8Schristos          .
1727*89a07cf8Schristos          .yyy
1728*89a07cf8Schristos
1729*89a07cf8Schristos     On execution, `gtroff' prints the following:
1730*89a07cf8Schristos
1731*89a07cf8Schristos
1732*89a07cf8Schristos          test:2: backtrace: macro `xxx'
1733*89a07cf8Schristos          test:5: backtrace: macro `yyy'
1734*89a07cf8Schristos          test:8: backtrace: file `test'
1735*89a07cf8Schristos
1736*89a07cf8Schristos     The option `-b' of `gtroff' internally calls a variant of this
1737*89a07cf8Schristos     request on each error and warning.
1738*89a07cf8Schristos
1739*89a07cf8Schristos -- Register: \n[slimit]
1740*89a07cf8Schristos     Use the `slimit' number register to set the maximum number of
1741*89a07cf8Schristos     objects on the input stack.  If `slimit' is less than or equal
1742*89a07cf8Schristos     to 0, there is no limit set.  With no limit, a buggy recursive
1743*89a07cf8Schristos     macro can exhaust virtual memory.
1744*89a07cf8Schristos
1745*89a07cf8Schristos     The default value is 1000; this is a compile-time constant.
1746*89a07cf8Schristos
1747*89a07cf8Schristos -- Request: .warnscale si
1748*89a07cf8Schristos     Set the scaling indicator used in warnings to SI.  Valid values for
1749*89a07cf8Schristos     SI are `u', `i', `c', `p', and `P'.  At startup, it is set to `i'.
1750*89a07cf8Schristos
1751*89a07cf8Schristos -- Request: .spreadwarn [limit]
1752*89a07cf8Schristos     Make `gtroff' emit a warning if the additional space inserted for
1753*89a07cf8Schristos     each space between words in an output line is larger or equal to
1754*89a07cf8Schristos     LIMIT.  A negative value is changed to zero; no argument toggles
1755*89a07cf8Schristos     the warning on and off without changing LIMIT.  The default scaling
1756*89a07cf8Schristos     indicator is `m'.  At startup, `spreadwarn' is deactivated, and
1757*89a07cf8Schristos     LIMIT is set to 3m.
1758*89a07cf8Schristos
1759*89a07cf8Schristos     For example,
1760*89a07cf8Schristos
1761*89a07cf8Schristos
1762*89a07cf8Schristos          .spreadwarn 0.2m
1763*89a07cf8Schristos
1764*89a07cf8Schristos     will cause a warning if `gtroff' must add 0.2m or more for each
1765*89a07cf8Schristos     interword space in a line.
1766*89a07cf8Schristos
1767*89a07cf8Schristos     This request is active only if text is justified to both margins
1768*89a07cf8Schristos     (using `.ad b').
1769*89a07cf8Schristos
1770*89a07cf8Schristos   `gtroff' has command line options for printing out more warnings
1771*89a07cf8Schristos(`-w') and for printing backtraces (`-b') when a warning or an error
1772*89a07cf8Schristosoccurs.  The most verbose level of warnings is `-ww'.
1773*89a07cf8Schristos
1774*89a07cf8Schristos -- Request: .warn [flags]
1775*89a07cf8Schristos -- Register: \n[.warn]
1776*89a07cf8Schristos     Control the level of warnings checked for.  The FLAGS are the sum
1777*89a07cf8Schristos     of the numbers associated with each warning that is to be enabled;
1778*89a07cf8Schristos     all other warnings are disabled.  The number associated with each
1779*89a07cf8Schristos     warning is listed below.  For example, `.warn 0' disables all
1780*89a07cf8Schristos     warnings, and `.warn 1' disables all warnings except that about
1781*89a07cf8Schristos     missing glyphs.  If no argument is given, all warnings are enabled.
1782*89a07cf8Schristos
1783*89a07cf8Schristos     The read-only number register `.warn' contains the current warning
1784*89a07cf8Schristos     level.
1785*89a07cf8Schristos
1786*89a07cf8Schristos* Menu:
1787*89a07cf8Schristos
1788*89a07cf8Schristos* Warnings::
1789*89a07cf8Schristos
1790*89a07cf8Schristos
1791*89a07cf8SchristosFile: groff,  Node: Warnings,  Prev: Debugging,  Up: Debugging
1792*89a07cf8Schristos
1793*89a07cf8Schristos5.33.1 Warnings
1794*89a07cf8Schristos---------------
1795*89a07cf8Schristos
1796*89a07cf8SchristosThe warnings that can be given to `gtroff' are divided into the
1797*89a07cf8Schristosfollowing categories.  The name associated with each warning is used by
1798*89a07cf8Schristosthe `-w' and `-W' options; the number is used by the `warn' request and
1799*89a07cf8Schristosby the `.warn' register.
1800*89a07cf8Schristos
1801*89a07cf8Schristos`char'
1802*89a07cf8Schristos`1'
1803*89a07cf8Schristos     Non-existent glyphs.(1) (*note Warnings-Footnote-1::)  This is
1804*89a07cf8Schristos     enabled by default.
1805*89a07cf8Schristos
1806*89a07cf8Schristos`number'
1807*89a07cf8Schristos`2'
1808*89a07cf8Schristos     Invalid numeric expressions.  This is enabled by default.  *Note
1809*89a07cf8Schristos     Expressions::.
1810*89a07cf8Schristos
1811*89a07cf8Schristos`break'
1812*89a07cf8Schristos`4'
1813*89a07cf8Schristos     In fill mode, lines which could not be broken so that their length
1814*89a07cf8Schristos     was less than the line length.  This is enabled by default.
1815*89a07cf8Schristos
1816*89a07cf8Schristos`delim'
1817*89a07cf8Schristos`8'
1818*89a07cf8Schristos     Missing or mismatched closing delimiters.
1819*89a07cf8Schristos
1820*89a07cf8Schristos`el'
1821*89a07cf8Schristos`16'
1822*89a07cf8Schristos     Use of the `el' request with no matching `ie' request.  *Note
1823*89a07cf8Schristos     if-else::.
1824*89a07cf8Schristos
1825*89a07cf8Schristos`scale'
1826*89a07cf8Schristos`32'
1827*89a07cf8Schristos     Meaningless scaling indicators.
1828*89a07cf8Schristos
1829*89a07cf8Schristos`range'
1830*89a07cf8Schristos`64'
1831*89a07cf8Schristos     Out of range arguments.
1832*89a07cf8Schristos
1833*89a07cf8Schristos`syntax'
1834*89a07cf8Schristos`128'
1835*89a07cf8Schristos     Dubious syntax in numeric expressions.
1836*89a07cf8Schristos
1837*89a07cf8Schristos`di'
1838*89a07cf8Schristos`256'
1839*89a07cf8Schristos     Use of `di' or `da' without an argument when there is no current
1840*89a07cf8Schristos     diversion.
1841*89a07cf8Schristos
1842*89a07cf8Schristos`mac'
1843*89a07cf8Schristos`512'
1844*89a07cf8Schristos     Use of undefined strings, macros and diversions.  When an undefined
1845*89a07cf8Schristos     string, macro, or diversion is used, that string is automatically
1846*89a07cf8Schristos     defined as empty.  So, in most cases, at most one warning is given
1847*89a07cf8Schristos     for each name.
1848*89a07cf8Schristos
1849*89a07cf8Schristos`reg'
1850*89a07cf8Schristos`1024'
1851*89a07cf8Schristos     Use of undefined number registers.  When an undefined number
1852*89a07cf8Schristos     register is used, that register is automatically defined to have a
1853*89a07cf8Schristos     value of 0.  So, in most cases, at most one warning is given for
1854*89a07cf8Schristos     use of a particular name.
1855*89a07cf8Schristos
1856*89a07cf8Schristos`tab'
1857*89a07cf8Schristos`2048'
1858*89a07cf8Schristos     Use of a tab character where a number was expected.
1859*89a07cf8Schristos
1860*89a07cf8Schristos`right-brace'
1861*89a07cf8Schristos`4096'
1862*89a07cf8Schristos     Use of `\}' where a number was expected.
1863*89a07cf8Schristos
1864*89a07cf8Schristos`missing'
1865*89a07cf8Schristos`8192'
1866*89a07cf8Schristos     Requests that are missing non-optional arguments.
1867*89a07cf8Schristos
1868*89a07cf8Schristos`input'
1869*89a07cf8Schristos`16384'
1870*89a07cf8Schristos     Invalid input characters.
1871*89a07cf8Schristos
1872*89a07cf8Schristos`escape'
1873*89a07cf8Schristos`32768'
1874*89a07cf8Schristos     Unrecognized escape sequences.  When an unrecognized escape
1875*89a07cf8Schristos     sequence `\X' is encountered, the escape character is ignored, and
1876*89a07cf8Schristos     X is printed.
1877*89a07cf8Schristos
1878*89a07cf8Schristos`space'
1879*89a07cf8Schristos`65536'
1880*89a07cf8Schristos     Missing space between a request or macro and its argument.  This
1881*89a07cf8Schristos     warning is given when an undefined name longer than two characters
1882*89a07cf8Schristos     is encountered, and the first two characters of the name make a
1883*89a07cf8Schristos     defined name.  The request or macro is not invoked.  When this
1884*89a07cf8Schristos     warning is given, no macro is automatically defined.  This is
1885*89a07cf8Schristos     enabled by default.  This warning never occurs in compatibility
1886*89a07cf8Schristos     mode.
1887*89a07cf8Schristos
1888*89a07cf8Schristos`font'
1889*89a07cf8Schristos`131072'
1890*89a07cf8Schristos     Non-existent fonts.  This is enabled by default.
1891*89a07cf8Schristos
1892*89a07cf8Schristos`ig'
1893*89a07cf8Schristos`262144'
1894*89a07cf8Schristos     Invalid escapes in text ignored with the `ig' request.  These are
1895*89a07cf8Schristos     conditions that are errors when they do not occur in ignored text.
1896*89a07cf8Schristos
1897*89a07cf8Schristos`color'
1898*89a07cf8Schristos`524288'
1899*89a07cf8Schristos     Color related warnings.
1900*89a07cf8Schristos
1901*89a07cf8Schristos`all'
1902*89a07cf8Schristos     All warnings except `di', `mac' and `reg'.  It is intended that
1903*89a07cf8Schristos     this covers all warnings that are useful with traditional macro
1904*89a07cf8Schristos     packages.
1905*89a07cf8Schristos
1906*89a07cf8Schristos`w'
1907*89a07cf8Schristos     All warnings.
1908*89a07cf8Schristos
1909*89a07cf8Schristos
1910*89a07cf8SchristosFile: groff,  Node: Warnings-Footnotes,  Up: Warnings
1911*89a07cf8Schristos
1912*89a07cf8Schristos   (1) `char' is a misnomer since it reports missing glyphs - there
1913*89a07cf8Schristosaren't missing input characters, only invalid ones.
1914*89a07cf8Schristos
1915*89a07cf8Schristos
1916*89a07cf8SchristosFile: groff,  Node: Implementation Differences,  Prev: Debugging,  Up: gtroff Reference
1917*89a07cf8Schristos
1918*89a07cf8Schristos5.34 Implementation Differences
1919*89a07cf8Schristos===============================
1920*89a07cf8Schristos
1921*89a07cf8SchristosGNU `troff' has a number of features which cause incompatibilities with
1922*89a07cf8Schristosdocuments written with old versions of `troff'.
1923*89a07cf8Schristos
1924*89a07cf8Schristos   Long names cause some incompatibilities.  UNIX `troff' interprets
1925*89a07cf8Schristos
1926*89a07cf8Schristos
1927*89a07cf8Schristos     .dsabcd
1928*89a07cf8Schristos
1929*89a07cf8Schristosas defining a string `ab' with contents `cd'.  Normally, GNU `troff'
1930*89a07cf8Schristosinterprets this as a call of a macro named `dsabcd'.  Also UNIX `troff'
1931*89a07cf8Schristosinterprets `\*[' or `\n[' as references to a string or number register
1932*89a07cf8Schristoscalled `['.  In GNU `troff', however, this is normally interpreted as
1933*89a07cf8Schristosthe start of a long name.  In compatibility mode GNU `troff' interprets
1934*89a07cf8Schristoslong names in the traditional way (which means that they are not
1935*89a07cf8Schristosrecognized as names).
1936*89a07cf8Schristos
1937*89a07cf8Schristos -- Request: .cp [n]
1938*89a07cf8Schristos -- Request: .do cmd
1939*89a07cf8Schristos -- Register: \n[.C]
1940*89a07cf8Schristos     If N is missing or non-zero, turn on compatibility mode;
1941*89a07cf8Schristos     otherwise, turn it off.
1942*89a07cf8Schristos
1943*89a07cf8Schristos     The read-only number register `.C' is 1 if compatibility mode is
1944*89a07cf8Schristos     on, 0 otherwise.
1945*89a07cf8Schristos
1946*89a07cf8Schristos     Compatibility mode can be also turned on with the `-C' command line
1947*89a07cf8Schristos     option.
1948*89a07cf8Schristos
1949*89a07cf8Schristos     The `do' request turns off compatibility mode while executing its
1950*89a07cf8Schristos     arguments as a `gtroff' command.
1951*89a07cf8Schristos
1952*89a07cf8Schristos
1953*89a07cf8Schristos          .do fam T
1954*89a07cf8Schristos
1955*89a07cf8Schristos     executes the `fam' request when compatibility mode is enabled.
1956*89a07cf8Schristos
1957*89a07cf8Schristos     `gtroff' restores the previous compatibility setting before
1958*89a07cf8Schristos     interpreting any files sourced by the CMD.
1959*89a07cf8Schristos
1960*89a07cf8Schristos   Two other features are controlled by `-C'.  If not in compatibility
1961*89a07cf8Schristosmode, GNU `troff' preserves the input level in delimited arguments:
1962*89a07cf8Schristos
1963*89a07cf8Schristos
1964*89a07cf8Schristos     .ds xx '
1965*89a07cf8Schristos     \w'abc\*(xxdef'
1966*89a07cf8Schristos
1967*89a07cf8SchristosIn compatibility mode, the string `72def'' is returned; without `-C'
1968*89a07cf8Schristosthe resulting string is `168' (assuming a TTY output device).
1969*89a07cf8Schristos
1970*89a07cf8Schristos   Finally, the escapes `\f', `\H', `\m', `\M', `\R', `\s', and `\S'
1971*89a07cf8Schristosare transparent for recognizing the beginning of a line only in
1972*89a07cf8Schristoscompatibility mode (this is a rather obscure feature).  For example,
1973*89a07cf8Schristosthe code
1974*89a07cf8Schristos
1975*89a07cf8Schristos
1976*89a07cf8Schristos     .de xx
1977*89a07cf8Schristos     Hallo!
1978*89a07cf8Schristos     ..
1979*89a07cf8Schristos     \fB.xx\fP
1980*89a07cf8Schristos
1981*89a07cf8Schristosprints `Hallo!' in bold face if in compatibility mode, and `.xx' in
1982*89a07cf8Schristosbold face otherwise.
1983*89a07cf8Schristos
1984*89a07cf8Schristos   GNU `troff' does not allow the use of the escape sequences `\|',
1985*89a07cf8Schristos`\^', `\&', `\{', `\}', `\<SP>', `\'', `\`', `\-', `\_', `\!', `\%',
1986*89a07cf8Schristosand `\c' in names of strings, macros, diversions, number registers,
1987*89a07cf8Schristosfonts or environments; UNIX `troff' does.  The `\A' escape sequence
1988*89a07cf8Schristos(*note Identifiers::) may be helpful in avoiding use of these escape
1989*89a07cf8Schristossequences in names.
1990*89a07cf8Schristos
1991*89a07cf8Schristos   Fractional point sizes cause one noteworthy incompatibility.  In
1992*89a07cf8SchristosUNIX `troff' the `ps' request ignores scale indicators and thus
1993*89a07cf8Schristos
1994*89a07cf8Schristos
1995*89a07cf8Schristos     .ps 10u
1996*89a07cf8Schristos
1997*89a07cf8Schristossets the point size to 10 points, whereas in GNU `troff' it sets the
1998*89a07cf8Schristospoint size to 10 scaled points.  *Note Fractional Type Sizes::, for
1999*89a07cf8Schristosmore information.
2000*89a07cf8Schristos
2001*89a07cf8Schristos   In GNU `troff' there is a fundamental difference between
2002*89a07cf8Schristos(unformatted) input characters and (formatted) output glyphs.
2003*89a07cf8SchristosEverything that affects how a glyph is output is stored with the glyph
2004*89a07cf8Schristosnode; once a glyph node has been constructed it is unaffected by any
2005*89a07cf8Schristossubsequent requests that are executed, including `bd', `cs', `tkf',
2006*89a07cf8Schristos`tr', or `fp' requests.  Normally glyphs are constructed from input
2007*89a07cf8Schristoscharacters at the moment immediately before the glyph is added to the
2008*89a07cf8Schristoscurrent output line.  Macros, diversions and strings are all, in fact,
2009*89a07cf8Schristosthe same type of object; they contain lists of input characters and
2010*89a07cf8Schristosglyph nodes in any combination.  A glyph node does not behave like an
2011*89a07cf8Schristosinput character for the purposes of macro processing; it does not
2012*89a07cf8Schristosinherit any of the special properties that the input character from
2013*89a07cf8Schristoswhich it was constructed might have had.  For example,
2014*89a07cf8Schristos
2015*89a07cf8Schristos
2016*89a07cf8Schristos     .di x
2017*89a07cf8Schristos     \\\\
2018*89a07cf8Schristos     .br
2019*89a07cf8Schristos     .di
2020*89a07cf8Schristos     .x
2021*89a07cf8Schristos
2022*89a07cf8Schristosprints `\\' in GNU `troff'; each pair of input backslashes is turned
2023*89a07cf8Schristosinto one output backslash and the resulting output backslashes are not
2024*89a07cf8Schristosinterpreted as escape characters when they are reread.  UNIX `troff'
2025*89a07cf8Schristoswould interpret them as escape characters when they were reread and
2026*89a07cf8Schristoswould end up printing one `\'.  The correct way to obtain a printable
2027*89a07cf8Schristosbackslash is to use the `\e' escape sequence: This always prints a
2028*89a07cf8Schristossingle instance of the current escape character, regardless of whether
2029*89a07cf8Schristosor not it is used in a diversion; it also works in both GNU `troff' and
2030*89a07cf8SchristosUNIX `troff'.(1) (*note Implementation Differences-Footnote-1::)  To
2031*89a07cf8Schristosstore, for some reason, an escape sequence in a diversion that will be
2032*89a07cf8Schristosinterpreted when the diversion is reread, either use the traditional
2033*89a07cf8Schristos`\!' transparent output facility, or, if this is unsuitable, the new
2034*89a07cf8Schristos`\?' escape sequence.
2035*89a07cf8Schristos
2036*89a07cf8Schristos   *Note Diversions::, and *Note Gtroff Internals::, for more
2037*89a07cf8Schristosinformation.
2038*89a07cf8Schristos
2039*89a07cf8Schristos
2040*89a07cf8SchristosFile: groff,  Node: Implementation Differences-Footnotes,  Up: Implementation Differences
2041*89a07cf8Schristos
2042*89a07cf8Schristos   (1) To be completely independent of the current escape character,
2043*89a07cf8Schristosuse `\(rs' which represents a reverse solidus (backslash) glyph.
2044*89a07cf8Schristos
2045*89a07cf8Schristos
2046*89a07cf8SchristosFile: groff,  Node: Preprocessors,  Next: Output Devices,  Prev: gtroff Reference,  Up: Top
2047*89a07cf8Schristos
2048*89a07cf8Schristos6 Preprocessors
2049*89a07cf8Schristos***************
2050*89a07cf8Schristos
2051*89a07cf8SchristosThis chapter describes all preprocessors that come with `groff' or
2052*89a07cf8Schristoswhich are freely available.
2053*89a07cf8Schristos
2054*89a07cf8Schristos* Menu:
2055*89a07cf8Schristos
2056*89a07cf8Schristos* geqn::
2057*89a07cf8Schristos* gtbl::
2058*89a07cf8Schristos* gpic::
2059*89a07cf8Schristos* ggrn::
2060*89a07cf8Schristos* grap::
2061*89a07cf8Schristos* grefer::
2062*89a07cf8Schristos* gsoelim::
2063*89a07cf8Schristos
2064*89a07cf8Schristos
2065*89a07cf8SchristosFile: groff,  Node: geqn,  Next: gtbl,  Prev: Preprocessors,  Up: Preprocessors
2066*89a07cf8Schristos
2067*89a07cf8Schristos6.1 `geqn'
2068*89a07cf8Schristos==========
2069*89a07cf8Schristos
2070*89a07cf8Schristos* Menu:
2071*89a07cf8Schristos
2072*89a07cf8Schristos* Invoking geqn::
2073*89a07cf8Schristos
2074*89a07cf8Schristos
2075*89a07cf8SchristosFile: groff,  Node: Invoking geqn,  Prev: geqn,  Up: geqn
2076*89a07cf8Schristos
2077*89a07cf8Schristos6.1.1 Invoking `geqn'
2078*89a07cf8Schristos---------------------
2079*89a07cf8Schristos
2080*89a07cf8Schristos
2081*89a07cf8SchristosFile: groff,  Node: gtbl,  Next: gpic,  Prev: geqn,  Up: Preprocessors
2082*89a07cf8Schristos
2083*89a07cf8Schristos6.2 `gtbl'
2084*89a07cf8Schristos==========
2085*89a07cf8Schristos
2086*89a07cf8Schristos* Menu:
2087*89a07cf8Schristos
2088*89a07cf8Schristos* Invoking gtbl::
2089*89a07cf8Schristos
2090*89a07cf8Schristos
2091*89a07cf8SchristosFile: groff,  Node: Invoking gtbl,  Prev: gtbl,  Up: gtbl
2092*89a07cf8Schristos
2093*89a07cf8Schristos6.2.1 Invoking `gtbl'
2094*89a07cf8Schristos---------------------
2095*89a07cf8Schristos
2096*89a07cf8Schristos
2097*89a07cf8SchristosFile: groff,  Node: gpic,  Next: ggrn,  Prev: gtbl,  Up: Preprocessors
2098*89a07cf8Schristos
2099*89a07cf8Schristos6.3 `gpic'
2100*89a07cf8Schristos==========
2101*89a07cf8Schristos
2102*89a07cf8Schristos* Menu:
2103*89a07cf8Schristos
2104*89a07cf8Schristos* Invoking gpic::
2105*89a07cf8Schristos
2106*89a07cf8Schristos
2107*89a07cf8SchristosFile: groff,  Node: Invoking gpic,  Prev: gpic,  Up: gpic
2108*89a07cf8Schristos
2109*89a07cf8Schristos6.3.1 Invoking `gpic'
2110*89a07cf8Schristos---------------------
2111*89a07cf8Schristos
2112*89a07cf8Schristos
2113*89a07cf8SchristosFile: groff,  Node: ggrn,  Next: grap,  Prev: gpic,  Up: Preprocessors
2114*89a07cf8Schristos
2115*89a07cf8Schristos6.4 `ggrn'
2116*89a07cf8Schristos==========
2117*89a07cf8Schristos
2118*89a07cf8Schristos* Menu:
2119*89a07cf8Schristos
2120*89a07cf8Schristos* Invoking ggrn::
2121*89a07cf8Schristos
2122*89a07cf8Schristos
2123*89a07cf8SchristosFile: groff,  Node: Invoking ggrn,  Prev: ggrn,  Up: ggrn
2124*89a07cf8Schristos
2125*89a07cf8Schristos6.4.1 Invoking `ggrn'
2126*89a07cf8Schristos---------------------
2127*89a07cf8Schristos
2128*89a07cf8Schristos
2129*89a07cf8SchristosFile: groff,  Node: grap,  Next: grefer,  Prev: ggrn,  Up: Preprocessors
2130*89a07cf8Schristos
2131*89a07cf8Schristos6.5 `grap'
2132*89a07cf8Schristos==========
2133*89a07cf8Schristos
2134*89a07cf8SchristosA free implementation of `grap', written by Ted Faber, is available as
2135*89a07cf8Schristosan extra package from the following address:
2136*89a07cf8Schristos
2137*89a07cf8Schristos     `http://www.lunabase.org/~faber/Vault/software/grap/'
2138*89a07cf8Schristos
2139*89a07cf8Schristos
2140*89a07cf8SchristosFile: groff,  Node: grefer,  Next: gsoelim,  Prev: grap,  Up: Preprocessors
2141*89a07cf8Schristos
2142*89a07cf8Schristos6.6 `grefer'
2143*89a07cf8Schristos============
2144*89a07cf8Schristos
2145*89a07cf8Schristos* Menu:
2146*89a07cf8Schristos
2147*89a07cf8Schristos* Invoking grefer::
2148*89a07cf8Schristos
2149*89a07cf8Schristos
2150*89a07cf8SchristosFile: groff,  Node: Invoking grefer,  Prev: grefer,  Up: grefer
2151*89a07cf8Schristos
2152*89a07cf8Schristos6.6.1 Invoking `grefer'
2153*89a07cf8Schristos-----------------------
2154*89a07cf8Schristos
2155*89a07cf8Schristos
2156*89a07cf8SchristosFile: groff,  Node: gsoelim,  Prev: grefer,  Up: Preprocessors
2157*89a07cf8Schristos
2158*89a07cf8Schristos6.7 `gsoelim'
2159*89a07cf8Schristos=============
2160*89a07cf8Schristos
2161*89a07cf8Schristos* Menu:
2162*89a07cf8Schristos
2163*89a07cf8Schristos* Invoking gsoelim::
2164*89a07cf8Schristos
2165*89a07cf8Schristos
2166*89a07cf8SchristosFile: groff,  Node: Invoking gsoelim,  Prev: gsoelim,  Up: gsoelim
2167*89a07cf8Schristos
2168*89a07cf8Schristos6.7.1 Invoking `gsoelim'
2169*89a07cf8Schristos------------------------
2170*89a07cf8Schristos
2171*89a07cf8Schristos
2172*89a07cf8SchristosFile: groff,  Node: Output Devices,  Next: File formats,  Prev: Preprocessors,  Up: Top
2173*89a07cf8Schristos
2174*89a07cf8Schristos7 Output Devices
2175*89a07cf8Schristos****************
2176*89a07cf8Schristos
2177*89a07cf8Schristos* Menu:
2178*89a07cf8Schristos
2179*89a07cf8Schristos* Special Characters::
2180*89a07cf8Schristos* grotty::
2181*89a07cf8Schristos* grops::
2182*89a07cf8Schristos* grodvi::
2183*89a07cf8Schristos* grolj4::
2184*89a07cf8Schristos* grolbp::
2185*89a07cf8Schristos* grohtml::
2186*89a07cf8Schristos* gxditview::
2187*89a07cf8Schristos
2188*89a07cf8Schristos
2189*89a07cf8SchristosFile: groff,  Node: Special Characters,  Next: grotty,  Prev: Output Devices,  Up: Output Devices
2190*89a07cf8Schristos
2191*89a07cf8Schristos7.1 Special Characters
2192*89a07cf8Schristos======================
2193*89a07cf8Schristos
2194*89a07cf8Schristos*Note Font Files::.
2195*89a07cf8Schristos
2196*89a07cf8Schristos
2197*89a07cf8SchristosFile: groff,  Node: grotty,  Next: grops,  Prev: Special Characters,  Up: Output Devices
2198*89a07cf8Schristos
2199*89a07cf8Schristos7.2 `grotty'
2200*89a07cf8Schristos============
2201*89a07cf8Schristos
2202*89a07cf8Schristos* Menu:
2203*89a07cf8Schristos
2204*89a07cf8Schristos* Invoking grotty::
2205*89a07cf8Schristos
2206*89a07cf8Schristos
2207*89a07cf8SchristosFile: groff,  Node: Invoking grotty,  Prev: grotty,  Up: grotty
2208*89a07cf8Schristos
2209*89a07cf8Schristos7.2.1 Invoking `grotty'
2210*89a07cf8Schristos-----------------------
2211*89a07cf8Schristos
2212*89a07cf8Schristos
2213*89a07cf8SchristosFile: groff,  Node: grops,  Next: grodvi,  Prev: grotty,  Up: Output Devices
2214*89a07cf8Schristos
2215*89a07cf8Schristos7.3 `grops'
2216*89a07cf8Schristos===========
2217*89a07cf8Schristos
2218*89a07cf8Schristos* Menu:
2219*89a07cf8Schristos
2220*89a07cf8Schristos* Invoking grops::
2221*89a07cf8Schristos* Embedding PostScript::
2222*89a07cf8Schristos
2223*89a07cf8Schristos
2224*89a07cf8SchristosFile: groff,  Node: Invoking grops,  Next: Embedding PostScript,  Prev: grops,  Up: grops
2225*89a07cf8Schristos
2226*89a07cf8Schristos7.3.1 Invoking `grops'
2227*89a07cf8Schristos----------------------
2228*89a07cf8Schristos
2229*89a07cf8Schristos
2230*89a07cf8SchristosFile: groff,  Node: Embedding PostScript,  Prev: Invoking grops,  Up: grops
2231*89a07cf8Schristos
2232*89a07cf8Schristos7.3.2 Embedding POSTSCRIPT
2233*89a07cf8Schristos--------------------------
2234*89a07cf8Schristos
2235*89a07cf8Schristos
2236*89a07cf8SchristosFile: groff,  Node: grodvi,  Next: grolj4,  Prev: grops,  Up: Output Devices
2237*89a07cf8Schristos
2238*89a07cf8Schristos7.4 `grodvi'
2239*89a07cf8Schristos============
2240*89a07cf8Schristos
2241*89a07cf8Schristos* Menu:
2242*89a07cf8Schristos
2243*89a07cf8Schristos* Invoking grodvi::
2244*89a07cf8Schristos
2245*89a07cf8Schristos
2246*89a07cf8SchristosFile: groff,  Node: Invoking grodvi,  Prev: grodvi,  Up: grodvi
2247*89a07cf8Schristos
2248*89a07cf8Schristos7.4.1 Invoking `grodvi'
2249*89a07cf8Schristos-----------------------
2250*89a07cf8Schristos
2251*89a07cf8Schristos
2252*89a07cf8SchristosFile: groff,  Node: grolj4,  Next: grolbp,  Prev: grodvi,  Up: Output Devices
2253*89a07cf8Schristos
2254*89a07cf8Schristos7.5 `grolj4'
2255*89a07cf8Schristos============
2256*89a07cf8Schristos
2257*89a07cf8Schristos* Menu:
2258*89a07cf8Schristos
2259*89a07cf8Schristos* Invoking grolj4::
2260*89a07cf8Schristos
2261*89a07cf8Schristos
2262*89a07cf8SchristosFile: groff,  Node: Invoking grolj4,  Prev: grolj4,  Up: grolj4
2263*89a07cf8Schristos
2264*89a07cf8Schristos7.5.1 Invoking `grolj4'
2265*89a07cf8Schristos-----------------------
2266*89a07cf8Schristos
2267*89a07cf8Schristos
2268*89a07cf8SchristosFile: groff,  Node: grolbp,  Next: grohtml,  Prev: grolj4,  Up: Output Devices
2269*89a07cf8Schristos
2270*89a07cf8Schristos7.6 `grolbp'
2271*89a07cf8Schristos============
2272*89a07cf8Schristos
2273*89a07cf8Schristos* Menu:
2274*89a07cf8Schristos
2275*89a07cf8Schristos* Invoking grolbp::
2276*89a07cf8Schristos
2277*89a07cf8Schristos
2278*89a07cf8SchristosFile: groff,  Node: Invoking grolbp,  Prev: grolbp,  Up: grolbp
2279*89a07cf8Schristos
2280*89a07cf8Schristos7.6.1 Invoking `grolbp'
2281*89a07cf8Schristos-----------------------
2282*89a07cf8Schristos
2283*89a07cf8Schristos
2284*89a07cf8SchristosFile: groff,  Node: grohtml,  Next: gxditview,  Prev: grolbp,  Up: Output Devices
2285*89a07cf8Schristos
2286*89a07cf8Schristos7.7 `grohtml'
2287*89a07cf8Schristos=============
2288*89a07cf8Schristos
2289*89a07cf8Schristos* Menu:
2290*89a07cf8Schristos
2291*89a07cf8Schristos* Invoking grohtml::
2292*89a07cf8Schristos* grohtml specific registers and strings::
2293*89a07cf8Schristos
2294*89a07cf8Schristos
2295*89a07cf8SchristosFile: groff,  Node: Invoking grohtml,  Next: grohtml specific registers and strings,  Prev: grohtml,  Up: grohtml
2296*89a07cf8Schristos
2297*89a07cf8Schristos7.7.1 Invoking `grohtml'
2298*89a07cf8Schristos------------------------
2299*89a07cf8Schristos
2300*89a07cf8Schristos
2301*89a07cf8SchristosFile: groff,  Node: grohtml specific registers and strings,  Prev: Invoking grohtml,  Up: grohtml
2302*89a07cf8Schristos
2303*89a07cf8Schristos7.7.2 `grohtml' specific registers and strings
2304*89a07cf8Schristos----------------------------------------------
2305*89a07cf8Schristos
2306*89a07cf8Schristos -- Register: \n[ps4html]
2307*89a07cf8Schristos -- String: \*[www-image-template]
2308*89a07cf8Schristos     The registers `ps4html' and `www-image-template' are defined by
2309*89a07cf8Schristos     the `pre-grohtml' preprocessor.  `pre-grohtml' reads in the
2310*89a07cf8Schristos     `troff' input, marks up the inline equations and passes the result
2311*89a07cf8Schristos     firstly to
2312*89a07cf8Schristos
2313*89a07cf8Schristos
2314*89a07cf8Schristos          troff -Tps -rps4html=1 -dwww-image-template=TEMPLATE
2315*89a07cf8Schristos
2316*89a07cf8Schristos     and secondly to
2317*89a07cf8Schristos
2318*89a07cf8Schristos
2319*89a07cf8Schristos          troff -Thtml
2320*89a07cf8Schristos
2321*89a07cf8Schristos     The PostScript device is used to create all the image files, and
2322*89a07cf8Schristos     the register `ps4html' enables the macro sets to ignore floating
2323*89a07cf8Schristos     keeps, footers, and headings.
2324*89a07cf8Schristos
2325*89a07cf8Schristos     The register `www-image-template' is set to the user specified
2326*89a07cf8Schristos     template name or the default name.
2327*89a07cf8Schristos
2328*89a07cf8Schristos
2329*89a07cf8SchristosFile: groff,  Node: gxditview,  Prev: grohtml,  Up: Output Devices
2330*89a07cf8Schristos
2331*89a07cf8Schristos7.8 `gxditview'
2332*89a07cf8Schristos===============
2333*89a07cf8Schristos
2334*89a07cf8Schristos* Menu:
2335*89a07cf8Schristos
2336*89a07cf8Schristos* Invoking gxditview::
2337*89a07cf8Schristos
2338*89a07cf8Schristos
2339*89a07cf8SchristosFile: groff,  Node: Invoking gxditview,  Prev: gxditview,  Up: gxditview
2340*89a07cf8Schristos
2341*89a07cf8Schristos7.8.1 Invoking `gxditview'
2342*89a07cf8Schristos--------------------------
2343*89a07cf8Schristos
2344*89a07cf8Schristos
2345*89a07cf8SchristosFile: groff,  Node: File formats,  Next: Installation,  Prev: Output Devices,  Up: Top
2346*89a07cf8Schristos
2347*89a07cf8Schristos8 File formats
2348*89a07cf8Schristos**************
2349*89a07cf8Schristos
2350*89a07cf8SchristosAll files read and written by `gtroff' are text files.  The following
2351*89a07cf8Schristostwo sections describe their format.
2352*89a07cf8Schristos
2353*89a07cf8Schristos* Menu:
2354*89a07cf8Schristos
2355*89a07cf8Schristos* gtroff Output::
2356*89a07cf8Schristos* Font Files::
2357*89a07cf8Schristos
2358*89a07cf8Schristos
2359*89a07cf8SchristosFile: groff,  Node: gtroff Output,  Next: Font Files,  Prev: File formats,  Up: File formats
2360*89a07cf8Schristos
2361*89a07cf8Schristos8.1 `gtroff' Output
2362*89a07cf8Schristos===================
2363*89a07cf8Schristos
2364*89a07cf8SchristosThis section describes the intermediate output format of GNU `troff'.
2365*89a07cf8SchristosThis output is produced by a run of `gtroff' before it is fed into a
2366*89a07cf8Schristosdevice postprocessor program.
2367*89a07cf8Schristos
2368*89a07cf8Schristos   As `groff' is a wrapper program around `gtroff' that automatically
2369*89a07cf8Schristoscalls a postprocessor, this output does not show up normally.  This is
2370*89a07cf8Schristoswhy it is called "intermediate".  `groff' provides the option `-Z' to
2371*89a07cf8Schristosinhibit postprocessing, such that the produced intermediate output is
2372*89a07cf8Schristossent to standard output just like calling `gtroff' manually.
2373*89a07cf8Schristos
2374*89a07cf8Schristos   Here, the term "troff output" describes what is output by `gtroff',
2375*89a07cf8Schristoswhile "intermediate output" refers to the language that is accepted by
2376*89a07cf8Schristosthe parser that prepares this output for the postprocessors.  This
2377*89a07cf8Schristosparser is smarter on whitespace and implements obsolete elements for
2378*89a07cf8Schristoscompatibility, otherwise both formats are the same.(1) (*note gtroff
2379*89a07cf8SchristosOutput-Footnote-1::)
2380*89a07cf8Schristos
2381*89a07cf8Schristos   The main purpose of the intermediate output concept is to facilitate
2382*89a07cf8Schristosthe development of postprocessors by providing a common programming
2383*89a07cf8Schristosinterface for all devices.  It has a language of its own that is
2384*89a07cf8Schristoscompletely different from the `gtroff' language.  While the `gtroff'
2385*89a07cf8Schristoslanguage is a high-level programming language for text processing, the
2386*89a07cf8Schristosintermediate output language is a kind of low-level assembler language
2387*89a07cf8Schristosby specifying all positions on the page for writing and drawing.
2388*89a07cf8Schristos
2389*89a07cf8Schristos   The intermediate output produced by `gtroff' is fairly readable,
2390*89a07cf8Schristoswhile output from AT&T `troff' is rather hard to understand because of
2391*89a07cf8Schristosstrange habits that are still supported, but not used any longer by
2392*89a07cf8Schristos`gtroff'.
2393*89a07cf8Schristos
2394*89a07cf8Schristos* Menu:
2395*89a07cf8Schristos
2396*89a07cf8Schristos* Language Concepts::
2397*89a07cf8Schristos* Command Reference::
2398*89a07cf8Schristos* Intermediate Output Examples::
2399*89a07cf8Schristos* Output Language Compatibility::
2400*89a07cf8Schristos
2401*89a07cf8Schristos
2402*89a07cf8SchristosFile: groff,  Node: gtroff Output-Footnotes,  Up: gtroff Output
2403*89a07cf8Schristos
2404*89a07cf8Schristos   (1) The parser and postprocessor for intermediate output can be
2405*89a07cf8Schristosfound in the file
2406*89a07cf8Schristos`GROFF-SOURCE-DIR/src/libs/libdriver/input.cpp'.
2407*89a07cf8Schristos
2408*89a07cf8Schristos
2409*89a07cf8SchristosFile: groff,  Node: Language Concepts,  Next: Command Reference,  Prev: gtroff Output,  Up: gtroff Output
2410*89a07cf8Schristos
2411*89a07cf8Schristos8.1.1 Language Concepts
2412*89a07cf8Schristos-----------------------
2413*89a07cf8Schristos
2414*89a07cf8SchristosDuring the run of `gtroff', the input data is cracked down to the
2415*89a07cf8Schristosinformation on what has to be printed at what position on the intended
2416*89a07cf8Schristosdevice.  So the language of the intermediate output format can be quite
2417*89a07cf8Schristossmall.  Its only elements are commands with and without arguments.  In
2418*89a07cf8Schristosthis section, the term "command" always refers to the intermediate
2419*89a07cf8Schristosoutput language, and never to the `gtroff' language used for document
2420*89a07cf8Schristosformatting.  There are commands for positioning and text writing, for
2421*89a07cf8Schristosdrawing, and for device controlling.
2422*89a07cf8Schristos
2423*89a07cf8Schristos* Menu:
2424*89a07cf8Schristos
2425*89a07cf8Schristos* Separation::
2426*89a07cf8Schristos* Argument Units::
2427*89a07cf8Schristos* Document Parts::
2428*89a07cf8Schristos
2429*89a07cf8Schristos
2430*89a07cf8SchristosFile: groff,  Node: Separation,  Next: Argument Units,  Prev: Language Concepts,  Up: Language Concepts
2431*89a07cf8Schristos
2432*89a07cf8Schristos8.1.1.1 Separation
2433*89a07cf8Schristos..................
2434*89a07cf8Schristos
2435*89a07cf8SchristosAT&T `troff' output has strange requirements on whitespace.  The
2436*89a07cf8Schristos`gtroff' output parser, however, is smart about whitespace by making it
2437*89a07cf8Schristosmaximally optional.  The whitespace characters, i.e., the tab, space,
2438*89a07cf8Schristosand newline characters, always have a syntactical meaning.  They are
2439*89a07cf8Schristosnever printable because spacing within the output is always done by
2440*89a07cf8Schristospositioning commands.
2441*89a07cf8Schristos
2442*89a07cf8Schristos   Any sequence of space or tab characters is treated as a single
2443*89a07cf8Schristos"syntactical space".  It separates commands and arguments, but is only
2444*89a07cf8Schristosrequired when there would occur a clashing between the command code and
2445*89a07cf8Schristosthe arguments without the space.  Most often, this happens when
2446*89a07cf8Schristosvariable-length command names, arguments, argument lists, or command
2447*89a07cf8Schristosclusters meet.  Commands and arguments with a known, fixed length need
2448*89a07cf8Schristosnot be separated by syntactical space.
2449*89a07cf8Schristos
2450*89a07cf8Schristos   A line break is a syntactical element, too.  Every command argument
2451*89a07cf8Schristoscan be followed by whitespace, a comment, or a newline character.  Thus
2452*89a07cf8Schristosa "syntactical line break" is defined to consist of optional
2453*89a07cf8Schristossyntactical space that is optionally followed by a comment, and a
2454*89a07cf8Schristosnewline character.
2455*89a07cf8Schristos
2456*89a07cf8Schristos   The normal commands, those for positioning and text, consist of a
2457*89a07cf8Schristossingle letter taking a fixed number of arguments.  For historical
2458*89a07cf8Schristosreasons, the parser allows to stack such commands on the same line, but
2459*89a07cf8Schristosfortunately, in `gtroff''s intermediate output, every command with at
2460*89a07cf8Schristosleast one argument is followed by a line break, thus providing
2461*89a07cf8Schristosexcellent readability.
2462*89a07cf8Schristos
2463*89a07cf8Schristos   The other commands - those for drawing and device controlling - have
2464*89a07cf8Schristosa more complicated structure; some recognize long command names, and
2465*89a07cf8Schristossome take a variable number of arguments.  So all `D' and `x' commands
2466*89a07cf8Schristoswere designed to request a syntactical line break after their last
2467*89a07cf8Schristosargument.  Only one command, `x X', has an argument that can stretch
2468*89a07cf8Schristosover several lines; all other commands must have all of their arguments
2469*89a07cf8Schristoson the same line as the command, i.e., the arguments may not be
2470*89a07cf8Schristossplitted by a line break.
2471*89a07cf8Schristos
2472*89a07cf8Schristos   Empty lines (these are lines containing only space and/or a
2473*89a07cf8Schristoscomment), can occur everywhere.  They are just ignored.
2474*89a07cf8Schristos
2475*89a07cf8Schristos
2476*89a07cf8SchristosFile: groff,  Node: Argument Units,  Next: Document Parts,  Prev: Separation,  Up: Language Concepts
2477*89a07cf8Schristos
2478*89a07cf8Schristos8.1.1.2 Argument Units
2479*89a07cf8Schristos......................
2480*89a07cf8Schristos
2481*89a07cf8SchristosSome commands take integer arguments that are assumed to represent
2482*89a07cf8Schristosvalues in a measurement unit, but the letter for the corresponding
2483*89a07cf8Schristosscale indicator is not written with the output command arguments.  Most
2484*89a07cf8Schristoscommands assume the scale indicator `u', the basic unit of the device,
2485*89a07cf8Schristossome use `z', the scaled point unit of the device, while others, such
2486*89a07cf8Schristosas the color commands, expect plain integers.
2487*89a07cf8Schristos
2488*89a07cf8Schristos   Note that single characters can have the eighth bit set, as can the
2489*89a07cf8Schristosnames of fonts and special characters.  The names of characters and
2490*89a07cf8Schristosfonts can be of arbitrary length.  A character that is to be printed
2491*89a07cf8Schristoswill always be in the current font.
2492*89a07cf8Schristos
2493*89a07cf8Schristos   A string argument is always terminated by the next whitespace
2494*89a07cf8Schristoscharacter (space, tab, or newline); an embedded `#' character is
2495*89a07cf8Schristosregarded as part of the argument, not as the beginning of a comment
2496*89a07cf8Schristoscommand.  An integer argument is already terminated by the next
2497*89a07cf8Schristosnon-digit character, which then is regarded as the first character of
2498*89a07cf8Schristosthe next argument or command.
2499*89a07cf8Schristos
2500*89a07cf8Schristos
2501*89a07cf8SchristosFile: groff,  Node: Document Parts,  Prev: Argument Units,  Up: Language Concepts
2502*89a07cf8Schristos
2503*89a07cf8Schristos8.1.1.3 Document Parts
2504*89a07cf8Schristos......................
2505*89a07cf8Schristos
2506*89a07cf8SchristosA correct intermediate output document consists of two parts, the
2507*89a07cf8Schristos"prologue" and the "body".
2508*89a07cf8Schristos
2509*89a07cf8Schristos   The task of the prologue is to set the general device parameters
2510*89a07cf8Schristosusing three exactly specified commands.  `gtroff''s prologue is
2511*89a07cf8Schristosguaranteed to consist of the following three lines (in that order):
2512*89a07cf8Schristos
2513*89a07cf8Schristos
2514*89a07cf8Schristos     x T DEVICE
2515*89a07cf8Schristos     x res N H V
2516*89a07cf8Schristos     x init
2517*89a07cf8Schristos
2518*89a07cf8Schristoswith the arguments set as outlined in *Note Device Control Commands::.
2519*89a07cf8SchristosNote that the parser for the intermediate output format is able to
2520*89a07cf8Schristosswallow additional whitespace and comments as well even in the prologue.
2521*89a07cf8Schristos
2522*89a07cf8Schristos   The body is the main section for processing the document data.
2523*89a07cf8SchristosSyntactically, it is a sequence of any commands different from the ones
2524*89a07cf8Schristosused in the prologue.  Processing is terminated as soon as the first
2525*89a07cf8Schristos`x stop' command is encountered; the last line of any `gtroff'
2526*89a07cf8Schristosintermediate output always contains such a command.
2527*89a07cf8Schristos
2528*89a07cf8Schristos   Semantically, the body is page oriented.  A new page is started by a
2529*89a07cf8Schristos`p' command.  Positioning, writing, and drawing commands are always
2530*89a07cf8Schristosdone within the current page, so they cannot occur before the first `p'
2531*89a07cf8Schristoscommand.  Absolute positioning (by the `H' and `V' commands) is done
2532*89a07cf8Schristosrelative to the current page; all other positioning is done relative to
2533*89a07cf8Schristosthe current location within this page.
2534*89a07cf8Schristos
2535*89a07cf8Schristos
2536*89a07cf8SchristosFile: groff,  Node: Command Reference,  Next: Intermediate Output Examples,  Prev: Language Concepts,  Up: gtroff Output
2537*89a07cf8Schristos
2538*89a07cf8Schristos8.1.2 Command Reference
2539*89a07cf8Schristos-----------------------
2540*89a07cf8Schristos
2541*89a07cf8SchristosThis section describes all intermediate output commands, both from AT&T
2542*89a07cf8Schristos`troff' as well as the `gtroff' extensions.
2543*89a07cf8Schristos
2544*89a07cf8Schristos* Menu:
2545*89a07cf8Schristos
2546*89a07cf8Schristos* Comment Command::
2547*89a07cf8Schristos* Simple Commands::
2548*89a07cf8Schristos* Graphics Commands::
2549*89a07cf8Schristos* Device Control Commands::
2550*89a07cf8Schristos* Obsolete Command::
2551*89a07cf8Schristos
2552*89a07cf8Schristos
2553*89a07cf8SchristosFile: groff,  Node: Comment Command,  Next: Simple Commands,  Prev: Command Reference,  Up: Command Reference
2554*89a07cf8Schristos
2555*89a07cf8Schristos8.1.2.1 Comment Command
2556*89a07cf8Schristos.......................
2557*89a07cf8Schristos
2558*89a07cf8Schristos`#ANYTHING<end of line>'
2559*89a07cf8Schristos     A comment.  Ignore any characters from the `#' character up to the
2560*89a07cf8Schristos     next newline character.
2561*89a07cf8Schristos
2562*89a07cf8Schristos     This command is the only possibility for commenting in the
2563*89a07cf8Schristos     intermediate output.  Each comment can be preceded by arbitrary
2564*89a07cf8Schristos     syntactical space; every command can be terminated by a comment.
2565*89a07cf8Schristos
2566*89a07cf8Schristos
2567*89a07cf8SchristosFile: groff,  Node: Simple Commands,  Next: Graphics Commands,  Prev: Comment Command,  Up: Command Reference
2568*89a07cf8Schristos
2569*89a07cf8Schristos8.1.2.2 Simple Commands
2570*89a07cf8Schristos.......................
2571*89a07cf8Schristos
2572*89a07cf8SchristosThe commands in this subsection have a command code consisting of a
2573*89a07cf8Schristossingle character, taking a fixed number of arguments.  Most of them are
2574*89a07cf8Schristoscommands for positioning and text writing.  These commands are smart
2575*89a07cf8Schristosabout whitespace.  Optionally, syntactical space can be inserted
2576*89a07cf8Schristosbefore, after, and between the command letter and its arguments.  All
2577*89a07cf8Schristosof these commands are stackable, i.e., they can be preceded by other
2578*89a07cf8Schristossimple commands or followed by arbitrary other commands on the same
2579*89a07cf8Schristosline.  A separating syntactical space is only necessary when two
2580*89a07cf8Schristosinteger arguments would clash or if the preceding argument ends with a
2581*89a07cf8Schristosstring argument.
2582*89a07cf8Schristos
2583*89a07cf8Schristos`C XXX<whitespace>'
2584*89a07cf8Schristos     Print a special character named XXX.  The trailing syntactical
2585*89a07cf8Schristos     space or line break is necessary to allow glyph names of arbitrary
2586*89a07cf8Schristos     length.  The glyph is printed at the current print position; the
2587*89a07cf8Schristos     glyph's size is read from the font file.  The print position is
2588*89a07cf8Schristos     not changed.
2589*89a07cf8Schristos
2590*89a07cf8Schristos`c G'
2591*89a07cf8Schristos     Print glyph G at the current print position;(1) (*note Simple
2592*89a07cf8Schristos     Commands-Footnote-1::) the glyph's size is read from the font
2593*89a07cf8Schristos     file.  The print position is not changed.
2594*89a07cf8Schristos
2595*89a07cf8Schristos`f N'
2596*89a07cf8Schristos     Set font to font number N (a non-negative integer).
2597*89a07cf8Schristos
2598*89a07cf8Schristos`H N'
2599*89a07cf8Schristos     Move right to the absolute vertical position N (a non-negative
2600*89a07cf8Schristos     integer in basic units `u' relative to left edge of current page.
2601*89a07cf8Schristos
2602*89a07cf8Schristos`h N'
2603*89a07cf8Schristos     Move N (a non-negative integer) basic units `u' horizontally to
2604*89a07cf8Schristos     the right.  The original UNIX troff manual allows negative values
2605*89a07cf8Schristos     for N also, but `gtroff' doesn't use this.
2606*89a07cf8Schristos
2607*89a07cf8Schristos`m COLOR-SCHEME [COMPONENT ...]'
2608*89a07cf8Schristos     Set the color for text (glyphs), line drawing, and the outline of
2609*89a07cf8Schristos     graphic objects using different color schemes; the analoguous
2610*89a07cf8Schristos     command for the filling color of graphic objects is `DF'.  The
2611*89a07cf8Schristos     color components are specified as integer arguments between 0 and
2612*89a07cf8Schristos     65536.  The number of color components and their meaning vary for
2613*89a07cf8Schristos     the different color schemes.  These commands are generated by
2614*89a07cf8Schristos     `gtroff''s escape sequence `\m'.  No position changing.  These
2615*89a07cf8Schristos     commands are a `gtroff' extension.
2616*89a07cf8Schristos
2617*89a07cf8Schristos    `mc CYAN MAGENTA YELLOW'
2618*89a07cf8Schristos          Set color using the CMY color scheme, having the 3 color
2619*89a07cf8Schristos          components CYAN, MAGENTA, and YELLOW.
2620*89a07cf8Schristos
2621*89a07cf8Schristos    `md'
2622*89a07cf8Schristos          Set color to the default color value (black in most cases).
2623*89a07cf8Schristos          No component arguments.
2624*89a07cf8Schristos
2625*89a07cf8Schristos    `mg GRAY'
2626*89a07cf8Schristos          Set color to the shade of gray given by the argument, an
2627*89a07cf8Schristos          integer between 0 (black) and 65536 (white).
2628*89a07cf8Schristos
2629*89a07cf8Schristos    `mk CYAN MAGENTA YELLOW BLACK'
2630*89a07cf8Schristos          Set color using the CMYK color scheme, having the 4 color
2631*89a07cf8Schristos          components CYAN, MAGENTA, YELLOW, and BLACK.
2632*89a07cf8Schristos
2633*89a07cf8Schristos    `mr RED GREEN BLUE'
2634*89a07cf8Schristos          Set color using the RGB color scheme, having the 3 color
2635*89a07cf8Schristos          components RED, GREEN, and BLUE.
2636*89a07cf8Schristos
2637*89a07cf8Schristos`N N'
2638*89a07cf8Schristos     Print glyph with index N (a non-negative integer) of the current
2639*89a07cf8Schristos     font.  This command is a `gtroff' extension.
2640*89a07cf8Schristos
2641*89a07cf8Schristos`n B A'
2642*89a07cf8Schristos     Inform the device about a line break, but no positioning is done by
2643*89a07cf8Schristos     this command.  In AT&T `troff', the integer arguments B and A
2644*89a07cf8Schristos     informed about the space before and after the current line to make
2645*89a07cf8Schristos     the intermediate output more human readable without performing any
2646*89a07cf8Schristos     action.  In `groff', they are just ignored, but they must be
2647*89a07cf8Schristos     provided for compatibility reasons.
2648*89a07cf8Schristos
2649*89a07cf8Schristos`p N'
2650*89a07cf8Schristos     Begin a new page in the outprint.  The page number is set to N.
2651*89a07cf8Schristos     This page is completely independent of pages formerly processed
2652*89a07cf8Schristos     even if those have the same page number.  The vertical position on
2653*89a07cf8Schristos     the outprint is automatically set to 0.  All positioning, writing,
2654*89a07cf8Schristos     and drawing is always done relative to a page, so a `p' command
2655*89a07cf8Schristos     must be issued before any of these commands.
2656*89a07cf8Schristos
2657*89a07cf8Schristos`s N'
2658*89a07cf8Schristos     Set point size to N scaled points (this is unit `z').  AT&T
2659*89a07cf8Schristos     `troff' used the unit points (`p') instead.  *Note Output Language
2660*89a07cf8Schristos     Compatibility::.
2661*89a07cf8Schristos
2662*89a07cf8Schristos`t XXX<whitespace>'
2663*89a07cf8Schristos`t XXX DUMMY-ARG<whitespace>'
2664*89a07cf8Schristos     Print a word, i.e., a sequence of characters XXX representing
2665*89a07cf8Schristos     output glyphs which names are single characters, terminated by a
2666*89a07cf8Schristos     space character or a line break; an optional second integer
2667*89a07cf8Schristos     argument is ignored (this allows the formatter to generate an even
2668*89a07cf8Schristos     number of arguments).  The first glyph should be printed at the
2669*89a07cf8Schristos     current position, the current horizontal position should then be
2670*89a07cf8Schristos     increased by the width of the first glyph, and so on for each
2671*89a07cf8Schristos     glyph.  The widths of the glyphs are read from the font file,
2672*89a07cf8Schristos     scaled for the current point size, and rounded to a multiple of
2673*89a07cf8Schristos     the horizontal resolution.  Special characters cannot be printed
2674*89a07cf8Schristos     using this command (use the `C' command for special characters).
2675*89a07cf8Schristos     This command is a `gtroff' extension; it is only used for devices
2676*89a07cf8Schristos     whose `DESC' file contains the `tcommand' keyword (*note DESC File
2677*89a07cf8Schristos     Format::).
2678*89a07cf8Schristos
2679*89a07cf8Schristos`u N XXX<whitespace>'
2680*89a07cf8Schristos     Print word with track kerning.  This is the same as the `t'
2681*89a07cf8Schristos     command except that after printing each glyph, the current
2682*89a07cf8Schristos     horizontal position is increased by the sum of the width of that
2683*89a07cf8Schristos     glyph and N (an integer in basic units `u').  This command is a
2684*89a07cf8Schristos     `gtroff' extension; it is only used for devices whose `DESC' file
2685*89a07cf8Schristos     contains the `tcommand' keyword (*note DESC File Format::).
2686*89a07cf8Schristos
2687*89a07cf8Schristos`V N'
2688*89a07cf8Schristos     Move down to the absolute vertical position N (a non-negative
2689*89a07cf8Schristos     integer in basic units `u') relative to upper edge of current page.
2690*89a07cf8Schristos
2691*89a07cf8Schristos`v N'
2692*89a07cf8Schristos     Move N basic units `u' down (N is a non-negative integer).  The
2693*89a07cf8Schristos     original UNIX troff manual allows negative values for N also, but
2694*89a07cf8Schristos     `gtroff' doesn't use this.
2695*89a07cf8Schristos
2696*89a07cf8Schristos`w'
2697*89a07cf8Schristos     Informs about a paddable white space to increase readability.  The
2698*89a07cf8Schristos     spacing itself must be performed explicitly by a move command.
2699*89a07cf8Schristos
2700*89a07cf8Schristos
2701*89a07cf8SchristosFile: groff,  Node: Simple Commands-Footnotes,  Up: Simple Commands
2702*89a07cf8Schristos
2703*89a07cf8Schristos   (1) `c' is actually a misnomer since it outputs a glyph.
2704*89a07cf8Schristos
2705*89a07cf8Schristos
2706*89a07cf8SchristosFile: groff,  Node: Graphics Commands,  Next: Device Control Commands,  Prev: Simple Commands,  Up: Command Reference
2707*89a07cf8Schristos
2708*89a07cf8Schristos8.1.2.3 Graphics Commands
2709*89a07cf8Schristos.........................
2710*89a07cf8Schristos
2711*89a07cf8SchristosEach graphics or drawing command in the intermediate output starts with
2712*89a07cf8Schristosthe letter `D', followed by one or two characters that specify a
2713*89a07cf8Schristossubcommand; this is followed by a fixed or variable number of integer
2714*89a07cf8Schristosarguments that are separated by a single space character.  A `D'
2715*89a07cf8Schristoscommand may not be followed by another command on the same line (apart
2716*89a07cf8Schristosfrom a comment), so each `D' command is terminated by a syntactical
2717*89a07cf8Schristosline break.
2718*89a07cf8Schristos
2719*89a07cf8Schristos   `gtroff' output follows the classical spacing rules (no space
2720*89a07cf8Schristosbetween command and subcommand, all arguments are preceded by a single
2721*89a07cf8Schristosspace character), but the parser allows optional space between the
2722*89a07cf8Schristoscommand letters and makes the space before the first argument optional.
2723*89a07cf8SchristosAs usual, each space can be any sequence of tab and space characters.
2724*89a07cf8Schristos
2725*89a07cf8Schristos   Some graphics commands can take a variable number of arguments.  In
2726*89a07cf8Schristosthis case, they are integers representing a size measured in basic
2727*89a07cf8Schristosunits `u'.  The arguments called H1, H2, ..., HN stand for horizontal
2728*89a07cf8Schristosdistances where positive means right, negative left.  The arguments
2729*89a07cf8Schristoscalled V1, V2, ..., VN stand for vertical distances where positive
2730*89a07cf8Schristosmeans down, negative up.  All these distances are offsets relative to
2731*89a07cf8Schristosthe current location.
2732*89a07cf8Schristos
2733*89a07cf8Schristos   Each graphics command directly corresponds to a similar `gtroff'
2734*89a07cf8Schristos`\D' escape sequence.  *Note Drawing Requests::.
2735*89a07cf8Schristos
2736*89a07cf8Schristos   Unknown `D' commands are assumed to be device-specific.  Its
2737*89a07cf8Schristosarguments are parsed as strings; the whole information is then sent to
2738*89a07cf8Schristosthe postprocessor.
2739*89a07cf8Schristos
2740*89a07cf8Schristos   In the following command reference, the syntax element <line
2741*89a07cf8Schristosbreak> means a syntactical line break as defined above.
2742*89a07cf8Schristos
2743*89a07cf8Schristos`D~ H1 V1 H2 V2 ... HN VN<line break>'
2744*89a07cf8Schristos     Draw B-spline from current position to offset (H1,V1), then to
2745*89a07cf8Schristos     offset (H2,V2), if given, etc. up to (HN,VN).  This command takes
2746*89a07cf8Schristos     a variable number of argument pairs; the current position is moved
2747*89a07cf8Schristos     to the terminal point of the drawn curve.
2748*89a07cf8Schristos
2749*89a07cf8Schristos`Da H1 V1 H2 V2<line break>'
2750*89a07cf8Schristos     Draw arc from current position to (H1,V1)+(H2,V2) with center at
2751*89a07cf8Schristos     (H1,V1); then move the current position to the final point of the
2752*89a07cf8Schristos     arc.
2753*89a07cf8Schristos
2754*89a07cf8Schristos`DC D<line break>'
2755*89a07cf8Schristos`DC D DUMMY-ARG<line break>'
2756*89a07cf8Schristos     Draw a solid circle using the current fill color with diameter D
2757*89a07cf8Schristos     (integer in basic units `u') with leftmost point at the current
2758*89a07cf8Schristos     position; then move the current position to the rightmost point of
2759*89a07cf8Schristos     the circle.  An optional second integer argument is ignored (this
2760*89a07cf8Schristos     allows the formatter to generate an even number of arguments).
2761*89a07cf8Schristos     This command is a `gtroff' extension.
2762*89a07cf8Schristos
2763*89a07cf8Schristos`Dc D<line break>'
2764*89a07cf8Schristos     Draw circle line with diameter D (integer in basic units `u') with
2765*89a07cf8Schristos     leftmost point at the current position; then move the current
2766*89a07cf8Schristos     position to the rightmost point of the circle.
2767*89a07cf8Schristos
2768*89a07cf8Schristos`DE H V<line break>'
2769*89a07cf8Schristos     Draw a solid ellipse in the current fill color with a horizontal
2770*89a07cf8Schristos     diameter of H and a vertical diameter of V (both integers in basic
2771*89a07cf8Schristos     units `u') with the leftmost point at the current position; then
2772*89a07cf8Schristos     move to the rightmost point of the ellipse.  This command is a
2773*89a07cf8Schristos     `gtroff' extension.
2774*89a07cf8Schristos
2775*89a07cf8Schristos`De H V<line break>'
2776*89a07cf8Schristos     Draw an outlined ellipse with a horizontal diameter of H and a
2777*89a07cf8Schristos     vertical diameter of V (both integers in basic units `u') with the
2778*89a07cf8Schristos     leftmost point at current position; then move to the rightmost
2779*89a07cf8Schristos     point of the ellipse.
2780*89a07cf8Schristos
2781*89a07cf8Schristos`DF COLOR-SCHEME [COMPONENT ...]<line break>'
2782*89a07cf8Schristos     Set fill color for solid drawing objects using different color
2783*89a07cf8Schristos     schemes; the analoguous command for setting the color of text, line
2784*89a07cf8Schristos     graphics, and the outline of graphic objects is `m'.  The color
2785*89a07cf8Schristos     components are specified as integer arguments between 0 and 65536.
2786*89a07cf8Schristos     The number of color components and their meaning vary for the
2787*89a07cf8Schristos     different color schemes.  These commands are generated by
2788*89a07cf8Schristos     `gtroff''s escape sequences `\D'F ...'' and `\M' (with no other
2789*89a07cf8Schristos     corresponding graphics commands).  No position changing.  This
2790*89a07cf8Schristos     command is a `gtroff' extension.
2791*89a07cf8Schristos
2792*89a07cf8Schristos    `DFc CYAN MAGENTA YELLOW<line break>'
2793*89a07cf8Schristos          Set fill color for solid drawing objects using the CMY color
2794*89a07cf8Schristos          scheme, having the 3 color components CYAN, MAGENTA, and
2795*89a07cf8Schristos          YELLOW.
2796*89a07cf8Schristos
2797*89a07cf8Schristos    `DFd<line break>'
2798*89a07cf8Schristos          Set fill color for solid drawing objects to the default fill
2799*89a07cf8Schristos          color value (black in most cases).  No component arguments.
2800*89a07cf8Schristos
2801*89a07cf8Schristos    `DFg GRAY<line break>'
2802*89a07cf8Schristos          Set fill color for solid drawing objects to the shade of gray
2803*89a07cf8Schristos          given by the argument, an integer between 0 (black) and 65536
2804*89a07cf8Schristos          (white).
2805*89a07cf8Schristos
2806*89a07cf8Schristos    `DFk CYAN MAGENTA YELLOW BLACK<line break>'
2807*89a07cf8Schristos          Set fill color for solid drawing objects using the CMYK color
2808*89a07cf8Schristos          scheme, having the 4 color components CYAN, MAGENTA, YELLOW,
2809*89a07cf8Schristos          and BLACK.
2810*89a07cf8Schristos
2811*89a07cf8Schristos    `DFr RED GREEN BLUE<line break>'
2812*89a07cf8Schristos          Set fill color for solid drawing objects using the RGB color
2813*89a07cf8Schristos          scheme, having the 3 color components RED, GREEN, and BLUE.
2814*89a07cf8Schristos
2815*89a07cf8Schristos`Df N<line break>'
2816*89a07cf8Schristos     The argument N must be an integer in the range -32767 to 32767.
2817*89a07cf8Schristos
2818*89a07cf8Schristos    0 <= N <= 1000
2819*89a07cf8Schristos          Set the color for filling solid drawing objects to a shade of
2820*89a07cf8Schristos          gray, where 0 corresponds to solid white, 1000 (the default)
2821*89a07cf8Schristos          to solid black, and values in between to intermediate shades
2822*89a07cf8Schristos          of gray; this is obsoleted by command `DFg'.
2823*89a07cf8Schristos
2824*89a07cf8Schristos    N < 0 or N > 1000
2825*89a07cf8Schristos          Set the filling color to the color that is currently being
2826*89a07cf8Schristos          used for the text and the outline, see command `m'.  For
2827*89a07cf8Schristos          example, the command sequence
2828*89a07cf8Schristos
2829*89a07cf8Schristos
2830*89a07cf8Schristos               mg 0 0 65536
2831*89a07cf8Schristos               Df -1
2832*89a07cf8Schristos
2833*89a07cf8Schristos          sets all colors to blue.
2834*89a07cf8Schristos
2835*89a07cf8Schristos     No position changing.  This command is a `gtroff' extension.
2836*89a07cf8Schristos
2837*89a07cf8Schristos`Dl H V<line break>'
2838*89a07cf8Schristos     Draw line from current position to offset (H,V) (integers in basic
2839*89a07cf8Schristos     units `u'); then set current position to the end of the drawn line.
2840*89a07cf8Schristos
2841*89a07cf8Schristos`Dp H1 V1 H2 V2 ... HN VN<line break>'
2842*89a07cf8Schristos     Draw a polygon line from current position to offset (H1,V1), from
2843*89a07cf8Schristos     there to offset (H2,V2), etc. up to offset (HN,VN), and from there
2844*89a07cf8Schristos     back to the starting position.  For historical reasons, the
2845*89a07cf8Schristos     position is changed by adding the sum of all arguments with odd
2846*89a07cf8Schristos     index to the actual horizontal position and the even ones to the
2847*89a07cf8Schristos     vertical position.  Although this doesn't make sense it is kept
2848*89a07cf8Schristos     for compatibility.  This command is a `gtroff' extension.
2849*89a07cf8Schristos
2850*89a07cf8Schristos`Dp H1 V1 H2 V2 ... HN VN<line break>'
2851*89a07cf8Schristos     Draw a solid polygon in the current fill color rather than an
2852*89a07cf8Schristos     outlined polygon, using the same arguments and positioning as the
2853*89a07cf8Schristos     corresponding `Dp' command.  This command is a `gtroff' extension.
2854*89a07cf8Schristos
2855*89a07cf8Schristos`Dt N<line break>'
2856*89a07cf8Schristos     Set the current line thickness to N (an integer in basic units
2857*89a07cf8Schristos     `u') if N>0; if N=0 select the smallest available line thickness;
2858*89a07cf8Schristos     if N<0 set the line thickness proportional to the point size (this
2859*89a07cf8Schristos     is the default before the first `Dt' command was specified).  For
2860*89a07cf8Schristos     historical reasons, the horizontal position is changed by adding
2861*89a07cf8Schristos     the argument to the actual horizontal position, while the vertical
2862*89a07cf8Schristos     position is not changed.  Although this doesn't make sense it is
2863*89a07cf8Schristos     kept for compatibility.  This command is a `gtroff' extension.
2864*89a07cf8Schristos
2865*89a07cf8Schristos
2866*89a07cf8SchristosFile: groff,  Node: Device Control Commands,  Next: Obsolete Command,  Prev: Graphics Commands,  Up: Command Reference
2867*89a07cf8Schristos
2868*89a07cf8Schristos8.1.2.4 Device Control Commands
2869*89a07cf8Schristos...............................
2870*89a07cf8Schristos
2871*89a07cf8SchristosEach device control command starts with the letter `x', followed by a
2872*89a07cf8Schristosspace character (optional or arbitrary space or tab in `gtroff') and a
2873*89a07cf8Schristossubcommand letter or word; each argument (if any) must be preceded by a
2874*89a07cf8Schristossyntactical space.  All `x' commands are terminated by a syntactical
2875*89a07cf8Schristosline break; no device control command can be followed by another
2876*89a07cf8Schristoscommand on the same line (except a comment).
2877*89a07cf8Schristos
2878*89a07cf8Schristos   The subcommand is basically a single letter, but to increase
2879*89a07cf8Schristosreadability, it can be written as a word, i.e., an arbitrary sequence
2880*89a07cf8Schristosof characters terminated by the next tab, space, or newline character.
2881*89a07cf8SchristosAll characters of the subcommand word but the first are simply ignored.
2882*89a07cf8SchristosFor example, `gtroff' outputs the initialization command `x i' as
2883*89a07cf8Schristos`x init' and the resolution command `x r' as `x res'.
2884*89a07cf8Schristos
2885*89a07cf8Schristos   In the following, the syntax element <line break> means a
2886*89a07cf8Schristossyntactical line break (*note Separation::).
2887*89a07cf8Schristos
2888*89a07cf8Schristos`xF NAME<line break>'
2889*89a07cf8Schristos     The `F' stands for FILENAME.
2890*89a07cf8Schristos
2891*89a07cf8Schristos     Use NAME as the intended name for the current file in error
2892*89a07cf8Schristos     reports.  This is useful for remembering the original file name
2893*89a07cf8Schristos     when `gtroff' uses an internal piping mechanism.  The input file is
2894*89a07cf8Schristos     not changed by this command.  This command is a `gtroff' extension.
2895*89a07cf8Schristos
2896*89a07cf8Schristos`xf N S<line break>'
2897*89a07cf8Schristos     The `f' stands for FONT.
2898*89a07cf8Schristos
2899*89a07cf8Schristos     Mount font position N (a non-negative integer) with font named S
2900*89a07cf8Schristos     (a text word).  *Note Font Positions::.
2901*89a07cf8Schristos
2902*89a07cf8Schristos`xH N<line break>'
2903*89a07cf8Schristos     The `H' stands for HEIGHT.
2904*89a07cf8Schristos
2905*89a07cf8Schristos     Set glyph height to N (a positive integer in scaled points `z').
2906*89a07cf8Schristos     AT&T `troff' uses the unit points (`p') instead.  *Note Output
2907*89a07cf8Schristos     Language Compatibility::.
2908*89a07cf8Schristos
2909*89a07cf8Schristos`xi<line break>'
2910*89a07cf8Schristos     The `i' stands for INIT.
2911*89a07cf8Schristos
2912*89a07cf8Schristos     Initialize device.  This is the third command of the prologue.
2913*89a07cf8Schristos
2914*89a07cf8Schristos`xp<line break>'
2915*89a07cf8Schristos     The `p' stands for PAUSE.
2916*89a07cf8Schristos
2917*89a07cf8Schristos     Parsed but ignored.  The original UNIX troff manual writes
2918*89a07cf8Schristos
2919*89a07cf8Schristos          pause device, can be restarted
2920*89a07cf8Schristos
2921*89a07cf8Schristos`xr N H V<line break>'
2922*89a07cf8Schristos     The `r' stands for RESOLUTION.
2923*89a07cf8Schristos
2924*89a07cf8Schristos     Resolution is N, while H is the minimal horizontal motion, and V
2925*89a07cf8Schristos     the minimal vertical motion possible with this device; all
2926*89a07cf8Schristos     arguments are positive integers in basic units `u' per inch.  This
2927*89a07cf8Schristos     is the second command of the prologue.
2928*89a07cf8Schristos
2929*89a07cf8Schristos`xS N<line break>'
2930*89a07cf8Schristos     The `S' stands for SLANT.
2931*89a07cf8Schristos
2932*89a07cf8Schristos     Set slant to N (an integer in basic units `u').
2933*89a07cf8Schristos
2934*89a07cf8Schristos`xs<line break>'
2935*89a07cf8Schristos     The `s' stands for STOP.
2936*89a07cf8Schristos
2937*89a07cf8Schristos     Terminates the processing of the current file; issued as the last
2938*89a07cf8Schristos     command of any intermediate troff output.
2939*89a07cf8Schristos
2940*89a07cf8Schristos`xt<line break>'
2941*89a07cf8Schristos     The `t' stands for TRAILER.
2942*89a07cf8Schristos
2943*89a07cf8Schristos     Generate trailer information, if any.  In GTROFF, this is actually
2944*89a07cf8Schristos     just ignored.
2945*89a07cf8Schristos
2946*89a07cf8Schristos`xT XXX<line break>'
2947*89a07cf8Schristos     The `T' stands for TYPESETTER.
2948*89a07cf8Schristos
2949*89a07cf8Schristos     Set name of device to word XXX, a sequence of characters ended by
2950*89a07cf8Schristos     the next white space character.  The possible device names coincide
2951*89a07cf8Schristos     with those from the `groff' `-T' option.  This is the first
2952*89a07cf8Schristos     command of the prologue.
2953*89a07cf8Schristos
2954*89a07cf8Schristos`xu N<line break>'
2955*89a07cf8Schristos     The `u' stands for UNDERLINE.
2956*89a07cf8Schristos
2957*89a07cf8Schristos     Configure underlining of spaces.  If N is 1, start underlining of
2958*89a07cf8Schristos     spaces; if N is 0, stop underlining of spaces.  This is needed for
2959*89a07cf8Schristos     the `cu' request in nroff mode and is ignored otherwise.  This
2960*89a07cf8Schristos     command is a `gtroff' extension.
2961*89a07cf8Schristos
2962*89a07cf8Schristos`xX ANYTHING<line break>'
2963*89a07cf8Schristos     The `x' stands for X-ESCAPE.
2964*89a07cf8Schristos
2965*89a07cf8Schristos     Send string ANYTHING uninterpreted to the device.  If the line
2966*89a07cf8Schristos     following this command starts with a `+' character this line is
2967*89a07cf8Schristos     interpreted as a continuation line in the following sense.  The
2968*89a07cf8Schristos     `+' is ignored, but a newline character is sent instead to the
2969*89a07cf8Schristos     device, the rest of the line is sent uninterpreted.  The same
2970*89a07cf8Schristos     applies to all following lines until the first character of a line
2971*89a07cf8Schristos     is not a `+' character.  This command is generated by the `gtroff'
2972*89a07cf8Schristos     escape sequence `\X'.  The line-continuing feature is a `gtroff'
2973*89a07cf8Schristos     extension.
2974*89a07cf8Schristos
2975*89a07cf8Schristos
2976*89a07cf8SchristosFile: groff,  Node: Obsolete Command,  Prev: Device Control Commands,  Up: Command Reference
2977*89a07cf8Schristos
2978*89a07cf8Schristos8.1.2.5 Obsolete Command
2979*89a07cf8Schristos........................
2980*89a07cf8Schristos
2981*89a07cf8SchristosIn AT&T `troff' output, the writing of a single glyph is mostly done by
2982*89a07cf8Schristosa very strange command that combines a horizontal move and a single
2983*89a07cf8Schristoscharacter giving the glyph name.  It doesn't have a command code, but
2984*89a07cf8Schristosis represented by a 3-character argument consisting of exactly 2 digits
2985*89a07cf8Schristosand a character.
2986*89a07cf8Schristos
2987*89a07cf8SchristosDDG
2988*89a07cf8Schristos     Move right DD (exactly two decimal digits) basic units `u', then
2989*89a07cf8Schristos     print glyph G (represented as a single character).
2990*89a07cf8Schristos
2991*89a07cf8Schristos     In `gtroff', arbitrary syntactical space around and within this
2992*89a07cf8Schristos     command is allowed to be added.  Only when a preceding command on
2993*89a07cf8Schristos     the same line ends with an argument of variable length a
2994*89a07cf8Schristos     separating space is obligatory.  In AT&T `troff', large clusters
2995*89a07cf8Schristos     of these and other commands are used, mostly without spaces; this
2996*89a07cf8Schristos     made such output almost unreadable.
2997*89a07cf8Schristos
2998*89a07cf8Schristos   For modern high-resolution devices, this command does not make sense
2999*89a07cf8Schristosbecause the width of the glyphs can become much larger than two decimal
3000*89a07cf8Schristosdigits.  In `gtroff', this is only used for the devices `X75',
3001*89a07cf8Schristos`X75-12', `X100', and `X100-12'.  For other devices, the commands `t'
3002*89a07cf8Schristosand `u' provide a better functionality.
3003*89a07cf8Schristos
3004*89a07cf8Schristos
3005*89a07cf8SchristosFile: groff,  Node: Intermediate Output Examples,  Next: Output Language Compatibility,  Prev: Command Reference,  Up: gtroff Output
3006*89a07cf8Schristos
3007*89a07cf8Schristos8.1.3 Intermediate Output Examples
3008*89a07cf8Schristos----------------------------------
3009*89a07cf8Schristos
3010*89a07cf8SchristosThis section presents the intermediate output generated from the same
3011*89a07cf8Schristosinput for three different devices.  The input is the sentence `hell
3012*89a07cf8Schristosworld' fed into `gtroff' on the command line.
3013*89a07cf8Schristos
3014*89a07cf8SchristosHigh-resolution device `ps'
3015*89a07cf8Schristos     This is the standard output of `gtroff' if no `-T' option is given.
3016*89a07cf8Schristos
3017*89a07cf8Schristos          shell> echo "hell world" | groff -Z -T ps
3018*89a07cf8Schristos
3019*89a07cf8Schristos          x T ps
3020*89a07cf8Schristos          x res 72000 1 1
3021*89a07cf8Schristos          x init
3022*89a07cf8Schristos          p1
3023*89a07cf8Schristos          x font 5 TR
3024*89a07cf8Schristos          f5
3025*89a07cf8Schristos          s10000
3026*89a07cf8Schristos          V12000
3027*89a07cf8Schristos          H72000
3028*89a07cf8Schristos          thell
3029*89a07cf8Schristos          wh2500
3030*89a07cf8Schristos          tw
3031*89a07cf8Schristos          H96620
3032*89a07cf8Schristos          torld
3033*89a07cf8Schristos          n12000 0
3034*89a07cf8Schristos          x trailer
3035*89a07cf8Schristos          V792000
3036*89a07cf8Schristos          x stop
3037*89a07cf8Schristos
3038*89a07cf8Schristos     This output can be fed into `grops' to get its representation as a
3039*89a07cf8Schristos     PostScript file.
3040*89a07cf8Schristos
3041*89a07cf8SchristosLow-resolution device `latin1'
3042*89a07cf8Schristos     This is similar to the high-resolution device except that the
3043*89a07cf8Schristos     positioning is done at a minor scale.  Some comments (lines
3044*89a07cf8Schristos     starting with `#') were added for clarification; they were not
3045*89a07cf8Schristos     generated by the formatter.
3046*89a07cf8Schristos
3047*89a07cf8Schristos          shell> echo "hell world" | groff -Z -T latin1
3048*89a07cf8Schristos
3049*89a07cf8Schristos          # prologue
3050*89a07cf8Schristos          x T latin1
3051*89a07cf8Schristos          x res 240 24 40
3052*89a07cf8Schristos          x init
3053*89a07cf8Schristos          # begin a new page
3054*89a07cf8Schristos          p1
3055*89a07cf8Schristos          # font setup
3056*89a07cf8Schristos          x font 1 R
3057*89a07cf8Schristos          f1
3058*89a07cf8Schristos          s10
3059*89a07cf8Schristos          # initial positioning on the page
3060*89a07cf8Schristos          V40
3061*89a07cf8Schristos          H0
3062*89a07cf8Schristos          # write text `hell'
3063*89a07cf8Schristos          thell
3064*89a07cf8Schristos          # inform about space, and issue a horizontal jump
3065*89a07cf8Schristos          wh24
3066*89a07cf8Schristos          # write text `world'
3067*89a07cf8Schristos          tworld
3068*89a07cf8Schristos          # announce line break, but do nothing because ...
3069*89a07cf8Schristos          n40 0
3070*89a07cf8Schristos          # ... the end of the document has been reached
3071*89a07cf8Schristos          x trailer
3072*89a07cf8Schristos          V2640
3073*89a07cf8Schristos          x stop
3074*89a07cf8Schristos
3075*89a07cf8Schristos     This output can be fed into `grotty' to get a formatted text
3076*89a07cf8Schristos     document.
3077*89a07cf8Schristos
3078*89a07cf8SchristosAT&T `troff' output
3079*89a07cf8Schristos     Since a computer monitor has a very low resolution compared to
3080*89a07cf8Schristos     modern printers the intermediate output for the X Window devices
3081*89a07cf8Schristos     can use the jump-and-write command with its 2-digit displacements.
3082*89a07cf8Schristos
3083*89a07cf8Schristos          shell> echo "hell world" | groff -Z -T X100
3084*89a07cf8Schristos
3085*89a07cf8Schristos          x T X100
3086*89a07cf8Schristos          x res 100 1 1
3087*89a07cf8Schristos          x init
3088*89a07cf8Schristos          p1
3089*89a07cf8Schristos          x font 5 TR
3090*89a07cf8Schristos          f5
3091*89a07cf8Schristos          s10
3092*89a07cf8Schristos          V16
3093*89a07cf8Schristos          H100
3094*89a07cf8Schristos          # write text with jump-and-write commands
3095*89a07cf8Schristos          ch07e07l03lw06w11o07r05l03dh7
3096*89a07cf8Schristos          n16 0
3097*89a07cf8Schristos          x trailer
3098*89a07cf8Schristos          V1100
3099*89a07cf8Schristos          x stop
3100*89a07cf8Schristos
3101*89a07cf8Schristos     This output can be fed into `xditview' or `gxditview' for
3102*89a07cf8Schristos     displaying in X.
3103*89a07cf8Schristos
3104*89a07cf8Schristos     Due to the obsolete jump-and-write command, the text clusters in
3105*89a07cf8Schristos     the AT&T `troff' output are almost unreadable.
3106*89a07cf8Schristos
3107*89a07cf8Schristos
3108*89a07cf8SchristosFile: groff,  Node: Output Language Compatibility,  Prev: Intermediate Output Examples,  Up: gtroff Output
3109*89a07cf8Schristos
3110*89a07cf8Schristos8.1.4 Output Language Compatibility
3111*89a07cf8Schristos-----------------------------------
3112*89a07cf8Schristos
3113*89a07cf8SchristosThe intermediate output language of AT&T `troff' was first documented
3114*89a07cf8Schristosin the UNIX troff manual, with later additions documented in `A
3115*89a07cf8SchristosTypesetter-indenpendent TROFF', written by Brian Kernighan.
3116*89a07cf8Schristos
3117*89a07cf8Schristos   The `gtroff' intermediate output format is compatible with this
3118*89a07cf8Schristosspecification except for the following features.
3119*89a07cf8Schristos
3120*89a07cf8Schristos   * The classical quasi device independence is not yet implemented.
3121*89a07cf8Schristos
3122*89a07cf8Schristos   * The old hardware was very different from what we use today.  So the
3123*89a07cf8Schristos     `groff' devices are also fundamentally different from the ones in
3124*89a07cf8Schristos     AT&T `troff'.  For example, the AT&T PostScript device is called
3125*89a07cf8Schristos     `post' and has a resolution of only 720 units per inch, suitable
3126*89a07cf8Schristos     for printers 20 years ago, while `groff''s `ps' device has a
3127*89a07cf8Schristos     resolution of 72000 units per inch.  Maybe, by implementing some
3128*89a07cf8Schristos     rescaling mechanism similar to the classical quasi device
3129*89a07cf8Schristos     independence, `groff' could emulate AT&T's `post' device.
3130*89a07cf8Schristos
3131*89a07cf8Schristos   * The B-spline command `D~' is correctly handled by the intermediate
3132*89a07cf8Schristos     output parser, but the drawing routines aren't implemented in some
3133*89a07cf8Schristos     of the postprocessor programs.
3134*89a07cf8Schristos
3135*89a07cf8Schristos   * The argument of the commands `s' and `x H' has the implicit unit
3136*89a07cf8Schristos     scaled point `z' in `gtroff', while AT&T `troff' has point (`p').
3137*89a07cf8Schristos     This isn't an incompatibility but a compatible extension, for both
3138*89a07cf8Schristos     units coincide for all devices without a `sizescale' parameter in
3139*89a07cf8Schristos     the `DESC' file, including all postprocessors from AT&T and
3140*89a07cf8Schristos     `groff''s text devices.  The few `groff' devices with a
3141*89a07cf8Schristos     `sizescale' parameter either do not exist for AT&T `troff', have a
3142*89a07cf8Schristos     different name, or seem to have a different resolution.  So
3143*89a07cf8Schristos     conflicts are very unlikely.
3144*89a07cf8Schristos
3145*89a07cf8Schristos   * The position changing after the commands `Dp', `DP', and `Dt' is
3146*89a07cf8Schristos     illogical, but as old versions of `gtroff' used this feature it is
3147*89a07cf8Schristos     kept for compatibility reasons.
3148*89a07cf8Schristos
3149*89a07cf8Schristos
3150*89a07cf8Schristos
3151*89a07cf8SchristosFile: groff,  Node: Font Files,  Prev: gtroff Output,  Up: File formats
3152*89a07cf8Schristos
3153*89a07cf8Schristos8.2 Font Files
3154*89a07cf8Schristos==============
3155*89a07cf8Schristos
3156*89a07cf8SchristosThe `gtroff' font format is roughly a superset of the `ditroff' font
3157*89a07cf8Schristosformat (as used in later versions of AT&T `troff' and its descendants).
3158*89a07cf8SchristosUnlike the `ditroff' font format, there is no associated binary
3159*89a07cf8Schristosformat; all files are text files.(1) (*note Font Files-Footnote-1::)
3160*89a07cf8SchristosThe font files for device NAME are stored in a directory `devNAME'.
3161*89a07cf8SchristosThere are two types of file: a device description file called `DESC'
3162*89a07cf8Schristosand for each font F a font file called `F'.
3163*89a07cf8Schristos
3164*89a07cf8Schristos* Menu:
3165*89a07cf8Schristos
3166*89a07cf8Schristos* DESC File Format::
3167*89a07cf8Schristos* Font File Format::
3168*89a07cf8Schristos
3169*89a07cf8Schristos
3170*89a07cf8SchristosFile: groff,  Node: Font Files-Footnotes,  Up: Font Files
3171*89a07cf8Schristos
3172*89a07cf8Schristos   (1) Plan 9 `troff' has also abandoned the binary format.
3173*89a07cf8Schristos
3174*89a07cf8Schristos
3175*89a07cf8SchristosFile: groff,  Node: DESC File Format,  Next: Font File Format,  Prev: Font Files,  Up: Font Files
3176*89a07cf8Schristos
3177*89a07cf8Schristos8.2.1 `DESC' File Format
3178*89a07cf8Schristos------------------------
3179*89a07cf8Schristos
3180*89a07cf8SchristosThe `DESC' file can contain the following types of line.  Except for
3181*89a07cf8Schristosthe `charset' keyword which must comes last (if at all), the order of
3182*89a07cf8Schristosthe lines is not important.
3183*89a07cf8Schristos
3184*89a07cf8Schristos`res N'
3185*89a07cf8Schristos     There are N machine units per inch.
3186*89a07cf8Schristos
3187*89a07cf8Schristos`hor N'
3188*89a07cf8Schristos     The horizontal resolution is N machine units.  All horizontal
3189*89a07cf8Schristos     quantities are rounded to be multiples of this value.
3190*89a07cf8Schristos
3191*89a07cf8Schristos`vert N'
3192*89a07cf8Schristos     The vertical resolution is N machine units.  All vertical
3193*89a07cf8Schristos     quantities are rounded to be multiples of this value.
3194*89a07cf8Schristos
3195*89a07cf8Schristos`sizescale N'
3196*89a07cf8Schristos     The scale factor for point sizes.  By default this has a value
3197*89a07cf8Schristos     of 1.  One scaled point is equal to one point/N.  The arguments to
3198*89a07cf8Schristos     the `unitwidth' and `sizes' commands are given in scaled points.
3199*89a07cf8Schristos     *Note Fractional Type Sizes::, for more information.
3200*89a07cf8Schristos
3201*89a07cf8Schristos`unitwidth N'
3202*89a07cf8Schristos     Quantities in the font files are given in machine units for fonts
3203*89a07cf8Schristos     whose point size is N scaled points.
3204*89a07cf8Schristos
3205*89a07cf8Schristos`prepro PROGRAM'
3206*89a07cf8Schristos     Call PROGRAM as a preprocessor.  Currently, this keyword is used
3207*89a07cf8Schristos     by `groff' with option `-Thtml' only.
3208*89a07cf8Schristos
3209*89a07cf8Schristos`postpro PROGRAM'
3210*89a07cf8Schristos     Call PROGRAM as a postprocessor.  For example, the line
3211*89a07cf8Schristos
3212*89a07cf8Schristos
3213*89a07cf8Schristos          postpro grodvi
3214*89a07cf8Schristos
3215*89a07cf8Schristos     in the file `devdvi/DESC' makes `groff' call `grodvi' if option
3216*89a07cf8Schristos     `-Tdvi' is given (and `-Z' isn't used).
3217*89a07cf8Schristos
3218*89a07cf8Schristos`tcommand'
3219*89a07cf8Schristos     This means that the postprocessor can handle the `t' and `u'
3220*89a07cf8Schristos     intermediate output commands.
3221*89a07cf8Schristos
3222*89a07cf8Schristos`sizes S1 S2 ... SN 0'
3223*89a07cf8Schristos     This means that the device has fonts at S1, S2, ...  SN scaled
3224*89a07cf8Schristos     points.  The list of sizes must be terminated by 0 (this is digit
3225*89a07cf8Schristos     zero).  Each SI can also be a range of sizes M-N.  The list can
3226*89a07cf8Schristos     extend over more than one line.
3227*89a07cf8Schristos
3228*89a07cf8Schristos`styles S1 S2 ... SM'
3229*89a07cf8Schristos     The first M font positions are associated with styles S1 ... SM.
3230*89a07cf8Schristos
3231*89a07cf8Schristos`fonts N F1 F2 F3 ... FN'
3232*89a07cf8Schristos     Fonts F1 ... FN are mounted in the font positions M+1, ..., M+N
3233*89a07cf8Schristos     where M is the number of styles.  This command may extend over
3234*89a07cf8Schristos     more than one line.  A font name of 0 means no font is mounted on
3235*89a07cf8Schristos     the corresponding font position.
3236*89a07cf8Schristos
3237*89a07cf8Schristos`family FAM'
3238*89a07cf8Schristos     The default font family is FAM.
3239*89a07cf8Schristos
3240*89a07cf8Schristos`use_charnames_in_special'
3241*89a07cf8Schristos     This command indicates that `gtroff' should encode special
3242*89a07cf8Schristos     characters inside special commands.  Currently, this is only used
3243*89a07cf8Schristos     by the HTML output device.  *Note Postprocessor Access::.
3244*89a07cf8Schristos
3245*89a07cf8Schristos`papersize STRING ...'
3246*89a07cf8Schristos     Select a paper size.  Valid values for STRING are the ISO paper
3247*89a07cf8Schristos     types `A0'-`A7', `B0'-`B7', `C0'-`C7', `D0'-`D7', `DL', and the US
3248*89a07cf8Schristos     paper types `letter', `legal', `tabloid', `ledger', `statement',
3249*89a07cf8Schristos     `executive', `com10', and `monarch'.  Case is not significant for
3250*89a07cf8Schristos     STRING if it holds predefined paper types.  Alternatively, STRING
3251*89a07cf8Schristos     can be a file name (e.g. `/etc/papersize'); if the file can be
3252*89a07cf8Schristos     opened, `groff' reads the first line and tests for the above paper
3253*89a07cf8Schristos     sizes.  Finally, STRING can be a custom paper size in the format
3254*89a07cf8Schristos     `LENGTH,WIDTH' (no spaces before and after the comma).  Both
3255*89a07cf8Schristos     LENGTH and WIDTH must have a unit appended; valid values are `i'
3256*89a07cf8Schristos     for inches, `C' for centimeters, `p' for points, and `P' for
3257*89a07cf8Schristos     picas.  Example: `12c,235p'.  An argument which starts with a
3258*89a07cf8Schristos     digit is always treated as a custom paper format.  `papersize'
3259*89a07cf8Schristos     sets both the vertical and horizontal dimension of the output
3260*89a07cf8Schristos     medium.
3261*89a07cf8Schristos
3262*89a07cf8Schristos     More than one argument can be specified; `groff' scans from left to
3263*89a07cf8Schristos     right and uses the first valid paper specification.
3264*89a07cf8Schristos
3265*89a07cf8Schristos`pass_filenames'
3266*89a07cf8Schristos     Tell `gtroff' to emit the name of the source file currently being
3267*89a07cf8Schristos     processed.  This is achieved by the intermediate output command
3268*89a07cf8Schristos     `F'.  Currently, this is only used by the HTML output device.
3269*89a07cf8Schristos
3270*89a07cf8Schristos`print PROGRAM'
3271*89a07cf8Schristos     Use PROGRAM as a spooler program for printing.  If omitted, the
3272*89a07cf8Schristos     `-l' and `-L' options of `groff' are ignored.
3273*89a07cf8Schristos
3274*89a07cf8Schristos`charset'
3275*89a07cf8Schristos     This line and everything following in the file are ignored.  It is
3276*89a07cf8Schristos     allowed for the sake of backwards compatibility.
3277*89a07cf8Schristos
3278*89a07cf8Schristos   The `res', `unitwidth', `fonts', and `sizes' lines are mandatory.
3279*89a07cf8SchristosOther commands are ignored by `gtroff' but may be used by
3280*89a07cf8Schristospostprocessors to store arbitrary information about the device in the
3281*89a07cf8Schristos`DESC' file.
3282*89a07cf8Schristos
3283*89a07cf8Schristos   Here a list of obsolete keywords which are recognized by `groff' but
3284*89a07cf8Schristoscompletely ignored: `spare1', `spare2', `biggestfont'.
3285*89a07cf8Schristos
3286*89a07cf8Schristos
3287*89a07cf8SchristosFile: groff,  Node: Font File Format,  Prev: DESC File Format,  Up: Font Files
3288*89a07cf8Schristos
3289*89a07cf8Schristos8.2.2 Font File Format
3290*89a07cf8Schristos----------------------
3291*89a07cf8Schristos
3292*89a07cf8SchristosA "font file", also (and probably better) called a "font description
3293*89a07cf8Schristosfile", has two sections.  The first section is a sequence of lines each
3294*89a07cf8Schristoscontaining a sequence of blank delimited words; the first word in the
3295*89a07cf8Schristosline is a key, and subsequent words give a value for that key.
3296*89a07cf8Schristos
3297*89a07cf8Schristos`name F'
3298*89a07cf8Schristos     The name of the font is F.
3299*89a07cf8Schristos
3300*89a07cf8Schristos`spacewidth N'
3301*89a07cf8Schristos     The normal width of a space is N.
3302*89a07cf8Schristos
3303*89a07cf8Schristos`slant N'
3304*89a07cf8Schristos     The glyphs of the font have a slant of N degrees.  (Positive means
3305*89a07cf8Schristos     forward.)
3306*89a07cf8Schristos
3307*89a07cf8Schristos`ligatures LIG1 LIG2 ... LIGN [0]'
3308*89a07cf8Schristos     Glyphs LIG1, LIG2, ..., LIGN are ligatures; possible ligatures are
3309*89a07cf8Schristos     `ff', `fi', `fl', `ffi' and `ffl'.  For backwards compatibility,
3310*89a07cf8Schristos     the list of ligatures may be terminated with a 0.  The list of
3311*89a07cf8Schristos     ligatures may not extend over more than one line.
3312*89a07cf8Schristos
3313*89a07cf8Schristos`special'
3314*89a07cf8Schristos     The font is "special"; this means that when a glyph is requested
3315*89a07cf8Schristos     that is not present in the current font, it is searched for in any
3316*89a07cf8Schristos     special fonts that are mounted.
3317*89a07cf8Schristos
3318*89a07cf8Schristos   Other commands are ignored by `gtroff' but may be used by
3319*89a07cf8Schristospostprocessors to store arbitrary information about the font in the font
3320*89a07cf8Schristosfile.
3321*89a07cf8Schristos
3322*89a07cf8Schristos   The first section can contain comments which start with the `#'
3323*89a07cf8Schristoscharacter and extend to the end of a line.
3324*89a07cf8Schristos
3325*89a07cf8Schristos   The second section contains one or two subsections.  It must contain
3326*89a07cf8Schristosa `charset' subsection and it may also contain a `kernpairs'
3327*89a07cf8Schristossubsection.  These subsections can appear in any order.  Each
3328*89a07cf8Schristossubsection starts with a word on a line by itself.
3329*89a07cf8Schristos
3330*89a07cf8Schristos   The word `charset' starts the character set subsection.(1) (*note
3331*89a07cf8SchristosFont File Format-Footnote-1::)  The `charset' line is followed by a
3332*89a07cf8Schristossequence of lines.  Each line gives information for one glyph.  A line
3333*89a07cf8Schristoscomprises a number of fields separated by blanks or tabs.  The format is
3334*89a07cf8Schristos
3335*89a07cf8Schristos     NAME METRICS TYPE CODE [ENTITY-NAME] [`--' COMMENT]
3336*89a07cf8Schristos
3337*89a07cf8SchristosNAME identifies the glyph name(2) (*note Font File Format-Footnote-2::):
3338*89a07cf8SchristosIf NAME is a single character C then it corresponds to the `gtroff'
3339*89a07cf8Schristosinput character C; if it is of the form `\C' where C is a single
3340*89a07cf8Schristoscharacter, then it corresponds to the special character `\[C]';
3341*89a07cf8Schristosotherwise it corresponds to the special character `\[NAME]'.  If it is
3342*89a07cf8Schristosexactly two characters XX it can be entered as `\(XX'.  Note that
3343*89a07cf8Schristossingle-letter special characters can't be accessed as `\C'; the only
3344*89a07cf8Schristosexception is `\-' which is identical to `\[-]'.
3345*89a07cf8Schristos
3346*89a07cf8Schristos   `gtroff' supports 8-bit input characters; however some utilities
3347*89a07cf8Schristoshave difficulties with eight-bit characters.  For this reason, there is
3348*89a07cf8Schristosa convention that the entity name `charN' is equivalent to the single
3349*89a07cf8Schristosinput character whose code is N.  For example, `char163' would be
3350*89a07cf8Schristosequivalent to the character with code 163 which is the pounds sterling
3351*89a07cf8Schristossign in the ISO Latin-1 character set.  You shouldn't use `charN'
3352*89a07cf8Schristosentities in font description files since they are related to input, not
3353*89a07cf8Schristosoutput.  Otherwise, you get hard-coded connections between input and
3354*89a07cf8Schristosoutput encoding which prevents use of different (input) character sets.
3355*89a07cf8Schristos
3356*89a07cf8Schristos   The name `---' is special and indicates that the glyph is unnamed;
3357*89a07cf8Schristossuch glyphs can only be used by means of the `\N' escape sequence in
3358*89a07cf8Schristos`gtroff'.
3359*89a07cf8Schristos
3360*89a07cf8Schristos   The TYPE field gives the glyph type:
3361*89a07cf8Schristos
3362*89a07cf8Schristos`1'
3363*89a07cf8Schristos     the glyph has a descender, for example, `p';
3364*89a07cf8Schristos
3365*89a07cf8Schristos`2'
3366*89a07cf8Schristos     the glyph has an ascender, for example, `b';
3367*89a07cf8Schristos
3368*89a07cf8Schristos`3'
3369*89a07cf8Schristos     the glyph has both an ascender and a descender, for example, `('.
3370*89a07cf8Schristos
3371*89a07cf8Schristos   The CODE field gives the code which the postprocessor uses to print
3372*89a07cf8Schristosthe glyph.  The glyph can also be input to `gtroff' using this code by
3373*89a07cf8Schristosmeans of the `\N' escape sequence.  CODE can be any integer.  If it
3374*89a07cf8Schristosstarts with `0' it is interpreted as octal; if it starts with `0x' or
3375*89a07cf8Schristos`0X' it is interpreted as hexadecimal.  Note, however, that the `\N'
3376*89a07cf8Schristosescape sequence only accepts a decimal integer.
3377*89a07cf8Schristos
3378*89a07cf8Schristos   The ENTITY-NAME field gives an ASCII string identifying the glyph
3379*89a07cf8Schristoswhich the postprocessor uses to print the `gtroff' glyph NAME.  This
3380*89a07cf8Schristosfield is optional and has been introduced so that the HTML device
3381*89a07cf8Schristosdriver can encode its character set.  For example, the glyph `\[Po]' is
3382*89a07cf8Schristosrepresented as `&pound;' in HTML 4.0.
3383*89a07cf8Schristos
3384*89a07cf8Schristos   Anything on the line after the ENTITY-NAME field resp. after `--'
3385*89a07cf8Schristoswill be ignored.
3386*89a07cf8Schristos
3387*89a07cf8Schristos   The METRICS field has the form:
3388*89a07cf8Schristos
3389*89a07cf8Schristos     WIDTH[`,'HEIGHT[`,'DEPTH[`,'ITALIC-CORRECTION
3390*89a07cf8Schristos       [`,'LEFT-ITALIC-CORRECTION[`,'SUBSCRIPT-CORRECTION]]]]]
3391*89a07cf8Schristos
3392*89a07cf8SchristosThere must not be any spaces between these subfields (it has been split
3393*89a07cf8Schristoshere into two lines for better legibility only).  Missing subfields are
3394*89a07cf8Schristosassumed to be 0.  The subfields are all decimal integers.  Since there
3395*89a07cf8Schristosis no associated binary format, these values are not required to fit
3396*89a07cf8Schristosinto a variable of type `char' as they are in `ditroff'.  The WIDTH
3397*89a07cf8Schristossubfield gives the width of the glyph.  The HEIGHT subfield gives the
3398*89a07cf8Schristosheight of the glyph (upwards is positive); if a glyph does not extend
3399*89a07cf8Schristosabove the baseline, it should be given a zero height, rather than a
3400*89a07cf8Schristosnegative height.  The DEPTH subfield gives the depth of the glyph, that
3401*89a07cf8Schristosis, the distance from the baseline to the lowest point below the
3402*89a07cf8Schristosbaseline to which the glyph extends (downwards is positive); if a glyph
3403*89a07cf8Schristosdoes not extend below the baseline, it should be given a zero depth,
3404*89a07cf8Schristosrather than a negative depth.  The ITALIC-CORRECTION subfield gives the
3405*89a07cf8Schristosamount of space that should be added after the glyph when it is
3406*89a07cf8Schristosimmediately to be followed by a glyph from a roman font.  The
3407*89a07cf8SchristosLEFT-ITALIC-CORRECTION subfield gives the amount of space that should
3408*89a07cf8Schristosbe added before the glyph when it is immediately to be preceded by a
3409*89a07cf8Schristosglyph from a roman font.  The SUBSCRIPT-CORRECTION gives the amount of
3410*89a07cf8Schristosspace that should be added after a glyph before adding a subscript.
3411*89a07cf8SchristosThis should be less than the italic correction.
3412*89a07cf8Schristos
3413*89a07cf8Schristos   A line in the `charset' section can also have the format
3414*89a07cf8Schristos
3415*89a07cf8Schristos
3416*89a07cf8Schristos     NAME "
3417*89a07cf8Schristos
3418*89a07cf8SchristosThis indicates that NAME is just another name for the glyph mentioned
3419*89a07cf8Schristosin the preceding line.
3420*89a07cf8Schristos
3421*89a07cf8Schristos   The word `kernpairs' starts the kernpairs section.  This contains a
3422*89a07cf8Schristossequence of lines of the form:
3423*89a07cf8Schristos
3424*89a07cf8Schristos
3425*89a07cf8Schristos     C1 C2 N
3426*89a07cf8Schristos
3427*89a07cf8SchristosThis means that when glyph C1 appears next to glyph C2 the space
3428*89a07cf8Schristosbetween them should be increased by N.  Most entries in the kernpairs
3429*89a07cf8Schristossection have a negative value for N.
3430*89a07cf8Schristos
3431*89a07cf8Schristos
3432*89a07cf8SchristosFile: groff,  Node: Font File Format-Footnotes,  Up: Font File Format
3433*89a07cf8Schristos
3434*89a07cf8Schristos   (1) This keyword is misnamed since it starts a list of ordered
3435*89a07cf8Schristosglyphs, not characters.
3436*89a07cf8Schristos
3437*89a07cf8Schristos   (2) The distinction between input, characters, and output, glyphs,
3438*89a07cf8Schristosis not clearly separated in the terminology of `groff'; for example,
3439*89a07cf8Schristosthe `char' request should be called `glyph' since it defines an output
3440*89a07cf8Schristosentity.
3441*89a07cf8Schristos
3442*89a07cf8Schristos
3443*89a07cf8SchristosFile: groff,  Node: Installation,  Next: Copying This Manual,  Prev: File formats,  Up: Top
3444*89a07cf8Schristos
3445*89a07cf8Schristos9 Installation
3446*89a07cf8Schristos**************
3447*89a07cf8Schristos
3448*89a07cf8Schristos
3449*89a07cf8SchristosFile: groff,  Node: Copying This Manual,  Next: Request Index,  Prev: Installation,  Up: Top
3450*89a07cf8Schristos
3451*89a07cf8SchristosAppendix A Copying This Manual
3452*89a07cf8Schristos******************************
3453*89a07cf8Schristos
3454*89a07cf8Schristos* Menu:
3455*89a07cf8Schristos
3456*89a07cf8Schristos* GNU Free Documentation License::  License for copying this manual.
3457*89a07cf8Schristos
3458*89a07cf8Schristos
3459*89a07cf8SchristosFile: groff,  Node: GNU Free Documentation License,  Up: Copying This Manual
3460*89a07cf8Schristos
3461*89a07cf8SchristosA.1 GNU Free Documentation License
3462*89a07cf8Schristos==================================
3463*89a07cf8Schristos
3464*89a07cf8Schristos                      Version 1.2, November 2002
3465*89a07cf8Schristos
3466*89a07cf8Schristos     Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
3467*89a07cf8Schristos     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
3468*89a07cf8Schristos
3469*89a07cf8Schristos     Everyone is permitted to copy and distribute verbatim copies
3470*89a07cf8Schristos     of this license document, but changing it is not allowed.
3471*89a07cf8Schristos
3472*89a07cf8Schristos  0. PREAMBLE
3473*89a07cf8Schristos
3474*89a07cf8Schristos     The purpose of this License is to make a manual, textbook, or other
3475*89a07cf8Schristos     functional and useful document "free" in the sense of freedom: to
3476*89a07cf8Schristos     assure everyone the effective freedom to copy and redistribute it,
3477*89a07cf8Schristos     with or without modifying it, either commercially or
3478*89a07cf8Schristos     noncommercially.  Secondarily, this License preserves for the
3479*89a07cf8Schristos     author and publisher a way to get credit for their work, while not
3480*89a07cf8Schristos     being considered responsible for modifications made by others.
3481*89a07cf8Schristos
3482*89a07cf8Schristos     This License is a kind of "copyleft", which means that derivative
3483*89a07cf8Schristos     works of the document must themselves be free in the same sense.
3484*89a07cf8Schristos     It complements the GNU General Public License, which is a copyleft
3485*89a07cf8Schristos     license designed for free software.
3486*89a07cf8Schristos
3487*89a07cf8Schristos     We have designed this License in order to use it for manuals for
3488*89a07cf8Schristos     free software, because free software needs free documentation: a
3489*89a07cf8Schristos     free program should come with manuals providing the same freedoms
3490*89a07cf8Schristos     that the software does.  But this License is not limited to
3491*89a07cf8Schristos     software manuals; it can be used for any textual work, regardless
3492*89a07cf8Schristos     of subject matter or whether it is published as a printed book.
3493*89a07cf8Schristos     We recommend this License principally for works whose purpose is
3494*89a07cf8Schristos     instruction or reference.
3495*89a07cf8Schristos
3496*89a07cf8Schristos  1. APPLICABILITY AND DEFINITIONS
3497*89a07cf8Schristos
3498*89a07cf8Schristos     This License applies to any manual or other work, in any medium,
3499*89a07cf8Schristos     that contains a notice placed by the copyright holder saying it
3500*89a07cf8Schristos     can be distributed under the terms of this License.  Such a notice
3501*89a07cf8Schristos     grants a world-wide, royalty-free license, unlimited in duration,
3502*89a07cf8Schristos     to use that work under the conditions stated herein.  The
3503*89a07cf8Schristos     "Document", below, refers to any such manual or work.  Any member
3504*89a07cf8Schristos     of the public is a licensee, and is addressed as "you".  You
3505*89a07cf8Schristos     accept the license if you copy, modify or distribute the work in a
3506*89a07cf8Schristos     way requiring permission under copyright law.
3507*89a07cf8Schristos
3508*89a07cf8Schristos     A "Modified Version" of the Document means any work containing the
3509*89a07cf8Schristos     Document or a portion of it, either copied verbatim, or with
3510*89a07cf8Schristos     modifications and/or translated into another language.
3511*89a07cf8Schristos
3512*89a07cf8Schristos     A "Secondary Section" is a named appendix or a front-matter section
3513*89a07cf8Schristos     of the Document that deals exclusively with the relationship of the
3514*89a07cf8Schristos     publishers or authors of the Document to the Document's overall
3515*89a07cf8Schristos     subject (or to related matters) and contains nothing that could
3516*89a07cf8Schristos     fall directly within that overall subject.  (Thus, if the Document
3517*89a07cf8Schristos     is in part a textbook of mathematics, a Secondary Section may not
3518*89a07cf8Schristos     explain any mathematics.)  The relationship could be a matter of
3519*89a07cf8Schristos     historical connection with the subject or with related matters, or
3520*89a07cf8Schristos     of legal, commercial, philosophical, ethical or political position
3521*89a07cf8Schristos     regarding them.
3522*89a07cf8Schristos
3523*89a07cf8Schristos     The "Invariant Sections" are certain Secondary Sections whose
3524*89a07cf8Schristos     titles are designated, as being those of Invariant Sections, in
3525*89a07cf8Schristos     the notice that says that the Document is released under this
3526*89a07cf8Schristos     License.  If a section does not fit the above definition of
3527*89a07cf8Schristos     Secondary then it is not allowed to be designated as Invariant.
3528*89a07cf8Schristos     The Document may contain zero Invariant Sections.  If the Document
3529*89a07cf8Schristos     does not identify any Invariant Sections then there are none.
3530*89a07cf8Schristos
3531*89a07cf8Schristos     The "Cover Texts" are certain short passages of text that are
3532*89a07cf8Schristos     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
3533*89a07cf8Schristos     that says that the Document is released under this License.  A
3534*89a07cf8Schristos     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
3535*89a07cf8Schristos     be at most 25 words.
3536*89a07cf8Schristos
3537*89a07cf8Schristos     A "Transparent" copy of the Document means a machine-readable copy,
3538*89a07cf8Schristos     represented in a format whose specification is available to the
3539*89a07cf8Schristos     general public, that is suitable for revising the document
3540*89a07cf8Schristos     straightforwardly with generic text editors or (for images
3541*89a07cf8Schristos     composed of pixels) generic paint programs or (for drawings) some
3542*89a07cf8Schristos     widely available drawing editor, and that is suitable for input to
3543*89a07cf8Schristos     text formatters or for automatic translation to a variety of
3544*89a07cf8Schristos     formats suitable for input to text formatters.  A copy made in an
3545*89a07cf8Schristos     otherwise Transparent file format whose markup, or absence of
3546*89a07cf8Schristos     markup, has been arranged to thwart or discourage subsequent
3547*89a07cf8Schristos     modification by readers is not Transparent.  An image format is
3548*89a07cf8Schristos     not Transparent if used for any substantial amount of text.  A
3549*89a07cf8Schristos     copy that is not "Transparent" is called "Opaque".
3550*89a07cf8Schristos
3551*89a07cf8Schristos     Examples of suitable formats for Transparent copies include plain
3552*89a07cf8Schristos     ASCII without markup, Texinfo input format, LaTeX input format,
3553*89a07cf8Schristos     SGML or XML using a publicly available DTD, and
3554*89a07cf8Schristos     standard-conforming simple HTML, PostScript or PDF designed for
3555*89a07cf8Schristos     human modification.  Examples of transparent image formats include
3556*89a07cf8Schristos     PNG, XCF and JPG.  Opaque formats include proprietary formats that
3557*89a07cf8Schristos     can be read and edited only by proprietary word processors, SGML or
3558*89a07cf8Schristos     XML for which the DTD and/or processing tools are not generally
3559*89a07cf8Schristos     available, and the machine-generated HTML, PostScript or PDF
3560*89a07cf8Schristos     produced by some word processors for output purposes only.
3561*89a07cf8Schristos
3562*89a07cf8Schristos     The "Title Page" means, for a printed book, the title page itself,
3563*89a07cf8Schristos     plus such following pages as are needed to hold, legibly, the
3564*89a07cf8Schristos     material this License requires to appear in the title page.  For
3565*89a07cf8Schristos     works in formats which do not have any title page as such, "Title
3566*89a07cf8Schristos     Page" means the text near the most prominent appearance of the
3567*89a07cf8Schristos     work's title, preceding the beginning of the body of the text.
3568*89a07cf8Schristos
3569*89a07cf8Schristos     A section "Entitled XYZ" means a named subunit of the Document
3570*89a07cf8Schristos     whose title either is precisely XYZ or contains XYZ in parentheses
3571*89a07cf8Schristos     following text that translates XYZ in another language.  (Here XYZ
3572*89a07cf8Schristos     stands for a specific section name mentioned below, such as
3573*89a07cf8Schristos     "Acknowledgements", "Dedications", "Endorsements", or "History".)
3574*89a07cf8Schristos     To "Preserve the Title" of such a section when you modify the
3575*89a07cf8Schristos     Document means that it remains a section "Entitled XYZ" according
3576*89a07cf8Schristos     to this definition.
3577*89a07cf8Schristos
3578*89a07cf8Schristos     The Document may include Warranty Disclaimers next to the notice
3579*89a07cf8Schristos     which states that this License applies to the Document.  These
3580*89a07cf8Schristos     Warranty Disclaimers are considered to be included by reference in
3581*89a07cf8Schristos     this License, but only as regards disclaiming warranties: any other
3582*89a07cf8Schristos     implication that these Warranty Disclaimers may have is void and
3583*89a07cf8Schristos     has no effect on the meaning of this License.
3584*89a07cf8Schristos
3585*89a07cf8Schristos  2. VERBATIM COPYING
3586*89a07cf8Schristos
3587*89a07cf8Schristos     You may copy and distribute the Document in any medium, either
3588*89a07cf8Schristos     commercially or noncommercially, provided that this License, the
3589*89a07cf8Schristos     copyright notices, and the license notice saying this License
3590*89a07cf8Schristos     applies to the Document are reproduced in all copies, and that you
3591*89a07cf8Schristos     add no other conditions whatsoever to those of this License.  You
3592*89a07cf8Schristos     may not use technical measures to obstruct or control the reading
3593*89a07cf8Schristos     or further copying of the copies you make or distribute.  However,
3594*89a07cf8Schristos     you may accept compensation in exchange for copies.  If you
3595*89a07cf8Schristos     distribute a large enough number of copies you must also follow
3596*89a07cf8Schristos     the conditions in section 3.
3597*89a07cf8Schristos
3598*89a07cf8Schristos     You may also lend copies, under the same conditions stated above,
3599*89a07cf8Schristos     and you may publicly display copies.
3600*89a07cf8Schristos
3601*89a07cf8Schristos  3. COPYING IN QUANTITY
3602*89a07cf8Schristos
3603*89a07cf8Schristos     If you publish printed copies (or copies in media that commonly
3604*89a07cf8Schristos     have printed covers) of the Document, numbering more than 100, and
3605*89a07cf8Schristos     the Document's license notice requires Cover Texts, you must
3606*89a07cf8Schristos     enclose the copies in covers that carry, clearly and legibly, all
3607*89a07cf8Schristos     these Cover Texts: Front-Cover Texts on the front cover, and
3608*89a07cf8Schristos     Back-Cover Texts on the back cover.  Both covers must also clearly
3609*89a07cf8Schristos     and legibly identify you as the publisher of these copies.  The
3610*89a07cf8Schristos     front cover must present the full title with all words of the
3611*89a07cf8Schristos     title equally prominent and visible.  You may add other material
3612*89a07cf8Schristos     on the covers in addition.  Copying with changes limited to the
3613*89a07cf8Schristos     covers, as long as they preserve the title of the Document and
3614*89a07cf8Schristos     satisfy these conditions, can be treated as verbatim copying in
3615*89a07cf8Schristos     other respects.
3616*89a07cf8Schristos
3617*89a07cf8Schristos     If the required texts for either cover are too voluminous to fit
3618*89a07cf8Schristos     legibly, you should put the first ones listed (as many as fit
3619*89a07cf8Schristos     reasonably) on the actual cover, and continue the rest onto
3620*89a07cf8Schristos     adjacent pages.
3621*89a07cf8Schristos
3622*89a07cf8Schristos     If you publish or distribute Opaque copies of the Document
3623*89a07cf8Schristos     numbering more than 100, you must either include a
3624*89a07cf8Schristos     machine-readable Transparent copy along with each Opaque copy, or
3625*89a07cf8Schristos     state in or with each Opaque copy a computer-network location from
3626*89a07cf8Schristos     which the general network-using public has access to download
3627*89a07cf8Schristos     using public-standard network protocols a complete Transparent
3628*89a07cf8Schristos     copy of the Document, free of added material.  If you use the
3629*89a07cf8Schristos     latter option, you must take reasonably prudent steps, when you
3630*89a07cf8Schristos     begin distribution of Opaque copies in quantity, to ensure that
3631*89a07cf8Schristos     this Transparent copy will remain thus accessible at the stated
3632*89a07cf8Schristos     location until at least one year after the last time you
3633*89a07cf8Schristos     distribute an Opaque copy (directly or through your agents or
3634*89a07cf8Schristos     retailers) of that edition to the public.
3635*89a07cf8Schristos
3636*89a07cf8Schristos     It is requested, but not required, that you contact the authors of
3637*89a07cf8Schristos     the Document well before redistributing any large number of
3638*89a07cf8Schristos     copies, to give them a chance to provide you with an updated
3639*89a07cf8Schristos     version of the Document.
3640*89a07cf8Schristos
3641*89a07cf8Schristos  4. MODIFICATIONS
3642*89a07cf8Schristos
3643*89a07cf8Schristos     You may copy and distribute a Modified Version of the Document
3644*89a07cf8Schristos     under the conditions of sections 2 and 3 above, provided that you
3645*89a07cf8Schristos     release the Modified Version under precisely this License, with
3646*89a07cf8Schristos     the Modified Version filling the role of the Document, thus
3647*89a07cf8Schristos     licensing distribution and modification of the Modified Version to
3648*89a07cf8Schristos     whoever possesses a copy of it.  In addition, you must do these
3649*89a07cf8Schristos     things in the Modified Version:
3650*89a07cf8Schristos
3651*89a07cf8Schristos       A. Use in the Title Page (and on the covers, if any) a title
3652*89a07cf8Schristos          distinct from that of the Document, and from those of
3653*89a07cf8Schristos          previous versions (which should, if there were any, be listed
3654*89a07cf8Schristos          in the History section of the Document).  You may use the
3655*89a07cf8Schristos          same title as a previous version if the original publisher of
3656*89a07cf8Schristos          that version gives permission.
3657*89a07cf8Schristos
3658*89a07cf8Schristos       B. List on the Title Page, as authors, one or more persons or
3659*89a07cf8Schristos          entities responsible for authorship of the modifications in
3660*89a07cf8Schristos          the Modified Version, together with at least five of the
3661*89a07cf8Schristos          principal authors of the Document (all of its principal
3662*89a07cf8Schristos          authors, if it has fewer than five), unless they release you
3663*89a07cf8Schristos          from this requirement.
3664*89a07cf8Schristos
3665*89a07cf8Schristos       C. State on the Title page the name of the publisher of the
3666*89a07cf8Schristos          Modified Version, as the publisher.
3667*89a07cf8Schristos
3668*89a07cf8Schristos       D. Preserve all the copyright notices of the Document.
3669*89a07cf8Schristos
3670*89a07cf8Schristos       E. Add an appropriate copyright notice for your modifications
3671*89a07cf8Schristos          adjacent to the other copyright notices.
3672*89a07cf8Schristos
3673*89a07cf8Schristos       F. Include, immediately after the copyright notices, a license
3674*89a07cf8Schristos          notice giving the public permission to use the Modified
3675*89a07cf8Schristos          Version under the terms of this License, in the form shown in
3676*89a07cf8Schristos          the Addendum below.
3677*89a07cf8Schristos
3678*89a07cf8Schristos       G. Preserve in that license notice the full lists of Invariant
3679*89a07cf8Schristos          Sections and required Cover Texts given in the Document's
3680*89a07cf8Schristos          license notice.
3681*89a07cf8Schristos
3682*89a07cf8Schristos       H. Include an unaltered copy of this License.
3683*89a07cf8Schristos
3684*89a07cf8Schristos       I. Preserve the section Entitled "History", Preserve its Title,
3685*89a07cf8Schristos          and add to it an item stating at least the title, year, new
3686*89a07cf8Schristos          authors, and publisher of the Modified Version as given on
3687*89a07cf8Schristos          the Title Page.  If there is no section Entitled "History" in
3688*89a07cf8Schristos          the Document, create one stating the title, year, authors,
3689*89a07cf8Schristos          and publisher of the Document as given on its Title Page,
3690*89a07cf8Schristos          then add an item describing the Modified Version as stated in
3691*89a07cf8Schristos          the previous sentence.
3692*89a07cf8Schristos
3693*89a07cf8Schristos       J. Preserve the network location, if any, given in the Document
3694*89a07cf8Schristos          for public access to a Transparent copy of the Document, and
3695*89a07cf8Schristos          likewise the network locations given in the Document for
3696*89a07cf8Schristos          previous versions it was based on.  These may be placed in
3697*89a07cf8Schristos          the "History" section.  You may omit a network location for a
3698*89a07cf8Schristos          work that was published at least four years before the
3699*89a07cf8Schristos          Document itself, or if the original publisher of the version
3700*89a07cf8Schristos          it refers to gives permission.
3701*89a07cf8Schristos
3702*89a07cf8Schristos       K. For any section Entitled "Acknowledgements" or "Dedications",
3703*89a07cf8Schristos          Preserve the Title of the section, and preserve in the
3704*89a07cf8Schristos          section all the substance and tone of each of the contributor
3705*89a07cf8Schristos          acknowledgements and/or dedications given therein.
3706*89a07cf8Schristos
3707*89a07cf8Schristos       L. Preserve all the Invariant Sections of the Document,
3708*89a07cf8Schristos          unaltered in their text and in their titles.  Section numbers
3709*89a07cf8Schristos          or the equivalent are not considered part of the section
3710*89a07cf8Schristos          titles.
3711*89a07cf8Schristos
3712*89a07cf8Schristos       M. Delete any section Entitled "Endorsements".  Such a section
3713*89a07cf8Schristos          may not be included in the Modified Version.
3714*89a07cf8Schristos
3715*89a07cf8Schristos       N. Do not retitle any existing section to be Entitled
3716*89a07cf8Schristos          "Endorsements" or to conflict in title with any Invariant
3717*89a07cf8Schristos          Section.
3718*89a07cf8Schristos
3719*89a07cf8Schristos       O. Preserve any Warranty Disclaimers.
3720*89a07cf8Schristos
3721*89a07cf8Schristos     If the Modified Version includes new front-matter sections or
3722*89a07cf8Schristos     appendices that qualify as Secondary Sections and contain no
3723*89a07cf8Schristos     material copied from the Document, you may at your option
3724*89a07cf8Schristos     designate some or all of these sections as invariant.  To do this,
3725*89a07cf8Schristos     add their titles to the list of Invariant Sections in the Modified
3726*89a07cf8Schristos     Version's license notice.  These titles must be distinct from any
3727*89a07cf8Schristos     other section titles.
3728*89a07cf8Schristos
3729*89a07cf8Schristos     You may add a section Entitled "Endorsements", provided it contains
3730*89a07cf8Schristos     nothing but endorsements of your Modified Version by various
3731*89a07cf8Schristos     parties--for example, statements of peer review or that the text
3732*89a07cf8Schristos     has been approved by an organization as the authoritative
3733*89a07cf8Schristos     definition of a standard.
3734*89a07cf8Schristos
3735*89a07cf8Schristos     You may add a passage of up to five words as a Front-Cover Text,
3736*89a07cf8Schristos     and a passage of up to 25 words as a Back-Cover Text, to the end
3737*89a07cf8Schristos     of the list of Cover Texts in the Modified Version.  Only one
3738*89a07cf8Schristos     passage of Front-Cover Text and one of Back-Cover Text may be
3739*89a07cf8Schristos     added by (or through arrangements made by) any one entity.  If the
3740*89a07cf8Schristos     Document already includes a cover text for the same cover,
3741*89a07cf8Schristos     previously added by you or by arrangement made by the same entity
3742*89a07cf8Schristos     you are acting on behalf of, you may not add another; but you may
3743*89a07cf8Schristos     replace the old one, on explicit permission from the previous
3744*89a07cf8Schristos     publisher that added the old one.
3745*89a07cf8Schristos
3746*89a07cf8Schristos     The author(s) and publisher(s) of the Document do not by this
3747*89a07cf8Schristos     License give permission to use their names for publicity for or to
3748*89a07cf8Schristos     assert or imply endorsement of any Modified Version.
3749*89a07cf8Schristos
3750*89a07cf8Schristos  5. COMBINING DOCUMENTS
3751*89a07cf8Schristos
3752*89a07cf8Schristos     You may combine the Document with other documents released under
3753*89a07cf8Schristos     this License, under the terms defined in section 4 above for
3754*89a07cf8Schristos     modified versions, provided that you include in the combination
3755*89a07cf8Schristos     all of the Invariant Sections of all of the original documents,
3756*89a07cf8Schristos     unmodified, and list them all as Invariant Sections of your
3757*89a07cf8Schristos     combined work in its license notice, and that you preserve all
3758*89a07cf8Schristos     their Warranty Disclaimers.
3759*89a07cf8Schristos
3760*89a07cf8Schristos     The combined work need only contain one copy of this License, and
3761*89a07cf8Schristos     multiple identical Invariant Sections may be replaced with a single
3762*89a07cf8Schristos     copy.  If there are multiple Invariant Sections with the same name
3763*89a07cf8Schristos     but different contents, make the title of each such section unique
3764*89a07cf8Schristos     by adding at the end of it, in parentheses, the name of the
3765*89a07cf8Schristos     original author or publisher of that section if known, or else a
3766*89a07cf8Schristos     unique number.  Make the same adjustment to the section titles in
3767*89a07cf8Schristos     the list of Invariant Sections in the license notice of the
3768*89a07cf8Schristos     combined work.
3769*89a07cf8Schristos
3770*89a07cf8Schristos     In the combination, you must combine any sections Entitled
3771*89a07cf8Schristos     "History" in the various original documents, forming one section
3772*89a07cf8Schristos     Entitled "History"; likewise combine any sections Entitled
3773*89a07cf8Schristos     "Acknowledgements", and any sections Entitled "Dedications".  You
3774*89a07cf8Schristos     must delete all sections Entitled "Endorsements."
3775*89a07cf8Schristos
3776*89a07cf8Schristos  6. COLLECTIONS OF DOCUMENTS
3777*89a07cf8Schristos
3778*89a07cf8Schristos     You may make a collection consisting of the Document and other
3779*89a07cf8Schristos     documents released under this License, and replace the individual
3780*89a07cf8Schristos     copies of this License in the various documents with a single copy
3781*89a07cf8Schristos     that is included in the collection, provided that you follow the
3782*89a07cf8Schristos     rules of this License for verbatim copying of each of the
3783*89a07cf8Schristos     documents in all other respects.
3784*89a07cf8Schristos
3785*89a07cf8Schristos     You may extract a single document from such a collection, and
3786*89a07cf8Schristos     distribute it individually under this License, provided you insert
3787*89a07cf8Schristos     a copy of this License into the extracted document, and follow
3788*89a07cf8Schristos     this License in all other respects regarding verbatim copying of
3789*89a07cf8Schristos     that document.
3790*89a07cf8Schristos
3791*89a07cf8Schristos  7. AGGREGATION WITH INDEPENDENT WORKS
3792*89a07cf8Schristos
3793*89a07cf8Schristos     A compilation of the Document or its derivatives with other
3794*89a07cf8Schristos     separate and independent documents or works, in or on a volume of
3795*89a07cf8Schristos     a storage or distribution medium, is called an "aggregate" if the
3796*89a07cf8Schristos     copyright resulting from the compilation is not used to limit the
3797*89a07cf8Schristos     legal rights of the compilation's users beyond what the individual
3798*89a07cf8Schristos     works permit.  When the Document is included in an aggregate, this
3799*89a07cf8Schristos     License does not apply to the other works in the aggregate which
3800*89a07cf8Schristos     are not themselves derivative works of the Document.
3801*89a07cf8Schristos
3802*89a07cf8Schristos     If the Cover Text requirement of section 3 is applicable to these
3803*89a07cf8Schristos     copies of the Document, then if the Document is less than one half
3804*89a07cf8Schristos     of the entire aggregate, the Document's Cover Texts may be placed
3805*89a07cf8Schristos     on covers that bracket the Document within the aggregate, or the
3806*89a07cf8Schristos     electronic equivalent of covers if the Document is in electronic
3807*89a07cf8Schristos     form.  Otherwise they must appear on printed covers that bracket
3808*89a07cf8Schristos     the whole aggregate.
3809*89a07cf8Schristos
3810*89a07cf8Schristos  8. TRANSLATION
3811*89a07cf8Schristos
3812*89a07cf8Schristos     Translation is considered a kind of modification, so you may
3813*89a07cf8Schristos     distribute translations of the Document under the terms of section
3814*89a07cf8Schristos     4.  Replacing Invariant Sections with translations requires special
3815*89a07cf8Schristos     permission from their copyright holders, but you may include
3816*89a07cf8Schristos     translations of some or all Invariant Sections in addition to the
3817*89a07cf8Schristos     original versions of these Invariant Sections.  You may include a
3818*89a07cf8Schristos     translation of this License, and all the license notices in the
3819*89a07cf8Schristos     Document, and any Warranty Disclaimers, provided that you also
3820*89a07cf8Schristos     include the original English version of this License and the
3821*89a07cf8Schristos     original versions of those notices and disclaimers.  In case of a
3822*89a07cf8Schristos     disagreement between the translation and the original version of
3823*89a07cf8Schristos     this License or a notice or disclaimer, the original version will
3824*89a07cf8Schristos     prevail.
3825*89a07cf8Schristos
3826*89a07cf8Schristos     If a section in the Document is Entitled "Acknowledgements",
3827*89a07cf8Schristos     "Dedications", or "History", the requirement (section 4) to
3828*89a07cf8Schristos     Preserve its Title (section 1) will typically require changing the
3829*89a07cf8Schristos     actual title.
3830*89a07cf8Schristos
3831*89a07cf8Schristos  9. TERMINATION
3832*89a07cf8Schristos
3833*89a07cf8Schristos     You may not copy, modify, sublicense, or distribute the Document
3834*89a07cf8Schristos     except as expressly provided for under this License.  Any other
3835*89a07cf8Schristos     attempt to copy, modify, sublicense or distribute the Document is
3836*89a07cf8Schristos     void, and will automatically terminate your rights under this
3837*89a07cf8Schristos     License.  However, parties who have received copies, or rights,
3838*89a07cf8Schristos     from you under this License will not have their licenses
3839*89a07cf8Schristos     terminated so long as such parties remain in full compliance.
3840*89a07cf8Schristos
3841*89a07cf8Schristos 10. FUTURE REVISIONS OF THIS LICENSE
3842*89a07cf8Schristos
3843*89a07cf8Schristos     The Free Software Foundation may publish new, revised versions of
3844*89a07cf8Schristos     the GNU Free Documentation License from time to time.  Such new
3845*89a07cf8Schristos     versions will be similar in spirit to the present version, but may
3846*89a07cf8Schristos     differ in detail to address new problems or concerns.  See
3847*89a07cf8Schristos     `http://www.gnu.org/copyleft/'.
3848*89a07cf8Schristos
3849*89a07cf8Schristos     Each version of the License is given a distinguishing version
3850*89a07cf8Schristos     number.  If the Document specifies that a particular numbered
3851*89a07cf8Schristos     version of this License "or any later version" applies to it, you
3852*89a07cf8Schristos     have the option of following the terms and conditions either of
3853*89a07cf8Schristos     that specified version or of any later version that has been
3854*89a07cf8Schristos     published (not as a draft) by the Free Software Foundation.  If
3855*89a07cf8Schristos     the Document does not specify a version number of this License,
3856*89a07cf8Schristos     you may choose any version ever published (not as a draft) by the
3857*89a07cf8Schristos     Free Software Foundation.
3858*89a07cf8Schristos
3859*89a07cf8SchristosA.1.1 ADDENDUM: How to use this License for your documents
3860*89a07cf8Schristos----------------------------------------------------------
3861*89a07cf8Schristos
3862*89a07cf8SchristosTo use this License in a document you have written, include a copy of
3863*89a07cf8Schristosthe License in the document and put the following copyright and license
3864*89a07cf8Schristosnotices just after the title page:
3865*89a07cf8Schristos
3866*89a07cf8Schristos       Copyright (C)  YEAR  YOUR NAME.
3867*89a07cf8Schristos       Permission is granted to copy, distribute and/or modify this document
3868*89a07cf8Schristos       under the terms of the GNU Free Documentation License, Version 1.2
3869*89a07cf8Schristos       or any later version published by the Free Software Foundation;
3870*89a07cf8Schristos       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
3871*89a07cf8Schristos       Texts.  A copy of the license is included in the section entitled ``GNU
3872*89a07cf8Schristos       Free Documentation License''.
3873*89a07cf8Schristos
3874*89a07cf8Schristos   If you have Invariant Sections, Front-Cover Texts and Back-Cover
3875*89a07cf8SchristosTexts, replace the "with...Texts." line with this:
3876*89a07cf8Schristos
3877*89a07cf8Schristos         with the Invariant Sections being LIST THEIR TITLES, with
3878*89a07cf8Schristos         the Front-Cover Texts being LIST, and with the Back-Cover Texts
3879*89a07cf8Schristos         being LIST.
3880*89a07cf8Schristos
3881*89a07cf8Schristos   If you have Invariant Sections without Cover Texts, or some other
3882*89a07cf8Schristoscombination of the three, merge those two alternatives to suit the
3883*89a07cf8Schristossituation.
3884*89a07cf8Schristos
3885*89a07cf8Schristos   If your document contains nontrivial examples of program code, we
3886*89a07cf8Schristosrecommend releasing these examples in parallel under your choice of
3887*89a07cf8Schristosfree software license, such as the GNU General Public License, to
3888*89a07cf8Schristospermit their use in free software.
3889*89a07cf8Schristos
3890*89a07cf8Schristos
3891*89a07cf8SchristosFile: groff,  Node: Request Index,  Next: Escape Index,  Prev: Copying This Manual,  Up: Top
3892*89a07cf8Schristos
3893*89a07cf8SchristosAppendix B Request Index
3894*89a07cf8Schristos************************
3895*89a07cf8Schristos
3896*89a07cf8SchristosRequests appear without the leading control character (normally either
3897*89a07cf8Schristos`.' or `'').
3898*89a07cf8Schristos
3899*89a07cf8Schristos�[index�]
3900*89a07cf8Schristos* Menu:
3901*89a07cf8Schristos
3902*89a07cf8Schristos* ab:                                    Debugging.           (line  40)
3903*89a07cf8Schristos* ad:                                    Manipulating Filling and Adjusting.
3904*89a07cf8Schristos                                                              (line  52)
3905*89a07cf8Schristos* af:                                    Assigning Formats.   (line  13)
3906*89a07cf8Schristos* aln:                                   Setting Registers.   (line  79)
3907*89a07cf8Schristos* als:                                   Strings.             (line 224)
3908*89a07cf8Schristos* am:                                    Writing Macros.      (line 107)
3909*89a07cf8Schristos* am1:                                   Writing Macros.      (line 108)
3910*89a07cf8Schristos* ami:                                   Writing Macros.      (line 109)
3911*89a07cf8Schristos* ami1:                                  Writing Macros.      (line 110)
3912*89a07cf8Schristos* as:                                    Strings.             (line 170)
3913*89a07cf8Schristos* as1:                                   Strings.             (line 171)
3914*89a07cf8Schristos* asciify:                               Diversions.          (line 195)
3915*89a07cf8Schristos* backtrace:                             Debugging.           (line  94)
3916*89a07cf8Schristos* bd:                                    Artificial Fonts.    (line  96)
3917*89a07cf8Schristos* blm:                                   Blank Line Traps.    (line   7)
3918*89a07cf8Schristos* box:                                   Diversions.          (line  25)
3919*89a07cf8Schristos* boxa:                                  Diversions.          (line  26)
3920*89a07cf8Schristos* bp:                                    Page Control.        (line   7)
3921*89a07cf8Schristos* br:                                    Manipulating Filling and Adjusting.
3922*89a07cf8Schristos                                                              (line  12)
3923*89a07cf8Schristos* break:                                 while.               (line  73)
3924*89a07cf8Schristos* brp:                                   Manipulating Filling and Adjusting.
3925*89a07cf8Schristos                                                              (line 112)
3926*89a07cf8Schristos* c2:                                    Character Translations.
3927*89a07cf8Schristos                                                              (line  16)
3928*89a07cf8Schristos* cc:                                    Character Translations.
3929*89a07cf8Schristos                                                              (line  10)
3930*89a07cf8Schristos* ce:                                    Manipulating Filling and Adjusting.
3931*89a07cf8Schristos                                                              (line 189)
3932*89a07cf8Schristos* cf:                                    I/O.                 (line  49)
3933*89a07cf8Schristos* cflags:                                Using Symbols.       (line 241)
3934*89a07cf8Schristos* ch:                                    Page Location Traps. (line 106)
3935*89a07cf8Schristos* char:                                  Using Symbols.       (line 281)
3936*89a07cf8Schristos* chop:                                  Strings.             (line 231)
3937*89a07cf8Schristos* close:                                 I/O.                 (line 230)
3938*89a07cf8Schristos* color:                                 Colors.              (line   7)
3939*89a07cf8Schristos* composite:                             Using Symbols.       (line 197)
3940*89a07cf8Schristos* continue:                              while.               (line  77)
3941*89a07cf8Schristos* cp:                                    Implementation Differences.
3942*89a07cf8Schristos                                                              (line  23)
3943*89a07cf8Schristos* cs:                                    Artificial Fonts.    (line 127)
3944*89a07cf8Schristos* cu:                                    Artificial Fonts.    (line  87)
3945*89a07cf8Schristos* da:                                    Diversions.          (line  18)
3946*89a07cf8Schristos* de:                                    Writing Macros.      (line  10)
3947*89a07cf8Schristos* de1:                                   Writing Macros.      (line  11)
3948*89a07cf8Schristos* defcolor:                              Colors.              (line  21)
3949*89a07cf8Schristos* dei:                                   Writing Macros.      (line  12)
3950*89a07cf8Schristos* dei1:                                  Writing Macros.      (line  13)
3951*89a07cf8Schristos* di:                                    Diversions.          (line  17)
3952*89a07cf8Schristos* do:                                    Implementation Differences.
3953*89a07cf8Schristos                                                              (line  24)
3954*89a07cf8Schristos* ds:                                    Strings.             (line  11)
3955*89a07cf8Schristos* ds1:                                   Strings.             (line  12)
3956*89a07cf8Schristos* dt:                                    Diversion Traps.     (line   7)
3957*89a07cf8Schristos* ec:                                    Character Translations.
3958*89a07cf8Schristos                                                              (line  47)
3959*89a07cf8Schristos* ecr:                                   Character Translations.
3960*89a07cf8Schristos                                                              (line  59)
3961*89a07cf8Schristos* ecs:                                   Character Translations.
3962*89a07cf8Schristos                                                              (line  58)
3963*89a07cf8Schristos* el:                                    if-else.             (line  28)
3964*89a07cf8Schristos* em:                                    End-of-input Traps.  (line   7)
3965*89a07cf8Schristos* eo:                                    Character Translations.
3966*89a07cf8Schristos                                                              (line  22)
3967*89a07cf8Schristos* ev:                                    Environments.        (line  38)
3968*89a07cf8Schristos* evc:                                   Environments.        (line  72)
3969*89a07cf8Schristos* ex:                                    Debugging.           (line  45)
3970*89a07cf8Schristos* fam:                                   Font Families.       (line  19)
3971*89a07cf8Schristos* fc:                                    Fields.              (line  18)
3972*89a07cf8Schristos* fchar:                                 Using Symbols.       (line 282)
3973*89a07cf8Schristos* fcolor:                                Colors.              (line  85)
3974*89a07cf8Schristos* fi:                                    Manipulating Filling and Adjusting.
3975*89a07cf8Schristos                                                              (line  30)
3976*89a07cf8Schristos* fl:                                    Debugging.           (line  85)
3977*89a07cf8Schristos* fp:                                    Font Positions.      (line  11)
3978*89a07cf8Schristos* fschar:                                Using Symbols.       (line 283)
3979*89a07cf8Schristos* fspecial:                              Special Fonts.       (line  18)
3980*89a07cf8Schristos* ft <1>:                                Font Positions.      (line  58)
3981*89a07cf8Schristos* ft:                                    Changing Fonts.      (line   7)
3982*89a07cf8Schristos* ftr:                                   Changing Fonts.      (line  53)
3983*89a07cf8Schristos* gcolor:                                Colors.              (line  51)
3984*89a07cf8Schristos* hc:                                    Manipulating Hyphenation.
3985*89a07cf8Schristos                                                              (line 105)
3986*89a07cf8Schristos* hcode:                                 Manipulating Hyphenation.
3987*89a07cf8Schristos                                                              (line 174)
3988*89a07cf8Schristos* hla:                                   Manipulating Hyphenation.
3989*89a07cf8Schristos                                                              (line 253)
3990*89a07cf8Schristos* hlm:                                   Manipulating Hyphenation.
3991*89a07cf8Schristos                                                              (line  45)
3992*89a07cf8Schristos* hpf:                                   Manipulating Hyphenation.
3993*89a07cf8Schristos                                                              (line 114)
3994*89a07cf8Schristos* hpfa:                                  Manipulating Hyphenation.
3995*89a07cf8Schristos                                                              (line 115)
3996*89a07cf8Schristos* hpfcode:                               Manipulating Hyphenation.
3997*89a07cf8Schristos                                                              (line 116)
3998*89a07cf8Schristos* hw:                                    Manipulating Hyphenation.
3999*89a07cf8Schristos                                                              (line  61)
4000*89a07cf8Schristos* hy:                                    Manipulating Hyphenation.
4001*89a07cf8Schristos                                                              (line   9)
4002*89a07cf8Schristos* hym:                                   Manipulating Hyphenation.
4003*89a07cf8Schristos                                                              (line 209)
4004*89a07cf8Schristos* hys:                                   Manipulating Hyphenation.
4005*89a07cf8Schristos                                                              (line 224)
4006*89a07cf8Schristos* ie:                                    if-else.             (line  27)
4007*89a07cf8Schristos* if:                                    if-else.             (line  10)
4008*89a07cf8Schristos* ig:                                    Comments.            (line  67)
4009*89a07cf8Schristos* in:                                    Line Layout.         (line  91)
4010*89a07cf8Schristos* it:                                    Input Line Traps.    (line   7)
4011*89a07cf8Schristos* itc:                                   Input Line Traps.    (line   8)
4012*89a07cf8Schristos* kern:                                  Ligatures and Kerning.
4013*89a07cf8Schristos                                                              (line  41)
4014*89a07cf8Schristos* lc:                                    Leaders.             (line  23)
4015*89a07cf8Schristos* length:                                Strings.             (line 204)
4016*89a07cf8Schristos* lf:                                    Debugging.           (line  10)
4017*89a07cf8Schristos* lg:                                    Ligatures and Kerning.
4018*89a07cf8Schristos                                                              (line  23)
4019*89a07cf8Schristos* linetabs:                              Tabs and Fields.     (line 147)
4020*89a07cf8Schristos* ll:                                    Line Layout.         (line 145)
4021*89a07cf8Schristos* ls:                                    Manipulating Spacing.
4022*89a07cf8Schristos                                                              (line  51)
4023*89a07cf8Schristos* lt:                                    Page Layout.         (line  60)
4024*89a07cf8Schristos* mc:                                    Miscellaneous.       (line  76)
4025*89a07cf8Schristos* mk:                                    Page Motions.        (line  10)
4026*89a07cf8Schristos* mso:                                   I/O.                 (line  41)
4027*89a07cf8Schristos* na:                                    Manipulating Filling and Adjusting.
4028*89a07cf8Schristos                                                              (line 104)
4029*89a07cf8Schristos* ne:                                    Page Control.        (line  34)
4030*89a07cf8Schristos* nf:                                    Manipulating Filling and Adjusting.
4031*89a07cf8Schristos                                                              (line  41)
4032*89a07cf8Schristos* nh:                                    Manipulating Hyphenation.
4033*89a07cf8Schristos                                                              (line  37)
4034*89a07cf8Schristos* nm:                                    Miscellaneous.       (line  10)
4035*89a07cf8Schristos* nn:                                    Miscellaneous.       (line  72)
4036*89a07cf8Schristos* nop:                                   if-else.             (line  24)
4037*89a07cf8Schristos* nr <1>:                                Auto-increment.      (line  11)
4038*89a07cf8Schristos* nr:                                    Setting Registers.   (line   9)
4039*89a07cf8Schristos* nroff:                                 Troff and Nroff Mode.
4040*89a07cf8Schristos                                                              (line  32)
4041*89a07cf8Schristos* ns:                                    Manipulating Spacing.
4042*89a07cf8Schristos                                                              (line 113)
4043*89a07cf8Schristos* nx:                                    I/O.                 (line  74)
4044*89a07cf8Schristos* open:                                  I/O.                 (line 198)
4045*89a07cf8Schristos* opena:                                 I/O.                 (line 199)
4046*89a07cf8Schristos* os:                                    Page Control.        (line  55)
4047*89a07cf8Schristos* output:                                Diversions.          (line 180)
4048*89a07cf8Schristos* pc:                                    Page Layout.         (line  89)
4049*89a07cf8Schristos* pi:                                    I/O.                 (line 138)
4050*89a07cf8Schristos* pl:                                    Page Layout.         (line  10)
4051*89a07cf8Schristos* pm:                                    Debugging.           (line  64)
4052*89a07cf8Schristos* pn:                                    Page Layout.         (line  77)
4053*89a07cf8Schristos* pnr:                                   Debugging.           (line  75)
4054*89a07cf8Schristos* po:                                    Line Layout.         (line  61)
4055*89a07cf8Schristos* ps:                                    Changing Type Sizes. (line   7)
4056*89a07cf8Schristos* psbb:                                  Miscellaneous.       (line 141)
4057*89a07cf8Schristos* pso:                                   I/O.                 (line  30)
4058*89a07cf8Schristos* ptr:                                   Debugging.           (line  79)
4059*89a07cf8Schristos* pvs:                                   Changing Type Sizes. (line 133)
4060*89a07cf8Schristos* rchar:                                 Using Symbols.       (line 340)
4061*89a07cf8Schristos* rd:                                    I/O.                 (line  79)
4062*89a07cf8Schristos* return:                                Writing Macros.      (line 143)
4063*89a07cf8Schristos* rfschar:                               Using Symbols.       (line 341)
4064*89a07cf8Schristos* rj:                                    Manipulating Filling and Adjusting.
4065*89a07cf8Schristos                                                              (line 238)
4066*89a07cf8Schristos* rm:                                    Strings.             (line 219)
4067*89a07cf8Schristos* rn:                                    Strings.             (line 216)
4068*89a07cf8Schristos* rnn:                                   Setting Registers.   (line  75)
4069*89a07cf8Schristos* rr:                                    Setting Registers.   (line  71)
4070*89a07cf8Schristos* rs:                                    Manipulating Spacing.
4071*89a07cf8Schristos                                                              (line 114)
4072*89a07cf8Schristos* rt:                                    Page Motions.        (line  11)
4073*89a07cf8Schristos* schar:                                 Using Symbols.       (line 284)
4074*89a07cf8Schristos* shc:                                   Manipulating Hyphenation.
4075*89a07cf8Schristos                                                              (line 240)
4076*89a07cf8Schristos* shift:                                 Parameters.          (line  30)
4077*89a07cf8Schristos* sizes:                                 Changing Type Sizes. (line  69)
4078*89a07cf8Schristos* so:                                    I/O.                 (line   9)
4079*89a07cf8Schristos* sp:                                    Manipulating Spacing.
4080*89a07cf8Schristos                                                              (line   7)
4081*89a07cf8Schristos* special:                               Special Fonts.       (line  17)
4082*89a07cf8Schristos* spreadwarn:                            Debugging.           (line 131)
4083*89a07cf8Schristos* ss:                                    Manipulating Filling and Adjusting.
4084*89a07cf8Schristos                                                              (line 134)
4085*89a07cf8Schristos* sty:                                   Font Families.       (line  61)
4086*89a07cf8Schristos* substring:                             Strings.             (line 188)
4087*89a07cf8Schristos* sv:                                    Page Control.        (line  54)
4088*89a07cf8Schristos* sy:                                    I/O.                 (line 160)
4089*89a07cf8Schristos* ta:                                    Tabs and Fields.     (line  14)
4090*89a07cf8Schristos* tc:                                    Tabs and Fields.     (line 139)
4091*89a07cf8Schristos* ti:                                    Line Layout.         (line 117)
4092*89a07cf8Schristos* tkf:                                   Ligatures and Kerning.
4093*89a07cf8Schristos                                                              (line  60)
4094*89a07cf8Schristos* tl:                                    Page Layout.         (line  35)
4095*89a07cf8Schristos* tm:                                    Debugging.           (line  25)
4096*89a07cf8Schristos* tm1:                                   Debugging.           (line  26)
4097*89a07cf8Schristos* tmc:                                   Debugging.           (line  27)
4098*89a07cf8Schristos* tr:                                    Character Translations.
4099*89a07cf8Schristos                                                              (line 153)
4100*89a07cf8Schristos* trf:                                   I/O.                 (line  48)
4101*89a07cf8Schristos* trin:                                  Character Translations.
4102*89a07cf8Schristos                                                              (line 154)
4103*89a07cf8Schristos* trnt:                                  Character Translations.
4104*89a07cf8Schristos                                                              (line 245)
4105*89a07cf8Schristos* troff:                                 Troff and Nroff Mode.
4106*89a07cf8Schristos                                                              (line  24)
4107*89a07cf8Schristos* uf:                                    Artificial Fonts.    (line  91)
4108*89a07cf8Schristos* ul:                                    Artificial Fonts.    (line  65)
4109*89a07cf8Schristos* unformat:                              Diversions.          (line 215)
4110*89a07cf8Schristos* vpt:                                   Page Location Traps. (line  17)
4111*89a07cf8Schristos* vs:                                    Changing Type Sizes. (line  84)
4112*89a07cf8Schristos* warn:                                  Debugging.           (line 154)
4113*89a07cf8Schristos* warnscale:                             Debugging.           (line 127)
4114*89a07cf8Schristos* wh:                                    Page Location Traps. (line  29)
4115*89a07cf8Schristos* while:                                 while.               (line  10)
4116*89a07cf8Schristos* write:                                 I/O.                 (line 210)
4117*89a07cf8Schristos* writec:                                I/O.                 (line 211)
4118*89a07cf8Schristos* writem:                                I/O.                 (line 221)
4119*89a07cf8Schristos
4120*89a07cf8Schristos
4121*89a07cf8SchristosFile: groff,  Node: Escape Index,  Next: Operator Index,  Prev: Request Index,  Up: Top
4122*89a07cf8Schristos
4123*89a07cf8SchristosAppendix C Escape Index
4124*89a07cf8Schristos***********************
4125*89a07cf8Schristos
4126*89a07cf8SchristosAny escape sequence `\X' with X not in the list below emits a warning,
4127*89a07cf8Schristosprinting glyph X.
4128*89a07cf8Schristos
4129*89a07cf8Schristos�[index�]
4130*89a07cf8Schristos* Menu:
4131*89a07cf8Schristos
4132*89a07cf8Schristos* \:                                     Using Symbols.       (line 139)
4133*89a07cf8Schristos* \!:                                    Diversions.          (line 133)
4134*89a07cf8Schristos* \":                                    Comments.            (line  10)
4135*89a07cf8Schristos* \#:                                    Comments.            (line  50)
4136*89a07cf8Schristos* \$:                                    Parameters.          (line  19)
4137*89a07cf8Schristos* \$*:                                   Parameters.          (line  38)
4138*89a07cf8Schristos* \$0:                                   Parameters.          (line  48)
4139*89a07cf8Schristos* \$@:                                   Parameters.          (line  39)
4140*89a07cf8Schristos* \%:                                    Manipulating Hyphenation.
4141*89a07cf8Schristos                                                              (line  84)
4142*89a07cf8Schristos* \&:                                    Ligatures and Kerning.
4143*89a07cf8Schristos                                                              (line 102)
4144*89a07cf8Schristos* \':                                    Using Symbols.       (line 229)
4145*89a07cf8Schristos* \):                                    Ligatures and Kerning.
4146*89a07cf8Schristos                                                              (line 131)
4147*89a07cf8Schristos* \*:                                    Strings.             (line  13)
4148*89a07cf8Schristos* \,:                                    Ligatures and Kerning.
4149*89a07cf8Schristos                                                              (line  92)
4150*89a07cf8Schristos* \-:                                    Using Symbols.       (line 238)
4151*89a07cf8Schristos* \.:                                    Character Translations.
4152*89a07cf8Schristos                                                              (line 126)
4153*89a07cf8Schristos* \/:                                    Ligatures and Kerning.
4154*89a07cf8Schristos                                                              (line  80)
4155*89a07cf8Schristos* \0:                                    Page Motions.        (line 139)
4156*89a07cf8Schristos* \<colon>:                              Manipulating Hyphenation.
4157*89a07cf8Schristos                                                              (line  85)
4158*89a07cf8Schristos* \<RET>:                                Line Control.        (line  43)
4159*89a07cf8Schristos* \<SP>:                                 Page Motions.        (line 123)
4160*89a07cf8Schristos* \?:                                    Diversions.          (line 134)
4161*89a07cf8Schristos* \\:                                    Character Translations.
4162*89a07cf8Schristos                                                              (line  68)
4163*89a07cf8Schristos* \^:                                    Page Motions.        (line 135)
4164*89a07cf8Schristos* \`:                                    Using Symbols.       (line 234)
4165*89a07cf8Schristos* \a:                                    Leaders.             (line  18)
4166*89a07cf8Schristos* \A:                                    Identifiers.         (line  55)
4167*89a07cf8Schristos* \b:                                    Drawing Requests.    (line 223)
4168*89a07cf8Schristos* \B:                                    Expressions.         (line  65)
4169*89a07cf8Schristos* \C:                                    Using Symbols.       (line 191)
4170*89a07cf8Schristos* \c:                                    Line Control.        (line  44)
4171*89a07cf8Schristos* \D:                                    Drawing Requests.    (line  71)
4172*89a07cf8Schristos* \d:                                    Page Motions.        (line 109)
4173*89a07cf8Schristos* \E:                                    Character Translations.
4174*89a07cf8Schristos                                                              (line  70)
4175*89a07cf8Schristos* \e:                                    Character Translations.
4176*89a07cf8Schristos                                                              (line  69)
4177*89a07cf8Schristos* \f:                                    Font Positions.      (line  59)
4178*89a07cf8Schristos* \F:                                    Font Families.       (line  21)
4179*89a07cf8Schristos* \f:                                    Changing Fonts.      (line   8)
4180*89a07cf8Schristos* \g:                                    Assigning Formats.   (line  75)
4181*89a07cf8Schristos* \h:                                    Page Motions.        (line 112)
4182*89a07cf8Schristos* \H:                                    Artificial Fonts.    (line  13)
4183*89a07cf8Schristos* \k:                                    Page Motions.        (line 203)
4184*89a07cf8Schristos* \L:                                    Drawing Requests.    (line  50)
4185*89a07cf8Schristos* \l:                                    Drawing Requests.    (line  16)
4186*89a07cf8Schristos* \M:                                    Colors.              (line  86)
4187*89a07cf8Schristos* \m:                                    Colors.              (line  52)
4188*89a07cf8Schristos* \N:                                    Using Symbols.       (line 207)
4189*89a07cf8Schristos* \n <1>:                                Auto-increment.      (line  19)
4190*89a07cf8Schristos* \n:                                    Interpolating Registers.
4191*89a07cf8Schristos                                                              (line   9)
4192*89a07cf8Schristos* \O:                                    Suppressing output.  (line   7)
4193*89a07cf8Schristos* \o:                                    Page Motions.        (line 218)
4194*89a07cf8Schristos* \p:                                    Manipulating Filling and Adjusting.
4195*89a07cf8Schristos                                                              (line 113)
4196*89a07cf8Schristos* \r:                                    Page Motions.        (line 103)
4197*89a07cf8Schristos* \R:                                    Setting Registers.   (line  10)
4198*89a07cf8Schristos* \s:                                    Changing Type Sizes. (line  10)
4199*89a07cf8Schristos* \S:                                    Artificial Fonts.    (line  45)
4200*89a07cf8Schristos* \t:                                    Tabs and Fields.     (line  10)
4201*89a07cf8Schristos* \u:                                    Page Motions.        (line 106)
4202*89a07cf8Schristos* \V:                                    I/O.                 (line 248)
4203*89a07cf8Schristos* \v:                                    Page Motions.        (line  87)
4204*89a07cf8Schristos* \w:                                    Page Motions.        (line 147)
4205*89a07cf8Schristos* \X:                                    Postprocessor Access.
4206*89a07cf8Schristos                                                              (line  11)
4207*89a07cf8Schristos* \x:                                    Manipulating Spacing.
4208*89a07cf8Schristos                                                              (line  71)
4209*89a07cf8Schristos* \Y:                                    Postprocessor Access.
4210*89a07cf8Schristos                                                              (line  25)
4211*89a07cf8Schristos* \Z:                                    Page Motions.        (line 226)
4212*89a07cf8Schristos* \z:                                    Page Motions.        (line 222)
4213*89a07cf8Schristos* \{:                                    if-else.             (line  38)
4214*89a07cf8Schristos* \|:                                    Page Motions.        (line 131)
4215*89a07cf8Schristos* \}:                                    if-else.             (line  38)
4216*89a07cf8Schristos* \~:                                    Page Motions.        (line 127)
4217*89a07cf8Schristos
4218*89a07cf8Schristos
4219*89a07cf8SchristosFile: groff,  Node: Operator Index,  Next: Register Index,  Prev: Escape Index,  Up: Top
4220*89a07cf8Schristos
4221*89a07cf8SchristosAppendix D Operator Index
4222*89a07cf8Schristos*************************
4223*89a07cf8Schristos
4224*89a07cf8Schristos�[index�]
4225*89a07cf8Schristos* Menu:
4226*89a07cf8Schristos
4227*89a07cf8Schristos* !:                                     Expressions.          (line 21)
4228*89a07cf8Schristos* %:                                     Expressions.          (line  8)
4229*89a07cf8Schristos* &:                                     Expressions.          (line 19)
4230*89a07cf8Schristos* (:                                     Expressions.          (line 41)
4231*89a07cf8Schristos* ):                                     Expressions.          (line 41)
4232*89a07cf8Schristos* *:                                     Expressions.          (line  8)
4233*89a07cf8Schristos* +:                                     Expressions.          (line  8)
4234*89a07cf8Schristos* -:                                     Expressions.          (line  8)
4235*89a07cf8Schristos* /:                                     Expressions.          (line  8)
4236*89a07cf8Schristos* <:                                     Expressions.          (line 15)
4237*89a07cf8Schristos* <=:                                    Expressions.          (line 15)
4238*89a07cf8Schristos* <?:                                    Expressions.          (line 26)
4239*89a07cf8Schristos* <colon>:                               Expressions.          (line 19)
4240*89a07cf8Schristos* =:                                     Expressions.          (line 15)
4241*89a07cf8Schristos* ==:                                    Expressions.          (line 15)
4242*89a07cf8Schristos* >:                                     Expressions.          (line 15)
4243*89a07cf8Schristos* >=:                                    Expressions.          (line 15)
4244*89a07cf8Schristos* >?:                                    Expressions.          (line 26)
4245*89a07cf8Schristos
4246*89a07cf8Schristos
4247*89a07cf8SchristosFile: groff,  Node: Register Index,  Next: Macro Index,  Prev: Operator Index,  Up: Top
4248*89a07cf8Schristos
4249*89a07cf8SchristosAppendix E Register Index
4250*89a07cf8Schristos*************************
4251*89a07cf8Schristos
4252*89a07cf8SchristosThe macro package or program a specific register belongs to is appended
4253*89a07cf8Schristosin brackets.
4254*89a07cf8Schristos
4255*89a07cf8Schristos   A register name `x' consisting of exactly one character can be
4256*89a07cf8Schristosaccessed as `\nx'.  A register name `xx' consisting of exactly two
4257*89a07cf8Schristoscharacters can be accessed as `\n(xx'.  Register names `xxx' of any
4258*89a07cf8Schristoslength can be accessed as `\n[xxx]'.
4259*89a07cf8Schristos
4260*89a07cf8Schristos�[index�]
4261*89a07cf8Schristos* Menu:
4262*89a07cf8Schristos
4263*89a07cf8Schristos* $$:                                    Built-in Registers.  (line  96)
4264*89a07cf8Schristos* % <1>:                                 Page Control.        (line  10)
4265*89a07cf8Schristos* %:                                     Page Layout.         (line  89)
4266*89a07cf8Schristos* .$:                                    Parameters.          (line  10)
4267*89a07cf8Schristos* .a:                                    Manipulating Spacing.
4268*89a07cf8Schristos                                                              (line  72)
4269*89a07cf8Schristos* .A:                                    Built-in Registers.  (line 103)
4270*89a07cf8Schristos* .b:                                    Artificial Fonts.    (line  98)
4271*89a07cf8Schristos* .C:                                    Implementation Differences.
4272*89a07cf8Schristos                                                              (line  25)
4273*89a07cf8Schristos* .c:                                    Built-in Registers.  (line  73)
4274*89a07cf8Schristos* .cdp:                                  Environments.        (line  96)
4275*89a07cf8Schristos* .ce:                                   Manipulating Filling and Adjusting.
4276*89a07cf8Schristos                                                              (line 190)
4277*89a07cf8Schristos* .cht:                                  Environments.        (line  95)
4278*89a07cf8Schristos* .color:                                Colors.              (line   8)
4279*89a07cf8Schristos* .csk:                                  Environments.        (line  97)
4280*89a07cf8Schristos* .d:                                    Diversions.          (line  62)
4281*89a07cf8Schristos* .ev:                                   Environments.        (line  39)
4282*89a07cf8Schristos* .f:                                    Font Positions.      (line  12)
4283*89a07cf8Schristos* .F:                                    Built-in Registers.  (line  12)
4284*89a07cf8Schristos* .fam:                                  Font Families.       (line  20)
4285*89a07cf8Schristos* .fn:                                   Font Families.       (line  24)
4286*89a07cf8Schristos* .fp:                                   Font Positions.      (line  13)
4287*89a07cf8Schristos* .g:                                    Built-in Registers.  (line  99)
4288*89a07cf8Schristos* .h:                                    Diversions.          (line  69)
4289*89a07cf8Schristos* .H:                                    Built-in Registers.  (line  15)
4290*89a07cf8Schristos* .height:                               Artificial Fonts.    (line  16)
4291*89a07cf8Schristos* .hla:                                  Manipulating Hyphenation.
4292*89a07cf8Schristos                                                              (line 254)
4293*89a07cf8Schristos* .hlc:                                  Manipulating Hyphenation.
4294*89a07cf8Schristos                                                              (line  47)
4295*89a07cf8Schristos* .hlm:                                  Manipulating Hyphenation.
4296*89a07cf8Schristos                                                              (line  46)
4297*89a07cf8Schristos* .hy:                                   Manipulating Hyphenation.
4298*89a07cf8Schristos                                                              (line  10)
4299*89a07cf8Schristos* .hym:                                  Manipulating Hyphenation.
4300*89a07cf8Schristos                                                              (line 210)
4301*89a07cf8Schristos* .hys:                                  Manipulating Hyphenation.
4302*89a07cf8Schristos                                                              (line 225)
4303*89a07cf8Schristos* .i:                                    Line Layout.         (line  94)
4304*89a07cf8Schristos* .in:                                   Line Layout.         (line 120)
4305*89a07cf8Schristos* .int:                                  Line Control.        (line  45)
4306*89a07cf8Schristos* .j:                                    Manipulating Filling and Adjusting.
4307*89a07cf8Schristos                                                              (line  53)
4308*89a07cf8Schristos* .k:                                    Page Motions.        (line 214)
4309*89a07cf8Schristos* .kern:                                 Ligatures and Kerning.
4310*89a07cf8Schristos                                                              (line  42)
4311*89a07cf8Schristos* .l:                                    Line Layout.         (line 148)
4312*89a07cf8Schristos* .L:                                    Manipulating Spacing.
4313*89a07cf8Schristos                                                              (line  52)
4314*89a07cf8Schristos* .lg:                                   Ligatures and Kerning.
4315*89a07cf8Schristos                                                              (line  24)
4316*89a07cf8Schristos* .linetabs:                             Tabs and Fields.     (line 148)
4317*89a07cf8Schristos* .ll:                                   Line Layout.         (line 149)
4318*89a07cf8Schristos* .lt:                                   Page Layout.         (line  63)
4319*89a07cf8Schristos* .M:                                    Colors.              (line  89)
4320*89a07cf8Schristos* .m:                                    Colors.              (line  55)
4321*89a07cf8Schristos* .n:                                    Environments.        (line 112)
4322*89a07cf8Schristos* .ne:                                   Page Location Traps. (line 118)
4323*89a07cf8Schristos* .ns:                                   Manipulating Spacing.
4324*89a07cf8Schristos                                                              (line 115)
4325*89a07cf8Schristos* .o:                                    Line Layout.         (line  64)
4326*89a07cf8Schristos* .p:                                    Page Layout.         (line  13)
4327*89a07cf8Schristos* .P:                                    Built-in Registers.  (line 108)
4328*89a07cf8Schristos* .pe:                                   Page Location Traps. (line 139)
4329*89a07cf8Schristos* .pn:                                   Page Layout.         (line  80)
4330*89a07cf8Schristos* .ps:                                   Fractional Type Sizes.
4331*89a07cf8Schristos                                                              (line  35)
4332*89a07cf8Schristos* .psr:                                  Fractional Type Sizes.
4333*89a07cf8Schristos                                                              (line  42)
4334*89a07cf8Schristos* .pvs:                                  Changing Type Sizes. (line 136)
4335*89a07cf8Schristos* .rj:                                   Manipulating Filling and Adjusting.
4336*89a07cf8Schristos                                                              (line 239)
4337*89a07cf8Schristos* .s:                                    Changing Type Sizes. (line  11)
4338*89a07cf8Schristos* .slant:                                Artificial Fonts.    (line  46)
4339*89a07cf8Schristos* .sr:                                   Fractional Type Sizes.
4340*89a07cf8Schristos                                                              (line  43)
4341*89a07cf8Schristos* .ss:                                   Manipulating Filling and Adjusting.
4342*89a07cf8Schristos                                                              (line 135)
4343*89a07cf8Schristos* .sss:                                  Manipulating Filling and Adjusting.
4344*89a07cf8Schristos                                                              (line 136)
4345*89a07cf8Schristos* .sty:                                  Changing Fonts.      (line  11)
4346*89a07cf8Schristos* .t:                                    Page Location Traps. (line  97)
4347*89a07cf8Schristos* .T:                                    Built-in Registers.  (line 114)
4348*89a07cf8Schristos* .tabs:                                 Tabs and Fields.     (line  15)
4349*89a07cf8Schristos* .trunc:                                Page Location Traps. (line 127)
4350*89a07cf8Schristos* .u:                                    Manipulating Filling and Adjusting.
4351*89a07cf8Schristos                                                              (line  31)
4352*89a07cf8Schristos* .v:                                    Changing Type Sizes. (line  87)
4353*89a07cf8Schristos* .V:                                    Built-in Registers.  (line  23)
4354*89a07cf8Schristos* .vpt:                                  Page Location Traps. (line  18)
4355*89a07cf8Schristos* .w:                                    Environments.        (line  94)
4356*89a07cf8Schristos* .warn:                                 Debugging.           (line 155)
4357*89a07cf8Schristos* .x:                                    Built-in Registers.  (line  85)
4358*89a07cf8Schristos* .Y:                                    Built-in Registers.  (line  93)
4359*89a07cf8Schristos* .y:                                    Built-in Registers.  (line  89)
4360*89a07cf8Schristos* .z:                                    Diversions.          (line  61)
4361*89a07cf8Schristos* c.:                                    Built-in Registers.  (line  74)
4362*89a07cf8Schristos* ct:                                    Page Motions.        (line 152)
4363*89a07cf8Schristos* dl:                                    Diversions.          (line  87)
4364*89a07cf8Schristos* dn:                                    Diversions.          (line  86)
4365*89a07cf8Schristos* dw:                                    Built-in Registers.  (line  39)
4366*89a07cf8Schristos* dy:                                    Built-in Registers.  (line  42)
4367*89a07cf8Schristos* FAM [ms]:                              ms Document Control Registers.
4368*89a07cf8Schristos                                                              (line 110)
4369*89a07cf8Schristos* FF [ms]:                               ms Document Control Registers.
4370*89a07cf8Schristos                                                              (line 184)
4371*89a07cf8Schristos* FI [ms]:                               ms Document Control Registers.
4372*89a07cf8Schristos                                                              (line 177)
4373*89a07cf8Schristos* FL [ms]:                               ms Document Control Registers.
4374*89a07cf8Schristos                                                              (line 170)
4375*89a07cf8Schristos* FM [ms]:                               ms Document Control Registers.
4376*89a07cf8Schristos                                                              (line  47)
4377*89a07cf8Schristos* FPD [ms]:                              ms Document Control Registers.
4378*89a07cf8Schristos                                                              (line 221)
4379*89a07cf8Schristos* FPS [ms]:                              ms Document Control Registers.
4380*89a07cf8Schristos                                                              (line 204)
4381*89a07cf8Schristos* FVS [ms]:                              ms Document Control Registers.
4382*89a07cf8Schristos                                                              (line 212)
4383*89a07cf8Schristos* GROWPS [ms]:                           ms Document Control Registers.
4384*89a07cf8Schristos                                                              (line  88)
4385*89a07cf8Schristos* GS [ms]:                               Differences from AT&T ms.
4386*89a07cf8Schristos                                                              (line  46)
4387*89a07cf8Schristos* HM [ms]:                               ms Document Control Registers.
4388*89a07cf8Schristos                                                              (line  40)
4389*89a07cf8Schristos* HORPHANS [ms]:                         ms Document Control Registers.
4390*89a07cf8Schristos                                                              (line 154)
4391*89a07cf8Schristos* hours:                                 Built-in Registers.  (line  35)
4392*89a07cf8Schristos* hp:                                    Page Motions.        (line 211)
4393*89a07cf8Schristos* HY [ms]:                               ms Document Control Registers.
4394*89a07cf8Schristos                                                              (line 101)
4395*89a07cf8Schristos* LL [ms]:                               ms Document Control Registers.
4396*89a07cf8Schristos                                                              (line  25)
4397*89a07cf8Schristos* llx:                                   Miscellaneous.       (line 142)
4398*89a07cf8Schristos* lly:                                   Miscellaneous.       (line 143)
4399*89a07cf8Schristos* ln:                                    Built-in Registers.  (line  79)
4400*89a07cf8Schristos* LT [ms]:                               ms Document Control Registers.
4401*89a07cf8Schristos                                                              (line  32)
4402*89a07cf8Schristos* MINGW [ms] <1>:                        Additional ms Macros.
4403*89a07cf8Schristos                                                              (line  28)
4404*89a07cf8Schristos* MINGW [ms]:                            ms Document Control Registers.
4405*89a07cf8Schristos                                                              (line 231)
4406*89a07cf8Schristos* minutes:                               Built-in Registers.  (line  31)
4407*89a07cf8Schristos* mo:                                    Built-in Registers.  (line  45)
4408*89a07cf8Schristos* nl:                                    Page Control.        (line  68)
4409*89a07cf8Schristos* opmaxx:                                Suppressing output.  (line  19)
4410*89a07cf8Schristos* opmaxy:                                Suppressing output.  (line  19)
4411*89a07cf8Schristos* opminx:                                Suppressing output.  (line  19)
4412*89a07cf8Schristos* opminy:                                Suppressing output.  (line  19)
4413*89a07cf8Schristos* PD [ms]:                               ms Document Control Registers.
4414*89a07cf8Schristos                                                              (line 127)
4415*89a07cf8Schristos* PI [ms]:                               ms Document Control Registers.
4416*89a07cf8Schristos                                                              (line 120)
4417*89a07cf8Schristos* PO [ms]:                               ms Document Control Registers.
4418*89a07cf8Schristos                                                              (line  16)
4419*89a07cf8Schristos* PORPHANS [ms]:                         ms Document Control Registers.
4420*89a07cf8Schristos                                                              (line 142)
4421*89a07cf8Schristos* PS [ms]:                               ms Document Control Registers.
4422*89a07cf8Schristos                                                              (line  57)
4423*89a07cf8Schristos* ps4html [grohtml]:                     grohtml specific registers and strings.
4424*89a07cf8Schristos                                                              (line   7)
4425*89a07cf8Schristos* PSINCR [ms]:                           ms Document Control Registers.
4426*89a07cf8Schristos                                                              (line  77)
4427*89a07cf8Schristos* QI [ms]:                               ms Document Control Registers.
4428*89a07cf8Schristos                                                              (line 134)
4429*89a07cf8Schristos* rsb:                                   Page Motions.        (line 151)
4430*89a07cf8Schristos* rst:                                   Page Motions.        (line 150)
4431*89a07cf8Schristos* sb:                                    Page Motions.        (line 149)
4432*89a07cf8Schristos* seconds:                               Built-in Registers.  (line  26)
4433*89a07cf8Schristos* skw:                                   Page Motions.        (line 154)
4434*89a07cf8Schristos* slimit:                                Debugging.           (line 119)
4435*89a07cf8Schristos* ssc:                                   Page Motions.        (line 153)
4436*89a07cf8Schristos* st:                                    Page Motions.        (line 148)
4437*89a07cf8Schristos* systat:                                I/O.                 (line 161)
4438*89a07cf8Schristos* urx:                                   Miscellaneous.       (line 144)
4439*89a07cf8Schristos* ury:                                   Miscellaneous.       (line 145)
4440*89a07cf8Schristos* VS [ms]:                               ms Document Control Registers.
4441*89a07cf8Schristos                                                              (line  67)
4442*89a07cf8Schristos* year:                                  Built-in Registers.  (line  48)
4443*89a07cf8Schristos* yr:                                    Built-in Registers.  (line  51)
4444*89a07cf8Schristos
4445*89a07cf8Schristos
4446*89a07cf8SchristosFile: groff,  Node: Macro Index,  Next: String Index,  Prev: Register Index,  Up: Top
4447*89a07cf8Schristos
4448*89a07cf8SchristosAppendix F Macro Index
4449*89a07cf8Schristos**********************
4450*89a07cf8Schristos
4451*89a07cf8SchristosThe macro package a specific macro belongs to is appended in brackets.
4452*89a07cf8SchristosThey appear without the leading control character (normally `.').
4453*89a07cf8Schristos
4454*89a07cf8Schristos�[index�]
4455*89a07cf8Schristos* Menu:
4456*89a07cf8Schristos
4457*89a07cf8Schristos* 1C [ms]:                               ms Multiple Columns. (line  13)
4458*89a07cf8Schristos* 2C [ms]:                               ms Multiple Columns. (line  16)
4459*89a07cf8Schristos* [ [ms]:                                ms Insertions.       (line  33)
4460*89a07cf8Schristos* ] [ms]:                                ms Insertions.       (line  34)
4461*89a07cf8Schristos* AB [ms]:                               ms Cover Page Macros.
4462*89a07cf8Schristos                                                              (line  60)
4463*89a07cf8Schristos* AE [ms]:                               ms Cover Page Macros.
4464*89a07cf8Schristos                                                              (line  65)
4465*89a07cf8Schristos* AI [ms]:                               ms Cover Page Macros.
4466*89a07cf8Schristos                                                              (line  56)
4467*89a07cf8Schristos* AM [ms] <1>:                           Additional ms Macros.
4468*89a07cf8Schristos                                                              (line  10)
4469*89a07cf8Schristos* AM [ms]:                               ms Strings and Special Characters.
4470*89a07cf8Schristos                                                              (line  51)
4471*89a07cf8Schristos* AT [man]:                              Miscellaneous man macros.
4472*89a07cf8Schristos                                                              (line  26)
4473*89a07cf8Schristos* AU [ms]:                               ms Cover Page Macros.
4474*89a07cf8Schristos                                                              (line  38)
4475*89a07cf8Schristos* B [man]:                               Man font macros.     (line  48)
4476*89a07cf8Schristos* B [ms]:                                Highlighting in ms.  (line  10)
4477*89a07cf8Schristos* B1 [ms]:                               ms Displays and Keeps.
4478*89a07cf8Schristos                                                              (line  94)
4479*89a07cf8Schristos* B2 [ms]:                               ms Displays and Keeps.
4480*89a07cf8Schristos                                                              (line  95)
4481*89a07cf8Schristos* BD [ms]:                               ms Displays and Keeps.
4482*89a07cf8Schristos                                                              (line  31)
4483*89a07cf8Schristos* BI [man]:                              Man font macros.     (line  18)
4484*89a07cf8Schristos* BI [ms]:                               Highlighting in ms.  (line  39)
4485*89a07cf8Schristos* BR [man]:                              Man font macros.     (line  40)
4486*89a07cf8Schristos* BT [man]:                              Optional man extensions.
4487*89a07cf8Schristos                                                              (line  21)
4488*89a07cf8Schristos* BX [ms]:                               Highlighting in ms.  (line  43)
4489*89a07cf8Schristos* CD [ms]:                               ms Displays and Keeps.
4490*89a07cf8Schristos                                                              (line  41)
4491*89a07cf8Schristos* CT [man]:                              Optional man extensions.
4492*89a07cf8Schristos                                                              (line  36)
4493*89a07cf8Schristos* CW [man]:                              Optional man extensions.
4494*89a07cf8Schristos                                                              (line  39)
4495*89a07cf8Schristos* CW [ms] <1>:                           Additional ms Macros.
4496*89a07cf8Schristos                                                              (line  19)
4497*89a07cf8Schristos* CW [ms]:                               Highlighting in ms.  (line  35)
4498*89a07cf8Schristos* DA [ms]:                               ms Cover Page Macros.
4499*89a07cf8Schristos                                                              (line  23)
4500*89a07cf8Schristos* De [man]:                              Optional man extensions.
4501*89a07cf8Schristos                                                              (line  45)
4502*89a07cf8Schristos* De [ms]:                               ms Displays and Keeps.
4503*89a07cf8Schristos                                                              (line  57)
4504*89a07cf8Schristos* DE [ms]:                               ms Displays and Keeps.
4505*89a07cf8Schristos                                                              (line  16)
4506*89a07cf8Schristos* Ds [man]:                              Optional man extensions.
4507*89a07cf8Schristos                                                              (line  42)
4508*89a07cf8Schristos* DS [ms]:                               Additional ms Macros.
4509*89a07cf8Schristos                                                              (line  14)
4510*89a07cf8Schristos* Ds [ms]:                               ms Displays and Keeps.
4511*89a07cf8Schristos                                                              (line  56)
4512*89a07cf8Schristos* DS [ms]:                               ms Displays and Keeps.
4513*89a07cf8Schristos                                                              (line  14)
4514*89a07cf8Schristos* DT [man]:                              Miscellaneous man macros.
4515*89a07cf8Schristos                                                              (line  10)
4516*89a07cf8Schristos* EE [man]:                              Optional man extensions.
4517*89a07cf8Schristos                                                              (line  52)
4518*89a07cf8Schristos* EF [ms]:                               ms Headers and Footers.
4519*89a07cf8Schristos                                                              (line  26)
4520*89a07cf8Schristos* EH [ms]:                               ms Headers and Footers.
4521*89a07cf8Schristos                                                              (line  24)
4522*89a07cf8Schristos* EN [ms]:                               ms Insertions.       (line  28)
4523*89a07cf8Schristos* EQ [ms]:                               ms Insertions.       (line  27)
4524*89a07cf8Schristos* EX [man]:                              Optional man extensions.
4525*89a07cf8Schristos                                                              (line  48)
4526*89a07cf8Schristos* FE [ms]:                               ms Footnotes.        (line  15)
4527*89a07cf8Schristos* FS [ms]:                               ms Footnotes.        (line  14)
4528*89a07cf8Schristos* G [man]:                               Optional man extensions.
4529*89a07cf8Schristos                                                              (line  55)
4530*89a07cf8Schristos* GL [man]:                              Optional man extensions.
4531*89a07cf8Schristos                                                              (line  60)
4532*89a07cf8Schristos* HB [man]:                              Optional man extensions.
4533*89a07cf8Schristos                                                              (line  65)
4534*89a07cf8Schristos* HP [man]:                              Man usage.           (line  98)
4535*89a07cf8Schristos* I [man]:                               Man font macros.     (line  53)
4536*89a07cf8Schristos* I [ms]:                                Highlighting in ms.  (line  31)
4537*89a07cf8Schristos* IB [man]:                              Man font macros.     (line  28)
4538*89a07cf8Schristos* ID [ms]:                               ms Displays and Keeps.
4539*89a07cf8Schristos                                                              (line  23)
4540*89a07cf8Schristos* IP [man]:                              Man usage.           (line  78)
4541*89a07cf8Schristos* IP [ms]:                               Lists in ms.         (line   9)
4542*89a07cf8Schristos* IR [man]:                              Man font macros.     (line  36)
4543*89a07cf8Schristos* IX [ms]:                               Additional ms Macros.
4544*89a07cf8Schristos                                                              (line  22)
4545*89a07cf8Schristos* KE [ms]:                               ms Displays and Keeps.
4546*89a07cf8Schristos                                                              (line  73)
4547*89a07cf8Schristos* KF [ms]:                               ms Displays and Keeps.
4548*89a07cf8Schristos                                                              (line  77)
4549*89a07cf8Schristos* KS [ms]:                               ms Displays and Keeps.
4550*89a07cf8Schristos                                                              (line  72)
4551*89a07cf8Schristos* LD [ms]:                               ms Displays and Keeps.
4552*89a07cf8Schristos                                                              (line  15)
4553*89a07cf8Schristos* LG [ms]:                               Highlighting in ms.  (line  52)
4554*89a07cf8Schristos* LP [man]:                              Man usage.           (line  68)
4555*89a07cf8Schristos* LP [ms]:                               Paragraphs in ms.    (line  10)
4556*89a07cf8Schristos* MC [ms]:                               ms Multiple Columns. (line  19)
4557*89a07cf8Schristos* MS [man]:                              Optional man extensions.
4558*89a07cf8Schristos                                                              (line  73)
4559*89a07cf8Schristos* ND [ms]:                               ms Cover Page Macros.
4560*89a07cf8Schristos                                                              (line  28)
4561*89a07cf8Schristos* NE [man]:                              Optional man extensions.
4562*89a07cf8Schristos                                                              (line  85)
4563*89a07cf8Schristos* NH [ms]:                               Headings in ms.      (line  13)
4564*89a07cf8Schristos* NL [ms]:                               Highlighting in ms.  (line  64)
4565*89a07cf8Schristos* NT [man]:                              Optional man extensions.
4566*89a07cf8Schristos                                                              (line  78)
4567*89a07cf8Schristos* OF [ms]:                               ms Headers and Footers.
4568*89a07cf8Schristos                                                              (line  25)
4569*89a07cf8Schristos* OH [ms]:                               ms Headers and Footers.
4570*89a07cf8Schristos                                                              (line  23)
4571*89a07cf8Schristos* P [man]:                               Man usage.           (line  70)
4572*89a07cf8Schristos* P1 [ms]:                               ms Cover Page Macros.
4573*89a07cf8Schristos                                                              (line  19)
4574*89a07cf8Schristos* PD [man]:                              Miscellaneous man macros.
4575*89a07cf8Schristos                                                              (line  15)
4576*89a07cf8Schristos* PE [ms]:                               ms Insertions.       (line  21)
4577*89a07cf8Schristos* Pn [man]:                              Optional man extensions.
4578*89a07cf8Schristos                                                              (line  92)
4579*89a07cf8Schristos* PN [man]:                              Optional man extensions.
4580*89a07cf8Schristos                                                              (line  88)
4581*89a07cf8Schristos* PP [man]:                              Man usage.           (line  69)
4582*89a07cf8Schristos* PP [ms]:                               Paragraphs in ms.    (line   9)
4583*89a07cf8Schristos* PS [ms]:                               ms Insertions.       (line  20)
4584*89a07cf8Schristos* PT [man]:                              Optional man extensions.
4585*89a07cf8Schristos                                                              (line  16)
4586*89a07cf8Schristos* PX [ms]:                               ms TOC.              (line  65)
4587*89a07cf8Schristos* QP [ms]:                               Paragraphs in ms.    (line  13)
4588*89a07cf8Schristos* R [man]:                               Optional man extensions.
4589*89a07cf8Schristos                                                              (line  98)
4590*89a07cf8Schristos* R [ms]:                                Highlighting in ms.  (line  27)
4591*89a07cf8Schristos* RB [man]:                              Man font macros.     (line  44)
4592*89a07cf8Schristos* RD [ms]:                               ms Displays and Keeps.
4593*89a07cf8Schristos                                                              (line  49)
4594*89a07cf8Schristos* RE [man]:                              Man usage.           (line 115)
4595*89a07cf8Schristos* RE [ms]:                               Indentation values in ms.
4596*89a07cf8Schristos                                                              (line  12)
4597*89a07cf8Schristos* RI [man]:                              Man font macros.     (line  32)
4598*89a07cf8Schristos* RN [man]:                              Optional man extensions.
4599*89a07cf8Schristos                                                              (line 101)
4600*89a07cf8Schristos* RP [ms]:                               ms Cover Page Macros.
4601*89a07cf8Schristos                                                              (line  10)
4602*89a07cf8Schristos* RS [man]:                              Man usage.           (line 106)
4603*89a07cf8Schristos* RS [ms]:                               Indentation values in ms.
4604*89a07cf8Schristos                                                              (line  11)
4605*89a07cf8Schristos* SB [man]:                              Man font macros.     (line  14)
4606*89a07cf8Schristos* SH [man]:                              Man usage.           (line  32)
4607*89a07cf8Schristos* SH [ms]:                               Headings in ms.      (line  43)
4608*89a07cf8Schristos* SM [man]:                              Man font macros.     (line  10)
4609*89a07cf8Schristos* SM [ms]:                               Highlighting in ms.  (line  58)
4610*89a07cf8Schristos* SS [man]:                              Man usage.           (line  41)
4611*89a07cf8Schristos* TA [ms]:                               Tabstops in ms.      (line  10)
4612*89a07cf8Schristos* TB [man]:                              Optional man extensions.
4613*89a07cf8Schristos                                                              (line  70)
4614*89a07cf8Schristos* TC [ms]:                               ms TOC.              (line  55)
4615*89a07cf8Schristos* TE [ms]:                               ms Insertions.       (line  12)
4616*89a07cf8Schristos* TH [man]:                              Man usage.           (line  11)
4617*89a07cf8Schristos* TL [ms]:                               ms Cover Page Macros.
4618*89a07cf8Schristos                                                              (line  33)
4619*89a07cf8Schristos* TP [man]:                              Man usage.           (line  49)
4620*89a07cf8Schristos* TS [ms]:                               ms Insertions.       (line  11)
4621*89a07cf8Schristos* UC [man]:                              Miscellaneous man macros.
4622*89a07cf8Schristos                                                              (line  43)
4623*89a07cf8Schristos* UL [ms]:                               Highlighting in ms.  (line  47)
4624*89a07cf8Schristos* VE [man]:                              Optional man extensions.
4625*89a07cf8Schristos                                                              (line 108)
4626*89a07cf8Schristos* VS [man]:                              Optional man extensions.
4627*89a07cf8Schristos                                                              (line 104)
4628*89a07cf8Schristos* XA [ms]:                               ms TOC.              (line  13)
4629*89a07cf8Schristos* XE [ms]:                               ms TOC.              (line  14)
4630*89a07cf8Schristos* XP [ms]:                               Paragraphs in ms.    (line  18)
4631*89a07cf8Schristos* XS [ms]:                               ms TOC.              (line  12)
4632*89a07cf8Schristos
4633*89a07cf8Schristos
4634*89a07cf8SchristosFile: groff,  Node: String Index,  Next: Glyph Name Index,  Prev: Macro Index,  Up: Top
4635*89a07cf8Schristos
4636*89a07cf8SchristosAppendix G String Index
4637*89a07cf8Schristos***********************
4638*89a07cf8Schristos
4639*89a07cf8SchristosThe macro package or program a specific string belongs to is appended in
4640*89a07cf8Schristosbrackets.
4641*89a07cf8Schristos
4642*89a07cf8Schristos   A string name `x' consisting of exactly one character can be
4643*89a07cf8Schristosaccessed as `\*x'.  A string name `xx' consisting of exactly two
4644*89a07cf8Schristoscharacters can be accessed as `\*(xx'.  String names `xxx' of any
4645*89a07cf8Schristoslength can be accessed as `\*[xxx]'.
4646*89a07cf8Schristos
4647*89a07cf8Schristos�[index�]
4648*89a07cf8Schristos* Menu:
4649*89a07cf8Schristos
4650*89a07cf8Schristos* ! [ms]:                                ms Strings and Special Characters.
4651*89a07cf8Schristos                                                              (line 101)
4652*89a07cf8Schristos* ' [ms]:                                ms Strings and Special Characters.
4653*89a07cf8Schristos                                                              (line  65)
4654*89a07cf8Schristos* * [ms]:                                ms Footnotes.        (line  11)
4655*89a07cf8Schristos* , [ms]:                                ms Strings and Special Characters.
4656*89a07cf8Schristos                                                              (line  74)
4657*89a07cf8Schristos* - [ms]:                                ms Strings and Special Characters.
4658*89a07cf8Schristos                                                              (line  41)
4659*89a07cf8Schristos* . [ms]:                                ms Strings and Special Characters.
4660*89a07cf8Schristos                                                              (line  89)
4661*89a07cf8Schristos* .T:                                    Built-in Registers.  (line 119)
4662*89a07cf8Schristos* 3 [ms]:                                ms Strings and Special Characters.
4663*89a07cf8Schristos                                                              (line 107)
4664*89a07cf8Schristos* 8 [ms]:                                ms Strings and Special Characters.
4665*89a07cf8Schristos                                                              (line 104)
4666*89a07cf8Schristos* ? [ms]:                                ms Strings and Special Characters.
4667*89a07cf8Schristos                                                              (line  98)
4668*89a07cf8Schristos* \*[<colon>] [ms]:                      ms Strings and Special Characters.
4669*89a07cf8Schristos                                                              (line  80)
4670*89a07cf8Schristos* ^ [ms]:                                ms Strings and Special Characters.
4671*89a07cf8Schristos                                                              (line  71)
4672*89a07cf8Schristos* _ [ms]:                                ms Strings and Special Characters.
4673*89a07cf8Schristos                                                              (line  86)
4674*89a07cf8Schristos* ` [ms]:                                ms Strings and Special Characters.
4675*89a07cf8Schristos                                                              (line  68)
4676*89a07cf8Schristos* ABSTRACT [ms]:                         ms Strings and Special Characters.
4677*89a07cf8Schristos                                                              (line  15)
4678*89a07cf8Schristos* Ae [ms]:                               ms Strings and Special Characters.
4679*89a07cf8Schristos                                                              (line 128)
4680*89a07cf8Schristos* ae [ms]:                               ms Strings and Special Characters.
4681*89a07cf8Schristos                                                              (line 125)
4682*89a07cf8Schristos* CF [ms]:                               ms Headers and Footers.
4683*89a07cf8Schristos                                                              (line  16)
4684*89a07cf8Schristos* CH [ms]:                               ms Headers and Footers.
4685*89a07cf8Schristos                                                              (line  11)
4686*89a07cf8Schristos* d- [ms]:                               ms Strings and Special Characters.
4687*89a07cf8Schristos                                                              (line 119)
4688*89a07cf8Schristos* D- [ms]:                               ms Strings and Special Characters.
4689*89a07cf8Schristos                                                              (line 116)
4690*89a07cf8Schristos* HF [man]:                              Predefined man strings.
4691*89a07cf8Schristos                                                              (line  12)
4692*89a07cf8Schristos* LF [ms]:                               ms Headers and Footers.
4693*89a07cf8Schristos                                                              (line  15)
4694*89a07cf8Schristos* LH [ms]:                               ms Headers and Footers.
4695*89a07cf8Schristos                                                              (line  10)
4696*89a07cf8Schristos* lq [man]:                              Predefined man strings.
4697*89a07cf8Schristos                                                              (line  21)
4698*89a07cf8Schristos* MONTH1 [ms]:                           ms Strings and Special Characters.
4699*89a07cf8Schristos                                                              (line  23)
4700*89a07cf8Schristos* MONTH10 [ms]:                          ms Strings and Special Characters.
4701*89a07cf8Schristos                                                              (line  32)
4702*89a07cf8Schristos* MONTH11 [ms]:                          ms Strings and Special Characters.
4703*89a07cf8Schristos                                                              (line  33)
4704*89a07cf8Schristos* MONTH12 [ms]:                          ms Strings and Special Characters.
4705*89a07cf8Schristos                                                              (line  34)
4706*89a07cf8Schristos* MONTH2 [ms]:                           ms Strings and Special Characters.
4707*89a07cf8Schristos                                                              (line  24)
4708*89a07cf8Schristos* MONTH3 [ms]:                           ms Strings and Special Characters.
4709*89a07cf8Schristos                                                              (line  25)
4710*89a07cf8Schristos* MONTH4 [ms]:                           ms Strings and Special Characters.
4711*89a07cf8Schristos                                                              (line  26)
4712*89a07cf8Schristos* MONTH5 [ms]:                           ms Strings and Special Characters.
4713*89a07cf8Schristos                                                              (line  27)
4714*89a07cf8Schristos* MONTH6 [ms]:                           ms Strings and Special Characters.
4715*89a07cf8Schristos                                                              (line  28)
4716*89a07cf8Schristos* MONTH7 [ms]:                           ms Strings and Special Characters.
4717*89a07cf8Schristos                                                              (line  29)
4718*89a07cf8Schristos* MONTH8 [ms]:                           ms Strings and Special Characters.
4719*89a07cf8Schristos                                                              (line  30)
4720*89a07cf8Schristos* MONTH9 [ms]:                           ms Strings and Special Characters.
4721*89a07cf8Schristos                                                              (line  31)
4722*89a07cf8Schristos* o [ms]:                                ms Strings and Special Characters.
4723*89a07cf8Schristos                                                              (line  92)
4724*89a07cf8Schristos* q [ms]:                                ms Strings and Special Characters.
4725*89a07cf8Schristos                                                              (line 122)
4726*89a07cf8Schristos* Q [ms]:                                ms Strings and Special Characters.
4727*89a07cf8Schristos                                                              (line  44)
4728*89a07cf8Schristos* R [man]:                               Predefined man strings.
4729*89a07cf8Schristos                                                              (line  15)
4730*89a07cf8Schristos* REFERENCES [ms]:                       ms Strings and Special Characters.
4731*89a07cf8Schristos                                                              (line  11)
4732*89a07cf8Schristos* RF [ms]:                               ms Headers and Footers.
4733*89a07cf8Schristos                                                              (line  17)
4734*89a07cf8Schristos* RH [ms]:                               ms Headers and Footers.
4735*89a07cf8Schristos                                                              (line  12)
4736*89a07cf8Schristos* rq [man]:                              Predefined man strings.
4737*89a07cf8Schristos                                                              (line  22)
4738*89a07cf8Schristos* S [man]:                               Predefined man strings.
4739*89a07cf8Schristos                                                              (line   9)
4740*89a07cf8Schristos* SN [ms]:                               Headings in ms.      (line  22)
4741*89a07cf8Schristos* SN-DOT [ms]:                           Headings in ms.      (line  23)
4742*89a07cf8Schristos* SN-NO-DOT [ms]:                        Headings in ms.      (line  24)
4743*89a07cf8Schristos* th [ms]:                               ms Strings and Special Characters.
4744*89a07cf8Schristos                                                              (line 113)
4745*89a07cf8Schristos* Th [ms]:                               ms Strings and Special Characters.
4746*89a07cf8Schristos                                                              (line 110)
4747*89a07cf8Schristos* Tm [man]:                              Predefined man strings.
4748*89a07cf8Schristos                                                              (line  18)
4749*89a07cf8Schristos* TOC [ms]:                              ms Strings and Special Characters.
4750*89a07cf8Schristos                                                              (line  19)
4751*89a07cf8Schristos* U [ms]:                                ms Strings and Special Characters.
4752*89a07cf8Schristos                                                              (line  45)
4753*89a07cf8Schristos* v [ms]:                                ms Strings and Special Characters.
4754*89a07cf8Schristos                                                              (line  83)
4755*89a07cf8Schristos* www-image-template [grohtml]:          grohtml specific registers and strings.
4756*89a07cf8Schristos                                                              (line   8)
4757*89a07cf8Schristos* { [ms]:                                Highlighting in ms.  (line  68)
4758*89a07cf8Schristos* } [ms]:                                Highlighting in ms.  (line  69)
4759*89a07cf8Schristos* ~ [ms]:                                ms Strings and Special Characters.
4760*89a07cf8Schristos                                                              (line  77)
4761*89a07cf8Schristos
4762*89a07cf8Schristos
4763*89a07cf8SchristosFile: groff,  Node: Glyph Name Index,  Next: Font File Keyword Index,  Prev: String Index,  Up: Top
4764*89a07cf8Schristos
4765*89a07cf8SchristosAppendix H Glyph Name Index
4766*89a07cf8Schristos***************************
4767*89a07cf8Schristos
4768*89a07cf8SchristosA glyph name `xx' consisting of exactly two characters can be accessed
4769*89a07cf8Schristosas `\(xx'.  Glyph names `xxx' of any length can be accessed as `\[xxx]'.
4770*89a07cf8Schristos
4771*89a07cf8Schristos
4772*89a07cf8SchristosFile: groff,  Node: Font File Keyword Index,  Next: Program and File Index,  Prev: Glyph Name Index,  Up: Top
4773*89a07cf8Schristos
4774*89a07cf8SchristosAppendix I Font File Keyword Index
4775*89a07cf8Schristos**********************************
4776*89a07cf8Schristos
4777*89a07cf8Schristos�[index�]
4778*89a07cf8Schristos* Menu:
4779*89a07cf8Schristos
4780*89a07cf8Schristos* #:                                     Font File Format.    (line  36)
4781*89a07cf8Schristos* ---:                                   Font File Format.    (line  51)
4782*89a07cf8Schristos* biggestfont:                           DESC File Format.    (line 109)
4783*89a07cf8Schristos* charset <1>:                           Font File Format.    (line  44)
4784*89a07cf8Schristos* charset:                               DESC File Format.    (line 101)
4785*89a07cf8Schristos* family <1>:                            DESC File Format.    (line  64)
4786*89a07cf8Schristos* family <2>:                            Font Positions.      (line  61)
4787*89a07cf8Schristos* family:                                Changing Fonts.      (line  11)
4788*89a07cf8Schristos* fonts <1>:                             DESC File Format.    (line  58)
4789*89a07cf8Schristos* fonts <2>:                             Special Fonts.       (line  18)
4790*89a07cf8Schristos* fonts:                                 Using Symbols.       (line  15)
4791*89a07cf8Schristos* hor:                                   DESC File Format.    (line  14)
4792*89a07cf8Schristos* kernpairs:                             Font File Format.    (line 135)
4793*89a07cf8Schristos* ligatures:                             Font File Format.    (line  22)
4794*89a07cf8Schristos* name:                                  Font File Format.    (line  12)
4795*89a07cf8Schristos* papersize:                             DESC File Format.    (line  72)
4796*89a07cf8Schristos* pass_filenames:                        DESC File Format.    (line  92)
4797*89a07cf8Schristos* postpro:                               DESC File Format.    (line  36)
4798*89a07cf8Schristos* prepro:                                DESC File Format.    (line  32)
4799*89a07cf8Schristos* print:                                 DESC File Format.    (line  97)
4800*89a07cf8Schristos* res:                                   DESC File Format.    (line  11)
4801*89a07cf8Schristos* sizes:                                 DESC File Format.    (line  49)
4802*89a07cf8Schristos* sizescale:                             DESC File Format.    (line  22)
4803*89a07cf8Schristos* slant:                                 Font File Format.    (line  18)
4804*89a07cf8Schristos* spacewidth:                            Font File Format.    (line  15)
4805*89a07cf8Schristos* spare1:                                DESC File Format.    (line 109)
4806*89a07cf8Schristos* spare2:                                DESC File Format.    (line 109)
4807*89a07cf8Schristos* special <1>:                           Font File Format.    (line  28)
4808*89a07cf8Schristos* special:                               Artificial Fonts.    (line 116)
4809*89a07cf8Schristos* styles <1>:                            DESC File Format.    (line  55)
4810*89a07cf8Schristos* styles <2>:                            Font Positions.      (line  61)
4811*89a07cf8Schristos* styles <3>:                            Font Families.       (line  76)
4812*89a07cf8Schristos* styles:                                Changing Fonts.      (line  11)
4813*89a07cf8Schristos* tcommand:                              DESC File Format.    (line  45)
4814*89a07cf8Schristos* unitwidth:                             DESC File Format.    (line  28)
4815*89a07cf8Schristos* use_charnames_in_special <1>:          DESC File Format.    (line  67)
4816*89a07cf8Schristos* use_charnames_in_special:              Postprocessor Access.
4817*89a07cf8Schristos                                                              (line  17)
4818*89a07cf8Schristos* vert:                                  DESC File Format.    (line  18)
4819*89a07cf8Schristos
4820*89a07cf8Schristos
4821*89a07cf8SchristosFile: groff,  Node: Program and File Index,  Next: Concept Index,  Prev: Font File Keyword Index,  Up: Top
4822*89a07cf8Schristos
4823*89a07cf8SchristosAppendix J Program and File Index
4824*89a07cf8Schristos*********************************
4825*89a07cf8Schristos
4826*89a07cf8Schristos�[index�]
4827*89a07cf8Schristos* Menu:
4828*89a07cf8Schristos
4829*89a07cf8Schristos* an.tmac:                               man.                 (line   6)
4830*89a07cf8Schristos* changebar:                             Miscellaneous.       (line 111)
4831*89a07cf8Schristos* composite.tmac:                        Using Symbols.       (line 197)
4832*89a07cf8Schristos* cp1047.tmac:                           Input Encodings.     (line   9)
4833*89a07cf8Schristos* DESC <1>:                              Special Fonts.       (line  18)
4834*89a07cf8Schristos* DESC <2>:                              Using Symbols.       (line  15)
4835*89a07cf8Schristos* DESC <3>:                              Font Positions.      (line  61)
4836*89a07cf8Schristos* DESC <4>:                              Font Families.       (line  76)
4837*89a07cf8Schristos* DESC:                                  Changing Fonts.      (line  11)
4838*89a07cf8Schristos* DESC file format:                      DESC File Format.    (line   6)
4839*89a07cf8Schristos* DESC, and font mounting:               Font Positions.      (line  37)
4840*89a07cf8Schristos* DESC, and use_charnames_in_special:    Postprocessor Access.
4841*89a07cf8Schristos                                                              (line  17)
4842*89a07cf8Schristos* ditroff:                               History.             (line  58)
4843*89a07cf8Schristos* ec.tmac:                               Input Encodings.     (line  41)
4844*89a07cf8Schristos* eqn:                                   ms Insertions.       (line   7)
4845*89a07cf8Schristos* freeeuro.pfa:                          Input Encodings.     (line  41)
4846*89a07cf8Schristos* geqn:                                  Groff Options.       (line   6)
4847*89a07cf8Schristos* geqn, invocation in manual pages:      Preprocessors in man pages.
4848*89a07cf8Schristos                                                              (line  12)
4849*89a07cf8Schristos* ggrn:                                  Groff Options.       (line   6)
4850*89a07cf8Schristos* gpic:                                  Groff Options.       (line   6)
4851*89a07cf8Schristos* grap:                                  Groff Options.       (line   6)
4852*89a07cf8Schristos* grefer:                                Groff Options.       (line   6)
4853*89a07cf8Schristos* grefer, invocation in manual pages:    Preprocessors in man pages.
4854*89a07cf8Schristos                                                              (line  12)
4855*89a07cf8Schristos* groff:                                 Groff Options.       (line   6)
4856*89a07cf8Schristos* grog:                                  grog.                (line   6)
4857*89a07cf8Schristos* grohtml:                               Miscellaneous man macros.
4858*89a07cf8Schristos                                                              (line   6)
4859*89a07cf8Schristos* gsoelim:                               Groff Options.       (line   6)
4860*89a07cf8Schristos* gtbl:                                  Groff Options.       (line   6)
4861*89a07cf8Schristos* gtbl, invocation in manual pages:      Preprocessors in man pages.
4862*89a07cf8Schristos                                                              (line  12)
4863*89a07cf8Schristos* gtroff:                                Groff Options.       (line   6)
4864*89a07cf8Schristos* hyphen.us:                             Manipulating Hyphenation.
4865*89a07cf8Schristos                                                              (line 161)
4866*89a07cf8Schristos* hyphenex.us:                           Manipulating Hyphenation.
4867*89a07cf8Schristos                                                              (line 161)
4868*89a07cf8Schristos* latin1.tmac:                           Input Encodings.     (line  14)
4869*89a07cf8Schristos* latin2.tmac:                           Input Encodings.     (line  18)
4870*89a07cf8Schristos* latin9.tmac:                           Input Encodings.     (line  23)
4871*89a07cf8Schristos* makeindex:                             Indices.             (line  10)
4872*89a07cf8Schristos* man, invocation of preprocessors:      Preprocessors in man pages.
4873*89a07cf8Schristos                                                              (line  12)
4874*89a07cf8Schristos* man-old.tmac:                          man.                 (line   6)
4875*89a07cf8Schristos* man.local <1>:                         Optional man extensions.
4876*89a07cf8Schristos                                                              (line   6)
4877*89a07cf8Schristos* man.local:                             Man usage.           (line   6)
4878*89a07cf8Schristos* man.tmac:                              man.                 (line   6)
4879*89a07cf8Schristos* man.ultrix:                            Optional man extensions.
4880*89a07cf8Schristos                                                              (line  30)
4881*89a07cf8Schristos* nrchbar:                               Miscellaneous.       (line 111)
4882*89a07cf8Schristos* papersize.tmac:                        Paper Size.          (line  16)
4883*89a07cf8Schristos* perl:                                  I/O.                 (line 171)
4884*89a07cf8Schristos* pic:                                   ms Insertions.       (line   7)
4885*89a07cf8Schristos* post-grohtml:                          Groff Options.       (line 165)
4886*89a07cf8Schristos* pre-grohtml:                           Groff Options.       (line 165)
4887*89a07cf8Schristos* refer:                                 ms Insertions.       (line   7)
4888*89a07cf8Schristos* soelim:                                Debugging.           (line  10)
4889*89a07cf8Schristos* tbl:                                   ms Insertions.       (line   7)
4890*89a07cf8Schristos* trace.tmac:                            Writing Macros.      (line 101)
4891*89a07cf8Schristos* troffrc <1>:                           Line Layout.         (line  64)
4892*89a07cf8Schristos* troffrc <2>:                           Troff and Nroff Mode.
4893*89a07cf8Schristos                                                              (line  24)
4894*89a07cf8Schristos* troffrc <3>:                           Manipulating Hyphenation.
4895*89a07cf8Schristos                                                              (line 161)
4896*89a07cf8Schristos* troffrc <4>:                           Paper Size.          (line  16)
4897*89a07cf8Schristos* troffrc:                               Groff Options.       (line  80)
4898*89a07cf8Schristos* troffrc-end <1>:                       Troff and Nroff Mode.
4899*89a07cf8Schristos                                                              (line  24)
4900*89a07cf8Schristos* troffrc-end <2>:                       Manipulating Hyphenation.
4901*89a07cf8Schristos                                                              (line 161)
4902*89a07cf8Schristos* troffrc-end:                           Groff Options.       (line  80)
4903*89a07cf8Schristos* tty.tmac:                              Troff and Nroff Mode.
4904*89a07cf8Schristos                                                              (line  32)
4905*89a07cf8Schristos
4906*89a07cf8Schristos
4907*89a07cf8Schristos
4908*89a07cf8SchristosLocal Variables:
4909*89a07cf8Schristoscoding: iso-8859-1
4910*89a07cf8SchristosEnd:
4911