diff options
Diffstat (limited to 'contrib/groff/tmac/tmac.doc')
-rw-r--r-- | contrib/groff/tmac/tmac.doc | 3427 |
1 files changed, 3427 insertions, 0 deletions
diff --git a/contrib/groff/tmac/tmac.doc b/contrib/groff/tmac/tmac.doc new file mode 100644 index 0000000..e575df7 --- /dev/null +++ b/contrib/groff/tmac/tmac.doc @@ -0,0 +1,3427 @@ +.\" Copyright (c) 1991 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 5.8 (Berkeley) 8/5/91 +.\" 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. +.\" +.\" .mdoc-parse - attempt to parse troff request arguments +.\" %beginstrip% +.if \n(.g \{\ +.cp 0 +.ftr C CR +.\} +.if \n(.g .ig +.de sO +.so /usr/share/tmac/\\$1 +.. +.if !\n(.g .ig +.de sO +.mso mdoc/\\$1 +.. +.if t \{\ +. sO doc-ditroff +.\} +.if n \{\ +. sO doc-nroff +.\} +.sO doc-common +.sO doc-syms +.\" NS Db macro - start/stop DEBUG MODE +.\" NS Db register DEBUG MODE +.\" NS iN register DEBUG MODE (inline if 1, to stderr if 0 (default)) +.nr Db 0 +.de Db +.ie \\n(.$==0 \{\ +. ie \\n(Db==0 \{\ +.tm DEBUGGING ON +. nr Db 1 +. \} +. el \{\ +.tm DEBUGGING OFF +. nr Db 0 +. \} +.\} +.el \{\ +. if "\\$1"on" \{\ +.tm DEBUGGING ON +. nr Db 1 +. \} +. if "\\$1"off" \{\ +.tm DEBUGGING OFF +. nr Db 0 +. \} +.\} +.. +.\" NS aV macro - parse argument vector (recursive) (.aV arg ... ) +.\" NS fV macro - parse argument vector (recursive) (.fV) +.\" NS aC register argument counter (aV/fV) +.\" NS fV register argument counter (must set to \\n(.$ prior to reuqest) (fV) +.\" NS A[0-9] argument vector (aV/fV) +.\" NS C[0-9] reg. arg type(1=macro, 2=arg, 3=punct-suf, 4=punct-pre) (aV/fV) +.\" NS S[0-9] space vector (sV) +.\" NS aP register argument pointer (aV) +.\" NS yU local string used for debugging +.\" NS iI local register (indent for inline debug mode) +.\" NS mN name of calling request (set in each user requestable macro) +.de aV +.nr aC \\n(aC+1 +.ie "\\$1"|" \{\ +. if "\\*(mN"Op" .ds A\\n(aC \fR\\$1\fP +. if "\\*(mN"Ar" .ds A\\n(aC \fR\\$1\fP +. if "\\*(mN"Fl" .ds A\\n(aC \fR\\$1\fP +. if "\\*(mN"Cm" .ds A\\n(aC \fR\\$1\fP +. if "\\*(mN"It" .ds A\\n(aC \fR\\$1\fP +.\} +.el .ds A\\n(aC \\$1 +.aU \\n(aC +.nr C\\n(aC \\n(aT +.s\\n(aT +.if \\n(Db \{\ +. if \\n(aT==1 .ds yU Executable +. if \\n(aT==2 .ds yU String +. if \\n(aT==3 .ds yU Closing Punctuation or suffix +. if \\n(aT==4 .ds yU Opening Punctuation or prefix +. if \\n(iN==1 \{\ +. br +. nr iI \\n(.iu +. in -\\n(iIu +. if \\n(aC==1 \{\ +\&\fBDEBUG(argv) MACRO:\fP `.\\*(mN' \fBLine #:\fP \\n(.c +. \} +\&\t\fBArgc:\fP \\n(aC \fBArgv:\fP `\\*(A\\n(aC' \fBLength:\fP \\n(sW +\&\t\fBSpace:\fP `\\*(S\\n(aC' \fBClass:\fP \\*(yU +. \} +. if \\n(iN==0 \{\ +. if \\n(aC==1 \{\ +. tm DEBUG(argv) MACRO: `.\\*(mN' Line #: \\n(.c +. \} +. tm \tArgc: \\n(aC Argv: `\\*(A\\n(aC' Length: \\n(sW +. tm \tSpace: `\\*(S\\n(aC' Class: \\*(yU +. \} +.\} +.ie \\n(.$==1 \{\ +. nr aP 0 +. ie \\n(dZ==1 \{\ +. if \\n(oM>1 .as b1 \\*(S0 +. \} +. el \{\ +. if \\n(oM>0 \{\ +. if \\n(fC==0 .as b1 \\*(S0 +. \} +. \} +. ds S0 \\*(S\\n(aC +. if \\n(Db \{\ +. if \\n(iN==1 \{\ +\&MACRO REQUEST: \t.\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9 +. br +. in \\n(iIu +. \} +. if \\n(iN==0 \{\ +.tm \tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9 +. \} +. \} +.\} +.el .aV \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.de fV +.nr aC \\n(aC+1 +.if "\\*(A\\n(aC"|" \{\ +. if "\\*(mN"Op" .ds A\\n(aC \fR\\*(A\\n(aC\fP +. if "\\*(mN"Ar" .ds A\\n(aC \fR\\*(A\\n(aC\fP +. if "\\*(mN"Fl" .ds A\\n(aC \fR\&\\*(A\\n(aC\fP +. if "\\*(mN"Cm" .ds A\\n(aC \fR\\*(A\\n(aC\fP +. if "\\*(mN"It" .ds A\\n(aC \fR\\*(A\\n(aC\fP +.\} +.aU \\n(aC +.nr C\\n(aC \\n(aT +.s\\n(aT +.if \\n(Db \{\ +. if \\n(aT==1 .ds yU Executable +. if \\n(aT==2 .ds yU String +. if \\n(aT==3 .ds yU Closing Punctuation or suffix +. if \\n(aT==4 .ds yU Opening Punctuation or prefix +. if \\n(iN==1 \{\ +. br +. nr iI \\n(.iu +. in -\\n(iIu +. if \\n(aC==1 \{\ +\&\fBDEBUG(fargv) MACRO:\fP `.\\*(mN' \fBLine #:\fP \\n(.c +. \} +\&\t\fBArgc:\fP \\n(aC \fBArgv:\fP `\\*(A\\n(aC' \fBLength:\fP \\n(sW +\&\t\fBSpace:\fP `\\*(S\\n(aC' \fBClass:\fP \\*(yU +. \} +. if \\n(iN==0 \{\ +. if \\n(aC==1 \{\ +. tm DEBUG(fargv) MACRO: `.\\*(mN' Line #: \\n(.c +. \} +. tm \tArgc: \\n(aC Argv: `\\*(A\\n(aC' Length: \\n(sW +. tm \tSpace: `\\*(S\\n(aC' Class: \\*(yU +. \} +.\} +.ie \\n(fV==1 \{\ +. nr aP 0 +. ie \\n(dZ==1 \{\ +. if \\n(oM>1 .as b1 \\*(S0 +. \} +. el \{\ +. if \\n(oM>0 \{\ +. if \\n(fC==0 .as b1 \\*(S0 +. \} +. \} +. ds S0 \\*(S\\n(aC +. nr fV 0 +. if \\n(Db \{\ +. ie \\n(iN \{\ +\&\tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9 +. br +. in \\n(iIu +. \} +. el \{\ +.tm \tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9 +. \} +. \} +.\} +.el \{\ +. nr fV \\n(fV-1 +. fV +.\} +.. +.\" NS aX macro - stuff saved strings into `b1' (used by -diag list) +.de aX +.nr aP \\n(aP+1 +.as b1 \&\\*(A\\n(aP +.ie \\n(fV==1 \{\ +. nr aP 0 +. nr fV 0 +.\} +.el \{\ +. as b1 \&\\*(sV +. nr fV \\n(fV-1 +. aX +.\} +.. +.\" NS aI macro - append arg to arg vector: .aI [arg] [type] (used by .En only) +.de aI +.ie \\n(aC<9 \{\ +. nr aC \\n(aC+1 +. ds A\\n(aC \\$1 +. nr C\\n(aC \\$2 +. s\\$2 +. ds xV S\\n(aC +.\} +.el \{\ +. tm Usage: Too many arguments (maximum of 8 accepted) (#\\n(.c) +. tm \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9 +.\} +.. +.\" +.\" NS aZ macro - print buffer (pB) and clean up arg vectors (aY) +.de aZ +.pB +.aY +.. +.\" NS aY macro - clean up arg vector +.de aY +.rm C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 +.rm A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 +.rm S1 S2 S3 S4 S5 S6 S7 S8 S9 +.nr aC 0 +.nr aP 0 +.. +.\" NS pB macro - test for end of vector (eol) (print b1 buffer or divert) +.de pB +.ie \\n(dZ==1 \{\ +. if \\n(oM==1 \{\&\\*(b1 +. rm S0 +. ds b1 +. \} +. if \\n(oM==0 \{\ +. x2 +. \} +.\} +.el \{\ +. ie \\n(oM==0 \{\&\\*(b1 +. rm S0 +. ds b1 +. \} +. el \{\ +. if ((\\n(sM==1)&(\\n(tP==0)) \{\ +. x1 +. \} +. \} +.\} +.hy +.. +.\" NS x1 macro - save buffer and divert if tP flag set +.\" NS eB diversion string +.\" NS b2 string save of buffer +.\" NS lK register count of lines read from input file +.de x1 +.nr dZ \\n(dZ+1 +.ds b2 \\*(b1 +.ds b1 +.nr lK \\n(.c +.ev 2 +.fi +.di eB +.. +.\" +.\" NS x2 macro - end diversion and print +.\" NS b0 string local temporary +.de x2 +.br +.di +.ev +.ie (\\n(.c-\\n(lK>1) \{\ +. ds b0 \&\\*(eB\\ +. ds b1 \\*(b2\\*(b0\\*(b1 +.\} +.el .ds b1 \\*(b2\\*(b1 +\&\\*(b1 +.rm eB b2 b0 b1 +.nr dZ \\n(dZ-1 +.. +.\" NS Fl macro - flags (appends - and prints flags) +.\" NS cF register save current font +.\" NS cZ register save current font size +.de Fl +.as b1 \&\\*(fL +.if \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +. as b1 \&\|\-\|\fP\s0 +. pB +. \} +. el \{\ +. ds mN Fl +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>0 \{\ +. ie (\\n(aC-\\n(aP)==0 \{\ +. as b1 \&\|\-\fP\s0 +. aZ +. \} +. el \{\ +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 \{\ +. as b1 \&\|\-\fP\s0 +. \\*(A\\n(aP +. \} +. el \{\ +. nr cF \\n(.f +. nr cZ \\n(.s +. if \\n(C\\n(aP==3 \{\ +. as b1 \&\|\-\| +. \} +. fR +. \} +. \} +.\} +.. +.\" +.\" NS fR macro - Fl flag recursion routine (special handling) +.\" NS jM local register +.\" NS jN local register +.\" +.de fR +.hy 0 +.nr jM \\n(C\\n(aP +.ie \\n(jM==1 \{\ +. as b1 \&\fP\s0 +. \\*(A\\n(aP +.\} +.el \{\ +. nr jN \\n(aP +. ie \\n(jM==2 \{\ +. ie !"\\*(A\\n(aP"\\*(Ba" \{\ +. ie !"\\*(A\\n(aP"\fR|\fP" \{\ +. ie "\\*(A\\n(aP"-" .as b1 \&\|\-\^\-\| +. el .as b1 \&\|\-\\*(A\\n(aP +. \} +. el .as b1 \&\\*(A\\n(aP +. \} +. el .as b1 \&\\*(A\\n(aP +. \} +. el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0 +. ie \\n(aC==\\n(aP \{\ +. if \\n(jM==4 .as b1 \&\|\- +. as b1 \&\fP\s0 +. aZ +. \} +. el \{\ +. nr aP \\n(aP+1 +. ie ((\\n(C\\n(aP==3)&(\\n(C\\n(jN==4)) .as b1 \&\|\- +. el .as b1 \&\\*(S\\n(jN +. fR \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.rr jM jN +.. +.\" +.\" NS nR macro - general name recursion routine +.\" NS jM local register +.\" NS jN local register +.de nR +.hy 0 +.nr jM \\n(C\\n(aP +.ie \\n(jM==1 \{\ +. as b1 \&\f\\n(cF\s\\n(cZ +. \\*(A\\n(aP +.\} +.el \{\ +. nr jN \\n(aP +. ie \\n(jM==2 .as b1 \&\\*(A\\n(aP +. el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0 +. ie \\n(aC==\\n(aP \{\ +. as b1 \&\f\\n(cF\s\\n(cZ +. aZ +. \} +. el \{\ +. nr aP \\n(aP+1 +. as b1 \&\\*(S\\n(jN +. nR +. \} +.\} +.rr jM jN +.. +.\" NS Ar macro - command line `argument' macro +.\" +.de Ar +.as b1 \\*(aR +.if \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +. as b1 file\ ...\fP\s0 +. pB +. \} +. el \{\ +. ds mN Ar +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>0 \{\ +. ie (\\n(aC-\\n(aP)==0 \{\ +. as b1 \&file\ ...\fP\s0 +. aZ +. \} +. el \{\ +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 \{\ +. as b1 \&file\ ...\fP\s0 +. \\*(A\\n(aP +. \} +. el \{\ +. nr cF \\n(.f +. nr cZ \\n(.s +. if \\n(C\\n(aP==3 \{\ +. as b1 \&file\ ... +. \} +. nR +. \} +. \} +.\} +.. +.\" NS Ad macro - Addresses +.de Ad +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Ad address ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Ad +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(aD +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Cd macro - Config declaration (for section 4 SYNOPSIS) (not callable) +.\" needs work - not very translatable +.de Cd +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Cd Configuration file declaration (#\\n(.c) +. el \{\ +. ds mN Cd +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.br +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(nM +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. ie \\n(nS \{\ +. if "\\*(mN"Cd" \{\ +. rs +. ie \\n(nS>1 .br +. el \{\ +. if \\n(iS==0 .nr iS \\n(Dsu +. \} +. in +\\n(iSu +. ti -\\n(iSu +. nr nS \\n(nS+1 +. \} +. nR +. in -\\n(iSu +. \} +. el .nR +.\} +.. +.\" NS Cm macro - Interactive command modifier (flag) +.de Cm +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Cm Interactive command modifier ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Cm +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(cM +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Dv macro - define variable +.de Dv +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Dv define_variable ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Dv +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(eR +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Em macro - Emphasis +.de Em +.if \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +. tm Usage: .Em text ... \\*(Pu (#\\n(.c) +. \} +. el \{\ +. ds mN Em +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(eM +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Er macro - Errnotype +.de Er +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Er ERRNOTYPE ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Er +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(eR +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Ev macro - Environment variable +.de Ev +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Ev ENVIRONMENT_VARIABLE ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Ev +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(eV +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Fd macro - function declaration - not callable (& no err check) +.\" NS fD register subroutine test (in synopsis only) +.\" NS fY register subroutine count (in synopsis only) (fortran only) +.\" NS fZ register also subroutine count (in synopsis only) +.de Fd +.ds mN Fd +.if \\n(nS>0 \{\ +.\" if a variable type was the last thing given, want vertical space +. if \\n(fX>0 \{\ +. Pp +. nr fX 0 +. \} +.\" if a subroutine was the last thing given, want vertical space +. if \\n(fZ>0 \{\ +. ie \\n(fD==0 \{\ +. Pp +. rs +. \} +. el .br +. \} +. nr fD \\n(fD+1 +.\} +.nr cF \\n(.f +.nr cZ \\n(.s +\&\\*(fD\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.br +.ft \\n(cF +.fs \\n(cZ +.. +.\" NS Fr macro - function return value - not callable (at the moment) +.de Fr +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Fr Function_return_value... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Fr +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(aR +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Ic macro - Interactive command +.de Ic +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Ic Interactive command ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Ic +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(iC +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Li macro - literals +.de Li +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage .Li argument ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Li +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(lI +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Or macro - Pipe symbol (OR) +.de Or +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Or ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Or +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(iC +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Ms macro - Math symbol +.de Ms +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Ms Math symbol ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Ms +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(sY +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Nm macro - Name of command or page topic +.\" NS n1 string - save first invocation of .Nm +.\" NS iS register - indent second command line in a synopsis +.de Nm +.if \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +. ie "\\*(n1"" .tm Usage: .Nm Name(s) ... \\*(Pu (#\\n(.c) +. el \&\\*(nM\\*(n1\fP\s0 +. \} +. el \{\ +. ds mN Nm +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>0 \{\ +. ie \\n(aC==\\n(aP \{\ +. as b1 \&\\*(nM\\*(n1\fP\s0 +. aZ +. \} +. el \{\ +. as b1 \\*(nM +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 \{\ +. as b1 \&\\*(n1\fP\s0 +. \\*(A\\n(aP +. \} +. el \{\ +. nr cF \\n(.f +. nr cZ \\n(.s +. if \\n(nS \{\ +. if "\\*(mN"Nm" \{\ +. rs +. in -\\n(iSu +. ie \\n(nS>1 .br +. el \{\ +. if \\n(iS==0 \{\ +. sw \\$1 +. nr iS ((\\n(sWu+1)*\\n(fW)u +. \} +. \} +. in +\\n(iSu +. ti -\\n(iSu +. nr nS \\n(nS+1 +. \} +. \} +. if "\\*(n1"" .ds n1 \\*(A\\n(aP +. nR +. \} +. \} +.\} +.. +.\" NS Pa macro - Pathname +.de Pa +.if \\n(aC==0 \{\ +. ie \\n(.$==0 \&\\*(pA~\fP\s0 +. el \{\ +. ds mN Pa +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(pA +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Sy macro - Symbolics +.de Sy +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Sy symbolic_text ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Sy +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(sY +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Tn macro - Trade Name Macro +.de Tn +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Tn Trade_name(s) ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Tn +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(tN\\*(tF +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS nN macro - Trade Name Macro for inside of reference +.de nN +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Tn Trade_name(s) ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Tn +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(tN +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS Va macro - variable name macro +.de Va +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Va variable_name(s) ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Va +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(vA +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" +.\" NS No macro - Normal text macro (default text style if mess up) +.de No +.as b1 \\*(nO +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .No must be called with arguments (#\\n(.c) +. el \{\ +. ds mN No +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 \{\ +. \\*(A\\n(aP +. \} +. el \{\ +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +. \} +.\} +.. +.\"------------------------------------------------------------------------ +.\" NS Op macro - Option Expression +.de Op +.if \\n(aC==0 \{\ +. ds mN Op +.\} +.\" .ds qL \&\\*(lO +.\" .ds qR \&\\*(rO +.ds qL \&\\*(lB +.ds qR \&\\*(rB +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 +.. +.\" NS Aq macro - Enclose string in angle brackets +.de Aq +.if \\n(aC==0 .ds mN Aq +.ds qL \&< +.ds qR \&> +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Bq macro - Enclose string in square brackets +.de Bq +.if \\n(aC==0 .ds mN Bq +.ds qL \&\\*(lB +.ds qR \&\\*(rB +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Dq macro - Enclose string in double quotes +.de Dq +.if \\n(aC==0 .ds mN Dq +.ds qL \&\\*(Lq +.ds qR \&\\*(Rq +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Eq macro - Enclose string in double quotes +.de Eq +.if \\n(aC==0 .ds mN Eq +.ds qL \\$1 +.ds qR \\$2 +.En \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Pq macro - Enclose string in parenthesis +.de Pq +.if \\n(aC==0 .ds mN Pq +.ds qL \&\\*(lP +.ds qR \&\\*(rP +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Ql macro - Quoted literal is in file mdoc-[dit|n|g]roff (too large +.\" an if-else to carry along recursively for `if n ...') +.\" +.\" NS Sq macro - Enclose string in single quotes +.de Qq +.if \\n(aC==0 .ds mN Qq +.ds qL \&\\*q +.ds qR \&\\*q +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Sq macro - Enclose string in single quotes +.de Sq +.if \\n(aC==0 .ds mN Sq +.ds qL \&\\*(sL +.ds qR \&\\*(sR +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" +.\" NS Es macro - Set up strings for .En call +.de Es +.if \\n(aC==0 \{\ +. ie \\n(.$>2 .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. el \{\ +. ds qL \\$1 +. ds qR \\$2 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. ds qL \\*(A\\n(aP +. nr aP \\n(aP+1 +. ds qR \\*(A\\n(aP +. ie \\n(aC>\\n(aP .c\\n(C\\n(aP +. el .aZ +.\} +.. +.\" .tm En beg arg(A[\\n(aP])==\\*(A\\n(aP; +.\" .tm En oM==\\n(oM; dZ==\\n(dZ; Xt==\\n(Xt; aC==\\n(aC +.\" NS En macro - Enclose string with given args (eg [ and ] etc) +.\" NS qL string variable set by calling macro +.\" NS qR string variable set by calling macro +.\" NS aJ register (for vR) +.de En +.ie \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +. as b1 \&\\*(qL\\*(qR +. pB +. \} +. el \{\ +.\". as mN (En) +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. as b1 \&\\*(qL +. \} +.\} +.el \{\ +. as b1 \&\\*(qL +.\} +.if \\n(aC>0 \{\ +. ie (\\n(aC-\\n(aP)==0 \{\ +. as b1 \&\\*(qR +. aZ +. \} +. el \{\ +. ie \\n(C\\n(aC==3 \{\ +. nr aJ \\n(aC-1 +. vR +. nr aJ \\n(aJ+1 +. ds A\\n(aJ \&\\*(qR\\*(A\\n(aJ +. nr aJ 0 +. \} +. el .aI \&\\*(qR 3 +. nr aP \\n(aP+1 +. if \\n(C\\n(aP==1 .\\*(A\\n(aP +. if \\n(C\\n(aP>1 \{\ +. nr aP \\n(aP-1 +. No +. \} +. \} +.\} +.. +.\" NS vR macro - vector routine (for En, trace backwards past trail punct) +.de vR +.if \\n(C\\n(aJ==3 \{\ +. nr aJ \\n(aJ-1 +. vR +.\} +.. +.\"------------------------------------------------------------------------ +.\" NS Ao macro - Angle open +.de Ao +.if \\n(aC==0 .ds mN Ao +.ds qL \&< +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Ac macro - Angle close +.de Ac +.if \\n(aC==0 .ds mN Ac +.ds qR \&> +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Bo macro - Bracket open +.de Bo +.if \\n(aC==0 .ds mN Bo +.ds qL \&[ +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Bc macro - Bracket close +.de Bc +.if \\n(aC==0 .ds mN Bc +.ds qR \&] +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Do macro - Double Quote open +.de Do +.if \\n(aC==0 .ds mN Do +.ds qL \&\\*(Lq +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Dc macro - Double Quote close +.de Dc +.if \\n(aC==0 .ds mN Dc +.ds qR \&\\*(Rq +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Eo macro - Enclose open +.de Eo +.if \\n(aC==0 .ds mN Eo +.ds qL \\$1 +.eO \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Ec macro - Enclose close +.de Ec +.if \\n(aC==0 .ds mN Ec +.ds qR \\$1 +.eC \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Oo macro - Option open +.de Oo +.if \\n(aC==0 .ds mN Oo +.ds qL \&[ +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Oc macro - Option close +.de Oc +.if \\n(aC==0 .ds mN Oc +.ds qR \&] +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Po macro - Parenthesis open +.de Po +.if \\n(aC==0 .ds mN Po +.ds qL \&( +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Pc macro - Parenthesis close +.de Pc +.if \\n(aC==0 .ds mN Pc +.ds qR \&) +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Qo macro - Straight Double Quote open +.de Qo +.if \\n(aC==0 .ds mN Qo +.ds qL \&\\*q +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Qc macro - Straight Double Quote close +.de Qc +.if \\n(aC==0 .ds mN Qc +.ds qR \&\\*q +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS So macro - Single Quote open +.de So +.if \\n(aC==0 .ds mN So +.ds qL \&\\*(sL +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Sc macro - Single Quote close +.de Sc +.if \\n(aC==0 .ds mN Sc +.ds qR \&\\*(sR +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Xo macro - Extend open (continue) +.de Xo +.if \\n(aC==0 .ds mN Xo +.\" .nr mN 1 +.ds qL +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Xe macro - Extend close (end) +.de Xc +.\" .nr mN 0 +.if \\n(aC==0 .ds mN Xc +.ds qR +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS eO macro - enclose string open +.\" NS oM register (extension possible) +.de eO +.nr oM \\n(oM+1 +.\" .tm eO last arg==A[\\n(aC]==\\*(A\\n(aC; aP==\\n(aP; oM==\\n(oM; dZ==\\n(dZ; +.ie \\n(aC==0 \{\ +. ie \\n(.$>0 \{\ +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. as b1 \\*(qL +. \} +. el \{\ +. as b1 \\*(qL +. if (\\n(dZ==0)&(\\n(sM==1) \{\ +. nr dZ \\n(dZ+1 +. ds b2 \\*(b1 +. ds b1 +. nr lK \\n(.c +. ev 2 +. fi +. di eB +. \} +. \} +.\} +.el \{\ +. as b1 \\*(qL +.\} +.ie \\n(aC>0 \{\ +. if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 .\\*(A\\n(aP +. el \{\ +. nr aP \\n(aP-1 +. No +. \} +. \} +. if \\n(aC==\\n(aP \{\ +. if \\n(tP==1 \{\ +.\" .tm SETTING Xt!!! +. nr Xt 1 +. \} +.\".\" . ds S0 +.\"CHANGED ds S0 \\*(iV +. aY +. \} +.\} +.el \{\ +. if \\n(oM>1 .as b1 \\*(sV +.\} +.. +.\" +.\" NS eC macro - enclose string close +.\" NS aa local register +.de eC +.nr oM \\n(oM-1 +.\" tm eC last arg==A[\\n(aC]==\\*(A\\n(aC; aP==\\n(aP; oM==\\n(oM; dZ==\\n(dZ; +.as b1 \\*(qR +.if \\n(aC==0 \{\ +. ie \\n(.$>0 \{\ +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +. el \{\ +. ie "\\*(xB"" \{\ +. pB +. \} +. el \{\ +. pB +.\\*(L\\n(lC +. nr Xt 0 +. ds xB +. \} +. \} +.\} +.if \\n(aC>0 \{\ +. ie \\n(aC==\\n(aP \{\ +. ie \\n(oM==0 \{\ +. aZ +. \} +. el .aY +. \} +. el \{\ +. nr aa \\n(aP+1 +. if \\n(C\\n(aa==2 .as b1 \\*(S\\n(aC +.\" tm CURRENT arg (aP==\\*(A\\n(aP and ap+1==\\*(A\\n(aa) tP==\\n(tP Xt==\\n(Xt +. rr aa +. if \\n(tP>0 \{\ +.\" tm UNSETTING Xt==\\n(Xt!!!! +. if \\n(Xt>0 .nr Xt \\n(Xt-1 +.\" tm NOW Xt==\\n(Xt!!!! +. \} +. No +. \} +.\} +.. +.\"------------------------------------------------------------------------ +.\" NS Pf macro - Prefix (calls .pF) +.de Pf +.if \\n(aC==0 .ds mN Pf +.ds qL \&\\$1 +.pF \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS pF macro - Prefix (for prefixing open quotes, brackets etc) +.de pF +.ie \\n(aC==0 \{\ +. as b1 \&\\*(qL +. ie \\n(.$<2 \{\ +. tm Warning: Missing arguments - prefix .Pf) +. pB +. \} +. el .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.\} +.el \{\ +. ie (\\n(aC-\\n(aP)>1 \{\ +. nr aP \\n(aP+1 +. as b1 \&\\*(A\\n(aP +. \} +. el .tm Warning: .Pf: trailing prefix (#\\n(.c) +.\} +.if \\n(aC>0 \{\ +. ie (\\n(aC-\\n(aP)==0 .aZ +. el \{\ +. nr aP \\n(aP+1 +. c\\n(C\\n(aP +. \} +.\} +.. +.\" NS Ns macro - remove space (space remove done by .aV or .fV) +.de Ns +.if \\n(aC==0 \{\ +. ds mN Ns +. ie \\n(.$>0 .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. el .tm Usage: .Ns must be called with arguments (#\\n(.c) +.\} +.No +.. +.de Ap +.if \\n(aC==0 \{\ +. ds mN Ap +. tm Usage: Ap "cannot be first request on a line (no .Ap)" (#\\n(.c) +.\} +.as b1 \&' +.No +.. +.\" NS Hv macro - Hard (unpaddable) Space vector +.\" NS iV string inter-vector space +.\" NS sV string inter-argument space +.de Hv +.ds iV \\*(sV +.ds sV \\*(hV +.. +.\" NS Sv macro - Soft Space vector (troff limitation) +.de Sv +.ds sV \\*(iV +.. +.\" NS Tv macro - Tab Space vector +.de Tv +.ds sV \\*(tV +.. +.\" NS Sm macro - Space mode +.\" NS sM register - default is one (space mode on) +.nr sM 1 +.de Sm +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm "Usage: .Sm [off | on]" (#\\n(.c) +. el \{\ +. ds mN Sm +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>0 \{\ +. nr aP \\n(aP+1 +. if "\\*(A\\n(aP"on" \{\ +. ds sV \\*(iV +. nr sM 1 +. \} +. if "\\*(A\\n(aP"off" \{\ +. ds sV +. rm S0 S1 S2 S3 S4 S5 S6 S7 S8 S9 +. nr sM 0 +. \} +. ie \\n(aC>\\n(aP \{\ +. No +. \} +. el .aY +.\} +.. +.\"------------------------------------------------------------------------ +.\" Size and Argument type macros +.\" NS aT macro - argument type +.\" NS aU macro - argument type (same as .aT but uses A[1-9] strings +.\" NS aT register argument type +.if \n(.g \{\ +.de aT +.nr aT 0 +.ie \\n(sW>2:(\A'\\$1'==0) \{\ +. nr aT 2 +.\} +.el \{\ +. if \\n(sW==1 \{\ +. ie \\n(z\\$1>2 \{\ +. nr aT \\n(z\\$1 +. \} +. el .nr aT 2 +. \} +. if \\n(sW==2 \{\ +. ie \\n(\\$1 \{\ +. nr aT 1 +. \} +. el .nr aT 2 +. \} +.\} +.. +.de aU +.nr aT 0 +.aW \\$1 +.ie \\n(sW>2:(\A'\\*(A\\$1'==0) .nr aT 2 +.el \{\ +. if \\n(sW==1 \{\ +. ie \\n(z\\*(A\\$1>2 \{\ +. nr aT \\n(z\\*(A\\$1 +. \} +. el .nr aT 2 +. \} +. if \\n(sW==2 \{\ +. ie (\\n(\\*(A\\$1) \{\ +. nr aT 1 +. \} +. el .nr aT 2 +. \} +.\} +.. +.\} +.if !\n(.g \{\ +.de aT +.nr aT 0 +.ie \\n(sW>2 \{\ +. nr aT 2 +.\} +.el \{\ +. if \\n(sW==1 \{\ +. ie \\n(z\\$1>2 \{\ +. nr aT \\n(z\\$1 +. \} +. el .nr aT 2 +. \} +. if \\n(sW==2 \{\ +. ie \\n(\\$1 \{\ +. nr aT 1 +. \} +. el .nr aT 2 +. \} +.\} +.. +.de aU +.nr aT 0 +.aW \\$1 +.ie \\n(sW>2 .nr aT 2 +.el \{\ +. if \\n(sW==1 \{\ +. ie \\n(z\\*(A\\$1>2 \{\ +. nr aT \\n(z\\*(A\\$1 +. \} +. el .nr aT 2 +. \} +. if \\n(sW==2 \{\ +. ie (\\n(\\*(A\\$1) \{\ +. nr aT 1 +. \} +. el .nr aT 2 +. \} +.\} +.. +.\} +.\" NS s1 macro - set spacing for class type 1 +.\" NS s2 macro - set spacing for class type 2 +.\" NS s3 macro - set spacing for class type 3 +.\" NS s1 macro - set spacing for class type 1 +.\" NS s2 macro - set spacing for class type 2 +.\" NS s3 macro - set spacing for class type 3 +.\" NS s4 macro - set spacing for class type 4 +.\" NS S[0-9] string spacing +.\" NS xX local register +.\" NS aa local register +.de s0 +.tm MDOC-ERROR: bogus type 0 (can't set space '\\*(A\\n(aC') (#\\n(.c) +.. +.de s1 +.if \\n(\\*(A\\n(aC==3 \{\ +. nr xX \\n(aC-1 +. rm S\\n(xX +. ds S\\n(aC \\*(sV +.\} +.if \\n(\\*(A\\n(aC==2 \{\ +. nr xX \\n(aC-1 +.\" this kludge can probably go away, but need to double check first +. ie "\\*(A\\n(aC"Nb" .ds S\\n(xX \\*(hV +. el .rm S\\n(xX +.\} +.. +.de s2 +.ds S\\n(aC \\*(sV +.. +.de s3 +.if \\n(aC>1 \{\ +. nr xX \\n(aC-1 +. rm S\\n(xX +.\} +.ds S\\n(aC \\*(sV +.. +.de s4 +.nr aa 0 +.. +.\" Class switches (on current argument aP) +.\" NS c0 macro - catch errors (non-existent class type 0) +.\" NS c1 macro - call request if type 1 +.\" NS c2 macro - call .No if type 2 +.\" NS c3 macro - call .No if type 3 +.\" NS c4 macro - call .No if type 4 +.de c0 +.tm MDOC-ERROR: bogus class 0 (can't determine '\\*(A\\n(aC') (#\\n(.c) +.. +.de c1 +.\\*(A\\n(aP +.. +.de c2 +.nr aP \\n(aP-1 +.No +.. +.de c3 +.nr aP \\n(aP-1 +.No +.. +.de c4 +.nr aP \\n(aP-1 +.No +.. +.\" NS y1 macro - ignore if class 1 +.\" NS y2 macro - ignore if class 2 +.\" NS y3 macro - append if type 3 +.\" NS y4 macro - append if type 4 +.de y1 +.nr aa 1 +.. +.de y2 +.nr aa 1 +.. +.de y3 +.as b1 \\*(A\\n(aP +.nr aP \\n(aP+1 +.n\\C\\n(aP +.. +.de y4 +.as b1 \\*(A\\n(aP +.nr aP \\n(aP+1 +.n\\C\\n(aP +.. +.\"-------------------------------------------------------------------------- +.\" Ns Bf macro - Begin Font Mode (will be begin-mode/end-mode in groff & TeX) +.\" Ns Ef macro - End Font Mode +.de Bf +.ds mN Bf +.ie \\n(.$>0 \{\ +. nr bF \\n(.f +. nr bZ \\n(.s +. if "\\$1"Em" \&\\*(eM\c +. if "\\$1"Li" \&\\*(lI\c +. if "\\$1"Sy" \&\\*(sY\c +. if "\\$1"-emphasis" \&\\*(eM\c +. if "\\$1"-literal" \&\\*(lI\c +. if "\\$1"-symbolic" \&\\*(sY\c +.\} +.el .tm Usage .Bf [Em | emphasis | Li | literal | Sy | symbolic] (#\\n(.c) +.. +.de Ef +.ds mN Ef +.ie \\n(.$>0 .tm Usage .Ef (does not take arguments) (#\\n(.c) +.el \&\f\\n(bF\s\\n(bZ +.. +.\" Ns Bk macro - Begin Keep +.\" Ns Ek macro - End Keep +.\" Ns kS string - keep type +.de Bk +.ds mN Bk +.ie \\n(.$==0 \{\ +.tm Usage: .Bk [-lines | -words] (#\\n(.c) +.\} +.el \{\ +. if !"\\*(kS"" .tm .Bk: nesting keeps not implemented yet. (#\\n(.c) +. if "\\$1"-lines" .tm .Bd -lines: Not implemented yet. (#\\n(.c) +. if "\\$1"-words" .Hv +. ds kS \\$1 +.\} +.. +.de Ek +.ds mN Ek +.ie \\n(.$>0 .tm Usage .Ek (does not take arguments) (#\\n(.c) +.el \{\ +. if "\\*(kS"-lines" .tm .Bd -lines: Not implemented yet. (#\\n(.c) +. if "\\*(kS"-words" .Sv +. rm kS +.\} +.. +.\" NS Bd macro - Begin Display display-type [offset string] +.\" NS Ed macro - end Display +.\" NS O[0-9] registers - stack of indent +.\" NS d[0-9] registers - display-type stack +.de Bd +.ds mN Bd +.ie \\n(.$==0 \{\ +.tm Usage: .Bd [-literal | -filled | -ragged | -unfilled] [-offset [string]] [-compact] (#\\n(.c) +.\} +.el \{\ +. ds aa +. nr bV 0 +. nr iD 0 +. nr dP \\n(dP+1 +. if "\\$1"-literal" \{\ +. nr iD \\n(iD+1 +. ds d\\n(dP dL +. nr cF \\n(.f +. nr cZ \\n(.s +. ie t \{\&\\*(lI +' ta 9n 18n 27n 36n 45n 54n 63n 72n +. \} +. el \{\ +' ta 8n 16n 24n 32n 40n 48n 56n 64n 72n +. \} +. nf +. \} +. if "\\$1"-filled" \{\ +. nr iD \\n(iD+1 +. ds d\\n(dP dF +. br +. \} +. if "\\$1"-ragged" \{\ +. nr iD \\n(iD+1 +. ds d\\n(dP dR +. na +. \} +. if "\\$1"-unfilled" \{\ +. nr iD \\n(iD+1 +. ds d\\n(dP dU +. nf +. \} +.\" .tm Here is argc: \\n(.$ and here is iD \\n(iD +. if ((\\n(iD>=1)&(\\n(.$>\\n(iD)) \{\ +. bV \\$2 \\$3 \\$4 +. \} +. if \\n(O\\n(dP>0 'in \\n(.iu+\\n(O\\n(dPu +. if (\\n(bV==0) \{\ +. if (\\n(nS==0) \{\ +. ie "\\*(d\\n(dP"dR" .sp \\n(dVu +. el 'sp \\n(dVu +. \} +. \} +. if \\n(cR==0 .ne 2v +. nr bV 0 +. nr iD 0 +.\} +.. +.\" NS bV macro - resolve remaining .Bd arguments +.de bV +.\" .tm in bV with args: \\$1 \\$2 \\$3 +.nr iD 1 +.ds bY +.if "\\$1"-offset" \{\ +. ds bY \\$2 +. if "\\*(bY"left" \{\ +. nr iD \\n(iD+1 +. nr O\\n(dP 0 +. \} +. if "\\*(bY"right" \{\ +. nr iD \\n(iD+1 +. nr O\\n(dP (\\n(.l/3)u +. \} +. if "\\*(bY"center" \{\ +. nr iD \\n(iD+1 +. nr O\\n(dP (\\n(.l-\\n(.i)/4u +. \} +. if "\\*(bY"indent" \{\ +. nr iD \\n(iD+1 +. nr O\\n(dP \\n(dIu +. \} +. if "\\*(bY"indent-two" \{\ +. nr iD \\n(iD+1 +. nr O\\n(dP \\n(dIu+\\n(dIu +. \} +. if \\n(iD==1 \{\ +. nr iD \\n(iD+1 +. sW "\\*(bY" +. ie \\n(sW>2 \{\ +. ie ((\\*(bY>9n)&(\\*(bY<100n)) \{\ +. nr O\\n(dP \\*(bY +. \} +. el .nr O\\n(dP (\\n(sW)*\\n(fWu +. \} +. el \{\ +. if \\n(sW==2 .aT \\*(bY +. ie \\n(aT==1 \{\ +. nr O\\n(dP \\n(\\*(bY +. \} +. el .nr O\\n(dP \\*(bY +. \} +. \} +.\} +.if "\\$1"-compact" \{\ +. nr bV 1 +.\} +.if \\n(iD<\\n(.$ \{\ +. ie "\\*(bY"" \{\ +. bV \\$2 \\$3 +. \} +. el \{\ +. bV \\$3 +. \} +.\} +.. +.\" NS Ed macro - end display +.de Ed +.ds mN Ed +.br +.if \\n(dP==0 .tm mdoc: Extraneous .Ed +.if "\\*(d\\n(dP"dL" \{\ +. ft \\n(cF +. fz \\n(cZ +.\} +.in \\n(.iu-\\n(O\\n(dPu +.rr O\\n(dP +.rm d\\n(dP +.nr dP \\n(dP-1 +.fi +.if t .ad +.. +.\"-------------------------------------------------------------------------- +.\" NS Bl macro - begin list (.Bl list-type) +.\" NS L[0-9] registers - stack of list types +.de Bl +.ie \\n(.$==0 \{\ +.tm Usage: .Bl [[-hang | -tag] [-width]] [ -item | -enum | -bullet | -diag] (#\\n(.c) +.\} +.el \{\ +. ds mN Bl +. nr aP 0 +. nr lC \\n(lC+1 +. ds A1 \\$2 +. ds A2 \\$3 +. ds A3 \\$4 +. ds A4 \\$5 +. ds A5 \\$6 +. ds A6 \\$7 +. ds A7 \\$8 +. ds A8 \\$9 +. nr fV \\n(.$-1 +. if "\\$1"-hang" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC hL +. nr w\\n(lC 6n +. nr tC 1 +. \} +. if "\\$1"-tag" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC tL +. nr tC 1 +. \} +. if "\\$1"-item" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC iT +. nr tC 1 +. \} +. if "\\$1"-enum" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC nU +. nr w\\n(lC 3n +. nr tC 1 +. \} +. if "\\$1"-bullet" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC bU +. nr w\\n(lC 2n +. nr tC 1 +. \} +. if "\\$1"-dash" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC hU +. nr w\\n(lC 2n +. nr tC 1 +. \} +. if "\\$1"-hyphen" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC hU +. nr w\\n(lC 2n +. nr tC 1 +. \} +. if "\\$1"-inset" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC lL +. nr tC 1 +. \} +. if "\\$1"-diag" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC mL +. nr mL 1 +. \} +. if "\\$1"-ohang" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC oL +. nr tC 1 +. \} +. if "\\$1"-column" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC cL +. \} +. ie \\n(aP==0 \{\ +. tm \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. tm Usage: .Bl [[-inset|-tag] -width] [-item|-enum|-bullet|-diag] (#\\n(.c) +. \} +. el \{\ +. tY +. if (\\n(aP==1)&(\\n(aP<\\n(.$) \{\ +. nr aP 0 +. lV +. if "\\*(L\\n(lC"cL" \{\ +. W\\n(wV +. nr w\\n(lC 0 +' in -\\n(eWu +. ie \\n(v\\n(lC==1 \{\ +. nr aa 0 +. \} +. el \{\ +. sp \\n(dVu +. \} +. nf +. nr wV 0 +. \} +. \} +. \} +. nr aP 0 +.\" . ds b1 +. aY +.\" .tm Here is L[\\n(lC]==\\*(L\\n(lC +.\} +.. +.if \n(.g \{\ +. nr i 10 +. while \ni<100 \{\ +. nr num!\nin 1 +. nr i +1 +. \} +.\} +.\" NS lV macro - resolve remaining .Bl arguments +.de lV +.nr aP \\n(aP+1 +.if \\n(fV>=\\n(aP \{\ +. nr iD 0 +. if "\\*(A\\n(aP"-compact" \{\ +. nr iD 1 +. nr v\\n(lC 1 +. \} +. if "\\*(A\\n(aP"-width" \{\ +. nr iD 1 +. nr aP \\n(aP+1 +. nr tW 1 +. ds t\\n(lC TagwidtH +. ds tS \\*(A\\n(aP +. aW \\n(aP +. ie \\n(sW>2 \{\ +. nr w\\n(lC (\\n(sW)*\\n(fWu +. if \\n(sW==3 \{\ +. ie \\n(.g \{\ +. if \A'\\*(tS' .if r num!\\*(tS \{\ +. nr w\\n(lC \\*(tS +. \} +. \} +. el \{\ +. if (\\*(tS>9n)&(\\*(tS<99n) \{\ +. nr w\\n(lC \\*(tSu +. \} +. \} +. \} +. \} +. el \{\ +. aT \\*(tS +. ie \\n(aT==1 \{\ +. nr w\\n(lC \\n(\\*(tS +. \} +. el \{\ +. nr w\\n(lC \\*(tSu +. \} +. \} +. \} +. if "\\*(A\\n(aP"-offset" \{\ +. nr iD 1 +. nr aP \\n(aP+1 +. ie "\\*(A\\n(aP"indent" \{\ +. nr o\\n(lC \\n(Dsu +. \} +. el \{\ +. ds tS \\*(A\\n(aP +. aW \\n(aP +. ie \\n(sW>2 \{\ +. nr o\\n(lC (\\n(sW)*\\n(fWu +. ie \\n(.g \{\ +. if \A'\\*(tS' .if r num!\\*(tS \{\ +. nr o\\n(lC \\*(tS +. \} +. \} +. el \{\ +. if (\\*(tS>9n)&(\\*(tS<100n) \{\ +. nr o\\n(lC \\*(tS +. \} +. \} +. \} +. el \{\ +. ie \\n(C\\n(aP==1 .nr o\\n(lC \\n(\\*(tS +. el .nr o\\n(lC \\*(tS +. \} +. \} +. \} +. if \\n(iD==0 \{\ +. if "\\*(L\\n(lC"cL" \{\ +. nr wV \\n(wV+1 +. ds A\\n(wV \\*(A\\n(aP +. \} +. \} +. if \\n(fV>\\n(aP .lV +.\} +.. +.\" NS El macro - end list +.\" NS iD local register +.de El +.ie \\n(.$>0 \{\ +. tm Usage: .El (#\\n(.c) +.\} +.el \{\ +. ds mN El +. nr iD 0 +. if "\\*(L\\n(lC"cL" \{\ +. nr iD 1 +. cC +. \} +. if "\\*(L\\n(lC"nU" \{\ +. nr nU 0 +. \} +. if \\n(mL>0 \{\ +. nr iD 1 +. nr mL 0 +. tZ +. nr lC \\n(lC-1 +. tY +. \} +. if "\\*(L\\n(lC"iT" \{\ +' in \\n(.iu-\\n(o\\n(lCu +. tZ +. nr lC \\n(lC-1 +. tY +. nr iD 1 +. \} +. if "\\*(L\\n(lC"oL" \{\ +' in \\n(.iu-\\n(o\\n(lCu +. tZ +. nr lC \\n(lC-1 +. tY +. nr iD 1 +. \} +. if "\\*(L\\n(lC"lL" \{\ +' in \\n(.iu-\\n(o\\n(lCu +. tZ +. nr lC \\n(lC-1 +. tY +. nr iD 1 +. \} +. if \\n(iD==0 \{\ +. lE +. \} +. br +. nr iD 0 +.\} +.. +.\" NS It macro - list item +.\" NS iD local register +.\" NS aA save pA font string for section FILES (no underline if nroff) +.de It +.if "\\*(L\\n(lC"" \{\ +. tm Usage .Bl -list-type [-width [string] | -compact | -offset [string]] (#\\n(.c) +. tm .It \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 +.\} +.\" .tm Here is L[\\n(lC]==\\*(L\\n(lC +.ne 3v +.ie \\n(.$>0 \{\ +. ds mN It +. ds b1 +. nr iD 0 +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. if "\\*(L\\n(lC"mL" \{\ +. nr iD 1 +. nr aP 0 +. aX +. \\*(L\\n(lC +. \} +. if "\\*(L\\n(lC"cL" \{\ +. ds b1 +. nr aP 0 +. nr iD 1 +. \\*(L\\n(lC +. \} +. if "\\*(L\\n(lC"iT" \{\ +. nr aP 0 +. nr iD 1 +. \\*(L\\n(lC +. \} +. if \\n(iD==0 \{\ +. fV +.\" tm ------------------------------------------------------------------------ +.\" tm It list-type==\\*(L\\n(lC, aP==\\n(aP +.\" tm It beg arg(A[1])==\\*(A1; oM==\\n(oM; dZ==\\n(dZ; Xt==\\n(Xt; aC==\\n(aC +. nr oM \\n(oM+1 +. nr tP 1 +. nr aP \\n(aP+1 +. nr tX \\n(C\\n(aP +. ds tX \\*(A\\n(aP +. if \\n(nF==1 \{\ +. ds aA \\*(pA +. if n .ds pA \\*(nO +. \} +. ie \\n(C\\n(aP==1 \{\ +. \\*(A\\n(aP +. \} +. el \{\ +. nr aP \\n(aP-1 +. No +. \} +.\" tm in It here is b1==\\*(b1 +.\" tm It mid arg(A[1])==\\*(A1; oM==\\n(oM; dZ==\\n(dZ; Xt==\\n(Xt; aC==\\n(aC +. ie \\n(Xt==1 .ds xB \&\\*(L\\n(lC +. el .\\*(L\\n(lC +. \} +. nr iD 0 +.\} +.el .\\*(L\\n(lC +.. +.\" NS lL macro - .It item of list-type inset +.de lL +.lY +.br +\&\\*(b1 +.nr oM \\n(oM-1 +.nr tP 0 +.ds b1 +.aY +'fi +.. +.\" NS hL macro - .It item of list-type hanging label (as opposed to tagged) +.de hL +.lX +.nr bb \\n(w\\n(lCu+\\n(lSu +.ti -\\n(bbu +.ie \w\\*(b1u>=(\\n(w\\n(lCu) \&\\*(b1 +.el \&\\*(b1\h'|\\n(bbu'\c +.nr oM \\n(oM-1 +.ds b1 +.nr tP 0 +.aY +'fi +.. +.\" NS oL macro - .It item of list-type overhanging label +.de oL +.lY +\&\\*(b1 +.br +.nr oM \\n(oM-1 +.ds b1 +.nr tP 0 +.aY +'fi +.. +.\" NS iT macro - .It item of list-type [empty label] +.de iT +.lY +.br +.\" .ds b1 +.aY +'fi +.. +.\" NS nU macro - Enumerated list +.\" NS nU register count +.\" NS hU macro - Hyphen paragraph list (sub bullet list) +.\" NS bU macro - Bullet paragraph list +.de nU +.nr oM \\n(oM+1 +.nr nU \\n(nU+1 +.ds b1 \&\\n(nU. +.uL +.. +.de bU +.nr oM \\n(oM+1 +.nr bU \\n(bU+1 +.ds b1 \&\\*(sY\&\(bu\fP +.uL +.. +.de hU +.nr oM \\n(oM+1 +.nr bU \\n(bU+1 +.ds b1 \&\\*(sY\&\-\fP +.uL +.. +.\" NS uL macro - .It item of list-type enum/bullet/hyphen +.de uL +.lX +.nr bb \\n(w\\n(lCu+\\n(lSu +.ti -\\n(bbu +.ie \w\\*(b1u>=(\\n(w\\n(lCu) \&\\*(b1 +.el \&\\*(b1\h'|\\n(bbu'\c +.nr oM \\n(oM-1 +.\" .nr dZ \\n(dZ+1 +.ds b1 +.nr tP 0 +.aY +'fi +.. +.\" NS mL macro - .It item of list-type diagnostic-message +.de mL +.nr cF \\n(.f +.nr cZ \\n(.s +.ie \\n(mL==1 \{\ +. nr zB \\n(.c +. ie (\\n(zB-\\n(zA)>1 .Pp +. el .br +. nr zA \\n(zB +. nr zB 0 +.\} +.el \{\ +. nr zA \\n(.c +. br +.\} +\&\\*(sY\\*(b1\f\\n(cF\s\\n(cZ\\*(lS\c +.aY +.ds b1 +'fi +.. +.\" NS tL macro - .It item of list-type "tag" +.de tL +.\" tm in tL here is b1==\\*(b1 +.if \\n(tW==0 .lW +.lX +.nr bb \\n(w\\n(lCu+\\n(lSu +.ti -\\n(bbu +.ie (\w\\*(b1u)>(\\n(w\\n(lCu) \{\&\\*(b1 +. br +.\} +.el \&\\*(b1\h'|\\n(bbu'\c +.if \\n(nF==1 \{\ +. if n .ds pA \\*(aA +.\} +.nr oM \\n(oM-1 +.nr tP 0 +.\" .nr dZ \\n(dZ+1 +.ds b1 +.aY +'fi +.. +.\" NS lW macro - resolve unknown label/tag width (if .Bl [inset | tag] only) +.de lW +.if !"TagwidtH"\\*(t\\n(lC" \{\ +. ie \\n(tX==1 \{\ +. ds t\\n(lN \\*(tX +. nr w\\n(lN \\n(\\*(tX +. \} +. el \{\ +. ds t\\n(lN No +. nr w\\n(lN \\n(No +. \} +. if !"\\*(t\\n(lC"\\*(t\\n(lN" .nr tC 1 +.\} +.. +.\" NS lX macro - set up vertical spacing (if compact) and offset+indent (all) +.de lX +.ie \\n(tC \{\ +. nr tC 0 +. nr tW 0 +. if \\n(v\\n(lC==0 .sp \\n(dVu +. in \\n(.iu+\\n(w\\n(lCu+\\n(o\\n(lCu+\\n(lSu +.\} +.el \{\ +. ie \\n(v\\n(lC==1 \{\ +. nr aa 0 +. \} +. el \{\ +. sp \\n(dVu +. \} +.\} +.if !\\n(cR .ne 2v +.. +.\" NS lY macro - set up vertical spacing (if compact) and offset+indent (all) +.de lY +.ie \\n(tC \{\ +. nr tC 0 +. nr tW 0 +. if \\n(v\\n(lC==0 .sp \\n(dVu +. in \\n(.iu+\\n(o\\n(lCu +.\} +.el \{\ +. ie \\n(v\\n(lC==1 \{\ +. nr aa 0 +. \} +. el \{\ +. sp \\n(dVu +. \} +.\} +.if !\\n(cR .ne 2v +.. +.\" NS tS temporary string +.\" NS hL macro - hanging list function +.\" NS tS temporary string +.\" NS hL macro - hanging list function +.\" NS lT macro - tagged list function +.\" NS lE macro - list end function +.\" NS tX string (initial string) +.\" NS tX register (initial class) +.\" NS tC parameter change flag +.\" NS Xt save current list-type flag +.\" NS lC register - list type stack counter +.\" NS tP register tag flag (for diversions) +.\" NS w[0-9] register tag stack (nested tags) +.\" NS t[0-9] register tag string stack (nested tags) +.\" NS o[0-9] register offset stack (nested tags) +.\" NS v[0-9] register vertical tag break stack +.\" NS h[0-9] register horizontal tag stack (continuous if 1, break if 0) +.nr lC 0 +.nr wV 0 +.nr w1 0 +.nr o1 0 +.nr v1 0 +.nr h1 0 +.ds t\n(lC +.de lE +.\" IN lC o[\\n(lC]==\\n(o\\n(lC, w[\\n(lC]==\\n(w\\n(lC, +.ie \\n(o\\n(lC>0 \{\ +' in \\n(.iu-(\\n(w\\n(lCu)-(\\n(o\\n(lCu)-\\n(lSu +. rr o\\n(lC +.\} +.el 'in \\n(.iu-\\n(w\\n(lCu-\\n(lSu +.if \\n(lC<=0 .tm Extraneous .El call (#\\n(.c) +.tZ +.nr lC \\n(lC-1 +.tY +.. +.\" NS tY macro - set up next block for list +.\" NS tZ macro - decrement stack +.\" NS tY register (next possible lC value) +.de tY +.nr tY (\\n(lC+1) +.nr w\\n(tY 0 +.nr h\\n(tY 0 +.nr o\\n(tY 0 +.ds t\\n(tY \\*(t\\n(lC +.ds L\\n(tY +.nr v\\n(tY 0 +.. +.de tZ +.rm L\\n(tY +.rr w\\n(tY +.rr h\\n(tY +.rr o\\n(tY +.rm t\\n(tY +.rr v\\n(tY +.nr tY \\n(tY-1 +.. +.\" initial values +.nr w1 0 +.nr o1 0 +.nr h1 0 +.ds t1 +.nr v1 0 +.nr tY 1 +.\" NS Xr macro - cross reference (man page only) +.de Xr +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Xr manpage_name [section#] \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Xr +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 .tm Usage: .Xr manpage_name [section#] \\*(Pu (#\\n(.c) +. el \{\ +. ie \\n(C\\n(aP>2 .y\\n(C\\n(aP +. el \{\ +. as b1 \&\\*(xR\\*(A\\n(aP\fP\s0 +. if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. if \\n(C\\n(aP==2 \{\ +. as b1 \&(\\*(A\\n(aP) +. nr aP \\n(aP+1 +. \} +. if \\n(aC>=\\n(aP \{\ +. c\\n(C\\n(aP +. \} +. \} +. \} +. aZ +. \} +.\} +.. +.\" NS Sx macro - cross section reference +.de Sx +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Sx Usage: .Sx Section Header \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Sx +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. as b1 \\*(sX +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS cC macro - column-list end-list +.\" NS eW macro - column indent width +.\" NS cI register - column indent width +.\" NS W[1-5] macro - establish tabs for list-type column +.de cC +'in \\n(.iu-\\n(o\\n(lCu-\\n(w\\n(lCu +.ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i +.fi +.tZ +.nr lC \\n(lC-1 +.tY +.. +.de W1 +.ta \w\\*(A1 u +.nr eW \w\\*(A1 u +'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu +.. +.de W2 +.ta \w\\*(A1 u +\w\\*(A2 u +.nr eW \w\\*(A1 u+\w\\*(A2 u +'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu +.. +.de W3 +.ta \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +.nr eW \w\\*(A1 u+\w\\*(A2 u+\w\\*(A3 u +'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu +.. +.de W4 +.ta \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +.nr eW \w\\*(A1 u+\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu +.. +.de W5 +.ta \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u +.nr eW \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u +' in \\n(.iu+\\n(eWu+\\n(o\\n(lCu +.. +.\" This is packed abnormally close, intercol width should be an option +.de W6 +.ta \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u +\w\\*(A6 +.nr eW \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u +\w\\*(A6 +' in \\n(.iu+\\n(eWu+\\n(o\\n(lCu +.. +.\" NS cL macro - column items +.de cL +.if \\n(w\\n(lC==0 .nr w\\n(lC \\n(eWu +.if \\n(.u==0 \{\ +. fi +' in \\n(.iu+\\n(eWu +.\} +.ti -\\n(eWu +.fV +.nr aP \\n(aP+1 +.ie \\n(aC>=\\n(aP \{\ +. if "\\*(A\\n(aP"Ta" \{\ +. nr jJ \\n(aP-1 +. rm S\\n(jJ +. rr jJ +. \} +. c\\n(C\\n(aP +.\} +.el .tm Usage: .It column_string [Ta [column_string ...] ] (#\\n(.c) +.. +.\" NS Ta macro - append tab (\t) +.de Ta +.ie \\n(aC>0 \{\ +. nr aP \\n(aP+1 +. ie \\n(aC>=\\n(aP \{\ +. if "\\*(A\\n(aP"Ta" \{\ +. nr jJ \\n(aP-1 +. rm S\\n(jJ +. rr jJ +. \} +. as b1 \\t +. c\\n(C\\n(aP +. \} +. el \{\ +. as b1 \\t\\c +. rm S\\n(aP +. pB +. aY +.\" . ds b1 +. \} +.\} +.el \{\ +. tm Usage: Ta must follow column entry: e.g. (#\\n(.c) +. tm .It column_string [Ta [column_string ...] ] +.\} +.. +.\" +.\" NS Dl macro - display (one line) literal +.de Dl +'ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i +.in \\n(.iu+\\n(Dsu +.ie \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +. tm Usage: .Dl argument ... (#\\n(.c) +. \} +. el \{\ +. ds mN Dl +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. Li +. \} +.\} +.el \{\ +. tm Usage: .Dl not callable by other macros (#\\n(.c) +.\} +.in \\n(.iu-\\n(Dsu +.. +.\" +.\" NS D1 macro - display (one line) +.de D1 +'ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i +.in \\n(.iu+\\n(Dsu +.ie \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +. tm Usage: .D1 argument ... (#\\n(.c) +. \} +. el \{\ +. ds mN D1 +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 .\\*(A\\n(aP +. el .No +. \} +.\} +.el \{\ +. tm Usage: .D1 not callable by other macros (#\\n(.c) +.\} +.in \\n(.iu-\\n(Dsu +.. +.\" NS Ex macro - DEFUNCT +.de Ex +.tm Ex defunct, Use .D1: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" +.\" NS Ex macro - DEFUNCT +.de Ex +.tm Ex defunct, Use .D1: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" +.\" NS Vt macro - Variable type (for forcing old style variable declarations) +.\" this is not done in the same manner as .Ot for fortrash - clean up later +.de Vt +.\" if a function declaration was the last thing given, want vertical space +.if \\n(fD>0 \{\ +. Pp +. nr fD 0 +.\} +.\" if a subroutine was the last thing given, want vertical space +.if \\n(fZ>0 \{\ +. ie \\n(fX==0 \{\ +. Pp +. rs +. \} +. el .br +.\} +.nr fX \\n(fX+1 +.nr cF \\n(.f +.nr cZ \\n(.s +\\*(fT\&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.ie \\n(oT==0 .br +.el \&\ \& +.ft \\n(cF +.fs \\n(cZ +.. +.\" +.\" NS Ft macro - Function type +.nr fZ 0 +.de Ft +.if \\n(nS>0 \{\ +. if \\n(fZ>0 \{\ +. Pp +. nr fD 0 +. nr fX 0 +. \} +. if \\n(fD>0 \{\ +. Pp +. nr fD 0 +. nr fX 0 +. \} +. if \\n(fX>0 \{\ +. Pp +. nr fX 0 +. \} +. nr fY 1 +.\} +.nr cF \\n(.f +.nr cZ \\n(.s +\&\\*(fT\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.ft \\n(cF +.fs \\n(cZ +.\" .br +.. +.\" +.\" NS Ot macro - Old Function type (fortran - no newline) +.\" Ns oT register +.nr oT 0 +.de Ot +.nr oT 1 +.if \\n(nS>0 \{\ +. if \\n(fZ>0 \{\ +. Pp +. nr fD 0 +. nr fX 0 +. \} +. if \\n(fD>0 \{\ +. Pp +. nr fD 0 +. nr fX 0 +. \} +. if \\n(fX>0 \{\ +. Pp +. nr fX 0 +. \} +. nr fY 1 +.\} +.if \\n(.$==4 .as b1 \&\\*(fT\&\\$1 \\$2 \\$3 \\$4 +.if \\n(.$==3 .as b1 \&\\*(fT\&\\$1 \\$2 \\$3 +.if \\n(.$==2 .as b1 \&\\*(fT\&\\$1 \\$2 +.if \\n(.$==1 .as b1 \&\\*(fT\&\\$1 +.as b1 \&\ \fP +.. +.\" +.\" NS Fa macro - Function arguments +.de Fa +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Fa Function Arguments ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Fa +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.ie \\n(fC>0 \{\ +. fC +.\} +.el \{\ +. if \\n(aC>\\n(aP \{\ +. as b1 \\*(fA +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +. if \\n(nS>0 \{\ +. if \\n(fZ>0 .br +. \} +. \} +.\} +.. +.\" NS fC macro - interal .Fa for .FO and .Fc +.de fC +.ie \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +.\" . nr aa \\n(aP +.\" . if \\n(nS>0 \{\ +. ds Fb +. nr fB 0 +. nr Fb 0 +. fB \\*(A\\n(aP +. if \\n(fB>1 \{\ +. rm A\\n(aP +. rn Fb A\\n(aP +. \} +.\" . \} +. if \\n(fC>1 \{\ +. as b1 \&\f\\n(cF\s\\n(cZ,\\*(S\\n(aP\\*(fA\\*(A\\n(aP\fP\s0 +.\" . as b1 \&\\,\\*(S\\n(aP\fP\s0\\*(fA\\*(A\\n(aP\fP\s0 +. \} +. if \\n(fC==1 \{\ +. as b1 \&\|\\*(fA\\*(A\\n(aP\fP\s0 +. \} +. nr fC \\n(fC+1 +. fC +.\} +.el \{\ +. aY +.\} +.. +.\" NS Fn macro - functions +.\" NS fY register - dick with old style function declarations (fortran) +.\" NS fZ register - break a line when more than one function in a synopsis +.\" +.de Fn +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Fn function_name function_arg(s) ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Fn +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(nS>0 \{\ +.\" if there is/has been more than one subroutine declaration +. if \\n(fY==0 \{\ +. if \\n(fZ>0 \{\ +. Pp +. nr fX 0 +. nr fD 0 +. \} +. \} +. if \\n(fY==1 \{\ +. br +. nr fX 0 +. nr fD 0 +. nr fY 0 +. \} +. if \\n(fD>0 \{\ +. Pp +. nr fX 0 +. \} +. if \\n(fX>0 \{\ +. Pp +. nr fD 0 +. \} +. nr fZ \\n(fZ+1 +. nr fY 0 +. rs +. ie \\n(nS>1 .br +. el \{\ +. if \\n(iS==0 \{\ +. nr iS ((8)*\\n(fW)u +. \} +. \} +. in +\\n(iSu +. ti -\\n(iSu +. nr nS \\n(nS+1 +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. as b1 \\*(fN\\*(A\\n(aP\fP\s0\\*(lp +. ie \\n(aC>\\n(aP \{\ +. as b1 \\*(fA +. nr aP \\n(aP+1 +. f\\n(C\\n(aP +. \} +. el \{\ +. as b1 \|\\*(rp +. aZ +. \} +. if \\n(nS>0 \{\ +. in -\\n(iSu +. \} +.\} +.. +.\" +.\" NS f1 macro - class switch +.\" NS f2 macro - handle function arguments +.\" NS f3 macro - punctuation +.\" NS f4 macro - write out function +.de f1 +.as b1 \\*(rp\f\\n(cF\s\\n(cZ +.\\*(A\\n(aP +.. +.de f2 +.if \\n(nS>0 \{\ +. ds Fb +. nr fB 0 +. nr Fb 0 +. fB \\*(A\\n(aP +. if \\n(fB>1 \{\ +. rm A\\n(aP +. rn Fb A\\n(aP +. \} +.\} +.as b1 \\*(A\\n(aP +.ie \\n(aC>\\n(aP \{\ +. nr aa \\n(aP +. nr aP \\n(aP+1 +. if \\n(C\\n(aP==2 \{\ +. as b1 \&\|\f\\n(cF\s\\n(cZ,\\*(S\\n(aa\fP\s0\| +. \} +. f\\n(C\\n(aP +.\} +.el \{\ +. as b1 \\*(rp\f\\n(cF\s\\n(cZ +. aZ +.\} +.. +.de f3 +.as b1 \\*(rp\f\\n(cF\s\\n(cZ\\*(A\\n(aP +.ie \\n(aC>\\n(aP \{\ +. No +.\} +.el .aZ +.. +.de f4 +.as b1 \\*(rp\f\\n(cF\s\\n(cZ\\*(S\\n(aP\\*(A\\n(aP +.ie \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. No +.\} +.el .aZ +.. +.de Fo +.hy 0 +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Fo function_name +. el \{\ +. ds mN Fo +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(nS>0 \{\ +.\" if there is/has been more than one subroutine declaration +. if \\n(fY==0 \{\ +. if \\n(fZ>0 \{\ +. Pp +. nr fX 0 +. nr fD 0 +. \} +. \} +. if \\n(fY==1 \{\ +. br +. nr fX 0 +. nr fD 0 +. nr fY 0 +. \} +. if \\n(fD>0 \{\ +. Pp +. nr fX 0 +. \} +. if \\n(fX>0 \{\ +. Pp +. nr fD 0 +. \} +. nr fZ \\n(fZ+1 +. nr fY 0 +. rs +. ie \\n(nS>1 .br +. el \{\ +. if \\n(iS==0 \{\ +. nr iS ((8)*\\n(fW)u +. \} +. \} +. in +\\n(iSu +. ti -\\n(iSu +. nr nS \\n(nS+1 +.\} +.if \\n(aC>\\n(aP \{\ +. nr oM \\n(oM+1 +. nr fC 1 +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. as b1 \\*(fN\\*(A\\n(aP\fP\s0\\*(lp +. aY +.\} +.. +.de Fc +.if \\n(aC==0 \{\ +. if \\n(.$>0 \{\ +. ds mN Fo +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.nr fC 0 +.nr oM \\n(oM-1 +.as b1 \|\\*(rp +.ie \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. \\*(A\\n(aP +.\} +.el \{\ +. aZ +.\} +.if \\n(nS>0 \{\ +. in -\\n(iSu +.\} +.hy +.. +.\" NS fb macro - if SYNOPSIS, set hard space inbetween function args +.\" NS fb register - count of words in a function argument +.\" NS Fb register - counter +.\" NS Fb string - temporary string +.de fB +.\" .tm fB==\\n(fB, Fb==\\n(Fb, 1==\\$1 2==\\$2 3==\\$3 4==\\$4 5==\\$5 6==\\$6 +.if \\n(fB==0 \{\ +. nr fB \\n(.$ +. nr Fb 0 +. ds Fb +.\} +.nr Fb \\n(Fb+1 +.as Fb \&\\$1 +.if \\n(Fb<\\n(fB \{\ +. as Fb \&\\*(hV +. fB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.\} +.. +.\" NS Fc - Function close - not implemented yet +.\" NS Fo - Function open - not implemented yet +.\" +.\" Very crude references, stash all reference info into strings (usual +.\" use of b1 buffer, then b1 contents copied to string of retrievable +.\" naming convention), print out reference on .Re request and clean up. +.\" Ordering very limited, no fancy citations, but can do articles, journals +.\" and books - need to add several missing options (like city etc). +.\" should be able to grab a refer entry, massage it a wee bit (prefix +.\" a `.' to the %[A-Z]) and not worry (ha!) +.\" +.\" NS Rs macro - Reference Start +.\" NS rS register - Reference Start flag +.\" NS rS string - Reference Start buffer name for next save (of b1 buffer) +.de Rs +.nr rS 1 +.rC +.if \\n(nA==1 .Pp +.nr Kl 0 +.. +.\" NS Re macro - Reference End +.de Re +.rZ +.rC +.nr rS 0 +.. +.\" NS rC macro - reference cleanup +.de rC +.nr uK 0 +.nr jK 0 +.nr nK 0 +.nr oK 0 +.nr qK 0 +.nr rK 0 +.nr tK 0 +.nr vK 0 +.nr dK 0 +.nr pK 0 +.nr bK 0 +.ds rS +.rm U1 U2 U3 U4 U5 U6 U7 U8 +.rm uK jK nK oK rK qK tK vK dK pK bK +.. +.\" NS rZ macro - reference print +.de rZ +.if \\n(uK \{\&\\*(U1, +. nr aK 1 +. if (\\n(uK>1 \{\ +. aK +. \} +. nr Kl -\\n(uK +.\} +.if \\n(tK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \{\ +. ie (\\n(jK==1):(\\n(bK==1) \{\&\\*q\\*(tK\\*q. +. \} +. el \{\&\\*(eM\\*(tK\\*(nO. +. \} +. \} +. if \\n(Kl>0 \{\ +. ie (\\n(jK==1):(\\n(bK==1) \{\&\\*q\\*(tK\\*q, +. \} +. el \{\&\\*(eM\\*(tK\\*(nO, +. \} +. \} +.\} +.if \\n(bK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(eM\\*(bK\\*(nO. +. if \\n(Kl>0 \&\\*(eM\\*(bK\\*(nO, +.\} +.if \\n(jK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(eM\\*(jK\\*(nO. +. if \\n(Kl>0 \&\\*(eM\\*(jK\\*(nO, +.\} +.if \\n(rK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(rK. +. if \\n(Kl>0 \&\\*(rK, +.\} +.if \\n(nK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(nK. +. if \\n(Kl>0 \&\\*(nK, +.\} +.if \\n(vK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(vK. +. if \\n(Kl>0 \&\\*(vK, +.\} +.if \\n(pK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(pK. +. if \\n(Kl>0 \&\\*(pK, +.\} +.if \\n(qK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(qK. +. if \\n(Kl>0 \&\\*(qK, +.\} +.if \\n(dK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(dK. +. if \\n(Kl>0 \&\\*(dK, +.\} +.if \\n(oK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(oK. +. if \\n(Kl>0 \&\\*(oK, +.\} +.if \\n(Kl>0 .tm unresolved reference problem +.. +.\" NS aK macro - print out reference authors +.de aK +.nr aK \\n(aK+1 +.ie (\\n(uK-\\n(aK)==0 \{\&and \\*(U\\n(aK, +.\} +.el \{\&\\*(U\\n(aK, +. aK +.\} +.. +.\" NS %A macro - reference author(s) +.\" NS uK register - reference author(s) counter +.\" NS U[1-9] strings - reference author(s) names +.de %A +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%A Author_name (#\\n(.c) +. el \{\ +. nr uK \\n(uK+1 +. nr Kl \\n(Kl+1 +. ds rS U\\n(uK +. ds mN %A +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %B macro - [reference] Book Name +.\" NS bK string - Book Name +.\" NS bK register - Book Name flag +.de %B +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%B Book Name (#\\n(.c) +. el \{\ +. ds mN %B +. if \\n(rS>0 \{\ +. nr bK \\n(bK+1 +. nr Kl \\n(Kl+1 +. ds rS bK +. \} +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. ie \\n(rS==0 \{\ +. as b1 \&\\*(eM +. nR +. \} +. el .rR +.\} +.. +.\" NS %D macro - [reference] Date +.\" NS dK string - Date String +.\" NS dK register - Date flag +.de %D +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%D Date (#\\n(.c) +. el \{\ +. ds mN %D +. nr dK \\n(dK+1 +. nr Kl \\n(Kl+1 +. ds rS dK +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %J macro - [reference] Journal Name +.\" NS jK register - [reference] Journal Name flag +.\" NS jK string - [reference] Journal Name +.de %J +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%J Journal Name (#\\n(.c) +. el \{\ +. ds mN %J +. nr jK \\n(jK+1 +. ds rS jK +. nr Kl \\n(Kl+1 +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %N macro - [reference] issue number +.\" NS nK register - [reference] issue number flag +.\" NS nK string - [reference] issue number +.de %N +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%N issue number (#\\n(.c) +. el \{\ +. nr nK \\n(nK+1 +. nr Kl \\n(Kl+1 +. ds rS nK +. ds mN %N +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %O macro - [reference] optional information +.\" NS oK register - [reference] optional information flag +.\" NS oK string - [reference] optional information +.de %O +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%O optional information ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN %O +. nr oK \\n(oK+1 +. nr Kl \\n(Kl+1 +. ds rS oK +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %P macro - [reference] page numbers +.\" NS pK register - [reference] page number flag +.\" NS pK string - [reference] page number +.de %P +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%P page numbers ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN %P +. nr pK \\n(pK+1 +. nr Kl \\n(Kl+1 +. ds rS pK +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %Q macro - Corporate or Foreign Author +.\" NS qK string - Corporate or Foreign Author +.\" NS qK register - Corporate or Foreign Author flag +.de %Q +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%Q Corporate or Foreign Author (#\\n(.c) +. el \{\ +. ds mN %Q +. nr qK \\n(qK+1 +. nr Kl \\n(Kl+1 +. ds rS qK +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %R macro - [reference] report name +.\" NS rK string - [reference] report name +.\" NS rK register - [reference] report flag +.de %R +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%R reference report (#\\n(.c) +. el \{\ +. ds mN %R +. nr rK \\n(rK+1 +. nr Kl \\n(Kl+1 +. ds rS rK +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %T macro - reference title +.\" NS tK string - reference title +.\" NS tK register - reference title flag +.de %T +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%T (#\\n(.c) +. el \{\ +. ds mN %T +. if \\n(rS>0 \{\ +. nr tK \\n(tK+1 +. nr Kl \\n(Kl+1 +. ds rS tK +. \} +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +.\" . ie \\n(jS==1 \{\ +.\" . nr cF \\n(.f +.\" . nr cZ \\n(.s +.\" . ds qL \&\\*(Lq\\*(rA +.\" . ds qR \&\\*(Rq\f\\n(cF\s\\n(cZ +.\" . En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.\" . \} +.\" . el \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. ie \\n(rS==0 \{\ +. as b1 \&\\*(eM +. nR +. \} +. el .rR +.\" . \} +.\} +.. +.\" NS %V macro - reference volume +.\" NS vK string - reference volume +.\" NS vK register - reference volume flag +.de %V +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%V Volume , ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN %V +. nr vK \\n(vK+1 +. nr Kl \\n(Kl+1 +. ds rS vK +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS rR macro - reference recursion routine +.\" NS jM local register +.\" NS jN local register +.de rR +.hy 0 +.nr jM \\n(C\\n(aP +.ie \\n(jM==1 \{\ +.\" . as b1 \&\f\\n(cF\s\\n(cZ +. ie "\\*(A\\n(aP"Tn" \{\ +. nN +. \} +. el \{\ +. if \\n(aC>8 .tm Usage: \\*(mN - maximum 8 arguments (#\\n(.c) +. aI rR 1 +. \\*(A\\n(aP +. \} +.\} +.el \{\ +. nr jN \\n(aP +. ie \\n(jM==2 .as b1 \&\\*(A\\n(aP +. el .as b1 \&\\*(A\\n(aP +.\" . el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0 +. ie \\n(aC==\\n(aP \{\ +.\" . as b1 \&\f\\n(cF\s\\n(cZ +. rD +. \} +. el \{\ +. nr aP \\n(aP+1 +. as b1 \&\\*(S\\n(jN +. rR +. \} +.\} +.rr jM jN +.. +.\" NS rD macro - save b1 buffer in to appropriate name +.de rD +.as \\*(rS \\*(b1 +.ds b1 +.ds rS +.aY +.. +.\" NS Hf macro - source include header files. +.de Hf +.Pp +File: +.Pa \\$1 +.Pp +.nr cF \\n(.f +.nr cZ \\n(.s +.ie t \{\ +\&\\*(lI +.br +.ta +9n 18n 27n 36n 45n 54n 63n 72n +.\} +.el \{\ +.ta +8n 16n 24n 32n 40n 48n 56n 64n 72n +.\} +.nf +.so \\$1 +.fi +.ft \\n(cF +.fz \\n(cZ +.Pp +.. +.\" NS An macro - author name +.\" NS aN register +.nr aN 0 +.de An +.if \\n(nY==1 \{\ +. ie \\n(aN==1 \{\ +. br +. \} +. el \{\ +. nr aN 1 +. \} +.\} +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .An author_name ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN An +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Sf macro -defunct +.de Sf +.tm .Sf defunct, use prefix or Ns +.. +.ds rV "function returns the value 0 if successful; otherwise the value -1 is returned and the global variable \\*(vAerrno\fP is set to indicate the error. +.\" Ns Rv macro - return values +.\" Ns rV string - standard return message +.de Rv +.ie \\n(.$==0 \{\ +.tm Usage: .Rv [-std] (#\\n(.c) +.\} +.el \{\ +. ds mN Rv +.\" . nr aP 0 +.\" . nr lR \\n(lR+1 +.\" . ds A1 \\$2 +.\" . ds A2 \\$3 +.\" . ds A3 \\$4 +.\" . ds A4 \\$5 +.\" . ds A5 \\$6 +.\" . ds A6 \\$7 +.\" . ds A7 \\$8 +.\" . ds A8 \\$9 +.\" . nr fV \\n(.$-1 +. if "\\$1"-std" \{\ +. nr cH \\*(cH +. if (\\n(cH<2):(\\n(cH>3) .tm Usage: .Rv -std sections 2 and 3 only +. br +\&The +.Fn \\$2 +\&\\*(rV +. \} +.\} +.. |