]> git.cameronkatri.com Git - mandoc.git/blob - mdoc.7
Some Linux-isms.
[mandoc.git] / mdoc.7
1 .\" $Id: mdoc.7,v 1.7 2009/03/19 11:49:00 kristaps Exp $
2 .\"
3 .\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@openbsd.org>
4 .\"
5 .\" Permission to use, copy, modify, and distribute this software for any
6 .\" purpose with or without fee is hereby granted, provided that the
7 .\" above copyright notice and this permission notice appear in all
8 .\" copies.
9 .\"
10 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11 .\" WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12 .\" WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13 .\" AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14 .\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15 .\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16 .\" TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17 .\" PERFORMANCE OF THIS SOFTWARE.
18 .\"
19 .Dd $Mdocdate: March 19 2009 $
20 .Dt mdoc 7
21 .Os
22 .\" SECTION
23 .Sh NAME
24 .Nm mdoc
25 .Nd mdoc macro reference
26 .\" SECTION
27 .Sh DESCRIPTION
28 The
29 .Nm mdoc
30 language is used to format
31 .Bx
32 .Ux
33 manuals. An
34 .Nm
35 document follows simple rules: lines beginning with the control
36 character
37 .Sq \.
38 are parsed for macros. Other lines are interpreted within the scope of
39 prior macros. This document describes the encoding, ontology and syntax
40 of these macros.
41 .\" SECTION
42 .Sh CHARACTER ENCODING
43 .Nm
44 documents may contain only printable characters, the space character
45 .Sq \ ,
46 and, in certain circumstances, the tab character
47 .Sq \et .
48 All manuals must have
49 .Sq \en
50 line termination.
51 .\" SUB-SECTION
52 .Ss Reserved Characters
53 Within a macro line, the following characters are reserved:
54 .Bl -tag -width 12n -offset XXXX -compact
55 .It \&.
56 .Pq period
57 .It \&,
58 .Pq comma
59 .It \&:
60 .Pq colon
61 .It \&;
62 .Pq semicolon
63 .It \&(
64 .Pq left-parenthesis
65 .It \&)
66 .Pq right-parenthesis
67 .It \&[
68 .Pq left-bracket
69 .It \&]
70 .Pq right-bracket
71 .It \&?
72 .Pq question
73 .It \&!
74 .Pq exclamation
75 .El
76 .\" PARAGRAPH
77 .Pp
78 Use of reserved characters is described in
79 .Sx Closure .
80 For general non-reserved use, characters must either be escaped with a
81 non-breaking space
82 .Pq Sq \e&
83 or, if applicable, an appropriate escape-sequence used.
84 .\" SUB-SECTION
85 .Ss Special Characters
86 Special character sequences begin with the escape character
87 .Sq \\
88 followed by either an open-parenthesis
89 .Sq \&(
90 for two-character sequences; an open-bracket
91 .Sq \&[
92 for n-character sequences (terminated at a close-bracket
93 .Sq \&] ) ;
94 or a single one-character sequence.
95 .Pp
96 Characters may alternatively be escaped by a slash-asterisk,
97 .Sq \\* ,
98 with the same combinations as described above. This form is deprecated.
99 .Pp
100 The following is a table of all available escapes.
101 .Pp
102 Grammatic:
103 .Bl -tag -width 12n -offset "XXXX" -compact
104 .It \\(em
105 .Pq em-dash
106 .It \\(en
107 .Pq en-dash
108 .It \e-
109 .Pq hyphen
110 .It \\\\
111 .Pq back-slash
112 .It \e'
113 .Pq apostrophe
114 .It \e`
115 .Pq back-tick
116 .It \\
117 .Pq space
118 .It \\.
119 .Pq period
120 .El
121 .\" PARAGRAPH
122 .Pp
123 Enclosures:
124 .Bl -tag -width 12n -offset "XXXX" -compact
125 .It \\(lh
126 .Pq left hand
127 .It \\(rh
128 .Pq right hand
129 .It \\(<<
130 .Pq left guillemet
131 .It \\(Fc
132 .Pq right guillemet
133 .It \\(Fo
134 .Pq left guilsing
135 .It \\(fc
136 .Pq right guilsing
137 .It \\(fo
138 .Pq right guilsing
139 .It \\(rC
140 .Pq right brace
141 .It \\(lC
142 .Pq left brace
143 .It \\(ra
144 .Pq right angle
145 .It \\(la
146 .Pq left angle
147 .It \\(rB
148 .Pq right bracket
149 .It \\(lB
150 .Pq left bracket
151 .It \\q
152 .Pq double-quote
153 .It \\(lq
154 .Pq left double-quote
155 .It \\(Lq
156 .Pq left double-quote, deprecated
157 .It \\(rq
158 .Pq right double-quote
159 .It \\(Rq
160 .Pq right double-quote, deprecated
161 .It \\(oq
162 .Pq left single-quote
163 .It \\(aq
164 .Pq right single-quote
165 .El
166 .\" PARAGRAPH
167 .Pp
168 Indicatives:
169 .Bl -tag -width 12n -offset "XXXX" -compact
170 .It \\(<-
171 .Pq left arrow
172 .It \\(->
173 .Pq right arrow
174 .It \\(ua
175 .Pq up arrow
176 .It \\(da
177 .Pq down arrow
178 .It \\(<>
179 .Pq left-right arrow
180 .It \\(lA
181 .Pq left double-arrow
182 .It \\(rA
183 .Pq right double-arrow
184 .It \\(uA
185 .Pq up double-arrow
186 .It \\(dA
187 .Pq down double-arrow
188 .It \\(hA
189 .Pq left-right double-arrow
190 .El
191 .\" PARAGRAPH
192 .Pp
193 Mathematical:
194 .Bl -tag -width 12n -offset "XXXX" -compact
195 .It \\(Gt
196 .Pq greater-than, deprecated
197 .It \\(Lt
198 .Pq less-than, deprecated
199 .It \\(<=
200 .Pq less-than-equal
201 .It \\(Le
202 .Pq less-than-equal, deprecated
203 .It \\(>=
204 .Pq greater-than-equal
205 .It \\(Ge
206 .Pq greater-than-equal
207 .It \\(==
208 .Pq equal
209 .It \\(!=
210 .Pq not equal
211 .It \\(Ne
212 .Pq not equal, deprecated
213 .It \\(if
214 .Pq infinity
215 .It \\(If
216 .Pq infinity, deprecated
217 .It \\(na
218 .Pq NaN , an extension
219 .It \\(Na
220 .Pq NaN, deprecated
221 .It \\(+-
222 .Pq plus-minus
223 .It \\(Pm
224 .Pq plus-minus, deprecated
225 .It \\(**
226 .Pq asterisk
227 .El
228 .\" PARAGRAPH
229 .Pp
230 Ligatures:
231 .Bl -tag -width 12n -offset "XXXX" -compact
232 .It \\(ss
233 .Pq German eszett
234 .It \\(AE
235 .Pq upper-case AE
236 .It \\(ae
237 .Pq lower-case AE
238 .It \\(OE
239 .Pq upper-case OE
240 .It \\(oe
241 .Pq lower-case OE
242 .It \\(ff
243 .Pq ff ligature
244 .It \\(fi
245 .Pq fi ligature
246 .It \\(fl
247 .Pq fl ligature
248 .It \\(Fi
249 .Pq ffi ligature
250 .It \\(Fl
251 .Pq ffl ligature
252 .El
253 .\" PARAGRAPH
254 .Pp
255 Diacritics and letters:
256 .Bl -tag -width 12n -offset "XXXX" -compact
257 .It \\(ga
258 .Pq grave accent
259 .It \\(aa
260 .Pq accute accent
261 .It \\(ad
262 .Pq dieresis accent
263 .It \\(a~
264 .Pq tilde accent
265 .It \\(a^
266 .Pq circumflex accent
267 .It \\(ac
268 .Pq cedilla accent
269 .It \\(ad
270 .Pq dieresis accent
271 .It \\(ah
272 .Pq caron accent
273 .It \\(ao
274 .Pq ring accent
275 .It \\(ho
276 .Pq hook accent
277 .It \\(ab
278 .Pq breve accent
279 .It \\(a-
280 .Pq macron accent
281 .It \\(-D
282 .Pq upper-case eth
283 .It \\(Sd
284 .Pq lower-case eth
285 .It \\(TP
286 .Pq upper-case thorn
287 .It \\(Tp
288 .Pq lower-case thorn
289 .It \\('A
290 .Pq upper-case acute A
291 .It \\('E
292 .Pq upper-case acute E
293 .It \\('I
294 .Pq upper-case acute I
295 .It \\('O
296 .Pq upper-case acute O
297 .It \\('U
298 .Pq upper-case acute U
299 .It \\('a
300 .Pq lower-case acute a
301 .It \\('e
302 .Pq lower-case acute e
303 .It \\('i
304 .Pq lower-case acute i
305 .It \\('o
306 .Pq lower-case acute o
307 .It \\('u
308 .Pq lower-case acute u
309 .It \\(`A
310 .Pq upper-case grave A
311 .It \\(`E
312 .Pq upper-case grave E
313 .It \\(`I
314 .Pq upper-case grave I
315 .It \\(`O
316 .Pq upper-case grave O
317 .It \\(`U
318 .Pq upper-case grave U
319 .It \\(`a
320 .Pq lower-case grave a
321 .It \\(`e
322 .Pq lower-case grave e
323 .It \\(`i
324 .Pq lower-case grave i
325 .It \\(`o
326 .Pq lower-case grave o
327 .It \\(`u
328 .Pq lower-case grave u
329 .It \\(~A
330 .Pq upper-case tilde A
331 .It \\(~N
332 .Pq upper-case tilde N
333 .It \\(~O
334 .Pq upper-case tilde O
335 .It \\(~a
336 .Pq lower-case tilde a
337 .It \\(~n
338 .Pq lower-case tilde n
339 .It \\(~o
340 .Pq lower-case tilde o
341 .It \\(:A
342 .Pq upper-case dieresis A
343 .It \\(:E
344 .Pq upper-case dieresis E
345 .It \\(:I
346 .Pq upper-case dieresis I
347 .It \\(:O
348 .Pq upper-case dieresis O
349 .It \\(:U
350 .Pq upper-case dieresis U
351 .It \\(:a
352 .Pq lower-case dieresis a
353 .It \\(:e
354 .Pq lower-case dieresis e
355 .It \\(:i
356 .Pq lower-case dieresis i
357 .It \\(:o
358 .Pq lower-case dieresis o
359 .It \\(:u
360 .Pq lower-case dieresis u
361 .It \\(:y
362 .Pq lower-case dieresis y
363 .It \\(^A
364 .Pq upper-case circumflex A
365 .It \\(^E
366 .Pq upper-case circumflex E
367 .It \\(^I
368 .Pq upper-case circumflex I
369 .It \\(^O
370 .Pq upper-case circumflex O
371 .It \\(^U
372 .Pq upper-case circumflex U
373 .It \\(^a
374 .Pq lower-case circumflex a
375 .It \\(^e
376 .Pq lower-case circumflex e
377 .It \\(^i
378 .Pq lower-case circumflex i
379 .It \\(^o
380 .Pq lower-case circumflex o
381 .It \\(^u
382 .Pq lower-case circumflex u
383 .It \\(,C
384 .Pq upper-case cedilla C
385 .It \\(,c
386 .Pq lower-case cedilla c
387 .It \\(/L
388 .Pq upper-case stroke L
389 .It \\(/l
390 .Pq lower-case stroke l
391 .It \\(/O
392 .Pq upper-case stroke O
393 .It \\(/o
394 .Pq lower-case stroke o
395 .It \\(oA
396 .Pq upper-case ring A
397 .It \\(oa
398 .Pq lower-case ring a
399 .El
400 .\" PARAGRAPH
401 .Pp
402 Monetary:
403 .Bl -tag -width 12n -offset "XXXX" -compact
404 .It \\(Cs
405 .Pq Scandinavian
406 .It \\(Do
407 .Pq dollar
408 .It \\(Po
409 .Pq pound
410 .It \\(Ye
411 .Pq yen
412 .It \\(Fn
413 .Pq florin
414 .It \\(ct
415 .Pq cent
416 .El
417 .\" PARAGRAPH
418 .Pp
419 Special symbols:
420 .Bl -tag -width 12n -offset "XXXX" -compact
421 .It \\(bu
422 .Pq bullet
423 .It \\(ba
424 .Pq bar
425 .It \\(Ba
426 .Pq bar, deprecated
427 .It \\(co
428 .Pq copyright
429 .It \\(rg
430 .Pq registered
431 .It \\(tm
432 .Pq trademarked
433 .It \\&
434 .Pq non-breaking space
435 .It \\e
436 .Pq escape
437 .It \\(Am
438 .Pq ampersand, deprecated
439 .El
440 .\" SECTION
441 .Sh ONTOLOGY
442 Macros are classified in an ontology described by scope rules.
443 .\" SUB-SECTION
444 .Ss Scope
445 .Bl -inset
446 .\" LIST-ITEM
447 .It Em Block
448 macros enclose other block macros, in-line macros or text, and
449 may span multiple lines.
450 .Bl -inset -offset XXXX
451 .\" LIST-ITEM
452 .It Em Full-block
453 macros always span multiple lines. They consist of zero or
454 more
455 .Qq heads ,
456 subsequent macros or text on the same line following invocation; an
457 optional
458 .Qq body ,
459 which spans subsequent lines of text or macros; and an optional
460 .Qq tail ,
461 macros or text on the same line following closure.
462 .\" LIST-ITEM
463 .It Em Partial-block
464 macros may span multiple lines. They consists of a optional
465 .Qq head ,
466 text immediately following invocation; always a
467 .Qq body ,
468 text or macros following the head on the same and subsequent lines; and
469 optionally a
470 .Qq tail ,
471 text immediately following closure.
472 .\" LIST-ITEM
473 .It Em In-line
474 macros may only enclose text and span at most a single line.
475 .El
476 .El
477 .\" SUB-SECTION
478 .Ss Closure
479 Closure of a macro's scope depends first on its classification, then
480 on whether it's parsable. In this table,
481 .Sq BFE
482 refers to block full-explicit and so on.
483 .\" PARAGRAPH
484 .Pp
485 .Bl -tag -width 12n -offset XXXX -compact
486 .It BPE , BFE
487 corresponding explicit closure macro
488 .It BFI
489 end-of-file or a corresponding implicit closure macro
490 .It BPI
491 end-of-line (body may be closed by >0 space-separated
492 .Sx Reserved Characters ,
493 although block scope will still be open)
494 .It INL
495 end-of-line
496 .El
497 .\" PARAGRAPH
498 .Pp
499 If a macro (block or in-line) is parsable, it may also be closed out by
500 one of the following scenarios (unless specifically noted otherwise):
501 .\" PARAGRAPH
502 .Pp
503 .Bl -dash -offset XXXX -compact
504 .It
505 a sequence of >0 space-separated
506 .Sx Reserved Characters ,
507 .It
508 another macro,
509 .It
510 end-of-line, or
511 .It
512 completion of a set number of arguments.
513 .El
514 .\" PARAGRAPH
515 .Pp
516 If >0 space-separated
517 .Sx Reserved Characters
518 are followed by non-reserved characters, the behaviour differs per
519 macro. In general, scope of the macro is closed and re-opened:
520 subsequent tokens are interpreted as if the scope had just been opened.
521 In other circumstances, scope is simply closed out.
522 .\" SECTION
523 .Sh SYNTAX
524 Macros are generally two and at times three characters in length. The
525 syntax of macro invocation depends on its classification.
526 .Qq \-arg
527 refers to the macro arguments (which may contain zero or more values).
528 In these illustrations,
529 .Sq \&.Yo
530 opens the scope of a macro, and if specified,
531 .Sq \&.Yc
532 closes it out (closure may be implicit at end-of-line or end-of-file).
533 .\" PARAGRAPH
534 .Pp
535 Block full-explicit (may contain head, body, tail).
536 .Bd -literal -offset XXXX
537 \&.Yo \(lB\-arg \(lBval...\(rB\(rB \(lBhead...\(rB
538 \(lBbody...\(rB
539 \&.Yc \(lBtail...\(rB
540 .Ed
541 .\" PARAGRAPH
542 .Pp
543 Block full-implicit (may contain zero or more heads, body, no tail).
544 .Bd -literal -offset XXXX
545 \&.Yo \(lB\-arg \(lBval...\(rB\(rB \(lBhead... \(lBTa head...\(rB\(rB
546 \(lBbody...\(rB
547 \&.Yc
548 .Ed
549 .\" PARAGRAPH
550 .Pp
551 Block partial-explicit (may contain head, multi-line body, tail).
552 .Bd -literal -offset XXXX
553 \&.Yo \(lB\-arg \(lBval...\(rB\(rB \(lBhead...\(rB
554 \(lBbody...\(rB
555 \&.Yc \(lBtail...\(rB
556
557 \&.Yo \(lB\-arg \(lBval...\(rB\(rB \(lBhead...\(rB \
558 \(lBbody...\(rB \&Yc \(lBtail...\(rB
559 .Ed
560 .\" PARAGRAPH
561 .Pp
562 Block partial-implicit (no head, body, no tail). Note that the body
563 section may be followed by zero or more
564 .Sx Reserved Words .
565 These are in the block scope, but not in the body scope.
566 .Bd -literal -offset XXXX
567 \&.Yo \(lB\-arg \(lBval...\(rB\(rB \(lBbody...\(rB \(lBreserved...\(rB
568 .Ed
569 .\" PARAGRAPH
570 .Pp
571 In-lines have \(>=0 scoped arguments.
572 .Bd -literal -offset XXX
573 \&.Yy \(lB\-arg \(lBval...\(rB\(rB \(lBargs...\(rB
574
575 \&.Yy \(lB\-arg \(lBval...\(rB\(rB arg0 arg1 argN
576 .Ed
577 .\"
578 .Sh MACROS
579 This section contains a complete list of all
580 .Nm
581 macros, arranged ontologically. A
582 .Qq callable
583 macro is may be invoked subsequent to the initial macro-line macro. A
584 .Qq parsable
585 macro may be followed by further (ostensibly callable) macros.
586 .\" SUB-SECTION
587 .Ss Block full-implicit
588 The head of these macros follows invocation; the body is the content of
589 subsequent lines prior to closure. None of these macros have tails;
590 some
591 .Po
592 .Sq \&It \-bullet ,
593 .Sq \-hyphen ,
594 .Sq \-dash ,
595 .Sq \-enum ,
596 .Sq \-item
597 .Pc
598 don't have heads.
599 .Pp
600 .Bl -column "MacroX" "CallableX" "ParsableX" "Closing" -compact -offset XXXX
601 .It Em Macro Ta Em Callable Ta Em Parsable Ta Em Closing
602 .It \&.Sh Ta \&No Ta \&No Ta \&.Sh
603 .It \&.Ss Ta \&No Ta \&No Ta \&.Sh, \&.Ss
604 .It \&.It Ta \&No Ta Yes Ta \&.It, \&.El
605 .El
606 .\" SUB-SECTION
607 .Ss Block full-explicit
608 None of these macros are callable or parsed. The last column indicates
609 the explicit scope rules. All contains bodies, some may contain heads
610 .Pq So \&Bf Sc .
611 .Pp
612 .Bl -column "MacroX" "CallableX" "ParsableX" "closed by XXX" -compact -offset XXXX
613 .It Em Macro Ta Em Callable Ta Em Parsable Ta Em Scope
614 .It \&.Bd Ta \&No Ta \&No Ta closed by \&.Ed
615 .It \&.Ed Ta \&No Ta \&No Ta opened by \&.Bd
616 .It \&.Bl Ta \&No Ta \&No Ta closed by \&.El
617 .It \&.El Ta \&No Ta \&No Ta opened by \&.Bl
618 .It \&.Bf Ta \&No Ta \&No Ta closed by \&.Ef
619 .It \&.Ef Ta \&No Ta \&No Ta opened by \&.Bf
620 .It \&.Bk Ta \&No Ta \&No Ta closed by \&.Ek
621 .It \&.Ek Ta \&No Ta \&No Ta opened by \&.Bk
622 .El
623 .\" SUB-SECTION
624 .Ss Block partial-implicit
625 All of these are callable and parsed for further macros. Their scopes
626 close at the invocation's end-of-line.
627 .Pp
628 .Bl -column "MacroX" "CallableX" "ParsableX" -compact -offset XXXX
629 .It Em Macro Ta Em Callable Ta Em Parsable
630 .It \&.Aq Ta Yes Ta Yes
631 .It \&.Op Ta Yes Ta Yes
632 .It \&.Bq Ta Yes Ta Yes
633 .It \&.Dq Ta Yes Ta Yes
634 .It \&.Pq Ta Yes Ta Yes
635 .It \&.Qq Ta Yes Ta Yes
636 .It \&.Sq Ta Yes Ta Yes
637 .It \&.Brq Ta Yes Ta Yes
638 .It \&.D1 Ta \&No Ta \&Yes
639 .It \&.Dl Ta \&No Ta Yes
640 .It \&.Ql Ta Yes Ta Yes
641 .El
642 .\" SUB-SECTION
643 .Ss Block partial-explicit
644 Each of these contains at least a body and, in limited circumstances, a
645 head
646 .Pq So \&Fo Sc , So \&Eo Sc
647 and/or tail
648 .Pq So \&Ec Sc .
649 .Pp
650 .Bl -column "MacroX" "CallableX" "ParsableX" "closed by XXXX" -compact -offset XXXX
651 .It Em Macro Ta Em Callable Ta Em Parsable Ta Em Scope
652 .It \&.Ao Ta Yes Ta Yes Ta closed by \&.Ac
653 .It \&.Ac Ta Yes Ta Yes Ta opened by \&.Ao
654 .It \&.Bc Ta Yes Ta Yes Ta closed by \&.Bo
655 .It \&.Bo Ta Yes Ta Yes Ta opened by \&.Bc
656 .It \&.Pc Ta Yes Ta Yes Ta closed by \&.Po
657 .It \&.Po Ta Yes Ta Yes Ta opened by \&.Pc
658 .It \&.Do Ta Yes Ta Yes Ta closed by \&.Dc
659 .It \&.Dc Ta Yes Ta Yes Ta opened by \&.Do
660 .It \&.Xo Ta Yes Ta Yes Ta closed by \&.Xc
661 .It \&.Xc Ta Yes Ta Yes Ta opened by \&.Xo
662 .It \&.Bro Ta Yes Ta Yes Ta closed by \&.Brc
663 .It \&.Brc Ta Yes Ta Yes Ta opened by \&.Bro
664 .It \&.Oc Ta Yes Ta Yes Ta closed by \&.Oo
665 .It \&.Oo Ta Yes Ta Yes Ta opened by \&.Oc
666 .It \&.So Ta Yes Ta Yes Ta closed by \&.Sc
667 .It \&.Sc Ta Yes Ta Yes Ta opened by \&.So
668 .It \&.Fc Ta Yes Ta Yes Ta opened by \&.Fo
669 .It \&.Fo Ta \&No Ta \&No Ta closed by \&.Fc
670 .It \&.Ec Ta Yes Ta Yes Ta opened by \&.Eo
671 .It \&.Eo Ta Yes Ta Yes Ta closed by \&.Ec
672 .It \&.Qc Ta Yes Ta Yes Ta opened by \&.Oo
673 .It \&.Qo Ta Yes Ta Yes Ta closed by \&.Oc
674 .It \&.Re Ta \&No Ta \&No Ta opened by \&.Rs
675 .It \&.Rs Ta \&No Ta \&No Ta closed by \&.Re
676 .El
677 .\" SUB-SECTION
678 .Ss In-line
679 In-line macros have only text children. If a number (or inequality) of
680 arguments is
681 .Pq n ,
682 then the macro accepts an arbitrary number of arguments.
683 .Pp
684 .Bl -column "MacroX" "CallableX" "ParsableX" "Arguments" -compact -offset XXXX
685 .It Em Macro Ta Em Callable Ta Em Parsable Ta Em Arguments
686 .It \&.Dd Ta \&No Ta \&No Ta >0
687 .It \&.Dt Ta \&No Ta \&No Ta n
688 .It \&.Os Ta \&No Ta \&No Ta n
689 .It \&.Pp Ta \&No Ta \&No Ta 0
690 .It \&.Ad Ta Yes Ta Yes Ta n
691 .It \&.An Ta \&No Ta Yes Ta n
692 .It \&.Ar Ta Yes Ta Yes Ta n
693 .It \&.Cd Ta Yes Ta \&No Ta >0
694 .It \&.Cm Ta Yes Ta Yes Ta n
695 .It \&.Dv Ta Yes Ta Yes Ta >0
696 .It \&.Er Ta Yes Ta Yes Ta >0
697 .It \&.Ev Ta Yes Ta Yes Ta >0
698 .It \&.Ex Ta \&No Ta \&No Ta 0
699 .It \&.Fa Ta Yes Ta Yes Ta >0
700 .It \&.Fd Ta \&No Ta \&No Ta >0
701 .It \&.Fl Ta Yes Ta Yes Ta n
702 .It \&.Fn Ta Yes Ta Yes Ta >0
703 .It \&.Ft Ta \&No Ta Yes Ta n
704 .It \&.Ic Ta Yes Ta Yes Ta >0
705 .It \&.In Ta \&No Ta \&No Ta n
706 .It \&.Li Ta Yes Ta Yes Ta >0
707 .It \&.Nd Ta \&No Ta \&No Ta n
708 .It \&.Nm Ta Yes Ta Yes Ta n
709 .It \&.Ot Ta \&No Ta \&No Ta n
710 .It \&.Pa Ta Yes Ta Yes Ta n
711 .It \&.Rv Ta \&No Ta \&No Ta 0
712 .It \&.St Ta \&No Ta Yes Ta 1
713 .It \&.Va Ta Yes Ta Yes Ta >0
714 .It \&.Vt Ta Yes Ta Yes Ta >0
715 .It \&.Xr Ta Yes Ta Yes Ta >0, <3
716 .It \&.%A Ta \&No Ta \&No Ta >0
717 .It \&.%B Ta \&No Ta \&No Ta >0
718 .It \&.%C Ta \&No Ta \&No Ta >0
719 .It \&.%D Ta \&No Ta \&No Ta >0
720 .It \&.%I Ta \&No Ta \&No Ta >0
721 .It \&.%J Ta \&No Ta \&No Ta >0
722 .It \&.%N Ta \&No Ta \&No Ta >0
723 .It \&.%O Ta \&No Ta \&No Ta >0
724 .It \&.%P Ta \&No Ta \&No Ta >0
725 .It \&.%R Ta \&No Ta \&No Ta >0
726 .It \&.%T Ta \&No Ta \&No Ta >0
727 .It \&.%V Ta \&No Ta \&No Ta >0
728 .It \&.At Ta Yes Ta Yes Ta 1
729 .It \&.Bsx Ta Yes Ta Yes Ta n
730 .It \&.Bx Ta Yes Ta Yes Ta n
731 .It \&.Db Ta \&No Ta \&No Ta 1
732 .It \&.Em Ta Yes Ta Yes Ta >0
733 .It \&.Fx Ta Yes Ta Yes Ta n
734 .It \&.Ms Ta \&No Ta Yes Ta >0
735 .It \&.No Ta Yes Ta Yes Ta 0
736 .It \&.Ns Ta Yes Ta Yes Ta 0
737 .It \&.Nx Ta Yes Ta Yes Ta n
738 .It \&.Ox Ta Yes Ta Yes Ta n
739 .It \&.Pf Ta \&No Ta Yes Ta 1
740 .It \&.Sm Ta \&No Ta \&No Ta 1
741 .It \&.Sx Ta Yes Ta Yes Ta >0
742 .It \&.Sy Ta Yes Ta Yes Ta >0
743 .It \&.Tn Ta Yes Ta Yes Ta >0
744 .It \&.Ux Ta Yes Ta Yes Ta n
745 .It \&.Dx Ta Yes Ta Yes Ta n
746 .It \&.Bt Ta \&No Ta \&No Ta 0
747 .It \&.Hf Ta \&No Ta \&No Ta n
748 .It \&.Fr Ta \&No Ta \&No Ta n
749 .It \&.Ud Ta \&No Ta \&No Ta 0
750 .It \&.Lb Ta \&No Ta \&No Ta 1
751 .It \&.Ap Ta Yes Ta Yes Ta 0
752 .It \&.Lp Ta \&No Ta \&No Ta 0
753 .It \&.Lk Ta \&No Ta Yes Ta >0
754 .It \&.Mt Ta \&No Ta Yes Ta >0
755 .It \&.Es Ta \&No Ta \&No Ta 0
756 .It \&.En Ta \&No Ta \&No Ta 0
757 .El
758 .Pp
759 The
760 .Sq \&Ot ,
761 .Sq \&Fr ,
762 .Sq \&Es
763 and
764 .Sq \&En ,
765 macros are obsolete.
766 .\" SECTION
767 .Sh COMPATIBILITY
768 The mdoc language was traditionally a
769 .Qq roff
770 macro package; most existing manuals were written with mdoc syntax
771 dictated by system-dependent roff installations. This section documents
772 compatibility with these systems.
773 .Pp
774 .Bl -dash -compact
775 .\" LIST-ITEM
776 .It
777 .Sq \&Fo
778 and
779 .Sq \&St
780 historically weren't always callable. Both are now correctly callable.
781 .\" LIST-ITEM
782 .It
783 .Sq \&It \-nested
784 is assumed for all lists: any list may be nested and
785 .Sq \-enum
786 lists will restart the sequence only for the sub-list.
787 .\" LIST-ITEM
788 .It
789 .Sq \&It \-column
790 syntax where column widths may be preceeded by other arguments (instead
791 of proceeded) is not supported.
792 .\" LIST-ITEM
793 .It
794 The
795 .Sq \&At
796 macro only accepts a single parameter.
797 .\" LIST-ITEM
798 .It
799 The system-name macros (
800 .Ns Sq \&At ,
801 .Sq \&Bsx ,
802 .Sq \&Bx ,
803 .Sq \&Fx ,
804 .Sq \&Nx ,
805 .Sq \&Ox ,
806 and
807 .Sq \&Ux )
808 are callable.
809 .\" LIST-ITEM
810 .It
811 Some manuals use
812 .Sq \&Li
813 incorrectly by following it with a reserved character and expecting the
814 delimiter to render. This is not supported.
815 .\" LIST-ITEM
816 .It
817 .Sq \&Cd
818 is callable.
819 .El
820 .\" SECTION
821 .Sh SEE ALSO
822 .Xr mdoctree 1 ,
823 .Xr mdoclint 1 ,
824 .Xr mdocterm 1 ,
825 .Xr mdoc 3
826 .\" SECTION
827 .Sh AUTHORS
828 The
829 .Nm
830 utility was written by
831 .An Kristaps Dzonsons Aq kristaps@openbsd.org .
832 .\" SECTION
833 .Sh CAVEATS
834 There are several ambiguous parts of mdoc.
835 .Pp
836 .Bl -dash -compact
837 .\" LIST-ITEM
838 .It
839 .Sq \&Fa
840 should be
841 .Sq \&Va
842 as function arguments are variables.
843 .\" LIST-ITEM
844 .It
845 .Sq \&Ft
846 should be
847 .Sq \&Vt
848 as function return types are still types. Furthermore, the
849 .Sq \&Ft
850 should be removed and
851 .Sq \&Fo ,
852 which ostensibly follows it, should follow the same convention as
853 .Sq \&Va .
854 .\" LIST-ITEM
855 .It
856 .Sq \&Va
857 should formalise that only one or two arguments are acceptable: a
858 variable name and optional, preceeding type.
859 .\" LIST-ITEM
860 .It
861 .Sq \&Fd
862 is ambiguous. It's commonly used to indicate an include file in the
863 synopsis section.
864 .Sq \&In
865 should be used, instead.
866 .\" LIST-ITEM
867 .It
868 Only the
869 .Sq \-literal
870 argument to
871 .Sq \&Bd
872 makes sense. The remaining ones should be removed.
873 .\" LIST-ITEM
874 .It
875 The
876 .Sq \&Xo
877 and
878 .Sq \&Xc
879 macros should be deprecated.
880 .\" LIST-ITEM
881 .It
882 The
883 .Sq \&Dt
884 macro lacks clarity. It should be absolutely clear which title will
885 render when formatting the manual page.
886 .\" LIST-ITEM
887 .It
888 A
889 .Sq \&Lx
890 should be provided for Linux (\(`a la
891 .Sq \&Ox ,
892 .Sq \&Nx
893 etc.).
894 .El