1.\" $Id: mandoc.1,v 1.164 2015/11/05 17:47:51 schwarze Exp $ 2.\" 3.\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> 4.\" Copyright (c) 2012, 2014, 2015 Ingo Schwarze <schwarze@openbsd.org> 5.\" 6.\" Permission to use, copy, modify, and distribute this software for any 7.\" purpose with or without fee is hereby granted, provided that the above 8.\" copyright notice and this permission notice appear in all copies. 9.\" 10.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17.\" 18.Dd $Mdocdate: November 5 2015 $ 19.Dt MANDOC 1 20.Os 21.Sh NAME 22.Nm mandoc 23.Nd format and display UNIX manuals 24.Sh SYNOPSIS 25.Nm mandoc 26.Op Fl acfhkl 27.Op Fl I Cm os Ns = Ns Ar name 28.Op Fl K Ar encoding 29.Op Fl m Ns Ar format 30.Op Fl O Ar option 31.Op Fl T Ar output 32.Op Fl W Ar level 33.Op Ar 34.Sh DESCRIPTION 35The 36.Nm 37utility formats 38.Ux 39manual pages for display. 40.Pp 41By default, 42.Nm 43reads 44.Xr mdoc 5 45or 46.Xr man 5 47text from stdin, implying 48.Fl m Ns Cm andoc , 49and produces 50.Fl T Cm locale 51output. 52.Pp 53The options are as follows: 54.Bl -tag -width Ds 55.It Fl a 56If the standard output is a terminal device and 57.Fl c 58is not specified, use 59.Xr more 1 60to paginate the output, just like 61.Xr man 1 62would. 63.It Fl c 64Copy the formatted manual pages to the standard output without using 65.Xr more 1 66to paginate them. 67This is the default. 68It can be specified to override 69.Fl a . 70.It Fl f 71A synonym for 72.Xr whatis 1 . 73This overrides any earlier 74.Fl k 75and 76.Fl l 77options. 78.It Fl I Cm os Ns = Ns Ar name 79Override the default operating system 80.Ar name 81for the 82.Xr mdoc 5 83.Sq \&Os 84and for the 85.Xr man 5 86.Sq \&TH 87macro. 88.It Fl h 89Display only the SYNOPSIS lines. 90Implies 91.Fl c . 92.It Fl K Ar encoding 93Specify the input encoding. 94The supported 95.Ar encoding 96arguments are 97.Cm us-ascii , 98.Cm iso-8859-1 , 99and 100.Cm utf-8 . 101If not specified, autodetection uses the first match: 102.Bl -tag -width iso-8859-1 103.It Cm utf-8 104if the first three bytes of the input file 105are the UTF-8 byte order mark (BOM, 0xefbbbf) 106.It Ar encoding 107if the first or second line of the input file matches the 108.Sy emacs 109mode line format 110.Pp 111.D1 .\e" -*- Oo ...; Oc coding: Ar encoding ; No -*- 112.It Cm utf-8 113if the first non-ASCII byte in the file introduces a valid UTF-8 sequence 114.It Cm iso-8859-1 115otherwise 116.El 117.It Fl l 118A synonym for 119.Fl a . 120.It Fl m Ns Ar format 121Input format. 122See 123.Sx Input Formats 124for available formats. 125Defaults to 126.Fl m Ns Cm andoc . 127.It Fl O Ar option 128Comma-separated output options. 129.It Fl T Ar output 130Output format. 131See 132.Sx Output Formats 133for available formats. 134Defaults to 135.Fl T Cm locale . 136.It Fl W Ar level 137Specify the minimum message 138.Ar level 139to be reported on the standard error output and to affect the exit status. 140The 141.Ar level 142can be 143.Cm warning , 144.Cm error , 145or 146.Cm unsupp ; 147.Cm all 148is an alias for 149.Cm warning . 150By default, 151.Nm 152is silent. 153See 154.Sx EXIT STATUS 155and 156.Sx DIAGNOSTICS 157for details. 158.Pp 159The special option 160.Fl W Cm stop 161tells 162.Nm 163to exit after parsing a file that causes warnings or errors of at least 164the requested level. 165No formatted output will be produced from that file. 166If both a 167.Ar level 168and 169.Cm stop 170are requested, they can be joined with a comma, for example 171.Fl W Cm error , Ns Cm stop . 172.It Ar file 173Read input from zero or more files. 174If unspecified, reads from stdin. 175If multiple files are specified, 176.Nm 177will halt with the first failed parse. 178.El 179.Ss Input Formats 180The 181.Nm 182utility accepts 183.Xr mdoc 5 184and 185.Xr man 5 186input with 187.Fl m Ns Cm doc 188and 189.Fl m Ns Cm an , 190respectively. 191The 192.Xr mdoc 5 193format is 194.Em strongly 195recommended; 196.Xr man 5 197should only be used for legacy manuals. 198.Pp 199A third option, 200.Fl m Ns Cm andoc , 201which is also the default, determines encoding on-the-fly: if the first 202non-comment macro is 203.Sq \&Dd 204or 205.Sq \&Dt , 206the 207.Xr mdoc 5 208parser is used; otherwise, the 209.Xr man 5 210parser is used. 211.Pp 212If multiple 213files are specified with 214.Fl m Ns Cm andoc , 215each has its file-type determined this way. 216If multiple files are 217specified and 218.Fl m Ns Cm doc 219or 220.Fl m Ns Cm an 221is specified, then this format is used exclusively. 222.Ss Output Formats 223The 224.Nm 225utility accepts the following 226.Fl T 227arguments, which correspond to output modes: 228.Bl -tag -width "-T locale" 229.It Fl T Cm ascii 230Produce 7-bit ASCII output. 231See 232.Sx ASCII Output . 233.It Fl T Cm html 234Produce HTML5, CSS1, and MathML output. 235See 236.Sx HTML Output . 237.It Fl T Ns Cm lint 238Parse only: produce no output. 239Implies 240.Fl W Cm warning . 241.It Fl T Cm locale 242Encode output using the current locale. 243This is the default. 244See 245.Sx Locale Output . 246.It Fl T Cm man 247Produce 248.Xr man 5 249format output. 250See 251.Sx Man Output . 252.It Fl T Cm pdf 253Produce PDF output. 254See 255.Sx PDF Output . 256.It Fl T Cm ps 257Produce PostScript output. 258See 259.Sx PostScript Output . 260.It Fl T Cm tree 261Produce an indented parse tree. 262.It Fl T Cm utf8 263Encode output in the UTF\-8 multi-byte format. 264See 265.Sx UTF\-8 Output . 266.It Fl T Cm xhtml 267This is a synonym for 268.Fl T Cm html . 269.El 270.Pp 271If multiple input files are specified, these will be processed by the 272corresponding filter in-order. 273.Ss ASCII Output 274Output produced by 275.Fl T Cm ascii 276is rendered in standard 7-bit ASCII documented in 277.Xr ascii 5 . 278.Pp 279Font styles are applied by using back-spaced encoding such that an 280underlined character 281.Sq c 282is rendered as 283.Sq _ Ns \e[bs] Ns c , 284where 285.Sq \e[bs] 286is the back-space character number 8. 287Emboldened characters are rendered as 288.Sq c Ns \e[bs] Ns c . 289.Pp 290The special characters documented in 291.Xr mandoc_char 5 292are rendered best-effort in an ASCII equivalent. 293.Pp 294Output width is limited to 78 visible columns unless literal input lines 295exceed this limit. 296.Pp 297The following 298.Fl O 299arguments are accepted: 300.Bl -tag -width Ds 301.It Cm indent Ns = Ns Ar indent 302The left margin for normal text is set to 303.Ar indent 304blank characters instead of the default of five for 305.Xr mdoc 5 306and seven for 307.Xr man 5 . 308Increasing this is not recommended; it may result in degraded formatting, 309for example overfull lines or ugly line breaks. 310.It Cm width Ns = Ns Ar width 311The output width is set to 312.Ar width , 313which will normalise to \(>=58. 314.El 315.Ss HTML Output 316Output produced by 317.Fl T Cm html 318conforms to HTML5 using optional self-closing tags. 319Default styles use only CSS1. 320Equations rendered from 321.Xr eqn 5 322blocks use MathML. 323.Pp 324The 325.Pa mandoc.css 326file documents style-sheet classes available for customising output. 327If a style-sheet is not specified with 328.Fl O Cm style , 329.Fl T Cm html 330defaults to simple output (via an embedded style-sheet) 331readable in any graphical or text-based web 332browser. 333.Pp 334Special characters are rendered in decimal-encoded UTF\-8. 335.Pp 336The following 337.Fl O 338arguments are accepted: 339.Bl -tag -width Ds 340.It Cm fragment 341Omit the <!DOCTYPE> declaration and the <html>, <head>, and <body> 342elements and only emit the subtree below the <body> element. 343The 344.Cm style 345argument will be ignored. 346This is useful when embedding manual content within existing documents. 347.It Cm includes Ns = Ns Ar fmt 348The string 349.Ar fmt , 350for example, 351.Ar ../src/%I.html , 352is used as a template for linked header files (usually via the 353.Sq \&In 354macro). 355Instances of 356.Sq \&%I 357are replaced with the include filename. 358The default is not to present a 359hyperlink. 360.It Cm man Ns = Ns Ar fmt 361The string 362.Ar fmt , 363for example, 364.Ar ../html%S/%N.%S.html , 365is used as a template for linked manuals (usually via the 366.Sq \&Xr 367macro). 368Instances of 369.Sq \&%N 370and 371.Sq %S 372are replaced with the linked manual's name and section, respectively. 373If no section is included, section 1 is assumed. 374The default is not to 375present a hyperlink. 376.It Cm style Ns = Ns Ar style.css 377The file 378.Ar style.css 379is used for an external style-sheet. 380This must be a valid absolute or 381relative URI. 382.El 383.Ss Locale Output 384Locale-depending output encoding is triggered with 385.Fl T Cm locale . 386This is the default. 387.Ss Man Output 388Translate input format into 389.Xr man 5 390output format. 391This is useful for distributing manual sources to legacy systems 392lacking 393.Xr mdoc 5 394formatters. 395.Pp 396If 397.Xr mdoc 5 398is passed as input, it is translated into 399.Xr man 5 . 400If the input format is 401.Xr man 5 , 402the input is copied to the output, expanding any 403.Xr mandoc_roff 5 404.Sq so 405requests. 406The parser is also run, and as usual, the 407.Fl W 408level controls which 409.Sx DIAGNOSTICS 410are displayed before copying the input to the output. 411.Ss PDF Output 412PDF-1.1 output may be generated by 413.Fl T Cm pdf . 414See 415.Sx PostScript Output 416for 417.Fl O 418arguments and defaults. 419.Ss PostScript Output 420PostScript 421.Qq Adobe-3.0 422Level-2 pages may be generated by 423.Fl T Cm ps . 424Output pages default to letter sized and are rendered in the Times font 425family, 11-point. 426Margins are calculated as 1/9 the page length and width. 427Line-height is 1.4m. 428.Pp 429Special characters are rendered as in 430.Sx ASCII Output . 431.Pp 432The following 433.Fl O 434arguments are accepted: 435.Bl -tag -width Ds 436.It Cm paper Ns = Ns Ar name 437The paper size 438.Ar name 439may be one of 440.Ar a3 , 441.Ar a4 , 442.Ar a5 , 443.Ar legal , 444or 445.Ar letter . 446You may also manually specify dimensions as 447.Ar NNxNN , 448width by height in millimetres. 449If an unknown value is encountered, 450.Ar letter 451is used. 452.El 453.Ss UTF\-8 Output 454Use 455.Fl T Cm utf8 456to force a UTF\-8 locale. 457See 458.Sx Locale Output 459for details and options. 460.Ss Syntax tree output 461Use 462.Fl T Cm tree 463to show a human readable representation of the syntax tree. 464It is useful for debugging the source code of manual pages. 465The exact format is subject to change, so don't write parsers for it. 466Each output line shows one syntax tree node. 467Child nodes are indented with respect to their parent node. 468The columns are: 469.Pp 470.Bl -enum -compact 471.It 472For macro nodes, the macro name; for text and 473.Xr tbl 5 474nodes, the content. 475There is a special format for 476.Xr eqn 5 477nodes. 478.It 479Node type (text, elem, block, head, body, body-end, tail, tbl, eqn). 480.It 481Flags: 482.Bl -dash -compact 483.It 484An opening parenthesis if the node is an opening delimiter. 485.It 486An asterisk if the node starts a new input line. 487.It 488The input line number (starting at one). 489.It 490A colon. 491.It 492The input column number (starting at one). 493.It 494A closing parenthesis if the node is a closing delimiter. 495.It 496A full stop if the node ends a sentence. 497.El 498.El 499.Sh EXIT STATUS 500The 501.Nm 502utility exits with one of the following values, controlled by the message 503.Ar level 504associated with the 505.Fl W 506option: 507.Pp 508.Bl -tag -width Ds -compact 509.It 0 510No warnings or errors occurred, or those that did were ignored because 511they were lower than the requested 512.Ar level . 513.It 2 514At least one warning occurred, but no error, and 515.Fl W Cm warning 516was specified. 517.It 3 518At least one parsing error occurred, 519but no unsupported feature was encountered, and 520.Fl W Cm error 521or 522.Fl W Cm warning 523was specified. 524.It 4 525At least one unsupported feature was encountered, and 526.Fl W Cm unsupp , 527.Fl W Cm error 528or 529.Fl W Cm warning 530was specified. 531.It 5 532Invalid command line arguments were specified. 533No input files have been read. 534.It 6 535An operating system error occurred, for example exhaustion 536of memory, file descriptors, or process table entries. 537Such errors cause 538.Nm 539to exit at once, possibly in the middle of parsing or formatting a file. 540.El 541.Pp 542Note that selecting 543.Fl T Cm lint 544output mode implies 545.Fl W Cm warning . 546.Sh EXAMPLES 547To page manuals to the terminal: 548.Pp 549.Dl $ mandoc \-W all,stop mandoc.1 2\*(Gt&1 | less 550.Dl $ mandoc mandoc.1 mdoc.3 mdoc.5 | less 551.Pp 552To produce HTML manuals with 553.Pa mandoc.css 554as the style-sheet: 555.Pp 556.Dl $ mandoc \-T html -Ostyle=mandoc.css mdoc.5 \*(Gt mdoc.5.html 557.Pp 558To check over a large set of manuals: 559.Pp 560.Dl $ mandoc \-T lint \(gafind /usr/src -name \e*\e.[1-9]\(ga 561.Pp 562To produce a series of PostScript manuals for A4 paper: 563.Pp 564.Dl $ mandoc \-T ps \-O paper=a4 mdoc.5 man.5 \*(Gt manuals.ps 565.Pp 566Convert a modern 567.Xr mdoc 5 568manual to the older 569.Xr man 5 570format, for use on systems lacking an 571.Xr mdoc 5 572parser: 573.Pp 574.Dl $ mandoc \-T man foo.mdoc \*(Gt foo.man 575.Sh DIAGNOSTICS 576Messages displayed by 577.Nm 578follow this format: 579.Pp 580.D1 Nm Ns : Ar file : Ns Ar line : Ns Ar column : level : message : macro args 581.Pp 582Line and column numbers start at 1. 583Both are omitted for messages referring to an input file as a whole. 584Macro names and arguments are omitted where meaningless. 585Fatal messages about invalid command line arguments 586or operating system errors, for example when memory is exhausted, 587may also omit the 588.Ar file 589and 590.Ar level 591fields. 592.Pp 593Message levels have the following meanings: 594.Bl -tag -width "warning" 595.It Cm unsupp 596An input file uses unsupported low-level 597.Xr mandoc_roff 5 598features. 599The output may be incomplete and/or misformatted, 600so using GNU troff instead of 601.Nm 602to process the file may be preferable. 603.It Cm error 604An input file contains invalid syntax that cannot be safely interpreted. 605By discarding part of the input or inserting missing tokens, 606the parser is able to continue, and the error does not prevent 607generation of formatted output, but typically, preparing that 608output involves information loss, broken document structure 609or unintended formatting, no matter whether 610.Nm 611or GNU troff is used. 612In many cases, the output of 613.Nm 614and GNU troff is identical, but in some, 615.Nm 616is more resilient than GNU troff with respect to malformed input. 617.Pp 618Non-existent or unreadable input files are also reported on the 619.Cm error 620level. 621In that case, the parser cannot even be started and no output 622is produced from those input files. 623.It Cm warning 624An input file uses obsolete, discouraged or non-portable syntax. 625All the same, the meaning of the input is unambiguous and a correct 626rendering can be produced. 627Documents causing warnings may render poorly when using other 628formatting tools instead of 629.Nm . 630.El 631.Pp 632Messages of the 633.Cm warning , 634.Cm error , 635and 636.Cm unsupp 637levels except those about non-existent or unreadable input files 638are hidden unless their level, or a lower level, is requested using a 639.Fl W 640option or 641.Fl T Cm lint 642output mode. 643.Ss Warnings related to the document prologue 644.Bl -ohang 645.It Sy "missing manual title, using UNTITLED" 646.Pq mdoc 647A 648.Ic \&Dt 649macro has no arguments, or there is no 650.Ic \&Dt 651macro before the first non-prologue macro. 652.It Sy "missing manual title, using \(dq\(dq" 653.Pq man 654There is no 655.Ic \&TH 656macro, or it has no arguments. 657.It Sy "lower case character in document title" 658.Pq mdoc , man 659The title is still used as given in the 660.Ic \&Dt 661or 662.Ic \&TH 663macro. 664.It Sy "missing manual section, using \(dq\(dq" 665.Pq mdoc , man 666A 667.Ic \&Dt 668or 669.Ic \&TH 670macro lacks the mandatory section argument. 671.It Sy "unknown manual section" 672.Pq mdoc 673The section number in a 674.Ic \&Dt 675line is invalid, but still used. 676.It Sy "missing date, using today's date" 677.Pq mdoc, man 678The document was parsed as 679.Xr mdoc 5 680and it has no 681.Ic \&Dd 682macro, or the 683.Ic \&Dd 684macro has no arguments or only empty arguments; 685or the document was parsed as 686.Xr man 5 687and it has no 688.Ic \&TH 689macro, or the 690.Ic \&TH 691macro has less than three arguments or its third argument is empty. 692.It Sy "cannot parse date, using it verbatim" 693.Pq mdoc , man 694The date given in a 695.Ic \&Dd 696or 697.Ic \&TH 698macro does not follow the conventional format. 699.It Sy "missing Os macro, using \(dq\(dq" 700.Pq mdoc 701The default or current system is not shown in this case. 702.It Sy "duplicate prologue macro" 703.Pq mdoc 704One of the prologue macros occurs more than once. 705The last instance overrides all previous ones. 706.It Sy "late prologue macro" 707.Pq mdoc 708A 709.Ic \&Dd 710or 711.Ic \&Os 712macro occurs after some non-prologue macro, but still takes effect. 713.It Sy "skipping late title macro" 714.Pq mdoc 715The 716.Ic \&Dt 717macro appears after the first non-prologue macro. 718Traditional formatters cannot handle this because 719they write the page header before parsing the document body. 720Even though this technical restriction does not apply to 721.Nm , 722traditional semantics is preserved. 723The late macro is discarded including its arguments. 724.It Sy "prologue macros out of order" 725.Pq mdoc 726The prologue macros are not given in the conventional order 727.Ic \&Dd , 728.Ic \&Dt , 729.Ic \&Os . 730All three macros are used even when given in another order. 731.El 732.Ss Warnings regarding document structure 733.Bl -ohang 734.It Sy ".so is fragile, better use ln(1)" 735.Pq roff 736Including files only works when the parser program runs with the correct 737current working directory. 738.It Sy "no document body" 739.Pq mdoc , man 740The document body contains neither text nor macros. 741An empty document is shown, consisting only of a header and a footer line. 742.It Sy "content before first section header" 743.Pq mdoc , man 744Some macros or text precede the first 745.Ic \&Sh 746or 747.Ic \&SH 748section header. 749The offending macros and text are parsed and added to the top level 750of the syntax tree, outside any section block. 751.It Sy "first section is not NAME" 752.Pq mdoc 753The argument of the first 754.Ic \&Sh 755macro is not 756.Sq NAME . 757This may confuse 758.Xr makewhatis 8 759and 760.Xr apropos 1 . 761.It Sy "NAME section without name" 762.Pq mdoc 763The NAME section does not contain any 764.Ic \&Nm 765child macro. 766.It Sy "NAME section without description" 767.Pq mdoc 768The NAME section lacks the mandatory 769.Ic \&Nd 770child macro. 771.It Sy "description not at the end of NAME" 772.Pq mdoc 773The NAME section does contain an 774.Ic \&Nd 775child macro, but other content follows it. 776.It Sy "bad NAME section content" 777.Pq mdoc 778The NAME section contains plain text or macros other than 779.Ic \&Nm 780and 781.Ic \&Nd . 782.It Sy "missing description line, using \(dq\(dq" 783.Pq mdoc 784The 785.Ic \&Nd 786macro lacks the required argument. 787The title line of the manual will end after the dash. 788.It Sy "sections out of conventional order" 789.Pq mdoc 790A standard section occurs after another section it usually precedes. 791All section titles are used as given, 792and the order of sections is not changed. 793.It Sy "duplicate section title" 794.Pq mdoc 795The same standard section title occurs more than once. 796.It Sy "unexpected section" 797.Pq mdoc 798A standard section header occurs in a section of the manual 799where it normally isn't useful. 800.It Sy "unusual Xr order" 801.Pq mdoc 802In the SEE ALSO section, an 803.Ic \&Xr 804macro with a lower section number follows one with a higher number, 805or two 806.Ic \&Xr 807macros referring to the same section are out of alphabetical order. 808.It Sy "unusual Xr punctuation" 809.Pq mdoc 810In the SEE ALSO section, punctuation between two 811.Ic \&Xr 812macros differs from a single comma, or there is trailing punctuation 813after the last 814.Ic \&Xr 815macro. 816.It Sy "AUTHORS section without An macro" 817.Pq mdoc 818An AUTHORS sections contains no 819.Ic \&An 820macros, or only empty ones. 821Probably, there are author names lacking markup. 822.El 823.Ss "Warnings related to macros and nesting" 824.Bl -ohang 825.It Sy "obsolete macro" 826.Pq mdoc 827See the 828.Xr mdoc 5 829manual for replacements. 830.It Sy "macro neither callable nor escaped" 831.Pq mdoc 832The name of a macro that is not callable appears on a macro line. 833It is printed verbatim. 834If the intention is to call it, move it to its own input line; 835otherwise, escape it by prepending 836.Sq \e& . 837.It Sy "skipping paragraph macro" 838In 839.Xr mdoc 5 840documents, this happens 841.Bl -dash -compact 842.It 843at the beginning and end of sections and subsections 844.It 845right before non-compact lists and displays 846.It 847at the end of items in non-column, non-compact lists 848.It 849and for multiple consecutive paragraph macros. 850.El 851In 852.Xr man 5 853documents, it happens 854.Bl -dash -compact 855.It 856for empty 857.Ic \&P , 858.Ic \&PP , 859and 860.Ic \&LP 861macros 862.It 863for 864.Ic \&IP 865macros having neither head nor body arguments 866.It 867for 868.Ic \&br 869or 870.Ic \&sp 871right after 872.Ic \&SH 873or 874.Ic \&SS 875.El 876.It Sy "moving paragraph macro out of list" 877.Pq mdoc 878A list item in a 879.Ic \&Bl 880list contains a trailing paragraph macro. 881The paragraph macro is moved after the end of the list. 882.It Sy "skipping no-space macro" 883.Pq mdoc 884An input line begins with an 885.Ic \&Ns 886macro. 887The macro is ignored. 888.It Sy "blocks badly nested" 889.Pq mdoc 890If two blocks intersect, one should completely contain the other. 891Otherwise, rendered output is likely to look strange in any output 892format, and rendering in SGML-based output formats is likely to be 893outright wrong because such languages do not support badly nested 894blocks at all. 895Typical examples of badly nested blocks are 896.Qq Ic \&Ao \&Bo \&Ac \&Bc 897and 898.Qq Ic \&Ao \&Bq \&Ac . 899In these examples, 900.Ic \&Ac 901breaks 902.Ic \&Bo 903and 904.Ic \&Bq , 905respectively. 906.It Sy "nested displays are not portable" 907.Pq mdoc 908A 909.Ic \&Bd , 910.Ic \&D1 , 911or 912.Ic \&Dl 913display occurs nested inside another 914.Ic \&Bd 915display. 916This works with 917.Nm , 918but fails with most other implementations. 919.It Sy "moving content out of list" 920.Pq mdoc 921A 922.Ic \&Bl 923list block contains text or macros before the first 924.Ic \&It 925macro. 926The offending children are moved before the beginning of the list. 927.It Sy "fill mode already enabled, skipping" 928.Pq man 929A 930.Ic \&fi 931request occurs even though the document is still in fill mode, 932or already switched back to fill mode. 933It has no effect. 934.It Sy "fill mode already disabled, skipping" 935.Pq man 936An 937.Ic \&nf 938request occurs even though the document already switched to no-fill mode 939and did not switch back to fill mode yet. 940It has no effect. 941.It Sy "line scope broken" 942.Pq man 943While parsing the next-line scope of the previous macro, 944another macro is found that prematurely terminates the previous one. 945The previous, interrupted macro is deleted from the parse tree. 946.El 947.Ss "Warnings related to missing arguments" 948.Bl -ohang 949.It Sy "skipping empty request" 950.Pq roff , eqn 951The macro name is missing from a macro definition request, 952or an 953.Xr eqn 5 954control statement or operation keyword lacks its required argument. 955.It Sy "conditional request controls empty scope" 956.Pq roff 957A conditional request is only useful if any of the following 958follows it on the same logical input line: 959.Bl -dash -compact 960.It 961The 962.Sq \e{ 963keyword to open a multi-line scope. 964.It 965A request or macro or some text, resulting in a single-line scope. 966.It 967The immediate end of the logical line without any intervening whitespace, 968resulting in next-line scope. 969.El 970Here, a conditional request is followed by trailing whitespace only, 971and there is no other content on its logical input line. 972Note that it doesn't matter whether the logical input line is split 973across multiple physical input lines using 974.Sq \e 975line continuation characters. 976This is one of the rare cases 977where trailing whitespace is syntactically significant. 978The conditional request controls a scope containing whitespace only, 979so it is unlikely to have a significant effect, 980except that it may control a following 981.Ic \&el 982clause. 983.It Sy "skipping empty macro" 984.Pq mdoc 985The indicated macro has no arguments and hence no effect. 986.It Sy "empty block" 987.Pq mdoc , man 988A 989.Ic \&Bd , 990.Ic \&Bk , 991.Ic \&Bl , 992.Ic \&D1 , 993.Ic \&Dl , 994.Ic \&RS , 995or 996.Ic \&UR 997block contains nothing in its body and will produce no output. 998.It Sy "empty argument, using 0n" 999.Pq mdoc 1000The required width is missing after 1001.Ic \&Bd 1002or 1003.Ic \&Bl 1004.Fl offset 1005or 1006.Fl width. 1007.It Sy "missing display type, using -ragged" 1008.Pq mdoc 1009The 1010.Ic \&Bd 1011macro is invoked without the required display type. 1012.It Sy "list type is not the first argument" 1013.Pq mdoc 1014In a 1015.Ic \&Bl 1016macro, at least one other argument precedes the type argument. 1017The 1018.Nm 1019utility copes with any argument order, but some other 1020.Xr mdoc 5 1021implementations do not. 1022.It Sy "missing -width in -tag list, using 8n" 1023.Pq mdoc 1024Every 1025.Ic \&Bl 1026macro having the 1027.Fl tag 1028argument requires 1029.Fl width , 1030too. 1031.It Sy "missing utility name, using \(dq\(dq" 1032.Pq mdoc 1033The 1034.Ic \&Ex Fl std 1035macro is called without an argument before 1036.Ic \&Nm 1037has first been called with an argument. 1038.It Sy "missing function name, using \(dq\(dq" 1039.Pq mdoc 1040The 1041.Ic \&Fo 1042macro is called without an argument. 1043No function name is printed. 1044.It Sy "empty head in list item" 1045.Pq mdoc 1046In a 1047.Ic \&Bl 1048.Fl diag , 1049.Fl hang , 1050.Fl inset , 1051.Fl ohang , 1052or 1053.Fl tag 1054list, an 1055.Ic \&It 1056macro lacks the required argument. 1057The item head is left empty. 1058.It Sy "empty list item" 1059.Pq mdoc 1060In a 1061.Ic \&Bl 1062.Fl bullet , 1063.Fl dash , 1064.Fl enum , 1065or 1066.Fl hyphen 1067list, an 1068.Ic \&It 1069block is empty. 1070An empty list item is shown. 1071.It Sy "missing font type, using \efR" 1072.Pq mdoc 1073A 1074.Ic \&Bf 1075macro has no argument. 1076It switches to the default font. 1077.It Sy "unknown font type, using \efR" 1078.Pq mdoc 1079The 1080.Ic \&Bf 1081argument is invalid. 1082The default font is used instead. 1083.It Sy "nothing follows prefix" 1084.Pq mdoc 1085A 1086.Ic \&Pf 1087macro has no argument, or only one argument and no macro follows 1088on the same input line. 1089This defeats its purpose; in particular, spacing is not suppressed 1090before the text or macros following on the next input line. 1091.It Sy "empty reference block" 1092.Pq mdoc 1093An 1094.Ic \&Rs 1095macro is immediately followed by an 1096.Ic \&Re 1097macro on the next input line. 1098Such an empty block does not produce any output. 1099.It Sy "missing -std argument, adding it" 1100.Pq mdoc 1101An 1102.Ic \&Ex 1103or 1104.Ic \&Rv 1105macro lacks the required 1106.Fl std 1107argument. 1108The 1109.Nm 1110utility assumes 1111.Fl std 1112even when it is not specified, but other implementations may not. 1113.It Sy "missing option string, using \(dq\(dq" 1114.Pq man 1115The 1116.Ic \&OP 1117macro is invoked without any argument. 1118An empty pair of square brackets is shown. 1119.It Sy "missing resource identifier, using \(dq\(dq" 1120.Pq man 1121The 1122.Ic \&UR 1123macro is invoked without any argument. 1124An empty pair of angle brackets is shown. 1125.It Sy "missing eqn box, using \(dq\(dq" 1126.Pq eqn 1127A diacritic mark or a binary operator is found, 1128but there is nothing to the left of it. 1129An empty box is inserted. 1130.El 1131.Ss "Warnings related to bad macro arguments" 1132.Bl -ohang 1133.It Sy "unterminated quoted argument" 1134.Pq roff 1135Macro arguments can be enclosed in double quote characters 1136such that space characters and macro names contained in the quoted 1137argument need not be escaped. 1138The closing quote of the last argument of a macro can be omitted. 1139However, omitting it is not recommended because it makes the code 1140harder to read. 1141.It Sy "duplicate argument" 1142.Pq mdoc 1143A 1144.Ic \&Bd 1145or 1146.Ic \&Bl 1147macro has more than one 1148.Fl compact , 1149more than one 1150.Fl offset , 1151or more than one 1152.Fl width 1153argument. 1154All but the last instances of these arguments are ignored. 1155.It Sy "skipping duplicate argument" 1156.Pq mdoc 1157An 1158.Ic \&An 1159macro has more than one 1160.Fl split 1161or 1162.Fl nosplit 1163argument. 1164All but the first of these arguments are ignored. 1165.It Sy "skipping duplicate display type" 1166.Pq mdoc 1167A 1168.Ic \&Bd 1169macro has more than one type argument; the first one is used. 1170.It Sy "skipping duplicate list type" 1171.Pq mdoc 1172A 1173.Ic \&Bl 1174macro has more than one type argument; the first one is used. 1175.It Sy "skipping -width argument" 1176.Pq mdoc 1177A 1178.Ic \&Bl 1179.Fl column , 1180.Fl diag , 1181.Fl ohang , 1182.Fl inset , 1183or 1184.Fl item 1185list has a 1186.Fl width 1187argument. 1188That has no effect. 1189.It Sy "wrong number of cells" 1190In a line of a 1191.Ic \&Bl Fl column 1192list, the number of tabs or 1193.Ic \&Ta 1194macros is less than the number expected from the list header line 1195or exceeds the expected number by more than one. 1196Missing cells remain empty, and all cells exceeding the number of 1197columns are joined into one single cell. 1198.It Sy "unknown AT&T UNIX version" 1199.Pq mdoc 1200An 1201.Ic \&At 1202macro has an invalid argument. 1203It is used verbatim, with 1204.Qq "AT&T UNIX " 1205prefixed to it. 1206.It Sy "comma in function argument" 1207.Pq mdoc 1208An argument of an 1209.Ic \&Fa 1210or 1211.Ic \&Fn 1212macro contains a comma; it should probably be split into two arguments. 1213.It Sy "parenthesis in function name" 1214.Pq mdoc 1215The first argument of an 1216.Ic \&Fc 1217or 1218.Ic \&Fn 1219macro contains an opening or closing parenthesis; that's probably wrong, 1220parentheses are added automatically. 1221.It Sy "invalid content in Rs block" 1222.Pq mdoc 1223An 1224.Ic \&Rs 1225block contains plain text or non-% macros. 1226The bogus content is left in the syntax tree. 1227Formatting may be poor. 1228.It Sy "invalid Boolean argument" 1229.Pq mdoc 1230An 1231.Ic \&Sm 1232macro has an argument other than 1233.Cm on 1234or 1235.Cm off . 1236The invalid argument is moved out of the macro, which leaves the macro 1237empty, causing it to toggle the spacing mode. 1238.It Sy "unknown font, skipping request" 1239.Pq man , tbl 1240A 1241.Xr mandoc_roff 5 1242.Ic \&ft 1243request or a 1244.Xr tbl 5 1245.Ic \&f 1246layout modifier has an unknown 1247.Ar font 1248argument. 1249.It Sy "odd number of characters in request" 1250.Pq roff 1251A 1252.Ic \&tr 1253request contains an odd number of characters. 1254The last character is mapped to the blank character. 1255.El 1256.Ss "Warnings related to plain text" 1257.Bl -ohang 1258.It Sy "blank line in fill mode, using .sp" 1259.Pq mdoc 1260The meaning of blank input lines is only well-defined in non-fill mode: 1261In fill mode, line breaks of text input lines are not supposed to be 1262significant. 1263However, for compatibility with groff, blank lines in fill mode 1264are replaced with 1265.Ic \&sp 1266requests. 1267.It Sy "tab in filled text" 1268.Pq mdoc , man 1269The meaning of tab characters is only well-defined in non-fill mode: 1270In fill mode, whitespace is not supposed to be significant 1271on text input lines. 1272As an implementation dependent choice, tab characters on text lines 1273are passed through to the formatters in any case. 1274Given that the text before the tab character will be filled, 1275it is hard to predict which tab stop position the tab will advance to. 1276.It Sy "whitespace at end of input line" 1277.Pq mdoc , man , roff 1278Whitespace at the end of input lines is almost never semantically 1279significant \(em but in the odd case where it might be, it is 1280extremely confusing when reviewing and maintaining documents. 1281.It Sy "bad comment style" 1282.Pq roff 1283Comment lines start with a dot, a backslash, and a double-quote character. 1284The 1285.Nm 1286utility treats the line as a comment line even without the backslash, 1287but leaving out the backslash might not be portable. 1288.It Sy "invalid escape sequence" 1289.Pq roff 1290An escape sequence has an invalid opening argument delimiter, lacks the 1291closing argument delimiter, or the argument has too few characters. 1292If the argument is incomplete, 1293.Ic \e* 1294and 1295.Ic \en 1296expand to an empty string, 1297.Ic \eB 1298to the digit 1299.Sq 0 , 1300and 1301.Ic \ew 1302to the length of the incomplete argument. 1303All other invalid escape sequences are ignored. 1304.It Sy "undefined string, using \(dq\(dq" 1305.Pq roff 1306If a string is used without being defined before, 1307its value is implicitly set to the empty string. 1308However, defining strings explicitly before use 1309keeps the code more readable. 1310.El 1311.Ss "Warnings related to tables" 1312.Bl -ohang 1313.It Sy "tbl line starts with span" 1314.Pq tbl 1315The first cell in a table layout line is a horizontal span 1316.Pq Sq Cm s . 1317Data provided for this cell is ignored, and nothing is printed in the cell. 1318.It Sy "tbl column starts with span" 1319.Pq tbl 1320The first line of a table layout specification 1321requests a vertical span 1322.Pq Sq Cm ^ . 1323Data provided for this cell is ignored, and nothing is printed in the cell. 1324.It Sy "skipping vertical bar in tbl layout" 1325.Pq tbl 1326A table layout specification contains more than two consecutive vertical bars. 1327A double bar is printed, all additional bars are discarded. 1328.El 1329.Ss "Errors related to tables" 1330.Bl -ohang 1331.It Sy "non-alphabetic character in tbl options" 1332.Pq tbl 1333The table options line contains a character other than a letter, 1334blank, or comma where the beginning of an option name is expected. 1335The character is ignored. 1336.It Sy "skipping unknown tbl option" 1337.Pq tbl 1338The table options line contains a string of letters that does not 1339match any known option name. 1340The word is ignored. 1341.It Sy "missing tbl option argument" 1342.Pq tbl 1343A table option that requires an argument is not followed by an 1344opening parenthesis, or the opening parenthesis is immediately 1345followed by a closing parenthesis. 1346The option is ignored. 1347.It Sy "wrong tbl option argument size" 1348.Pq tbl 1349A table option argument contains an invalid number of characters. 1350Both the option and the argument are ignored. 1351.It Sy "empty tbl layout" 1352.Pq tbl 1353A table layout specification is completely empty, 1354specifying zero lines and zero columns. 1355As a fallback, a single left-justified column is used. 1356.It Sy "invalid character in tbl layout" 1357.Pq tbl 1358A table layout specification contains a character that can neither 1359be interpreted as a layout key character nor as a layout modifier, 1360or a modifier precedes the first key. 1361The invalid character is discarded. 1362.It Sy "unmatched parenthesis in tbl layout" 1363.Pq tbl 1364A table layout specification contains an opening parenthesis, 1365but no matching closing parenthesis. 1366The rest of the input line, starting from the parenthesis, has no effect. 1367.It Sy "tbl without any data cells" 1368.Pq tbl 1369A table does not contain any data cells. 1370It will probably produce no output. 1371.It Sy "ignoring data in spanned tbl cell" 1372.Pq tbl 1373A table cell is marked as a horizontal span 1374.Pq Sq Cm s 1375or vertical span 1376.Pq Sq Cm ^ 1377in the table layout, but it contains data. 1378The data is ignored. 1379.It Sy "ignoring extra tbl data cells" 1380.Pq tbl 1381A data line contains more cells than the corresponding layout line. 1382The data in the extra cells is ignored. 1383.It Sy "data block open at end of tbl" 1384.Pq tbl 1385A data block is opened with 1386.Cm T{ , 1387but never closed with a matching 1388.Cm T} . 1389The remaining data lines of the table are all put into one cell, 1390and any remaining cells stay empty. 1391.El 1392.Ss "Errors related to roff, mdoc, and man code" 1393.Bl -ohang 1394.It Sy "input stack limit exceeded, infinite loop?" 1395.Pq roff 1396Explicit recursion limits are implemented for the following features, 1397in order to prevent infinite loops: 1398.Bl -dash -compact 1399.It 1400expansion of nested escape sequences 1401including expansion of strings and number registers, 1402.It 1403expansion of nested user-defined macros, 1404.It 1405and 1406.Ic \&so 1407file inclusion. 1408.El 1409When a limit is hit, the output is incorrect, typically losing 1410some content, but the parser can continue. 1411.It Sy "skipping bad character" 1412.Pq mdoc , man , roff 1413The input file contains a byte that is not a printable 1414.Xr ascii 5 1415character. 1416The message mentions the character number. 1417The offending byte is replaced with a question mark 1418.Pq Sq \&? . 1419Consider editing the input file to replace the byte with an ASCII 1420transliteration of the intended character. 1421.It Sy "skipping unknown macro" 1422.Pq mdoc , man , roff 1423The first identifier on a request or macro line is neither recognized as a 1424.Xr mandoc_roff 5 1425request, nor as a user-defined macro, nor, respectively, as an 1426.Xr mdoc 5 1427or 1428.Xr man 5 1429macro. 1430It may be mistyped or unsupported. 1431The request or macro is discarded including its arguments. 1432.It Sy "skipping insecure request" 1433.Pq roff 1434An input file attempted to run a shell command 1435or to read or write an external file. 1436Such attempts are denied for security reasons. 1437.It Sy "skipping item outside list" 1438.Pq mdoc , eqn 1439An 1440.Ic \&It 1441macro occurs outside any 1442.Ic \&Bl 1443list, or an 1444.Xr eqn 5 1445.Ic above 1446delimiter occurs outside any pile. 1447It is discarded including its arguments. 1448.It Sy "skipping column outside column list" 1449.Pq mdoc 1450A 1451.Ic \&Ta 1452macro occurs outside any 1453.Ic \&Bl Fl column 1454block. 1455It is discarded including its arguments. 1456.It Sy "skipping end of block that is not open" 1457.Pq mdoc , man , eqn , tbl , roff 1458Various syntax elements can only be used to explicitly close blocks 1459that have previously been opened. 1460An 1461.Xr mdoc 5 1462block closing macro, a 1463.Xr man 5 1464.Ic \&RE 1465or 1466.Ic \&UE 1467macro, an 1468.Xr eqn 5 1469right delimiter or closing brace, or the end of an equation, table, or 1470.Xr mandoc_roff 5 1471conditional request is encountered but no matching block is open. 1472The offending request or macro is discarded. 1473.It Sy "fewer RS blocks open, skipping" 1474.Pq man 1475The 1476.Ic \&RE 1477macro is invoked with an argument, but less than the specified number of 1478.Ic \&RS 1479blocks is open. 1480The 1481.Ic \&RE 1482macro is discarded. 1483.It Sy "inserting missing end of block" 1484.Pq mdoc , tbl 1485Various 1486.Xr mdoc 5 1487macros as well as tables require explicit closing by dedicated macros. 1488A block that doesn't support bad nesting 1489ends before all of its children are properly closed. 1490The open child nodes are closed implicitly. 1491.It Sy "appending missing end of block" 1492.Pq mdoc , man , eqn , tbl , roff 1493At the end of the document, an explicit 1494.Xr mdoc 5 1495block, a 1496.Xr man 5 1497next-line scope or 1498.Ic \&RS 1499or 1500.Ic \&UR 1501block, an equation, table, or 1502.Xr mandoc_roff 5 1503conditional or ignore block is still open. 1504The open block is closed implicitly. 1505.It Sy "escaped character not allowed in a name" 1506.Pq roff 1507Macro, string and register identifiers consist of printable, 1508non-whitespace ASCII characters. 1509Escape sequences and characters and strings expressed in terms of them 1510cannot form part of a name. 1511The first argument of an 1512.Ic \&am , 1513.Ic \&as , 1514.Ic \&de , 1515.Ic \&ds , 1516.Ic \&nr , 1517or 1518.Ic \&rr 1519request, or any argument of an 1520.Ic \&rm 1521request, or the name of a request or user defined macro being called, 1522is terminated by an escape sequence. 1523In the cases of 1524.Ic \&as , 1525.Ic \&ds , 1526and 1527.Ic \&nr , 1528the request has no effect at all. 1529In the cases of 1530.Ic \&am , 1531.Ic \&de , 1532.Ic \&rr , 1533and 1534.Ic \&rm , 1535what was parsed up to this point is used as the arguments to the request, 1536and the rest of the input line is discarded including the escape sequence. 1537When parsing for a request or a user-defined macro name to be called, 1538only the escape sequence is discarded. 1539The characters preceding it are used as the request or macro name, 1540the characters following it are used as the arguments to the request or macro. 1541.It Sy "NOT IMPLEMENTED: Bd -file" 1542.Pq mdoc 1543For security reasons, the 1544.Ic \&Bd 1545macro does not support the 1546.Fl file 1547argument. 1548By requesting the inclusion of a sensitive file, a malicious document 1549might otherwise trick a privileged user into inadvertently displaying 1550the file on the screen, revealing the file content to bystanders. 1551The argument is ignored including the file name following it. 1552.It Sy "skipping display without arguments" 1553.Pq mdoc 1554A 1555.Ic \&Bd 1556block macro does not have any arguments. 1557The block is discarded, and the block content is displayed in 1558whatever mode was active before the block. 1559.It Sy "missing list type, using -item" 1560.Pq mdoc 1561A 1562.Ic \&Bl 1563macro fails to specify the list type. 1564.It Sy "missing manual name, using \(dq\(dq" 1565.Pq mdoc 1566The first call to 1567.Ic \&Nm 1568lacks the required argument. 1569.It Sy "uname(3) system call failed, using UNKNOWN" 1570.Pq mdoc 1571The 1572.Ic \&Os 1573macro is called without arguments, and the 1574.Xr uname 3 1575system call failed. 1576As a workaround, 1577.Nm 1578can be compiled with 1579.Sm off 1580.Fl D Cm OSNAME=\(dq\e\(dq Ar string Cm \e\(dq\(dq . 1581.Sm on 1582.It Sy "unknown standard specifier" 1583.Pq mdoc 1584An 1585.Ic \&St 1586macro has an unknown argument and is discarded. 1587.It Sy "skipping request without numeric argument" 1588.Pq roff , eqn 1589An 1590.Ic \&it 1591request or an 1592.Xr eqn 5 1593.Ic \&size 1594or 1595.Ic \&gsize 1596statement has a non-numeric or negative argument or no argument at all. 1597The invalid request or statement is ignored. 1598.It Sy "NOT IMPLEMENTED: .so with absolute path or \(dq..\(dq" 1599.Pq roff 1600For security reasons, 1601.Nm 1602allows 1603.Ic \&so 1604file inclusion requests only with relative paths 1605and only without ascending to any parent directory. 1606By requesting the inclusion of a sensitive file, a malicious document 1607might otherwise trick a privileged user into inadvertently displaying 1608the file on the screen, revealing the file content to bystanders. 1609.Nm 1610only shows the path as it appears behind 1611.Ic \&so . 1612.It Sy ".so request failed" 1613.Pq roff 1614Servicing a 1615.Ic \&so 1616request requires reading an external file, but the file could not be 1617opened. 1618.Nm 1619only shows the path as it appears behind 1620.Ic \&so . 1621.It Sy "skipping all arguments" 1622.Pq mdoc , man , eqn , roff 1623An 1624.Xr mdoc 5 1625.Ic \&Bt , 1626.Ic \&Ed , 1627.Ic \&Ef , 1628.Ic \&Ek , 1629.Ic \&El , 1630.Ic \&Lp , 1631.Ic \&Pp , 1632.Ic \&Re , 1633.Ic \&Rs , 1634or 1635.Ic \&Ud 1636macro, an 1637.Ic \&It 1638macro in a list that don't support item heads, a 1639.Xr man 5 1640.Ic \&LP , 1641.Ic \&P , 1642or 1643.Ic \&PP 1644macro, an 1645.Xr eqn 5 1646.Ic \&EQ 1647or 1648.Ic \&EN 1649macro, or a 1650.Xr mandoc_roff 5 1651.Ic \&br , 1652.Ic \&fi , 1653or 1654.Ic \&nf 1655request or 1656.Sq \&.. 1657block closing request is invoked with at least one argument. 1658All arguments are ignored. 1659.It Sy "skipping excess arguments" 1660.Pq mdoc , man , roff 1661A macro or request is invoked with too many arguments: 1662.Bl -dash -offset 2n -width 2n -compact 1663.It 1664.Ic \&Fo , 1665.Ic \&PD , 1666.Ic \&RS , 1667.Ic \&UR , 1668.Ic \&ft , 1669or 1670.Ic \&sp 1671with more than one argument 1672.It 1673.Ic \&An 1674with another argument after 1675.Fl split 1676or 1677.Fl nosplit 1678.It 1679.Ic \&RE 1680with more than one argument or with a non-integer argument 1681.It 1682.Ic \&OP 1683or a request of the 1684.Ic \&de 1685family with more than two arguments 1686.It 1687.Ic \&Dt 1688with more than three arguments 1689.It 1690.Ic \&TH 1691with more than five arguments 1692.It 1693.Ic \&Bd , 1694.Ic \&Bk , 1695or 1696.Ic \&Bl 1697with invalid arguments 1698.El 1699The excess arguments are ignored. 1700.El 1701.Ss Unsupported features 1702.Bl -ohang 1703.It Sy "input too large" 1704.Pq mdoc , man 1705Currently, 1706.Nm 1707cannot handle input files larger than its arbitrary size limit 1708of 2^31 bytes (2 Gigabytes). 1709Since useful manuals are always small, this is not a problem in practice. 1710Parsing is aborted as soon as the condition is detected. 1711.It Sy "unsupported control character" 1712.Pq roff 1713An ASCII control character supported by other 1714.Xr mandoc_roff 5 1715implementations but not by 1716.Nm 1717was found in an input file. 1718It is replaced by a question mark. 1719.It Sy "unsupported roff request" 1720.Pq roff 1721An input file contains a 1722.Xr mandoc_roff 5 1723request supported by GNU troff or Heirloom troff but not by 1724.Nm , 1725and it is likely that this will cause information loss 1726or considerable misformatting. 1727.It Sy "eqn delim option in tbl" 1728.Pq eqn , tbl 1729The options line of a table defines equation delimiters. 1730Any equation source code contained in the table will be printed unformatted. 1731.It Sy "unsupported table layout modifier" 1732.Pq tbl 1733A table layout specification contains an 1734.Sq Cm m 1735modifier. 1736The modifier is discarded. 1737.It Sy "ignoring macro in table" 1738.Pq tbl , mdoc , man 1739A table contains an invocation of an 1740.Xr mdoc 5 1741or 1742.Xr man 5 1743macro or of an undefined macro. 1744The macro is ignored, and its arguments are handled 1745as if they were a text line. 1746.El 1747.Sh SEE ALSO 1748.Xr eqn 5 , 1749.Xr man 5 , 1750.Xr mandoc_char 5 , 1751.Xr mandoc_roff 5 , 1752.Xr mdoc 5 , 1753.Xr tbl 5 1754.Sh AUTHORS 1755.An -nosplit 1756The 1757.Nm 1758utility was written by 1759.An Kristaps Dzonsons Aq Mt kristaps@bsd.lv 1760and is maintained by 1761.An Ingo Schwarze Aq Mt schwarze@openbsd.org . 1762.Sh BUGS 1763In 1764.Fl T Cm html , 1765the maximum size of an element attribute is determined by 1766.Dv BUFSIZ , 1767which is usually 1024 bytes. 1768Be aware of this when setting long link 1769formats such as 1770.Fl O Cm style Ns = Ns Ar really/long/link . 1771