SILENT KILLERPanel

Current Path: > > usr > share > groff > current > tmac


Operation   : Linux premium88.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
Software     : Apache
Server IP    : 185.61.154.216 | Your IP: 216.73.216.44
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //usr/share/groff/current/tmac

NameTypeSizeLast ModifiedActions
mdoc Directory - -
an-ext.tmac File 3542 bytes October 13 2019 14:29:39.
an-old.tmac File 14301 bytes October 13 2019 14:29:39.
an.tmac File 53 bytes October 13 2019 14:29:39.
andoc.tmac File 1852 bytes October 13 2019 14:29:39.
composite.tmac File 555 bytes October 13 2019 14:29:39.
cp1047.tmac File 2197 bytes October 13 2019 14:29:39.
cs.tmac File 4569 bytes October 13 2019 14:29:39.
de.tmac File 4599 bytes October 13 2019 14:29:39.
den.tmac File 1016 bytes October 13 2019 14:29:39.
devtag.tmac File 3792 bytes October 13 2019 14:29:39.
doc-old.tmac File 36308 bytes October 13 2019 14:29:39.
doc.tmac File 74443 bytes October 13 2019 14:29:39.
eqnrc File 1427 bytes October 13 2019 14:29:39.
europs.tmac File 1689 bytes October 13 2019 14:29:39.
fallbacks.tmac File 1416 bytes October 13 2019 14:29:39.
fr.tmac File 5299 bytes October 13 2019 14:29:39.
html-end.tmac File 440 bytes October 13 2019 14:29:39.
html.tmac File 16423 bytes October 13 2019 14:29:39.
hyphen.cs File 21223 bytes October 13 2019 14:29:39.
hyphen.den File 38372 bytes October 13 2019 14:29:39.
hyphen.det File 37306 bytes October 13 2019 14:29:39.
hyphen.fr File 28007 bytes October 13 2019 14:29:39.
hyphen.sv File 34576 bytes October 13 2019 14:29:39.
hyphen.us File 27860 bytes October 13 2019 14:29:39.
hyphenex.cs File 291 bytes October 13 2019 14:29:39.
hyphenex.det File 120968 bytes October 13 2019 14:29:39.
hyphenex.us File 15678 bytes October 13 2019 14:29:39.
ja.tmac File 1696 bytes October 13 2019 14:29:39.
latin1.tmac File 2272 bytes October 13 2019 14:29:39.
latin2.tmac File 2362 bytes October 13 2019 14:29:39.
latin5.tmac File 2279 bytes October 13 2019 14:29:39.
latin9.tmac File 2272 bytes October 13 2019 14:29:39.
man.tmac File 58 bytes October 13 2019 14:29:39.
mandoc.tmac File 61 bytes October 13 2019 14:29:39.
mdoc.tmac File 57 bytes October 13 2019 14:29:39.
papersize.tmac File 4087 bytes October 13 2019 14:29:39.
pic.tmac File 139 bytes October 13 2019 14:29:39.
ps.tmac File 20577 bytes October 13 2019 14:29:39.
psatk.tmac File 1102 bytes October 13 2019 14:29:39.
psold.tmac File 1828 bytes October 13 2019 14:29:39.
pspic.tmac File 4751 bytes October 13 2019 14:29:39.
safer.tmac File 218 bytes October 13 2019 14:29:39.
sv.tmac File 4133 bytes October 13 2019 14:29:39.
trans.tmac File 4549 bytes October 13 2019 14:29:39.
troffrc File 1409 bytes October 13 2019 14:29:39.
troffrc-end File 1167 bytes October 13 2019 14:29:39.
tty-char.tmac File 5205 bytes October 13 2019 14:29:39.
tty.tmac File 1574 bytes October 13 2019 14:29:39.
unicode.tmac File 93 bytes October 13 2019 14:29:39.
www.tmac File 40761 bytes October 13 2019 14:29:39.

Reading File: //usr/share/groff/current/tmac/doc.tmac

