1 .\" Copyright (c) 1991 The Regents of the University of California.
2 .\" All rights reserved.
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\" notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\" notice, this list of conditions and the following disclaimer in the
11 .\" documentation and/or other materials provided with the distribution.
12 .\" 3. All advertising materials mentioning features or use of this software
13 .\" must display the following acknowledgement:
14 .\" This product includes software developed by the University of
15 .\" California, Berkeley and its contributors.
16 .\" 4. Neither the name of the University nor the names of its contributors
17 .\" may be used to endorse or promote products derived from this software
18 .\" without specific prior written permission.
20 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 .\" @(#)doc 5.8 (Berkeley) 8/5/91
33 .\" Modified by jjc@jclark.com as follows: the doc-* files are assumed to be
34 .\" installed as mdoc/doc-* rather than tmac.doc-* (the filename
35 .\" `tmac.doc-common' would be too long); when using groff, the doc-* files
36 .\" are loaded using the `mso' request.
38 .\" .mdoc-parse - attempt to parse troff request arguments
46 .so /usr/share/tmac/\\$1
60 .\" NS Db macro - start/stop DEBUG MODE
61 .\" NS Db register DEBUG MODE
62 .\" NS iN register DEBUG MODE (inline if 1, to stderr if 0 (default))
86 .\" NS aV macro - parse argument vector (recursive) (.aV arg ... )
87 .\" NS fV macro - parse argument vector (recursive) (.fV)
88 .\" NS aC register argument counter (aV/fV)
89 .\" NS fV register argument counter (must set to \\n(.$ prior to reuqest) (fV)
90 .\" NS A[0-9] argument vector (aV/fV)
91 .\" NS C[0-9] reg. arg type(1=macro, 2=arg, 3=punct-suf, 4=punct-pre) (aV/fV)
92 .\" NS S[0-9] space vector (sV)
93 .\" NS aP register argument pointer (aV)
94 .\" NS yU local string used for debugging
95 .\" NS iI local register (indent for inline debug mode)
96 .\" NS mN name of calling request (set in each user requestable macro)
100 . if "\\*(mN"Op" .ds A\\n(aC \fR\\$1\fP
101 . if "\\*(mN"Ar" .ds A\\n(aC \fR\\$1\fP
102 . if "\\*(mN"Fl" .ds A\\n(aC \fR\\$1\fP
103 . if "\\*(mN"Cm" .ds A\\n(aC \fR\\$1\fP
104 . if "\\*(mN"It" .ds A\\n(aC \fR\\$1\fP
111 . if \\n(aT==1 .ds yU Executable
112 . if \\n(aT==2 .ds yU String
113 . if \\n(aT==3 .ds yU Closing Punctuation or suffix
114 . if \\n(aT==4 .ds yU Opening Punctuation or prefix
120 \&\fBDEBUG(argv) MACRO:\fP `.\\*(mN' \fBLine #:\fP \\n(.c
122 \&\t\fBArgc:\fP \\n(aC \fBArgv:\fP `\\*(A\\n(aC' \fBLength:\fP \\n(sW
123 \&\t\fBSpace:\fP `\\*(S\\n(aC' \fBClass:\fP \\*(yU
127 . tm DEBUG(argv) MACRO: `.\\*(mN' Line #: \\n(.c
129 . tm \tArgc: \\n(aC Argv: `\\*(A\\n(aC' Length: \\n(sW
130 . tm \tSpace: `\\*(S\\n(aC' Class: \\*(yU
136 . if \\n(oM>1 .as b1 \\*(S0
140 . if \\n(fC==0 .as b1 \\*(S0
146 \&MACRO REQUEST: \t.\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
151 .tm \tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
155 .el .aV \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
159 .if "\\*(A\\n(aC"|" \{\
160 . if "\\*(mN"Op" .ds A\\n(aC \fR\\*(A\\n(aC\fP
161 . if "\\*(mN"Ar" .ds A\\n(aC \fR\\*(A\\n(aC\fP
162 . if "\\*(mN"Fl" .ds A\\n(aC \fR\&\\*(A\\n(aC\fP
163 . if "\\*(mN"Cm" .ds A\\n(aC \fR\\*(A\\n(aC\fP
164 . if "\\*(mN"It" .ds A\\n(aC \fR\\*(A\\n(aC\fP
170 . if \\n(aT==1 .ds yU Executable
171 . if \\n(aT==2 .ds yU String
172 . if \\n(aT==3 .ds yU Closing Punctuation or suffix
173 . if \\n(aT==4 .ds yU Opening Punctuation or prefix
179 \&\fBDEBUG(fargv) MACRO:\fP `.\\*(mN' \fBLine #:\fP \\n(.c
181 \&\t\fBArgc:\fP \\n(aC \fBArgv:\fP `\\*(A\\n(aC' \fBLength:\fP \\n(sW
182 \&\t\fBSpace:\fP `\\*(S\\n(aC' \fBClass:\fP \\*(yU
186 . tm DEBUG(fargv) MACRO: `.\\*(mN' Line #: \\n(.c
188 . tm \tArgc: \\n(aC Argv: `\\*(A\\n(aC' Length: \\n(sW
189 . tm \tSpace: `\\*(S\\n(aC' Class: \\*(yU
195 . if \\n(oM>1 .as b1 \\*(S0
199 . if \\n(fC==0 .as b1 \\*(S0
206 \&\tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
211 .tm \tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
220 .\" NS aX macro - stuff saved strings into `b1' (used by -diag list)
234 .\" NS aI macro - append arg to arg vector: .aI [arg] [type] (used by .En only)
244 . tm Usage: Too many arguments (maximum of 8 accepted) (#\\n(.c)
245 . tm \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
249 .\" NS aZ macro - print buffer (pB) and clean up arg vectors (aY)
254 .\" NS aY macro - clean up arg vector
256 .rm C0 C1 C2 C3 C4 C5 C6 C7 C8 C9
257 .rm A0 A1 A2 A3 A4 A5 A6 A7 A8 A9
258 .rm S1 S2 S3 S4 S5 S6 S7 S8 S9
262 .\" NS pB macro - test for end of vector (eol) (print b1 buffer or divert)
265 . if \\n(oM==1 \{\&\\*(b1
274 . ie \\n(oM==0 \{\&\\*(b1
279 . if ((\\n(sM==1)&(\\n(tP==0)) \{\
286 .\" NS x1 macro - save buffer and divert if tP flag set
287 .\" NS eB diversion string
288 .\" NS b2 string save of buffer
289 .\" NS lK register count of lines read from input file
300 .\" NS x2 macro - end diversion and print
301 .\" NS b0 string local temporary
306 .ie (\\n(.c-\\n(lK>1) \{\
308 . ds b1 \\*(b2\\*(b0\\*(b1
310 .el .ds b1 \\*(b2\\*(b1
315 .\" NS Fl macro - flags (appends - and prints flags)
316 .\" NS cF register save current font
317 .\" NS cZ register save current font size
322 . as b1 \&\|\-\|\fP\s0
327 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
331 . ie (\\n(aC-\\n(aP)==0 \{\
337 . ie \\n(C\\n(aP==1 \{\
344 . if \\n(C\\n(aP==3 \{\
353 .\" NS fR macro - Fl flag recursion routine (special handling)
354 .\" NS jM local register
355 .\" NS jN local register
367 . ie !"\\*(A\\n(aP"\\*(Ba" \{\
368 . ie !"\\*(A\\n(aP"\fR|\fP" \{\
369 . ie "\\*(A\\n(aP"-" .as b1 \&\|\-\^\-\|
370 . el .as b1 \&\|\-\\*(A\\n(aP
372 . el .as b1 \&\\*(A\\n(aP
374 . el .as b1 \&\\*(A\\n(aP
376 . el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0
377 . ie \\n(aC==\\n(aP \{\
378 . if \\n(jM==4 .as b1 \&\|\-
384 . ie ((\\n(C\\n(aP==3)&(\\n(C\\n(jN==4)) .as b1 \&\|\-
385 . el .as b1 \&\\*(S\\n(jN
386 . fR \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
392 .\" NS nR macro - general name recursion routine
393 .\" NS jM local register
394 .\" NS jN local register
399 . as b1 \&\f\\n(cF\s\\n(cZ
404 . ie \\n(jM==2 .as b1 \&\\*(A\\n(aP
405 . el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0
406 . ie \\n(aC==\\n(aP \{\
407 . as b1 \&\f\\n(cF\s\\n(cZ
412 . as b1 \&\\*(S\\n(jN
418 .\" NS Ar macro - command line `argument' macro
424 . as b1 file\ ...\fP\s0
429 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
433 . ie (\\n(aC-\\n(aP)==0 \{\
434 . as b1 \&file\ ...\fP\s0
439 . ie \\n(C\\n(aP==1 \{\
440 . as b1 \&file\ ...\fP\s0
446 . if \\n(C\\n(aP==3 \{\
454 .\" NS Ad macro - Addresses
457 . ie \\n(.$==0 .tm Usage: .Ad address ... \\*(Pu (#\\n(.c)
460 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
463 .if \\n(aC>\\n(aP \{\
471 .\" NS Cd macro - Config declaration (for section 4 SYNOPSIS) (not callable)
472 .\" needs work - not very translatable
475 . ie \\n(.$==0 .tm Usage: .Cd Configuration file declaration (#\\n(.c)
492 .if \\n(aC>\\n(aP \{\
502 . if \\n(iS==0 .nr iS \\n(Dsu
514 .\" NS Cm macro - Interactive command modifier (flag)
517 . ie \\n(.$==0 .tm Usage: .Cm Interactive command modifier ... \\*(Pu (#\\n(.c)
533 .if \\n(aC>\\n(aP \{\
541 .\" NS Dv macro - define variable
544 . ie \\n(.$==0 .tm Usage: .Dv define_variable ... \\*(Pu (#\\n(.c)
547 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
550 .if \\n(aC>\\n(aP \{\
558 .\" NS Em macro - Emphasis
562 . tm Usage: .Em text ... \\*(Pu (#\\n(.c)
579 .if \\n(aC>\\n(aP \{\
587 .\" NS Er macro - Errnotype
590 . ie \\n(.$==0 .tm Usage: .Er ERRNOTYPE ... \\*(Pu (#\\n(.c)
593 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
596 .if \\n(aC>\\n(aP \{\
604 .\" NS Ev macro - Environment variable
607 . ie \\n(.$==0 .tm Usage: .Ev ENVIRONMENT_VARIABLE ... \\*(Pu (#\\n(.c)
610 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
613 .if \\n(aC>\\n(aP \{\
621 .\" NS Fd macro - function declaration - not callable (& no err check)
622 .\" NS fD register subroutine test (in synopsis only)
623 .\" NS fY register subroutine count (in synopsis only) (fortran only)
624 .\" NS fZ register also subroutine count (in synopsis only)
628 .\" if a variable type was the last thing given, want vertical space
633 .\" if a subroutine was the last thing given, want vertical space
645 \&\\*(fD\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
650 .\" NS Fr macro - function return value - not callable (at the moment)
653 . ie \\n(.$==0 .tm Usage: .Fr Function_return_value... \\*(Pu (#\\n(.c)
656 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
659 .if \\n(aC>\\n(aP \{\
667 .\" NS Ic macro - Interactive command
670 . ie \\n(.$==0 .tm Usage: .Ic Interactive command ... \\*(Pu (#\\n(.c)
673 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
676 .if \\n(aC>\\n(aP \{\
684 .\" NS Li macro - literals
687 . ie \\n(.$==0 .tm Usage .Li argument ... \\*(Pu (#\\n(.c)
703 .if \\n(aC>\\n(aP \{\
711 .\" NS Or macro - Pipe symbol (OR)
714 . ie \\n(.$==0 .tm Usage: .Or ... \\*(Pu (#\\n(.c)
717 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
720 .if \\n(aC>\\n(aP \{\
728 .\" NS Ms macro - Math symbol
731 . ie \\n(.$==0 .tm Usage: .Ms Math symbol ... \\*(Pu (#\\n(.c)
734 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
737 .if \\n(aC>\\n(aP \{\
745 .\" NS Nm macro - Name of command or page topic
746 .\" NS n1 string - save first invocation of .Nm
747 .\" NS iS register - indent second command line in a synopsis
751 . ie "\\*(n1"" .tm Usage: .Nm Name(s) ... \\*(Pu (#\\n(.c)
752 . el \&\\*(nM\\*(n1\fP\s0
770 . ie \\n(aC==\\n(aP \{\
771 . as b1 \&\\*(nM\\*(n1\fP\s0
777 . ie \\n(C\\n(aP==1 \{\
778 . as b1 \&\\*(n1\fP\s0
792 . nr iS ((\\n(sWu+1)*\\n(fW)u
800 . if "\\*(n1"" .ds n1 \\*(A\\n(aP
806 .\" NS Pa macro - Pathname
809 . ie \\n(.$==0 \&\\*(pA~\fP\s0
812 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
815 .if \\n(aC>\\n(aP \{\
823 .\" NS Sy macro - Symbolics
826 . ie \\n(.$==0 .tm Usage: .Sy symbolic_text ... \\*(Pu (#\\n(.c)
842 .if \\n(aC>\\n(aP \{\
850 .\" NS Tn macro - Trade Name Macro
853 . ie \\n(.$==0 .tm Usage: .Tn Trade_name(s) ... \\*(Pu (#\\n(.c)
856 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
859 .if \\n(aC>\\n(aP \{\
867 .\" NS nN macro - Trade Name Macro for inside of reference
870 . ie \\n(.$==0 .tm Usage: .Tn Trade_name(s) ... \\*(Pu (#\\n(.c)
873 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
876 .if \\n(aC>\\n(aP \{\
884 .\" NS Va macro - variable name macro
887 . ie \\n(.$==0 .tm Usage: .Va variable_name(s) ... \\*(Pu (#\\n(.c)
890 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
893 .if \\n(aC>\\n(aP \{\
902 .\" NS No macro - Normal text macro (default text style if mess up)
906 . ie \\n(.$==0 .tm Usage: .No must be called with arguments (#\\n(.c)
909 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
912 .if \\n(aC>\\n(aP \{\
914 . ie \\n(C\\n(aP==1 \{\
924 .\"------------------------------------------------------------------------
925 .\" NS Op macro - Option Expression
934 .En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
936 .\" NS Aq macro - Enclose string in angle brackets
938 .if \\n(aC==0 .ds mN Aq
941 .En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
943 .\" NS Bq macro - Enclose string in square brackets
945 .if \\n(aC==0 .ds mN Bq
948 .En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
950 .\" NS Dq macro - Enclose string in double quotes
952 .if \\n(aC==0 .ds mN Dq
955 .En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
957 .\" NS Eq macro - Enclose string in double quotes
959 .if \\n(aC==0 .ds mN Eq
962 .En \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
964 .\" NS Pq macro - Enclose string in parenthesis
966 .if \\n(aC==0 .ds mN Pq
969 .En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
971 .\" NS Ql macro - Quoted literal is in file mdoc-[dit|n|g]roff (too large
972 .\" an if-else to carry along recursively for `if n ...')
974 .\" NS Sq macro - Enclose string in single quotes
976 .if \\n(aC==0 .ds mN Qq
979 .En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
981 .\" NS Sq macro - Enclose string in single quotes
983 .if \\n(aC==0 .ds mN Sq
986 .En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
989 .\" NS Es macro - Set up strings for .En call
992 . ie \\n(.$>2 .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
998 .if \\n(aC>\\n(aP \{\
1003 . ie \\n(aC>\\n(aP .c\\n(C\\n(aP
1007 .\" .tm En beg arg(A[\\n(aP])==\\*(A\\n(aP;
1008 .\" .tm En oM==\\n(oM; dZ==\\n(dZ; Xt==\\n(Xt; aC==\\n(aC
1009 .\" NS En macro - Enclose string with given args (eg [ and ] etc)
1010 .\" NS qL string variable set by calling macro
1011 .\" NS qR string variable set by calling macro
1012 .\" NS aJ register (for vR)
1016 . as b1 \&\\*(qL\\*(qR
1021 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1029 . ie (\\n(aC-\\n(aP)==0 \{\
1034 . ie \\n(C\\n(aC==3 \{\
1038 . ds A\\n(aJ \&\\*(qR\\*(A\\n(aJ
1043 . if \\n(C\\n(aP==1 .\\*(A\\n(aP
1044 . if \\n(C\\n(aP>1 \{\
1051 .\" NS vR macro - vector routine (for En, trace backwards past trail punct)
1053 .if \\n(C\\n(aJ==3 \{\
1058 .\"------------------------------------------------------------------------
1059 .\" NS Ao macro - Angle open
1061 .if \\n(aC==0 .ds mN Ao
1063 .eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1065 .\" NS Ac macro - Angle close
1067 .if \\n(aC==0 .ds mN Ac
1069 .eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1071 .\" NS Bo macro - Bracket open
1073 .if \\n(aC==0 .ds mN Bo
1075 .eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1077 .\" NS Bc macro - Bracket close
1079 .if \\n(aC==0 .ds mN Bc
1081 .eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1083 .\" NS Do macro - Double Quote open
1085 .if \\n(aC==0 .ds mN Do
1087 .eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1089 .\" NS Dc macro - Double Quote close
1091 .if \\n(aC==0 .ds mN Dc
1093 .eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1095 .\" NS Eo macro - Enclose open
1097 .if \\n(aC==0 .ds mN Eo
1099 .eO \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1101 .\" NS Ec macro - Enclose close
1103 .if \\n(aC==0 .ds mN Ec
1105 .eC \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1107 .\" NS Oo macro - Option open
1109 .if \\n(aC==0 .ds mN Oo
1111 .eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1113 .\" NS Oc macro - Option close
1115 .if \\n(aC==0 .ds mN Oc
1117 .eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1119 .\" NS Po macro - Parenthesis open
1121 .if \\n(aC==0 .ds mN Po
1123 .eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1125 .\" NS Pc macro - Parenthesis close
1127 .if \\n(aC==0 .ds mN Pc
1129 .eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1131 .\" NS Qo macro - Straight Double Quote open
1133 .if \\n(aC==0 .ds mN Qo
1135 .eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1137 .\" NS Qc macro - Straight Double Quote close
1139 .if \\n(aC==0 .ds mN Qc
1141 .eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1143 .\" NS So macro - Single Quote open
1145 .if \\n(aC==0 .ds mN So
1147 .eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1149 .\" NS Sc macro - Single Quote close
1151 .if \\n(aC==0 .ds mN Sc
1153 .eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1155 .\" NS Xo macro - Extend open (continue)
1157 .if \\n(aC==0 .ds mN Xo
1160 .eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1162 .\" NS Xe macro - Extend close (end)
1165 .if \\n(aC==0 .ds mN Xc
1167 .eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1169 .\" NS eO macro - enclose string open
1170 .\" NS oM register (extension possible)
1173 .\" .tm eO last arg==A[\\n(aC]==\\*(A\\n(aC; aP==\\n(aP; oM==\\n(oM; dZ==\\n(dZ;
1176 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1181 . if (\\n(dZ==0)&(\\n(sM==1) \{\
1196 . if \\n(aC>\\n(aP \{\
1198 . ie \\n(C\\n(aP==1 .\\*(A\\n(aP
1204 . if \\n(aC==\\n(aP \{\
1206 .\" .tm SETTING Xt!!!
1210 .\"CHANGED ds S0 \\*(iV
1215 . if \\n(oM>1 .as b1 \\*(sV
1219 .\" NS eC macro - enclose string close
1220 .\" NS aa local register
1223 .\" tm eC last arg==A[\\n(aC]==\\*(A\\n(aC; aP==\\n(aP; oM==\\n(oM; dZ==\\n(dZ;
1227 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1242 . ie \\n(aC==\\n(aP \{\
1250 . if \\n(C\\n(aa==2 .as b1 \\*(S\\n(aC
1251 .\" tm CURRENT arg (aP==\\*(A\\n(aP and ap+1==\\*(A\\n(aa) tP==\\n(tP Xt==\\n(Xt
1254 .\" tm UNSETTING Xt==\\n(Xt!!!!
1255 . if \\n(Xt>0 .nr Xt \\n(Xt-1
1256 .\" tm NOW Xt==\\n(Xt!!!!
1262 .\"------------------------------------------------------------------------
1263 .\" NS Pf macro - Prefix (calls .pF)
1265 .if \\n(aC==0 .ds mN Pf
1267 .pF \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1269 .\" NS pF macro - Prefix (for prefixing open quotes, brackets etc)
1274 . tm Warning: Missing arguments - prefix .Pf)
1277 . el .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1280 . ie (\\n(aC-\\n(aP)>1 \{\
1282 . as b1 \&\\*(A\\n(aP
1284 . el .tm Warning: .Pf: trailing prefix (#\\n(.c)
1287 . ie (\\n(aC-\\n(aP)==0 .aZ
1294 .\" NS Ns macro - remove space (space remove done by .aV or .fV)
1298 . ie \\n(.$>0 .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1299 . el .tm Usage: .Ns must be called with arguments (#\\n(.c)
1306 . tm Usage: Ap "cannot be first request on a line (no .Ap)" (#\\n(.c)
1311 .\" NS Hv macro - Hard (unpaddable) Space vector
1312 .\" NS iV string inter-vector space
1313 .\" NS sV string inter-argument space
1318 .\" NS Sv macro - Soft Space vector (troff limitation)
1322 .\" NS Tv macro - Tab Space vector
1326 .\" NS Sm macro - Space mode
1327 .\" NS sM register - default is one (space mode on)
1331 . ie \\n(.$==0 .tm "Usage: .Sm [off | on]" (#\\n(.c)
1334 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1339 . if "\\*(A\\n(aP"on" \{\
1343 . if "\\*(A\\n(aP"off" \{\
1345 . rm S0 S1 S2 S3 S4 S5 S6 S7 S8 S9
1348 . ie \\n(aC>\\n(aP \{\
1354 .\"------------------------------------------------------------------------
1355 .\" Size and Argument type macros
1356 .\" NS aT macro - argument type
1357 .\" NS aU macro - argument type (same as .aT but uses A[1-9] strings
1358 .\" NS aT register argument type
1362 .ie \\n(sW>2:(\A'\\$1'==0) \{\
1367 . ie \\n(z\\$1>2 \{\
1383 .ie \\n(sW>2:(\A'\\*(A\\$1'==0) .nr aT 2
1386 . ie \\n(z\\*(A\\$1>2 \{\
1387 . nr aT \\n(z\\*(A\\$1
1392 . ie (\\n(\\*(A\\$1) \{\
1408 . ie \\n(z\\$1>2 \{\
1424 .ie \\n(sW>2 .nr aT 2
1427 . ie \\n(z\\*(A\\$1>2 \{\
1428 . nr aT \\n(z\\*(A\\$1
1433 . ie (\\n(\\*(A\\$1) \{\
1441 .\" NS s1 macro - set spacing for class type 1
1442 .\" NS s2 macro - set spacing for class type 2
1443 .\" NS s3 macro - set spacing for class type 3
1444 .\" NS s1 macro - set spacing for class type 1
1445 .\" NS s2 macro - set spacing for class type 2
1446 .\" NS s3 macro - set spacing for class type 3
1447 .\" NS s4 macro - set spacing for class type 4
1448 .\" NS S[0-9] string spacing
1449 .\" NS xX local register
1450 .\" NS aa local register
1452 .tm MDOC-ERROR: bogus type 0 (can't set space '\\*(A\\n(aC') (#\\n(.c)
1455 .if \\n(\\*(A\\n(aC==3 \{\
1460 .if \\n(\\*(A\\n(aC==2 \{\
1462 .\" this kludge can probably go away, but need to double check first
1463 . ie "\\*(A\\n(aC"Nb" .ds S\\n(xX \\*(hV
1480 .\" Class switches (on current argument aP)
1481 .\" NS c0 macro - catch errors (non-existent class type 0)
1482 .\" NS c1 macro - call request if type 1
1483 .\" NS c2 macro - call .No if type 2
1484 .\" NS c3 macro - call .No if type 3
1485 .\" NS c4 macro - call .No if type 4
1487 .tm MDOC-ERROR: bogus class 0 (can't determine '\\*(A\\n(aC') (#\\n(.c)
1504 .\" NS y1 macro - ignore if class 1
1505 .\" NS y2 macro - ignore if class 2
1506 .\" NS y3 macro - append if type 3
1507 .\" NS y4 macro - append if type 4
1524 .\"--------------------------------------------------------------------------
1525 .\" Ns Bf macro - Begin Font Mode (will be begin-mode/end-mode in groff & TeX)
1526 .\" Ns Ef macro - End Font Mode
1532 . if "\\$1"Em" \&\\*(eM\c
1533 . if "\\$1"Li" \&\\*(lI\c
1534 . if "\\$1"Sy" \&\\*(sY\c
1535 . if "\\$1"-emphasis" \&\\*(eM\c
1536 . if "\\$1"-literal" \&\\*(lI\c
1537 . if "\\$1"-symbolic" \&\\*(sY\c
1539 .el .tm Usage .Bf [Em | -emphasis | Li | -literal | Sy | -symbolic] (#\\n(.c)
1543 .ie \\n(.$>0 .tm Usage .Ef (does not take arguments) (#\\n(.c)
1544 .el \&\f\\n(bF\s\\n(bZ
1546 .\" Ns Bk macro - Begin Keep
1547 .\" Ns Ek macro - End Keep
1548 .\" Ns kS string - keep type
1552 .tm Usage: .Bk [-lines | -words] (#\\n(.c)
1555 . if !"\\*(kS"" .tm .Bk: nesting keeps not implemented yet. (#\\n(.c)
1556 . if "\\$1"-lines" .tm .Bd -lines: Not implemented yet. (#\\n(.c)
1557 . if "\\$1"-words" .Hv
1563 .ie \\n(.$>0 .tm Usage .Ek (does not take arguments) (#\\n(.c)
1565 . if "\\*(kS"-lines" .tm .Bd -lines: Not implemented yet. (#\\n(.c)
1566 . if "\\*(kS"-words" .Sv
1570 .\" NS Bd macro - Begin Display display-type [offset string]
1571 .\" NS Ed macro - end Display
1572 .\" NS O[0-9] registers - stack of indent
1573 .\" NS d[0-9] registers - display-type stack
1577 .tm Usage: .Bd [-literal | -filled | -ragged | -unfilled] [-offset [string]] [-compact] (#\\n(.c)
1584 . if "\\$1"-literal" \{\
1590 ' ta 9n 18n 27n 36n 45n 54n 63n 72n
1593 ' ta 8n 16n 24n 32n 40n 48n 56n 64n 72n
1597 . if "\\$1"-filled" \{\
1602 . if "\\$1"-ragged" \{\
1607 . if "\\$1"-unfilled" \{\
1612 .\" .tm Here is argc: \\n(.$ and here is iD \\n(iD
1613 . if ((\\n(iD>=1)&(\\n(.$>\\n(iD)) \{\
1616 . if \\n(O\\n(dP>0 'in \\n(.iu+\\n(O\\n(dPu
1617 . if (\\n(bV==0) \{\
1618 . if (\\n(nS==0) \{\
1619 . ie "\\*(d\\n(dP"dR" .sp \\n(dVu
1623 . if \\n(cR==0 .ne 2v
1628 .\" NS bV macro - resolve remaining .Bd arguments
1630 .\" .tm in bV with args: \\$1 \\$2 \\$3
1633 .if "\\$1"-offset" \{\
1635 . if "\\*(bY"left" \{\
1639 . if "\\*(bY"right" \{\
1641 . nr O\\n(dP (\\n(.l/3)u
1643 . if "\\*(bY"center" \{\
1645 . nr O\\n(dP (\\n(.l-\\n(.i)/4u
1647 . if "\\*(bY"indent" \{\
1649 . nr O\\n(dP \\n(dIu
1651 . if "\\*(bY"indent-two" \{\
1653 . nr O\\n(dP \\n(dIu+\\n(dIu
1659 . ie ((\\*(bY>9n)&(\\*(bY<100n)) \{\
1662 . el .nr O\\n(dP (\\n(sW)*\\n(fWu
1665 . if \\n(sW==2 .aT \\*(bY
1667 . nr O\\n(dP \\n(\\*(bY
1669 . el .nr O\\n(dP \\*(bY
1673 .if "\\$1"-compact" \{\
1676 .if \\n(iD<\\n(.$ \{\
1685 .\" NS Ed macro - end display
1689 .if \\n(dP==0 .tm mdoc: Extraneous .Ed
1690 .if "\\*(d\\n(dP"dL" \{\
1694 .in \\n(.iu-\\n(O\\n(dPu
1701 .\"--------------------------------------------------------------------------
1702 .\" NS Bl macro - begin list (.Bl list-type)
1703 .\" NS L[0-9] registers - stack of list types
1706 .tm Usage: .Bl [[-hang | -tag] [-width]] [ -item | -enum | -bullet | -diag] (#\\n(.c)
1721 . if "\\$1"-hang" \{\
1727 . if "\\$1"-tag" \{\
1732 . if "\\$1"-item" \{\
1737 . if "\\$1"-enum" \{\
1743 . if "\\$1"-bullet" \{\
1749 . if "\\$1"-dash" \{\
1755 . if "\\$1"-hyphen" \{\
1761 . if "\\$1"-inset" \{\
1766 . if "\\$1"-diag" \{\
1771 . if "\\$1"-ohang" \{\
1776 . if "\\$1"-column" \{\
1781 . tm \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1782 . tm Usage: .Bl [[-inset|-tag] -width] [-item|-enum|-bullet|-diag] (#\\n(.c)
1786 . if (\\n(aP==1)&(\\n(aP<\\n(.$) \{\
1789 . if "\\*(L\\n(lC"cL" \{\
1793 . ie \\n(v\\n(lC==1 \{\
1807 .\" .tm Here is L[\\n(lC]==\\*(L\\n(lC
1817 .\" NS lV macro - resolve remaining .Bl arguments
1820 .if \\n(fV>=\\n(aP \{\
1822 . if "\\*(A\\n(aP"-compact" \{\
1826 . if "\\*(A\\n(aP"-width" \{\
1830 . ds t\\n(lC TagwidtH
1834 . nr w\\n(lC (\\n(sW)*\\n(fWu
1837 . if \A'\\*(tS' .if r num!\\*(tS \{\
1842 . if (\\*(tS>9n)&(\\*(tS<99n) \{\
1843 . nr w\\n(lC \\*(tSu
1851 . nr w\\n(lC \\n(\\*(tS
1854 . nr w\\n(lC \\*(tSu
1858 . if "\\*(A\\n(aP"-offset" \{\
1861 . ie "\\*(A\\n(aP"indent" \{\
1862 . nr o\\n(lC \\n(Dsu
1868 . nr o\\n(lC (\\n(sW)*\\n(fWu
1870 . if \A'\\*(tS' .if r num!\\*(tS \{\
1875 . if (\\*(tS>9n)&(\\*(tS<100n) \{\
1881 . ie \\n(C\\n(aP==1 .nr o\\n(lC \\n(\\*(tS
1882 . el .nr o\\n(lC \\*(tS
1887 . if "\\*(L\\n(lC"cL" \{\
1889 . ds A\\n(wV \\*(A\\n(aP
1892 . if \\n(fV>\\n(aP .lV
1895 .\" NS El macro - end list
1896 .\" NS iD local register
1899 . tm Usage: .El (#\\n(.c)
1904 . if "\\*(L\\n(lC"cL" \{\
1908 . if "\\*(L\\n(lC"nU" \{\
1918 . if "\\*(L\\n(lC"iT" \{\
1919 ' in \\n(.iu-\\n(o\\n(lCu
1925 . if "\\*(L\\n(lC"oL" \{\
1926 ' in \\n(.iu-\\n(o\\n(lCu
1932 . if "\\*(L\\n(lC"lL" \{\
1933 ' in \\n(.iu-\\n(o\\n(lCu
1946 .\" NS It macro - list item
1947 .\" NS iD local register
1948 .\" NS aA save pA font string for section FILES (no underline if nroff)
1950 .if "\\*(L\\n(lC"" \{\
1951 . tm Usage .Bl -list-type [-width [string] | -compact | -offset [string]] (#\\n(.c)
1952 . tm .It \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
1954 .\" .tm Here is L[\\n(lC]==\\*(L\\n(lC
1970 . if "\\*(L\\n(lC"mL" \{\
1976 . if "\\*(L\\n(lC"cL" \{\
1982 . if "\\*(L\\n(lC"iT" \{\
1989 .\" tm ------------------------------------------------------------------------
1990 .\" tm It list-type==\\*(L\\n(lC, aP==\\n(aP
1991 .\" tm It beg arg(A[1])==\\*(A1; oM==\\n(oM; dZ==\\n(dZ; Xt==\\n(Xt; aC==\\n(aC
1999 . if n .ds pA \\*(nO
2001 . ie \\n(C\\n(aP==1 \{\
2008 .\" tm in It here is b1==\\*(b1
2009 .\" tm It mid arg(A[1])==\\*(A1; oM==\\n(oM; dZ==\\n(dZ; Xt==\\n(Xt; aC==\\n(aC
2010 . ie \\n(Xt==1 .ds xB \&\\*(L\\n(lC
2017 .\" NS lL macro - .It item of list-type inset
2028 .\" NS hL macro - .It item of list-type hanging label (as opposed to tagged)
2031 .nr bb \\n(w\\n(lCu+\\n(lSu
2033 .ie \w
\a\\*(b1
\au>=(\\n(w\\n(lCu) \&\\*(b1
2034 .el \&\\*(b1\h'|\\n(bbu'\c
2041 .\" NS oL macro - .It item of list-type overhanging label
2052 .\" NS iT macro - .It item of list-type [empty label]
2060 .\" NS nU macro - Enumerated list
2061 .\" NS nU register count
2062 .\" NS hU macro - Hyphen paragraph list (sub bullet list)
2063 .\" NS bU macro - Bullet paragraph list
2073 .ds b1 \&\\*(sY\&\(bu\fP
2079 .ds b1 \&\\*(sY\&\-\fP
2082 .\" NS uL macro - .It item of list-type enum/bullet/hyphen
2085 .nr bb \\n(w\\n(lCu+\\n(lSu
2087 .ie \w
\a\\*(b1
\au>=(\\n(w\\n(lCu) \&\\*(b1
2088 .el \&\\*(b1\h'|\\n(bbu'\c
2096 .\" NS mL macro - .It item of list-type diagnostic-message
2102 . ie (\\n(zB-\\n(zA)>1 .Pp
2111 \&\\*(sY\\*(b1\f\\n(cF\s\\n(cZ\\*(lS\c
2116 .\" NS tL macro - .It item of list-type "tag"
2118 .\" tm in tL here is b1==\\*(b1
2121 .nr bb \\n(w\\n(lCu+\\n(lSu
2123 .ie (\w
\a\\*(b1
\au)>(\\n(w\\n(lCu) \{\&\\*(b1
2126 .el \&\\*(b1\h'|\\n(bbu'\c
2128 . if n .ds pA \\*(aA
2137 .\" NS lW macro - resolve unknown label/tag width (if .Bl [inset | tag] only)
2139 .if !"TagwidtH"\\*(t\\n(lC" \{\
2142 . nr w\\n(lN \\n(\\*(tX
2148 . if !"\\*(t\\n(lC"\\*(t\\n(lN" .nr tC 1
2151 .\" NS lX macro - set up vertical spacing (if compact) and offset+indent (all)
2156 . if \\n(v\\n(lC==0 .sp \\n(dVu
2157 . in \\n(.iu+\\n(w\\n(lCu+\\n(o\\n(lCu+\\n(lSu
2160 . ie \\n(v\\n(lC==1 \{\
2169 .\" NS lY macro - set up vertical spacing (if compact) and offset+indent (all)
2174 . if \\n(v\\n(lC==0 .sp \\n(dVu
2175 . in \\n(.iu+\\n(o\\n(lCu
2178 . ie \\n(v\\n(lC==1 \{\
2187 .\" NS tS temporary string
2188 .\" NS hL macro - hanging list function
2189 .\" NS tS temporary string
2190 .\" NS hL macro - hanging list function
2191 .\" NS lT macro - tagged list function
2192 .\" NS lE macro - list end function
2193 .\" NS tX string (initial string)
2194 .\" NS tX register (initial class)
2195 .\" NS tC parameter change flag
2196 .\" NS Xt save current list-type flag
2197 .\" NS lC register - list type stack counter
2198 .\" NS tP register tag flag (for diversions)
2199 .\" NS w[0-9] register tag stack (nested tags)
2200 .\" NS t[0-9] register tag string stack (nested tags)
2201 .\" NS o[0-9] register offset stack (nested tags)
2202 .\" NS v[0-9] register vertical tag break stack
2203 .\" NS h[0-9] register horizontal tag stack (continuous if 1, break if 0)
2212 .\" IN lC o[\\n(lC]==\\n(o\\n(lC, w[\\n(lC]==\\n(w\\n(lC,
2213 .ie \\n(o\\n(lC>0 \{\
2214 ' in \\n(.iu-(\\n(w\\n(lCu)-(\\n(o\\n(lCu)-\\n(lSu
2217 .el 'in \\n(.iu-\\n(w\\n(lCu-\\n(lSu
2218 .if \\n(lC<=0 .tm Extraneous .El call (#\\n(.c)
2223 .\" NS tY macro - set up next block for list
2224 .\" NS tZ macro - decrement stack
2225 .\" NS tY register (next possible lC value)
2231 .ds t\\n(tY \\*(t\\n(lC
2251 .\" NS Xr macro - cross reference (man page only)
2254 . ie \\n(.$==0 .tm Usage: .Xr manpage_name [section#] \\*(Pu (#\\n(.c)
2257 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
2260 .if \\n(aC>\\n(aP \{\
2262 . ie \\n(C\\n(aP==1 .tm Usage: .Xr manpage_name [section#] \\*(Pu (#\\n(.c)
2264 . ie \\n(C\\n(aP>2 .y\\n(C\\n(aP
2266 . as b1 \&\\*(xR\\*(A\\n(aP\fP\s0
2267 . if \\n(aC>\\n(aP \{\
2269 . if \\n(C\\n(aP==2 \{\
2270 . as b1 \&(\\*(A\\n(aP)
2273 . if \\n(aC>=\\n(aP \{\
2282 .\" NS Sx macro - cross section reference
2285 . ie \\n(.$==0 .tm Sx Usage: .Sx Section Header \\*(Pu (#\\n(.c)
2288 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
2292 .if \\n(aC>\\n(aP \{\
2300 .\" NS cC macro - column-list end-list
2301 .\" NS eW macro - column indent width
2302 .\" NS cI register - column indent width
2303 .\" NS W[1-5] macro - establish tabs for list-type column
2305 'in \\n(.iu-\\n(o\\n(lCu-\\n(w\\n(lCu
2306 .ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
2314 .nr eW \w
\a\\*(A1
\au
2315 'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
2318 .ta \w
\a\\*(A1
\au +\w
\a\\*(A2
\au
2319 .nr eW \w
\a\\*(A1
\au+\w
\a\\*(A2
\au
2320 'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
2323 .ta \w
\a\\*(A1
\au +\w
\a\\*(A2
\au +\w
\a\\*(A3
\au
2324 .nr eW \w
\a\\*(A1
\au+\w
\a\\*(A2
\au+\w
\a\\*(A3
\au
2325 'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
2328 .ta \w
\a\\*(A1
\au +\w
\a\\*(A2
\au +\w
\a\\*(A3
\au +\w
\a\\*(A4
\au
2329 .nr eW \w
\a\\*(A1
\au+\w
\a\\*(A2
\au +\w
\a\\*(A3
\au +\w
\a\\*(A4
\au
2330 'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
2333 .ta \w
\a\\*(A1
\au +\w
\a\\*(A2
\au +\w
\a\\*(A3
\au +\w
\a\\*(A4
\au +\w
\a\\*(A5
\au
2334 .nr eW \w
\a\\*(A1
\au +\w
\a\\*(A2
\au +\w
\a\\*(A3
\au +\w
\a\\*(A4
\au +\w
\a\\*(A5
\au
2335 ' in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
2337 .\" This is packed abnormally close, intercol width should be an option
2339 .ta \w
\a\\*(A1
\au +\w
\a\\*(A2
\au +\w
\a\\*(A3
\au +\w
\a\\*(A4
\au +\w
\a\\*(A5
\au +\w
\a\\*(A6
2340 .nr eW \w
\a\\*(A1
\au +\w
\a\\*(A2
\au +\w
\a\\*(A3
\au +\w
\a\\*(A4
\au +\w
\a\\*(A5
\au +\w
\a\\*(A6
2341 ' in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
2343 .\" NS cL macro - column items
2345 .if \\n(w\\n(lC==0 .nr w\\n(lC \\n(eWu
2348 ' in \\n(.iu+\\n(eWu
2353 .ie \\n(aC>=\\n(aP \{\
2354 . if "\\*(A\\n(aP"Ta" \{\
2361 .el .tm Usage: .It column_string [Ta [column_string ...] ] (#\\n(.c)
2363 .\" NS Ta macro - append tab (\t)
2367 . ie \\n(aC>=\\n(aP \{\
2368 . if "\\*(A\\n(aP"Ta" \{\
2385 . tm Usage: Ta must follow column entry: e.g. (#\\n(.c)
2386 . tm .It column_string [Ta [column_string ...] ]
2390 .\" NS Dl macro - display (one line) literal
2392 'ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
2396 . tm Usage: .Dl argument ... (#\\n(.c)
2415 . tm Usage: .Dl not callable by other macros (#\\n(.c)
2420 .\" NS D1 macro - display (one line)
2422 'ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
2426 . tm Usage: .D1 argument ... (#\\n(.c)
2442 . ie \\n(C\\n(aP==1 .\\*(A\\n(aP
2447 . tm Usage: .D1 not callable by other macros (#\\n(.c)
2451 .\" NS Ex macro - DEFUNCT
2453 .tm Ex defunct, Use .D1: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
2456 .\" NS Ex macro - DEFUNCT
2458 .tm Ex defunct, Use .D1: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
2461 .\" NS Vt macro - Variable type (for forcing old style variable declarations)
2462 .\" this is not done in the same manner as .Ot for fortrash - clean up later
2464 .\" if a function declaration was the last thing given, want vertical space
2469 .\" if a subroutine was the last thing given, want vertical space
2480 \\*(fT\&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
2487 .\" NS Ft macro - Function type
2509 \&\\*(fT\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
2515 .\" NS Ot macro - Old Function type (fortran - no newline)
2537 .if \\n(.$==4 .as b1 \&\\*(fT\&\\$1 \\$2 \\$3 \\$4
2538 .if \\n(.$==3 .as b1 \&\\*(fT\&\\$1 \\$2 \\$3
2539 .if \\n(.$==2 .as b1 \&\\*(fT\&\\$1 \\$2
2540 .if \\n(.$==1 .as b1 \&\\*(fT\&\\$1
2544 .\" NS Fa macro - Function arguments
2547 . ie \\n(.$==0 .tm Usage: .Fa Function Arguments ... \\*(Pu (#\\n(.c)
2567 . if \\n(aC>\\n(aP \{\
2579 .\" NS fC macro - interal .Fa for .FO and .Fc
2581 .ie \\n(aC>\\n(aP \{\
2584 .\" . if \\n(nS>0 \{\
2595 . as b1 \&\f\\n(cF\s\\n(cZ,\\*(S\\n(aP\\*(fA\\*(A\\n(aP\fP\s0
2596 .\" . as b1 \&\\,\\*(S\\n(aP\fP\s0\\*(fA\\*(A\\n(aP\fP\s0
2599 . as b1 \&\|\\*(fA\\*(A\\n(aP\fP\s0
2608 .\" NS Fn macro - functions
2609 .\" NS fY register - dick with old style function declarations (fortran)
2610 .\" NS fZ register - break a line when more than one function in a synopsis
2614 . ie \\n(.$==0 .tm Usage: .Fn function_name function_arg(s) ... \\*(Pu (#\\n(.c)
2631 .\" if there is/has been more than one subroutine declaration
2659 . nr iS ((8)*\\n(fW)u
2666 .if \\n(aC>\\n(aP \{\
2670 . as b1 \\*(fN\\*(A\\n(aP\fP\s0\\*(lp
2671 . ie \\n(aC>\\n(aP \{\
2686 .\" NS f1 macro - class switch
2687 .\" NS f2 macro - handle function arguments
2688 .\" NS f3 macro - punctuation
2689 .\" NS f4 macro - write out function
2691 .as b1 \\*(rp\f\\n(cF\s\\n(cZ
2706 .ie \\n(aC>\\n(aP \{\
2709 . if \\n(C\\n(aP==2 \{\
2710 . as b1 \&\|\f\\n(cF\s\\n(cZ,\\*(S\\n(aa\fP\s0\|
2715 . as b1 \\*(rp\f\\n(cF\s\\n(cZ
2720 .as b1 \\*(rp\f\\n(cF\s\\n(cZ\\*(A\\n(aP
2721 .ie \\n(aC>\\n(aP \{\
2727 .as b1 \\*(rp\f\\n(cF\s\\n(cZ\\*(S\\n(aP\\*(A\\n(aP
2728 .ie \\n(aC>\\n(aP \{\
2737 . ie \\n(.$==0 .tm Usage: .Fo function_name
2754 .\" if there is/has been more than one subroutine declaration
2782 . nr iS ((8)*\\n(fW)u
2789 .if \\n(aC>\\n(aP \{\
2795 . as b1 \\*(fN\\*(A\\n(aP\fP\s0\\*(lp
2819 .ie \\n(aC>\\n(aP \{\
2831 .\" NS fb macro - if SYNOPSIS, set hard space inbetween function args
2832 .\" NS fb register - count of words in a function argument
2833 .\" NS Fb register - counter
2834 .\" NS Fb string - temporary string
2836 .\" .tm fB==\\n(fB, Fb==\\n(Fb, 1==\\$1 2==\\$2 3==\\$3 4==\\$4 5==\\$5 6==\\$6
2844 .if \\n(Fb<\\n(fB \{\
2846 . fB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
2849 .\" NS Fc - Function close - not implemented yet
2850 .\" NS Fo - Function open - not implemented yet
2852 .\" Very crude references, stash all reference info into strings (usual
2853 .\" use of b1 buffer, then b1 contents copied to string of retrievable
2854 .\" naming convention), print out reference on .Re request and clean up.
2855 .\" Ordering very limited, no fancy citations, but can do articles, journals
2856 .\" and books - need to add several missing options (like city etc).
2857 .\" should be able to grab a refer entry, massage it a wee bit (prefix
2858 .\" a `.' to the %[A-Z]) and not worry (ha!)
2860 .\" NS Rs macro - Reference Start
2861 .\" NS rS register - Reference Start flag
2862 .\" NS rS string - Reference Start buffer name for next save (of b1 buffer)
2869 .\" NS Re macro - Reference End
2875 .\" NS rC macro - reference cleanup
2889 .rm U1 U2 U3 U4 U5 U6 U7 U8
2890 .rm uK jK nK oK rK qK tK vK dK pK bK
2892 .\" NS rZ macro - reference print
2894 .if \\n(uK \{\&\\*(U1,
2904 . ie (\\n(jK==1):(\\n(bK==1) \{\&\\*q\\*(tK\\*q.
2906 . el \{\&\\*(eM\\*(tK\\*(nO.
2910 . ie (\\n(jK==1):(\\n(bK==1) \{\&\\*q\\*(tK\\*q,
2912 . el \{\&\\*(eM\\*(tK\\*(nO,
2918 . if \\n(Kl==0 \&\\*(eM\\*(bK\\*(nO.
2919 . if \\n(Kl>0 \&\\*(eM\\*(bK\\*(nO,
2923 . if \\n(Kl==0 \&\\*(eM\\*(jK\\*(nO.
2924 . if \\n(Kl>0 \&\\*(eM\\*(jK\\*(nO,
2928 . if \\n(Kl==0 \&\\*(rK.
2929 . if \\n(Kl>0 \&\\*(rK,
2933 . if \\n(Kl==0 \&\\*(nK.
2934 . if \\n(Kl>0 \&\\*(nK,
2938 . if \\n(Kl==0 \&\\*(vK.
2939 . if \\n(Kl>0 \&\\*(vK,
2943 . if \\n(Kl==0 \&\\*(pK.
2944 . if \\n(Kl>0 \&\\*(pK,
2948 . if \\n(Kl==0 \&\\*(qK.
2949 . if \\n(Kl>0 \&\\*(qK,
2953 . if \\n(Kl==0 \&\\*(dK.
2954 . if \\n(Kl>0 \&\\*(dK,
2958 . if \\n(Kl==0 \&\\*(oK.
2959 . if \\n(Kl>0 \&\\*(oK,
2961 .if \\n(Kl>0 .tm unresolved reference problem
2963 .\" NS aK macro - print out reference authors
2966 .ie (\\n(uK-\\n(aK)==0 \{\&and \\*(U\\n(aK,
2968 .el \{\&\\*(U\\n(aK,
2972 .\" NS %A macro - reference author(s)
2973 .\" NS uK register - reference author(s) counter
2974 .\" NS U[1-9] strings - reference author(s) names
2977 . ie \\n(.$==0 .tm Usage: .%A Author_name (#\\n(.c)
2983 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
2986 .if \\n(aC>\\n(aP \{\
2993 .\" NS %B macro - [reference] Book Name
2994 .\" NS bK string - Book Name
2995 .\" NS bK register - Book Name flag
2998 . ie \\n(.$==0 .tm Usage: .%B Book Name (#\\n(.c)
3019 .if \\n(aC>\\n(aP \{\
3030 .\" NS %D macro - [reference] Date
3031 .\" NS dK string - Date String
3032 .\" NS dK register - Date flag
3035 . ie \\n(.$==0 .tm Usage: .%D Date (#\\n(.c)
3054 .if \\n(aC>\\n(aP \{\
3061 .\" NS %J macro - [reference] Journal Name
3062 .\" NS jK register - [reference] Journal Name flag
3063 .\" NS jK string - [reference] Journal Name
3066 . ie \\n(.$==0 .tm Usage: .%J Journal Name (#\\n(.c)
3085 .if \\n(aC>\\n(aP \{\
3092 .\" NS %N macro - [reference] issue number
3093 .\" NS nK register - [reference] issue number flag
3094 .\" NS nK string - [reference] issue number
3097 . ie \\n(.$==0 .tm Usage: .%N issue number (#\\n(.c)
3103 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
3106 .if \\n(aC>\\n(aP \{\
3113 .\" NS %O macro - [reference] optional information
3114 .\" NS oK register - [reference] optional information flag
3115 .\" NS oK string - [reference] optional information
3118 . ie \\n(.$==0 .tm Usage: .%O optional information ... \\*(Pu (#\\n(.c)
3137 .if \\n(aC>\\n(aP \{\
3144 .\" NS %P macro - [reference] page numbers
3145 .\" NS pK register - [reference] page number flag
3146 .\" NS pK string - [reference] page number
3149 . ie \\n(.$==0 .tm Usage: .%P page numbers ... \\*(Pu (#\\n(.c)
3168 .if \\n(aC>\\n(aP \{\
3175 .\" NS %Q macro - Corporate or Foreign Author
3176 .\" NS qK string - Corporate or Foreign Author
3177 .\" NS qK register - Corporate or Foreign Author flag
3180 . ie \\n(.$==0 .tm Usage: .%Q Corporate or Foreign Author (#\\n(.c)
3199 .if \\n(aC>\\n(aP \{\
3206 .\" NS %R macro - [reference] report name
3207 .\" NS rK string - [reference] report name
3208 .\" NS rK register - [reference] report flag
3211 . ie \\n(.$==0 .tm Usage: .%R reference report (#\\n(.c)
3230 .if \\n(aC>\\n(aP \{\
3237 .\" NS %T macro - reference title
3238 .\" NS tK string - reference title
3239 .\" NS tK register - reference title flag
3242 . ie \\n(.$==0 .tm Usage: .%T (#\\n(.c)
3263 .if \\n(aC>\\n(aP \{\
3264 .\" . ie \\n(jS==1 \{\
3267 .\" . ds qL \&\\*(Lq\\*(rA
3268 .\" . ds qR \&\\*(Rq\f\\n(cF\s\\n(cZ
3269 .\" . En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
3283 .\" NS %V macro - reference volume
3284 .\" NS vK string - reference volume
3285 .\" NS vK register - reference volume flag
3288 . ie \\n(.$==0 .tm Usage: .%V Volume , ... \\*(Pu (#\\n(.c)
3294 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
3297 .if \\n(aC>\\n(aP \{\
3304 .\" NS rR macro - reference recursion routine
3305 .\" NS jM local register
3306 .\" NS jN local register
3311 .\" . as b1 \&\f\\n(cF\s\\n(cZ
3312 . ie "\\*(A\\n(aP"Tn" \{\
3316 . if \\n(aC>8 .tm Usage: \\*(mN - maximum 8 arguments (#\\n(.c)
3323 . ie \\n(jM==2 .as b1 \&\\*(A\\n(aP
3324 . el .as b1 \&\\*(A\\n(aP
3325 .\" . el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0
3326 . ie \\n(aC==\\n(aP \{\
3327 .\" . as b1 \&\f\\n(cF\s\\n(cZ
3332 . as b1 \&\\*(S\\n(jN
3338 .\" NS rD macro - save b1 buffer in to appropriate name
3345 .\" NS Hf macro - source include header files.
3356 .ta +9n 18n 27n 36n 45n 54n 63n 72n
3359 .ta +8n 16n 24n 32n 40n 48n 56n 64n 72n
3368 .\" NS An macro - author name
3381 . ie \\n(.$==0 .tm Usage: .An author_name ... \\*(Pu (#\\n(.c)
3384 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
3387 .if \\n(aC>\\n(aP \{\
3394 .\" NS Sf macro -defunct
3396 .tm .Sf defunct, use prefix or Ns
3398 .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.
3399 .\" Ns Rv macro - return values
3400 .\" Ns rV string - standard return message
3403 .tm Usage: .Rv [-std] (#\\n(.c)
3408 .\" . nr lR \\n(lR+1
3417 .\" . nr fV \\n(.$-1
3418 . if "\\$1"-std" \{\
3420 . if (\\n(cH<2):(\\n(cH>3) .tm Usage: .Rv -std sections 2 and 3 only