Copyright (c) 1991, 1993
The Regents of the University of California. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this software
must display the following acknowledgement:
This product includes software developed by the University of
California, Berkeley and its contributors.
4. Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.

@(#)doc 8.1 (Berkeley) 06/08/93

Modified by jjc@jclark.com as follows: the doc-* files are assumed to be
installed as mdoc/doc-* rather than tmac.doc-* (the filename
`tmac.doc-common' would be too long); when using groff, the doc-* files
are loaded using the `mso' request.

Modified by

Werner LEMBERG <wl@gnu.org> and
Ruslan Ermilov <ru@freebsd.org>

to make it more readable: using long names and many groff features,
updating and extending documentation, etc.

.ab This version of mdoc can be run with GNU troff only! .do if d Dd .nx .cp 0 .ab You need GNU troff version 1.18 or higher to run this version of mdoc! .mso mdoc/doc-ditroff .mso mdoc/doc-nroff .mso mdoc/doc-common .mso mdoc/doc-syms .eo .als arg0 macro-name .nr arg-limit 0 .nr num-args 0 .nr arg-ptr 0 .nr type1 0 .set-spacing-1 .nr have-space 0 .return .nr arg-limit +1 .\} .get-arg-type* \n[arg-limit] .nr type\n[arg-limit] \n[arg-type] .set-spacing-\n[arg-type] .nr arg-ptr 0 .shift .parse-args \$@ .\} .. .set-spacing-1 .nr arg-limit +1 .\} .get-arg-type* \n[arg-limit] .nr type\n[arg-limit] \n[arg-type] .set-spacing-\n[arg-type] .nr arg-ptr 0 .nr num-args 0 .\} .nr num-args -1 .parse-arg-vector .\} .. .nr arg-limit +1 .set-spacing-\n[type\n[arg-limit]] .nr num-args 0 .nr num-args -1 .parse-space-vector .\} .. .nr arg-ptr +1 .nop \)\*[arg\n[arg-ptr]]\c .nr arg-ptr 0 .nr num-args 0 .\} .nop \)\*[space]\c .nr num-args -1 .remaining-args .\} .. .nr arg-limit +1 .nr type\n[arg-limit] \$2 .set-spacing-\$2 .. .nop \) .reset-args .. .nr arg-limit 0 .nr arg-ptr 0 .nr have-slot 0 .. .ec .nr curr-font \n[.f] .nr curr-size \n[.ps] .eo .nr curr-font \n[.f] .nr curr-size \n[.ps] .nop \*[Fl-font]\c .parse-args \$@ .nop \|-\|\f[]\s[0] .\}\} .return .nr arg-ptr +1 .nop \|-\f[]\s[0]\c .print-and-reset .\} .nop \|-\f[]\s[0]\c .\*[arg\n[arg-ptr]] .\} .nop \|-\|\c .nr reg-Fl 1 .flag-recursion .\}\} .. .nr reg-dfr1 \n[type\n[arg-ptr]] .nop \f[]\s[0]\c .\*[str-dfr] .\} .nr reg-dfr \n[arg-ptr] .nop \|-\*[space]\c .nop \)\*[Ba]\c .\} .nop \|-\*[space]\c .nop \f[R]|\f[]\c .\} .nop \|-\^-\|\c .nop \|\%-\*[str-dfr]\c .\}\}\} .nop \f[\n[curr-font]]\s[\n[curr-size]u]\c .nop \)\*[str-dfr]\f[]\s[0]\c .\} .nop \|-\c .nop \f[]\s[0]\c .print-and-reset .\} .nr arg-ptr +1 .nop \|-\c .nop \)\*[space\n[reg-dfr]]\c .\} .nop \)\*[space\n[reg-dfr]]\c .shift .nr reg-Fl 0 .flag-recursion \$@ .\}\} .. .nr reg-dpr1 \n[type\n[arg-ptr]] .nop \f[\n[curr-font]]\s[\n[curr-size]u]\c .\*[str-dpr] .\} .nr reg-dpr \n[arg-ptr] .nop \%\*[str-dpr]\c .nop \f[\n[curr-font]]\s[\n[curr-size]u]\c .nop \)\*[str-dpr]\f[]\s[0]\c .\} .nr arg-ptr +1 .nop \f[\n[curr-font]]\s[\n[curr-size]u]\c .print-and-reset .\} .nop \)\*[space\n[reg-dpr]]\c .print-recursive .\}\} .. .while (\n[arg-limit] >= \n[arg-ptr]) \{\

eak .nop \f[\n[curr-font]]\s[\n[curr-size]u]\c .nop \)\*[arg\n[arg-ptr]]\f[]\s[0]\c .nr arg-ptr +1 .\} .. .parse-args \$@ .\} .tm Usage: .\$0 \*[\$0-usage] ... (#\n[.c]) .\} .return .nr arg-ptr +1 .tmc mdoc warning: Using a macro as first argument .tm1 " cancels effect of .\$0 (#\n[.c]) .\} .nr curr-font \n[.f] .nr curr-size \n[.ps] .nop \*[\$0-font]\c .print-recursive .\} .tm Usage: .\$0 \*[\$0-usage] ... (#\n[.c]) .reset-args .\} .. .nr curr-font \n[.f] .nr curr-size \n[.ps] .nop \*[Ar-font]\c .parse-args \$@ .nop \)\*[str-Ar-default]\f[]\s[0] .\}\} .return .nr arg-ptr +1 .print-prefixes .nop \)\*[str-Ar-default]\f[]\s[0]\c .print-and-reset .\} .nr arg-ptr -1 .nr type\n[arg-ptr] 2 .nr num-args (\n[arg-limit] - \n[arg-ptr]) .nr arg-limit \n[arg-ptr] .parse-space-vector .\} .print-recursive .\} .. .als Ad generic-macro .nr indent-synopsis 0 .nr indent-synopsis-active 0 .parse-args \$@ .\} .tm Usage: .Cd configuration_file_declaration ... (#\n[.c]) .\} .return .nr arg-ptr +1 .nr curr-font \n[.f] .nr curr-size \n[.ps]

.nr indent-synopsis \n[display-indent]u .nop \*[Nm-font]\c .print-recursive .\}\} .nop \*[Nm-font]\c .print-recursive .\}\} .tm Usage: .Cd configuration_file_declaration ... (#\n[.c]) .reset-args .\} .. .als Cm generic-macro .als Dv generic-macro .als Dv-font Er-font .als Em generic-macro .als Er generic-macro .als Ev generic-macro .nr have-decl 0 .nr have-var 0 .paragraph .nr have-var 0 .\}

.paragraph .\} .nr have-decl 1 .\} .nr curr-font \n[.f] .nr curr-size \n[.ps] .. .do-func-decl .nop \*[Fd-font]\$*

