]> git.cameronkatri.com Git - mandoc.git/blob - mdoc.7
While we do not recommend the idiom ".Fl Fl long" for long options
[mandoc.git] / mdoc.7
1 .\" $Id: mdoc.7,v 1.281 2020/02/13 18:32:56 schwarze Exp $
2 .\"
3 .\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
4 .\" Copyright (c) 2010, 2011, 2013-2020 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: February 13 2020 $
19 .Dt MDOC 7
20 .Os
21 .Sh NAME
22 .Nm mdoc
23 .Nd semantic markup language for formatting manual pages
24 .Sh DESCRIPTION
25 The
26 .Nm mdoc
27 language supports authoring of manual pages for the
28 .Xr man 1
29 utility by allowing semantic annotations of words, phrases,
30 page sections and complete manual pages.
31 Such annotations are used by formatting tools to achieve a uniform
32 presentation across all manuals written in
33 .Nm ,
34 and to support hyperlinking if supported by the output medium.
35 .Pp
36 This reference document describes the structure of manual pages
37 and the syntax and usage of the
38 .Nm
39 language.
40 The reference implementation of a parsing and formatting tool is
41 .Xr mandoc 1 ;
42 the
43 .Sx COMPATIBILITY
44 section describes compatibility with other implementations.
45 .Pp
46 In an
47 .Nm
48 document, lines beginning with the control character
49 .Sq \&.
50 are called
51 .Dq macro lines .
52 The first word is the macro name.
53 It consists of two or three letters.
54 Most macro names begin with a capital letter.
55 For a list of available macros, see
56 .Sx MACRO OVERVIEW .
57 The words following the macro name are arguments to the macro, optionally
58 including the names of other, callable macros; see
59 .Sx MACRO SYNTAX
60 for details.
61 .Pp
62 Lines not beginning with the control character are called
63 .Dq text lines .
64 They provide free-form text to be printed; the formatting of the text
65 depends on the respective processing context:
66 .Bd -literal -offset indent
67 \&.Sh Macro lines change control state.
68 Text lines are interpreted within the current state.
69 .Ed
70 .Pp
71 Many aspects of the basic syntax of the
72 .Nm
73 language are based on the
74 .Xr roff 7
75 language; see the
76 .Em LANGUAGE SYNTAX
77 and
78 .Em MACRO SYNTAX
79 sections in the
80 .Xr roff 7
81 manual for details, in particular regarding
82 comments, escape sequences, whitespace, and quoting.
83 However, using
84 .Xr roff 7
85 requests in
86 .Nm
87 documents is discouraged;
88 .Xr mandoc 1
89 supports some of them merely for backward compatibility.
90 .Sh MANUAL STRUCTURE
91 A well-formed
92 .Nm
93 document consists of a document prologue followed by one or more
94 sections.
95 .Pp
96 The prologue, which consists of the
97 .Ic \&Dd ,
98 .Ic \&Dt ,
99 and
100 .Ic \&Os
101 macros in that order, is required for every document.
102 .Pp
103 The first section (sections are denoted by
104 .Ic \&Sh )
105 must be the NAME section, consisting of at least one
106 .Ic \&Nm
107 followed by
108 .Ic \&Nd .
109 .Pp
110 Following that, convention dictates specifying at least the
111 .Em SYNOPSIS
112 and
113 .Em DESCRIPTION
114 sections, although this varies between manual sections.
115 .Pp
116 The following is a well-formed skeleton
117 .Nm
118 file for a utility
119 .Qq progname :
120 .Bd -literal -offset indent
121 \&.Dd $\&Mdocdate$
122 \&.Dt PROGNAME section
123 \&.Os
124 \&.Sh NAME
125 \&.Nm progname
126 \&.Nd one line about what it does
127 \&.\e\(dq .Sh LIBRARY
128 \&.\e\(dq For sections 2, 3, and 9 only.
129 \&.\e\(dq Not used in OpenBSD.
130 \&.Sh SYNOPSIS
131 \&.Nm progname
132 \&.Op Fl options
133 \&.Ar
134 \&.Sh DESCRIPTION
135 The
136 \&.Nm
137 utility processes files ...
138 \&.\e\(dq .Sh CONTEXT
139 \&.\e\(dq For section 9 functions only.
140 \&.\e\(dq .Sh IMPLEMENTATION NOTES
141 \&.\e\(dq Not used in OpenBSD.
142 \&.\e\(dq .Sh RETURN VALUES
143 \&.\e\(dq For sections 2, 3, and 9 function return values only.
144 \&.\e\(dq .Sh ENVIRONMENT
145 \&.\e\(dq For sections 1, 6, 7, and 8 only.
146 \&.\e\(dq .Sh FILES
147 \&.\e\(dq .Sh EXIT STATUS
148 \&.\e\(dq For sections 1, 6, and 8 only.
149 \&.\e\(dq .Sh EXAMPLES
150 \&.\e\(dq .Sh DIAGNOSTICS
151 \&.\e\(dq For sections 1, 4, 6, 7, 8, and 9 printf/stderr messages only.
152 \&.\e\(dq .Sh ERRORS
153 \&.\e\(dq For sections 2, 3, 4, and 9 errno settings only.
154 \&.\e\(dq .Sh SEE ALSO
155 \&.\e\(dq .Xr foobar 1
156 \&.\e\(dq .Sh STANDARDS
157 \&.\e\(dq .Sh HISTORY
158 \&.\e\(dq .Sh AUTHORS
159 \&.\e\(dq .Sh CAVEATS
160 \&.\e\(dq .Sh BUGS
161 \&.\e\(dq .Sh SECURITY CONSIDERATIONS
162 \&.\e\(dq Not used in OpenBSD.
163 .Ed
164 .Pp
165 The sections in an
166 .Nm
167 document are conventionally ordered as they appear above.
168 Sections should be composed as follows:
169 .Bl -ohang -offset Ds
170 .It Em NAME
171 The name(s) and a one line description of the documented material.
172 The syntax for this as follows:
173 .Bd -literal -offset indent
174 \&.Nm name0 ,
175 \&.Nm name1 ,
176 \&.Nm name2
177 \&.Nd a one line description
178 .Ed
179 .Pp
180 Multiple
181 .Sq \&Nm
182 names should be separated by commas.
183 .Pp
184 The
185 .Ic \&Nm
186 macro(s) must precede the
187 .Ic \&Nd
188 macro.
189 .Pp
190 See
191 .Ic \&Nm
192 and
193 .Ic \&Nd .
194 .It Em LIBRARY
195 The name of the library containing the documented material, which is
196 assumed to be a function in a section 2, 3, or 9 manual.
197 The syntax for this is as follows:
198 .Bd -literal -offset indent
199 \&.Lb libarm
200 .Ed
201 .Pp
202 See
203 .Ic \&Lb .
204 .It Em SYNOPSIS
205 Documents the utility invocation syntax, function call syntax, or device
206 configuration.
207 .Pp
208 For the first, utilities (sections 1, 6, and 8), this is
209 generally structured as follows:
210 .Bd -literal -offset indent
211 \&.Nm bar
212 \&.Op Fl v
213 \&.Op Fl o Ar file
214 \&.Op Ar
215 \&.Nm foo
216 \&.Op Fl v
217 \&.Op Fl o Ar file
218 \&.Op Ar
219 .Ed
220 .Pp
221 Commands should be ordered alphabetically.
222 .Pp
223 For the second, function calls (sections 2, 3, 9):
224 .Bd -literal -offset indent
225 \&.In header.h
226 \&.Vt extern const char *global;
227 \&.Ft "char *"
228 \&.Fn foo "const char *src"
229 \&.Ft "char *"
230 \&.Fn bar "const char *src"
231 .Ed
232 .Pp
233 Ordering of
234 .Ic \&In ,
235 .Ic \&Vt ,
236 .Ic \&Fn ,
237 and
238 .Ic \&Fo
239 macros should follow C header-file conventions.
240 .Pp
241 And for the third, configurations (section 4):
242 .Bd -literal -offset indent
243 \&.Cd \(dqit* at isa? port 0x2e\(dq
244 \&.Cd \(dqit* at isa? port 0x4e\(dq
245 .Ed
246 .Pp
247 Manuals not in these sections generally don't need a
248 .Em SYNOPSIS .
249 .Pp
250 Some macros are displayed differently in the
251 .Em SYNOPSIS
252 section, particularly
253 .Ic \&Nm ,
254 .Ic \&Cd ,
255 .Ic \&Fd ,
256 .Ic \&Fn ,
257 .Ic \&Fo ,
258 .Ic \&In ,
259 .Ic \&Vt ,
260 and
261 .Ic \&Ft .
262 All of these macros are output on their own line.
263 If two such dissimilar macros are pairwise invoked (except for
264 .Ic \&Ft
265 before
266 .Ic \&Fo
267 or
268 .Ic \&Fn ) ,
269 they are separated by a vertical space, unless in the case of
270 .Ic \&Fo ,
271 .Ic \&Fn ,
272 and
273 .Ic \&Ft ,
274 which are always separated by vertical space.
275 .Pp
276 When text and macros following an
277 .Ic \&Nm
278 macro starting an input line span multiple output lines,
279 all output lines but the first will be indented to align
280 with the text immediately following the
281 .Ic \&Nm
282 macro, up to the next
283 .Ic \&Nm ,
284 .Ic \&Sh ,
285 or
286 .Ic \&Ss
287 macro or the end of an enclosing block, whichever comes first.
288 .It Em DESCRIPTION
289 This begins with an expansion of the brief, one line description in
290 .Em NAME :
291 .Bd -literal -offset indent
292 The
293 \&.Nm
294 utility does this, that, and the other.
295 .Ed
296 .Pp
297 It usually follows with a breakdown of the options (if documenting a
298 command), such as:
299 .Bd -literal -offset indent
300 The arguments are as follows:
301 \&.Bl \-tag \-width Ds
302 \&.It Fl v
303 Print verbose information.
304 \&.El
305 .Ed
306 .Pp
307 List the options in alphabetical order,
308 uppercase before lowercase for each letter and
309 with no regard to whether an option takes an argument.
310 Put digits in ascending order before all letter options.
311 .Pp
312 Manuals not documenting a command won't include the above fragment.
313 .Pp
314 Since the
315 .Em DESCRIPTION
316 section usually contains most of the text of a manual, longer manuals
317 often use the
318 .Ic \&Ss
319 macro to form subsections.
320 In very long manuals, the
321 .Em DESCRIPTION
322 may be split into multiple sections, each started by an
323 .Ic \&Sh
324 macro followed by a non-standard section name, and each having
325 several subsections, like in the present
326 .Nm
327 manual.
328 .It Em CONTEXT
329 This section lists the contexts in which functions can be called in section 9.
330 The contexts are autoconf, process, or interrupt.
331 .It Em IMPLEMENTATION NOTES
332 Implementation-specific notes should be kept here.
333 This is useful when implementing standard functions that may have side
334 effects or notable algorithmic implications.
335 .It Em RETURN VALUES
336 This section documents the
337 return values of functions in sections 2, 3, and 9.
338 .Pp
339 See
340 .Ic \&Rv .
341 .It Em ENVIRONMENT
342 Lists the environment variables used by the utility,
343 and explains the syntax and semantics of their values.
344 The
345 .Xr environ 7
346 manual provides examples of typical content and formatting.
347 .Pp
348 See
349 .Ic \&Ev .
350 .It Em FILES
351 Documents files used.
352 It's helpful to document both the file name and a short description of how
353 the file is used (created, modified, etc.).
354 .Pp
355 See
356 .Ic \&Pa .
357 .It Em EXIT STATUS
358 This section documents the
359 command exit status for section 1, 6, and 8 utilities.
360 Historically, this information was described in
361 .Em DIAGNOSTICS ,
362 a practise that is now discouraged.
363 .Pp
364 See
365 .Ic \&Ex .
366 .It Em EXAMPLES
367 Example usages.
368 This often contains snippets of well-formed, well-tested invocations.
369 Make sure that examples work properly!
370 .It Em DIAGNOSTICS
371 Documents error messages.
372 In section 4 and 9 manuals, these are usually messages printed by the
373 kernel to the console and to the kernel log.
374 In section 1, 6, 7, and 8, these are usually messages printed by
375 userland programs to the standard error output.
376 .Pp
377 Historically, this section was used in place of
378 .Em EXIT STATUS
379 for manuals in sections 1, 6, and 8; however, this practise is
380 discouraged.
381 .Pp
382 See
383 .Ic \&Bl
384 .Fl diag .
385 .It Em ERRORS
386 Documents
387 .Xr errno 2
388 settings in sections 2, 3, 4, and 9.
389 .Pp
390 See
391 .Ic \&Er .
392 .It Em SEE ALSO
393 References other manuals with related topics.
394 This section should exist for most manuals.
395 Cross-references should conventionally be ordered first by section, then
396 alphabetically (ignoring case).
397 .Pp
398 References to other documentation concerning the topic of the manual page,
399 for example authoritative books or journal articles, may also be
400 provided in this section.
401 .Pp
402 See
403 .Ic \&Rs
404 and
405 .Ic \&Xr .
406 .It Em STANDARDS
407 References any standards implemented or used.
408 If not adhering to any standards, the
409 .Em HISTORY
410 section should be used instead.
411 .Pp
412 See
413 .Ic \&St .
414 .It Em HISTORY
415 A brief history of the subject, including where it was first implemented,
416 and when it was ported to or reimplemented for the operating system at hand.
417 .It Em AUTHORS
418 Credits to the person or persons who wrote the code and/or documentation.
419 Authors should generally be noted by both name and email address.
420 .Pp
421 See
422 .Ic \&An .
423 .It Em CAVEATS
424 Common misuses and misunderstandings should be explained
425 in this section.
426 .It Em BUGS
427 Known bugs, limitations, and work-arounds should be described
428 in this section.
429 .It Em SECURITY CONSIDERATIONS
430 Documents any security precautions that operators should consider.
431 .El
432 .Sh MACRO OVERVIEW
433 This overview is sorted such that macros of similar purpose are listed
434 together, to help find the best macro for any given purpose.
435 Deprecated macros are not included in the overview, but can be found below
436 in the alphabetical
437 .Sx MACRO REFERENCE .
438 .Ss Document preamble and NAME section macros
439 .Bl -column "Brq, Bro, Brc" description
440 .It Ic \&Dd Ta document date: Cm $\&Mdocdate$ | Ar month day , year
441 .It Ic \&Dt Ta document title: Ar TITLE section Op Ar arch
442 .It Ic \&Os Ta operating system version: Op Ar system Op Ar version
443 .It Ic \&Nm Ta document name (one argument)
444 .It Ic \&Nd Ta document description (one line)
445 .El
446 .Ss Sections and cross references
447 .Bl -column "Brq, Bro, Brc" description
448 .It Ic \&Sh Ta section header (one line)
449 .It Ic \&Ss Ta subsection header (one line)
450 .It Ic \&Sx Ta internal cross reference to a section or subsection
451 .It Ic \&Xr Ta cross reference to another manual page: Ar name section
452 .It Ic \&Tg Ta tag the definition of a Ar term Pq <= 1 arguments
453 .It Ic \&Pp Ta start a text paragraph (no arguments)
454 .El
455 .Ss Displays and lists
456 .Bl -column "Brq, Bro, Brc" description
457 .It Ic \&Bd , \&Ed Ta display block:
458 .Fl Ar type
459 .Op Fl offset Ar width
460 .Op Fl compact
461 .It Ic \&D1 Ta indented display (one line)
462 .It Ic \&Dl Ta indented literal display (one line)
463 .It Ic \&Ql Ta in-line literal display: Ql text
464 .It Ic \&Bl , \&El Ta list block:
465 .Fl Ar type
466 .Op Fl width Ar val
467 .Op Fl offset Ar val
468 .Op Fl compact
469 .It Ic \&It Ta list item (syntax depends on Fl Ar type )
470 .It Ic \&Ta Ta table cell separator in Ic \&Bl Fl column No lists
471 .It Ic \&Rs , \&%* , \&Re Ta bibliographic block (references)
472 .El
473 .Ss Spacing control
474 .Bl -column "Brq, Bro, Brc" description
475 .It Ic \&Pf Ta prefix, no following horizontal space (one argument)
476 .It Ic \&Ns Ta roman font, no preceding horizontal space (no arguments)
477 .It Ic \&Ap Ta apostrophe without surrounding whitespace (no arguments)
478 .It Ic \&Sm Ta switch horizontal spacing mode: Op Cm on | off
479 .It Ic \&Bk , \&Ek Ta keep block: Fl words
480 .El
481 .Ss Semantic markup for command line utilities
482 .Bl -column "Brq, Bro, Brc" description
483 .It Ic \&Nm Ta start a SYNOPSIS block with the name of a utility
484 .It Ic \&Fl Ta command line options (flags) (>=0 arguments)
485 .It Ic \&Cm Ta command modifier (>0 arguments)
486 .It Ic \&Ar Ta command arguments (>=0 arguments)
487 .It Ic \&Op , \&Oo , \&Oc Ta optional syntax elements (enclosure)
488 .It Ic \&Ic Ta internal or interactive command (>0 arguments)
489 .It Ic \&Ev Ta environmental variable (>0 arguments)
490 .It Ic \&Pa Ta file system path (>=0 arguments)
491 .El
492 .Ss Semantic markup for function libraries
493 .Bl -column "Brq, Bro, Brc" description
494 .It Ic \&Lb Ta function library (one argument)
495 .It Ic \&In Ta include file (one argument)
496 .It Ic \&Fd Ta other preprocessor directive (>0 arguments)
497 .It Ic \&Ft Ta function type (>0 arguments)
498 .It Ic \&Fo , \&Fc Ta function block: Ar funcname
499 .It Ic \&Fn Ta function name: Ar funcname Op Ar argument ...
500 .It Ic \&Fa Ta function argument (>0 arguments)
501 .It Ic \&Vt Ta variable type (>0 arguments)
502 .It Ic \&Va Ta variable name (>0 arguments)
503 .It Ic \&Dv Ta defined variable or preprocessor constant (>0 arguments)
504 .It Ic \&Er Ta error constant (>0 arguments)
505 .It Ic \&Ev Ta environmental variable (>0 arguments)
506 .El
507 .Ss Various semantic markup
508 .Bl -column "Brq, Bro, Brc" description
509 .It Ic \&An Ta author name (>0 arguments)
510 .It Ic \&Lk Ta hyperlink: Ar uri Op Ar display_name
511 .It Ic \&Mt Ta Do mailto Dc hyperlink: Ar localpart Ns @ Ns Ar domain
512 .It Ic \&Cd Ta kernel configuration declaration (>0 arguments)
513 .It Ic \&Ad Ta memory address (>0 arguments)
514 .It Ic \&Ms Ta mathematical symbol (>0 arguments)
515 .El
516 .Ss Physical markup
517 .Bl -column "Brq, Bro, Brc" description
518 .It Ic \&Em Ta italic font or underline (emphasis) (>0 arguments)
519 .It Ic \&Sy Ta boldface font (symbolic) (>0 arguments)
520 .It Ic \&No Ta return to roman font (normal) (>0 arguments)
521 .It Ic \&Bf , \&Ef Ta font block: Fl Ar type | Cm \&Em | \&Li | \&Sy
522 .El
523 .Ss Physical enclosures
524 .Bl -column "Brq, Bro, Brc" description
525 .It Ic \&Dq , \&Do , \&Dc Ta enclose in typographic double quotes: Dq text
526 .It Ic \&Qq , \&Qo , \&Qc Ta enclose in typewriter double quotes: Qq text
527 .It Ic \&Sq , \&So , \&Sc Ta enclose in single quotes: Sq text
528 .It Ic \&Pq , \&Po , \&Pc Ta enclose in parentheses: Pq text
529 .It Ic \&Bq , \&Bo , \&Bc Ta enclose in square brackets: Bq text
530 .It Ic \&Brq , \&Bro , \&Brc Ta enclose in curly braces: Brq text
531 .It Ic \&Aq , \&Ao , \&Ac Ta enclose in angle brackets: Aq text
532 .It Ic \&Eo , \&Ec Ta generic enclosure
533 .El
534 .Ss Text production
535 .Bl -column "Brq, Bro, Brc" description
536 .It Ic \&Ex Fl std Ta standard command exit values: Op Ar utility ...
537 .It Ic \&Rv Fl std Ta standard function return values: Op Ar function ...
538 .It Ic \&St Ta reference to a standards document (one argument)
539 .It Ic \&At Ta At
540 .It Ic \&Bx Ta Bx
541 .It Ic \&Bsx Ta Bsx
542 .It Ic \&Nx Ta Nx
543 .It Ic \&Fx Ta Fx
544 .It Ic \&Ox Ta Ox
545 .It Ic \&Dx Ta Dx
546 .El
547 .Sh MACRO REFERENCE
548 This section is a canonical reference of all macros, arranged
549 alphabetically.
550 For the scoping of individual macros, see
551 .Sx MACRO SYNTAX .
552 .Bl -tag -width 3n
553 .It Ic \&%A Ar first_name ... last_name
554 Author name of an
555 .Ic \&Rs
556 block.
557 Multiple authors should each be accorded their own
558 .Ic \%%A
559 line.
560 Author names should be ordered with full or abbreviated forename(s)
561 first, then full surname.
562 .It Ic \&%B Ar title
563 Book title of an
564 .Ic \&Rs
565 block.
566 This macro may also be used in a non-bibliographic context when
567 referring to book titles.
568 .It Ic \&%C Ar location
569 Publication city or location of an
570 .Ic \&Rs
571 block.
572 .It Ic \&%D Oo Ar month day , Oc Ar year
573 Publication date of an
574 .Ic \&Rs
575 block.
576 Provide the full English name of the
577 .Ar month
578 and all four digits of the
579 .Ar year .
580 .It Ic \&%I Ar name
581 Publisher or issuer name of an
582 .Ic \&Rs
583 block.
584 .It Ic \&%J Ar name
585 Journal name of an
586 .Ic \&Rs
587 block.
588 .It Ic \&%N Ar number
589 Issue number (usually for journals) of an
590 .Ic \&Rs
591 block.
592 .It Ic \&%O Ar line
593 Optional information of an
594 .Ic \&Rs
595 block.
596 .It Ic \&%P Ar number
597 Book or journal page number of an
598 .Ic \&Rs
599 block.
600 Conventionally, the argument starts with
601 .Ql p.\&
602 for a single page or
603 .Ql pp.\&
604 for a range of pages, for example:
605 .Pp
606 .Dl .%P pp. 42\e(en47
607 .It Ic \&%Q Ar name
608 Institutional author (school, government, etc.) of an
609 .Ic \&Rs
610 block.
611 Multiple institutional authors should each be accorded their own
612 .Ic \&%Q
613 line.
614 .It Ic \&%R Ar name
615 Technical report name of an
616 .Ic \&Rs
617 block.
618 .It Ic \&%T Ar title
619 Article title of an
620 .Ic \&Rs
621 block.
622 This macro may also be used in a non-bibliographical context when
623 referring to article titles.
624 .It Ic \&%U Ar protocol Ns :// Ns Ar path
625 URI of reference document.
626 .It Ic \&%V Ar number
627 Volume number of an
628 .Ic \&Rs
629 block.
630 .It Ic \&Ac
631 Close an
632 .Ic \&Ao
633 block.
634 Does not have any tail arguments.
635 .It Ic \&Ad Ar address
636 Memory address.
637 Do not use this for postal addresses.
638 .Pp
639 Examples:
640 .Dl \&.Ad [0,$]
641 .Dl \&.Ad 0x00000000
642 .It Ic \&An Fl split | nosplit | Ar first_name ... last_name
643 Author name.
644 Can be used both for the authors of the program, function, or driver
645 documented in the manual, or for the authors of the manual itself.
646 Requires either the name of an author or one of the following arguments:
647 .Pp
648 .Bl -tag -width "-nosplitX" -offset indent -compact
649 .It Fl split
650 Start a new output line before each subsequent invocation of
651 .Ic \&An .
652 .It Fl nosplit
653 The opposite of
654 .Fl split .
655 .El
656 .Pp
657 The default is
658 .Fl nosplit .
659 The effect of selecting either of the
660 .Fl split
661 modes ends at the beginning of the
662 .Em AUTHORS
663 section.
664 In the
665 .Em AUTHORS
666 section, the default is
667 .Fl nosplit
668 for the first author listing and
669 .Fl split
670 for all other author listings.
671 .Pp
672 Examples:
673 .Dl \&.An -nosplit
674 .Dl \&.An Kristaps Dzonsons \&Aq \&Mt kristaps@bsd.lv
675 .It Ic \&Ao Ar block
676 Begin a block enclosed by angle brackets.
677 Does not have any head arguments.
678 This macro is almost never useful.
679 See
680 .Ic \&Aq
681 for more details.
682 .It Ic \&Ap
683 Inserts an apostrophe without any surrounding whitespace.
684 This is generally used as a grammatical device when referring to the verb
685 form of a function.
686 .Pp
687 Examples:
688 .Dl \&.Fn execve \&Ap d
689 .It Ic \&Aq Ar line
690 Enclose the rest of the input line in angle brackets.
691 The only important use case is for email addresses.
692 See
693 .Ic \&Mt
694 for an example.
695 .Pp
696 Occasionally, it is used for names of characters and keys, for example:
697 .Bd -literal -offset indent
698 Press the
699 \&.Aq escape
700 key to ...
701 .Ed
702 .Pp
703 For URIs, use
704 .Ic \&Lk
705 instead, and
706 .Ic \&In
707 for
708 .Dq #include
709 directives.
710 Never wrap
711 .Ic \&Ar
712 in
713 .Ic \&Aq .
714 .Pp
715 Since
716 .Ic \&Aq
717 usually renders with non-ASCII characters in non-ASCII output modes,
718 do not use it where the ASCII characters
719 .Sq <
720 and
721 .Sq >
722 are required as syntax elements.
723 Instead, use these characters directly in such cases, combining them
724 with the macros
725 .Ic \&Pf ,
726 .Ic \&Ns ,
727 or
728 .Ic \&Eo
729 as needed.
730 .Pp
731 See also
732 .Ic \&Ao .
733 .It Ic \&Ar Op Ar placeholder ...
734 Command arguments.
735 If an argument is not provided, the string
736 .Dq file ...\&
737 is used as a default.
738 .Pp
739 Examples:
740 .Dl ".Fl o Ar file"
741 .Dl ".Ar"
742 .Dl ".Ar arg1 , arg2 ."
743 .Pp
744 The arguments to the
745 .Ic \&Ar
746 macro are names and placeholders for command arguments;
747 for fixed strings to be passed verbatim as arguments, use
748 .Ic \&Fl
749 or
750 .Ic \&Cm .
751 .It Ic \&At Op Ar version
752 Formats an
753 .At
754 version.
755 Accepts one optional argument:
756 .Pp
757 .Bl -tag -width "v[1-7] | 32vX" -offset indent -compact
758 .It Cm v[1-7] | 32v
759 A version of
760 .At .
761 .It Cm III
762 .At III .
763 .It Cm V | V.[1-4]
764 A version of
765 .At V .
766 .El
767 .Pp
768 Note that these arguments do not begin with a hyphen.
769 .Pp
770 Examples:
771 .Dl \&.At
772 .Dl \&.At III
773 .Dl \&.At V.1
774 .Pp
775 See also
776 .Ic \&Bsx ,
777 .Ic \&Bx ,
778 .Ic \&Dx ,
779 .Ic \&Fx ,
780 .Ic \&Nx ,
781 and
782 .Ic \&Ox .
783 .It Ic \&Bc
784 Close a
785 .Ic \&Bo
786 block.
787 Does not have any tail arguments.
788 .It Ic \&Bd Fl Ns Ar type Oo Fl offset Ar width Oc Op Fl compact
789 Begin a display block.
790 Display blocks are used to select a different indentation and
791 justification than the one used by the surrounding text.
792 They may contain both macro lines and text lines.
793 By default, a display block is preceded by a vertical space.
794 .Pp
795 The
796 .Ar type
797 must be one of the following:
798 .Bl -tag -width 13n -offset indent
799 .It Fl centered
800 Produce one output line from each input line, and center-justify each line.
801 Using this display type is not recommended; many
802 .Nm
803 implementations render it poorly.
804 .It Fl filled
805 Change the positions of line breaks to fill each line, and left- and
806 right-justify the resulting block.
807 .It Fl literal
808 Produce one output line from each input line,
809 and do not justify the block at all.
810 Preserve white space as it appears in the input.
811 Always use a constant-width font.
812 Use this for displaying source code.
813 .It Fl ragged
814 Change the positions of line breaks to fill each line, and left-justify
815 the resulting block.
816 .It Fl unfilled
817 The same as
818 .Fl literal ,
819 but using the same font as for normal text, which is a variable width font
820 if supported by the output device.
821 .El
822 .Pp
823 The
824 .Ar type
825 must be provided first.
826 Additional arguments may follow:
827 .Bl -tag -width 13n -offset indent
828 .It Fl offset Ar width
829 Indent the display by the
830 .Ar width ,
831 which may be one of the following:
832 .Bl -item
833 .It
834 One of the pre-defined strings
835 .Cm indent ,
836 the width of a standard indentation (six constant width characters);
837 .Cm indent-two ,
838 twice
839 .Cm indent ;
840 .Cm left ,
841 which has no effect;
842 .Cm right ,
843 which justifies to the right margin; or
844 .Cm center ,
845 which aligns around an imagined center axis.
846 .It
847 A macro invocation, which selects a predefined width
848 associated with that macro.
849 The most popular is the imaginary macro
850 .Ar \&Ds ,
851 which resolves to
852 .Sy 6n .
853 .It
854 A scaling width as described in
855 .Xr roff 7 .
856 .It
857 An arbitrary string, which indents by the length of this string.
858 .El
859 .Pp
860 When the argument is missing,
861 .Fl offset
862 is ignored.
863 .It Fl compact
864 Do not assert vertical space before the display.
865 .El
866 .Pp
867 Examples:
868 .Bd -literal -offset indent
869 \&.Bd \-literal \-offset indent \-compact
870 Hello world.
871 \&.Ed
872 .Ed
873 .Pp
874 See also
875 .Ic \&D1
876 and
877 .Ic \&Dl .
878 .It Ic \&Bf Fl emphasis | literal | symbolic | Cm \&Em | \&Li | \&Sy
879 Change the font mode for a scoped block of text.
880 The
881 .Fl emphasis
882 and
883 .Cm \&Em
884 argument are equivalent, as are
885 .Fl symbolic
886 and
887 .Cm \&Sy ,
888 and
889 .Fl literal
890 and
891 .Cm \&Li .
892 Without an argument, this macro does nothing.
893 The font mode continues until broken by a new font mode in a nested
894 scope or
895 .Ic \&Ef
896 is encountered.
897 .Pp
898 See also
899 .Ic \&Li ,
900 .Ic \&Ef ,
901 .Ic \&Em ,
902 and
903 .Ic \&Sy .
904 .It Ic \&Bk Fl words
905 For each macro, keep its output together on the same output line,
906 until the end of the macro or the end of the input line is reached,
907 whichever comes first.
908 Line breaks in text lines are unaffected.
909 .Pp
910 The
911 .Fl words
912 argument is required; additional arguments are ignored.
913 .Pp
914 The following example will not break within each
915 .Ic \&Op
916 macro line:
917 .Bd -literal -offset indent
918 \&.Bk \-words
919 \&.Op Fl f Ar flags
920 \&.Op Fl o Ar output
921 \&.Ek
922 .Ed
923 .Pp
924 Be careful in using over-long lines within a keep block!
925 Doing so will clobber the right margin.
926 .It Xo
927 .Ic \&Bl
928 .Fl Ns Ar type
929 .Op Fl width Ar val
930 .Op Fl offset Ar val
931 .Op Fl compact
932 .Op Ar col ...
933 .Xc
934 Begin a list.
935 Lists consist of items specified using the
936 .Ic \&It
937 macro, containing a head or a body or both.
938 .Pp
939 The list
940 .Ar type
941 is mandatory and must be specified first.
942 The
943 .Fl width
944 and
945 .Fl offset
946 arguments accept macro names as described for
947 .Ic \&Bd
948 .Fl offset ,
949 scaling widths as described in
950 .Xr roff 7 ,
951 or use the length of the given string.
952 The
953 .Fl offset
954 is a global indentation for the whole list, affecting both item heads
955 and bodies.
956 For those list types supporting it, the
957 .Fl width
958 argument requests an additional indentation of item bodies,
959 to be added to the
960 .Fl offset .
961 Unless the
962 .Fl compact
963 argument is specified, list entries are separated by vertical space.
964 .Pp
965 A list must specify one of the following list types:
966 .Bl -tag -width 12n -offset indent
967 .It Fl bullet
968 No item heads can be specified, but a bullet will be printed at the head
969 of each item.
970 Item bodies start on the same output line as the bullet
971 and are indented according to the
972 .Fl width
973 argument.
974 .It Fl column
975 A columnated list.
976 The
977 .Fl width
978 argument has no effect; instead, the string length of each argument
979 specifies the width of one column.
980 If the first line of the body of a
981 .Fl column
982 list is not an
983 .Ic \&It
984 macro line,
985 .Ic \&It
986 contexts spanning one input line each are implied until an
987 .Ic \&It
988 macro line is encountered, at which point items start being interpreted as
989 described in the
990 .Ic \&It
991 documentation.
992 .It Fl dash
993 Like
994 .Fl bullet ,
995 except that dashes are used in place of bullets.
996 .It Fl diag
997 Like
998 .Fl inset ,
999 except that item heads are not parsed for macro invocations.
1000 Most often used in the
1001 .Em DIAGNOSTICS
1002 section with error constants in the item heads.
1003 .It Fl enum
1004 A numbered list.
1005 No item heads can be specified.
1006 Formatted like
1007 .Fl bullet ,
1008 except that cardinal numbers are used in place of bullets,
1009 starting at 1.
1010 .It Fl hang
1011 Like
1012 .Fl tag ,
1013 except that the first lines of item bodies are not indented, but follow
1014 the item heads like in
1015 .Fl inset
1016 lists.
1017 .It Fl hyphen
1018 Synonym for
1019 .Fl dash .
1020 .It Fl inset
1021 Item bodies follow items heads on the same line, using normal inter-word
1022 spacing.
1023 Bodies are not indented, and the
1024 .Fl width
1025 argument is ignored.
1026 .It Fl item
1027 No item heads can be specified, and none are printed.
1028 Bodies are not indented, and the
1029 .Fl width
1030 argument is ignored.
1031 .It Fl ohang
1032 Item bodies start on the line following item heads and are not indented.
1033 The
1034 .Fl width
1035 argument is ignored.
1036 .It Fl tag
1037 Item bodies are indented according to the
1038 .Fl width
1039 argument.
1040 When an item head fits inside the indentation, the item body follows
1041 this head on the same output line.
1042 Otherwise, the body starts on the output line following the head.
1043 .El
1044 .Pp
1045 Lists may be nested within lists and displays.
1046 Nesting of
1047 .Fl column
1048 and
1049 .Fl enum
1050 lists may not be portable.
1051 .Pp
1052 See also
1053 .Ic \&El
1054 and
1055 .Ic \&It .
1056 .It Ic \&Bo Ar block
1057 Begin a block enclosed by square brackets.
1058 Does not have any head arguments.
1059 .Pp
1060 Examples:
1061 .Bd -literal -offset indent -compact
1062 \&.Bo 1 ,
1063 \&.Dv BUFSIZ \&Bc
1064 .Ed
1065 .Pp
1066 See also
1067 .Ic \&Bq .
1068 .It Ic \&Bq Ar line
1069 Encloses its arguments in square brackets.
1070 .Pp
1071 Examples:
1072 .Dl \&.Bq 1 , \&Dv BUFSIZ
1073 .Pp
1074 .Em Remarks :
1075 this macro is sometimes abused to emulate optional arguments for
1076 commands; the correct macros to use for this purpose are
1077 .Ic \&Op ,
1078 .Ic \&Oo ,
1079 and
1080 .Ic \&Oc .
1081 .Pp
1082 See also
1083 .Ic \&Bo .
1084 .It Ic \&Brc
1085 Close a
1086 .Ic \&Bro
1087 block.
1088 Does not have any tail arguments.
1089 .It Ic \&Bro Ar block
1090 Begin a block enclosed by curly braces.
1091 Does not have any head arguments.
1092 .Pp
1093 Examples:
1094 .Bd -literal -offset indent -compact
1095 \&.Bro 1 , ... ,
1096 \&.Va n \&Brc
1097 .Ed
1098 .Pp
1099 See also
1100 .Ic \&Brq .
1101 .It Ic \&Brq Ar line
1102 Encloses its arguments in curly braces.
1103 .Pp
1104 Examples:
1105 .Dl \&.Brq 1 , ... , \&Va n
1106 .Pp
1107 See also
1108 .Ic \&Bro .
1109 .It Ic \&Bsx Op Ar version
1110 Format the
1111 .Bsx
1112 version provided as an argument, or a default value if
1113 no argument is provided.
1114 .Pp
1115 Examples:
1116 .Dl \&.Bsx 1.0
1117 .Dl \&.Bsx
1118 .Pp
1119 See also
1120 .Ic \&At ,
1121 .Ic \&Bx ,
1122 .Ic \&Dx ,
1123 .Ic \&Fx ,
1124 .Ic \&Nx ,
1125 and
1126 .Ic \&Ox .
1127 .It Ic \&Bt
1128 Supported only for compatibility, do not use this in new manuals.
1129 Prints
1130 .Dq is currently in beta test.
1131 .It Ic \&Bx Op Ar version Op Ar variant
1132 Format the
1133 .Bx
1134 version provided as an argument, or a default value if no
1135 argument is provided.
1136 .Pp
1137 Examples:
1138 .Dl \&.Bx 4.3 Tahoe
1139 .Dl \&.Bx 4.4
1140 .Dl \&.Bx
1141 .Pp
1142 See also
1143 .Ic \&At ,
1144 .Ic \&Bsx ,
1145 .Ic \&Dx ,
1146 .Ic \&Fx ,
1147 .Ic \&Nx ,
1148 and
1149 .Ic \&Ox .
1150 .It Ic \&Cd Ar line
1151 Kernel configuration declaration.
1152 This denotes strings accepted by
1153 .Xr config 8 .
1154 It is most often used in section 4 manual pages.
1155 .Pp
1156 Examples:
1157 .Dl \&.Cd device le0 at scode?
1158 .Pp
1159 .Em Remarks :
1160 this macro is commonly abused by using quoted literals to retain
1161 whitespace and align consecutive
1162 .Ic \&Cd
1163 declarations.
1164 This practise is discouraged.
1165 .It Ic \&Cm Ar keyword ...
1166 Command modifiers.
1167 Typically used for fixed strings passed as arguments to interactive
1168 commands, to commands in interpreted scripts, or to configuration
1169 file directives, unless
1170 .Ic \&Fl
1171 is more appropriate.
1172 .Pp
1173 Examples:
1174 .Dl ".Nm mt Fl f Ar device Cm rewind"
1175 .Dl ".Nm ps Fl o Cm pid , Ns Cm command"
1176 .Dl ".Nm dd Cm if= Ns Ar file1 Cm of= Ns Ar file2"
1177 .Dl ".Ic set Fl o Cm vi"
1178 .Dl ".Ic lookup Cm file bind"
1179 .Dl ".Ic permit Ar identity Op Cm as Ar target"
1180 .It Ic \&D1 Ar line
1181 One-line indented display.
1182 This is formatted by the default rules and is useful for simple indented
1183 statements.
1184 It is followed by a newline.
1185 .Pp
1186 Examples:
1187 .Dl \&.D1 \&Fl abcdefgh
1188 .Pp
1189 See also
1190 .Ic \&Bd
1191 and
1192 .Ic \&Dl .
1193 .It Ic \&Db
1194 This macro is obsolete.
1195 No replacement is needed.
1196 It is ignored by
1197 .Xr mandoc 1
1198 and groff including its arguments.
1199 It was formerly used to toggle a debugging mode.
1200 .It Ic \&Dc
1201 Close a
1202 .Ic \&Do
1203 block.
1204 Does not have any tail arguments.
1205 .It Ic \&Dd Cm $\&Mdocdate$ | Ar month day , year
1206 Document date for display in the page footer,
1207 by convention the date of the last change.
1208 This is the mandatory first macro of any
1209 .Nm
1210 manual.
1211 .Pp
1212 The
1213 .Ar month
1214 is the full English month name, the
1215 .Ar day
1216 is an integer number, and the
1217 .Ar year
1218 is the full four-digit year.
1219 .Pp
1220 Other arguments are not portable; the
1221 .Xr mandoc 1
1222 utility handles them as follows:
1223 .Bl -dash -offset 3n -compact
1224 .It
1225 To have the date automatically filled in by the
1226 .Ox
1227 version of
1228 .Xr cvs 1 ,
1229 the special string
1230 .Dq $\&Mdocdate$
1231 can be given as an argument.
1232 .It
1233 The traditional, purely numeric
1234 .Xr man 7
1235 format
1236 .Ar year Ns \(en Ns Ar month Ns \(en Ns Ar day
1237 is accepted, too.
1238 .It
1239 If a date string cannot be parsed, it is used verbatim.
1240 .It
1241 If no date string is given, the current date is used.
1242 .El
1243 .Pp
1244 Examples:
1245 .Dl \&.Dd $\&Mdocdate$
1246 .Dl \&.Dd $\&Mdocdate: July 2 2018$
1247 .Dl \&.Dd July 2, 2018
1248 .Pp
1249 See also
1250 .Ic \&Dt
1251 and
1252 .Ic \&Os .
1253 .It Ic \&Dl Ar line
1254 One-line indented display.
1255 This is formatted as literal text and is useful for commands and
1256 invocations.
1257 It is followed by a newline.
1258 .Pp
1259 Examples:
1260 .Dl \&.Dl % mandoc mdoc.7 \e(ba less
1261 .Pp
1262 See also
1263 .Ic \&Ql ,
1264 .Ic \&Bd Fl literal ,
1265 and
1266 .Ic \&D1 .
1267 .It Ic \&Do Ar block
1268 Begin a block enclosed by double quotes.
1269 Does not have any head arguments.
1270 .Pp
1271 Examples:
1272 .Bd -literal -offset indent -compact
1273 \&.Do
1274 April is the cruellest month
1275 \&.Dc
1276 \e(em T.S. Eliot
1277 .Ed
1278 .Pp
1279 See also
1280 .Ic \&Dq .
1281 .It Ic \&Dq Ar line
1282 Encloses its arguments in
1283 .Dq typographic
1284 double-quotes.
1285 .Pp
1286 Examples:
1287 .Bd -literal -offset indent -compact
1288 \&.Dq April is the cruellest month
1289 \e(em T.S. Eliot
1290 .Ed
1291 .Pp
1292 See also
1293 .Ic \&Qq ,
1294 .Ic \&Sq ,
1295 and
1296 .Ic \&Do .
1297 .It Ic \&Dt Ar TITLE section Op Ar arch
1298 Document title for display in the page header.
1299 This is the mandatory second macro of any
1300 .Nm
1301 file.
1302 .Pp
1303 Its arguments are as follows:
1304 .Bl -tag -width section -offset 2n
1305 .It Ar TITLE
1306 The document's title (name), defaulting to
1307 .Dq UNTITLED
1308 if unspecified.
1309 To achieve a uniform appearance of page header lines,
1310 it should by convention be all caps.
1311 .It Ar section
1312 The manual section.
1313 This may be one of
1314 .Cm 1
1315 .Pq General Commands ,
1316 .Cm 2
1317 .Pq System Calls ,
1318 .Cm 3
1319 .Pq Library Functions ,
1320 .Cm 3p
1321 .Pq Perl Library ,
1322 .Cm 4
1323 .Pq Device Drivers ,
1324 .Cm 5
1325 .Pq File Formats ,
1326 .Cm 6
1327 .Pq Games ,
1328 .Cm 7
1329 .Pq Miscellaneous Information ,
1330 .Cm 8
1331 .Pq System Manager's Manual ,
1332 or
1333 .Cm 9
1334 .Pq Kernel Developer's Manual .
1335 It should correspond to the manual's filename suffix and defaults to
1336 the empty string if unspecified.
1337 .It Ar arch
1338 This specifies the machine architecture a manual page applies to,
1339 where relevant, for example
1340 .Cm alpha ,
1341 .Cm amd64 ,
1342 .Cm i386 ,
1343 or
1344 .Cm sparc64 .
1345 The list of valid architectures varies by operating system.
1346 .El
1347 .Pp
1348 Examples:
1349 .Dl \&.Dt FOO 1
1350 .Dl \&.Dt FOO 9 i386
1351 .Pp
1352 See also
1353 .Ic \&Dd
1354 and
1355 .Ic \&Os .
1356 .It Ic \&Dv Ar identifier ...
1357 Defined variables such as preprocessor constants, constant symbols,
1358 enumeration values, and so on.
1359 .Pp
1360 Examples:
1361 .Dl \&.Dv NULL
1362 .Dl \&.Dv BUFSIZ
1363 .Dl \&.Dv STDOUT_FILENO
1364 .Pp
1365 See also
1366 .Ic \&Er
1367 and
1368 .Ic \&Ev
1369 for special-purpose constants,
1370 .Ic \&Va
1371 for variable symbols, and
1372 .Ic \&Fd
1373 for listing preprocessor variable definitions in the
1374 .Em SYNOPSIS .
1375 .It Ic \&Dx Op Ar version
1376 Format the
1377 .Dx
1378 version provided as an argument, or a default
1379 value if no argument is provided.
1380 .Pp
1381 Examples:
1382 .Dl \&.Dx 2.4.1
1383 .Dl \&.Dx
1384 .Pp
1385 See also
1386 .Ic \&At ,
1387 .Ic \&Bsx ,
1388 .Ic \&Bx ,
1389 .Ic \&Fx ,
1390 .Ic \&Nx ,
1391 and
1392 .Ic \&Ox .
1393 .It Ic \&Ec Op Ar closing_delimiter
1394 Close a scope started by
1395 .Ic \&Eo .
1396 .Pp
1397 The
1398 .Ar closing_delimiter
1399 argument is used as the enclosure tail, for example, specifying \e(rq
1400 will emulate
1401 .Ic \&Dc .
1402 .It Ic \&Ed
1403 End a display context started by
1404 .Ic \&Bd .
1405 .It Ic \&Ef
1406 End a font mode context started by
1407 .Ic \&Bf .
1408 .It Ic \&Ek
1409 End a keep context started by
1410 .Ic \&Bk .
1411 .It Ic \&El
1412 End a list context started by
1413 .Ic \&Bl .
1414 See also
1415 .Ic \&It .
1416 .It Ic \&Em Ar word ...
1417 Request an italic font.
1418 If the output device does not provide that, underline.
1419 .Pp
1420 This is most often used for stress emphasis (not to be confused with
1421 importance, see
1422 .Ic \&Sy ) .
1423 In the rare cases where none of the semantic markup macros fit,
1424 it can also be used for technical terms and placeholders, except
1425 that for syntax elements,
1426 .Ic \&Sy
1427 and
1428 .Ic \&Ar
1429 are preferred, respectively.
1430 .Pp
1431 Examples:
1432 .Bd -literal -compact -offset indent
1433 Selected lines are those
1434 \&.Em not
1435 matching any of the specified patterns.
1436 Some of the functions use a
1437 \&.Em hold space
1438 to save the pattern space for subsequent retrieval.
1439 .Ed
1440 .Pp
1441 See also
1442 .Ic \&No ,
1443 .Ic \&Ql ,
1444 and
1445 .Ic \&Sy .
1446 .It Ic \&En Ar word ...
1447 This macro is obsolete.
1448 Use
1449 .Ic \&Eo
1450 or any of the other enclosure macros.
1451 .Pp
1452 It encloses its argument in the delimiters specified by the last
1453 .Ic \&Es
1454 macro.
1455 .It Ic \&Eo Op Ar opening_delimiter
1456 An arbitrary enclosure.
1457 The
1458 .Ar opening_delimiter
1459 argument is used as the enclosure head, for example, specifying \e(lq
1460 will emulate
1461 .Ic \&Do .
1462 .It Ic \&Er Ar identifier ...
1463 Error constants for definitions of the
1464 .Va errno
1465 libc global variable.
1466 This is most often used in section 2 and 3 manual pages.
1467 .Pp
1468 Examples:
1469 .Dl \&.Er EPERM
1470 .Dl \&.Er ENOENT
1471 .Pp
1472 See also
1473 .Ic \&Dv
1474 for general constants.
1475 .It Ic \&Es Ar opening_delimiter closing_delimiter
1476 This macro is obsolete.
1477 Use
1478 .Ic \&Eo
1479 or any of the other enclosure macros.
1480 .Pp
1481 It takes two arguments, defining the delimiters to be used by subsequent
1482 .Ic \&En
1483 macros.
1484 .It Ic \&Ev Ar identifier ...
1485 Environmental variables such as those specified in
1486 .Xr environ 7 .
1487 .Pp
1488 Examples:
1489 .Dl \&.Ev DISPLAY
1490 .Dl \&.Ev PATH
1491 .Pp
1492 See also
1493 .Ic \&Dv
1494 for general constants.
1495 .It Ic \&Ex Fl std Op Ar utility ...
1496 Insert a standard sentence regarding command exit values of 0 on success
1497 and >0 on failure.
1498 This is most often used in section 1, 6, and 8 manual pages.
1499 .Pp
1500 If
1501 .Ar utility
1502 is not specified, the document's name set by
1503 .Ic \&Nm
1504 is used.
1505 Multiple
1506 .Ar utility
1507 arguments are treated as separate utilities.
1508 .Pp
1509 See also
1510 .Ic \&Rv .
1511 .It Ic \&Fa Ar argument ...
1512 Function argument or parameter.
1513 Each argument may be a name and a type (recommended for the
1514 .Em SYNOPSIS
1515 section), a name alone (for function invocations),
1516 or a type alone (for function prototypes).
1517 If both a type and a name are given or if the type consists of multiple
1518 words, all words belonging to the same function argument have to be
1519 given in a single argument to the
1520 .Ic \&Fa
1521 macro.
1522 .Pp
1523 This macro is also used to specify the field name of a structure.
1524 .Pp
1525 Most often, the
1526 .Ic \&Fa
1527 macro is used in the
1528 .Em SYNOPSIS
1529 within
1530 .Ic \&Fo
1531 blocks when documenting multi-line function prototypes.
1532 If invoked with multiple arguments, the arguments are separated by a
1533 comma.
1534 Furthermore, if the following macro is another
1535 .Ic \&Fa ,
1536 the last argument will also have a trailing comma.
1537 .Pp
1538 Examples:
1539 .Dl \&.Fa \(dqconst char *p\(dq
1540 .Dl \&.Fa \(dqint a\(dq \(dqint b\(dq \(dqint c\(dq
1541 .Dl \&.Fa \(dqchar *\(dq size_t
1542 .Pp
1543 See also
1544 .Ic \&Fo .
1545 .It Ic \&Fc
1546 End a function context started by
1547 .Ic \&Fo .
1548 .It Ic \&Fd Pf # Ar directive Op Ar argument ...
1549 Preprocessor directive, in particular for listing it in the
1550 .Em SYNOPSIS .
1551 Historically, it was also used to document include files.
1552 The latter usage has been deprecated in favour of
1553 .Ic \&In .
1554 .Pp
1555 Examples:
1556 .Dl \&.Fd #define sa_handler __sigaction_u.__sa_handler
1557 .Dl \&.Fd #define SIO_MAXNFDS
1558 .Dl \&.Fd #ifdef FS_DEBUG
1559 .Dl \&.Ft void
1560 .Dl \&.Fn dbg_open \(dqconst char *\(dq
1561 .Dl \&.Fd #endif
1562 .Pp
1563 See also
1564 .Sx MANUAL STRUCTURE ,
1565 .Ic \&In ,
1566 and
1567 .Ic \&Dv .
1568 .It Ic \&Fl Op Ar word ...
1569 Command-line flag or option.
1570 Used when listing arguments to command-line utilities.
1571 Prints a fixed-width hyphen
1572 .Sq \-
1573 directly followed by each argument.
1574 If no arguments are provided, a hyphen is printed followed by a space.
1575 If the argument is a macro, a hyphen is prefixed to the subsequent macro
1576 output.
1577 .Pp
1578 Examples:
1579 .Dl ".Fl R Op Fl H | L | P"
1580 .Dl ".Op Fl 1AaCcdFfgHhikLlmnopqRrSsTtux"
1581 .Dl ".Fl type Cm d Fl name Pa CVS"
1582 .Dl ".Fl Ar signal_number"
1583 .Dl ".Fl o Fl"
1584 .Pp
1585 See also
1586 .Ic \&Cm .
1587 .It Ic \&Fn Ar funcname Op Ar argument ...
1588 A function name.
1589 .Pp
1590 Function arguments are surrounded in parenthesis and
1591 are delimited by commas.
1592 If no arguments are specified, blank parenthesis are output.
1593 In the
1594 .Em SYNOPSIS
1595 section, this macro starts a new output line,
1596 and a blank line is automatically inserted between function definitions.
1597 .Pp
1598 Examples:
1599 .Dl \&.Fn \(dqint funcname\(dq \(dqint arg0\(dq \(dqint arg1\(dq
1600 .Dl \&.Fn funcname \(dqint arg0\(dq
1601 .Dl \&.Fn funcname arg0
1602 .Bd -literal -offset indent
1603 \&.Ft functype
1604 \&.Fn funcname
1605 .Ed
1606 .Pp
1607 When referring to a function documented in another manual page, use
1608 .Ic \&Xr
1609 instead.
1610 See also
1611 .Sx MANUAL STRUCTURE ,
1612 .Ic \&Fo ,
1613 and
1614 .Ic \&Ft .
1615 .It Ic \&Fo Ar funcname
1616 Begin a function block.
1617 This is a multi-line version of
1618 .Ic \&Fn .
1619 .Pp
1620 Invocations usually occur in the following context:
1621 .Bd -ragged -offset indent
1622 .Pf \. Ic \&Ft Ar functype
1623 .br
1624 .Pf \. Ic \&Fo Ar funcname
1625 .br
1626 .Pf \. Ic \&Fa Qq Ar argtype Ar argname
1627 .br
1628 \&.\.\.
1629 .br
1630 .Pf \. Ic \&Fc
1631 .Ed
1632 .Pp
1633 A
1634 .Ic \&Fo
1635 scope is closed by
1636 .Ic \&Fc .
1637 .Pp
1638 See also
1639 .Sx MANUAL STRUCTURE ,
1640 .Ic \&Fa ,
1641 .Ic \&Fc ,
1642 and
1643 .Ic \&Ft .
1644 .It Ic \&Fr Ar number
1645 This macro is obsolete.
1646 No replacement markup is needed.
1647 .Pp
1648 It was used to show numerical function return values in an italic font.
1649 .It Ic \&Ft Ar functype
1650 A function type.
1651 .Pp
1652 In the
1653 .Em SYNOPSIS
1654 section, a new output line is started after this macro.
1655 .Pp
1656 Examples:
1657 .Dl \&.Ft int
1658 .Bd -literal -offset indent -compact
1659 \&.Ft functype
1660 \&.Fn funcname
1661 .Ed
1662 .Pp
1663 See also
1664 .Sx MANUAL STRUCTURE ,
1665 .Ic \&Fn ,
1666 and
1667 .Ic \&Fo .
1668 .It Ic \&Fx Op Ar version
1669 Format the
1670 .Fx
1671 version provided as an argument, or a default value
1672 if no argument is provided.
1673 .Pp
1674 Examples:
1675 .Dl \&.Fx 7.1
1676 .Dl \&.Fx
1677 .Pp
1678 See also
1679 .Ic \&At ,
1680 .Ic \&Bsx ,
1681 .Ic \&Bx ,
1682 .Ic \&Dx ,
1683 .Ic \&Nx ,
1684 and
1685 .Ic \&Ox .
1686 .It Ic \&Hf Ar filename
1687 This macro is not implemented in
1688 .Xr mandoc 1 .
1689 It was used to include the contents of a (header) file literally.
1690 .It Ic \&Ic Ar keyword ...
1691 Internal or interactive command, or configuration instruction
1692 in a configuration file.
1693 See also
1694 .Ic \&Cm .
1695 .Pp
1696 Examples:
1697 .Dl \&.Ic :wq
1698 .Dl \&.Ic hash
1699 .Dl \&.Ic alias
1700 .Pp
1701 Note that using
1702 .Ic \&Ql ,
1703 .Ic \&Dl ,
1704 or
1705 .Ic \&Bd Fl literal
1706 is preferred for displaying code samples; the
1707 .Ic \&Ic
1708 macro is used when referring to an individual command name.
1709 .It Ic \&In Ar filename
1710 The name of an include file.
1711 This macro is most often used in section 2, 3, and 9 manual pages.
1712 .Pp
1713 When invoked as the first macro on an input line in the
1714 .Em SYNOPSIS
1715 section, the argument is displayed in angle brackets
1716 and preceded by
1717 .Qq #include ,
1718 and a blank line is inserted in front if there is a preceding
1719 function declaration.
1720 In other sections, it only encloses its argument in angle brackets
1721 and causes no line break.
1722 .Pp
1723 Examples:
1724 .Dl \&.In sys/types.h
1725 .Pp
1726 See also
1727 .Sx MANUAL STRUCTURE .
1728 .It Ic \&It Op Ar head
1729 A list item.
1730 The syntax of this macro depends on the list type.
1731 .Pp
1732 Lists
1733 of type
1734 .Fl hang ,
1735 .Fl ohang ,
1736 .Fl inset ,
1737 and
1738 .Fl diag
1739 have the following syntax:
1740 .Pp
1741 .D1 Pf \. Ic \&It Ar args
1742 .Pp
1743 Lists of type
1744 .Fl bullet ,
1745 .Fl dash ,
1746 .Fl enum ,
1747 .Fl hyphen
1748 and
1749 .Fl item
1750 have the following syntax:
1751 .Pp
1752 .D1 Pf \. Ic \&It
1753 .Pp
1754 with subsequent lines interpreted within the scope of the
1755 .Ic \&It
1756 until either a closing
1757 .Ic \&El
1758 or another
1759 .Ic \&It .
1760 .Pp
1761 The
1762 .Fl tag
1763 list has the following syntax:
1764 .Pp
1765 .D1 Pf \. Ic \&It Op Cm args
1766 .Pp
1767 Subsequent lines are interpreted as with
1768 .Fl bullet
1769 and family.
1770 The line arguments correspond to the list's left-hand side; body
1771 arguments correspond to the list's contents.
1772 .Pp
1773 The
1774 .Fl column
1775 list is the most complicated.
1776 Its syntax is as follows:
1777 .Pp
1778 .D1 Pf \. Ic \&It Ar cell Op Ic \&Ta Ar cell ...
1779 .D1 Pf \. Ic \&It Ar cell Op <TAB> Ar cell ...
1780 .Pp
1781 The arguments consist of one or more lines of text and macros
1782 representing a complete table line.
1783 Cells within the line are delimited by the special
1784 .Ic \&Ta
1785 block macro or by literal tab characters.
1786 .Pp
1787 Using literal tabs is strongly discouraged because they are very
1788 hard to use correctly and
1789 .Nm
1790 code using them is very hard to read.
1791 In particular, a blank character is syntactically significant
1792 before and after the literal tab character.
1793 If a word precedes or follows the tab without an intervening blank,
1794 that word is never interpreted as a macro call, but always output
1795 literally.
1796 .Pp
1797 The tab cell delimiter may only be used within the
1798 .Ic \&It
1799 line itself; on following lines, only the
1800 .Ic \&Ta
1801 macro can be used to delimit cells, and portability requires that
1802 .Ic \&Ta
1803 is called by other macros: some parsers do not recognize it when
1804 it appears as the first macro on a line.
1805 .Pp
1806 Note that quoted strings may span tab-delimited cells on an
1807 .Ic \&It
1808 line.
1809 For example,
1810 .Pp
1811 .Dl .It \(dqcol1 ,\& <TAB> col2 ,\(dq \&;
1812 .Pp
1813 will preserve the whitespace before both commas,
1814 but not the whitespace before the semicolon.
1815 .Pp
1816 See also
1817 .Ic \&Bl .
1818 .It Ic \&Lb Cm lib Ns Ar name
1819 Specify a library.
1820 .Pp
1821 The
1822 .Ar name
1823 parameter may be a system library, such as
1824 .Cm z
1825 or
1826 .Cm pam ,
1827 in which case a small library description is printed next to the linker
1828 invocation; or a custom library, in which case the library name is
1829 printed in quotes.
1830 This is most commonly used in the
1831 .Em SYNOPSIS
1832 section as described in
1833 .Sx MANUAL STRUCTURE .
1834 .Pp
1835 Examples:
1836 .Dl \&.Lb libz
1837 .Dl \&.Lb libmandoc
1838 .It Ic \&Li Ar word ...
1839 Request a typewriter (literal) font.
1840 Deprecated because on terminal output devices, this is usually
1841 indistinguishable from normal text.
1842 For literal displays, use
1843 .Ic \&Ql Pq in-line ,
1844 .Ic \&Dl Pq single line ,
1845 or
1846 .Ic \&Bd Fl literal Pq multi-line
1847 instead.
1848 .It Ic \&Lk Ar uri Op Ar display_name
1849 Format a hyperlink.
1850 .Pp
1851 Examples:
1852 .Dl \&.Lk http://bsd.lv \(dqThe BSD.lv Project\(dq
1853 .Dl \&.Lk http://bsd.lv
1854 .Pp
1855 See also
1856 .Ic \&Mt .
1857 .It Ic \&Lp
1858 Deprecated synonym for
1859 .Ic \&Pp .
1860 .It Ic \&Ms Ar name
1861 Display a mathematical symbol.
1862 .Pp
1863 Examples:
1864 .Dl \&.Ms sigma
1865 .Dl \&.Ms aleph
1866 .It Ic \&Mt Ar localpart Ns @ Ns Ar domain
1867 Format a
1868 .Dq mailto:
1869 hyperlink.
1870 .Pp
1871 Examples:
1872 .Dl \&.Mt discuss@manpages.bsd.lv
1873 .Dl \&.An Kristaps Dzonsons \&Aq \&Mt kristaps@bsd.lv
1874 .It Ic \&Nd Ar line
1875 A one line description of the manual's content.
1876 This is the mandatory last macro of the
1877 .Em NAME
1878 section and not appropriate for other sections.
1879 .Pp
1880 Examples:
1881 .Dl Pf . Ic \&Nd mdoc language reference
1882 .Dl Pf . Ic \&Nd format and display UNIX manuals
1883 .Pp
1884 The
1885 .Ic \&Nd
1886 macro technically accepts child macros and terminates with a subsequent
1887 .Ic \&Sh
1888 invocation.
1889 Do not assume this behaviour: some
1890 .Xr whatis 1
1891 database generators are not smart enough to parse more than the line
1892 arguments and will display macros verbatim.
1893 .Pp
1894 See also
1895 .Ic \&Nm .
1896 .It Ic \&Nm Op Ar name
1897 The name of the manual page, or \(em in particular in section 1, 6,
1898 and 8 pages \(em of an additional command or feature documented in
1899 the manual page.
1900 When first invoked, the
1901 .Ic \&Nm
1902 macro expects a single argument, the name of the manual page.
1903 Usually, the first invocation happens in the
1904 .Em NAME
1905 section of the page.
1906 The specified name will be remembered and used whenever the macro is
1907 called again without arguments later in the page.
1908 The
1909 .Ic \&Nm
1910 macro uses
1911 .Sx Block full-implicit
1912 semantics when invoked as the first macro on an input line in the
1913 .Em SYNOPSIS
1914 section; otherwise, it uses ordinary
1915 .Sx In-line
1916 semantics.
1917 .Pp
1918 Examples:
1919 .Bd -literal -offset indent
1920 \&.Sh SYNOPSIS
1921 \&.Nm cat
1922 \&.Op Fl benstuv
1923 \&.Op Ar
1924 .Ed
1925 .Pp
1926 In the
1927 .Em SYNOPSIS
1928 of section 2, 3 and 9 manual pages, use the
1929 .Ic \&Fn
1930 macro rather than
1931 .Ic \&Nm
1932 to mark up the name of the manual page.
1933 .It Ic \&No Ar word ...
1934 Normal text.
1935 Closes the scope of any preceding in-line macro.
1936 When used after physical formatting macros like
1937 .Ic \&Em
1938 or
1939 .Ic \&Sy ,
1940 switches back to the standard font face and weight.
1941 Can also be used to embed plain text strings in macro lines
1942 using semantic annotation macros.
1943 .Pp
1944 Examples:
1945 .Dl ".Em italic , Sy bold , No and roman"
1946 .Bd -literal -offset indent
1947 \&.Sm off
1948 \&.Cm :C No / Ar pattern No / Ar replacement No /
1949 \&.Sm on
1950 .Ed
1951 .Pp
1952 See also
1953 .Ic \&Em ,
1954 .Ic \&Ql ,
1955 and
1956 .Ic \&Sy .
1957 .It Ic \&Ns
1958 Suppress a space between the output of the preceding macro
1959 and the following text or macro.
1960 Following invocation, input is interpreted as normal text
1961 just like after an
1962 .Ic \&No
1963 macro.
1964 .Pp
1965 This has no effect when invoked at the start of a macro line.
1966 .Pp
1967 Examples:
1968 .Dl ".Ar name Ns = Ns Ar value"
1969 .Dl ".Cm :M Ns Ar pattern"
1970 .Dl ".Fl o Ns Ar output"
1971 .Pp
1972 See also
1973 .Ic \&No
1974 and
1975 .Ic \&Sm .
1976 .It Ic \&Nx Op Ar version
1977 Format the
1978 .Nx
1979 version provided as an argument, or a default value if
1980 no argument is provided.
1981 .Pp
1982 Examples:
1983 .Dl \&.Nx 5.01
1984 .Dl \&.Nx
1985 .Pp
1986 See also
1987 .Ic \&At ,
1988 .Ic \&Bsx ,
1989 .Ic \&Bx ,
1990 .Ic \&Dx ,
1991 .Ic \&Fx ,
1992 and
1993 .Ic \&Ox .
1994 .It Ic \&Oc
1995 Close multi-line
1996 .Ic \&Oo
1997 context.
1998 .It Ic \&Oo Ar block
1999 Multi-line version of
2000 .Ic \&Op .
2001 .Pp
2002 Examples:
2003 .Bd -literal -offset indent -compact
2004 \&.Oo
2005 \&.Op Fl flag Ns Ar value
2006 \&.Oc
2007 .Ed
2008 .It Ic \&Op Ar line
2009 Optional part of a command line.
2010 Prints the argument(s) in brackets.
2011 This is most often used in the
2012 .Em SYNOPSIS
2013 section of section 1 and 8 manual pages.
2014 .Pp
2015 Examples:
2016 .Dl \&.Op \&Fl a \&Ar b
2017 .Dl \&.Op \&Ar a | b
2018 .Pp
2019 See also
2020 .Ic \&Oo .
2021 .It Ic \&Os Op Ar system Op Ar version
2022 Operating system version for display in the page footer.
2023 This is the mandatory third macro of
2024 any
2025 .Nm
2026 file.
2027 .Pp
2028 The optional
2029 .Ar system
2030 parameter specifies the relevant operating system or environment.
2031 It is suggested to leave it unspecified, in which case
2032 .Xr mandoc 1
2033 uses its
2034 .Fl Ios
2035 argument or, if that isn't specified either,
2036 .Fa sysname
2037 and
2038 .Fa release
2039 as returned by
2040 .Xr uname 3 .
2041 .Pp
2042 Examples:
2043 .Dl \&.Os
2044 .Dl \&.Os KTH/CSC/TCS
2045 .Dl \&.Os BSD 4.3
2046 .Pp
2047 See also
2048 .Ic \&Dd
2049 and
2050 .Ic \&Dt .
2051 .It Ic \&Ot Ar functype
2052 This macro is obsolete.
2053 Use
2054 .Ic \&Ft
2055 instead; with
2056 .Xr mandoc 1 ,
2057 both have the same effect.
2058 .Pp
2059 Historical
2060 .Nm
2061 packages described it as
2062 .Dq "old function type (FORTRAN)" .
2063 .It Ic \&Ox Op Ar version
2064 Format the
2065 .Ox
2066 version provided as an argument, or a default value
2067 if no argument is provided.
2068 .Pp
2069 Examples:
2070 .Dl \&.Ox 4.5
2071 .Dl \&.Ox
2072 .Pp
2073 See also
2074 .Ic \&At ,
2075 .Ic \&Bsx ,
2076 .Ic \&Bx ,
2077 .Ic \&Dx ,
2078 .Ic \&Fx ,
2079 and
2080 .Ic \&Nx .
2081 .It Ic \&Pa Ar name ...
2082 An absolute or relative file system path, or a file or directory name.
2083 If an argument is not provided, the character
2084 .Sq \(ti
2085 is used as a default.
2086 .Pp
2087 Examples:
2088 .Dl \&.Pa /usr/bin/mandoc
2089 .Dl \&.Pa /usr/share/man/man7/mdoc.7
2090 .Pp
2091 See also
2092 .Ic \&Lk .
2093 .It Ic \&Pc
2094 Close parenthesised context opened by
2095 .Ic \&Po .
2096 .It Ic \&Pf Ar prefix macro Op Ar argument ...
2097 Removes the space between its argument and the following macro.
2098 It is equivalent to:
2099 .Pp
2100 .D1 Ic \&No Pf \e& Ar prefix Ic \&Ns Ar macro Op Ar argument ...
2101 .Pp
2102 The
2103 .Ar prefix
2104 argument is not parsed for macro names or delimiters,
2105 but used verbatim as if it were escaped.
2106 .Pp
2107 Examples:
2108 .Dl ".Pf $ Ar variable_name"
2109 .Dl ".Pf . Ar macro_name"
2110 .Dl ".Pf 0x Ar hex_digits"
2111 .Pp
2112 See also
2113 .Ic \&Ns
2114 and
2115 .Ic \&Sm .
2116 .It Ic \&Po Ar block
2117 Multi-line version of
2118 .Ic \&Pq .
2119 .It Ic \&Pp
2120 Break a paragraph.
2121 This will assert vertical space between prior and subsequent macros
2122 and/or text.
2123 .Pp
2124 Paragraph breaks are not needed before or after
2125 .Ic \&Sh
2126 or
2127 .Ic \&Ss
2128 macros or before displays
2129 .Pq Ic \&Bd Ar line
2130 or lists
2131 .Pq Ic \&Bl
2132 unless the
2133 .Fl compact
2134 flag is given.
2135 .It Ic \&Pq Ar line
2136 Parenthesised enclosure.
2137 .Pp
2138 See also
2139 .Ic \&Po .
2140 .It Ic \&Qc
2141 Close quoted context opened by
2142 .Ic \&Qo .
2143 .It Ic \&Ql Ar line
2144 In-line literal display.
2145 This can be used for complete command invocations and for multi-word
2146 code examples when an indented display is not desired.
2147 .Pp
2148 See also
2149 .Ic \&Dl
2150 and
2151 .Ic \&Bd
2152 .Fl literal .
2153 .It Ic \&Qo Ar block
2154 Multi-line version of
2155 .Ic \&Qq .
2156 .It Ic \&Qq Ar line
2157 Encloses its arguments in
2158 .Qq typewriter
2159 double-quotes.
2160 Consider using
2161 .Ic \&Dq .
2162 .Pp
2163 See also
2164 .Ic \&Dq ,
2165 .Ic \&Sq ,
2166 and
2167 .Ic \&Qo .
2168 .It Ic \&Re
2169 Close an
2170 .Ic \&Rs
2171 block.
2172 Does not have any tail arguments.
2173 .It Ic \&Rs
2174 Begin a bibliographic
2175 .Pq Dq reference
2176 block.
2177 Does not have any head arguments.
2178 The block macro may only contain
2179 .Ic \&%A ,
2180 .Ic \&%B ,
2181 .Ic \&%C ,
2182 .Ic \&%D ,
2183 .Ic \&%I ,
2184 .Ic \&%J ,
2185 .Ic \&%N ,
2186 .Ic \&%O ,
2187 .Ic \&%P ,
2188 .Ic \&%Q ,
2189 .Ic \&%R ,
2190 .Ic \&%T ,
2191 .Ic \&%U ,
2192 and
2193 .Ic \&%V
2194 child macros (at least one must be specified).
2195 .Pp
2196 Examples:
2197 .Bd -literal -offset indent -compact
2198 \&.Rs
2199 \&.%A J. E. Hopcroft
2200 \&.%A J. D. Ullman
2201 \&.%B Introduction to Automata Theory, Languages, and Computation
2202 \&.%I Addison-Wesley
2203 \&.%C Reading, Massachusetts
2204 \&.%D 1979
2205 \&.Re
2206 .Ed
2207 .Pp
2208 If an
2209 .Ic \&Rs
2210 block is used within a SEE ALSO section, a vertical space is asserted
2211 before the rendered output, else the block continues on the current
2212 line.
2213 .It Ic \&Rv Fl std Op Ar function ...
2214 Insert a standard sentence regarding a function call's return value of 0
2215 on success and \-1 on error, with the
2216 .Va errno
2217 libc global variable set on error.
2218 .Pp
2219 If
2220 .Ar function
2221 is not specified, the document's name set by
2222 .Ic \&Nm
2223 is used.
2224 Multiple
2225 .Ar function
2226 arguments are treated as separate functions.
2227 .Pp
2228 See also
2229 .Ic \&Ex .
2230 .It Ic \&Sc
2231 Close single-quoted context opened by
2232 .Ic \&So .
2233 .It Ic \&Sh Ar TITLE LINE
2234 Begin a new section.
2235 For a list of conventional manual sections, see
2236 .Sx MANUAL STRUCTURE .
2237 These sections should be used unless it's absolutely necessary that
2238 custom sections be used.
2239 .Pp
2240 Section names should be unique so that they may be keyed by
2241 .Ic \&Sx .
2242 Although this macro is parsed, it should not consist of child node or it
2243 may not be linked with
2244 .Ic \&Sx .
2245 .Pp
2246 See also
2247 .Ic \&Pp ,
2248 .Ic \&Ss ,
2249 and
2250 .Ic \&Sx .
2251 .It Ic \&Sm Op Cm on | off
2252 Switches the spacing mode for output generated from macros.
2253 .Pp
2254 By default, spacing is
2255 .Cm on .
2256 When switched
2257 .Cm off ,
2258 no white space is inserted between macro arguments and between the
2259 output generated from adjacent macros, but text lines
2260 still get normal spacing between words and sentences.
2261 .Pp
2262 When called without an argument, the
2263 .Ic \&Sm
2264 macro toggles the spacing mode.
2265 Using this is not recommended because it makes the code harder to read.
2266 .It Ic \&So Ar block
2267 Multi-line version of
2268 .Ic \&Sq .
2269 .It Ic \&Sq Ar line
2270 Encloses its arguments in
2271 .Sq typewriter
2272 single-quotes.
2273 .Pp
2274 See also
2275 .Ic \&Dq ,
2276 .Ic \&Qq ,
2277 and
2278 .Ic \&So .
2279 .It Ic \&Ss Ar Title line
2280 Begin a new subsection.
2281 Unlike with
2282 .Ic \&Sh ,
2283 there is no convention for the naming of subsections.
2284 Except
2285 .Em DESCRIPTION ,
2286 the conventional sections described in
2287 .Sx MANUAL STRUCTURE
2288 rarely have subsections.
2289 .Pp
2290 Sub-section names should be unique so that they may be keyed by
2291 .Ic \&Sx .
2292 Although this macro is parsed, it should not consist of child node or it
2293 may not be linked with
2294 .Ic \&Sx .
2295 .Pp
2296 See also
2297 .Ic \&Pp ,
2298 .Ic \&Sh ,
2299 and
2300 .Ic \&Sx .
2301 .It Ic \&St Fl Ns Ar abbreviation
2302 Replace an abbreviation for a standard with the full form.
2303 The following standards are recognised.
2304 Where multiple lines are given without a blank line in between,
2305 they all refer to the same standard, and using the first form
2306 is recommended.
2307 .Bl -tag -width 1n
2308 .It C language standards
2309 .Pp
2310 .Bl -tag -width "-p1003.1g-2000" -compact
2311 .It \-ansiC
2312 .St -ansiC
2313 .It \-ansiC-89
2314 .St -ansiC-89
2315 .It \-isoC
2316 .St -isoC
2317 .It \-isoC-90
2318 .St -isoC-90
2319 .br
2320 The original C standard.
2321 .Pp
2322 .It \-isoC-amd1
2323 .St -isoC-amd1
2324 .Pp
2325 .It \-isoC-tcor1
2326 .St -isoC-tcor1
2327 .Pp
2328 .It \-isoC-tcor2
2329 .St -isoC-tcor2
2330 .Pp
2331 .It \-isoC-99
2332 .St -isoC-99
2333 .br
2334 The second major version of the C language standard.
2335 .Pp
2336 .It \-isoC-2011
2337 .St -isoC-2011
2338 .br
2339 The third major version of the C language standard.
2340 .El
2341 .It POSIX.1 before the Single UNIX Specification
2342 .Pp
2343 .Bl -tag -width "-p1003.1g-2000" -compact
2344 .It \-p1003.1-88
2345 .St -p1003.1-88
2346 .It \-p1003.1
2347 .St -p1003.1
2348 .br
2349 The original POSIX standard, based on ANSI C.
2350 .Pp
2351 .It \-p1003.1-90
2352 .St -p1003.1-90
2353 .It \-iso9945-1-90
2354 .St -iso9945-1-90
2355 .br
2356 The first update of POSIX.1.
2357 .Pp
2358 .It \-p1003.1b-93
2359 .St -p1003.1b-93
2360 .It \-p1003.1b
2361 .St -p1003.1b
2362 .br
2363 Real-time extensions.
2364 .Pp
2365 .It \-p1003.1c-95
2366 .St -p1003.1c-95
2367 .br
2368 POSIX thread interfaces.
2369 .Pp
2370 .It \-p1003.1i-95
2371 .St -p1003.1i-95
2372 .br
2373 Technical Corrigendum.
2374 .Pp
2375 .It \-p1003.1-96
2376 .St -p1003.1-96
2377 .It \-iso9945-1-96
2378 .St -iso9945-1-96
2379 .br
2380 Includes POSIX.1-1990, 1b, 1c, and 1i.
2381 .El
2382 .It X/Open Portability Guide version 4 and related standards
2383 .Pp
2384 .Bl -tag -width "-p1003.1g-2000" -compact
2385 .It \-xpg3
2386 .St -xpg3
2387 .br
2388 An XPG4 precursor, published in 1989.
2389 .Pp
2390 .It \-p1003.2
2391 .St -p1003.2
2392 .It \-p1003.2-92
2393 .St -p1003.2-92
2394 .It \-iso9945-2-93
2395 .St -iso9945-2-93
2396 .br
2397 An XCU4 precursor.
2398 .Pp
2399 .It \-p1003.2a-92
2400 .St -p1003.2a-92
2401 .br
2402 Updates to POSIX.2.
2403 .Pp
2404 .It \-xpg4
2405 .St -xpg4
2406 .br
2407 Based on POSIX.1 and POSIX.2, published in 1992.
2408 .El
2409 .It Single UNIX Specification version 1 and related standards
2410 .Pp
2411 .Bl -tag -width "-p1003.1g-2000" -compact
2412 .It \-susv1
2413 .St -susv1
2414 .It \-xpg4.2
2415 .St -xpg4.2
2416 .br
2417 This standard was published in 1994.
2418 It was used as the basis for UNIX 95 certification.
2419 The following three refer to parts of it.
2420 .Pp
2421 .It \-xsh4.2
2422 .St -xsh4.2
2423 .Pp
2424 .It \-xcurses4.2
2425 .St -xcurses4.2
2426 .Pp
2427 .It \-p1003.1g-2000
2428 .St -p1003.1g-2000
2429 .br
2430 Networking APIs, including sockets.
2431 .Pp
2432 .It \-svid4
2433 .St -svid4 ,
2434 .br
2435 Published in 1995.
2436 .El
2437 .It Single UNIX Specification version 2 and related standards
2438 .Pp
2439 .Bl -tag -width "-p1003.1g-2000" -compact
2440 .It \-susv2
2441 .St -susv2
2442 This Standard was published in 1997
2443 and is also called X/Open Portability Guide version 5.
2444 It was used as the basis for UNIX 98 certification.
2445 The following refer to parts of it.
2446 .Pp
2447 .It \-xbd5
2448 .St -xbd5
2449 .Pp
2450 .It \-xsh5
2451 .St -xsh5
2452 .Pp
2453 .It \-xcu5
2454 .St -xcu5
2455 .Pp
2456 .It \-xns5
2457 .St -xns5
2458 .It \-xns5.2
2459 .St -xns5.2
2460 .El
2461 .It Single UNIX Specification version 3
2462 .Pp
2463 .Bl -tag -width "-p1003.1-2001" -compact
2464 .It \-p1003.1-2001
2465 .St -p1003.1-2001
2466 .It \-susv3
2467 .St -susv3
2468 .br
2469 This standard is based on C99, SUSv2, POSIX.1-1996, 1d, and 1j.
2470 It is also called X/Open Portability Guide version 6.
2471 It is used as the basis for UNIX 03 certification.
2472 .Pp
2473 .It \-p1003.1-2004
2474 .St -p1003.1-2004
2475 .br
2476 The second and last Technical Corrigendum.
2477 .El
2478 .It Single UNIX Specification version 4
2479 .Pp
2480 .Bl -tag -width "-p1003.1g-2000" -compact
2481 .It \-p1003.1-2008
2482 .St -p1003.1-2008
2483 .It \-susv4
2484 .St -susv4
2485 .br
2486 This standard is also called
2487 X/Open Portability Guide version 7.
2488 .El
2489 .It Other standards
2490 .Pp
2491 .Bl -tag -width "-p1003.1g-2000" -compact
2492 .It \-ieee754
2493 .St -ieee754
2494 .br
2495 Floating-point arithmetic.
2496 .Pp
2497 .It \-iso8601
2498 .St -iso8601
2499 .br
2500 Representation of dates and times, published in 1988.
2501 .Pp
2502 .It \-iso8802-3
2503 .St -iso8802-3
2504 .br
2505 Ethernet local area networks.
2506 .Pp
2507 .It \-ieee1275-94
2508 .St -ieee1275-94
2509 .El
2510 .El
2511 .It Ic \&Sx Ar Title line
2512 Reference a section or subsection in the same manual page.
2513 The referenced section or subsection name must be identical to the
2514 enclosed argument, including whitespace.
2515 .Pp
2516 Examples:
2517 .Dl \&.Sx MANUAL STRUCTURE
2518 .Pp
2519 See also
2520 .Ic \&Sh
2521 and
2522 .Ic \&Ss .
2523 .It Ic \&Sy Ar word ...
2524 Request a boldface font.
2525 .Pp
2526 This is most often used to indicate importance or seriousness (not to be
2527 confused with stress emphasis, see
2528 .Ic \&Em ) .
2529 When none of the semantic macros fit, it is also adequate for syntax
2530 elements that have to be given or that appear verbatim.
2531 .Pp
2532 Examples:
2533 .Bd -literal -compact -offset indent
2534 \&.Sy Warning :
2535 If
2536 \&.Sy s
2537 appears in the owner permissions, set-user-ID mode is set.
2538 This utility replaces the former
2539 \&.Sy dumpdir
2540 program.
2541 .Ed
2542 .Pp
2543 See also
2544 .Ic \&Em ,
2545 .Ic \&No ,
2546 and
2547 .Ic \&Ql .
2548 .It Ic \&Ta
2549 Table cell separator in
2550 .Ic \&Bl Fl column
2551 lists; can only be used below
2552 .Ic \&It .
2553 .It Ic \&Tg Op Ar term
2554 Announce that the next input line starts a definition of the
2555 .Ar term .
2556 This macro must appear alone on its own input line.
2557 The argument defaults to the first argument of the first macro
2558 on the next line.
2559 The argument may not contain whitespace characters, not even when it is quoted.
2560 This macro is a
2561 .Xr mandoc 1
2562 extension and is typically ignored by other formatters.
2563 .Pp
2564 When viewing terminal output with
2565 .Xr less 1 ,
2566 the interactive
2567 .Ic :t
2568 command can be used to go to the definition of the
2569 .Ar term
2570 as described for the
2571 .Ev MANPAGER
2572 variable in
2573 .Xr man 1 ;
2574 when producing HTML output, a fragment identifier
2575 .Pq Ic id No attribute
2576 is generated, to be used for deep linking to this place of the document.
2577 .Pp
2578 In most cases, adding a
2579 .Ic \&Tg
2580 macro would be redundant because
2581 .Xr mandoc 1
2582 is able to automatically tag most definitions.
2583 This macro is intended for cases where automatic tagging of a
2584 .Ar term
2585 is unsatisfactory, for example if a definition is not tagged
2586 automatically (false negative) or if places are tagged that do
2587 not define the
2588 .Ar term
2589 (false positives).
2590 When there is at least one
2591 .Ic \&Tg
2592 macro for a
2593 .Ar term ,
2594 no other places are automatically marked as definitions of that
2595 .Ar term .
2596 .It Ic \&Tn Ar word ...
2597 Supported only for compatibility, do not use this in new manuals.
2598 Even though the macro name
2599 .Pq Dq tradename
2600 suggests a semantic function, historic usage is inconsistent, mostly
2601 using it as a presentation-level macro to request a small caps font.
2602 .It Ic \&Ud
2603 Supported only for compatibility, do not use this in new manuals.
2604 Prints out
2605 .Dq currently under development.
2606 .It Ic \&Ux
2607 Supported only for compatibility, do not use this in new manuals.
2608 Prints out
2609 .Dq Ux .
2610 .It Ic \&Va Oo Ar type Oc Ar identifier ...
2611 A variable name.
2612 .Pp
2613 Examples:
2614 .Dl \&.Va foo
2615 .Dl \&.Va const char *bar ;
2616 .Pp
2617 For function arguments and parameters, use
2618 .Ic \&Fa
2619 instead.
2620 For declarations of global variables in the
2621 .Em SYNOPSIS
2622 section, use
2623 .Ic \&Vt .
2624 .It Ic \&Vt Ar type Op Ar identifier
2625 A variable type.
2626 .Pp
2627 This is also used for indicating global variables in the
2628 .Em SYNOPSIS
2629 section, in which case a variable name is also specified.
2630 Note that it accepts
2631 .Sx Block partial-implicit
2632 syntax when invoked as the first macro on an input line in the
2633 .Em SYNOPSIS
2634 section, else it accepts ordinary
2635 .Sx In-line
2636 syntax.
2637 In the former case, this macro starts a new output line,
2638 and a blank line is inserted in front if there is a preceding
2639 function definition or include directive.
2640 .Pp
2641 Examples:
2642 .Dl \&.Vt unsigned char
2643 .Dl \&.Vt extern const char * const sys_signame[] \&;
2644 .Pp
2645 For parameters in function prototypes, use
2646 .Ic \&Fa
2647 instead, for function return types
2648 .Ic \&Ft ,
2649 and for variable names outside the
2650 .Em SYNOPSIS
2651 section
2652 .Ic \&Va ,
2653 even when including a type with the name.
2654 See also
2655 .Sx MANUAL STRUCTURE .
2656 .It Ic \&Xc
2657 Close a scope opened by
2658 .Ic \&Xo .
2659 .It Ic \&Xo Ar block
2660 Extend the header of an
2661 .Ic \&It
2662 macro or the body of a partial-implicit block macro
2663 beyond the end of the input line.
2664 This macro originally existed to work around the 9-argument limit
2665 of historic
2666 .Xr roff 7 .
2667 .It Ic \&Xr Ar name section
2668 Link to another manual
2669 .Pq Qq cross-reference .
2670 .Pp
2671 Cross reference the
2672 .Ar name
2673 and
2674 .Ar section
2675 number of another man page.
2676 .Pp
2677 Examples:
2678 .Dl \&.Xr mandoc 1
2679 .Dl \&.Xr mandoc 1 \&;
2680 .Dl \&.Xr mandoc 1 \&Ns s behaviour
2681 .El
2682 .Sh MACRO SYNTAX
2683 The syntax of a macro depends on its classification.
2684 In this section,
2685 .Sq \-arg
2686 refers to macro arguments, which may be followed by zero or more
2687 .Sq parm
2688 parameters;
2689 .Sq \&Yo
2690 opens the scope of a macro; and if specified,
2691 .Sq \&Yc
2692 closes it out.
2693 .Pp
2694 The
2695 .Em Callable
2696 column indicates that the macro may also be called by passing its name
2697 as an argument to another macro.
2698 For example,
2699 .Sq \&.Op \&Fl O \&Ar file
2700 produces
2701 .Sq Op Fl O Ar file .
2702 To prevent a macro call and render the macro name literally,
2703 escape it by prepending a zero-width space,
2704 .Sq \e& .
2705 For example,
2706 .Sq \&Op \e&Fl O
2707 produces
2708 .Sq Op \&Fl O .
2709 If a macro is not callable but its name appears as an argument
2710 to another macro, it is interpreted as opaque text.
2711 For example,
2712 .Sq \&.Fl \&Sh
2713 produces
2714 .Sq Fl \&Sh .
2715 .Pp
2716 The
2717 .Em Parsed
2718 column indicates whether the macro may call other macros by receiving
2719 their names as arguments.
2720 If a macro is not parsed but the name of another macro appears
2721 as an argument, it is interpreted as opaque text.
2722 .Pp
2723 The
2724 .Em Scope
2725 column, if applicable, describes closure rules.
2726 .Ss Block full-explicit
2727 Multi-line scope closed by an explicit closing macro.
2728 All macros contains bodies; only
2729 .Ic \s&Bf
2730 and
2731 .Pq optionally
2732 .Ic \&Bl
2733 contain a head.
2734 .Bd -literal -offset indent
2735 \&.Yo \(lB\-arg \(lBparm...\(rB\(rB \(lBhead...\(rB
2736 \(lBbody...\(rB
2737 \&.Yc
2738 .Ed
2739 .Bl -column "MacroX" "CallableX" "ParsedX" "closed by XXX" -offset indent
2740 .It Em Macro Ta Em Callable Ta Em Parsed Ta Em Scope
2741 .It Ic \&Bd Ta \&No Ta \&No Ta closed by Ic \&Ed
2742 .It Ic \&Bf Ta \&No Ta \&No Ta closed by Ic \&Ef
2743 .It Ic \&Bk Ta \&No Ta \&No Ta closed by Ic \&Ek
2744 .It Ic \&Bl Ta \&No Ta \&No Ta closed by Ic \&El
2745 .It Ic \&Ed Ta \&No Ta \&No Ta opened by Ic \&Bd
2746 .It Ic \&Ef Ta \&No Ta \&No Ta opened by Ic \&Bf
2747 .It Ic \&Ek Ta \&No Ta \&No Ta opened by Ic \&Bk
2748 .It Ic \&El Ta \&No Ta \&No Ta opened by Ic \&Bl
2749 .El
2750 .Ss Block full-implicit
2751 Multi-line scope closed by end-of-file or implicitly by another macro.
2752 All macros have bodies; some
2753 .Po
2754 .Ic \&It Fl bullet ,
2755 .Fl hyphen ,
2756 .Fl dash ,
2757 .Fl enum ,
2758 .Fl item
2759 .Pc
2760 don't have heads; only one
2761 .Po
2762 .Ic \&It
2763 in
2764 .Ic \&Bl Fl column
2765 .Pc
2766 has multiple heads.
2767 .Bd -literal -offset indent
2768 \&.Yo \(lB\-arg \(lBparm...\(rB\(rB \(lBhead... \(lBTa head...\(rB\(rB
2769 \(lBbody...\(rB
2770 .Ed
2771 .Bl -column "MacroX" "CallableX" "ParsedX" "closed by XXXXXXXXXXX" -offset indent
2772 .It Em Macro Ta Em Callable Ta Em Parsed Ta Em Scope
2773 .It Ic \&It Ta \&No Ta Yes Ta closed by Ic \&It , Ic \&El
2774 .It Ic \&Nd Ta \&No Ta \&No Ta closed by Ic \&Sh
2775 .It Ic \&Nm Ta \&No Ta Yes Ta closed by Ic \&Nm , Ic \&Sh , Ic \&Ss
2776 .It Ic \&Sh Ta \&No Ta Yes Ta closed by Ic \&Sh
2777 .It Ic \&Ss Ta \&No Ta Yes Ta closed by Ic \&Sh , Ic \&Ss
2778 .El
2779 .Pp
2780 Note that the
2781 .Ic \&Nm
2782 macro is a
2783 .Sx Block full-implicit
2784 macro only when invoked as the first macro
2785 in a
2786 .Em SYNOPSIS
2787 section line, else it is
2788 .Sx In-line .
2789 .Ss Block partial-explicit
2790 Like block full-explicit, but also with single-line scope.
2791 Each has at least a body and, in limited circumstances, a head
2792 .Po
2793 .Ic \&Fo ,
2794 .Ic \&Eo
2795 .Pc
2796 and/or tail
2797 .Pq Ic \&Ec .
2798 .Bd -literal -offset indent
2799 \&.Yo \(lB\-arg \(lBparm...\(rB\(rB \(lBhead...\(rB
2800 \(lBbody...\(rB
2801 \&.Yc \(lBtail...\(rB
2802
2803 \&.Yo \(lB\-arg \(lBparm...\(rB\(rB \(lBhead...\(rB \
2804 \(lBbody...\(rB \&Yc \(lBtail...\(rB
2805 .Ed
2806 .Bl -column "MacroX" "CallableX" "ParsedX" "closed by XXXX" -offset indent
2807 .It Em Macro Ta Em Callable Ta Em Parsed Ta Em Scope
2808 .It Ic \&Ac Ta Yes Ta Yes Ta opened by Ic \&Ao
2809 .It Ic \&Ao Ta Yes Ta Yes Ta closed by Ic \&Ac
2810 .It Ic \&Bc Ta Yes Ta Yes Ta closed by Ic \&Bo
2811 .It Ic \&Bo Ta Yes Ta Yes Ta opened by Ic \&Bc
2812 .It Ic \&Brc Ta Yes Ta Yes Ta opened by Ic \&Bro
2813 .It Ic \&Bro Ta Yes Ta Yes Ta closed by Ic \&Brc
2814 .It Ic \&Dc Ta Yes Ta Yes Ta opened by Ic \&Do
2815 .It Ic \&Do Ta Yes Ta Yes Ta closed by Ic \&Dc
2816 .It Ic \&Ec Ta Yes Ta Yes Ta opened by Ic \&Eo
2817 .It Ic \&Eo Ta Yes Ta Yes Ta closed by Ic \&Ec
2818 .It Ic \&Fc Ta Yes Ta Yes Ta opened by Ic \&Fo
2819 .It Ic \&Fo Ta \&No Ta \&No Ta closed by Ic \&Fc
2820 .It Ic \&Oc Ta Yes Ta Yes Ta closed by Ic \&Oo
2821 .It Ic \&Oo Ta Yes Ta Yes Ta opened by Ic \&Oc
2822 .It Ic \&Pc Ta Yes Ta Yes Ta closed by Ic \&Po
2823 .It Ic \&Po Ta Yes Ta Yes Ta opened by Ic \&Pc
2824 .It Ic \&Qc Ta Yes Ta Yes Ta opened by Ic \&Oo
2825 .It Ic \&Qo Ta Yes Ta Yes Ta closed by Ic \&Oc
2826 .It Ic \&Re Ta \&No Ta \&No Ta opened by Ic \&Rs
2827 .It Ic \&Rs Ta \&No Ta \&No Ta closed by Ic \&Re
2828 .It Ic \&Sc Ta Yes Ta Yes Ta opened by Ic \&So
2829 .It Ic \&So Ta Yes Ta Yes Ta closed by Ic \&Sc
2830 .It Ic \&Xc Ta Yes Ta Yes Ta opened by Ic \&Xo
2831 .It Ic \&Xo Ta Yes Ta Yes Ta closed by Ic \&Xc
2832 .El
2833 .Ss Block partial-implicit
2834 Like block full-implicit, but with single-line scope closed by the
2835 end of the line.
2836 .Bd -literal -offset indent
2837 \&.Yo \(lB\-arg \(lBval...\(rB\(rB \(lBbody...\(rB \(lBres...\(rB
2838 .Ed
2839 .Bl -column "MacroX" "CallableX" "ParsedX" -offset indent
2840 .It Em Macro Ta Em Callable Ta Em Parsed
2841 .It Ic \&Aq Ta Yes Ta Yes
2842 .It Ic \&Bq Ta Yes Ta Yes
2843 .It Ic \&Brq Ta Yes Ta Yes
2844 .It Ic \&D1 Ta \&No Ta \&Yes
2845 .It Ic \&Dl Ta \&No Ta Yes
2846 .It Ic \&Dq Ta Yes Ta Yes
2847 .It Ic \&En Ta Yes Ta Yes
2848 .It Ic \&Op Ta Yes Ta Yes
2849 .It Ic \&Pq Ta Yes Ta Yes
2850 .It Ic \&Ql Ta Yes Ta Yes
2851 .It Ic \&Qq Ta Yes Ta Yes
2852 .It Ic \&Sq Ta Yes Ta Yes
2853 .It Ic \&Vt Ta Yes Ta Yes
2854 .El
2855 .Pp
2856 Note that the
2857 .Ic \&Vt
2858 macro is a
2859 .Sx Block partial-implicit
2860 only when invoked as the first macro
2861 in a
2862 .Em SYNOPSIS
2863 section line, else it is
2864 .Sx In-line .
2865 .Ss Special block macro
2866 The
2867 .Ic \&Ta
2868 macro can only be used below
2869 .Ic \&It
2870 in
2871 .Ic \&Bl Fl column
2872 lists.
2873 It delimits blocks representing table cells;
2874 these blocks have bodies, but no heads.
2875 .Bl -column "MacroX" "CallableX" "ParsedX" "closed by XXXX" -offset indent
2876 .It Em Macro Ta Em Callable Ta Em Parsed Ta Em Scope
2877 .It Ic \&Ta Ta Yes Ta Yes Ta closed by Ic \&Ta , Ic \&It
2878 .El
2879 .Ss In-line
2880 Closed by the end of the line, fixed argument lengths,
2881 and/or subsequent macros.
2882 In-line macros have only text children.
2883 If a number (or inequality) of arguments is
2884 .Pq n ,
2885 then the macro accepts an arbitrary number of arguments.
2886 .Bd -literal -offset indent
2887 \&.Yo \(lB\-arg \(lBval...\(rB\(rB \(lBargs...\(rB \(lBres...\(rB
2888
2889 \&.Yo \(lB\-arg \(lBval...\(rB\(rB \(lBargs...\(rB Yc...
2890
2891 \&.Yo \(lB\-arg \(lBval...\(rB\(rB arg0 arg1 argN
2892 .Ed
2893 .Bl -column "MacroX" "CallableX" "ParsedX" "Arguments" -offset indent
2894 .It Em Macro Ta Em Callable Ta Em Parsed Ta Em Arguments
2895 .It Ic \&%A Ta \&No Ta \&No Ta >0
2896 .It Ic \&%B Ta \&No Ta \&No Ta >0
2897 .It Ic \&%C Ta \&No Ta \&No Ta >0
2898 .It Ic \&%D Ta \&No Ta \&No Ta >0
2899 .It Ic \&%I Ta \&No Ta \&No Ta >0
2900 .It Ic \&%J Ta \&No Ta \&No Ta >0
2901 .It Ic \&%N Ta \&No Ta \&No Ta >0
2902 .It Ic \&%O Ta \&No Ta \&No Ta >0
2903 .It Ic \&%P Ta \&No Ta \&No Ta >0
2904 .It Ic \&%Q Ta \&No Ta \&No Ta >0
2905 .It Ic \&%R Ta \&No Ta \&No Ta >0
2906 .It Ic \&%T Ta \&No Ta \&No Ta >0
2907 .It Ic \&%U Ta \&No Ta \&No Ta >0
2908 .It Ic \&%V Ta \&No Ta \&No Ta >0
2909 .It Ic \&Ad Ta Yes Ta Yes Ta >0
2910 .It Ic \&An Ta Yes Ta Yes Ta >0
2911 .It Ic \&Ap Ta Yes Ta Yes Ta 0
2912 .It Ic \&Ar Ta Yes Ta Yes Ta n
2913 .It Ic \&At Ta Yes Ta Yes Ta 1
2914 .It Ic \&Bsx Ta Yes Ta Yes Ta n
2915 .It Ic \&Bt Ta \&No Ta \&No Ta 0
2916 .It Ic \&Bx Ta Yes Ta Yes Ta n
2917 .It Ic \&Cd Ta Yes Ta Yes Ta >0
2918 .It Ic \&Cm Ta Yes Ta Yes Ta >0
2919 .It Ic \&Db Ta \&No Ta \&No Ta 1
2920 .It Ic \&Dd Ta \&No Ta \&No Ta n
2921 .It Ic \&Dt Ta \&No Ta \&No Ta n
2922 .It Ic \&Dv Ta Yes Ta Yes Ta >0
2923 .It Ic \&Dx Ta Yes Ta Yes Ta n
2924 .It Ic \&Em Ta Yes Ta Yes Ta >0
2925 .It Ic \&Er Ta Yes Ta Yes Ta >0
2926 .It Ic \&Es Ta Yes Ta Yes Ta 2
2927 .It Ic \&Ev Ta Yes Ta Yes Ta >0
2928 .It Ic \&Ex Ta \&No Ta \&No Ta n
2929 .It Ic \&Fa Ta Yes Ta Yes Ta >0
2930 .It Ic \&Fd Ta \&No Ta \&No Ta >0
2931 .It Ic \&Fl Ta Yes Ta Yes Ta n
2932 .It Ic \&Fn Ta Yes Ta Yes Ta >0
2933 .It Ic \&Fr Ta Yes Ta Yes Ta >0
2934 .It Ic \&Ft Ta Yes Ta Yes Ta >0
2935 .It Ic \&Fx Ta Yes Ta Yes Ta n
2936 .It Ic \&Hf Ta \&No Ta \&No Ta n
2937 .It Ic \&Ic Ta Yes Ta Yes Ta >0
2938 .It Ic \&In Ta \&No Ta \&No Ta 1
2939 .It Ic \&Lb Ta \&No Ta \&No Ta 1
2940 .It Ic \&Li Ta Yes Ta Yes Ta >0
2941 .It Ic \&Lk Ta Yes Ta Yes Ta >0
2942 .It Ic \&Lp Ta \&No Ta \&No Ta 0
2943 .It Ic \&Ms Ta Yes Ta Yes Ta >0
2944 .It Ic \&Mt Ta Yes Ta Yes Ta >0
2945 .It Ic \&Nm Ta Yes Ta Yes Ta n
2946 .It Ic \&No Ta Yes Ta Yes Ta >0
2947 .It Ic \&Ns Ta Yes Ta Yes Ta 0
2948 .It Ic \&Nx Ta Yes Ta Yes Ta n
2949 .It Ic \&Os Ta \&No Ta \&No Ta n
2950 .It Ic \&Ot Ta Yes Ta Yes Ta >0
2951 .It Ic \&Ox Ta Yes Ta Yes Ta n
2952 .It Ic \&Pa Ta Yes Ta Yes Ta n
2953 .It Ic \&Pf Ta Yes Ta Yes Ta 1
2954 .It Ic \&Pp Ta \&No Ta \&No Ta 0
2955 .It Ic \&Rv Ta \&No Ta \&No Ta n
2956 .It Ic \&Sm Ta \&No Ta \&No Ta <2
2957 .It Ic \&St Ta \&No Ta Yes Ta 1
2958 .It Ic \&Sx Ta Yes Ta Yes Ta >0
2959 .It Ic \&Sy Ta Yes Ta Yes Ta >0
2960 .It Ic \&Tg Ta \&No Ta \&No Ta <2
2961 .It Ic \&Tn Ta Yes Ta Yes Ta >0
2962 .It Ic \&Ud Ta \&No Ta \&No Ta 0
2963 .It Ic \&Ux Ta Yes Ta Yes Ta n
2964 .It Ic \&Va Ta Yes Ta Yes Ta n
2965 .It Ic \&Vt Ta Yes Ta Yes Ta >0
2966 .It Ic \&Xr Ta Yes Ta Yes Ta 2
2967 .El
2968 .Ss Delimiters
2969 When a macro argument consists of one single input character
2970 considered as a delimiter, the argument gets special handling.
2971 This does not apply when delimiters appear in arguments containing
2972 more than one character.
2973 Consequently, to prevent special handling and just handle it
2974 like any other argument, a delimiter can be escaped by prepending
2975 a zero-width space
2976 .Pq Sq \e& .
2977 In text lines, delimiters never need escaping, but may be used
2978 as normal punctuation.
2979 .Pp
2980 For many macros, when the leading arguments are opening delimiters,
2981 these delimiters are put before the macro scope,
2982 and when the trailing arguments are closing delimiters,
2983 these delimiters are put after the macro scope.
2984 Spacing is suppressed after opening delimiters
2985 and before closing delimiters.
2986 For example,
2987 .Pp
2988 .D1 Pf \. \&Aq "( [ word ] ) ."
2989 .Pp
2990 renders as:
2991 .Pp
2992 .D1 Aq ( [ word ] ) .
2993 .Pp
2994 Opening delimiters are:
2995 .Pp
2996 .Bl -tag -width Ds -offset indent -compact
2997 .It \&(
2998 left parenthesis
2999 .It \&[
3000 left bracket
3001 .El
3002 .Pp
3003 Closing delimiters are:
3004 .Pp
3005 .Bl -tag -width Ds -offset indent -compact
3006 .It \&.
3007 period
3008 .It \&,
3009 comma
3010 .It \&:
3011 colon
3012 .It \&;
3013 semicolon
3014 .It \&)
3015 right parenthesis
3016 .It \&]
3017 right bracket
3018 .It \&?
3019 question mark
3020 .It \&!
3021 exclamation mark
3022 .El
3023 .Pp
3024 Note that even a period preceded by a backslash
3025 .Pq Sq \e.\&
3026 gets this special handling; use
3027 .Sq \e&.\&
3028 to prevent that.
3029 .Pp
3030 Many in-line macros interrupt their scope when they encounter
3031 delimiters, and resume their scope when more arguments follow that
3032 are not delimiters.
3033 For example,
3034 .Pp
3035 .D1 Pf \. \&Fl "a ( b | c \e*(Ba d ) e"
3036 .Pp
3037 renders as:
3038 .Pp
3039 .D1 Fl a ( b | c \*(Ba d ) e
3040 .Pp
3041 This applies to both opening and closing delimiters,
3042 and also to the middle delimiter, which does not suppress spacing:
3043 .Pp
3044 .Bl -tag -width Ds -offset indent -compact
3045 .It \&|
3046 vertical bar
3047 .El
3048 .Pp
3049 As a special case, the predefined string \e*(Ba is handled and rendered
3050 in the same way as a plain
3051 .Sq \&|
3052 character.
3053 Using this predefined string is not recommended in new manuals.
3054 .Pp
3055 Appending a zero-width space
3056 .Pq Sq \e&
3057 to the end of an input line is also useful to prevent the interpretation
3058 of a trailing period, exclamation or question mark as the end of a
3059 sentence, for example when an abbreviation happens to occur
3060 at the end of a text or macro input line.
3061 .Ss Font handling
3062 In
3063 .Nm
3064 documents, usage of semantic markup is recommended in order to have
3065 proper fonts automatically selected; only when no fitting semantic markup
3066 is available, consider falling back to
3067 .Sx Physical markup
3068 macros.
3069 Whenever any
3070 .Nm
3071 macro switches the
3072 .Xr roff 7
3073 font mode, it will automatically restore the previous font when exiting
3074 its scope.
3075 Manually switching the font using the
3076 .Xr roff 7
3077 .Ql \ef
3078 font escape sequences is never required.
3079 .Sh COMPATIBILITY
3080 This section provides an incomplete list of compatibility issues
3081 between mandoc and GNU troff
3082 .Pq Qq groff .
3083 .Pp
3084 The following problematic behaviour is found in groff:
3085 .Pp
3086 .Bl -dash -compact
3087 .It
3088 .Ic \&Pa
3089 does not format its arguments when used in the FILES section under
3090 certain list types.
3091 .It
3092 .Ic \&Ta
3093 can only be called by other macros, but not at the beginning of a line.
3094 .It
3095 .Sq \ef
3096 .Pq font face
3097 and
3098 .Sq \eF
3099 .Pq font family face
3100 .Sx Text Decoration
3101 escapes behave irregularly when specified within line-macro scopes.
3102 .It
3103 Negative scaling units return to prior lines.
3104 Instead, mandoc truncates them to zero.
3105 .El
3106 .Pp
3107 The following features are unimplemented in mandoc:
3108 .Pp
3109 .Bl -dash -compact
3110 .It
3111 .Ic \&Bd Fl file Ar file
3112 is unsupported for security reasons.
3113 .It
3114 .Ic \&Bd
3115 .Fl filled
3116 does not adjust the right margin, but is an alias for
3117 .Ic \&Bd
3118 .Fl ragged .
3119 .It
3120 .Ic \&Bd
3121 .Fl literal
3122 does not use a literal font, but is an alias for
3123 .Ic \&Bd
3124 .Fl unfilled .
3125 .It
3126 .Ic \&Bd
3127 .Fl offset Cm center
3128 and
3129 .Fl offset Cm right
3130 don't work.
3131 Groff does not implement centered and flush-right rendering either,
3132 but produces large indentations.
3133 .El
3134 .Sh SEE ALSO
3135 .Xr man 1 ,
3136 .Xr mandoc 1 ,
3137 .Xr eqn 7 ,
3138 .Xr man 7 ,
3139 .Xr mandoc_char 7 ,
3140 .Xr roff 7 ,
3141 .Xr tbl 7
3142 .Pp
3143 The web page
3144 .Lk http://mandoc.bsd.lv/mdoc/ "extended documentation for the mdoc language"
3145 provides a few tutorial-style pages for beginners, an extensive style
3146 guide for advanced authors, and an alphabetic index helping to choose
3147 the best macros for various kinds of content.
3148 .Sh HISTORY
3149 The
3150 .Nm
3151 language first appeared as a troff macro package in
3152 .Bx 4.4 .
3153 It was later significantly updated by Werner Lemberg and Ruslan Ermilov
3154 in groff-1.17.
3155 The standalone implementation that is part of the
3156 .Xr mandoc 1
3157 utility written by Kristaps Dzonsons appeared in
3158 .Ox 4.6 .
3159 .Sh AUTHORS
3160 The
3161 .Nm
3162 reference was written by
3163 .An Kristaps Dzonsons Aq Mt kristaps@bsd.lv .