Annotation of src/usr.bin/mandoc/mandoc.1, Revision 1.54
1.54 ! schwarze 1: .\" $OpenBSD: mandoc.1,v 1.53 2011/12/25 20:15:54 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.54 ! schwarze 17: .Dd $Mdocdate: December 25 2011 $
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.
349: This is useful for distributing manual sources to legancy systems
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
500: .Sm off
501: .D1 Ar file : line : column : \ level :
502: .Sm on
503: .Pp
504: where the fields have the following meanings:
505: .Bl -tag -width "column"
506: .It Ar file
507: The name of the input file causing the message.
508: .It Ar line
509: The line number in that input file.
510: Line numbering starts at 1.
511: .It Ar column
512: The column number in that input file.
513: Column numbering starts at 1.
514: If the issue is caused by a word, the column number usually
515: points to the first character of the word.
516: .It Ar level
517: The message level, printed in capital letters.
518: .El
519: .Pp
520: Message levels have the following meanings:
521: .Bl -tag -width "warning"
522: .It Cm fatal
523: The parser is unable to parse a given input file at all.
524: No formatted output is produced from that input file.
525: .It Cm error
526: An input file contains syntax that cannot be safely interpreted,
527: either because it is invalid or because
528: .Nm
529: does not implement it yet.
530: By discarding part of the input or inserting missing tokens,
531: the parser is able to continue, and the error does not prevent
532: generation of formatted output, but typically, preparing that
533: output involves information loss, broken document structure
534: or unintended formatting.
535: .It Cm warning
536: An input file uses obsolete, discouraged or non-portable syntax.
537: All the same, the meaning of the input is unambiguous and a correct
538: rendering can be produced.
539: Documents causing warnings may render poorly when using other
540: formatting tools instead of
541: .Nm .
542: .El
543: .Pp
544: Messages of the
545: .Cm warning
546: and
547: .Cm error
548: levels are hidden unless their level, or a lower level, is requested using a
549: .Fl W
550: option or
551: .Fl T Ns Cm lint
552: output mode.
553: .Pp
554: The
555: .Nm
556: utility may also print messages related to invalid command line arguments
557: or operating system errors, for example when memory is exhausted or
1.40 jmc 558: input files cannot be read.
559: Such messages do not carry the prefix described above.
1.6 schwarze 560: .Sh COMPATIBILITY
1.10 schwarze 561: This section summarises
1.6 schwarze 562: .Nm
1.39 schwarze 563: compatibility with GNU troff.
1.14 schwarze 564: Each input and output format is separately noted.
1.20 schwarze 565: .Ss ASCII Compatibility
1.6 schwarze 566: .Bl -bullet -compact
1.13 schwarze 567: .It
1.44 schwarze 568: Unrenderable unicode codepoints specified with
569: .Sq \e[uNNNN]
570: escapes are printed as
571: .Sq \&?
572: in mandoc.
573: In GNU troff, these raise an error.
574: .It
1.21 schwarze 575: The
1.14 schwarze 576: .Sq \&Bd \-literal
1.21 schwarze 577: and
1.14 schwarze 578: .Sq \&Bd \-unfilled
579: macros of
580: .Xr mdoc 7
581: in
1.26 jmc 582: .Fl T Ns Cm ascii
1.14 schwarze 583: are synonyms, as are \-filled and \-ragged.
584: .It
1.44 schwarze 585: In historic GNU troff, the
1.14 schwarze 586: .Sq \&Pa
587: .Xr mdoc 7
588: macro does not underline when scoped under an
589: .Sq \&It
1.25 jmc 590: in the FILES section.
591: This behaves correctly in
1.14 schwarze 592: .Nm .
1.10 schwarze 593: .It
1.26 jmc 594: A list or display following the
1.11 schwarze 595: .Sq \&Ss
1.14 schwarze 596: .Xr mdoc 7
597: macro in
1.26 jmc 598: .Fl T Ns Cm ascii
1.6 schwarze 599: does not assert a prior vertical break, just as it doesn't with
1.11 schwarze 600: .Sq \&Sh .
1.6 schwarze 601: .It
1.14 schwarze 602: The
603: .Sq \&na
604: .Xr man 7
1.16 schwarze 605: macro in
1.26 jmc 606: .Fl T Ns Cm ascii
1.16 schwarze 607: has no effect.
1.6 schwarze 608: .It
609: Words aren't hyphenated.
610: .El
1.21 schwarze 611: .Ss HTML/XHTML Compatibility
1.17 schwarze 612: .Bl -bullet -compact
613: .It
614: The
1.20 schwarze 615: .Sq \efP
616: escape will revert the font to the previous
617: .Sq \ef
618: escape, not to the last rendered decoration, which is now dictated by
1.25 jmc 619: CSS instead of hard-coded.
620: It also will not span past the current scope,
621: for the same reason.
622: Note that in
1.20 schwarze 623: .Sx ASCII Output
624: mode, this will work fine.
625: .It
626: The
1.17 schwarze 627: .Xr mdoc 7
628: .Sq \&Bl \-hang
629: and
630: .Sq \&Bl \-tag
631: list types render similarly (no break following overreached left-hand
632: side) due to the expressive constraints of HTML.
633: .It
634: The
635: .Xr man 7
636: .Sq IP
637: and
638: .Sq TP
639: lists render similarly.
640: .El
1.1 kristaps 641: .Sh SEE ALSO
1.47 schwarze 642: .Xr eqn 7 ,
1.25 jmc 643: .Xr man 7 ,
1.1 kristaps 644: .Xr mandoc_char 7 ,
1.43 schwarze 645: .Xr mdoc 7 ,
646: .Xr roff 7 ,
647: .Xr tbl 7
1.1 kristaps 648: .Sh AUTHORS
649: The
650: .Nm
1.10 schwarze 651: utility was written by
1.47 schwarze 652: .An Kristaps Dzonsons ,
653: .Mt kristaps@bsd.lv .
1.17 schwarze 654: .Sh CAVEATS
655: In
1.26 jmc 656: .Fl T Ns Cm html
1.21 schwarze 657: and
1.26 jmc 658: .Fl T Ns Cm xhtml ,
1.17 schwarze 659: the maximum size of an element attribute is determined by
660: .Dv BUFSIZ ,
1.25 jmc 661: which is usually 1024 bytes.
662: Be aware of this when setting long link
1.26 jmc 663: formats such as
664: .Fl O Ns Cm style Ns = Ns Ar really/long/link .
1.22 schwarze 665: .Pp
666: Nesting elements within next-line element scopes of
1.26 jmc 667: .Fl m Ns Cm an ,
1.22 schwarze 668: such as
669: .Sq br
670: within an empty
671: .Sq B ,
672: will confuse
1.26 jmc 673: .Fl T Ns Cm html
1.22 schwarze 674: and
1.26 jmc 675: .Fl T Ns Cm xhtml
1.23 schwarze 676: and cause them to forget the formatting of the prior next-line scope.
677: .Pp
1.24 schwarze 678: The
679: .Sq \(aq
680: control character is an alias for the standard macro control character
681: and does not emit a line-break as stipulated in GNU troff.