.\} .tm Usage: .Fd function_declaration -- Fd is not callable (#\n[.c]) .reset-args .\} .. .parse-args \$@ .\} .tm Usage: .In include_file ... (#\n[.c]) .\} .return . .nr arg-ptr +1 .print-prefixes .nr curr-font \n[.f] .nr curr-size \n[.ps] . .do-func-decl .nop \*[Fd-font]#include <\*[arg\n[arg-ptr]]>

.nr arg-ptr +1 .print-recursive .reset-args .\} .as arg\n[arg-ptr] \f[\n[curr-font]]\s[\n[curr-size]u]> .print-recursive .\}\} .as arg\n[arg-ptr] \f[\n[curr-font]]\s[\n[curr-size]u]> .print-recursive .\}\} .tm Usage: .In include_file ... (#\n[.c]) .reset-args .\} .. .als Fr generic-macro .als Fr-font Ar-font .als Ic generic-macro .als Li generic-macro .als Ms generic-macro .als Ms-font Sy-font .parse-args \$@ .tm Usage: .Nm name ... (#\n[.c]) .parse-args \*[command-name] .\}\} .return .nr arg-ptr +1 .print-prefixes .tm Usage: .Nm name ... (#\n[.c]) .reset-args .\} .nop \*[Nm-font]\*[command-name]\f[]\s[0]\c .print-and-reset .\}\} .nr curr-font \n[.f] .nr curr-size \n[.ps] .tm Usage: .Nm name ... (#\n[.c]) .nr arg-ptr -1 .nr type\n[arg-ptr] 2 .nr num-args (\n[arg-limit] - \n[arg-ptr]) .nr arg-limit \n[arg-ptr] .parse-space-vector .\}\}

.get-width "\*[arg\n[arg-ptr]]" .nr indent-synopsis ((\n[width]u + 1u) * \n[fixed-width]u) .\} .nr indent-synopsis-active 1 .\} .\}\} .nop \*[Nm-font]\c .\} .print-recursive .\} .. .parse-args \$@ .nop \*[Pa-font]~\f[]\s[0] .\}\} .return .nr arg-ptr +1 .print-prefixes .nr curr-font \n[.f] .nr curr-size \n[.ps] .nop \*[Pa-font]\c .nr arg-ptr -1 .nr type\n[arg-ptr] 2 .nr num-args (\n[arg-limit] - \n[arg-ptr]) .nr arg-limit \n[arg-ptr] .parse-space-vector .\} .print-recursive .\} .nop \*[Pa-font]~\f[]\s[0]\c .print-and-reset .\} .. .als Sy generic-macro .als Me generic-macro .parse-args \$@ .\} .tm Usage: .Tn trade_name ... (#\n[.c]) .\} .return .nr arg-ptr +1 .nr curr-font \n[.f] .nr curr-size \n[.ps] .nop \)\*[Tn-font-size]\c .nop \)\*[Tn-font-shape]\c .print-recursive .\} .do-references .\} .tm Usage: .Tn trade_name ... (#\n[.c]) .reset-args .\} .. .als Va generic-macro .als No generic-macro .enclose-string \$@ .. .enclose-string \$@ .. .enclose-string \$@ .. .enclose-string \$@ .. .enclose-string \$@ .. .shift 2 .enclose-string \$@ .. .enclose-string \$@ .. .enclose-string \$@ .. .enclose-string \$@ .. .parse-args \$@ .\} .\}\} .return .nr arg-ptr +1 .nr arg-ptr +1 .nr arg-ptr +1 .do-\n[type\n[arg-ptr]] .print-and-reset .. .nr have-slot 0 .set-hard-space .parse-args \$@ .nop \)\*[quote-left]\*[quote-right] .\}\} .return .nr curr-font \n[.f] .nr curr-size \n[.ps] .nr arg-ptr +1 .print-prefixes .nop \)\*[quote-left]\)\c .nop \)\*[quote-right]\)\c .print-and-reset .\} .nr reg-des (\n[arg-limit] - 1) .while (\n[type\n[reg-des]] == 3) \ .nr reg-des -1 .nr reg-des +1 .\} .nr reg-des \n[arg-limit] .while (\n[reg-des] >= \n[arg-ptr]) \{\

eak

eak .nr reg-des -1 .\} .append-arg "\)\*[quote-right]\)" 3 .nr reg-des +1 .nr reg-des1 \n[arg-limit] .nr reg-des2 (\n[arg-limit] + 1) .while (\n[reg-des1] >= \n[reg-des]) \{\ .rn arg\n[reg-des1] arg\n[reg-des2] .rnn type\n[reg-des1] type\n[reg-des2] .rn space\n[reg-des1] space\n[reg-des2] .nr reg-des1 -1 .nr reg-des2 -1 .\} .nr arg-limit +1 .nr type\n[reg-des] 3 .nr num-args (\n[arg-limit] - \n[reg-des] + 1) .nr arg-limit (\n[reg-des] - 1) .parse-space-vector .nr have-slot 1 .\}\}\} .do-\n[type\n[arg-ptr]] .\} .set-soft-space .. .als En enclose-string .enclose-open \$@ .. .enclose-close \$@ .. .enclose-open \$@ .. .enclose-close \$@ .. .enclose-open \$@ .. .enclose-close \$@ .. .enclose-open \$@ .. .enclose-close \$@ .. .shift .enclose-open \$@ .. .shift .enclose-close \$@ .. .enclose-open \$@ .. .enclose-close \$@ .. .enclose-open \$@ .. .enclose-close \$@ .. .enclose-open \$@ .. .enclose-close \$@ .. .enclose-open \$@ .. .enclose-close \$@ .. .enclose-open \$@ .. .enclose-close \$@ .. .nr nesting-level 0 .nr in-list 0 .parse-args \$@ .nr arg-ptr +1 .print-prefixes .nr arg-ptr -1 .nop \)\*[quote-left]\)\c .box enclosure-box\n[nesting-level] .ev enclosure-env\n[nesting-level] .evc 0

.nop \c
.nr nesting-level +1
.nr arg-ptr +1
.print-recursive
.reset-args
.\}
..
.nr nesting-level -1

