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