.\" -*- nroff -*-
.\"
.\" 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. [Deleted.  See
.\"     ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change]
.\" 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.
.\"
.if !\n(.g \
.ab This version of mdoc can be run with GNU troff only!
.do if d Dd .nx
.cp 0
.if (\n[.x]\n[.y] < 118) \
.ab You need GNU troff version 1.18 or higher to run this version of mdoc!
.ie t \
.mso mdoc/doc-ditroff
.el \
.mso mdoc/doc-nroff
.mso mdoc/doc-common
.mso mdoc/doc-syms
.eo
.ds macro-name
.als arg0 macro-name
.nr arg-limit 0
.nr num-args 0
.nr arg-ptr 0
.ds arg1
.nr type1 0
.ds space1
.de parse-args
.if !\n[arg-limit] \
.set-spacing-1
.nr have-space 0
.if !\n[.$] \
.return
.nr arg-limit +1
.ie        "\$1"|" \
.ds arg\n[arg-limit] \f[R]|\f[]
.el \{ .ie "\$1"..." \
.ds arg\n[arg-limit] \|.\|.\|.
.el \
.ds arg\n[arg-limit] "\$1
.\}
.get-arg-type* \n[arg-limit]
.nr type\n[arg-limit] \n[arg-type]
.set-spacing-\n[arg-type]
.ie (\n[.$] == 1) \
.nr arg-ptr 0
.el \{\
.shift
.parse-args \$@
.\}
.nh
..
.de parse-arg-vector
.if !\n[arg-limit] \
.set-spacing-1
.nr arg-limit +1
.ie        "\*[arg\n[arg-limit]]"|" \
.ds arg\n[arg-limit] \f[R]|\f[]
.el \{ .if "\*[arg\n[arg-limit]]"..." \
.ds arg\n[arg-limit] \|.\|.\|.
.\}
.get-arg-type* \n[arg-limit]
.nr type\n[arg-limit] \n[arg-type]
.set-spacing-\n[arg-type]
.ie (\n[num-args] == 1) \{\
.nr arg-ptr 0
.nr num-args 0
.\}
.el \{\
.nr num-args -1
.parse-arg-vector
.\}
.nh
..
.de parse-space-vector
.nr arg-limit +1
.set-spacing-\n[type\n[arg-limit]]
.ie (\n[num-args] == 1) \
.nr num-args 0
.el \{\
.nr num-args -1
.parse-space-vector
.\}
..
.de remaining-args
.nr arg-ptr +1
.nop \)\*[arg\n[arg-ptr]]\c
.ie (\n[num-args] == 1) \{\
.nr arg-ptr 0
.nr num-args 0
.\}
.el \{\
.nop \)\*[space]\c
.nr num-args -1
.remaining-args
.\}
..
.de append-arg
.nr arg-limit +1
.ds arg\n[arg-limit] "\$1
.nr type\n[arg-limit] \$2
.set-spacing-\$2
..
.de print-and-reset
.if \n[space-mode] \
.nop \)
.reset-args
..
.de reset-args
.nr arg-limit 0
.nr arg-ptr 0
.nr have-slot 0
.hy \n[hyphen-flags]
..
.ec
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.eo
.de Fl
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.nop \*[Fl-font]\c
.if !\n[arg-limit] \{\
.ds macro-name Fl
.parse-args \$@
.if !\n[.$] \
.nop \|\-\|\f[]\s[0]
.\}
.if !\n[arg-limit] \
.return
.nr arg-ptr +1
.ie (\n[arg-limit] < \n[arg-ptr]) \{\
.nop \|\-\f[]\s[0]\c
.print-and-reset
.\}
.el \{\
.ie (\n[type\n[arg-ptr]] == 1) \{\
.nop \|\-\f[]\s[0]\c
.\*[arg\n[arg-ptr]]
.\}
.el \{\
.if (\n[type\n[arg-ptr]] == 3) \
.nop \|\-\|\c
.nr reg-Fl 1
.flag-recursion
.\}\}
..
.de flag-recursion
.nr reg-dfr1 \n[type\n[arg-ptr]]
.ds str-dfr "\*[arg\n[arg-ptr]]
.ie (\n[reg-dfr1] == 1) \{\
.nop \f[]\s[0]\c
.\*[str-dfr]
.\}
.el \{\
.nr reg-dfr \n[arg-ptr]
.ie (\n[reg-dfr1] == 2) \{\
.ie "\*[str-dfr]"\*[Ba]" \{\
.if \n[reg-Fl] \
.nop \|\-\*[space]\c
.nop \)\*[Ba]\c
.\}
.el \{\
.ie "\*[str-dfr]"\f[R]|\f[]" \{\
.if \n[reg-Fl] \
.nop \|\-\*[space]\c
.nop \f[R]|\f[]\c
.\}
.el \{\
.ie "\*[str-dfr]"-" \
.nop \|\-\^\-\|\c
.el \
.nop \|\%\-\*[str-dfr]\&\c
.\}\}\}
.el \{\
.nop \f[\n[curr-font]]\s[\n[curr-size]u]\c
.nop \)\*[str-dfr]\f[]\s[0]\c
.\}
.ie (\n[arg-limit] == \n[arg-ptr]) \{\
.if (\n[reg-dfr1] == 4) \
.nop \|\-\c
.nop \f[\n[curr-font]]\s[\n[curr-size]u]\c
.print-and-reset
.\}
.el \{\
.nr arg-ptr +1
.ie (\n[type\n[arg-ptr]] == 3) \{\
.ie (\n[type\n[reg-dfr]] == 4) \
.nop \|\-\c
.el \
.nop \)\*[space\n[reg-dfr]]\c
.\}
.el \
.nop \)\*[space\n[reg-dfr]]\c
.shift
.nr reg-Fl 0
.flag-recursion \$@
.\}\}
..
.de print-recursive
.nr reg-dpr1 \n[type\n[arg-ptr]]
.ds str-dpr "\*[arg\n[arg-ptr]]
.ie (\n[reg-dpr1] == 1) \{\
.nop \f[\n[curr-font]]\s[\n[curr-size]u]\c
.\*[str-dpr]
.\}
.el \{\
.nr reg-dpr \n[arg-ptr]
.ie (\n[reg-dpr1] == 2) \
.nop \%\*[str-dpr]\&\c
.el \{\
.nop \f[\n[curr-font]]\s[\n[curr-size]u]\c
.nop \)\*[str-dpr]\f[]\s[0]\c
.\}
.nr arg-ptr +1
.ie (\n[arg-limit] < \n[arg-ptr]) \{\
.nop \f[\n[curr-font]]\s[\n[curr-size]u]\c
.print-and-reset
.\}
.el \{\
.nop \)\*[space\n[reg-dpr]]\c
.print-recursive
.\}\}
..
.de print-prefixes
.while (\n[arg-limit] >= \n[arg-ptr]) \{\
.if !(\n[type\n[arg-ptr]] == 4) \
.break
.nop \f[\n[curr-font]]\s[\n[curr-size]u]\c
.nop \)\*[arg\n[arg-ptr]]\f[]\s[0]\c
.nr arg-ptr +1
.\}
..
.de generic-macro
.if !\n[arg-limit] \{\
.ie \n[.$] \{\
.ds macro-name \$0
.parse-args \$@
.\}
.el \
.tm Usage: .\$0 \*[\$0-usage] ... (#\n[.c])
.\}
.if !\n[arg-limit] \
.return
.nr arg-ptr +1
.ie (\n[arg-limit] >= \n[arg-ptr]) \{\
.if (\n[type\n[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
.\}
.el \{\
.tm Usage: .\$0 \*[\$0-usage] ... (#\n[.c])
.reset-args
.\}
..
.ds str-Ar-default "file\ .\|.\|.
.de Ar
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.nop \*[Ar-font]\c
.if !\n[arg-limit] \{\
.ds macro-name Ar
.parse-args \$@
.if !\n[.$] \
.nop \)\*[str-Ar-default]\&\f[]\s[0]
.\}
.if !\n[arg-limit] \
.return
.nr arg-ptr +1
.print-prefixes
.ie (\n[arg-limit] < \n[arg-ptr]) \{\
.nop \)\*[str-Ar-default]\&\f[]\s[0]\c
.print-and-reset
.\}
.el \{\
.if !(\n[type\n[arg-ptr]] == 2) \{\
.nr arg-ptr -1
.ds arg\n[arg-ptr] "\*[str-Ar-default]
.nr type\n[arg-ptr] 2
.ds space\n[arg-ptr] "\*[space]
.nr num-args (\n[arg-limit] - \n[arg-ptr])
.nr arg-limit \n[arg-ptr]
.parse-space-vector
.\}
.print-recursive
.\}
..
.als Ad generic-macro
.ds Ad-usage address
.nr indent-synopsis 0
.nr indent-synopsis-active 0
.de Cd
.if !\n[arg-limit] \{\
.ie \n[.$] \{\
.ds macro-name Cd
.parse-args \$@
.\}
.el \
.tm Usage: .Cd configuration_file_declaration ... (#\n[.c])
.\}
.if !\n[arg-limit] \
.return
.nr arg-ptr +1
.ie (\n[arg-limit] >= \n[arg-ptr]) \{\
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.ie \n[in-synopsis-section] \{\
.ie "\*[macro-name]"Cd" \{\
.br
.if !\n[indent-synopsis] \
.nr indent-synopsis \n[display-indent]u
.if !\n[indent-synopsis-active] \
.in +\n[indent-synopsis]u
.ti -\n[indent-synopsis]u
.nop \*[Nm-font]\c
.print-recursive
.if !\n[indent-synopsis-active] \
.in -\n[indent-synopsis]u
.\}
.el \{\
.nop \*[Nm-font]\c
.print-recursive
.\}\}
.el \{\
.nop \*[Nm-font]\c
.print-recursive
.\}\}
.el \{\
.tm Usage: .Cd configuration_file_declaration ... (#\n[.c])
.reset-args
.\}
..
.als Cm generic-macro
.ds Cm-usage interactive_command_modifier
.als Dv generic-macro
.ds Dv-usage defined_variable
.als Dv-font Er-font
.als Em generic-macro
.ds Em-usage text
.als Er generic-macro
.ds Er-usage text
.als Ev generic-macro
.ds Ev-usage text
.nr have-decl 0
.nr have-var 0
.de do-func-decl
.if \n[in-synopsis-section] \{\
.if \n[have-var] \{\
.paragraph
.nr have-var 0
.\}
.if \n[have-func] \{\
.ie \n[have-decl] \
.br
.el \
.paragraph
.\}
.nr have-decl 1
.\}
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
..
.de Fd
.ie ((\n[.$] >= 1) & (\n[arg-limit] == 0)) \{\
.do-func-decl
.nop \*[Fd-font]\$*
.br
.ft \n[curr-font]
.ps \n[curr-size]u
.\}
.el \{\
.tm Usage: .Fd function_declaration -- Fd is not callable (#\n[.c])
.reset-args
.\}
..
.de In
.if !\n[arg-limit] \{\
.ie \n[.$] \{\
.ds macro-name In
.parse-args \$@
.\}
.el \
.tm Usage: .In include_file ... (#\n[.c])
.\}
.if !\n[arg-limit] \
.return
.nr arg-ptr +1
.print-prefixes
.ie ((\n[arg-limit] >= \n[arg-ptr]) & (\n[type\n[arg-ptr]] == 2)) \{\
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.ie \n[in-synopsis-section] \{\
.ie "\*[macro-name]"In" \{\
.do-func-decl
.nop \*[Fd-font]#include <\*[arg\n[arg-ptr]]>
.ft \n[curr-font]
.ps \n[curr-size]u
.br
.nr arg-ptr +1
.ie (\n[arg-limit] >= \n[arg-ptr]) \
.print-recursive
.el \
.reset-args
.\}
.el \{\
.ds arg\n[arg-ptr] "<\*[Pa-font]\*[arg\n[arg-ptr]]
.as arg\n[arg-ptr] \f[\n[curr-font]]\s[\n[curr-size]u]>
.print-recursive
.\}\}
.el \{\
.ds arg\n[arg-ptr] "<\*[Pa-font]\*[arg\n[arg-ptr]]
.as arg\n[arg-ptr] \f[\n[curr-font]]\s[\n[curr-size]u]>
.print-recursive
.\}\}
.el \{\
.tm Usage: .In include_file ... (#\n[.c])
.reset-args
.\}
..
.als Fr generic-macro
.ds Fr-usage function_return_value
.als Fr-font Ar-font
.als Ic generic-macro
.ds Ic-usage interactive_command
.als Li generic-macro
.ds Li-usage argument
.als Ms generic-macro
.ds Ms-usage math_symbol
.als Ms-font Sy-font
.ds command-name
.de Nm
.if !\n[arg-limit] \{\
.ds macro-name Nm
.ie \n[.$] \
.parse-args \$@
.el \{\
.ie "\*[command-name]"" \
.tm Usage: .Nm name ... (#\n[.c])
.el \
.parse-args \*[command-name]
.\}\}
.if !\n[arg-limit] \
.return
.nr arg-ptr +1
.print-prefixes
.ie (\n[arg-limit] < \n[arg-ptr]) \{\
.ie "\*[command-name]"" \{\
.tm Usage: .Nm name ... (#\n[.c])
.reset-args
.\}
.el \{\
.nop \*[Nm-font]\*[command-name]\f[]\s[0]\c
.print-and-reset
.\}\}
.el \{\
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.ie !(\n[type\n[arg-ptr]] == 2) \{\
.ie "\*[command-name]"" \
.tm Usage: .Nm name ... (#\n[.c])
.el \{\
.nr arg-ptr -1
.ds arg\n[arg-ptr] "\*[Nm-font]\*[command-name]\f[]\s[0]
.nr type\n[arg-ptr] 2
.ds space\n[arg-ptr] "\*[space]
.nr num-args (\n[arg-limit] - \n[arg-ptr])
.nr arg-limit \n[arg-ptr]
.parse-space-vector
.\}\}
.el \{\
.if \n[in-synopsis-section] \{\
.if "\*[macro-name]"Nm" \{\
.br
.if !\n[indent-synopsis] \{\
.get-width "\*[arg\n[arg-ptr]]"
.nr indent-synopsis ((\n[width]u + 1u) * \n[fixed-width]u)
.\}
.if !\n[indent-synopsis-active] \{\
.in +\n[indent-synopsis]u
.nr indent-synopsis-active 1
.\}
.ti -\n[indent-synopsis]u
.\}\}
.if "\*[command-name]"" \
.ds command-name "\*[arg\n[arg-ptr]]
.nop \*[Nm-font]\c
.\}
.print-recursive
.\}
..
.de Pa
.if !\n[arg-limit] \{\
.ds macro-name Pa
.parse-args \$@
.if !\n[.$] \
.nop \*[Pa-font]~\f[]\s[0]
.\}
.if !\n[arg-limit] \
.return
.nr arg-ptr +1
.print-prefixes
.ie (\n[arg-limit] >= \n[arg-ptr]) \{\
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.nop \*[Pa-font]\c
.if !(\n[type\n[arg-ptr]] == 2) \{\
.nr arg-ptr -1
.ds arg\n[arg-ptr] ~
.nr type\n[arg-ptr] 2
.ds space\n[arg-ptr] "\*[space]
.nr num-args (\n[arg-limit] - \n[arg-ptr])
.nr arg-limit \n[arg-ptr]
.parse-space-vector
.\}
.print-recursive
.\}
.el \{\
.nop \*[Pa-font]~\f[]\s[0]\c
.print-and-reset
.\}
..
.als Sy generic-macro
.ds Sy-usage symbolic_text
.als Me generic-macro
.ds Me-usage menu_entry
.de Tn
.if !\n[arg-limit] \{\
.ie \n[.$] \{\
.ds macro-name Tn
.parse-args \$@
.\}
.el \
.tm Usage: .Tn trade_name ... (#\n[.c])
.\}
.if !\n[arg-limit] \
.return
.nr arg-ptr +1
.ie (\n[arg-limit] >= \n[arg-ptr]) \{\
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.nop \)\*[Tn-font-size]\c
.ie !\n[is-reference] \{\
.nop \)\*[Tn-font-shape]\c
.print-recursive
.\}
.el \
.do-references
.\}
.el \{\
.tm Usage: .Tn trade_name ... (#\n[.c])
.reset-args
.\}
..
.als Va generic-macro
.ds Va-usage variable_name
.als No generic-macro
.ds No-usage normal_text
.ds quote-left
.ds quote-right
.de Op
.if !\n[arg-limit] \
.ds macro-name Op
.ds quote-left "\*[left-bracket]
.ds quote-right "\*[right-bracket]
.enclose-string \$@
..
.de Aq
.if !\n[arg-limit] \
.ds macro-name Aq
.ie "\*[macro-name]"An" \{\
.ds quote-left <
.ds quote-right >
.\}
.el \{\
.ds quote-left \[la]
.ds quote-right \[ra]
.\}
.enclose-string \$@
..
.de Bq
.if !\n[arg-limit] \
.ds macro-name Bq
.ds quote-left "\*[left-bracket]
.ds quote-right "\*[right-bracket]
.enclose-string \$@
..
.de Brq
.if !\n[arg-limit] \
.ds macro-name Brq
.ds quote-left {
.ds quote-right }
.enclose-string \$@
..
.de Dq
.if !\n[arg-limit] \
.ds macro-name Dq
.ds quote-left "\*[Lq]
.ds quote-right "\*[Rq]
.enclose-string \$@
..
.de Eq
.if !\n[arg-limit] \
.ds macro-name Eq
.ds quote-left "\$1
.ds quote-right "\$2
.shift 2
.enclose-string \$@
..
.de Pq
.if !\n[arg-limit] \
.ds macro-name Pq
.ds quote-left "\*[left-parenthesis]
.ds quote-right "\*[right-parenthesis]
.enclose-string \$@
..
.de Qq
.if !\n[arg-limit] \
.ds macro-name Qq
.ds quote-left "\*[q]
.ds quote-right "\*[q]
.enclose-string \$@
..
.de Sq
.if !\n[arg-limit] \
.ds macro-name Sq
.ds quote-left "\*[left-singlequote]
.ds quote-right "\*[right-singlequote]
.enclose-string \$@
..
.de Es
.if !\n[arg-limit] \{\
.ie (\n[.$] > 2) \{\
.ds macro-name Es
.parse-args \$@
.\}
.el \{\
.ds quote-left "\$1
.ds quote-right "\$2
.\}\}
.if !\n[arg-limit] \
.return
.nr arg-ptr +1
.ds quote-left "\*[arg\n[arg-ptr]]
.nr arg-ptr +1
.ds quote-right "\*[arg\n[arg-ptr]]
.nr arg-ptr +1
.ie (\n[arg-limit] >= \n[arg-ptr]) \
.do-\n[type\n[arg-ptr]]
.el \
.print-and-reset
..
.nr have-slot 0
.de enclose-string
.if \n[in-synopsis-section] \
.set-hard-space
.if !\n[arg-limit] \{\
.ie \n[.$] \
.parse-args \$@
.el \{\
.nop \)\*[quote-left]\*[quote-right]
.\}\}
.if !\n[arg-limit] \
.return
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.nr arg-ptr +1
.print-prefixes
.nop \)\*[quote-left]\)\c
.ie (\n[arg-limit] < \n[arg-ptr]) \{\
.nop \)\*[quote-right]\)\c
.print-and-reset
.\}
.el \{\
.ie (\n[type\n[arg-limit]] == 3) \{\
.nr reg-des (\n[arg-limit] - 1)
.while (\n[type\n[reg-des]] == 3) \
.nr reg-des -1
.nr reg-des +1
.ds arg\n[reg-des] "\*[quote-right]\)\*[arg\n[reg-des]]
.\}
.el \{\
.nr reg-des \n[arg-limit]
.while (\n[reg-des] >= \n[arg-ptr]) \{\
.if !\A\*[arg\n[reg-des]] \
.break
.if !d after-\*[arg\n[reg-des]] \
.break
.nr reg-des -1
.\}
.ie (\n[reg-des] == \n[arg-limit]) \
.append-arg "\)\*[quote-right]\)" 3
.el \{\
.ie \n[have-slot] \
.ds arg\n[reg-des] "\*[quote-right]\)\*[arg\n[reg-des]]
.el \{\
.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
.ds arg\n[reg-des] "\)\*[quote-right]\)
.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]]
.\}
.if \n[in-synopsis-section] \
.set-soft-space
..
.als En enclose-string
.de Ao
.if !\n[arg-limit] \
.ds macro-name Ao
.ie "\*[macro-name]"An" \
.ds quote-left <
.el \
.ds quote-left \[la]
.enclose-open \$@
..
.de Ac
.if !\n[arg-limit] \
.ds macro-name Ac
.ie "\*[macro-name]"An" \
.ds quote-right >
.el \
.ds quote-right \[ra]
.enclose-close \$@
..
.de Bo
.if !\n[arg-limit] \
.ds macro-name Bo
.ds quote-left "\*[left-bracket]
.enclose-open \$@
..
.de Bc
.if !\n[arg-limit] \
.ds macro-name Bc
.ds quote-right "\*[right-bracket]
.enclose-close \$@
..
.de Bro
.if !\n[arg-limit] \
.ds macro-name Bo
.ds quote-left {
.enclose-open \$@
..
.de Brc
.if !\n[arg-limit] \
.ds macro-name Bc
.ds quote-right }
.enclose-close \$@
..
.de Do
.if !\n[arg-limit] \
.ds macro-name Do
.ds quote-left "\*[Lq]
.enclose-open \$@
..
.de Dc
.if !\n[arg-limit] \
.ds macro-name Dc
.ds quote-right "\*[Rq]
.enclose-close \$@
..
.de Eo
.if !\n[arg-limit] \
.ds macro-name Eo
.ds quote-left "\$1
.shift
.enclose-open \$@
..
.de Ec
.if !\n[arg-limit] \
.ds macro-name Ec
.ds quote-right "\$1
.shift
.enclose-close \$@
..
.de Oo
.if !\n[arg-limit] \
.ds macro-name Oo
.ds quote-left [
.enclose-open \$@
..
.de Oc
.if !\n[arg-limit] \
.ds macro-name Oc
.ds quote-right ]
.enclose-close \$@
..
.de Po
.if !\n[arg-limit] \
.ds macro-name Po
.ds quote-left "\*[left-parenthesis]
.enclose-open \$@
..
.de Pc
.if !\n[arg-limit] \
.ds macro-name Pc
.ds quote-right "\*[right-parenthesis]
.enclose-close \$@
..
.de Qo
.if !\n[arg-limit] \
.ds macro-name Qo
.ds quote-left "\*[q]
.enclose-open \$@
..
.de Qc
.if !\n[arg-limit] \
.ds macro-name Qc
.ds quote-right "\*[q]
.enclose-close \$@
..
.de So
.if !\n[arg-limit] \
.ds macro-name So
.ds quote-left "\*[left-singlequote]
.enclose-open \$@
..
.de Sc
.if !\n[arg-limit] \
.ds macro-name Sc
.ds quote-right "\*[right-singlequote]
.enclose-close \$@
..
.de Xo
.if !\n[arg-limit] \
.ds macro-name Xo
.ds quote-left
.enclose-open \$@
..
.de Xc
.if !\n[arg-limit] \
.ds macro-name Xc
.ds quote-right
.enclose-close \$@
..
.nr nesting-level 0
.nr in-list 0
.de enclose-open
.if !\n[arg-limit] \
.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
.in 0
.nf
.nop \&\c
.nr nesting-level +1
.if \n[arg-limit] \{\
.nr arg-ptr +1
.ie (\n[arg-limit] >= \n[arg-ptr]) \
.print-recursive
.el \
.reset-args
.\}
..
.de enclose-close
.nr nesting-level -1
.br
.ev
.box
.chop enclosure-box\n[nesting-level]
.unformat enclosure-box\n[nesting-level]
.nh
.nop \*[enclosure-box\n[nesting-level]]\c
.nop \)\*[quote-right]\)\c
.if !\n[arg-limit] \{\
.parse-args \$@
.if !\n[.$] \
.print-and-reset
.\}
.if \n[arg-limit] \{\
.ie (\n[arg-limit] > \n[arg-ptr]) \{\
.nop \)\*[space\n[arg-ptr]]\c
.nr arg-ptr +1
.print-recursive
.\}
.el \
.print-and-reset
.\}
.if !"\*[macro-name]"It" \
.if \n[in-list] \
.if !\n[nesting-level] \
.\*[list-type-stack\n[list-depth]]
..
.de Pf
.if !\n[arg-limit] \
.ds macro-name Pf
.ie \n[arg-limit] \{\
.ie ((\n[arg-limit] - \n[arg-ptr]) > 1) \{\
.nr arg-ptr +1
.nop \)\*[arg\n[arg-ptr]]\c
.\}
.el \
.tm mdoc warning: .Pf: trailing prefix (#\n[.c])
.\}
.el \{\
.nop \)\$1\)\c
.shift
.ie \n[.$] \
.parse-args \$@
.el \{\
.tm mdoc warning: .Pf: missing arguments (#\n[.c])
.nop \)
.\}\}
.if \n[arg-limit] \{\
.nr arg-ptr +1
.ie (\n[arg-limit] < \n[arg-ptr]) \
.print-and-reset
.el \
.do-\n[type\n[arg-ptr]]
.\}
..
.de Ns
.if !\n[arg-limit] \{\
.ie \n[.$] \{\
.ds macro-name Ns
.parse-args \$@
.\}
.el \
.tm Usage: .Ns must be called with arguments (#\n[.c])
.\}
.if \n[arg-limit] \{\
.nr arg-ptr +1
.ie (\n[arg-limit] >= \n[arg-ptr]) \
.print-recursive
.el \
.reset-args
.\}
..
.de Ap
.ie !\n[arg-limit] \
.tm Usage: `Ap' cannot be first macro on a line (no `.Ap') (#\n[.c])
.el \{\
.nop \)'\)\c
.nr arg-ptr +1
.ie (\n[arg-limit] >= \n[arg-ptr]) \
.print-recursive
.el \
.reset-args
.\}
..
.ds space "\*[soft-space]
.de set-hard-space
.ie "\*[space]"" \
.ds saved-space "\*[hard-space]
.el \
.ds space "\*[hard-space]
..
.de set-soft-space
.ie "\*[space]"" \
.ds saved-space "\*[soft-space]
.el \
.ds space "\*[soft-space]
..
.nr space-mode 1
.ds saved-space "\*[space]
.nr have-space 0
.de Sm
.ie \n[have-space] \
.nr reg-Sm 0
.el \
.nr reg-Sm 1
.if !\n[arg-limit] \{\
.ie \n[.$] \{\
.ds macro-name Sm
.parse-args \$@
.\}
.el \{\
.ie \n[space-mode] \{\
.ds saved-space "\*[space]
.ds space
.nr space-mode 0
.\}
.el \{\
.ds space "\*[saved-space]
.nr space-mode 1
.if \n[reg-Sm] \
.if \n[.int] \
.nop \)
.\}
.\}\}
.if !\n[arg-limit] \
.return
.nr arg-ptr +1
.if !d arg\n[arg-ptr] \
.ds arg\n[arg-ptr]
.ie "\*[arg\n[arg-ptr]]"on" \{\
.ds space "\*[saved-space]
.nr space-mode 1
.\}
.el \{\
.ie "\*[arg\n[arg-ptr]]"off" \{\
.ds saved-space "\*[space]
.ds space
.nr space-mode 0
.\}
.el \{\
.nr arg-ptr -1
.ie \n[space-mode] \{\
.ds saved-space "\*[space]
.ds space
.nr space-mode 0
.\}
.el \{\
.ds space "\*[saved-space]
.nr space-mode 1
.\}
.\}\}
.ie \n[space-mode] \{\
.nr num-args (\n[arg-limit] - \n[arg-ptr])
.nr arg-limit \n[arg-ptr]
.if \n[num-args] \
.parse-space-vector
.if \n[reg-Sm] \
.if \n[.int] \
.nop \)
.\}
.el \{\
.nr reg-Sm (\n[arg-ptr] + 1)
.while (\n[reg-Sm] <= \n[arg-limit]) \{\
.ds space\n[reg-Sm]
.nr reg-Sm +1
.\}
.\}
.ie (\n[arg-limit] > \n[arg-ptr]) \{\
.nr arg-ptr +1
.print-recursive
.\}
.el \
.reset-args
..
.nr arg-type 0
.de get-arg-type
.nr arg-type 2
.if ((\n[width] < 4) & \A\$1) \{\
.ie (\n[width] == 1) \{\
.if r punct\$1 \
.nr arg-type \n[punct\$1]
.\}
.el \
.if r \$1 \
.if d \$1 \
.nr arg-type 1
.\}
..
.de get-arg-type*
.nr arg-type 2
.length width "\*[arg\$1]
.if ((\n[width] < 4) & \A\*[arg\$1]) \{\
.ie (\n[width] == 1) \{\
.if r punct\*[arg\$1] \
.nr arg-type \n[punct\*[arg\$1]]
.\}
.el \
.if r \*[arg\$1] \
.if d \*[arg\$1] \
.nr arg-type 1
.\}
..
.de set-spacing-1
.nr reg-dssfm1 \n[\*[arg\n[arg-limit]]]
.ie (\n[reg-dssfm1] == 3) \{\
.if \n[arg-limit] \{\
.nr reg-dssfm (\n[arg-limit] - 1)
.ds space\n[reg-dssfm]
.\}
.ds space\n[arg-limit] "\*[space]
.\}
.el \{\
.ie (\n[reg-dssfm1] == 2) \{\
.if \n[arg-limit] \{\
.nr reg-dssfm (\n[arg-limit] - 1)
.ds space\n[reg-dssfm]
.\}
.ds space\n[arg-limit]
.\}
.el \
.ds space\n[arg-limit]
.\}
..
.de set-spacing-2
.ds space\n[arg-limit] "\*[space]
..
.de set-spacing-3
.if \n[arg-limit] \{\
.nr reg-dssfps (\n[arg-limit] - 1)
.ds space\n[reg-dssfps]
.\}
.ds space\n[arg-limit] "\*[space]
..
.de set-spacing-4
.ds space\n[arg-limit]
..
.de do-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
.de Bf
.ds macro-name Bf
.ie \n[.$] \{\
.nr fontmode-depth +1
.nr fontmode-font-stack\n[fontmode-depth] \n[.f]
.nr fontmode-size-stack\n[fontmode-depth] \n[.ps]
.ie        "\$1"Em" \
.nop \*[Em-font]\c
.el \{ .ie "\$1"Li" \
.nop \*[Li-font]\c
.el \{ .ie "\$1"Sy" \
.nop \*[Sy-font]\c
.el \{ .ie "\$1"-emphasis" \
.nop \*[Em-font]\c
.el \{ .ie "\$1"-literal" \
.nop \*[Li-font]\c
.el \{ .ie "\$1"-symbolic" \
.nop \*[Sy-font]\c
.el \{\
.tmc mdoc warning: Unknown keyword `\$1' in .Bf macro
.tm1 " (#\n[.c])
.\}\}\}\}\}\}\}
.el \
.tm Usage: .Bf [Em | -emphasis | Li | -literal | Sy | -symbolic] (#\n[.c])
..
.de Ef
.ds macro-name Ef
.ie \n[fontmode-depth] \{\
.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 curr-font \n[.f]
.nr fontmode-size-stack\n[fontmode-depth] 0
.nr curr-size \n[.ps]
.nr fontmode-depth -1
.\}
.el \
.tm mdoc warning: Extraneous .Ef (#\n[.c])
..
.nr keep-type 0
.de Bk
.ds macro-name Bk
.if \n[keep-type] \
.tm .Bk: nesting keeps not implemented yet. (#\n[.c])
.ie        "\$1"-lines" \{\
.nr keep-type 2
.tm .Bk -lines: Not implemented yet. (#\n[.c])
.\}
.el \{ .ie "\$1"-words" \{\
.nr keep-type 1
.set-hard-space
.\}
.el \{ .ie "\$1"" \{\
.nr keep-type 1
.set-hard-space
.\}
.el \{\
.tm mdoc warning: Unknown keyword `\$1' in .Bk macro (#\n[.c])
.nr keep-type 3
.\}\}\}
..
.de Ek
.ds macro-name Ek
.ie \n[.$] \
.tm Usage: .Ek (does not take arguments) (#\n[.c])
.el \{\
.if !\n[keep-type] \
.tm mdoc warning: .Ek found without .Bk before (#\n[.c])
.ie        (\n[keep-type] == 1) \
.set-soft-space
.el \{ .if (\n[keep-type] == 2) \
.tm .Bk -lines: Not implemented yet. (#\n[.c])
.\}\}
.nr keep-type 0
..
.nr display-depth 0
.nr is-compact 0
.ds display-type-stack0
.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
.de Bd
.ds macro-name Bd
.if !\n[.$] \{\
.tm1 "Usage: .Bd {-literal | -filled | -ragged | -centered | -unfilled}
.tm1 "           [-offset [string]] [-compact] [-file name] (#\n[.c])
.return
.\}
.nr is-compact 0
.ds display-file
.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]
.ie        "\$1"-literal" \{\
.ds display-type-stack\n[display-depth] literal
.nr display-ft-stack\n[display-depth] \n[.f]
.nr display-ps-stack\n[display-depth] \n[.ps]
.ie t \
.ta T 9n
.el \
.ta T 8n
.nf
.\}
.el \{ .ie "\$1"-filled" \{\
.ds display-type-stack\n[display-depth] filled
.ad b
.fi
.\}
.el \{ .ie "\$1"-ragged" \{\
.ds display-type-stack\n[display-depth] ragged
.na
.fi
.\}
.el \{ .ie "\$1"-centered" \{\
.ds display-type-stack\n[display-depth] centered
.ad c
.fi
.\}
.el \{ .ie "\$1"-unfilled" \{\
.ds display-type-stack\n[display-depth] unfilled
.nf
.\}
.el \{\
.tm1 "mdoc warning: Unknown keyword `\$1' (or missing display type)
.tm1 "              in .Bd macro (#\n[.c])
.nr reg-Bd 0
.\}\}\}\}\}
.if \n[reg-Bd] \{\
.shift
.if \n[.$] \
.do-Bd-args \$@
.\}
.if !r display-indent-stack\n[display-depth] \
.nr display-indent-stack\n[display-depth] 0
.if \n[display-indent-stack\n[display-depth]] \
.in +\n[display-indent-stack\n[display-depth]]u
.if !\n[is-compact] \
.sp \n[display-vertical]u
.if "\*[display-type-stack\n[display-depth]]"literal" \
.if t \
.nop \*[Li-font]\c
.if !\n[cR] \
.ne 2v
.if !"\*[display-file]"" \
.so \*[display-file]
.nr is-compact 0
.ds display-file
..
.de do-Bd-args
.nr reg-ddBa 1
.ie        "\$1"-offset" \{\
.nr reg-ddBa 2
.ie        "\$2"left" \
.nr display-indent-stack\n[display-depth] 0
.el \{ .ie "\$2"right" \
.nr display-indent-stack\n[display-depth] (\n[.l]u / 3u)
.el \{ .ie "\$2"center" \
.nr display-indent-stack\n[display-depth] ((\n[.l]u - \n[.i]u) / 4u)
.el \{ .ie "\$2"indent" \
.nr display-indent-stack\n[display-depth] \n[display-indent]u
.el \{ .ie "\$2"indent-two" \
.nr display-indent-stack\n[display-depth] (\n[display-indent]u + \n[display-indent]u)
.el \
.nr reg-ddBa 1
.\}\}\}\}
.if (\n[reg-ddBa] == 1) \{\
.nr reg-ddBa 2
.nr reg-ddBa1 0
.if \B(\$2) \{\
.nr reg-ddBa2 \n[.warn]
.warn (\n[.warn] - (\n[.warn] / 32 % 2 * 32))
.ds str-ddBa "\$2
.substring str-ddBa 0 -2
.if \B(\*[str-ddBa]) \{\
.nr reg-ddBa3 (;(\$2))
.nr reg-ddBa4 (\*[str-ddBa])
.if (\n[reg-ddBa3] == \n[reg-ddBa4]) \
.nr reg-ddBa1 1
.\}
.warn \n[reg-ddBa2]
.\}
.ie \n[reg-ddBa1] \
.nr display-indent-stack\n[display-depth] \$2
.el \{\
.get-width "\$2"
.ie (\n[width] <= 3) \{\
.get-arg-type "\$2"
.ie (\n[arg-type] == 1) \
.nr display-indent-stack\n[display-depth] \n[\$2]
.el \
.nr display-indent-stack\n[display-depth] (\n[width]u * \n[fixed-width]u)
.\}
.el \
.nr display-indent-stack\n[display-depth] (\n[width]u * \n[fixed-width]u)
.\}\}
.\}
.el \{ .ie "\$1"-compact" \
.nr is-compact 1
.el \{ .ie "\$1"-file" \{\
.ie !"\$2"" \{\
.ds display-file "\$2
.nr reg-ddBa 2
.\}
.el \
.tm mdoc warning: .Bd `-file' keyword requires argument (#\n[.c])
.\}
.el \
.tm mdoc warning: Unknown keyword `\$1' in .Bd macro (#\n[.c])
.\}\}
.if (\n[reg-ddBa] < \n[.$]) \{\
.shift \n[reg-ddBa]
.do-Bd-args \$@
.\}
..
.de Ed
.ds macro-name Ed
.br
.if !\n[display-depth] \{\
.tm mdoc warning: Extraneous .Ed (#\n[.c])
.nr display-depth 1
.\}
.if "\*[display-type-stack\n[display-depth]]"literal" \{\
.ft \n[display-ft-stack\n[display-depth]]
.ps \n[display-ps-stack\n[display-depth]]u
.\}
.in -\n[display-indent-stack\n[display-depth]]u
.ie \n[display-fi-stack\n[display-depth]] \
.fi
.el \
.nf
.ad \n[display-ad-stack\n[display-depth]]
.nr display-indent-stack\n[display-depth] 0
.ds display-type-stack\n[display-depth]
.nr display-depth -1
..
.ds list-type-stack1
.nr list-indent-stack1 0
.nr list-have-indent-stack1 0
.de Bl
.if !\n[.$] \{\
.Bl-usage
.return
.\}
.ds macro-name Bl
.nr list-depth +1
.nr arg-ptr 1
.ie        "\$1"-hang" \{\
.ds list-type-stack\n[list-depth] hang-list
.nr list-indent-stack\n[list-depth] 6n
.nr list-have-indent-stack\n[list-depth] 1
.\}
.el \{ .ie "\$1"-tag" \{\
.ds list-type-stack\n[list-depth] tag-list
.nr list-have-indent-stack\n[list-depth] 1
.\}
.el \{ .ie "\$1"-item" \{\
.ds list-type-stack\n[list-depth] item-list
.nr list-have-indent-stack\n[list-depth] 1
.\}
.el \{ .ie "\$1"-enum" \{\
.ds list-type-stack\n[list-depth] enum-list
.nr list-indent-stack\n[list-depth] 3n
.nr list-have-indent-stack\n[list-depth] 1
.\}
.el \{ .ie "\$1"-bullet" \{\
.ds list-type-stack\n[list-depth] bullet-list
.nr list-indent-stack\n[list-depth] 2n
.nr list-have-indent-stack\n[list-depth] 1
.\}
.el \{ .ie "\$1"-dash" \{\
.ds list-type-stack\n[list-depth] dash-list
.nr list-indent-stack\n[list-depth] 2n
.nr list-have-indent-stack\n[list-depth] 1
.\}
.el \{ .ie "\$1"-hyphen" \{\
.ds list-type-stack\n[list-depth] dash-list
.nr list-indent-stack\n[list-depth] 2n
.nr list-have-indent-stack\n[list-depth] 1
.\}
.el \{ .ie "\$1"-inset" \{\
.ds list-type-stack\n[list-depth] inset-list
.nr list-have-indent-stack\n[list-depth] 1
.\}
.el \{ .ie "\$1"-diag" \{\
.ds list-type-stack\n[list-depth] diag-list
.\}
.el \{ .ie "\$1"-ohang" \{\
.ds list-type-stack\n[list-depth] ohang-list
.nr list-have-indent-stack\n[list-depth] 1
.\}
.el \{ .ie "\$1"-column" \{\
.ds list-type-stack\n[list-depth] column-list
.linetabs 1
.\}
.el \{\
.tm1 "mdoc warning: Unknown list type `\$1' (or missing list type)
.tm1 "              in .Bl macro
.tm
.nr arg-ptr 0
.\}\}\}\}\}\}\}\}\}\}\}
.if !\n[arg-ptr] \{\
.Bl-usage
.reset-args
.nr list-depth -1
.return
.\}
.shift
.nr reg-Bl 1
.while (\n[reg-Bl] <= \n[.$]) \{\
.ds arg\n[reg-Bl] "\$[\n[reg-Bl]]
.nr type\n[reg-Bl] 0
.ds space\n[reg-Bl]
.nr reg-Bl +1
.\}
.increment-list-stack
.if \n[.$] \{\
.nr arg-limit \n[.$]
.nr arg-ptr 0
.do-Bl-args
.in +\n[list-offset-stack\n[list-depth]]u
.if "\*[list-type-stack\n[list-depth]]"column-list" \{\
.set-column-tab \n[num-columns]
'      in -\n[column-indent-width]u
.if !\n[compact-list-stack\n[list-depth]] \
.sp \n[display-vertical]u
.nf
.nr num-columns 0
.\}\}
.reset-args
..
.de Bl-usage
.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])
..
.de do-Bl-args
.nr arg-ptr +1
.if (\n[arg-limit] < \n[arg-ptr]) \
.return
.nr reg-dBla (\n[arg-ptr] + 1)
.if !d arg\n[reg-dBla] \
.ds arg\n[reg-dBla]
.nr reg-dBla 1
.ie        "\*[arg\n[arg-ptr]]"-compact" \
.nr compact-list-stack\n[list-depth] 1
.el \{ .ie "\*[arg\n[arg-ptr]]"-nested" \{\
.ie (\n[list-depth] > 1) \{\
.nr reg-dBla1 (\n[list-depth] - 1)
.ds tag-prefix-stack\n[list-depth] "\*[tag-prefix-stack\n[reg-dBla1]]
.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
.\}
.el \
.tm mdoc warning: `-nested' allowed with nested .Bl macros only (#\n[.c])
.\}
.el \{ .ie "\*[arg\n[arg-ptr]]"-width" \{\
.nr arg-ptr +1
.ds tag-width-stack\n[list-depth] TagwidtH
.ds str-dBla "\*[arg\n[arg-ptr]]
.substring str-dBla 0 0
.ie .\*[str-dBla] \{\
.ds str-dBla "\*[arg\n[arg-ptr]]
.substring str-dBla 1
.first-parameter \*[str-dBla]
.get-width "\*[str-dfp]
.get-arg-type "\*[str-dfp]
.ie (\n[arg-type] == 1) \
.nr reg-dBla1 1
.el \
.nr reg-dBla1 0
.\}
.el \
.nr reg-dBla1 0
.ds str-dBla "\*[arg\n[arg-ptr]]
.ie \n[reg-dBla1] \{\
.ds str-dBla \*[arg\n[arg-ptr]]
.save-global-vars
.reset-args
.box box-dBla
.ev env-dBla
.evc 0
.in 0
.nf
.nop \*[str-dBla]
.br
.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)
.\}
.el \{\
.nr reg-dBla1 0
.if \B(\*[str-dBla]) \{\
.nr reg-dBla2 \n[.warn]
.warn (\n[.warn] - (\n[.warn] / 32 % 2 * 32))
.ds str-dBla1 "\*[str-dBla]
.substring str-dBla1 0 -2
.if \B(\*[str-dBla1]) \{\
.nr reg-dBla3 (;(\*[str-dBla]))
.nr reg-dBla4 (\*[str-dBla1])
.if (\n[reg-dBla3] == \n[reg-dBla4]) \
.nr reg-dBla1 1
.\}
.warn \n[reg-dBla2]
.\}
.ie \n[reg-dBla1] \
.nr list-indent-stack\n[list-depth] (\*[str-dBla])
.el \{\
.get-arg-width \n[arg-ptr]
.ie (\n[width] == 2) \{\
.get-arg-type \*[str-dBla]
.ie (\n[arg-type] == 1) \
.nr list-indent-stack\n[list-depth] \n[\*[str-dBla]]
.el \
.nr list-indent-stack\n[list-depth] (\n[width]u * \n[fixed-width]u)
.\}
.el \
.nr list-indent-stack\n[list-depth] (\n[width]u * \n[fixed-width]u)
.\}\}\}
.el \{ .ie "\*[arg\n[arg-ptr]]"-offset" \{\
.nr arg-ptr +1
.ie "\*[arg\n[arg-ptr]]"indent" \
.nr list-offset-stack\n[list-depth] \n[display-indent]u
.el \{\
.ds str-dBla "\*[arg\n[arg-ptr]]
.nr reg-dBla1 0
.if \B(\*[str-dBla]) \{\
.nr reg-dBla2 \n[.warn]
.warn (\n[.warn] - (\n[.warn] / 32 % 2 * 32))
.ds str-dBla1 "\*[str-dBla]
.substring str-dBla1 0 -2
.if \B(\*[str-dBla1]) \{\
.nr reg-dBla3 (;(\*[str-dBla]))
.nr reg-dBla4 (\*[str-dBla1])
.if (\n[reg-dBla3] == \n[reg-dBla4]) \
.nr reg-dBla1 1
.\}
.warn \n[reg-dBla2]
.\}
.ie \n[reg-dBla1] \
.nr list-offset-stack\n[list-depth] \*[str-dBla]
.el \{\
.get-arg-width \n[arg-ptr]
.ie (\n[width] <= 3) \{\
.get-arg-type \*[str-dBla]
.ie (\n[arg-type] == 1) \
.nr list-offset-stack\n[list-depth] \n[\*[str-dBla]]
.el \
.nr list-offset-stack\n[list-depth] (\n[width]u * \n[fixed-width]u)
.\}
.el \
.nr list-offset-stack\n[list-depth] (\n[width]u * \n[fixed-width]u)
.\}\}\}
.el \
.nr reg-dBla 0
.\}\}\}
.if !\n[reg-dBla] \{\
.ie "\*[list-type-stack\n[list-depth]]"column-list" \{\
.nr num-columns +1
.ds str-dBla \*[arg\n[arg-ptr]]
.substring str-dBla 0 0
.ie .\*[str-dBla] \{\
.ds str-dBla "\*[arg\n[arg-ptr]]
.substring str-dBla 1
.first-parameter \*[str-dBla]
.get-width "\*[str-dfp]
.get-arg-type "\*[str-dfp]
.ie (\n[arg-type] == 1) \
.nr reg-dBla1 1
.el \
.nr reg-dBla1 0
.\}
.el \
.nr reg-dBla1 0
.ds str-dBla "\*[arg\n[arg-ptr]]
.ie \n[reg-dBla1] \{\
.ds str-dBla \*[arg\n[arg-ptr]]
.save-global-vars
.reset-args
.box box-dBla
.ev env-dBla
.evc 0
.in 0
.nf
.nop \*[str-dBla]
.br
.ev
.box
.restore-global-vars
.ds arg\n[num-columns] "\h'\n[dl]u'
.\}
.el \
.ds arg\n[num-columns] "\*[arg\n[arg-ptr]]
.\}
.el \{\
.tmc mdoc warning: Unknown keyword `\*[arg\n[arg-ptr]]'
.tm1 " in .Bl macro (#\n[.c])
.\}\}
.if (\n[arg-limit] > \n[arg-ptr]) \
.do-Bl-args
..
.de save-global-vars
.ds macro-name-saved "\*[macro-name]
.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]) \{\
.ds arg\n[reg-dsgv]-saved "\*[arg\n[reg-dsgv]]
.nr type\n[reg-dsgv]-saved \n[type\n[reg-dsgv]]
.ds space\n[reg-dsgv]-saved "\*[space\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 in-library-section-saved \n[in-library-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]
.ds command-name-saved "\*[command-name]
.ds quote-left-saved "\*[quote-left]
.ds quote-right-saved "\*[quote-right]
.nr nesting-level-saved \n[nesting-level]
.nr in-list-saved \n[in-list]
.ds space-saved "\*[space]
.ds saved-space-saved "\*[saved-space]
.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]) \{\
.ds display-type-stack\n[reg-dsgv]-saved "\*[display-type-stack\n[reg-dsgv]]
.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]) \{\
.ds list-type-stack\n[reg-dsgv]-saved "\*[list-type-stack\n[reg-dsgv]]
.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]]
.ds tag-prefix-stack\n[reg-dsgv]-saved "\*[tag-prefix-stack\n[reg-dsgv]]
.ds tag-width-stack\n[reg-dsgv]-saved "\*[tag-width-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
.\}
.ds saved-Pa-font-saved "\*[saved-Pa-font]
.nr curr-type-saved \n[curr-type]
.ds curr-arg-saved "\*[curr-arg]
.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]
.ds func-arg-saved "\*[func-arg]
.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]) \{\
.ds author-name\n[reg-dsgv]-saved "\*[author-name\n[reg-dsgv]]
.nr reg-dsgv +1
.\}
.nr book-count-saved \n[book-count]
.ds book-name-saved "\*[book-name]
.nr city-count-saved \n[city-count]
.ds city-name-saved "\*[city-name]
.nr date-count-saved \n[date-count]
.ds date-saved "\*[date]
.nr publisher-count-saved \n[publisher-count]
.ds publisher-name-saved "\*[publisher-name]
.nr journal-count-saved \n[journal-count]
.ds journal-name-saved "\*[journal-name]
.nr issue-count-saved \n[issue-count]
.ds issue-name-saved "\*[issue-name]
.nr optional-count-saved \n[optional-count]
.ds optional-string-saved "\*[optional-string]
.nr page-number-count-saved \n[page-number-count]
.ds page-number-string-saved "\*[page-number-string]
.nr corporate-count-saved \n[corporate-count]
.ds corporate-name-saved "\*[corporate-name]
.nr report-count-saved \n[report-count]
.ds report-name-saved "\*[report-name]
.nr reference-title-count-saved \n[reference-title-count]
.ds reference-title-name-saved "\*[reference-title-name]
.ds reference-title-name-for-book-saved "\*[reference-title-name-for-book]
.nr url-count-saved \n[url-count]
.ds url-name-saved "\*[url-name]
.nr volume-count-saved \n[volume-count]
.ds volume-name-saved "\*[volume-name]
.nr have-author-saved \n[have-author]
.ds document-title-saved "\*[document-title]
.ds volume-saved "\*[volume]
.ds section-saved "\*[section]
.ds operating-system-saved "\*[operating-system]
.ds date-string-saved "\*[date-string]
.nr header-space-saved \n[header-space]
.nr footer-space-saved \n[footer-space]
.nr display-vertical-saved \n[display-vertical]
.ds header-string-saved "\*[header-string]
.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]
..
.de restore-global-vars
.ds macro-name "\*[macro-name-saved]
.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]) \{\
.ds arg\n[reg-drgv] "\*[arg\n[reg-drgv]-saved]
.nr type\n[reg-drgv] \n[type\n[reg-drgv]-saved]
.ds space\n[reg-drgv] "\*[space\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 in-library-section \n[in-library-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]
.ds command-name "\*[command-name-saved]
.ds quote-left "\*[quote-left-saved]
.ds quote-right "\*[quote-right-saved]
.nr nesting-level \n[nesting-level-saved]
.nr in-list \n[in-list-saved]
.ds space "\*[space-saved]
.ds saved-space "\*[saved-space-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]) \{\
.ds display-type-stack\n[reg-drgv] "\*[display-type-stack\n[reg-drgv]-saved]
.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]) \{\
.ds list-type-stack\n[reg-drgv] "\*[list-type-stack\n[reg-drgv]-saved]
.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]
.ds tag-prefix-stack\n[reg-drgv] "\*[tag-prefix-stack\n[reg-drgv]-saved]
.ds tag-width-stack\n[reg-drgv] "\*[tag-width-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
.\}
.ds saved-Pa-font "\*[saved-Pa-font-saved]
.nr curr-type \n[curr-type-saved]
.ds curr-arg "\*[curr-arg-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]
.ds func-arg "\*[func-arg-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]) \{\
.ds author-name\n[reg-drgv] "\*[author-name\n[reg-drgv]-saved]
.nr reg-drgv +1
.\}
.nr book-count \n[book-count-saved]
.ds book-name "\*[book-name-saved]
.nr city-count \n[city-count-saved]
.ds city-name "\*[city-name-saved]
.nr date-count \n[date-count-saved]
.ds date "\*[date-saved]
.nr publisher-count \n[publisher-count-saved]
.ds publisher-name "\*[publisher-name-saved]
.nr journal-count \n[journal-count-saved]
.ds journal-name "\*[journal-name-saved]
.nr issue-count \n[issue-count-saved]
.ds issue-name "\*[issue-name-saved]
.nr optional-count \n[optional-count-saved]
.ds optional-string "\*[optional-string-saved]
.nr page-number-count \n[page-number-count-saved]
.ds page-number-string "\*[page-number-string-saved]
.nr corporate-count \n[corporate-count-saved]
.ds corporate-name "\*[corporate-name-saved]
.nr report-count \n[report-count-saved]
.ds report-name "\*[report-name-saved]
.nr reference-title-count \n[reference-title-count-saved]
.ds reference-title-name "\*[reference-title-name-saved]
.ds reference-title-name-for-book "\*[reference-title-name-for-book-saved]
.nr url-count \n[url-count-saved]
.ds url-name "\*[url-name-saved]
.nr volume-count \n[volume-count-saved]
.ds volume-name "\*[volume-name-saved]
.nr have-author \n[have-author-saved]
.ds document-title "\*[document-title-saved]
.ds volume "\*[volume-saved]
.ds section "\*[section-saved]
.ds operating-system "\*[operating-system-saved]
.ds date-string "\*[date-string-saved]
.nr header-space \n[header-space-saved]
.nr footer-space \n[footer-space-saved]
.nr display-vertical \n[display-vertical-saved]
.ds header-string "\*[header-string-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]
..
.de El
.if \n[.$] \{\
.tm Usage: .El (does not take arguments) (#\n[.c])
.return
.\}
.ds macro-name El
.ds str-El \*[list-type-stack\n[list-depth]]
.ie        "\*[str-El]"diag-list" \
.end-list 0
.el \{ .ie "\*[str-El]"column-list" \
.end-column-list
.el \{ .ie "\*[str-El]"item-list" \
.end-list 0
.el \{ .ie "\*[str-El]"ohang-list" \
.end-list 0
.el \{ .ie "\*[str-El]"inset-list" \
.end-list 0
.el \
.end-list 1
.\}\}\}\}
.br
..
.ds saved-Pa-font
.nr curr-type 0
.ds curr-arg
.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
.de It
.ds str-It \*[list-type-stack\n[list-depth]]
.if "\*[str-It]"" \
.tm mdoc error: .It without preceding .Bl (#\n[.c])
.if \n[nesting-level] \{\
.tmc "mdoc error: .It found in enclosing (e.g. .Ac ... .It ... .Ao)
.tm1 " (#\n[.c])
.\}
.br
.if !\n[cR] \
.ne 3v
.if \n[.$] \{\
.ds macro-name It
.nr reg-It 1
.while (\n[reg-It] <= \n[.$]) \{\
.ds arg\n[reg-It] "\$[\n[reg-It]]
.nr reg-It +1
.\}
.nr num-args \n[.$]
.nr arg-ptr 0
.\}
.nr reg-It \n[\*[str-It]-type]
.if \n[reg-It] \{\
.box item-box\n[list-depth]
.ev item-env\n[list-depth]
.evc 0
.in 0
.nf
.\}
.ie (\n[reg-It] == 1) \{\
.if \n[.$] \{\
.tm1 "mdoc warning: .It macros in lists of type `\*[str-It]'
.tm1 "              don't take arguments (#\n[.c])
.\}\}
.el \{\
.ie \n[.$] \{\
.if (\n[reg-It] == 2) \{\
.parse-arg-vector
.nr in-list 1
.nr arg-ptr 1
.nr curr-type \n[type1]
.ds curr-arg "\*[arg1]
.if \n[in-files-section] \{\
.ds saved-Pa-font "\*[Pa-font]
.if n \
.ds Pa-font "\*[No-font]
.\}
.ie (\n[type1] == 1) \
.\*[arg1]
.el \{\
.nr arg-ptr 1
.print-recursive
.\}\}\}
.el \{\
.tm1 "mdoc warning: .It macros in lists of type `\*[str-It]'
.tm1 "              require arguments (#\n[.c])
.\}
.\}
.if !\n[nesting-level] \
.\*[str-It]
..
.de inset-list
.br
.ev
.box
.unformat item-box\n[list-depth]
.set-vertical-and-indent 0
.br
.nh
.item-box\n[list-depth]
.if \n[in-files-section] \
.if n \
.ds Pa-font "\*[saved-Pa-font]
.nr in-list 0
.reset-args
..
.de hang-list
.br
.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)
.ti -\n[reg-dhl]u
.nh
.ie (\n[dl]u > \n[list-indent-stack\n[list-depth]]u) \
.item-box\n[list-depth]
.el \{\
.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
.\}
.if \n[in-files-section] \
.if n \
.ds Pa-font "\*[saved-Pa-font]
.nr in-list 0
.reset-args
..
.de ohang-list
.br
.ev
.box
.unformat item-box\n[list-depth]
.set-vertical-and-indent 0
.nh
.item-box\n[list-depth]
.br
.if \n[in-files-section] \
.if n \
.ds Pa-font "\*[saved-Pa-font]
.nr in-list 0
.reset-args
..
.de item-list
.br
.ev
.box
.set-vertical-and-indent 0
.br
.reset-args
..
.nr enum-list-count-stack1 0
.de enum-list
.nr in-list 1
.nr enum-list-count-stack\n[list-depth] +1
.nop \*[tag-prefix-stack\n[list-depth]]\c
.nop \n[enum-list-count-stack\n[list-depth]].\&
.do-list
..
.de bullet-list
.nr in-list 1
.nop \)\*[Sy-font]\[bu]\f[]
.do-list
..
.de dash-list
.nr in-list 1
.nop \)\*[Sy-font]\-\f[]
.do-list
..
.als do-list hang-list
.nr diag-list-input-line-count 0
.de diag-list
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.ie ((\n[.c] - \n[diag-list-input-line-count]) > 1) \{\
.ie !\n[compact-list-stack\n[list-depth]] \
.paragraph
.el \
.br
.\}
.el \
.br
.nr diag-list-input-line-count \n[.c]
.nh
.nop \*[Sy-font]\c
.if \n[num-args] \
.remaining-args
.nop \f[\n[curr-font]]\s[\n[curr-size]u]\*[hard-space]\c
.print-and-reset
..
.de tag-list
.br
.ev
.box
.unformat item-box\n[list-depth]
.box box-dtl
.ev env-dtl
.evc 0
.fi
.ad 0
.in 0
.item-box\n[list-depth]
.br
.ev
.box
.if !"TagwidtH"\*[tag-width-stack\n[list-depth]]" \{\
.if !\n[list-have-indent-stack\n[list-depth]] \{\
.in -(\n[list-indent-stack\n[list-depth]]u + \n[digit-width]u)
.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)
.ti -\n[reg-dtl]u
.nh
.item-box\n[list-depth]
.ie (\n[dl]u > \n[list-indent-stack\n[list-depth]]u) \
.br
.el \{\
.vpt 0
.br
.sp -1
.vpt 1
.nop \&\c
.nr have-space 1
.\}
.if \n[in-files-section] \
.if n \
.ds Pa-font "\*[saved-Pa-font]
.nr in-list 0
.reset-args
..
.de get-tag-width
.ie (\n[curr-type] == 1) \{\
.ds tag-width-stack\n[list-depth] \*[curr-arg]
.nr list-indent-stack\n[list-depth] \n[\*[curr-arg]]
.\}
.el \{\
.ds tag-width-stack\n[list-depth] No
.nr list-indent-stack\n[list-depth] \n[No]
.\}
..
.de set-vertical-and-indent
.if !\n[compact-list-stack\n[list-depth]] \
.sp \n[display-vertical]u
.if \n[list-have-indent-stack\n[list-depth]] \{\
.nr list-have-indent-stack\n[list-depth] 0
.if \$1 \
.in +(\n[list-indent-stack\n[list-depth]]u + \n[digit-width]u)
.\}
.if !\n[cR] \
.ne 2v
..
.nr list-depth 0
.nr num-columns 0
.nr compact-list-stack1 0
.ds tag-prefix-stack1
.ds tag-width-stack0
.ds tag-width-stack1
.nr list-offset-stack1 0
.de end-list
.if \$1 \
'    in -(\n[list-indent-stack\n[list-depth]]u + \n[digit-width]u)
'  in -\n[list-offset-stack\n[list-depth]]u
.if (\n[list-depth] <= 0) \
.tm mdoc warning: extraneous .El call (#\n[.c])
.decrement-list-stack
.nr list-depth -1
..
.de increment-list-stack
.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
.ds tag-prefix-stack\n[reg-dils]
.ds tag-width-stack\n[reg-dils] \*[tag-width-stack\n[list-depth]]
.ds list-type-stack\n[reg-dils]
.nr compact-list-stack\n[reg-dils] 0
.nr enum-list-count-stack\n[reg-dils] 0
..
.de decrement-list-stack
.ds list-type-stack\n[list-depth]
.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
.ds tag-prefix-stack\n[list-depth]
.ds tag-width-stack\n[list-depth]
.nr compact-list-stack\n[list-depth] 0
.nr enum-list-count-stack\n[list-depth] 0
..
.de Xr
.if !\n[arg-limit] \{\
.ie \n[.$] \{\
.ds macro-name Xr
.parse-args \$@
.\}
.el \
.Xr-usage
.\}
.if !\n[arg-limit] \
.return
.nr arg-ptr +1
.print-prefixes
.ie (\n[arg-limit] >= \n[arg-ptr]) \{\
.ie (\n[type\n[arg-ptr]] == 2) \{\
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.ds arg\n[arg-ptr] \*[Xr-font]\*[arg\n[arg-ptr]]\f[]\s[0]
.if (\n[arg-limit] > \n[arg-ptr]) \{\
.nr reg-Xr (\n[arg-ptr] + 1)
.if (\n[type\n[reg-Xr]] == 2) \{\
.ds arg\n[reg-Xr] \*[lp]\*[arg\n[reg-Xr]]\*[rp]
.ds space\n[arg-ptr]
.\}
.\}
.print-recursive
.\}
.el \
.Xr-usage
.\}
.el \
.Xr-usage
..
.de Xr-usage
.tm Usage: .Xr manpage_name [section#] ... (#\n[.c])
.reset-args
..
.als Sx generic-macro
.ds Sx-usage section_header
.de end-column-list
.linetabs 0
'  in -(\n[list-offset-stack\n[list-depth]]u + \n[list-indent-stack\n[list-depth]]u)
.ta T .5i
.fi
.decrement-list-stack
.nr list-depth -1
..
.nr column-indent-width 0
.de set-column-tab
.ds str-dsct
.nr reg-dsct 1
.nr column-indent-width 0
.ie (\$1 < 5) \
.ds str-dsct1 "    
.el \{\
.ie (\$1 == 5) \
.ds str-dsct1 "   
.el \{\
.ds str-dsct1 " 
.\}\}
.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
.\}
.ta \*[str-dsct]
'  in +\n[column-indent-width]u
..
.de column-list
.if \n[num-args] \
.parse-arg-vector
.nr arg-ptr +1
.if (\n[arg-limit] < \n[arg-ptr]) \{\
.tm Usage: .It column_string [Ta [column_string ...] ] (#\n[.c])
.return
.\}
.if "\*[arg\n[arg-ptr]]"Ta" \{\
.nr reg-dcl (\n[arg-ptr] - 1)
.ds space\n[reg-dcl]
.\}
.if !\n[list-indent-stack\n[list-depth]] \
.nr list-indent-stack\n[list-depth] \n[column-indent-width]u
.if !\n[.u] \{\
.fi
.in +\n[column-indent-width]u
.\}
.ti -\n[column-indent-width]u
.do-\n[type\n[arg-ptr]]
..
.de Ta
.ie \n[arg-limit] \{\
.nr arg-ptr +1
.nop \*[tab]\c
.ie (\n[arg-limit] >= \n[arg-ptr]) \
.do-\n[type\n[arg-ptr]]
.el \
.reset-args
.\}
.el \{\
.tm1 "Usage: Ta must follow column entry: e.g.
.tm1 "         .It column_string [Ta [column_string ...]] (#\n[.c])
.\}
..
.de Dl
.ta T .5i
.in +\n[display-indent]u
.ie \n[arg-limit] \{\
.tm Usage: .Dl not callable by other macros (#\n[.c])
.reset-args
.\}
.el \{\
.ie \n[.$] \{\
.ds macro-name Dl
.parse-args \$@
.nr arg-ptr 1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.nop \*[Li-font]\c
.print-recursive
.\}
.el \
.tm Usage: .Dl argument ... (#\n[.c])
.\}
.in -\n[display-indent]u
..
.de D1
.ta T .5i
.in +\n[display-indent]u
.ie \n[arg-limit] \{\
.tm Usage: .D1 not callable by other macros (#\n[.c])
.reset-args
.\}
.el \{\
.ie \n[.$] \{\
.ds macro-name D1
.parse-args \$@
.nr arg-ptr 1
.print-recursive
.\}
.el \
.tm Usage: .D1 argument ... (#\n[.c])
.\}
.in -\n[display-indent]u
..
.de Vt
.if !\n[arg-limit] \{\
.ie \n[.$] \{\
.ds macro-name Vt
.parse-args \$@
.\}
.el \
.tm Usage: .Vt variable_type ... (#\n[.c])
.\}
.if !\n[arg-limit] \
.return
.nr arg-ptr +1
.if (\n[arg-limit] < \n[arg-ptr]) \{\
.tm Usage: .Vt variable_type ... (#\n[.c])
.reset-args
.return
.\}
.if \n[in-synopsis-section] \{\
.if \n[have-decl] \{\
.paragraph
.nr have-decl 0
.\}
.if \n[have-func] \{\
.ie \n[have-var] \
.br
.el \
.paragraph
.\}
.nr have-var 1
.\}
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.nop \*[Ft-font]\c
.print-recursive
.if \n[in-synopsis-section] \{\
.ie \n[have-old-func] \
.nop \*[soft-space]\c
.el \
.br
.\}
..
.nr is-func 0
.de Ft
.if !\n[arg-limit] \{\
.ie \n[.$] \{\
.ds macro-name Ft
.parse-args \$@
.\}
.el \
.tm Usage: .Ft function_type ... (#\n[.c])
.\}
.if !\n[arg-limit] \
.return
.nr arg-ptr +1
.if (\n[arg-limit] < \n[arg-ptr]) \{\
.tm Usage: .Ft function_type ... (#\n[.c])
.reset-args
.return
.\}
.if \n[in-synopsis-section] \{\
.if (\n[have-func] : \n[have-decl]) \{\
.paragraph
.nr have-decl 0
.nr have-var 0
.\}
.if \n[have-var] \{\
.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
.de Ot
.nr have-old-func 1
.if \n[in-synopsis-section] \{\
.if (\n[have-func] : \n[have-decl]) \{\
.paragraph
.nr have-decl 0
.nr have-var 0
.\}
.if \n[have-var] \{\
.paragraph
.nr have-var 0
.\}
.nr is-func 1
.\}
.if \n[.$] \
.nop \*[Ft-font]\$*\c
.nop \ \f[]\c
..
.de Fa
.if !\n[arg-limit] \{\
.ie \n[.$] \{\
.ds macro-name Fa
.parse-args \$@
.\}
.el \
.tm Usage: .Fa function_arguments ... (#\n[.c])
.\}
.ie \n[func-arg-count] \
.do-func
.el \{\
.nr arg-ptr +1
.if (\n[arg-limit] >= \n[arg-ptr]) \{\
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.nop \*[Fa-font]\c
.print-recursive
.if \n[in-synopsis-section] \
.if \n[have-func] \
.br
.\}\}
..
.nr func-arg-count 0
.ds func-arg
.nr num-func-args 0
.nr func-args-processed 0
.de do-func
.if (\n[arg-limit] <= \n[arg-ptr]) \{\
.reset-args
.return
.\}
.nr arg-ptr +1
.ds func-arg
.nr num-func-args 0
.nr func-args-processed 0
.build-func-string \*[arg\n[arg-ptr]]
.if (\n[num-func-args] > 1) \
.ds arg\n[arg-ptr] "\*[func-arg]
.if (\n[func-arg-count] > 1) \{\
.nop \f[\n[curr-font]]\s[\n[curr-size]u]\|\c
.if !"\*[arg\n[arg-ptr]]"/*" \
.if !"\*[arg\n[arg-ptr]]"*/" \
.nop ,\)\c
.nop \)\*[space\n[arg-ptr]]\*[Fa-font]\c
.nop \)\*[arg\n[arg-ptr]]\f[]\s[0]\c
.\}
.if (\n[func-arg-count] == 1) \{\
.nop \)\*[Fa-font]\*[arg\n[arg-ptr]]\c
.nop \f[]\s[0]\c
.\}
.nr func-arg-count +1
.do-func
..
.nr have-func 0
.de Fn
.if !\n[arg-limit] \{\
.ie \n[.$] \{\
.ds macro-name Fn
.parse-args \$@
.\}
.el \
.tm Usage: .Fn function_name [function_arg] ... (#\n[.c])
.\}
.if !\n[arg-limit] \
.return
.if \n[in-synopsis-section] \{\
.ie \n[is-func] \{\
.br
.nr have-var 0
.nr have-decl 0
.nr is-func 0
.\}
.el \{\
.if \n[have-func] \{\
.paragraph
.nr have-var 0
.nr have-decl 0
.\}\}
.if \n[have-decl] \{\
.paragraph
.nr have-var 0
.\}
.if \n[have-var] \{\
.paragraph
.nr have-decl 0
.\}
.nr have-func 1
.nr is-func 0
.br
.if !\n[indent-synopsis] \
.nr indent-synopsis (4u * \n[fixed-width]u)
.if !\n[indent-synopsis-active] \
.in +\n[indent-synopsis]u
.ti -\n[indent-synopsis]u
.\}
.nr arg-ptr +1
.print-prefixes
.if (\n[arg-limit] < \n[arg-ptr]) \{\
.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
.if (\n[arg-limit] >= \n[arg-ptr]) \{\
.if (\n[type\n[arg-ptr]] == 2) \{\
.nop \*[Fa-font]\c
.do-func-args
.nop \f[\n[curr-font]]\s[\n[curr-size]u]\c
.\}\}
.nop \)\*[rp]\)\c
.if \n[in-synopsis-section] \
.nop \);\)\c
.ie (\n[arg-limit] >= \n[arg-ptr]) \{\
.nr arg-ptr -1
.nop \)\*[space\n[arg-ptr]]\c
.nr arg-ptr +1
.print-recursive
.\}
.el \
.print-and-reset
.if \n[in-synopsis-section] \
.if !\n[indent-synopsis-active] \
.in -\n[indent-synopsis]u
..
.de do-func-args
.if \n[in-synopsis-section] \{\
.ds func-arg
.nr num-func-args 0
.nr func-args-processed 0
.build-func-string \*[arg\n[arg-ptr]]
.if (\n[num-func-args] > 1) \
.ds arg\n[arg-ptr] "\*[func-arg]
.\}
.nop \)\*[arg\n[arg-ptr]]\c
.nr arg-ptr +1
.if (\n[arg-limit] >= \n[arg-ptr]) \{\
.if (\n[type\n[arg-ptr]] == 2) \{\
.nr reg-ddfa (\n[arg-ptr] - 1)
.nop \f[\n[curr-font]]\s[\n[curr-size]u]\|\c
.if !"\*[arg\n[arg-ptr]]"/*" \
.if !"\*[arg\n[arg-ptr]]"*/" \
.nop ,\)\c
.nop \)\*[space\n[reg-ddfa]]\f[]\s[0]\|\c
.do-func-args
.\}\}
..
.nr saved-nesting-level 0
.nr in-func-enclosure 0
.de Fo
.if (\n[in-func-enclosure]) \{\
.tm mdoc error: .Fo/.Fc can't be nested (#\n[.c])
.return
.\}
.nr saved-nesting-level \n[nesting-level]
.nr in-func-enclosure 1
.if !\n[arg-limit] \{\
.ie \n[.$] \{\
.ds macro-name Fo
.parse-args \$@
.\}
.el \
.tm Usage: .Fo function_name (#\n[.c])
.\}
.if \n[in-synopsis-section] \{\
.ie \n[is-func] \{\
.br
.nr have-var 0
.nr have-decl 0
.nr is-func 0
.\}
.el \{\
.if \n[have-func] \{\
.paragraph
.nr have-var 0
.nr have-decl 0
.\}\}
.if \n[have-decl] \{\
.paragraph
.nr have-var 0
.\}
.if \n[have-var] \{\
.paragraph
.nr have-decl 0
.\}
.nr have-func 1
.nr is-func 0
.br
.if !\n[indent-synopsis] \
.nr indent-synopsis (4u * \n[fixed-width]u)
.\}
.box func-box
.ev func-env
.evc 0
.in 0
.nf
.nr arg-ptr +1
.print-prefixes
.if (\n[arg-limit] >= \n[arg-ptr]) \{\
.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
.\}
..
.de Fc
.if !\n[in-func-enclosure] \{\
.tm mdoc warning: Extraneous .Fc (#\n[.c])
.return
.\}
.if \n[.$] \{\
.ds macro-name Fc
.parse-args \) \$@
.\}
.if !(\n[saved-nesting-level] == \n[nesting-level]) \
.tm mdoc warning: Unbalanced enclosure commands within .Fo/.Fc
.nr func-arg-count 0
.nr in-func-enclosure 0
.ie \n[in-synopsis-section] \
.nop \|\*[rp];\)
.el \
.nop \|\*[rp]\)
.br
.ev
.box
.chop func-box
.unformat func-box
.if \n[in-synopsis-section] \{\
.if !\n[indent-synopsis-active] \
.in +\n[indent-synopsis]u
.ti -\n[indent-synopsis]u
.\}
.nh
.nop \*[func-box]\c
.nr arg-ptr +1
.ie (\n[arg-limit] >= \n[arg-ptr]) \{\
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.print-recursive
.\}
.el \
.print-and-reset
.if \n[in-synopsis-section] \
.if !\n[indent-synopsis-active] \
.in -\n[indent-synopsis]u
..
.de build-func-string
.if !\n[num-func-args] \{\
.nr num-func-args \n[.$]
.nr func-args-processed 0
.ds func-arg
.\}
.nr func-args-processed +1
.as func-arg "\$1
.if (\n[func-args-processed] < \n[num-func-args]) \{\
.as func-arg "\*[hard-space]
.shift
.build-func-string \$@
.\}
..
.nr is-reference 0
.nr reference-count 0
.de Rs
.ie \n[.$] \
.tm Usage: .Rs (does not take arguments) (#\n[.c])
.el \{\
.nr is-reference 1
.reset-reference
.if \n[in-see-also-section] \
.paragraph
.nr reference-count 0
.\}
..
.de Re
.ie \n[.$] \
.tm Usage: .Re (does not take arguments) (#\n[.c])
.el \{\
.if !\n[is-reference] \{\
.tm mdoc warning: Extraneous .Re (#\n[.c])
.return
.\}
.print-reference
.reset-reference
.nr is-reference 0
.\}
..
.de reset-reference
.while (\n[author-count]) \{\
.ds author-name\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 url-count 0
.nr volume-count 0
.nr city-count 0
.nr date-count 0
.nr page-number-count 0
.nr book-count 0
.nr publisher-count 0
.nr reference-count 0
.ds journal-name
.ds issue-name
.ds optional-string
.ds corporate-name
.ds report-name
.ds reference-title-name
.ds reference-title-name-for-book
.ds url-name
.ds volume-name
.ds city-name
.ds date
.ds page-number-string
.ds book-name
.ds publisher-name
..
.de finish-reference
.nr reference-count -\$1
.ie \n[reference-count] \
.nop \),
.el \
.nop \).
..
.de print-reference
.nh
.if \n[author-count] \{\
.print-reference-authors
.nr reference-count -\n[author-count]
.\}
.if \n[reference-title-count] \{\
.unformat reference-title-name
.chop reference-title-name
.unformat reference-title-name-for-book
.chop reference-title-name-for-book
.ie ((\n[journal-count] == 1) : (\n[book-count] == 1)) \{\
.nop \)\*[q]\)\*[reference-title-name-for-book]\)\*[q]\c
.finish-reference \n[reference-title-count]
.\}
.el \{\
.nop \*[reference-title-name]\c
.finish-reference \n[reference-title-count]
.\}\}
.if \n[book-count] \{\
.unformat book-name
.chop book-name
.nop \*[book-name]\c
.finish-reference \n[book-count]
.\}
.if \n[publisher-count] \{\
.unformat publisher-name
.chop publisher-name
.nop \*[publisher-name]\c
.finish-reference \n[publisher-count]
.\}
.if \n[journal-count] \{\
.unformat journal-name
.chop journal-name
.nop \*[journal-name]\c
.finish-reference \n[journal-count]
.\}
.if \n[report-count] \{\
.unformat report-name
.chop report-name
.nop \*[report-name]\c
.finish-reference \n[report-count]
.\}
.if \n[issue-count] \{\
.unformat issue-name
.chop issue-name
.nop \*[issue-name]\c
.finish-reference \n[issue-count]
.\}
.if \n[volume-count] \{\
.unformat volume-name
.chop volume-name
.nop \*[volume-name]\c
.finish-reference \n[volume-count]
.\}
.if \n[url-count] \{\
.unformat url-name
.chop url-name
.nop \*[url-name]\c
.finish-reference \n[url-count]
.\}
.if \n[page-number-count] \{\
.unformat page-number-string
.chop page-number-string
.nop \*[page-number-string]\c
.finish-reference \n[page-number-count]
.\}
.if \n[corporate-count] \{\
.unformat corporate-name
.chop corporate-name
.nop \*[corporate-name]\c
.finish-reference \n[corporate-count]
.\}
.if \n[city-count] \{\
.unformat city-name
.chop city-name
.nop \*[city-name]\c
.finish-reference \n[city-count]
.\}
.if \n[date-count] \{\
.unformat date
.chop date
.nop \*[date]\c
.finish-reference \n[date-count]
.\}
.if \n[optional-count] \{\
.unformat optional-string
.chop optional-string
.nop \*[optional-string]\c
.finish-reference \n[optional-count]
.\}
.if \n[reference-count] \
.tm mdoc warning: unresolved reference problem
.hy \n[hyphen-flags]
..
.ds str-dpra "and
.de print-reference-authors
.nr reg-dpra 1
.while (\n[reg-dpra] < \n[author-count]) \{\
.unformat author-name\n[reg-dpra]
.chop author-name\n[reg-dpra]
.ie (\n[author-count] > 2) \
.nop \)\*[author-name\n[reg-dpra]],
.el \
.nop \)\*[author-name\n[reg-dpra]]
.nr reg-dpra +1
.\}
.unformat author-name\n[reg-dpra]
.chop author-name\n[reg-dpra]
.if (\n[author-count] > 1) \
.nop \)\*[str-dpra]
.nop \)\*[author-name\n[reg-dpra]],
..
.nr author-count 0
.ds author-name0
.de %A
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%A author_name ... (#\n[.c])
.return
.\}
.nr author-count +1
.nr reference-count +1
.ds macro-name %A
.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
.in 0
.nf
.do-references
..
.nr book-count 0
.ds book-name
.de %B
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%B book_name ... (#\n[.c])
.return
.\}
.if \n[is-reference] \{\
.nr book-count +1
.nr reference-count +1
.\}
.ds macro-name %B
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.ie \n[is-reference] \{\
.boxa book-name
.ev env-%B
.evc 0
.in 0
.nf
.nop \*[Em-font]\c
.do-references
.\}
.el \{\
.nop \*[Em-font]\c
.print-recursive
.\}
..
.nr city-count 0
.ds city-name
.de %C
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%C city_name ... (#\n[.c])
.return
.\}
.nr city-count +1
.nr reference-count +1
.ds macro-name %C
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa city-name
.ev env-%C
.evc 0
.in 0
.nf
.do-references
..
.nr date-count 0
.ds date
.de %D
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%D date ... (#\n[.c])
.return
.\}
.nr date-count +1
.nr reference-count +1
.ds macro-name %D
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa date
.ev env-%D
.evc 0
.in 0
.nf
.do-references
..
.nr publisher-count 0
.ds publisher-name
.de %I
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%I issuer/publisher_name ... (#\n[.c])
.return
.\}
.nr publisher-count +1
.nr reference-count +1
.ds macro-name %I
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa publisher-name
.ev env-%I
.evc 0
.in 0
.nf
.nop \*[Em-font]\c
.do-references
..
.nr journal-count 0
.ds journal-name
.de %J
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%J journal_name ... (#\n[.c])
.return
.\}
.nr journal-count +1
.nr reference-count +1
.ds macro-name %J
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa journal-name
.ev env-%J
.evc 0
.in 0
.nf
.nop \*[Em-font]\c
.do-references
..
.nr issue-count 0
.ds issue-name
.de %N
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%N issue_number ... (#\n[.c])
.return
.\}
.nr issue-count +1
.nr reference-count +1
.ds macro-name %N
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa issue-name
.ev env-%N
.evc 0
.in 0
.nf
.do-references
..
.nr optional-count 0
.ds optional-string
.de %O
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%O optional_information ... (#\n[.c])
.return
.\}
.nr optional-count +1
.nr reference-count +1
.ds macro-name %O
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa optional-string
.ev env-%O
.evc 0
.in 0
.nf
.do-references
..
.nr page-number-count 0
.ds page-number-string
.de %P
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%P page_number ... (#\n[.c])
.return
.\}
.nr page-number-count +1
.nr reference-count +1
.ds macro-name %P
.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
.in 0
.nf
.do-references
..
.nr corporate-count 0
.ds corporate-name
.de %Q
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%Q corporate_or_foreign_author ... (#\n[.c])
.return
.\}
.nr corporate-count +1
.nr reference-count +1
.ds macro-name %Q
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa corporate-name
.ev env-%Q
.evc 0
.in 0
.nf
.do-references
..
.nr report-count 0
.ds report-name
.de %R
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%R reference_report ... (#\n[.c])
.return
.\}
.nr report-count +1
.nr reference-count +1
.ds macro-name %R
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa report-name
.ev env-%R
.evc 0
.in 0
.nf
.do-references
..
.nr reference-title-count 0
.ds reference-title-name
.ds reference-title-name-for-book
.de %T
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%T reference_title ... (#\n[.c])
.return
.\}
.if \n[is-reference] \{\
.nr reference-title-count +1
.nr reference-count +1
.\}
.ds macro-name %T
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.ie \n[is-reference] \{\
.boxa reference-title-name-for-book
.ev env-%T
.evc 0
.in 0
.nf
.nop \*[No-font]\c
.do-references
.ds macro-name %T
.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
.in 0
.nf
.nop \*[Em-font]\c
.do-references
.\}
.el \{\
.nop \*[Em-font]\c
.print-recursive
.\}
..
.nr url-count 0
.ds url-name
.nr volume-count 0
.ds volume-name
.de %U
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%U URL ... (#\n[.c])
.return
.\}
.nr url-count +1
.nr reference-count +1
.ds macro-name %U
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa url-name
.ev env-%U
.evc 0
.in 0
.nf
.do-references
..
.de %V
.if (\n[arg-limit] : (\n[.$] == 0)) \{\
.tm Usage: .%V volume ... (#\n[.c])
.return
.\}
.nr volume-count +1
.nr reference-count +1
.ds macro-name %V
.parse-args \$@
.nr arg-ptr +1
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.boxa volume-name
.ev env-%V
.evc 0
.in 0
.nf
.do-references
..
.de do-references
.if !\n[is-reference] \
.tm mdoc error: .\*[macro-name] found outside of .Rs ... .Re (#\n[.c])
.nr reg-ddr1 \n[type\n[arg-ptr]]
.ie (\n[reg-ddr1] == 1) \{\
.append-arg \c 3
.\*[arg\n[arg-ptr]]
.\}
.el \{\
.nop \)\*[arg\n[arg-ptr]]\c
.ie (\n[arg-limit] == \n[arg-ptr]) \{\
.br
.ev
.boxa
.reset-args
.\}
.el \{\
.nr reg-ddr \n[arg-ptr]
.nr arg-ptr +1
.nop \)\*[space\n[reg-ddr]]\c
.do-references
.\}\}
..
.de Hf
.ie ((\n[.$] == 1) & (\n[arg-limit] == 0)) \{\
.paragraph
.nop File:
.Pa \$1
.Bd -literal
.so \$1
.Ed
.paragraph
.\}
.el \
.Usage: .Hf file (#\n[.c])
..
.nr have-author 0
.de An
.if !\n[arg-limit] \{\
.ie \n[.$] \{\
.ie        "\$1"-nosplit" \
.nr in-authors-section 0
.el \{ .ie "\$1"-split" \
.nr in-authors-section 1
.el \{\
.ds macro-name An
.parse-args \$@
.\}\}\}
.el \{\
.tm1 "Usage: .An {-nosplit | -split}
.tm1 "       .An author_name ... (#\n[.c])
.\}\}
.if \n[in-authors-section] \{\
.ie \n[have-author] \
.br
.el \
.nr have-author 1
.\}
.if \n[arg-limit] \{\
.nr arg-ptr +1
.ie (\n[arg-limit] >= \n[arg-ptr]) \{\
.nr curr-font \n[.f]
.nr curr-size \n[.ps]
.print-recursive
.\}
.el \{\
.tm Usage: .An author_name ... (#\n[.c])
.reset-args
.\}\}
..
.ds str-Rv-std-prefix "The
.ds str-Rv-std-suffix "function returns the value\~0 if successful;
.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.
.ds str-Rv-stds-prefix "The
.ds str-Rv-stds-and    "and
.ds str-Rv-stds-suffix "functions return the value\~0 if successful;
.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.
.ds str-Rv-std0 "Upon successful completion, the value\~0 is returned;
.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.
.de Rv
.if \n[arg-limit] \{\
.tm Usage: .Rv not callable by other macros (#\n[.c])
.reset-args
.return
.\}
.if !\n[.$] \{\
.tm Usage: .Rv [-std] [<function> ...] (#\n[.c])
.return
.\}
.if "\$1"-std" \{\
.nr reg-Rv \*[section]
.if ((\n[reg-Rv] < 2) : (\n[reg-Rv] > 3)) \
.tm Usage: .Rv -std in sections 2 and 3 only (#\n[.c])
.br
.shift
.ie (\n[.$] > 1) \{\
.nop \)\*[str-Rv-stds-prefix]
.nr reg-Rv 1
.while (\n[reg-Rv] < \n[.$]) \{\
.ie (\n[.$] > 2) \
.Fn \$\n[reg-Rv] ,
.el \
.Fn \$\n[reg-Rv]
.nr reg-Rv +1
.\}
.nop \)\*[str-Rv-stds-and]
.Fn \$\n[.$]
.nop \)\*[str-Rv-stds-suffix]
.\}
.el \{ .ie (\n[.$] == 1) \{\
.nop \)\*[str-Rv-std-prefix]
.Fn \$1
.nop \)\*[str-Rv-std-suffix]
.\}
.el \{\
.nop \)\*[str-Rv-std0]
.\}\}\}
..
.ds str-Ex-std-prefix "The
.ds str-Ex-std-suffix "utility exits\~0 on success,
.as str-Ex-std-suffix " and\~>0 if an error occurs.
.ds str-Ex-stds-prefix "The
.als str-Ex-stds-and str-Rv-stds-and
.ds str-Ex-stds-suffix "utilities exit\~0 on success,
.as str-Ex-stds-suffix " and\~>0 if an error occurs.
.de Ex
.if \n[arg-limit] \{\
.tm Usage: .Ex not callable by other macros (#\n[.c])
.reset-args
.return
.\}
.if !\n[.$] \{\
.tm Usage: .Ex [-std] [<utility> ...] (#\n[.c])
.return
.\}
.if "\$1"-std" \{\
.nr reg-Ex \*[section]
.if !((\n[reg-Ex] == 1) : (\n[reg-Ex] == 6) : (\n[reg-Ex] == 8)) \
.tm Usage: .Ex -std in sections 1, 6 and 8 only (#\n[.c])
.br
.shift
.ie (\n[.$] > 1) \{\
.nop \)\*[str-Ex-stds-prefix]
.nr reg-Ex 1
.while (\n[reg-Ex] < \n[.$]) \{\
.ie (\n[.$] > 2) \
.Nm \$\n[reg-Ex] ,
.el \
.Nm \$\n[reg-Ex]
.nr reg-Ex +1
.\}
.nop \)\*[str-Ex-stds-and]
.Nm \$\n[.$]
.nop \)\*[str-Ex-stds-suffix]
.\}
.el \{\
.nop \)\*[str-Ex-std-prefix]
.Nm \$1
.nop \)\*[str-Ex-std-suffix]
.\}\}
..
.de Mt
.Pa \$@
..
.de Lk
.ds str-Lk Sy \$@
.ie (\n[.$] > 1) \{\
.get-arg-type \$2
.ie (\n[arg-type] < 3) \{\
.Em \)\$2:
.ds str-Lk Sy "\$1"
.get-width "\$1"
.shift 2
.if \n[.$] \
.as str-Lk " \$@
.\}
.el \
.get-width "\$1"
.\}
.el \
.get-width "\$1"
.ie n \
.nr reg-Lk 26
.el \
.nr reg-Lk 38
.ie (\n[width] >= \n[reg-Lk]) \
.D1 \*[str-Lk]
.el \
.\*[str-Lk]
..
.de defunct-macro
.tmc mdoc error: .\$0 defunct
.if d \$0-usage \
.tmc , \*[\$0-usage]
.tm1 " (#\n[.c])
..
.als Db defunct-macro
.als Ds defunct-macro
.als Or defunct-macro
.ds Or-usage use `|'
.als Sf defunct-macro
.ds Sf-usage use .Pf or .Ns
.rn em e@
.de em
.tm1 "mdoc error: end-macro (.em) respecification is not allowed. (#\n[.c])
.tm1 "            Should this have been `.Em ...'?
.ab
..
.de empty-line
.if !\n[display-depth] \
.tm mdoc warning: Empty input line #\n[.c]
.sp
..
.blm empty-line
.ec
.if '\*[.T]'utf8' \{\
.rchar \- - ' `
.char \- \N'45'
.char  - \N'45'
.char  ' \N'39'
.char  ` \N'96'
.\}
.mso mdoc.local

SILENT KILLER Tool