.ev .box .chop enclosure-box\n[nesting-level] .unformat enclosure-box\n[nesting-level] .nop \*[enclosure-box\n[nesting-level]]\c .nop \)\*[quote-right]\)\c .parse-args \$@ .print-and-reset .\} .nop \)\*[space\n[arg-ptr]]\c .nr arg-ptr +1 .print-recursive .\} .print-and-reset .\} .\*[list-type-stack\n[list-depth]] .. .nr arg-ptr +1 .nop \)\*[arg\n[arg-ptr]]\c .\} .tm mdoc warning: .Pf: trailing prefix (#\n[.c]) .\} .nop \)\$1\)\c .shift .parse-args \$@ .tm mdoc warning: .Pf: missing arguments (#\n[.c]) .nop \) .\}\} .nr arg-ptr +1 .print-and-reset .do-\n[type\n[arg-ptr]] .\} .. .parse-args \$@ .\} .tm Usage: .Ns must be called with arguments (#\n[.c]) .\} .nr arg-ptr +1 .print-recursive .reset-args .\} .. .tm Usage: `Ap' cannot be first macro on a line (no `.Ap') (#\n[.c]) .nop \)'\)\c .nr arg-ptr +1 .print-recursive .reset-args .\} .. .. .. .nr space-mode 1 .nr have-space 0 .nr reg-Sm 0 .nr reg-Sm 1 .parse-args \$@ .\} .nr space-mode 0 .nr space-mode 1 .\}\} .return .nr arg-ptr +1 .nr space-mode 1 .\} .nr space-mode 0 .\} .nr arg-ptr -1 .nr space-mode 0 .nr space-mode 1 .\}\} .nr num-args (\n[arg-limit] - \n[arg-ptr]) .nr arg-limit \n[arg-ptr] .parse-space-vector .nop \) .\} .nr reg-Sm (\n[arg-ptr] + 1) .while (\n[reg-Sm] <= \n[arg-limit]) \{\ .nr reg-Sm +1 .\} .\} .print-and-reset .reset-args .\} .nr arg-ptr +1 .print-recursive .\} .. .nr arg-type 0 .nr arg-type 2 .nr arg-type \n[punct\$1] .\} .nr arg-type 1 .\} .. .nr arg-type 2 .length width "\*[arg\$1] .nr arg-type \n[punct\*[arg\$1]] .\} .nr arg-type 1 .\} .. .nr reg-dssfm1 \n[\*[arg\n[arg-limit]]] .nr reg-dssfm (\n[arg-limit] - 1) .\} .\} .nr reg-dssfm (\n[arg-limit] - 1) .\} .\} .\} .. .. .nr reg-dssfps (\n[arg-limit] - 1) .\} .. .. .\*[arg\n[arg-ptr]] .. .als do-2 print-recursive .als do-3 print-recursive .als do-4 print-recursive .nr fontmode-depth 0 .nr fontmode-font-stack0 0 .nr fontmode-size-stack0 0 .nr fontmode-depth +1 .nr fontmode-font-stack\n[fontmode-depth] \n[.f] .nr fontmode-size-stack\n[fontmode-depth] \n[.ps] .nop \*[Em-font]\c .nop \*[Li-font]\c .nop \*[Sy-font]\c .nop \*[Em-font]\c .nop \*[Li-font]\c .nop \*[Sy-font]\c .tmc mdoc warning: Unknown keyword `\$1' in .Bf macro .tm1 " (#\n[.c]) .\}\}\}\}\}\}\} .tm Usage: .Bf [Em | -emphasis | Li | -literal | Sy | -symbolic] (#\n[.c]) .. .nop \)\f[\n[fontmode-font-stack\n[fontmode-depth]]]\c .nop \)\s[\n[fontmode-size-stack\n[fontmode-depth]]u]\c .nr fontmode-font-stack\n[fontmode-depth] 0 .nr fontmode-size-stack\n[fontmode-depth] 0 .nr fontmode-depth -1 .\} .tm mdoc warning: Extraneous .Ef (#\n[.c]) .. .nr keep-type 0 .tm .Bk: nesting keeps not implemented yet. (#\n[.c]) .nr keep-type 2 .tm .Bk -lines: Not implemented yet. (#\n[.c]) .\} .nr keep-type 1 .set-hard-space .\} .nr keep-type 1 .set-hard-space .\} .tm mdoc warning: Unknown keyword `\$1' in .Bk macro (#\n[.c]) .nr keep-type 3 .\}\}\} \#. nr nesting-level +1 .. \#. nr nesting-level -1 .tm Usage: .Ek (does not take arguments) (#\n[.c]) .tm mdoc warning: .Ek found without .Bk before (#\n[.c]) .set-soft-space .tm .Bk -lines: Not implemented yet. (#\n[.c]) .\}\} .nr keep-type 0 \#. if !"\*[out-string]"" \ \#. print-out-string .. .nr display-depth 0 .nr is-compact 0 .nr display-indent-stack0 0 .nr display-ad-stack0 0 .nr display-fi-stack0 0 .nr display-ft-stack0 0 .nr display-ps-stack0 0 .tm1 "Usage: .Bd {-literal | -filled | -ragged | -centered | -unfilled} .tm1 " [-offset [string]] [-compact] [-file name] (#\n[.c]) .return .\} .nr is-compact 0 .nr reg-Bd 1 .nr display-depth +1 .nr display-ad-stack\n[display-depth] \n[.j] .nr display-fi-stack\n[display-depth] \n[.u] .nr display-ft-stack\n[display-depth] \n[.f] .nr display-ps-stack\n[display-depth] \n[.ps] .nop \*[Li-font]\c ' ta T 9n .\} ' ta T 8n

.\}
.\}
.\} .\}
.\}
.tm1 "mdoc warning: Unknown keyword `\$1' (or missing display type)
.tm1 " in .Bd macro (#\n[.c])
.nr reg-Bd 0
.\}\}\}\}\}
.shift
.do-Bd-args \$@
.\}
.nr display-indent-stack\n[display-depth] 0
' in +\n[display-indent-stack\n[display-depth]]u
' sp \n[display-vertical]u
.\}
.so  \*[display-file]
.nr is-compact 0
..
.nr reg-ddBa 1
.nr reg-ddBa 2
.nr display-indent-stack\n[display-depth] 0
.nr display-indent-stack\n[display-depth] (\n[.l]u / 3u)
.nr display-indent-stack\n[display-depth] ((\n[.l]u - \n[.i]u) / 4u)
.nr display-indent-stack\n[display-depth] \n[display-indent]u
.nr display-indent-stack\n[display-depth] (\n[display-indent]u + \n[display-indent]u)
.nr reg-ddBa 1
.\}\}\}\}
.nr reg-ddBa 2
.nr reg-ddBa1 0
.nr reg-ddBa2 \n[.warn]
.warn (\n[.warn] - (\n[.warn] / 32 % 2 * 32))
.substring str-ddBa 0 -2
.nr reg-ddBa3 (;(\$2))
.nr reg-ddBa4 (\*[str-ddBa])
.nr reg-ddBa1 1
.\}
.warn \n[reg-ddBa2]
.\}
.nr display-indent-stack\n[display-depth] \$2
.get-width "\$2"
.get-arg-type "\$2"
.nr display-indent-stack\n[display-depth] \n[\$2]
.nr display-indent-stack\n[display-depth] (\n[width]u * \n[fixed-width]u)
.\}
.nr display-indent-stack\n[display-depth] (\n[width]u * \n[fixed-width]u)
.\}\}
.\}
.nr is-compact 1
.nr reg-ddBa 2
.\}
.tm mdoc warning: .Bd `-file' keyword requires argument (#\n[.c])
.\}
.tm mdoc warning: Unknown keyword `\$1' in .Bd macro (#\n[.c])
.\}\}
.shift \n[reg-ddBa]
.do-Bd-args \$@
.\}
..

