nclose-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