Annotation of src/usr.bin/mandoc/mandoc.1, Revision 1.57
1.57 ! schwarze 1: .\" $OpenBSD: mandoc.1,v 1.56 2013/07/13 19:27:46 schwarze Exp $
1.1 kristaps 2: .\"
1.44 schwarze 3: .\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
1.1 kristaps 4: .\"
5: .\" Permission to use, copy, modify, and distribute this software for any
1.3 schwarze 6: .\" purpose with or without fee is hereby granted, provided that the above
7: .\" copyright notice and this permission notice appear in all copies.
1.1 kristaps 8: .\"
1.3 schwarze 9: .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10: .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11: .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12: .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13: .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14: .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15: .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1.1 kristaps 16: .\"
1.57 ! schwarze 17: .Dd $Mdocdate: July 13 2013 $
1.2 deraadt 18: .Dt MANDOC 1
1.1 kristaps 19: .Os
20: .Sh NAME
21: .Nm mandoc
22: .Nd format and display UNIX manuals
23: .Sh SYNOPSIS
24: .Nm mandoc
1.26 jmc 25: .Op Fl V
1.54 schwarze 26: .Sm off
27: .Op Fl I Cm os Li = Ar name
28: .Sm on
1.1 kristaps 29: .Op Fl m Ns Ar format
1.26 jmc 30: .Op Fl O Ns Ar option
1.17 schwarze 31: .Op Fl T Ns Ar output
1.38 schwarze 32: .Op Fl W Ns Ar level
1.45 schwarze 33: .Op Ar
1.1 kristaps 34: .Sh DESCRIPTION
35: The
36: .Nm
1.10 schwarze 37: utility formats
1.1 kristaps 38: .Ux
1.25 jmc 39: manual pages for display.
1.53 schwarze 40: .Pp
41: By default,
42: .Nm
43: reads
44: .Xr mdoc 7
45: or
46: .Xr man 7
47: text from stdin, implying
48: .Fl m Ns Cm andoc ,
49: and produces
50: .Fl T Ns Cm ascii
51: output.
52: .Pp
1.25 jmc 53: The arguments are as follows:
1.5 schwarze 54: .Bl -tag -width Ds
1.54 schwarze 55: .Sm off
56: .It Fl I Cm os Li = Ar name
57: .Sm on
58: Override the default operating system
59: .Ar name
60: for the
61: .Xr mdoc 7
62: .Sq \&Os
63: macro.
1.1 kristaps 64: .It Fl m Ns Ar format
1.25 jmc 65: Input format.
66: See
1.1 kristaps 67: .Sx Input Formats
1.25 jmc 68: for available formats.
69: Defaults to
1.26 jmc 70: .Fl m Ns Cm andoc .
71: .It Fl O Ns Ar option
1.25 jmc 72: Comma-separated output options.
1.1 kristaps 73: .It Fl T Ns Ar output
1.25 jmc 74: Output format.
75: See
1.1 kristaps 76: .Sx Output Formats
1.25 jmc 77: for available formats.
78: Defaults to
1.26 jmc 79: .Fl T Ns Cm ascii .
1.4 schwarze 80: .It Fl V
81: Print version and exit.
1.38 schwarze 82: .It Fl W Ns Ar level
83: Specify the minimum message
84: .Ar level
85: to be reported on the standard error output and to affect the exit status.
86: The
87: .Ar level
88: can be
89: .Cm warning ,
90: .Cm error ,
91: or
92: .Cm fatal .
93: The default is
94: .Fl W Ns Cm fatal ;
1.26 jmc 95: .Fl W Ns Cm all
1.38 schwarze 96: is an alias for
97: .Fl W Ns Cm warning .
98: See
99: .Sx EXIT STATUS
100: and
101: .Sx DIAGNOSTICS
102: for details.
103: .Pp
104: The special option
105: .Fl W Ns Cm stop
106: tells
107: .Nm
108: to exit after parsing a file that causes warnings or errors of at least
109: the requested level.
110: No formatted output will be produced from that file.
111: If both a
112: .Ar level
113: and
114: .Cm stop
115: are requested, they can be joined with a comma, for example
116: .Fl W Ns Cm error , Ns Cm stop .
1.26 jmc 117: .It Ar file
118: Read input from zero or more files.
1.25 jmc 119: If unspecified, reads from stdin.
120: If multiple files are specified,
1.1 kristaps 121: .Nm
122: will halt with the first failed parse.
123: .El
124: .Ss Input Formats
125: The
126: .Nm
127: utility accepts
128: .Xr mdoc 7
129: and
130: .Xr man 7
131: input with
1.26 jmc 132: .Fl m Ns Cm doc
1.1 kristaps 133: and
1.26 jmc 134: .Fl m Ns Cm an ,
1.25 jmc 135: respectively.
136: The
1.1 kristaps 137: .Xr mdoc 7
138: format is
139: .Em strongly
1.10 schwarze 140: recommended;
1.1 kristaps 141: .Xr man 7
142: should only be used for legacy manuals.
143: .Pp
144: A third option,
1.26 jmc 145: .Fl m Ns Cm andoc ,
1.1 kristaps 146: which is also the default, determines encoding on-the-fly: if the first
1.10 schwarze 147: non-comment macro is
1.11 schwarze 148: .Sq \&Dd
1.1 kristaps 149: or
1.11 schwarze 150: .Sq \&Dt ,
1.10 schwarze 151: the
1.1 kristaps 152: .Xr mdoc 7
153: parser is used; otherwise, the
154: .Xr man 7
155: parser is used.
156: .Pp
157: If multiple
1.10 schwarze 158: files are specified with
1.26 jmc 159: .Fl m Ns Cm andoc ,
1.25 jmc 160: each has its file-type determined this way.
161: If multiple files are
1.1 kristaps 162: specified and
1.26 jmc 163: .Fl m Ns Cm doc
1.1 kristaps 164: or
1.26 jmc 165: .Fl m Ns Cm an
1.1 kristaps 166: is specified, then this format is used exclusively.
167: .Ss Output Formats
168: The
169: .Nm
170: utility accepts the following
171: .Fl T
1.34 schwarze 172: arguments, which correspond to output modes:
1.48 jmc 173: .Bl -tag -width "-Tlocale"
1.26 jmc 174: .It Fl T Ns Cm ascii
1.42 schwarze 175: Produce 7-bit ASCII output.
1.25 jmc 176: This is the default.
177: See
1.20 schwarze 178: .Sx ASCII Output .
1.26 jmc 179: .It Fl T Ns Cm html
1.42 schwarze 180: Produce strict CSS1/HTML-4.01 output.
1.25 jmc 181: See
1.20 schwarze 182: .Sx HTML Output .
1.26 jmc 183: .It Fl T Ns Cm lint
184: Parse only: produce no output.
185: Implies
1.38 schwarze 186: .Fl W Ns Cm warning .
1.48 jmc 187: .It Fl T Ns Cm locale
188: Encode output using the current locale.
189: See
190: .Sx Locale Output .
1.46 schwarze 191: .It Fl T Ns Cm man
1.49 schwarze 192: Produce
1.46 schwarze 193: .Xr man 7
1.49 schwarze 194: format output.
195: See
196: .Sx Man Output .
1.36 schwarze 197: .It Fl T Ns Cm pdf
198: Produce PDF output.
199: See
200: .Sx PDF Output .
1.31 schwarze 201: .It Fl T Ns Cm ps
202: Produce PostScript output.
203: See
204: .Sx PostScript Output .
1.26 jmc 205: .It Fl T Ns Cm tree
206: Produce an indented parse tree.
1.48 jmc 207: .It Fl T Ns Cm utf8
208: Encode output in the UTF\-8 multi-byte format.
209: See
210: .Sx UTF\-8 Output .
1.26 jmc 211: .It Fl T Ns Cm xhtml
1.42 schwarze 212: Produce strict CSS1/XHTML-1.0 output.
1.25 jmc 213: See
1.21 schwarze 214: .Sx XHTML Output .
1.1 kristaps 215: .El
216: .Pp
217: If multiple input files are specified, these will be processed by the
218: corresponding filter in-order.
1.34 schwarze 219: .Ss ASCII Output
220: Output produced by
221: .Fl T Ns Cm ascii ,
222: which is the default, is rendered in standard 7-bit ASCII documented in
223: .Xr ascii 7 .
224: .Pp
225: Font styles are applied by using back-spaced encoding such that an
226: underlined character
227: .Sq c
228: is rendered as
229: .Sq _ Ns \e[bs] Ns c ,
230: where
231: .Sq \e[bs]
232: is the back-space character number 8.
233: Emboldened characters are rendered as
234: .Sq c Ns \e[bs] Ns c .
235: .Pp
236: The special characters documented in
237: .Xr mandoc_char 7
238: are rendered best-effort in an ASCII equivalent.
1.44 schwarze 239: If no equivalent is found,
240: .Sq \&?
241: is used instead.
1.34 schwarze 242: .Pp
243: Output width is limited to 78 visible columns unless literal input lines
244: exceed this limit.
245: .Pp
246: The following
247: .Fl O
248: arguments are accepted:
1.5 schwarze 249: .Bl -tag -width Ds
1.51 schwarze 250: .It Cm indent Ns = Ns Ar indent
251: The left margin for normal text is set to
252: .Ar indent
253: blank characters instead of the default of five for
254: .Xr mdoc 7
255: and seven for
256: .Xr man 7 .
257: Increasing this is not recommended; it may result in degraded formatting,
1.52 jmc 258: for example overfull lines or ugly line breaks.
1.34 schwarze 259: .It Cm width Ns = Ns Ar width
260: The output width is set to
261: .Ar width ,
262: which will normalise to \(>=60.
1.1 kristaps 263: .El
1.34 schwarze 264: .Ss HTML Output
265: Output produced by
266: .Fl T Ns Cm html
267: conforms to HTML-4.01 strict.
268: .Pp
1.30 schwarze 269: The
1.34 schwarze 270: .Pa example.style.css
1.42 schwarze 271: file documents style-sheet classes available for customising output.
272: If a style-sheet is not specified with
273: .Fl O Ns Ar style ,
274: .Fl T Ns Cm html
275: defaults to simple output readable in any graphical or text-based web
276: browser.
1.34 schwarze 277: .Pp
1.45 schwarze 278: Special characters are rendered in decimal-encoded UTF\-8.
1.34 schwarze 279: .Pp
280: The following
1.33 schwarze 281: .Fl O
1.34 schwarze 282: arguments are accepted:
1.17 schwarze 283: .Bl -tag -width Ds
1.49 schwarze 284: .It Cm fragment
1.50 schwarze 285: Omit the
286: .Aq !DOCTYPE
287: declaration and the
288: .Aq html ,
289: .Aq head ,
290: and
291: .Aq body
292: elements and only emit the subtree below the
293: .Aq body
294: element.
1.49 schwarze 295: The
296: .Cm style
1.50 schwarze 297: argument will be ignored.
1.49 schwarze 298: This is useful when embedding manual content within existing documents.
1.33 schwarze 299: .It Cm includes Ns = Ns Ar fmt
1.17 schwarze 300: The string
301: .Ar fmt ,
1.21 schwarze 302: for example,
1.17 schwarze 303: .Ar ../src/%I.html ,
304: is used as a template for linked header files (usually via the
305: .Sq \&In
1.25 jmc 306: macro).
307: Instances of
1.17 schwarze 308: .Sq \&%I
1.25 jmc 309: are replaced with the include filename.
310: The default is not to present a
1.17 schwarze 311: hyperlink.
1.33 schwarze 312: .It Cm man Ns = Ns Ar fmt
1.17 schwarze 313: The string
314: .Ar fmt ,
1.21 schwarze 315: for example,
1.17 schwarze 316: .Ar ../html%S/%N.%S.html ,
317: is used as a template for linked manuals (usually via the
318: .Sq \&Xr
1.25 jmc 319: macro).
320: Instances of
1.17 schwarze 321: .Sq \&%N
322: and
323: .Sq %S
324: are replaced with the linked manual's name and section, respectively.
1.25 jmc 325: If no section is included, section 1 is assumed.
326: The default is not to
1.17 schwarze 327: present a hyperlink.
1.33 schwarze 328: .It Cm style Ns = Ns Ar style.css
1.26 jmc 329: The file
330: .Ar style.css
331: is used for an external style-sheet.
332: This must be a valid absolute or
333: relative URI.
1.30 schwarze 334: .El
1.48 jmc 335: .Ss Locale Output
336: Locale-depending output encoding is triggered with
337: .Fl T Ns Cm locale .
338: This option is not available on all systems: systems without locale
339: support, or those whose internal representation is not natively UCS-4,
340: will fall back to
341: .Fl T Ns Cm ascii .
342: See
343: .Sx ASCII Output
344: for font style specification and available command-line arguments.
1.49 schwarze 345: .Ss Man Output
346: Translate input format into
347: .Xr man 7
348: output format.
1.55 jmc 349: This is useful for distributing manual sources to legacy systems
1.49 schwarze 350: lacking
351: .Xr mdoc 7
352: formatters.
353: .Pp
354: If
355: .Xr mdoc 7
356: is passed as input, it is translated into
1.50 schwarze 357: .Xr man 7 .
358: If the input format is
1.49 schwarze 359: .Xr man 7 ,
1.50 schwarze 360: the input is copied to the output, expanding any
1.49 schwarze 361: .Xr roff 7
362: .Sq so
1.50 schwarze 363: requests.
364: The parser is also run, and as usual, the
365: .Fl W
366: level controls which
367: .Sx DIAGNOSTICS
368: are displayed before copying the input to the output.
1.48 jmc 369: .Ss PDF Output
370: PDF-1.1 output may be generated by
371: .Fl T Ns Cm pdf .
372: See
373: .Sx PostScript Output
374: for
375: .Fl O
376: arguments and defaults.
1.31 schwarze 377: .Ss PostScript Output
1.33 schwarze 378: PostScript
379: .Qq Adobe-3.0
380: Level-2 pages may be generated by
1.31 schwarze 381: .Fl T Ns Cm ps .
1.35 schwarze 382: Output pages default to letter sized and are rendered in the Times font
383: family, 11-point.
384: Margins are calculated as 1/9 the page length and width.
385: Line-height is 1.4m.
1.34 schwarze 386: .Pp
387: Special characters are rendered as in
388: .Sx ASCII Output .
389: .Pp
390: The following
391: .Fl O
392: arguments are accepted:
393: .Bl -tag -width Ds
394: .It Cm paper Ns = Ns Ar name
395: The paper size
396: .Ar name
397: may be one of
1.35 schwarze 398: .Ar a3 ,
399: .Ar a4 ,
400: .Ar a5 ,
401: .Ar legal ,
1.34 schwarze 402: or
403: .Ar letter .
1.35 schwarze 404: You may also manually specify dimensions as
405: .Ar NNxNN ,
406: width by height in millimetres.
407: If an unknown value is encountered,
408: .Ar letter
409: is used.
1.34 schwarze 410: .El
1.48 jmc 411: .Ss UTF\-8 Output
412: Use
413: .Fl T Ns Cm utf8
414: to force a UTF\-8 locale.
1.36 schwarze 415: See
1.48 jmc 416: .Sx Locale Output
417: for details and options.
1.21 schwarze 418: .Ss XHTML Output
419: Output produced by
1.26 jmc 420: .Fl T Ns Cm xhtml
1.21 schwarze 421: conforms to XHTML-1.0 strict.
422: .Pp
423: See
424: .Sx HTML Output
425: for details; beyond generating XHTML tags instead of HTML tags, these
426: output modes are identical.
1.38 schwarze 427: .Sh EXIT STATUS
428: The
429: .Nm
430: utility exits with one of the following values, controlled by the message
431: .Ar level
432: associated with the
433: .Fl W
434: option:
435: .Pp
436: .Bl -tag -width Ds -compact
437: .It 0
438: No warnings or errors occurred, or those that did were ignored because
439: they were lower than the requested
440: .Ar level .
441: .It 2
442: At least one warning occurred, but no error, and
443: .Fl W Ns Cm warning
444: was specified.
445: .It 3
446: At least one parsing error occurred, but no fatal error, and
447: .Fl W Ns Cm error
448: or
449: .Fl W Ns Cm warning
450: was specified.
451: .It 4
452: A fatal parsing error occurred.
453: .It 5
454: Invalid command line arguments were specified.
455: No input files have been read.
456: .It 6
457: An operating system error occurred, for example memory exhaustion or an
458: error accessing input files.
459: Such errors cause
460: .Nm
461: to exit at once, possibly in the middle of parsing or formatting a file.
462: .El
463: .Pp
464: Note that selecting
465: .Fl T Ns Cm lint
466: output mode implies
467: .Fl W Ns Cm warning .
1.1 kristaps 468: .Sh EXAMPLES
469: To page manuals to the terminal:
470: .Pp
1.42 schwarze 471: .Dl $ mandoc \-Wall,stop mandoc.1 2\*(Gt&1 | less
472: .Dl $ mandoc mandoc.1 mdoc.3 mdoc.7 | less
1.12 schwarze 473: .Pp
1.17 schwarze 474: To produce HTML manuals with
475: .Ar style.css
476: as the style-sheet:
477: .Pp
1.42 schwarze 478: .Dl $ mandoc \-Thtml -Ostyle=style.css mdoc.7 \*(Gt mdoc.7.html
1.17 schwarze 479: .Pp
1.12 schwarze 480: To check over a large set of manuals:
481: .Pp
1.38 schwarze 482: .Dl $ mandoc \-Tlint `find /usr/src -name \e*\e.[1-9]`
1.34 schwarze 483: .Pp
484: To produce a series of PostScript manuals for A4 paper:
485: .Pp
1.42 schwarze 486: .Dl $ mandoc \-Tps \-Opaper=a4 mdoc.7 man.7 \*(Gt manuals.ps
1.46 schwarze 487: .Pp
488: Convert a modern
489: .Xr mdoc 7
490: manual to the older
491: .Xr man 7
492: format, for use on systems lacking an
493: .Xr mdoc 7
494: parser:
495: .Pp
496: .Dl $ mandoc \-Tman foo.mdoc \*(Gt foo.man
1.38 schwarze 497: .Sh DIAGNOSTICS
498: Standard error messages reporting parsing errors are prefixed by
499: .Pp
1.57 ! schwarze 500: .D1 Nm Ns : Ar file : Ns Ar line : Ns Ar column : level :
1.38 schwarze 501: .Pp
502: where the fields have the following meanings:
503: .Bl -tag -width "column"
504: .It Ar file
505: The name of the input file causing the message.
506: .It Ar line
507: The line number in that input file.
508: Line numbering starts at 1.
509: .It Ar column
510: The column number in that input file.
511: Column numbering starts at 1.
512: If the issue is caused by a word, the column number usually
513: points to the first character of the word.
514: .It Ar level
515: The message level, printed in capital letters.
516: .El
517: .Pp
1.57 ! schwarze 518: The
! 519: .Ar line
! 520: and
! 521: .Ar column
! 522: fields are omitted when meaningless.
! 523: .Pp
1.38 schwarze 524: Message levels have the following meanings:
525: .Bl -tag -width "warning"
526: .It Cm fatal
527: The parser is unable to parse a given input file at all.
528: No formatted output is produced from that input file.
529: .It Cm error
530: An input file contains syntax that cannot be safely interpreted,
531: either because it is invalid or because
532: .Nm
533: does not implement it yet.
534: By discarding part of the input or inserting missing tokens,
535: the parser is able to continue, and the error does not prevent
536: generation of formatted output, but typically, preparing that
537: output involves information loss, broken document structure
538: or unintended formatting.
539: .It Cm warning
540: An input file uses obsolete, discouraged or non-portable syntax.
541: All the same, the meaning of the input is unambiguous and a correct
542: rendering can be produced.
543: Documents causing warnings may render poorly when using other
544: formatting tools instead of
545: .Nm .
546: .El
547: .Pp
548: Messages of the
549: .Cm warning
550: and
551: .Cm error
552: levels are hidden unless their level, or a lower level, is requested using a
553: .Fl W
554: option or
555: .Fl T Ns Cm lint
556: output mode.
557: .Pp
558: The
559: .Nm
560: utility may also print messages related to invalid command line arguments
561: or operating system errors, for example when memory is exhausted or
1.40 jmc 562: input files cannot be read.
1.57 ! schwarze 563: Such messages may not carry the prefix described above.
1.6 schwarze 564: .Sh COMPATIBILITY
1.10 schwarze 565: This section summarises
1.6 schwarze 566: .Nm
1.39 schwarze 567: compatibility with GNU troff.
1.14 schwarze 568: Each input and output format is separately noted.
1.20 schwarze 569: .Ss ASCII Compatibility
1.6 schwarze 570: .Bl -bullet -compact
1.13 schwarze 571: .It
1.44 schwarze 572: Unrenderable unicode codepoints specified with
573: .Sq \e[uNNNN]
574: escapes are printed as
575: .Sq \&?
576: in mandoc.
577: In GNU troff, these raise an error.
578: .It
1.21 schwarze 579: The
1.14 schwarze 580: .Sq \&Bd \-literal
1.21 schwarze 581: and
1.14 schwarze 582: .Sq \&Bd \-unfilled
583: macros of
584: .Xr mdoc 7
585: in
1.26 jmc 586: .Fl T Ns Cm ascii
1.14 schwarze 587: are synonyms, as are \-filled and \-ragged.
588: .It
1.44 schwarze 589: In historic GNU troff, the
1.14 schwarze 590: .Sq \&Pa
591: .Xr mdoc 7
592: macro does not underline when scoped under an
593: .Sq \&It
1.25 jmc 594: in the FILES section.
595: This behaves correctly in
1.14 schwarze 596: .Nm .
1.10 schwarze 597: .It
1.26 jmc 598: A list or display following the
1.11 schwarze 599: .Sq \&Ss
1.14 schwarze 600: .Xr mdoc 7
601: macro in
1.26 jmc 602: .Fl T Ns Cm ascii
1.6 schwarze 603: does not assert a prior vertical break, just as it doesn't with
1.11 schwarze 604: .Sq \&Sh .
1.6 schwarze 605: .It
1.14 schwarze 606: The
607: .Sq \&na
608: .Xr man 7
1.16 schwarze 609: macro in
1.26 jmc 610: .Fl T Ns Cm ascii
1.16 schwarze 611: has no effect.
1.6 schwarze 612: .It
613: Words aren't hyphenated.
614: .El
1.21 schwarze 615: .Ss HTML/XHTML Compatibility
1.17 schwarze 616: .Bl -bullet -compact
617: .It
618: The
1.20 schwarze 619: .Sq \efP
620: escape will revert the font to the previous
621: .Sq \ef
622: escape, not to the last rendered decoration, which is now dictated by
1.25 jmc 623: CSS instead of hard-coded.
624: It also will not span past the current scope,
625: for the same reason.
626: Note that in
1.20 schwarze 627: .Sx ASCII Output
628: mode, this will work fine.
629: .It
630: The
1.17 schwarze 631: .Xr mdoc 7
632: .Sq \&Bl \-hang
633: and
634: .Sq \&Bl \-tag
635: list types render similarly (no break following overreached left-hand
636: side) due to the expressive constraints of HTML.
637: .It
638: The
639: .Xr man 7
640: .Sq IP
641: and
642: .Sq TP
643: lists render similarly.
644: .El
1.1 kristaps 645: .Sh SEE ALSO
1.47 schwarze 646: .Xr eqn 7 ,
1.25 jmc 647: .Xr man 7 ,
1.1 kristaps 648: .Xr mandoc_char 7 ,
1.43 schwarze 649: .Xr mdoc 7 ,
650: .Xr roff 7 ,
651: .Xr tbl 7
1.1 kristaps 652: .Sh AUTHORS
653: The
654: .Nm
1.10 schwarze 655: utility was written by
1.56 schwarze 656: .An Kristaps Dzonsons Aq Mt kristaps@bsd.lv .
1.17 schwarze 657: .Sh CAVEATS
658: In
1.26 jmc 659: .Fl T Ns Cm html
1.21 schwarze 660: and
1.26 jmc 661: .Fl T Ns Cm xhtml ,
1.17 schwarze 662: the maximum size of an element attribute is determined by
663: .Dv BUFSIZ ,
1.25 jmc 664: which is usually 1024 bytes.
665: Be aware of this when setting long link
1.26 jmc 666: formats such as
667: .Fl O Ns Cm style Ns = Ns Ar really/long/link .
1.22 schwarze 668: .Pp
669: Nesting elements within next-line element scopes of
1.26 jmc 670: .Fl m Ns Cm an ,
1.22 schwarze 671: such as
672: .Sq br
673: within an empty
674: .Sq B ,
675: will confuse
1.26 jmc 676: .Fl T Ns Cm html
1.22 schwarze 677: and
1.26 jmc 678: .Fl T Ns Cm xhtml
1.23 schwarze 679: and cause them to forget the formatting of the prior next-line scope.
680: .Pp
1.24 schwarze 681: The
682: .Sq \(aq
683: control character is an alias for the standard macro control character
684: and does not emit a line-break as stipulated in GNU troff.