.tm mdoc warning: Extraneous .Ed (#\n[.c]) .nr display-depth 1 .\} .\}

.nr display-indent-stack\n[display-depth] 0
.nr display-depth -1
..
.nr list-indent-stack1 0
.nr list-have-indent-stack1 0
l-usage .return
.\}
.nr list-depth +1
.nr arg-ptr 1
.nr list-indent-stack\n[list-depth] 6n
.nr list-have-indent-stack\n[list-depth] 1
.\}
.nr list-have-indent-stack\n[list-depth] 1
.\}
.nr list-have-indent-stack\n[list-depth] 1
.\}
.nr list-indent-stack\n[list-depth] 3n
.nr list-have-indent-stack\n[list-depth] 1
.\}
.nr list-indent-stack\n[list-depth] 2n
.nr list-have-indent-stack\n[list-depth] 1
.\}
.nr list-indent-stack\n[list-depth] 2n
.nr list-have-indent-stack\n[list-depth] 1
.\}
.nr list-indent-stack\n[list-depth] 2n
.nr list-have-indent-stack\n[list-depth] 1
.\}
.nr list-have-indent-stack\n[list-depth] 1
.\}
.\}
.nr list-have-indent-stack\n[list-depth] 1
.\}
.linetabs 1
.\}
.tm1 "mdoc warning: Unknown list type `\$1' (or missing list type)
.tm1 " in .Bl macro
.tm
.nr arg-ptr 0
.\}\}\}\}\}\}\}\}\}\}\}
l-usage .reset-args
.nr list-depth -1
.return
.\}
.shift
.nr reg-Bl 1
.while (\n[reg-Bl] <= \n[.$]) \{\
.nr type\n[reg-Bl] 0
.nr reg-Bl +1
.\}
.nr arg-limit \n[.$]
.nr arg-ptr 0
.do-Bl-args
.set-column-tab \n[num-columns]
' in -\n[column-indent-width]u
.nr num-columns 0
.\}\}
.reset-args
..
.tm1 "Usage: .Bl {-hang | -ohang | -tag | -diag | -inset}
.tm1 " [-width <string>]
.tm1 " [-offset <string>] [-compact]
.tm1 " .Bl -column [-offset <string>] <string1> <string2> ...
.tm1 " .Bl {-item | -enum [-nested] | -bullet | -hyphen | -dash}
.tm1 " [-offset <string>] [-compact] (#\n[.c])
..
.nr arg-ptr +1
.return
.nr reg-dBla (\n[arg-ptr] + 1)
.nr reg-dBla 1
.nr compact-list-stack\n[list-depth] 1
.nr reg-dBla1 (\n[list-depth] - 1)
.as tag-prefix-stack\n[list-depth] \n[enum-list-count-stack\n[reg-dBla1]].
.length reg-dBla1 "\*[tag-prefix-stack\n[list-depth]]
.nr list-indent-stack\n[list-depth] +\n[reg-dBla1]n
.\}
.tm mdoc warning: `-nested' allowed with nested .Bl macros only (#\n[.c])
.\}
.nr arg-ptr +1
.substring str-dBla 0 0
.substring str-dBla 1
rst-parameter \*[str-dBla] .get-width "\*[str-dfp] .get-arg-type "\*[str-dfp] .nr reg-dBla1 1 .nr reg-dBla1 0 .\} .nr reg-dBla1 0 .save-global-vars .reset-args .box box-dBla .ev env-dBla .evc 0
.nop \*[str-dBla]

.ev .box .restore-global-vars .get-width \h'\n[dl]u' .nr list-indent-stack\n[list-depth] (\n[width]u * \n[fixed-width]u) .\} .nr reg-dBla1 0 .nr reg-dBla2 \n[.warn] .warn (\n[.warn] - (\n[.warn] / 32 % 2 * 32)) .substring str-dBla1 0 -2 .nr reg-dBla3 (;(\*[str-dBla])) .nr reg-dBla4 (\*[str-dBla1]) .nr reg-dBla1 1 .\} .warn \n[reg-dBla2] .\} .nr list-indent-stack\n[list-depth] (\*[str-dBla]) .get-arg-width \n[arg-ptr] .get-arg-type \*[str-dBla] .nr list-indent-stack\n[list-depth] \n[\*[str-dBla]] .nr list-indent-stack\n[list-depth] (\n[width]u * \n[fixed-width]u) .\} .nr list-indent-stack\n[list-depth] (\n[width]u * \n[fixed-width]u) .\}\}\} .nr arg-ptr +1 .nr list-offset-stack\n[list-depth] \n[display-indent]u .nr reg-dBla1 0 .nr reg-dBla2 \n[.warn] .warn (\n[.warn] - (\n[.warn] / 32 % 2 * 32)) .substring str-dBla1 0 -2 .nr reg-dBla3 (;(\*[str-dBla])) .nr reg-dBla4 (\*[str-dBla1]) .nr reg-dBla1 1 .\} .warn \n[reg-dBla2] .\} .nr list-offset-stack\n[list-depth] \*[str-dBla] .get-arg-width \n[arg-ptr] .get-arg-type \*[str-dBla] .nr list-offset-stack\n[list-depth] \n[\*[str-dBla]] .nr list-offset-stack\n[list-depth] (\n[width]u * \n[fixed-width]u) .\} .nr list-offset-stack\n[list-depth] (\n[width]u * \n[fixed-width]u) .\}\}\} .nr reg-dBla 0 .\}\}\} .nr num-columns +1 .substring str-dBla 0 0 .substring str-dBla 1

rst-parameter \*[str-dBla] .get-width "\*[str-dfp] .get-arg-type "\*[str-dfp] .nr reg-dBla1 1 .nr reg-dBla1 0 .\} .nr reg-dBla1 0 .save-global-vars .reset-args .box box-dBla .ev env-dBla .evc 0
.nop \*[str-dBla]

.ev .box .restore-global-vars .\} .\} .tmc mdoc warning: Unknown keyword `\*[arg\n[arg-ptr]]' .tm1 " in .Bl macro (#\n[.c]) .\}\} .do-Bl-args .. .nr arg-limit-saved \n[arg-limit] .nr num-args-saved \n[num-args] .nr arg-ptr-saved \n[arg-ptr] .nr reg-dsgv 1 .while (\n[reg-dsgv] <= \n[arg-limit]) \{\ .nr type\n[reg-dsgv]-saved \n[type\n[reg-dsgv]] .nr reg-dsgv +1 .\} .nr curr-font-saved \n[curr-font] .nr curr-size-saved \n[curr-size] .nr in-synopsis-section-saved \n[in-synopsis-section] .nr indent-synopsis-saved \n[indent-synopsis] .nr indent-synopsis-active-saved \n[indent-synopsis-active] .nr have-decl-saved \n[have-decl] .nr have-var-saved \n[have-var] .nr nesting-level-saved \n[nesting-level] .nr in-list-saved \n[in-list] .nr space-mode-saved \n[space-mode] .nr have-space-saved \n[have-space] .nr have-slot-saved \n[have-slot] .nr keep-type-saved \n[keep-type] .nr display-depth-saved \n[display-depth] .nr is-compact-saved \n[is-compact] .nr reg-dsgv 0 .while (\n[reg-dsgv] <= \n[display-depth]) \{\ .nr display-indent-stack\n[reg-dsgv]-saved \n[display-indent-stack\n[reg-dsgv]] .nr display-ad-stack\n[reg-dsgv]-saved \n[display-ad-stack\n[reg-dsgv]] .nr display-fi-stack\n[reg-dsgv]-saved \n[display-fi-stack\n[reg-dsgv]] .nr display-ft-stack\n[reg-dsgv]-saved \n[display-ft-stack\n[reg-dsgv]] .nr display-ps-stack\n[reg-dsgv]-saved \n[display-ps-stack\n[reg-dsgv]] .nr reg-dsgv +1 .\} .nr fontmode-depth-saved \n[fontmode-depth] .nr reg-dsgv 1 .while (\n[reg-dsgv] <= \n[fontmode-depth]) \{\ .nr fontmode-font-stack\n[reg-dsgv]-saved \n[fontmode-font-stack\n[reg-dsgv]] .nr fontmode-size-stack\n[reg-dsgv]-saved \n[fontmode-size-stack\n[reg-dsgv]] .nr reg-dsgv +1 .\} .nr list-depth-saved \n[list-depth] .nr reg-dsgv 1 .while (\n[reg-dsgv] <= \n[list-depth]) \{\ .nr list-have-indent-stack\n[reg-dsgv]-saved \n[list-have-indent-stack\n[reg-dsgv]] .nr list-indent-stack\n[reg-dsgv]-saved \n[list-indent-stack\n[reg-dsgv]] .nr compact-list-stack\n[reg-dsgv]-saved \n[compact-list-stack\n[reg-dsgv]] .nr list-offset-stack\n[reg-dsgv]-saved \n[list-offset-stack\n[reg-dsgv]] .nr enum-list-count-stack\n[reg-dsgv]-saved \n[enum-list-count-stack\n[reg-dsgv]] .nr reg-dsgv +1 .\} .nr curr-type-saved \n[curr-type] .nr diag-list-input-line-count-saved \n[diag-list-input-line-count] .nr num-columns-saved \n[num-columns] .nr column-indent-width-saved \n[column-indent-width] .nr is-func-saved \n[is-func] .nr have-old-func-saved \n[have-old-func] .nr func-arg-count-saved \n[func-arg-count] .nr num-func-args-saved \n[num-func-args] .nr func-args-processed-saved \n[func-args-processed] .nr have-func-saved \n[have-func] .nr is-reference-saved \n[is-reference] .nr reference-count-saved \n[reference-count] .nr author-count-saved \n[author-count] .nr reg-dsgv 0 .while (\n[reg-dsgv] <= \n[author-count]) \{\ .nr reg-dsgv +1 .\} .nr book-count-saved \n[book-count] .nr date-count-saved \n[date-count] .nr publisher-count-saved \n[publisher-count] .nr journal-count-saved \n[journal-count] .nr issue-count-saved \n[issue-count] .nr optional-count-saved \n[optional-count] .nr page-number-count-saved \n[page-number-count] .nr corporate-count-saved \n[corporate-count] .nr report-count-saved \n[report-count] .nr reference-title-count-saved \n[reference-title-count] .nr volume-count-saved \n[volume-count] .nr have-author-saved \n[have-author] .nr header-space-saved \n[header-space] .nr footer-space-saved \n[footer-space] .nr display-vertical-saved \n[display-vertical] .nr in-see-also-section-saved \n[in-see-also-section] .nr in-files-section-saved \n[in-files-section] .nr in-authors-section-saved \n[in-authors-section] .. .nr arg-limit \n[arg-limit-saved] .nr num-args \n[num-args-saved] .nr arg-ptr \n[arg-ptr-saved] .nr reg-drgv 1 .while (\n[reg-drgv] <= \n[arg-limit]) \{\ .nr type\n[reg-drgv] \n[type\n[reg-drgv]-saved] .nr reg-drgv +1 .\} .nr curr-font \n[curr-font-saved] .nr curr-size \n[curr-size-saved] .nr in-synopsis-section \n[in-synopsis-section-saved] .nr indent-synopsis \n[indent-synopsis-saved] .nr indent-synopsis-active \n[indent-synopsis-active-saved] .nr have-decl \n[have-decl-saved] .nr have-var \n[have-var-saved] .nr nesting-level \n[nesting-level-saved] .nr in-list \n[in-list-saved] .nr space-mode \n[space-mode-saved] .nr have-space \n[have-space-saved] .nr have-slot \n[have-slot-saved] .nr keep-type \n[keep-type-saved] .nr display-depth \n[display-depth-saved] .nr is-compact \n[is-compact-saved] .nr reg-drgv 0 .while (\n[reg-drgv] <= \n[display-depth]) \{\ .nr display-indent-stack\n[reg-drgv] \n[display-indent-stack\n[reg-drgv]-saved] .nr display-ad-stack\n[reg-drgv] \n[display-ad-stack\n[reg-drgv]-saved] .nr display-fi-stack\n[reg-drgv] \n[display-fi-stack\n[reg-drgv]-saved] .nr display-ft-stack\n[reg-drgv] \n[display-ft-stack\n[reg-drgv]-saved] .nr display-ps-stack\n[reg-drgv] \n[display-ps-stack\n[reg-drgv]-saved] .nr reg-drgv +1 .\} .nr fontmode-depth \n[fontmode-depth-saved] .nr reg-drgv 1 .while (\n[reg-drgv] <= \n[fontmode-depth]) \{\ .nr fontmode-font-stack\n[reg-drgv] \n[fontmode-font-stack\n[reg-drgv]]-saved .nr fontmode-size-stack\n[reg-drgv] \n[fontmode-size-stack\n[reg-drgv]]-saved .nr reg-drgv +1 .\} .nr list-depth \n[list-depth-saved] .nr reg-drgv 1 .while (\n[reg-drgv] <= \n[list-depth]) \{\ .nr list-have-indent-stack\n[reg-drgv] \n[list-have-indent-stack\n[reg-drgv]-saved] .nr list-indent-stack\n[reg-drgv] \n[list-indent-stack\n[reg-drgv]-saved] .nr compact-list-stack\n[reg-drgv] \n[compact-list-stack\n[reg-drgv]-saved] .nr list-offset-stack\n[reg-drgv] \n[list-offset-stack\n[reg-drgv]-saved] .nr enum-list-count-stack\n[reg-drgv] \n[enum-list-count-stack\n[reg-drgv]-saved] .nr reg-drgv +1 .\} .nr curr-type \n[curr-type-saved] .nr diag-list-input-line-count \n[diag-list-input-line-count-saved] .nr num-columns \n[num-columns-saved] .nr column-indent-width \n[column-indent-width-saved] .nr is-func \n[is-func-saved] .nr have-old-func \n[have-old-func-saved] .nr func-arg-count \n[func-arg-count-saved] .nr num-func-args \n[num-func-args-saved] .nr func-args-processed \n[func-args-processed-saved] .nr have-func \n[have-func-saved] .nr is-reference \n[is-reference-saved] .nr reference-count \n[reference-count-saved] .nr author-count \n[author-count-saved] .nr reg-drgv 0 .while (\n[reg-drgv] <= \n[author-count]) \{\ .nr reg-drgv +1 .\} .nr book-count \n[book-count-saved] .nr date-count \n[date-count-saved] .nr publisher-count \n[publisher-count-saved] .nr journal-count \n[journal-count-saved] .nr issue-count \n[issue-count-saved] .nr optional-count \n[optional-count-saved] .nr page-number-count \n[page-number-count-saved] .nr corporate-count \n[corporate-count-saved] .nr report-count \n[report-count-saved] .nr reference-title-count \n[reference-title-count-saved] .nr volume-count \n[volume-count-saved] .nr have-author \n[have-author-saved] .nr header-space \n[header-space-saved] .nr footer-space \n[footer-space-saved] .nr display-vertical \n[display-vertical-saved] .nr in-see-also-section \n[in-see-also-section-saved] .nr in-files-section \n[in-files-section-saved] .nr in-authors-section \n[in-authors-section-saved] .. .tm Usage: .El (does not take arguments) (#\n[.c]) .return .\} .end-list 0 .end-column-list .end-list 0 .end-list 0 .end-list 0 .end-list 1 .\}\}\}\}

