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