1 ROFF(5) Standards, Environments, and Macros ROFF(5) 2 3 NAME 4 roff - roff language reference for mandoc 5 6 DESCRIPTION 7 The roff language is a general purpose text formatting language. Since 8 traditional implementations of the mdoc(5) and man(5) manual formatting 9 languages are based on it, many real-world manuals use small numbers of 10 roff requests and escape sequences intermixed with their mdoc(5) or 11 man(5) code. To properly format such manuals, the mandoc(1) utility 12 supports a tiny subset of roff requests and escapes. Only these requests 13 and escapes supported by mandoc(1) are documented in the present manual, 14 together with the basic language syntax shared by roff, mdoc(5), and 15 man(5). For complete roff manuals, consult the SEE ALSO section. 16 17 Input lines beginning with the control character `.' are parsed for 18 requests and macros. Such lines are called "request lines" or "macro 19 lines", respectively. Requests change the processing state and 20 manipulate the formatting; some macros also define the document structure 21 and produce formatted output. The single quote ("'") is accepted as an 22 alternative control character, treated by mandoc(1) just like `.' 23 24 Lines not beginning with control characters are called "text lines". 25 They provide free-form text to be printed; the formatting of the text 26 depends on the respective processing context. 27 28 LANGUAGE SYNTAX 29 roff documents may contain only graphable 7-bit ASCII characters, the 30 space character, and, in certain circumstances, the tab character. The 31 backslash character `\' indicates the start of an escape sequence, used 32 for example for Comments, Special Characters, Predefined Strings, and 33 user-defined strings defined using the ds request. For a listing of 34 escape sequences, consult the ESCAPE SEQUENCE REFERENCE below. 35 36 Comments 37 Text following an escaped double-quote `\"', whether in a request, macro, 38 or text line, is ignored to the end of the line. A request line 39 beginning with a control character and comment escape `.\"' is also 40 ignored. Furthermore, request lines with only a control character and 41 optional trailing whitespace are stripped from input. 42 43 Examples: 44 .\" This is a comment line. 45 .\" The next line is ignored: 46 . 47 .Sh EXAMPLES \" This is a comment, too. 48 example text \" And so is this. 49 50 Special Characters 51 Special characters are used to encode special glyphs and are rendered 52 differently across output media. They may occur in request, macro, and 53 text lines. Sequences begin with the escape character `\' followed by 54 either an open-parenthesis `(' for two-character sequences; an open- 55 bracket `[' for n-character sequences (terminated at a close-bracket 56 `]'); or a single one character sequence. 57 58 Examples: 59 \(em Two-letter em dash escape. 60 \e One-letter backslash escape. 61 62 See mandoc_char(5) for a complete list. 63 64 Text Decoration 65 Terms may be text-decorated using the `\f' escape followed by an 66 indicator: B (bold), I (italic), R (regular), or P (revert to previous 67 mode). A numerical representation 3, 2, or 1 (bold, italic, and regular, 68 respectively) may be used instead. The indicator or numerical 69 representative may be preceded by C (constant-width), which is ignored. 70 71 The two-character indicator `BI' requests a font that is both bold and 72 italic. It may not be portable to old roff implementations. 73 74 Examples: 75 \fBbold\fR 76 Write in bold, then switch to regular font mode. 77 \fIitalic\fP 78 Write in italic, then return to previous font mode. 79 \f(BIbold italic\fP 80 Write in bold italic, then return to previous font mode. 81 82 Text decoration is not recommended for mdoc(5), which encourages semantic 83 annotation. 84 85 Predefined Strings 86 Predefined strings, like Special Characters, mark special output glyphs. 87 Predefined strings are escaped with the slash-asterisk, `\*': single- 88 character `\*X', two-character `\*(XX', and N-character `\*[N]'. 89 90 Examples: 91 \*(Am Two-letter ampersand predefined string. 92 \*q One-letter double-quote predefined string. 93 94 Predefined strings are not recommended for use, as they differ across 95 implementations. Those supported by mandoc(1) are listed in 96 mandoc_char(5). Manuals using these predefined strings are almost 97 certainly not portable. 98 99 Whitespace 100 Whitespace consists of the space character. In text lines, whitespace is 101 preserved within a line. In request and macro lines, whitespace delimits 102 arguments and is discarded. 103 104 Unescaped trailing spaces are stripped from text line input unless in a 105 literal context. In general, trailing whitespace on any input line is 106 discouraged for reasons of portability. In the rare case that a blank 107 character is needed at the end of an input line, it may be forced by 108 `\ \&'. 109 110 Literal space characters can be produced in the output using escape 111 sequences. In macro lines, they can also be included in arguments using 112 quotation; see MACRO SYNTAX for details. 113 114 Blank text lines, which may include whitespace, are only permitted within 115 literal contexts. If the first character of a text line is a space, that 116 line is printed with a leading newline. 117 118 Scaling Widths 119 Many requests and macros support scaled widths for their arguments. The 120 syntax for a scaled width is `[+-]?[0-9]*.[0-9]*[:unit:]', where a 121 decimal must be preceded or followed by at least one digit. Negative 122 numbers, while accepted, are truncated to zero. 123 124 The following scaling units are accepted: 125 126 c centimetre 127 i inch 128 P pica (~1/6 inch) 129 p point (~1/72 inch) 130 f scale `u' by 65536 131 v default vertical span 132 m width of rendered `m' (em) character 133 n width of rendered `n' (en) character 134 u default horizontal span for the terminal 135 M mini-em (~1/100 em) 136 137 Using anything other than `m', `n', or `v' is necessarily non-portable 138 across output media. See COMPATIBILITY. 139 140 If a scaling unit is not provided, the numerical value is interpreted 141 under the default rules of `v' for vertical spaces and `u' for horizontal 142 ones. 143 144 Examples: 145 .Bl -tag -width 2i two-inch tagged list indentation in mdoc(5) 146 .HP 2i two-inch tagged list indentation in man(5) 147 .sp 2v two vertical spaces 148 149 Sentence Spacing 150 Each sentence should terminate at the end of an input line. By doing 151 this, a formatter will be able to apply the proper amount of spacing 152 after the end of sentence (unescaped) period, exclamation mark, or 153 question mark followed by zero or more non-sentence closing delimiters 154 (`)', `]', `'', `"'). 155 156 The proper spacing is also intelligently preserved if a sentence ends at 157 the boundary of a macro line. 158 159 Examples: 160 Do not end sentences mid-line like this. Instead, 161 end a sentence like this. 162 A macro would end like this: 163 .Xr mandoc 1 . 164 165 REQUEST SYNTAX 166 A request or macro line consists of: 167 168 1. the control character `.' or `'' at the beginning of the line, 169 2. optionally an arbitrary amount of whitespace, 170 3. the name of the request or the macro, which is one word of arbitrary 171 length, terminated by whitespace, 172 4. and zero or more arguments delimited by whitespace. 173 174 Thus, the following request lines are all equivalent: 175 176 .ig end 177 .ig end 178 . ig end 179 180 MACRO SYNTAX 181 Macros are provided by the mdoc(5) and man(5) languages and can be 182 defined by the de request. When called, they follow the same syntax as 183 requests, except that macro arguments may optionally be quoted by 184 enclosing them in double quote characters (`"'). Quoted text, even if it 185 contains whitespace or would cause a macro invocation when unquoted, is 186 always considered literal text. Inside quoted text, pairs of double 187 quote characters (`""') resolve to single double quote characters. 188 189 To be recognised as the beginning of a quoted argument, the opening quote 190 character must be preceded by a space character. A quoted argument 191 extends to the next double quote character that is not part of a pair, or 192 to the end of the input line, whichever comes earlier. Leaving out the 193 terminating double quote character at the end of the line is discouraged. 194 For clarity, if more arguments follow on the same input line, it is 195 recommended to follow the terminating double quote character by a space 196 character; in case the next character after the terminating double quote 197 character is anything else, it is regarded as the beginning of the next, 198 unquoted argument. 199 200 Both in quoted and unquoted arguments, pairs of backslashes (`\\') 201 resolve to single backslashes. In unquoted arguments, space characters 202 can alternatively be included by preceding them with a backslash (`\ '), 203 but quoting is usually better for clarity. 204 205 Examples: 206 .Fn strlen "const char *s" 207 Group arguments "const char *s" into one function argument. 208 If unspecified, "const", "char", and "*s" would be 209 considered separate arguments. 210 .Op "Fl a" 211 Consider "Fl a" as literal text instead of a flag macro. 212 213 REQUEST REFERENCE 214 The mandoc(1) roff parser recognises the following requests. For 215 requests marked as "ignored" or "unsupported", any arguments are ignored, 216 and the number of arguments is not checked. 217 218 ab [message] 219 Abort processing. Currently unsupported. 220 221 ad [b | c | l | n | r] 222 Set line adjustment mode for subsequent text. Currently ignored. 223 224 af registername format 225 Assign an output format to a number register. Currently ignored. 226 227 aln newname oldname 228 Create an alias for a number register. Currently unsupported. 229 230 als newname oldname 231 Create an alias for a request, string, macro, or diversion. 232 233 am macroname [endmacro] 234 Append to a macro definition. The syntax of this request is the 235 same as that of de. 236 237 am1 macroname [endmacro] 238 Append to a macro definition, switching roff compatibility mode 239 off during macro execution (groff extension). The syntax of this 240 request is the same as that of de1. Since mandoc(1) does not 241 implement roff compatibility mode at all, it handles this request 242 as an alias for am. 243 244 ami macrostring [endstring] 245 Append to a macro definition, specifying the macro name 246 indirectly (groff extension). The syntax of this request is the 247 same as that of dei. 248 249 ami1 macrostring [endstring] 250 Append to a macro definition, specifying the macro name 251 indirectly and switching roff compatibility mode off during macro 252 execution (groff extension). The syntax of this request is the 253 same as that of dei1. Since mandoc(1) does not implement roff 254 compatibility mode at all, it handles this request as an alias 255 for ami. 256 257 as stringname [string] 258 Append to a user-defined string. The syntax of this request is 259 the same as that of ds. If a user-defined string with the 260 specified name does not yet exist, it is set to the empty string 261 before appending. 262 263 as1 stringname [string] 264 Append to a user-defined string, switching roff compatibility 265 mode off during macro execution (groff extension). The syntax of 266 this request is the same as that of ds1. Since mandoc(1) does 267 not implement roff compatibility mode at all, it handles this 268 request as an alias for as. 269 270 asciify divname 271 Fully unformat a diversion. Currently unsupported. 272 273 backtrace 274 Print a backtrace of the input stack. This is a groff extension 275 and currently ignored. 276 277 bd font [curfont] [offset] 278 Artificially embolden by repeated printing with small shifts. 279 Currently ignored. 280 281 bleedat left top width height 282 Set the BleedBox page parameter for PDF generation. This is a 283 Heirloom extension and currently ignored. 284 285 blm macroname 286 Set a blank line trap. Currently unsupported. 287 288 box divname 289 Begin a diversion without including a partially filled line. 290 Currently unsupported. 291 292 boxa divname 293 Add to a diversion without including a partially filled line. 294 Currently unsupported. 295 296 bp [+|-]pagenumber 297 Begin a new page. Currently ignored. 298 299 BP source height width position offset flags label 300 Define a frame and place a picture in it. This is a Heirloom 301 extension and currently unsupported. 302 303 br Break the output line. 304 305 break Break out of a while loop. Currently unsupported. 306 307 breakchar char ... 308 Optional line break characters. This is a Heirloom extension and 309 currently ignored. 310 311 brnl N Break output line after the next N input lines. This is a 312 Heirloom extension and currently ignored. 313 314 brp Break and spread output line. Currently, this is implemented as 315 an alias for br. 316 317 brpnl N 318 Break and spread output line after the next N input lines. This 319 is a Heirloom extension and currently ignored. 320 321 c2 [char] 322 Change the no-break control character. Currently unsupported. 323 324 cc [char] 325 Change the control character. If char is not specified, the 326 control character is reset to `.'. Trailing characters are 327 ignored. 328 329 ce [N] Center the next N input lines without filling. N defaults to 1. 330 An argument of 0 or less ends centering. Currently, high level 331 macros abort centering. 332 333 cf filename 334 Output the contents of a file. Ignored because insecure. 335 336 cflags flags char ... 337 Set character flags. This is a groff extension and currently 338 ignored. 339 340 ch macroname [dist] 341 Change a trap location. Currently ignored. 342 343 char glyphname [string] 344 Define a new glyph. Currently unsupported. 345 346 chop stringname 347 Remove the last character from a macro, string, or diversion. 348 Currently unsupported. 349 350 class classname char ... 351 Define a character class. This is a groff extension and 352 currently ignored. 353 354 close streamname 355 Close an open file. Ignored because insecure. 356 357 CL color text 358 Print text in color. This is a Heirloom extension and currently 359 unsupported. 360 361 color [1 | 0] 362 Activate or deactivate colors. This is a groff extension and 363 currently ignored. 364 365 composite from to 366 Define a name component for composite glyph names. This is a 367 groff extension and currently unsupported. 368 369 continue 370 Immediately start the next iteration of a while loop. Currently 371 unsupported. 372 373 cp [1 | 0] 374 Switch roff compatibility mode on or off. Currently ignored. 375 376 cropat left top width height 377 Set the CropBox page parameter for PDF generation. This is a 378 Heirloom extension and currently ignored. 379 380 cs font [width [emsize]] 381 Constant character spacing mode. Currently ignored. 382 383 cu [N] Underline next N input lines including whitespace. Currently 384 ignored. 385 386 da divname 387 Append to a diversion. Currently unsupported. 388 389 dch macroname [dist] 390 Change a trap location in the current diversion. This is a 391 Heirloom extension and currently unsupported. 392 393 de macroname [endmacro] 394 Define a roff macro. Its syntax can be either 395 396 .de macroname 397 definition 398 .. 399 400 or 401 402 .de macroname endmacro 403 definition 404 .endmacro 405 406 Both forms define or redefine the macro macroname to represent 407 the definition, which may consist of one or more input lines, 408 including the newline characters terminating each line, 409 optionally containing calls to roff requests, roff macros or 410 high-level macros like man(5) or mdoc(5) macros, whichever 411 applies to the document in question. 412 413 Specifying a custom endmacro macro works in the same way as for 414 ig; namely, the call to `.endmacro' first ends the definition, 415 and after that, it is also evaluated as a roff request or roff 416 macro, but not as a high-level macro. 417 418 The macro can be invoked later using the syntax 419 420 .macroname [argument [argument ...]] 421 422 Regarding argument parsing, see MACRO SYNTAX above. 423 424 The line invoking the macro will be replaced in the input stream 425 by the definition, replacing all occurrences of \\$N, where N is 426 a digit, by the Nth argument. For example, 427 428 .de ZN 429 \fI\^\\$1\^\fP\\$2 430 .. 431 .ZN XtFree . 432 433 produces 434 435 \fI\^XtFree\^\fP. 436 437 in the input stream, and thus in the output: XtFree. Each 438 occurrence of \\$* is replaced with all the arguments, joined 439 together with single blank characters. 440 441 Since macros and user-defined strings share a common string 442 table, defining a macro macroname clobbers the user-defined 443 string macroname, and the definition can also be printed using 444 the `\*' string interpolation syntax described below ds, but this 445 is rarely useful because every macro definition contains at least 446 one explicit newline character. 447 448 In order to prevent endless recursion, both groff and mandoc(1) 449 limit the stack depth for expanding macros and strings to a 450 large, but finite number, and mandoc(1) also limits the length of 451 the expanded input line. Do not rely on the exact values of 452 these limits. 453 454 de1 macroname [endmacro] 455 Define a roff macro that will be executed with roff compatibility 456 mode switched off during macro execution. This is a groff 457 extension. Since mandoc(1) does not implement roff compatibility 458 mode at all, it handles this request as an alias for de. 459 460 defcolor newname scheme component ... 461 Define a color name. This is a groff extension and currently 462 ignored. 463 464 dei macrostring [endstring] 465 Define a roff macro, specifying the macro name indirectly (groff 466 extension). The syntax of this request is the same as that of 467 de. The effect is the same as: 468 469 .de \*[macrostring] [\*[endstring]] 470 471 dei1 macrostring [endstring] 472 Define a roff macro that will be executed with roff compatibility 473 mode switched off during macro execution, specifying the macro 474 name indirectly (groff extension). Since mandoc(1) does not 475 implement roff compatibility mode at all, it handles this request 476 as an alias for dei. 477 478 device string ... 479 480 devicem stringname 481 These two requests only make sense with the groff-specific 482 intermediate output format and are unsupported. 483 484 di divname 485 Begin a diversion. Currently unsupported. 486 487 do command [argument ...] 488 Execute roff request or macro line with compatibility mode 489 disabled. Currently unsupported. 490 491 ds stringname [["]string] 492 Define a user-defined string. The stringname and string 493 arguments are space-separated. If the string begins with a 494 double-quote character, that character will not be part of the 495 string. All remaining characters on the input line form the 496 string, including whitespace and double-quote characters, even 497 trailing ones. 498 499 The string can be interpolated into subsequent text by using 500 \*[stringname] for a stringname of arbitrary length, or \*(NN or 501 \*N if the length of stringname is two or one characters, 502 respectively. Interpolation can be prevented by escaping the 503 leading backslash; that is, an asterisk preceded by an even 504 number of backslashes does not trigger string interpolation. 505 506 Since user-defined strings and macros share a common string 507 table, defining a string stringname clobbers the macro 508 stringname, and the stringname used for defining a string can 509 also be invoked as a macro, in which case the following input 510 line will be appended to the string, forming a new input line 511 passed to the roff parser. For example, 512 513 .ds badidea .S 514 .badidea 515 H SYNOPSIS 516 517 invokes the SH macro when used in a man(5) document. Such abuse 518 is of course strongly discouraged. 519 520 ds1 stringname [["]string] 521 Define a user-defined string that will be expanded with roff 522 compatibility mode switched off during string expansion. This is 523 a groff extension. Since mandoc(1) does not implement roff 524 compatibility mode at all, it handles this request as an alias 525 for ds. 526 527 dwh dist macroname 528 Set a location trap in the current diversion. This is a Heirloom 529 extension and currently unsupported. 530 531 dt [dist macroname] 532 Set a trap within a diversion. Currently unsupported. 533 534 ec [char] 535 Enable the escape mechanism and change the escape character. The 536 char argument defaults to the backslash (`\'). 537 538 ecr Restore the escape character. Currently unsupported. 539 540 ecs Save the escape character. Currently unsupported. 541 542 el body 543 The "else" half of an if/else conditional. Pops a result off the 544 stack of conditional evaluations pushed by ie and uses it as its 545 conditional. If no stack entries are present (e.g., due to no 546 prior ie calls) then false is assumed. The syntax of this 547 request is similar to if except that the conditional is missing. 548 549 em macroname 550 Set a trap at the end of input. Currently unsupported. 551 552 EN End an equation block. See EQ. 553 554 eo Disable the escape mechanism completely. 555 556 EP End a picture started by BP. This is a Heirloom extension and 557 currently unsupported. 558 559 EQ Begin an equation block. See eqn(5) for a description of the 560 equation language. 561 562 errprint message 563 Print a string like an error message. This is a Heirloom 564 extension and currently ignored. 565 566 ev [envname] 567 Switch to another environment. Currently unsupported. 568 569 evc [envname] 570 Copy an environment into the current environment. Currently 571 unsupported. 572 573 ex Abort processing and exit. Currently unsupported. 574 575 fallback curfont font ... 576 Select the fallback sequence for a font. This is a Heirloom 577 extension and currently ignored. 578 579 fam [familyname] 580 Change the font family. This is a groff extension and currently 581 ignored. 582 583 fc [delimchar [padchar]] 584 Define a delimiting and a padding character for fields. 585 Currently unsupported. 586 587 fchar glyphname [string] 588 Define a fallback glyph. Currently unsupported. 589 590 fcolor colorname 591 Set the fill color for \D objects. This is a groff extension and 592 currently ignored. 593 594 fdeferlig font string ... 595 Defer ligature building. This is a Heirloom extension and 596 currently ignored. 597 598 feature +|-name 599 Enable or disable an OpenType feature. This is a Heirloom 600 extension and currently ignored. 601 602 fi Switch to fill mode. See man(5). Ignored in mdoc(5). 603 604 fkern font minkern 605 Control the use of kerning tables for a font. This is a Heirloom 606 extension and currently ignored. 607 608 fl Flush output. Currently ignored. 609 610 flig font string char ... 611 Define ligatures. This is a Heirloom extension and currently 612 ignored. 613 614 fp position font [filename] 615 Assign font position. Currently ignored. 616 617 fps mapname ... 618 Mount a font with a special character map. This is a Heirloom 619 extension and currently ignored. 620 621 fschar font glyphname [string] 622 Define a font-specific fallback glyph. This is a groff extension 623 and currently unsupported. 624 625 fspacewidth font [afmunits] 626 Set a font-specific width for the space character. This is a 627 Heirloom extension and currently ignored. 628 629 fspecial curfont [font ...] 630 Conditionally define a special font. This is a groff extension 631 and currently ignored. 632 633 ft [font] 634 Change the font. The following font arguments are supported: 635 636 B, BI, 3, 4 637 switches to bold font 638 639 I, 2 switches to underlined font 640 641 R, CW, 1 642 switches to normal font 643 644 P or no argument 645 switches back to the previous font 646 647 This request takes effect only locally and may be overridden by 648 macros and escape sequences. 649 650 ftr newname [oldname] 651 Translate font name. This is a groff extension and currently 652 ignored. 653 654 fzoom font [permille] 655 Zoom font size. Currently ignored. 656 657 gcolor [colorname] 658 Set glyph color. This is a groff extension and currently 659 ignored. 660 661 hc [char] 662 Set the hyphenation character. Currently ignored. 663 664 hcode char code ... 665 Set hyphenation codes of characters. Currently ignored. 666 667 hidechar font char ... 668 Hide characters in a font. This is a Heirloom extension and 669 currently ignored. 670 671 hla language 672 Set hyphenation language. This is a groff extension and 673 currently ignored. 674 675 hlm [number] 676 Set maximum number of consecutive hyphenated lines. Currently 677 ignored. 678 679 hpf filename 680 Load hyphenation pattern file. This is a groff extension and 681 currently ignored. 682 683 hpfa filename 684 Load hyphenation pattern file, appending to the current patterns. 685 This is a groff extension and currently ignored. 686 687 hpfcode code code ... 688 Define mapping values for character codes in hyphenation 689 patterns. This is a groff extension and currently ignored. 690 691 hw word ... 692 Specify hyphenation points in words. Currently ignored. 693 694 hy [mode] 695 Set automatic hyphenation mode. Currently ignored. 696 697 hylang language 698 Set hyphenation language. This is a Heirloom extension and 699 currently ignored. 700 701 hylen nchar 702 Minimum word length for hyphenation. This is a Heirloom 703 extension and currently ignored. 704 705 hym [length] 706 Set hyphenation margin. This is a groff extension and currently 707 ignored. 708 709 hypp penalty ... 710 Define hyphenation penalties. This is a Heirloom extension and 711 currently ignored. 712 713 hys [length] 714 Set hyphenation space. This is a groff extension and currently 715 ignored. 716 717 ie condition body 718 The "if" half of an if/else conditional. The result of the 719 conditional is pushed into a stack used by subsequent invocations 720 of el, which may be separated by any intervening input (or not 721 exist at all). Its syntax is equivalent to if. 722 723 if condition body 724 Begin a conditional. This request can also be written as 725 follows: 726 727 .if condition \{body 728 body ...\} 729 730 .if condition \{\ 731 body ... 732 .\} 733 734 The condition is a boolean expression. Currently, mandoc(1) 735 supports the following subset of roff conditionals: 736 737 o If `!' is prefixed to condition, it is logically inverted. 738 739 o If the first character of condition is `n' (nroff mode) or 740 `o' (odd page), it evaluates to true. 741 742 o If the first character of condition is `c' (character 743 available), `e' (even page), `t' (troff mode), or `v' (vroff 744 mode), it evaluates to false. 745 746 o If the first character of condition is `d', it evaluates to 747 true if the rest of condition is the name of an existing user 748 defined macro or string; otherwise, it evaluates to false. 749 750 o If the first character of condition is `r', it evaluates to 751 true if the rest of condition is the name of an existing 752 number register; otherwise, it evaluates to false. 753 754 o If the condition starts with a parenthesis or with an 755 optionally signed integer number, it is evaluated according 756 to the rules of Numerical expressions explained below. It 757 evaluates to true if the result is positive, or to false if 758 the result is zero or negative. 759 760 o Otherwise, the first character of condition is regarded as a 761 delimiter and it evaluates to true if the string extending 762 from its first to its second occurrence is equal to the 763 string extending from its second to its third occurrence. 764 765 o If condition cannot be parsed, it evaluates to false. 766 767 If a conditional is false, its children are not processed, but 768 are syntactically interpreted to preserve the integrity of the 769 input document. Thus, 770 771 .if t .ig 772 773 will discard the `.ig', which may lead to interesting results, 774 but 775 776 .if t .if t \{\ 777 778 will continue to syntactically interpret to the block close of 779 the final conditional. Sub-conditionals, in this case, obviously 780 inherit the truth value of the parent. 781 782 If the body section is begun by an escaped brace `\{', scope 783 continues until the end of the input line containing the matching 784 closing-brace escape sequence `\}'. If the body is not enclosed 785 in braces, scope continues until the end of the line. If the 786 condition is followed by a body on the same line, whether after a 787 brace or not, then requests and macros must begin with a control 788 character. It is generally more intuitive, in this case, to 789 write 790 791 .if condition \{\ 792 .request 793 .\} 794 795 than having the request or macro follow as 796 797 .if condition \{.request 798 799 The scope of a conditional is always parsed, but only executed if 800 the conditional evaluates to true. 801 802 Note that the `\}' is converted into a zero-width escape sequence 803 if not passed as a standalone macro `.\}'. For example, 804 805 .Fl a \} b 806 807 will result in `\}' being considered an argument of the `Fl' 808 macro. 809 810 ig [endmacro] 811 Ignore input. Its syntax can be either 812 813 .ig 814 ignored text 815 .. 816 817 or 818 819 .ig endmacro 820 ignored text 821 .endmacro 822 823 In the first case, input is ignored until a `..' request is 824 encountered on its own line. In the second case, input is 825 ignored until the specified `.endmacro' is encountered. Do not 826 use the escape character `\' anywhere in the definition of 827 endmacro; it would cause very strange behaviour. 828 829 When the endmacro is a roff request or a roff macro, like in 830 831 .ig if 832 833 the subsequent invocation of if will first terminate the ignored 834 text, then be invoked as usual. Otherwise, it only terminates 835 the ignored text, and arguments following it or the `..' request 836 are discarded. 837 838 in [[+|-]width] 839 Change indentation. See man(5). Ignored in mdoc(5). 840 841 index register stringname substring 842 Find a substring in a string. This is a Heirloom extension and 843 currently unsupported. 844 845 it expression macro 846 Set an input line trap. The named macro will be invoked after 847 processing the number of input text lines specified by the 848 numerical expression. While evaluating the expression, the unit 849 suffixes described below Scaling Widths are ignored. 850 851 it expression macro 852 Set an input line trap, not counting lines ending with \c. 853 Currently unsupported. 854 855 IX class keystring 856 To support the generation of a table of contents, pod2man(1) 857 emits this user-defined macro, usually without defining it. To 858 avoid reporting large numbers of spurious errors, mandoc(1) 859 ignores it. 860 861 kern [1 | 0] 862 Switch kerning on or off. Currently ignored. 863 864 kernafter font char ... afmunits ... 865 Increase kerning after some characters. This is a Heirloom 866 extension and currently ignored. 867 868 kernbefore font char ... afmunits ... 869 Increase kerning before some characters. This is a Heirloom 870 extension and currently ignored. 871 872 kernpair font char ... font char ... afmunits 873 Add a kerning pair to the kerning table. This is a Heirloom 874 extension and currently ignored. 875 876 lc [glyph] 877 Define a leader repetition character. Currently unsupported. 878 879 lc_ctype localename 880 Set the LC_CTYPE locale. This is a Heirloom extension and 881 currently unsupported. 882 883 lds macroname string 884 Define a local string. This is a Heirloom extension and 885 currently unsupported. 886 887 length register string 888 Count the number of input characters in a string. Currently 889 unsupported. 890 891 letadj lspmin lshmin letss lspmax lshmax 892 Dynamic letter spacing and reshaping. This is a Heirloom 893 extension and currently ignored. 894 895 lf lineno [filename] 896 Change the line number for error messages. Ignored because 897 insecure. 898 899 lg [1 | 0] 900 Switch the ligature mechanism on or off. Currently ignored. 901 902 lhang font char ... afmunits 903 Hang characters at left margin. This is a Heirloom extension and 904 currently ignored. 905 906 linetabs [1 | 0] 907 Enable or disable line-tabs mode. This is a groff extension and 908 currently unsupported. 909 910 ll [[+|-]width] 911 Change the output line length. If the width argument is omitted, 912 the line length is reset to its previous value. The default 913 setting for terminal output is 58n. If a sign is given, the line 914 length is added to or subtracted from; otherwise, it is set to 915 the provided value. Using this request in new manuals is 916 discouraged for several reasons, among others because it 917 overrides the mandoc(1) -O width command line option. 918 919 lnr register [+|-]value [increment] 920 Set local number register. This is a Heirloom extension and 921 currently unsupported. 922 923 lnrf register [+|-]value [increment] 924 Set local floating-point register. This is a Heirloom extension 925 and currently unsupported. 926 927 lpfx string 928 Set a line prefix. This is a Heirloom extension and currently 929 unsupported. 930 931 ls [factor] 932 Set line spacing. It takes one integer argument specifying the 933 vertical distance of subsequent output text lines measured in v 934 units. Currently ignored. 935 936 lsm macroname 937 Set a leading spaces trap. This is a groff extension and 938 currently unsupported. 939 940 lt [[+|-]width] 941 Set title line length. Currently ignored. 942 943 mc glyph [dist] 944 Print margin character in the right margin. The dist is 945 currently ignored; instead, 1n is used. 946 947 mediasize media 948 Set the device media size. This is a Heirloom extension and 949 currently ignored. 950 951 minss width 952 Set minimum word space. This is a Heirloom extension and 953 currently ignored. 954 955 mk [register] 956 Mark vertical position. Currently ignored. 957 958 mso filename 959 Load a macro file using the search path. Ignored because 960 insecure. 961 962 na Disable adjusting without changing the adjustment mode. 963 Currently ignored. 964 965 ne [height] 966 Declare the need for the specified minimum vertical space before 967 the next trap or the bottom of the page. Currently ignored. 968 969 nf Switch to no-fill mode. See man(5). Ignored by mdoc(5). 970 971 nh Turn off automatic hyphenation mode. Currently ignored. 972 973 nhychar char ... 974 Define hyphenation-inhibiting characters. This is a Heirloom 975 extension and currently ignored. 976 977 nm [start [inc [space [indent]]]] 978 Print line numbers. Currently unsupported. 979 980 nn [number] 981 Temporarily turn off line numbering. Currently unsupported. 982 983 nop body 984 Execute the rest of the input line as a request or macro line. 985 Currently unsupported. 986 987 nr register [+|-]expression [stepsize] 988 Define or change a register. A register is an arbitrary string 989 value that defines some sort of state, which influences parsing 990 and/or formatting. For the syntax of expression, see Numerical 991 expressions below. If it is prefixed by a sign, the register 992 will be incremented or decremented instead of assigned to. 993 994 The stepsize is used by the \n+ auto-increment feature. It 995 remains unchanged when omitted while changing an existing 996 register, and it defaults to 0 when defining a new register. 997 998 The following register is handled specially: 999 1000 nS If set to a positive integer value, certain mdoc(5) 1001 macros will behave in the same way as in the SYNOPSIS 1002 section. If set to 0, these macros will behave in the 1003 same way as outside the SYNOPSIS section, even when 1004 called within the SYNOPSIS section itself. Note that 1005 starting a new mdoc(5) section with the Sh macro will 1006 reset this register. 1007 1008 nrf register [+|-]expression [increment] 1009 Define or change a floating-point register. This is a Heirloom 1010 extension and currently unsupported. 1011 1012 nroff Force nroff mode. This is a groff extension and currently 1013 ignored. 1014 1015 ns Turn on no-space mode. Currently ignored. 1016 1017 nx [filename] 1018 Abort processing of the current input file and process another 1019 one. Ignored because insecure. 1020 1021 open stream file 1022 Open a file for writing. Ignored because insecure. 1023 1024 opena stream file 1025 Open a file for appending. Ignored because insecure. 1026 1027 os Output saved vertical space. Currently ignored. 1028 1029 output string 1030 Output directly to intermediate output. Not supported. 1031 1032 padj [1 | 0] 1033 Globally control paragraph-at-once adjustment. This is a 1034 Heirloom extension and currently ignored. 1035 1036 papersize media 1037 Set the paper size. This is a Heirloom extension and currently 1038 ignored. 1039 1040 pc [char] 1041 Change the page number character. Currently ignored. 1042 1043 pev Print environments. This is a groff extension and currently 1044 ignored. 1045 1046 pi command 1047 Pipe output to a shell command. Ignored because insecure. 1048 1049 PI Low-level request used by BP. This is a Heirloom extension and 1050 currently unsupported. 1051 1052 pl [[+|-]height] 1053 Change page length. Currently ignored. 1054 1055 pm Print names and sizes of macros, strings, and diversions to 1056 standard error output. Currently ignored. 1057 1058 pn [+|-]number 1059 Change the page number of the next page. Currently ignored. 1060 1061 pnr Print all number registers on standard error output. Currently 1062 ignored. 1063 1064 po [[+|-]offset] 1065 Set a horizontal page offset. If no argument is specified, the 1066 page offset is reverted to its previous value. If a sign is 1067 specified, the new page offset is calculated relative to the 1068 current one; otherwise, it is absolute. The argument follows the 1069 syntax of Scaling Widths and the default scaling unit is m. 1070 1071 ps [[+|-]size] 1072 Change point size. Currently ignored. 1073 1074 psbb filename 1075 Retrieve the bounding box of a PostScript file. Currently 1076 unsupported. 1077 1078 pshape indent length ... 1079 Set a special shape for the current paragraph. This is a 1080 Heirloom extension and currently unsupported. 1081 1082 pso command 1083 Include output of a shell command. Ignored because insecure. 1084 1085 ptr Print the names and positions of all traps on standard error 1086 output. This is a groff extension and currently ignored. 1087 1088 pvs [[+|-]height] 1089 Change post-vertical spacing. This is a groff extension and 1090 currently ignored. 1091 1092 rchar glyph ... 1093 Remove glyph definitions. Currently unsupported. 1094 1095 rd [prompt [argument ...]] 1096 Read from standard input. Currently ignored. 1097 1098 recursionlimit maxrec maxtail 1099 Set the maximum stack depth for recursive macros. This is a 1100 Heirloom extension and currently ignored. 1101 1102 return [twice] 1103 Exit a macro and return to the caller. Currently unsupported. 1104 1105 rfschar font glyph ... 1106 Remove font-specific fallback glyph definitions. Currently 1107 unsupported. 1108 1109 rhang font char ... afmunits 1110 Hang characters at right margin. This is a Heirloom extension 1111 and currently ignored. 1112 1113 rj [N] Justify the next N input lines to the right margin without 1114 filling. N defaults to 1. An argument of 0 or less ends right 1115 adjustment. 1116 1117 rm macroname 1118 Remove a request, macro or string. 1119 1120 rn oldname newname 1121 Rename a request, macro, diversion, or string. In mandoc(1), 1122 user-defined macros, mdoc(5) and man(5) macros, and user-defined 1123 strings can be renamed, but renaming of predefined strings and of 1124 roff requests is not supported, and diversions are not 1125 implemented at all. 1126 1127 rnn oldname newname 1128 Rename a number register. Currently unsupported. 1129 1130 rr register 1131 Remove a register. 1132 1133 rs End no-space mode. Currently ignored. 1134 1135 rt [dist] 1136 Return to marked vertical position. Currently ignored. 1137 1138 schar glyph [string] 1139 Define global fallback glyph. This is a groff extension and 1140 currently unsupported. 1141 1142 sentchar char ... 1143 Define sentence-ending characters. This is a Heirloom extension 1144 and currently ignored. 1145 1146 shc [glyph] 1147 Change the soft hyphen character. Currently ignored. 1148 1149 shift [number] 1150 Shift macro arguments. Currently unsupported. 1151 1152 sizes size ... 1153 Define permissible point sizes. This is a groff extension and 1154 currently ignored. 1155 1156 so filename 1157 Include a source file. The file is read and its contents 1158 processed as input in place of the so request line. To avoid 1159 inadvertent inclusion of unrelated files, mandoc(1) only accepts 1160 relative paths not containing the strings "../" and "/..". 1161 1162 This request requires man(1) to change to the right directory 1163 before calling mandoc(1), per convention to the root of the 1164 manual tree. Typical usage looks like: 1165 1166 .so man3/Xcursor.3 1167 1168 As the whole concept is rather fragile, the use of so is 1169 discouraged. Use ln(1) instead. 1170 1171 sp [height] 1172 Break the output line and emit vertical space. The argument 1173 follows the syntax of Scaling Widths and defaults to one blank 1174 line (1v). 1175 1176 spacewidth [1 | 0] 1177 Set the space width from the font metrics file. This is a 1178 Heirloom extension and currently ignored. 1179 1180 special [font ...] 1181 Define a special font. This is a groff extension and currently 1182 ignored. 1183 1184 spreadwarn [width] 1185 Warn about wide spacing between words. Currently ignored. 1186 1187 ss wordspace [sentencespace] 1188 Set space character size. Currently ignored. 1189 1190 sty position style 1191 Associate style with a font position. This is a groff extension 1192 and currently ignored. 1193 1194 substring stringname startpos [endpos] 1195 Replace a user-defined string with a substring. Currently 1196 unsupported. 1197 1198 sv [height] 1199 Save vertical space. Currently ignored. 1200 1201 sy command 1202 Execute shell command. Ignored because insecure. 1203 1204 T& Re-start a table layout, retaining the options of the prior table 1205 invocation. See TS. 1206 1207 ta [width ... [T width ...]] 1208 Set tab stops. Each width argument follows the syntax of Scaling 1209 Widths. If prefixed by a plus sign, it is relative to the 1210 previous tab stop. The arguments after the T marker are used 1211 repeatedly as often as needed; for each reuse, they are taken 1212 relative to the last previously established tab stop. When ta is 1213 called without arguments, all tab stops are cleared. 1214 1215 tc [glyph] 1216 Change tab repetition character. Currently unsupported. 1217 1218 TE End a table context. See TS. 1219 1220 ti [+|-]width 1221 Break the output line and indent the next output line by width. 1222 If a sign is specified, the temporary indentation is calculated 1223 relative to the current indentation; otherwise, it is absolute. 1224 The argument follows the syntax of Scaling Widths and the default 1225 scaling unit is m. 1226 1227 tkf font minps width1 maxps width2 1228 Enable track kerning for a font. Currently ignored. 1229 1230 tl 'left'center'right' 1231 Print a title line. Currently unsupported. 1232 1233 tm string 1234 Print to standard error output. Currently ignored. 1235 1236 tm1 string 1237 Print to standard error output, allowing leading blanks. This is 1238 a groff extension and currently ignored. 1239 1240 tmc string 1241 Print to standard error output without a trailing newline. This 1242 is a groff extension and currently ignored. 1243 1244 tr glyph glyph ... 1245 Output character translation. The first glyph in each pair is 1246 replaced by the second one. Character escapes can be used; for 1247 example, 1248 1249 tr \(xx\(yy 1250 1251 replaces all invocations of \(xx with \(yy. 1252 1253 track font minps width1 maxps width2 1254 Static letter space tracking. This is a Heirloom extension and 1255 currently ignored. 1256 1257 transchar char ... 1258 Define transparent characters for sentence-ending. This is a 1259 Heirloom extension and currently ignored. 1260 1261 trf filename 1262 Output the contents of a file, disallowing invalid characters. 1263 This is a groff extension and ignored because insecure. 1264 1265 trimat left top width height 1266 Set the TrimBox page parameter for PDF generation. This is a 1267 Heirloom extension and currently ignored. 1268 1269 trin glyph glyph ... 1270 Output character translation, ignored by asciify. Currently 1271 unsupported. 1272 1273 trnt glyph glyph ... 1274 Output character translation, ignored by \!. Currently 1275 unsupported. 1276 1277 troff Force troff mode. This is a groff extension and currently 1278 ignored. 1279 1280 TS Begin a table, which formats input in aligned rows and columns. 1281 See tbl(5) for a description of the tbl language. 1282 1283 uf font 1284 Globally set the underline font. Currently ignored. 1285 1286 ul [N] Underline next N input lines. Currently ignored. 1287 1288 unformat divname 1289 Unformat spaces and tabs in a diversion. Currently unsupported. 1290 1291 unwatch macroname 1292 Disable notification for string or macro. This is a Heirloom 1293 extension and currently ignored. 1294 1295 unwatchn register 1296 Disable notification for register. This is a Heirloom extension 1297 and currently ignored. 1298 1299 vpt [1 | 0] 1300 Enable or disable vertical position traps. This is a groff 1301 extension and currently ignored. 1302 1303 vs [[+|-]height] 1304 Change vertical spacing. Currently ignored. 1305 1306 warn flags 1307 Set warning level. Currently ignored. 1308 1309 warnscale si 1310 Set the scaling indicator used in warnings. This is a groff 1311 extension and currently ignored. 1312 1313 watch macroname 1314 Notify on change of string or macro. This is a Heirloom 1315 extension and currently ignored. 1316 1317 watchlength maxlength 1318 On change, report the contents of macros and strings up to the 1319 specified length. This is a Heirloom extension and currently 1320 ignored. 1321 1322 watchn register 1323 Notify on change of register. This is a Heirloom extension and 1324 currently ignored. 1325 1326 wh dist [macroname] 1327 Set a page location trap. Currently unsupported. 1328 1329 while condition body 1330 Repeated execution while a condition is true. Currently 1331 unsupported. 1332 1333 write ["]string 1334 Write to an open file. Ignored because insecure. 1335 1336 writec ["]string 1337 Write to an open file without appending a newline. Ignored 1338 because insecure. 1339 1340 writem macroname 1341 Write macro or string to an open file. Ignored because insecure. 1342 1343 xflag level 1344 Set the extension level. This is a Heirloom extension and 1345 currently ignored. 1346 1347 Numerical expressions 1348 The nr, if, and ie requests accept integer numerical expressions as 1349 arguments. These are always evaluated using the C int type; integer 1350 overflow works the same way as in the C language. Numbers consist of an 1351 arbitrary number of digits `0' to `9' prefixed by an optional sign `+' or 1352 `-'. Each number may be followed by one optional scaling unit described 1353 below Scaling Widths. The following equations hold: 1354 1355 1i = 6v = 6P = 10m = 10n = 52p = 1000M = 240u = 240 1356 254c = 100i = 24000u = 24000 1357 1f = 65536u = 65536 1358 1359 The following binary operators are implemented. Unless otherwise stated, 1360 they behave as in the C language: 1361 1362 + addition 1363 - subtraction 1364 * multiplication 1365 / division 1366 % remainder of division 1367 < less than 1368 > greater than 1369 == equal to 1370 = equal to, same effect as == (this differs from C) 1371 <= less than or equal to 1372 >= greater than or equal to 1373 <> not equal to (corresponds to C !=; this one is of limited 1374 portability, it is supported by Heirloom roff, but not by groff) 1375 & logical and (corresponds to C &&) 1376 : logical or (corresponds to C ||) 1377 <? minimum (not available in C) 1378 >? maximum (not available in C) 1379 1380 There is no concept of precedence; evaluation proceeds from left to 1381 right, except when subexpressions are enclosed in parentheses. Inside 1382 parentheses, whitespace is ignored. 1383 1384 ESCAPE SEQUENCE REFERENCE 1385 The mandoc(1) roff parser recognises the following escape sequences. 1386 Note that the roff language defines more escape sequences not implemented 1387 in mandoc(1). In mdoc(5) and man(5) documents, using escape sequences is 1388 discouraged except for those described in the LANGUAGE SYNTAX section 1389 above. 1390 1391 A backslash followed by any character not listed here simply prints that 1392 character itself. 1393 1394 \<newline> 1395 A backslash at the end of an input line can be used to continue the 1396 logical input line on the next physical input line, joining the text on 1397 both lines together as if it were on a single input line. 1398 1399 \<space> 1400 The escape sequence backslash-space (`\ ') is an unpaddable space-sized 1401 non-breaking space character; see Whitespace. 1402 1403 \" 1404 The rest of the input line is treated as Comments. 1405 1406 \% 1407 Hyphenation allowed at this point of the word; ignored by mandoc(1). 1408 1409 \& 1410 Non-printing zero-width character; see Whitespace. 1411 1412 \' 1413 Acute accent special character; use `\(aa' instead. 1414 1415 \(cc 1416 Special Characters with two-letter names, see mandoc_char(5). 1417 1418 \*[name] 1419 Interpolate the string with the name; see Predefined Strings and ds. For 1420 short names, there are variants \*c and \*(cc. 1421 1422 \, 1423 Left italic correction (groff extension); ignored by mandoc(1). 1424 1425 \- 1426 Special character "mathematical minus sign". 1427 1428 \/ 1429 Right italic correction (groff extension); ignored by mandoc(1). 1430 1431 \[name] 1432 Special Characters with names of arbitrary length, see mandoc_char(5). 1433 1434 \^ 1435 One-twelfth em half-narrow space character, effectively zero-width in 1436 mandoc(1). 1437 1438 \` 1439 Grave accent special character; use `\(ga' instead. 1440 1441 \{ 1442 Begin conditional input; see if. 1443 1444 \| 1445 One-sixth em narrow space character, effectively zero-width in mandoc(1). 1446 1447 \} 1448 End conditional input; see if. 1449 1450 \~ 1451 Paddable non-breaking space character. 1452 1453 \0 1454 Digit width space character. 1455 1456 \A'string' 1457 Anchor definition; ignored by mandoc(1). 1458 1459 \B'string' 1460 Interpolate `1' if string conforms to the syntax of Numerical expressions 1461 explained above and `0' otherwise. 1462 1463 \b'string' 1464 Bracket building function; ignored by mandoc(1). 1465 1466 \C'name' 1467 Special Characters with names of arbitrary length. 1468 1469 \c 1470 When encountered at the end of an input text line, the next input text 1471 line is considered to continue that line, even if there are request or 1472 macro lines in between. No whitespace is inserted. 1473 1474 \D'string' 1475 Draw graphics function; ignored by mandoc(1). 1476 1477 \d 1478 Move down by half a line; ignored by mandoc(1). 1479 1480 \e 1481 Backslash special character. 1482 1483 \F[name] 1484 Switch font family (groff extension); ignored by mandoc(1). For short 1485 names, there are variants \Fc and \F(cc. 1486 1487 \f[name] 1488 Switch to the font name, see Text Decoration. For short names, there are 1489 variants \fc and \f(cc. 1490 1491 \g[name] 1492 Interpolate the format of a number register; ignored by mandoc(1). For 1493 short names, there are variants \gc and \g(cc. 1494 1495 \H'[+|-]number' 1496 Set the height of the current font; ignored by mandoc(1). 1497 1498 \h'[|]width' 1499 Horizontal motion. If the vertical bar is given, the motion is relative 1500 to the current indentation. Otherwise, it is relative to the current 1501 position. The default scaling unit is m. 1502 1503 \k[name] 1504 Mark horizontal input place in register; ignored by mandoc(1). For short 1505 names, there are variants \kc and \k(cc. 1506 1507 \L'number[c]' 1508 Vertical line drawing function; ignored by mandoc(1). 1509 1510 \l'width[c]' 1511 Draw a horizontal line of width using the glyph c. 1512 1513 \M[name] 1514 Set fill (background) color (groff extension); ignored by mandoc(1). For 1515 short names, there are variants \Mc and \M(cc. 1516 1517 \m[name] 1518 Set glyph drawing color (groff extension); ignored by mandoc(1). For 1519 short names, there are variants \mc and \m(cc. 1520 1521 \N'number' 1522 Character number on the current font. 1523 1524 \n[+|-][name] 1525 Interpolate the number register name. For short names, there are 1526 variants \nc and \n(cc. If the optional sign is specified, the register 1527 is first incremented or decremented by the stepsize that was specified in 1528 the relevant nr request, and the changed value is interpolated. 1529 1530 \o'string' 1531 Overstrike, writing all the characters contained in the string to the 1532 same output position. In terminal and HTML output modes, only the last 1533 one of the characters is visible. 1534 1535 \p 1536 Break the output line at the end of the current word. 1537 1538 \R'name [+|-]number' 1539 Set number register; ignored by mandoc(1). 1540 1541 \S'number' 1542 Slant output; ignored by mandoc(1). 1543 1544 \s'[+|-]number' 1545 Change point size; ignored by mandoc(1). Alternative forms \s[+|-]n, 1546 \s[+|-]'number', \s[[+|-]number], and \s[+|-][number] are also parsed and 1547 ignored. 1548 1549 \t 1550 Horizontal tab; ignored by mandoc(1). 1551 1552 \u 1553 Move up by half a line; ignored by mandoc(1). 1554 1555 \V[name] 1556 Interpolate an environment variable; ignored by mandoc(1). For short 1557 names, there are variants \Vc and \V(cc. 1558 1559 \v'number' 1560 Vertical motion; ignored by mandoc(1). 1561 1562 \w'string' 1563 Interpolate the width of the string. The mandoc(1) implementation 1564 assumes that after expansion of user-defined strings, the string only 1565 contains normal characters, no escape sequences, and that each character 1566 has a width of 24 basic units. 1567 1568 \X'string' 1569 Output string as device control function; ignored in nroff mode and by 1570 mandoc(1). 1571 1572 \x'number' 1573 Extra line space function; ignored by mandoc(1). 1574 1575 \Y[name] 1576 Output a string as a device control function; ignored in nroff mode and 1577 by mandoc(1). For short names, there are variants \Yc and \Y(cc. 1578 1579 \Z'string' 1580 Print string with zero width and height; ignored by mandoc(1). 1581 1582 \z 1583 Output the next character without advancing the cursor position. 1584 1585 COMPATIBILITY 1586 The mandoc(1) implementation of the roff language is intentionally 1587 incomplete. Unimplemented features include: 1588 1589 - For security reasons, mandoc(1) never reads or writes external files 1590 except via so requests with safe relative paths. 1591 - There is no automatic hyphenation, no adjustment to the right margin, 1592 and no centering; the output is always set flush-left. 1593 - Support for setting tabulator positions and tabulator and leader 1594 characters is missing, and support for manually changing indentation 1595 is limited. 1596 - The `u' scaling unit is the default terminal unit. In traditional 1597 troff systems, this unit changes depending on the output media. 1598 - Width measurements are implemented in a crude way and often yield 1599 wrong results. Explicit movement requests and escapes are ignored. 1600 - There is no concept of output pages, no support for floats, graphics 1601 drawing, and picture inclusion; terminal output is always continuous. 1602 - Requests regarding color, font families, and glyph manipulation are 1603 ignored. Font support is very limited. Kerning is not implemented, 1604 and no ligatures are produced. 1605 - The "'" macro control character does not suppress output line breaks. 1606 - Diversions are not implemented, and support for traps is very 1607 incomplete. 1608 - While recursion is supported, while loops are not. 1609 1610 The special semantics of the nS number register is an idiosyncracy of 1611 OpenBSD manuals and not supported by other mdoc(5) implementations. 1612 1613 SEE ALSO 1614 mandoc(1), eqn(5), man(5), mandoc_char(5), mdoc(5), tbl(5) 1615 1616 Joseph F. Ossanna and Brian W. Kernighan, Troff User's Manual, AT&T Bell 1617 Laboratories, Computing Science Technical Report, 54, 1618 http://www.kohala.com/start/troff/cstr54.ps, Murray Hill, New Jersey, 1619 1976 and 1992. 1620 1621 Joseph F. Ossanna, Brian W. Kernighan, and Gunnar Ritter, Heirloom 1622 Documentation Tools Nroff/Troff User's Manual, 1623 http://heirloom.sourceforge.net/doctools/troff.pdf, September 17, 2007. 1624 1625 HISTORY 1626 The RUNOFF typesetting system, whose input forms the basis for roff, was 1627 written in MAD and FAP for the CTSS operating system by Jerome E. 1628 Saltzer in 1964. Doug McIlroy rewrote it in BCPL in 1969, renaming it 1629 roff. Dennis M. Ritchie rewrote McIlroy's roff in PDP-11 assembly for 1630 Version 1 AT&T UNIX, Joseph F. Ossanna improved roff and renamed it nroff 1631 for Version 2 AT&T UNIX, then ported nroff to C as troff, which Brian W. 1632 Kernighan released with Version 7 AT&T UNIX. In 1989, James Clarke re- 1633 implemented troff in C++, naming it groff. 1634 1635 AUTHORS 1636 This roff reference was written by Kristaps Dzonsons <kristaps@bsd.lv> 1637 and Ingo Schwarze <schwarze@openbsd.org>. 1638 1639 illumos April 10, 2018 illumos