.. .nr curr-type 0 .nr bullet-list-type 1 .nr column-list-type 0 .nr dash-list-type 1 .nr diag-list-type 0 .nr enum-list-type 1 .nr hang-list-type 2 .nr inset-list-type 2 .nr item-list-type 1 .nr ohang-list-type 2 .nr tag-list-type 2 .tm mdoc error: .It without preceding .Bl (#\n[.c]) .tmc "mdoc error: .It found in enclosing (e.g. .Ac ... .It ... .Ao) .tm1 " (#\n[.c]) .\}

.nr reg-It 1 .while (\n[reg-It] <= \n[.$]) \{\ .nr reg-It +1 .\} .nr num-args \n[.$] .nr arg-ptr 0 .\} .nr reg-It \n[\*[str-It]-type] .box item-box\n[list-depth] .ev item-env\n[list-depth] .evc 0

.\}
.tm1 "mdoc warning: .It macros in lists of type `\*[str-It]'
.tm1 " don't take arguments (#\n[.c])
.\}\}
.parse-arg-vector
.nr in-list 1
.nr arg-ptr 1
.nr curr-type \n[type1]
.\}
.\*[arg1]
.nr arg-ptr 1
.print-recursive
.\}\}\}
.tm1 "mdoc warning: .It macros in lists of type `\*[str-It]'
.tm1 " require arguments (#\n[.c])
.\}
.\}
.\*[str-It]
..

