1 .\" $Id: mdoc.7,v 1.92 2010/04/07 18:50:35 kristaps Exp $
3 .\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
5 .\" Permission to use, copy, modify, and distribute this software for any
6 .\" purpose with or without fee is hereby granted, provided that the above
7 .\" copyright notice and this permission notice appear in all copies.
9 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 .Dd $Mdocdate: April 7 2010 $
24 .Nd mdoc language reference
30 language is used to format
33 manuals. In this reference document, we describe its syntax, structure,
34 and usage. Our reference implementation is
38 section describes compatibility with
44 document follows simple rules: lines beginning with the control
47 are parsed for macros. Other lines are interpreted within the scope of
49 .Bd -literal -offset indent
50 \&.Sh Macro lines change control state.
51 Other lines are interpreted within the current state.
57 documents may contain only graphable 7-bit ASCII characters, the space
58 character, and, in certain circumstances, the tab character. All
67 whether in a macro or free-form text line, is ignored to the end of
68 line. A macro line with only a control character and comment escape,
70 is also ignored. Macro lines with only a control charater and optionally
71 whitespace are stripped from input.
74 .Ss Reserved Characters
75 Within a macro line, the following characters are reserved:
77 .Bl -tag -width Ds -offset indent -compact
103 Use of reserved characters is described in
105 For general use in macro lines, these characters must either be escaped
106 with a non-breaking space
108 or, if applicable, an appropriate escape sequence used.
111 .Ss Special Characters
112 Special characters may occur in both macro and free-form lines.
113 Sequences begin with the escape character
115 followed by either an open-parenthesis
117 for two-character sequences; an open-bracket
119 for n-character sequences (terminated at a close-bracket
121 or a single one-character sequence. See
123 for a complete list. Examples include
132 Terms may be text-decorated using the
134 escape followed by an indicator: B (bold), I, (italic), R (Roman), or P
135 (revert to previous mode):
137 .D1 \efBbold\efR \efIitalic\efP
139 A numerical representation 3, 2, or 1 (bold, italic, and Roman,
140 respectively) may be used instead. A text decoration is valid within
141 the current font scope only: if a macro opens a font scope alongside
142 its own scope, such as
145 in-scope invocations of
147 are only valid within the font scope of the macro. If
149 is specified outside of any font scope, such as in unenclosed, free-form
150 text, it will affect the remainder of the document.
152 Text may also be sized with the
154 escape, whose syntax is one of
156 for one-digit numerals;
160 for two-digit numerals; and
166 for arbitrary-digit numerals:
169 .D1 \es[+10]much bigger\es[-10]
170 .D1 \es+(10much bigger\es-(10
171 .D1 \es+'100'much much bigger\es-'100'
177 which encourages semantic annotation.
180 .Ss Predefined Strings
183 also defined a set of package-specific
184 .Dq predefined strings ,
186 .Sx Special Characters ,
187 demark special output characters and strings by way of input codes.
188 Predefined strings are escaped with the slash-asterisk,
198 for a complete list. Examples include
207 In non-literal free-form lines, consecutive blocks of whitespace are
208 pruned from input and added later in the output filter, if applicable:
209 .Bd -literal -offset indent
210 These spaces are pruned from input.
217 In macro lines, whitespace delimits arguments and is discarded. If
218 arguments are quoted, whitespace within the quotes is retained.
221 Blank lines are only permitted within literal contexts, as are lines
222 containing only whitespace. Tab characters are only acceptable when
225 or when in a literal context.
229 Macro arguments may be quoted with a double-quote to group
230 space-delimited terms or to retain blocks of whitespace. A quoted
231 argument begins with a double-quote preceded by whitespace. The next
232 double-quote not pair-wise adjacent to another double-quote terminates
233 the literal, regardless of surrounding whitespace.
242 Note that any quoted term, be it argument or macro, is indiscriminately
243 considered literal text. Thus, the following produces
245 .Bd -literal -offset indent
250 In free-form mode, quotes are regarded as opaque text.
253 There are several macros in
255 that require a date argument. The canonical form for dates is the
258 .D1 Cm Month Day , Year
262 value is an optionally zero-padded numeral. The
264 value is the full month name. The
266 value is the full four-digit year.
268 Reduced form dates are broken-down canonical form dates:
273 Some examples of valid dates follow:
275 .D1 "May, 2009" Pq reduced form
276 .D1 "2009" Pq reduced form
277 .D1 "May 20, 2009" Pq canonical form
280 Many macros support scaled widths for their arguments, such as
281 stipulating a two-inch list indentation with the following:
282 .Bd -literal -offset indent
287 The syntax for scaled widths is
288 .Sq Li [+-]?[0-9]*.[0-9]*[:unit:] ,
289 where a decimal must be preceded or proceeded by at least one digit.
290 Negative numbers, while accepted, are truncated to zero. The following
291 scaling units are accepted:
293 .Bl -tag -width Ds -offset indent -compact
306 default vertical span
318 default horizontal span
323 Using anything other than
329 is necessarily non-portable across output media. See
336 document consists of a document prologue followed by one or more
339 The prologue, which consists of (in order) the
344 macros, is required for every document.
346 The first section (sections are denoted by
348 must be the NAME section, consisting of at least one
353 Following that, convention dictates specifying at least the SYNOPSIS and
354 DESCRIPTION sections, although this varies between manual sections.
356 The following is a well-formed skeleton
359 .Bd -literal -offset indent
366 \&.Nd a description goes here
367 \&.\e\*q The next is for sections 2 & 3 only.
378 utility processes files ...
379 \&.\e\*q .Sh IMPLEMENTATION NOTES
380 \&.\e\*q The next is for sections 1 & 8 only.
381 \&.\e\*q .Sh EXIT STATUS
382 \&.\e\*q The next is for sections 2, 3, & 9 only.
383 \&.\e\*q .Sh RETURN VALUES
384 \&.\e\*q The next is for sections 1, 6, 7, & 8 only.
385 \&.\e\*q .Sh ENVIRONMENT
387 \&.\e\*q .Sh EXAMPLES
388 \&.\e\*q The next is for sections 1, 4, 6, 7, & 8 only.
389 \&.\e\*q .Sh DIAGNOSTICS
390 \&.\e\*q The next is for sections 2, 3, & 9 only.
392 \&.\e\*q .Sh SEE ALSO
393 \&.\e\*q .Xr foobar 1
394 \&.\e\*q .Sh STANDARDS
399 \&.\e\*q .Sh SECURITY CONSIDERATIONS
404 document are conventionally ordered as they appear above. Sections
405 should be composed as follows:
406 .Bl -ohang -offset Ds
408 The name(s) and a short description of the documented material. The
409 syntax for this as follows:
410 .Bd -literal -offset indent
414 \&.Nd a short description
419 macro(s) must precede the
429 The name of the library containing the documented material, which is
430 assumed to be a function in a section 2 or 3 manual. The syntax for
432 .Bd -literal -offset indent
440 Documents the utility invocation syntax, function call syntax, or device
443 For the first, utilities (sections 1, 6, and 8), this is
444 generally structured as follows:
445 .Bd -literal -offset indent
456 For the second, function calls (sections 2, 3, 9):
457 .Bd -literal -offset indent
458 \&.Vt extern const char *global;
461 \&.Fn foo "const char *src"
463 \&.Fn bar "const char *src"
466 And for the third, configurations (section 4):
467 .Bd -literal -offset indent
468 \&.Cd \*qit* at isa? port 0x2e\*q
469 \&.Cd \*qit* at isa? port 0x4e\*q
472 Manuals not in these sections generally don't need a
484 This expands upon the brief, one-line description in
486 It usually contains a break-down of the options (if documenting a
488 .Bd -literal -offset indent
489 The arguments are as follows:
490 \&.Bl \-tag \-width Ds
492 Print verbose information.
496 Manuals not documenting a command won't include the above fragment.
498 .It Em IMPLEMENTATION NOTES
499 Implementation-specific notes should be kept here. This is useful when
500 implementing standard functions that may have side effects or notable
501 algorithmic implications.
504 Command exit status for section 1, 6, and 8 manuals. This section is
507 which is used for functions. Historically, this information was
510 a practise that is now discouraged.
516 This section is the dual of
518 which is used for commands. It documents the return values of functions
519 in sections 2, 3, and 9.
525 Documents any usages of environment variables, e.g.,
532 Documents files used. It's helpful to document both the file and a
533 short description of how the file is used (created, modified, etc.).
539 Example usages. This often contains snippets of well-formed,
540 well-tested invocations. Make doubly sure that your examples work
544 Documents error conditions. This is most useful in section 4 manuals.
545 Historically, this section was used in place of
547 for manuals in sections 1, 6, and 8; however, this practise is
555 Documents error handling in sections 2, 3, and 9.
561 References other manuals with related topics. This section should exist
562 for most manuals. Cross-references should conventionally be ordered
563 first by section, then alphabetically.
569 References any standards implemented or used. If not adhering to any
572 section should be used instead.
578 The history of any manual without a
580 section should be described in this section.
583 Credits to authors, if applicable, should appear in this section.
584 Authors should generally be noted by both name and an e-mail address.
590 Explanations of common misuses and misunderstandings should be explained
594 Extant bugs should be described in this section.
596 .It Em SECURITY CONSIDERATIONS
597 Documents any security precautions that operators should consider.
603 Macros are one to three three characters in length and begin with a
606 at the beginning of the line. An arbitrary amount of whitespace may
607 sit between the control character and the macro name. Thus, the
608 following are equivalent:
609 .Bd -literal -offset indent
615 The syntax of a macro depends on its classification. In this section,
617 refers to macro arguments, which may be followed by zero or more
621 opens the scope of a macro; and if specified,
628 column indicates that the macro may be called subsequent to the initial
629 line-macro. If a macro is not callable, then its invocation after the
630 initial line macro is interpreted as opaque text, such that
638 column indicates whether the macro may be followed by further
639 (ostensibly callable) macros. If a macro is not parsable, subsequent
640 macro invocations on the line will be interpreted as opaque text.
645 column, if applicable, describes closure rules.
648 .Ss Block full-explicit
649 Multi-line scope closed by an explicit closing macro. All macros
650 contains bodies; only
653 .Bd -literal -offset indent
654 \&.Yo \(lB\-arg \(lBparm...\(rB\(rB \(lBhead...\(rB
660 .Bl -column -compact -offset indent "MacroX" "CallableX" "ParsableX" "closed by XXX"
661 .It Em Macro Ta Em Callable Ta Em Parsable Ta Em Scope
662 .It Sx \&Bd Ta \&No Ta \&No Ta closed by Sx \&Ed
663 .It Sx \&Bf Ta \&No Ta \&No Ta closed by Sx \&Ef
664 .It Sx \&Bk Ta \&No Ta \&No Ta closed by Sx \&Ek
665 .It Sx \&Bl Ta \&No Ta \&No Ta closed by Sx \&El
666 .It Sx \&Ed Ta \&No Ta \&No Ta opened by Sx \&Bd
667 .It Sx \&Ef Ta \&No Ta \&No Ta opened by Sx \&Bf
668 .It Sx \&Ek Ta \&No Ta \&No Ta opened by Sx \&Bk
669 .It Sx \&El Ta \&No Ta \&No Ta opened by Sx \&Bl
673 .Ss Block full-implicit
674 Multi-line scope closed by end-of-file or implicitly by another macro.
675 All macros have bodies; some
683 don't have heads; only one
688 .Bd -literal -offset indent
689 \&.Yo \(lB\-arg \(lBparm...\(rB\(rB \(lBhead... \(lBTa head...\(rB\(rB
694 .Bl -column -compact -offset indent "MacroX" "CallableX" "ParsableX" "closed by XXXXXXXXXXX"
695 .It Em Macro Ta Em Callable Ta Em Parsable Ta Em Scope
696 .It Sx \&It Ta \&No Ta Yes Ta closed by Sx \&It , Sx \&El
697 .It Sx \&Nd Ta \&No Ta \&No Ta closed by Sx \&Sh
698 .It Sx \&Sh Ta \&No Ta \&No Ta closed by Sx \&Sh
699 .It Sx \&Ss Ta \&No Ta \&No Ta closed by Sx \&Sh , Sx \&Ss
703 .Ss Block partial-explicit
704 Like block full-explicit, but also with single-line scope. Each
705 has at least a body and, in limited circumstances, a head
712 .Bd -literal -offset indent
713 \&.Yo \(lB\-arg \(lBparm...\(rB\(rB \(lBhead...\(rB
715 \&.Yc \(lBtail...\(rB
717 \&.Yo \(lB\-arg \(lBparm...\(rB\(rB \(lBhead...\(rB \
718 \(lBbody...\(rB \&Yc \(lBtail...\(rB
722 .Bl -column "MacroX" "CallableX" "ParsableX" "closed by XXXX" -compact -offset indent
723 .It Em Macro Ta Em Callable Ta Em Parsable Ta Em Scope
724 .It Sx \&Ac Ta Yes Ta Yes Ta opened by Sx \&Ao
725 .It Sx \&Ao Ta Yes Ta Yes Ta closed by Sx \&Ac
726 .It Sx \&Bc Ta Yes Ta Yes Ta closed by Sx \&Bo
727 .It Sx \&Bo Ta Yes Ta Yes Ta opened by Sx \&Bc
728 .It Sx \&Brc Ta Yes Ta Yes Ta opened by Sx \&Bro
729 .It Sx \&Bro Ta Yes Ta Yes Ta closed by Sx \&Brc
730 .It Sx \&Dc Ta Yes Ta Yes Ta opened by Sx \&Do
731 .It Sx \&Do Ta Yes Ta Yes Ta closed by Sx \&Dc
732 .It Sx \&Ec Ta Yes Ta Yes Ta opened by Sx \&Eo
733 .It Sx \&Eo Ta Yes Ta Yes Ta closed by Sx \&Ec
734 .It Sx \&Fc Ta Yes Ta Yes Ta opened by Sx \&Fo
735 .It Sx \&Fo Ta \&No Ta \&No Ta closed by Sx \&Fc
736 .It Sx \&Oc Ta Yes Ta Yes Ta closed by Sx \&Oo
737 .It Sx \&Oo Ta Yes Ta Yes Ta opened by Sx \&Oc
738 .It Sx \&Pc Ta Yes Ta Yes Ta closed by Sx \&Po
739 .It Sx \&Po Ta Yes Ta Yes Ta opened by Sx \&Pc
740 .It Sx \&Qc Ta Yes Ta Yes Ta opened by Sx \&Oo
741 .It Sx \&Qo Ta Yes Ta Yes Ta closed by Sx \&Oc
742 .It Sx \&Re Ta \&No Ta \&No Ta opened by Sx \&Rs
743 .It Sx \&Rs Ta \&No Ta \&No Ta closed by Sx \&Re
744 .It Sx \&Sc Ta Yes Ta Yes Ta opened by Sx \&So
745 .It Sx \&So Ta Yes Ta Yes Ta closed by Sx \&Sc
746 .It Sx \&Xc Ta Yes Ta Yes Ta opened by Sx \&Xo
747 .It Sx \&Xo Ta Yes Ta Yes Ta closed by Sx \&Xc
751 .Ss Block partial-implicit
752 Like block full-implicit, but with single-line scope closed by
753 .Sx Reserved Characters
755 .Bd -literal -offset indent
756 \&.Yo \(lB\-arg \(lBval...\(rB\(rB \(lBbody...\(rB \(lBres...\(rB
760 .Bl -column "MacroX" "CallableX" "ParsableX" -compact -offset indent
761 .It Em Macro Ta Em Callable Ta Em Parsable
762 .It Sx \&Aq Ta Yes Ta Yes
763 .It Sx \&Bq Ta Yes Ta Yes
764 .It Sx \&Brq Ta Yes Ta Yes
765 .It Sx \&D1 Ta \&No Ta \&Yes
766 .It Sx \&Dl Ta \&No Ta Yes
767 .It Sx \&Dq Ta Yes Ta Yes
768 .It Sx \&Op Ta Yes Ta Yes
769 .It Sx \&Pq Ta Yes Ta Yes
770 .It Sx \&Ql Ta Yes Ta Yes
771 .It Sx \&Qq Ta Yes Ta Yes
772 .It Sx \&Sq Ta Yes Ta Yes
773 .It Sx \&Vt Ta Yes Ta Yes
779 .Sx Block partial-implicit
780 only when invoked as the first macro
781 in a SYNOPSIS section line, else it is
787 .Sx Reserved Characters ,
788 end of line, fixed argument lengths, and/or subsequent macros. In-line
789 macros have only text children. If a number (or inequality) of
792 then the macro accepts an arbitrary number of arguments.
793 .Bd -literal -offset indent
794 \&.Yo \(lB\-arg \(lBval...\(rB\(rB \(lBargs...\(rB \(lbres...\(rb
796 \&.Yo \(lB\-arg \(lBval...\(rB\(rB \(lBargs...\(rB Yc...
798 \&.Yo \(lB\-arg \(lBval...\(rB\(rB arg0 arg1 argN
802 .Bl -column "MacroX" "CallableX" "ParsableX" "Arguments" -compact -offset indent
803 .It Em Macro Ta Em Callable Ta Em Parsable Ta Em Arguments
804 .It Sx \&%A Ta \&No Ta \&No Ta >0
805 .It Sx \&%B Ta \&No Ta \&No Ta >0
806 .It Sx \&%C Ta \&No Ta \&No Ta >0
807 .It Sx \&%D Ta \&No Ta \&No Ta >0
808 .It Sx \&%I Ta \&No Ta \&No Ta >0
809 .It Sx \&%J Ta \&No Ta \&No Ta >0
810 .It Sx \&%N Ta \&No Ta \&No Ta >0
811 .It Sx \&%O Ta \&No Ta \&No Ta >0
812 .It Sx \&%P Ta \&No Ta \&No Ta >0
813 .It Sx \&%Q Ta \&No Ta \&No Ta >0
814 .It Sx \&%R Ta \&No Ta \&No Ta >0
815 .It Sx \&%T Ta \&No Ta \&No Ta >0
816 .It Sx \&%U Ta \&No Ta \&No Ta >0
817 .It Sx \&%V Ta \&No Ta \&No Ta >0
818 .It Sx \&Ad Ta Yes Ta Yes Ta n
819 .It Sx \&An Ta Yes Ta Yes Ta n
820 .It Sx \&Ap Ta Yes Ta Yes Ta 0
821 .It Sx \&Ar Ta Yes Ta Yes Ta n
822 .It Sx \&At Ta Yes Ta Yes Ta 1
823 .It Sx \&Bsx Ta Yes Ta Yes Ta n
824 .It Sx \&Bt Ta \&No Ta \&No Ta 0
825 .It Sx \&Bx Ta Yes Ta Yes Ta n
826 .It Sx \&Cd Ta Yes Ta Yes Ta >0
827 .It Sx \&Cm Ta Yes Ta Yes Ta n
828 .It Sx \&Db Ta \&No Ta \&No Ta 1
829 .It Sx \&Dd Ta \&No Ta \&No Ta >0
830 .It Sx \&Dt Ta \&No Ta \&No Ta n
831 .It Sx \&Dv Ta Yes Ta Yes Ta n
832 .It Sx \&Dx Ta Yes Ta Yes Ta n
833 .It Sx \&Em Ta Yes Ta Yes Ta >0
834 .It Sx \&En Ta \&No Ta \&No Ta 0
835 .It Sx \&Er Ta Yes Ta Yes Ta >0
836 .It Sx \&Es Ta \&No Ta \&No Ta 0
837 .It Sx \&Ev Ta Yes Ta Yes Ta n
838 .It Sx \&Ex Ta \&No Ta \&No Ta n
839 .It Sx \&Fa Ta Yes Ta Yes Ta n
840 .It Sx \&Fd Ta \&No Ta \&No Ta >0
841 .It Sx \&Fl Ta Yes Ta Yes Ta n
842 .It Sx \&Fn Ta Yes Ta Yes Ta >0
843 .It Sx \&Fr Ta \&No Ta \&No Ta n
844 .It Sx \&Ft Ta Yes Ta Yes Ta n
845 .It Sx \&Fx Ta Yes Ta Yes Ta n
846 .It Sx \&Hf Ta \&No Ta \&No Ta n
847 .It Sx \&Ic Ta Yes Ta Yes Ta >0
848 .It Sx \&In Ta \&No Ta \&No Ta n
849 .It Sx \&Lb Ta \&No Ta \&No Ta 1
850 .It Sx \&Li Ta Yes Ta Yes Ta n
851 .It Sx \&Lk Ta Yes Ta Yes Ta n
852 .It Sx \&Lp Ta \&No Ta \&No Ta 0
853 .It Sx \&Ms Ta Yes Ta Yes Ta >0
854 .It Sx \&Mt Ta Yes Ta Yes Ta >0
855 .It Sx \&Nm Ta Yes Ta Yes Ta n
856 .It Sx \&No Ta Yes Ta Yes Ta 0
857 .It Sx \&Ns Ta Yes Ta Yes Ta 0
858 .It Sx \&Nx Ta Yes Ta Yes Ta n
859 .It Sx \&Os Ta \&No Ta \&No Ta n
860 .It Sx \&Ot Ta \&No Ta \&No Ta n
861 .It Sx \&Ox Ta Yes Ta Yes Ta n
862 .It Sx \&Pa Ta Yes Ta Yes Ta n
863 .It Sx \&Pf Ta Yes Ta Yes Ta 1
864 .It Sx \&Pp Ta \&No Ta \&No Ta 0
865 .It Sx \&Rv Ta \&No Ta \&No Ta n
866 .It Sx \&Sm Ta \&No Ta \&No Ta 1
867 .It Sx \&St Ta \&No Ta Yes Ta 1
868 .It Sx \&Sx Ta Yes Ta Yes Ta >0
869 .It Sx \&Sy Ta Yes Ta Yes Ta >0
870 .It Sx \&Tn Ta Yes Ta Yes Ta >0
871 .It Sx \&Ud Ta \&No Ta \&No Ta 0
872 .It Sx \&Ux Ta Yes Ta Yes Ta n
873 .It Sx \&Va Ta Yes Ta Yes Ta n
874 .It Sx \&Vt Ta Yes Ta Yes Ta >0
875 .It Sx \&Xr Ta Yes Ta Yes Ta >0
876 .It Sx \&br Ta \&No Ta \&No Ta 0
877 .It Sx \&sp Ta \&No Ta \&No Ta 1
882 This section is a canonical reference of all macros, arranged
883 alphabetically. For the scoping of individual macros, see
889 block. Multiple authors should each be accorded their own
891 line. Author names should be ordered with full or abbreviated
892 forename(s) first, then full surname.
897 block. This macro may also be used in a non-bibliographic context when
898 referring to book titles.
901 Publication city or location of an
906 this macro is not implemented in
910 Publication date of an
912 block. This should follow the reduced or canonical form syntax
917 Publisher or issuer name of an
927 Issue number (usually for journals) of an
932 Optional information of an
937 Book or journal page number of an
942 Institutional author (school, government, etc.) of an
944 block. Multiple institutional authors should each be accorded their own
949 Technical report name of an
956 block. This macro may also be used in a non-bibliographical context
957 when referring to article titles.
960 URI of reference document.
970 block. Does not have any tail arguments.
973 Address construct: usually in the context of an computational address in
974 memory, not a physical (post) address.
981 Author name. This macro may alternatively accepts the following
982 arguments, although these may not be specified along with a parameter:
983 .Bl -tag -width 12n -offset indent
985 Renders a line break before each author listing.
991 In the AUTHORS section, the default is not to split the first author
992 listing, but all subsequent author listings, whether or not they're
993 interspersed by other macros or text, are split. Thus, specifying
995 will cause the first listing also to be split. If not in the AUTHORS
996 section, the default is not to split.
1000 .D1 \&.An J. D. Ullman .
1007 are re-set when entering the AUTHORS section, so if one specifies
1009 in the general document body, it must be re-specified in the AUTHORS
1013 Begins a block enclosed by angled brackets. Does not have any head
1017 .D1 \&.Fl -key= \&Ns \&Ao \&Ar val \&Ac
1023 Inserts an apostrophe without any surrounding white-space. This is
1024 generally used as a grammatic device when referring to the verb form of
1026 .Bd -literal -offset indent
1031 Encloses its arguments in angled brackets.
1034 .D1 \&.Fl -key= \&Ns \&Aq \&Ar val
1037 this macro is often abused for rendering URIs, which should instead use
1041 or to note pre-processor
1043 statements, which should use
1050 Command arguments. If an argument is not provided, the string
1052 is used as a default.
1055 .D1 \&.Fl o \&Ns \&Ar file1
1057 .D1 \&.Ar arg1 , arg2 .
1060 Formats an AT&T version. Accepts at most one parameter:
1061 .Bl -tag -width 12n -offset indent
1070 Note that these parameters do not begin with a hyphen.
1089 block. Does not have any tail arguments.
1092 Begins a display block. A display is collection of macros or text which
1093 may be collectively offset or justified in a manner different from that
1094 of the enclosing context. By default, the block is preceded by a
1097 Each display is associated with a type, which must be one of the
1098 following arguments:
1099 .Bl -tag -width 12n -offset indent
1101 Only left-justify the block.
1103 Do not justify the block at all.
1105 Left- and right-justify the block.
1110 Centre-justify each line.
1113 The type must be provided first. Secondary arguments are as follows:
1114 .Bl -tag -width 12n -offset indent
1115 .It Fl offset Ar width
1116 Offset by the value of
1118 which is interpreted as one of the following, specified in order:
1121 As one of the pre-defined strings
1123 the width of standard indentation;
1128 which has no effect ;
1130 which justifies to the right margin; and
1132 which aligns around an imagined centre axis.
1134 As a precalculated width for a named macro. The most popular is the
1140 As a scaling unit following the syntax described in
1141 .Sx Scaling Widths .
1143 As the calculated string length of the opaque string.
1146 If unset, it will revert to the value of
1149 .Sx Scaling Widths .
1151 Do not assert a vertical space before the block.
1155 before any text or macros within the block.
1159 .Bd -literal -offset indent
1160 \&.Bd \-unfilled \-offset two-indent \-compact
1173 .\" Begins a list composed of one or more list entries. A list entry is
1174 .\" specified by the
1176 .\" macro, which consists of a head and optional body. By default, a list
1177 .\" is preceded by a blank line. A list must specify one of the following
1179 .\" .Bl -tag -width 12n
1181 .\" A list offset by a bullet. The head of list entries must be empty.
1182 .\" List entry bodies are justified after the bullet.
1184 .\" A columnated list. The number of columns is specified as arguments to
1187 .\" macro (the deprecated form of following the invocation of
1189 .\" is also accepted). Arguments dictate the width of columns specified in
1190 .\" list entries. List entry bodies must be left empty. Columns specified
1191 .\" in the list entry head are justified to their position in the sequence
1194 .\" A list offset by a dash (hyphen). The head of list entries must be
1195 .\" empty. List entry bodies are justified past the dash.
1199 .\" lists, but with additional formatting to the head.
1201 .\" A list offset by a number indicating list entry position. The head of
1202 .\" list entries must be empty. List entry bodies are justified past the
1207 .\" but instead of list bodies justifying to the head on the first line,
1208 .\" they trail the head text.
1215 .\" but list entry bodies aren't justified.
1217 .\" An un-justified list. This produces blocks of text.
1219 .\" List bodies are placed on the line following the head.
1221 .\" A list offset by list entry heads. List entry bodies are justified
1228 Begins a block enclosed by square brackets. Does not have any head
1232 .Bd -literal -offset indent
1241 Encloses its arguments in square brackets.
1244 .D1 \&.Bq 1 , \&Dv BUFSIZ
1247 this macro is sometimes abused to emulate optional arguments for
1248 commands; the correct macros to use for this purpose are
1260 block. Does not have any tail arguments.
1263 Begins a block enclosed by curly braces. Does not have any head
1267 .Bd -literal -offset indent
1276 Encloses its arguments in curly braces.
1279 .D1 \&.Brq 1 , ... , \&Va n
1285 Format the BSD/OS version provided as an argument, or a default value if
1286 no argument is provided.
1304 .Dq is currently in beta test.
1307 Format the BSD version provided as an argument, or a default value if no
1308 argument is provided.
1325 Configuration declaration (suggested for use in section four and nine
1326 manuals). This denotes strings accepted by
1330 .D1 \&.Cd device le0 at scode?
1333 this macro is commonly abused by using quoted literals to retain
1334 white-space and align consecutive
1336 declarations. This practise is discouraged.
1339 Command modifiers. Useful when specifying configuration options or
1343 .D1 \&.Cm ControlPath
1344 .D1 \&.Cm ControlMaster
1350 One-line indented display. This is formatted by the default rules and
1351 is useful for simple indented statements. It is followed by a newline.
1354 .D1 \&.D1 \&Fl abcdefgh
1365 block. Does not have any tail arguments.
1368 Document date. This is the mandatory first macro of any
1370 manual. Its calling syntax is as follows:
1372 .D1 \. Ns Sx \&Dd Cm date
1378 which signifies the current manual revision date dictated by
1380 or instead a valid canonical date as specified by
1382 If a date does not conform, the current date is used instead.
1385 .D1 \&.Dd $\&Mdocdate$
1386 .D1 \&.Dd $\&Mdocdate: July 21 2007$
1387 .D1 \&.Dd July 21, 2007
1395 One-line intended display. This is formatted as literal text and is
1396 useful for commands and invocations. It is followed by a newline.
1399 .D1 \&.Dl % mandoc mdoc.7 | less
1407 Begins a block enclosed by double quotes. Does not have any head
1411 .D1 \&.D1 \&Do April is the cruellest month \&Dc \e(em T.S. Eliot
1417 Encloses its arguments in double quotes.
1420 .Bd -literal -offset indent -compact
1421 \&.Dq April is the cruellest month
1429 Document title. This is the mandatory second macro of any
1431 file. Its calling syntax is as follows:
1433 .D1 \. Ns Sx \&Dt Cm title section Op Cm volume | arch
1435 Its arguments are as follows:
1436 .Bl -tag -width Ds -offset Ds
1438 The document's title (name). This should be capitalised and is
1441 The manual section. This may be one of
1449 .Pq Perl libraries ,
1459 .Pq system utilities ,
1461 .Pq kernel functions ,
1463 .Pq X Window System ,
1465 .Pq X Window System ,
1475 It is also required and should correspond to the manual's filename
1478 This overrides the volume inferred from
1480 This field is optional, and if specified, must be one of
1482 .Pq users' supplementary documents ,
1484 .Pq programmers' supplementary documents ,
1486 .Pq administrators' supplementary documents ,
1488 .Pq system managers' manuals ,
1490 .Pq users' reference manuals ,
1492 .Pq programmers' reference manuals ,
1494 .Pq kernel manuals ,
1505 .Pq contributed manuals .
1507 This specifies a specific relevant architecture. If
1509 is not provided, it may be used in its place, else it may be used
1510 subsequent that. It, too, is optional. It must be one of
1544 .D1 \&.Dt FOO 9 i386
1545 .D1 \&.Dt FOO 9 KM i386
1553 Defined variables such as preprocessor constants.
1557 .D1 \&.Dv STDOUT_FILENO
1563 Format the DragonFly BSD version provided as an argument, or a default
1564 value if no argument is provided.
1587 Denotes text that should be emphasised. Note that this is a
1588 presentation term and should not be used for stylistically decorating
1598 Display error constants.
1610 Environmental variables such as those specified in
1618 Inserts text regarding a utility's exit values. This macro must have
1621 argument specified, then an optional
1625 is not provided, the document's name as stipulated in
1632 Command-line flag. Used when listing arguments to command-line
1633 utilities. Prints a fixed-width hyphen
1635 directly followed by each argument. If no arguments are provided, a hyphen is
1636 printed followed by a space. If the argument is a macro, a hyphen is
1637 prefixed to the subsequent macro output.
1643 .D1 \&.Op \&Fl o \&Ns \&Ar file
1653 Format the FreeBSD version provided as an argument, or a default value
1654 if no argument is provided.
1677 Format a hyperlink. The calling syntax is as follows:
1679 .D1 \. Ns Sx \&Lk Cm uri Op Cm name
1682 .D1 \&.Lk http://bsd.lv "The BSD.lv Project"
1683 .D1 \&.Lk http://bsd.lv
1696 Format the NetBSD version provided as an argument, or a default value if
1697 no argument is provided.
1717 Document operating system version. This is the mandatory third macro of
1720 file. Its calling syntax is as follows:
1722 .D1 \. Ns Sx \&Os Op Cm system
1726 parameter specifies the relevant operating system or environment. Left
1727 unspecified, it defaults to the local operating system version. This is
1732 .D1 \&.Os KTH/CSC/TCS
1744 this macro has been deprecated.
1747 Format the OpenBSD version provided as an argument, or a default value
1748 if no argument is provided.
1778 block. Does not have any tail arguments.
1781 Begins a bibliographic
1783 block. Does not have any head arguments. The block macro may only
1799 child macros (at least one must be specified).
1802 .Bd -literal -offset indent -compact
1804 \&.%A J. E. Hopcroft
1806 \&.%B Introduction to Automata Theory, Languages, and Computation
1807 \&.%I Addison-Wesley
1808 \&.%C Reading, Massachusettes
1815 block is used within a SEE ALSO section, a vertical space is asserted
1816 before the rendered output, else the block continues on the current
1832 Format the UNIX name. Accepts no argument.
1849 A variable type. This is also used for indicating global variables in the
1850 SYNOPSIS section, in which case a variable name is also specified. Note that
1852 .Sx Block partial-implicit
1853 syntax when invoked as the first macro in the SYNOPSIS section, else it
1858 Note that this should not be confused with
1860 which is used for function return types.
1863 .D1 \&.Vt unsigned char
1864 .D1 \&.Vt extern const char * const sys_signame[] ;
1872 Close a scope opened by
1876 Open an extension scope. This macro originally existed to extend the
1877 9-argument limit of troff; since this limit has been lifted, the macro
1878 has been deprecated.
1881 Link to another manual
1882 .Pq Qq cross-reference .
1883 Its calling syntax is
1885 .D1 \. Ns Sx \&Xr Cm name section
1891 are the name and section of the linked manual. If
1893 is followed by non-punctuation, an
1895 is inserted into the token stream. This behaviour is for compatibility
1901 .D1 \&.Xr mandoc 1 ;
1902 .D1 \&.Xr mandoc 1 \&Ns s behaviour
1909 This section documents compatibility with other roff implementations, at
1910 this time limited to
1914 refers to those versions before the
1917 .Pq somewhere between 1.15 and 1.19 .
1924 is no longer accepted.
1930 macro does not format its arguments when used in the FILES section under
1931 certain list types. This irregular behaviour has been discontinued.
1935 does not print a dash for empty
1937 arguments. This behaviour has been discontinued.
1940 behaves strangely (even between versions) when specifying
1942 escapes within line-macro scopes. These aberrations have been
1945 Negative scaling units are now truncated to zero instead of creating
1946 interesting conditions, such as with
1951 scaling unit, while accepted, is rendered as the default unit.
1953 In quoted literals, groff allowed pair-wise double-quotes to produce a
1954 standalone double-quote in formatted output. This idiosyncratic
1955 behaviour is no longer applicable.
1966 argument is ignored. Since text is not right-justified,
1975 Blocks of whitespace are stripped from both macro and free-form text
1976 lines (except when in literal mode), while groff would retain whitespace
1977 in free-form text lines.
1979 Historic groff has many un-callable macros. Most of these (excluding
1980 some block-level macros) are now callable, conforming to the
1981 non-historic groff version.
1987 but is a proper delimiter in this implementation.
1991 is assumed for all lists (it wasn't in historic groff): any list may be
1994 lists will restart the sequence only for the sub-list.
1998 incorrectly by following it with a reserved character and expecting the
1999 delimiter to render. This is not supported.
2003 macro only produces the first parameter. This is no longer the case.
2015 reference was written by
2016 .An Kristaps Dzonsons Aq kristaps@kth.se .
2018 .\" XXX: this really isn't the place for these caveats.
2022 .\" There are many ambiguous parts of mdoc.
2025 .\" .Bl -dash -compact
2030 .\" as function arguments are variables.
2035 .\" as function return types are still types. Furthermore, the
2037 .\" should be removed and
2039 .\" which ostensibly follows it, should follow the same convention as
2043 .\" should formalise that only one or two arguments are acceptable: a
2044 .\" variable name and optional, preceding type.
2047 .\" is ambiguous. It's commonly used to indicate an include file in the
2048 .\" synopsis section.
2050 .\" should be used, instead.
2056 .\" makes sense. The remaining ones should be removed.
2062 .\" macros should be deprecated.
2066 .\" macro lacks clarity. It should be absolutely clear which title will
2067 .\" render when formatting the manual page.
2071 .\" should be provided for Linux (\(`a la
2076 .\" There's no way to refer to references in
2080 .\" The \-split and \-nosplit dictates via
2082 .\" are re-set when entering and leaving the AUTHORS section.