.ev .box .unformat item-box\n[list-depth] .set-vertical-and-indent 0

.item-box\n[list-depth] .nr in-list 0 .reset-args ..

.ev .box .unformat item-box\n[list-depth] .set-vertical-and-indent 1 .nr reg-dhl (\n[list-indent-stack\n[list-depth]]u + \n[digit-width]u) .item-box\n[list-depth] .chop item-box\n[list-depth] .nr reg-dhl1 \n[.k]u .nop \*[item-box\n[list-depth]]\c .nop \h'|(\n[reg-dhl1]u - \n[.k]u + \n[reg-dhl]u)'\c .nr have-space 1 .\} .nr in-list 0 .reset-args ..

.ev .box .unformat item-box\n[list-depth] .set-vertical-and-indent 0 .item-box\n[list-depth]

.nr in-list 0 .reset-args ..

.ev .box .set-vertical-and-indent 0

.reset-args .. .nr enum-list-count-stack1 0 .nr in-list 1 .nr enum-list-count-stack\n[list-depth] +1 \# XXX \#.ll \n[list-indent-stack\n[list-depth]]u \#.rj .nop \*[tag-prefix-stack\n[list-depth]]\c .nop \n[enum-list-count-stack\n[list-depth]].\& .do-list .. .nr in-list 1 .nop \)\*[Sy-font]\[bu]\f[] .do-list .. .nr in-list 1 .nop \)\*[Sy-font]-\f[] .do-list .. .als do-list hang-list .nr diag-list-input-line-count 0 .nr curr-font \n[.f] .nr curr-size \n[.ps] .paragraph

.\}

.nr diag-list-input-line-count \n[.c] .nop \*[Sy-font]\c .remaining-args .nop \f[\n[curr-font]]\s[\n[curr-size]u]\*[hard-space]\c .print-and-reset ..

.ev .box .unformat item-box\n[list-depth] .box box-dtl .ev env-dtl .evc 0

.item-box\n[list-depth]

.ev .box .nr list-have-indent-stack\n[list-depth] 1 .\} .get-tag-width .\} .set-vertical-and-indent 1 .nr reg-dtl (\n[list-indent-stack\n[list-depth]]u + \n[digit-width]u) .item-box\n[list-depth]

.vpt 0

.vpt 1 .nop \c .nr have-space 1 .\} .nr in-list 0 .reset-args .. .nr list-indent-stack\n[list-depth] \n[\*[curr-arg]] .\} .nr list-indent-stack\n[list-depth] \n[No] .\} .. .nr list-have-indent-stack\n[list-depth] 0 .\} .. .nr list-depth 0 .nr num-columns 0 .nr compact-list-stack1 0 .nr list-offset-stack1 0 ' in -(\n[list-indent-stack\n[list-depth]]u + \n[digit-width]u) ' in -\n[list-offset-stack\n[list-depth]]u .tm mdoc warning: extraneous .El call (#\n[.c]) .nr list-depth -1 .. .nr reg-dils (\n[list-depth] + 1) .nr list-have-indent-stack\n[reg-dils] 0 .nr list-indent-stack\n[reg-dils] 0 .nr list-offset-stack\n[reg-dils] 0 .nr compact-list-stack\n[reg-dils] 0 .nr enum-list-count-stack\n[reg-dils] 0 .. .nr list-have-indent-stack\n[list-depth] 0 .nr list-indent-stack\n[list-depth] 0 .nr list-offset-stack\n[list-depth] 0 .nr compact-list-stack\n[list-depth] 0 .nr enum-list-count-stack\n[list-depth] 0 .. .parse-args \$@ .\} .Xr-usage .\} .return .nr arg-ptr +1 .print-prefixes .nr curr-font \n[.f] .nr curr-size \n[.ps] .nr reg-Xr (\n[arg-ptr] + 1) .\} .\} .print-recursive .\} .Xr-usage .\} .Xr-usage .. .tm Usage: .Xr manpage_name [section#] ... (#\n[.c]) .reset-args .. .als Sx generic-macro .linetabs 0 ' in -(\n[list-offset-stack\n[list-depth]]u + \n[list-indent-stack\n[list-depth]]u)

.nr list-depth -1 .. .nr column-indent-width 0 .nr reg-dsct 1 .nr column-indent-width 0 .\}\} .while (\n[reg-dsct] <= \$1) \{\ .as str-dsct " +\w\*[arg\n[reg-dsct]]\*[str-dsct1]u .nr column-indent-width +\w\*[arg\n[reg-dsct]]\*[str-dsct1]u .nr reg-dsct +1 .\} ' in +\n[column-indent-width]u .. .parse-arg-vector .nr arg-ptr +1 .tm Usage: .It column_string [Ta [column_string ...] ] (#\n[.c]) .return .\} .nr reg-dcl (\n[arg-ptr] - 1) .\} .nr list-indent-stack\n[list-depth] \n[column-indent-width]u
' in +\n[column-indent-width]u .\} .do-\n[type\n[arg-ptr]] .. .nr arg-ptr +1 .nop \*[tab]\c .do-\n[type\n[arg-ptr]] .reset-args .\} .tm1 "Usage: Ta must follow column entry: e.g. .tm1 " .It column_string [Ta [column_string ...]] (#\n[.c]) .\} .. ' ta T .5i .tm Usage: .Dl not callable by other macros (#\n[.c]) .reset-args .\} .parse-args \$@ .nr arg-ptr 1 .nr curr-font \n[.f] .nr curr-size \n[.ps] .nop \*[Li-font]\c .print-recursive .\} .tm Usage: .Dl argument ... (#\n[.c]) .\} .. ' ta T .5i .tm Usage: .D1 not callable by other macros (#\n[.c]) .reset-args .\} .parse-args \$@ .nr arg-ptr 1 .print-recursive .\} .tm Usage: .D1 argument ... (#\n[.c]) .\} .. .parse-args \$@ .\} .tm Usage: .Vt variable_type ... (#\n[.c]) .\} .return .nr arg-ptr +1 .tm Usage: .Vt variable_type ... (#\n[.c]) .reset-args .return .\} .paragraph .nr have-decl 0 .\}

.paragraph .\} .nr have-var 1 .\} .nr curr-font \n[.f] .nr curr-size \n[.ps] .nop \*[Ft-font]\c .print-recursive .nop \*[soft-space]\c

.\} .. .nr is-func 0 .parse-args \$@ .\} .tm Usage: .Ft function_type ... (#\n[.c]) .\} .return .nr arg-ptr +1 .tm Usage: .Ft function_type ... (#\n[.c]) .reset-args .return .\} .paragraph .nr have-decl 0 .nr have-var 0 .\} .paragraph .nr have-var 0 .\} .nr is-func 1 .\} .nr curr-font \n[.f] .nr curr-size \n[.ps] .nop \*[Ft-font]\c .print-recursive .. .nr have-old-func 0 .nr have-old-func 1 .paragraph .nr have-decl 0 .nr have-var 0 .\} .paragraph .nr have-var 0 .\} .nr is-func 1 .\} .nop \*[Ft-font]\$*\c .nop \f[]\c .. .parse-args \$@ .\} .tm Usage: .Fa function_arguments ... (#\n[.c]) .\} .do-func .nr arg-ptr +1 .nr curr-font \n[.f] .nr curr-size \n[.ps] .nop \*[Fa-font]\c .print-recursive

.\}\} .. .nr func-arg-count 0 .nr num-func-args 0 .nr func-args-processed 0 .reset-args .return .\} .nr arg-ptr +1 .nr num-func-args 0 .nr func-args-processed 0 .build-func-string \*[arg\n[arg-ptr]] .nop \f[\n[curr-font]]\s[\n[curr-size]u]\|,\)\c .nop \)\*[space\n[arg-ptr]]\*[Fa-font]\c .nop \)\*[arg\n[arg-ptr]]\f[]\s[0]\c .\} .nop \|\*[Fa-font]\*[arg\n[arg-ptr]]\c .nop \f[]\s[0]\c .\} .nr func-arg-count +1 .do-func .. .nr have-func 0 .parse-args \$@ .\} .tm Usage: .Fn function_name [function_arg] ... (#\n[.c]) .\} .return

.nr have-var 0 .nr have-decl 0 .nr is-func 0 .\} .paragraph .nr have-var 0 .nr have-decl 0 .\}\} .paragraph .nr have-var 0 .\} .paragraph .nr have-decl 0 .\} .nr have-func 1 .nr is-func 0

.nr indent-synopsis (8u * \n[fixed-width]u) .\} .nr arg-ptr +1 .print-prefixes .tm Usage: .Fn function_name [function_arg] ... (#\n[.c]) .reset-args .return .\} .nr curr-font \n[.f] .nr curr-size \n[.ps] .nop \*[Fn-font]\*[arg\n[arg-ptr]]\c .nop \f[]\s[0]\*[lp]\)\c .nr arg-ptr +1 .nop \*[Fa-font]\c .do-func-args .nop \f[\n[curr-font]]\s[\n[curr-size]u]\c .\}\} .nop \)\*[rp]\)\c .nop \);\)\c .nr arg-ptr -1 .nop \)\*[space\n[arg-ptr]]\c .nr arg-ptr +1 .print-recursive .\} .print-and-reset .. .nr num-func-args 0 .nr func-args-processed 0 .build-func-string \*[arg\n[arg-ptr]] .\} .nop \)\*[arg\n[arg-ptr]]\c .nr arg-ptr +1 .nr reg-ddfa (\n[arg-ptr] - 1) .nop \|\f[\n[curr-font]]\s[\n[curr-size]u],\)\c .nop \)\*[space\n[reg-ddfa]]\f[]\s[0]\|\c .do-func-args .\}\} .. .nr saved-nesting-level 0 .nr in-func-enclosure 0 .tm mdoc error: .Fo/.Fc can't be nested (#\n[.c]) .return .\} .nr saved-nesting-level \n[nesting-level] .nr in-func-enclosure 1 .parse-args \$@ .\} .tm Usage: .Fo function_name (#\n[.c]) .\}

.nr have-var 0 .nr have-decl 0 .nr is-func 0 .\} .paragraph .nr have-var 0 .nr have-decl 0 .\}\} .paragraph .nr have-var 0 .\} .paragraph .nr have-decl 0 .\} .nr have-func 1 .nr is-func 0

.nr indent-synopsis (8u * \n[fixed-width]u) .\} .box func-box .ev func-env .evc 0

.nr arg-ptr +1
.print-prefixes
.nr func-arg-count 1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.nop \*[Fn-font]\*[arg\n[arg-ptr]]\c
.nop \f[]\s[0]\*[lp]\)\c
.reset-args
.\}
..
.tm mdoc warning: Extraneous .Fc (#\n[.c])
.return
.\}
.parse-args \) \$@
.\}
.tm mdoc warning: Unbalanced enclosure commands within .Fo/.Fc
.nr func-arg-count 0
.nr in-func-enclosure 0
.nop \|\*[rp];\)
.nop \|\*[rp]\)

.ev .box .chop func-box .unformat func-box .\} .nop \*[func-box]\c .nr arg-ptr +1 .nr curr-font \n[.f] .nr curr-size \n[.ps] .print-recursive .\} .print-and-reset .. .nr num-func-args \n[.$] .nr func-args-processed 0 .\} .nr func-args-processed +1 .as func-arg "\$1 .as func-arg "\*[hard-space] .shift .build-func-string \$@ .\} .. .nr is-reference 0 .nr reference-count 0 .tm Usage: .Rs (does not take arguments) (#\n[.c]) .nr is-reference 1 .reset-reference .paragraph .nr reference-count 0 .\} .. .tm Usage: .Re (does not take arguments) (#\n[.c]) .print-reference .reset-reference .nr is-reference 0 .\} .. .while (\n[author-count]) \{\ .nr author-count -1 .\} .nr journal-count 0 .nr issue-count 0 .nr optional-count 0 .nr corporate-count 0 .nr report-count 0 .nr reference-title-count 0 .nr volume-count 0 .nr date-count 0 .nr page-number-count 0 .nr book-count 0 .. .nr reference-count -1 .nop \), .nop \). .. .print-reference-authors .nr reference-count -\n[author-count] .\} .unformat reference-title-name .chop reference-title-name .unformat reference-title-name-for-book .chop reference-title-name-for-book .nop \)\*[q]\)\*[reference-title-name-for-book]\)\*[q]\c

nish-reference .\} .nop \*[reference-title-name]\c nish-reference .\}\} .unformat book-name .chop book-name .nop \*[book-name]\c nish-reference .\} .unformat publisher-name .chop publisher-name .nop \*[publisher-name]\c nish-reference .\} .unformat journal-name .chop journal-name .nop \*[journal-name]\c nish-reference .\} .unformat report-name .chop report-name .nop \*[report-name]\c nish-reference .\} .unformat issue-name .chop issue-name .nop \*[issue-name]\c nish-reference .\} .unformat volume-name .chop volume-name .nop \*[volume-name]\c nish-reference .\} .unformat page-number-string .chop page-number-string .nop \*[page-number-string]\c nish-reference .\} .unformat corporate-name .chop corporate-name .nop \*[corporate-name]\c nish-reference .\} .unformat date .chop date .nop \*[date]\c nish-reference .\} .unformat optional-string .chop optional-string .nop \*[optional-string]\c nish-reference .\} .tm mdoc warning: unresolved reference problem .. .nr reg-dpra 1 .while (\n[reg-dpra] < \n[author-count]) \{\ .unformat author-name\n[reg-dpra] .chop author-name\n[reg-dpra] .nop \)\*[author-name\n[reg-dpra]], .nop \)\*[author-name\n[reg-dpra]] .nr reg-dpra +1 .\} .unformat author-name\n[reg-dpra] .chop author-name\n[reg-dpra] .nop \)\*[str-dpra] .nop \)\*[author-name\n[reg-dpra]], .. .nr author-count 0 .tm Usage: .%A author_name ... (#\n[.c]) .return .\} .nr author-count +1 .nr reference-count +1 .parse-args \$@ .nr arg-ptr +1 .nr curr-font \n[.f] .nr curr-size \n[.ps] .box author-name\n[author-count] .ev env-%A .evc 0
.do-references
..
.nr book-count 0
.tm Usage: .%B book_name ... (#\n[.c])
.return
.\}
.nr book-count +1
.nr reference-count +1
.\}
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa book-name
.ev env-%B
.evc 0
.nop \*[Em-font]\c
.do-references
.\}
.nop \*[Em-font]\c
.print-recursive
.\}
..
.nr date-count 0
.tm Usage: .%D date ... (#\n[.c])
.return
.\}
.nr date-count +1
.nr reference-count +1
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa date
.ev env-%D
.evc 0
.do-references
..
.nr publisher-count 0
.tm Usage: .%I issuer/publisher_name ... (#\n[.c])
.return
.\}
.nr publisher-count +1
.nr reference-count +1
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa publisher-name
.ev env-%I
.evc 0
.nop \*[Em-font]\c
.do-references
..
.nr journal-count 0
.tm Usage: .%J journal_name ... (#\n[.c])
.return
.\}
.nr journal-count +1
.nr reference-count +1
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa journal-name
.ev env-%J
.evc 0
.nop \*[Em-font]\c
.do-references
..
.nr issue-count 0
.tm Usage: .%N issue_number ... (#\n[.c])
.return
.\}
.nr issue-count +1
.nr reference-count +1
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa issue-name
.ev env-%N
.evc 0
.do-references
..
.nr optional-count 0
.tm Usage: .%O optional_information ... (#\n[.c])
.return
.\}
.nr optional-count +1
.nr reference-count +1
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa optional-string
.ev env-%O
.evc 0
.do-references
..
.nr page-number-count 0
.tm Usage: .%P page_number ... (#\n[.c])
.return
.\}
.nr page-number-count +1
.nr reference-count +1
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa page-number-string
.ev env-%P
.evc 0
.do-references
..
.nr corporate-count 0
.tm Usage: .%Q corporate_or_foreign_author ... (#\n[.c])
.return
.\}
.nr corporate-count +1
.nr reference-count +1
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa corporate-name
.ev env-%Q
.evc 0
.do-references
..
.nr report-count 0
.tm Usage: .%R reference_report ... (#\n[.c])
.return
.\}
.nr report-count +1
.nr reference-count +1
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa report-name
.ev env-%R
.evc 0
.do-references
..
.nr reference-title-count 0
.tm Usage: .%T reference_title ... (#\n[.c])
.return
.\}
.nr reference-title-count +1
.nr reference-count +1
.\}
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa reference-title-name-for-book
.ev env-%T
.evc 0
.nop \*[No-font]\c
.do-references
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa reference-title-name
.ev env-%T
.evc 0
.nop \*[Em-font]\c
.do-references
.\}
.nop \*[Em-font]\c
.print-recursive
.\}
..
.nr volume-count 0
.tm Usage: .%V volume ... (#\n[.c])
.return
.\}
.nr volume-count +1
.nr reference-count +1
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa volume-name
.ev env-%V
.evc 0
.do-references
..
.tm mdoc error: .\*[macro-name] found outside of .Rs ... .Re (#\n[.c])
.nr reg-ddr1 \n[type\n[arg-ptr]]
.append-arg \c 3
.\*[arg\n[arg-ptr]]
.\}
.nop \)\*[arg\n[arg-ptr]]\c

.ev .boxa .reset-args .\} .nr reg-ddr \n[arg-ptr] .nr arg-ptr +1 .nop \)\*[space\n[reg-ddr]]\c .do-references .\}\} .. .paragraph .nop File:

a \$1 d -literal .so \$1 .Ed .paragraph .\} sage: .Hf file (#\n[.c]) .. .nr have-author 0 .nr in-authors-section 0 .nr in-authors-section 1 .parse-args \$@ .\}\}\} .tm1 "Usage: .An {-nosplit | -split} .tm1 .An author_name ... (#\n[.c]) .\}\}

.nr have-author 1 .\} .nr arg-ptr +1 .nr curr-font \n[.f] .nr curr-size \n[.ps] .print-recursive .\} .tm Usage: .An author_name ... (#\n[.c]) .reset-args .\}\} .. .as str-Rv-std-suffix " otherwise the value\~-1 is returned and .as str-Rv-std-suffix " the global variable \*[Va-font]errno\f[] .as str-Rv-std-suffix " is set to indicate the error. .as str-Rv-stds-suffix " otherwise the value\~-1 is returned and .as str-Rv-stds-suffix " the global variable \*[Va-font]errno\f[] .as str-Rv-stds-suffix " is set to indicate the error. .as str-Rv-std0 " otherwise the value\~-1 is returned and .as str-Rv-std0 " the global variable \*[Va-font]errno\f[] .as str-Rv-std0 " is set to indicate the error. .tm Usage: .Rv not callable by other macros (#\n[.c]) .reset-args .return .\} .tm Usage: .Rv [-std] [<function> ...] (#\n[.c]) .return .\} .nr reg-Rv \*[section] .tm Usage: .Rv -std in sections 2 and 3 only (#\n[.c])

.shift .nop \)\*[str-Rv-stds-prefix] .nr reg-Rv 1 .while (\n[reg-Rv] < \n[.$]) \{\ .Fn \$\n[reg-Rv] , .Fn \$\n[reg-Rv] .nr reg-Rv +1 .\} .nop \)\*[str-Rv-stds-and] .Fn \$\n[.$] .nop \)\*[str-Rv-stds-suffix] .\} .nop \)\*[str-Rv-std-prefix] .Fn \$1 .nop \)\*[str-Rv-std-suffix] .\} .nop \)\*[str-Rv-std0] .\}\}\} .. .as str-Ex-std-suffix " and\~>0 if an error occurs. .als str-Ex-stds-and str-Rv-stds-and .as str-Ex-stds-suffix " and\~>0 if an error occurs. .tm Usage: .Ex not callable by other macros (#\n[.c]) .reset-args .return .\} .tm Usage: .Ex [-std] [<utility> ...] (#\n[.c]) .return .\} .nr reg-Ex \*[section] .tm Usage: .Ex -std in sections 1, 6 and 8 only (#\n[.c])

.shift .nop \)\*[str-Ex-stds-prefix] .nr reg-Ex 1 .while (\n[reg-Ex] < \n[.$]) \{\ .Nm \$\n[reg-Ex] , .Nm \$\n[reg-Ex] .nr reg-Ex +1 .\} .nop \)\*[str-Ex-stds-and] .Nm \$\n[.$] .nop \)\*[str-Ex-stds-suffix] .\} .nop \)\*[str-Ex-std-prefix] .Nm \$1 .nop \)\*[str-Ex-std-suffix] .\}\} ..

a \$@ .. .get-arg-type \$2 .Em \)\$2: .get-width "\$1" .shift 2 .as str-Lk " \$@ .\} .get-width "\$1" .\} .get-width "\$1" .nr reg-Lk 26 .nr reg-Lk 38 .D1 \*[str-Lk] .\*[str-Lk] .. .tmc mdoc error: .\$0 defunct .tmc , \*[\$0-usage] .tm1 " (#\n[.c]) .. .als Db defunct-macro .als Ds defunct-macro .als Or defunct-macro .als Sf defunct-macro .rn em e@ .tm1 "mdoc error: end-macro (.em) respecification is not allowed. (#\n[.c]) .tm1 " Should this have been `.Em ...'? .ab .. .tm mdoc warning: Empty input line #\n[.c] .. .blm empty-line .ec .mso mdoc.local