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 lT macro - tagged list function
2190 .\" NS lE macro - list end function
2191 .\" NS tX string (initial string)
2192 .\" NS tX register (initial class)
2193 .\" NS tC parameter change flag
2194 .\" NS Xt save current list-type flag
2195 .\" NS lC register - list type stack counter
2196 .\" NS tP register tag flag (for diversions)
2197 .\" NS w[0-9] register tag stack (nested tags)
2198 .\" NS t[0-9] register tag string stack (nested tags)
2199 .\" NS o[0-9] register offset stack (nested tags)
2200 .\" NS v[0-9] register vertical tag break stack
2201 .\" NS h[0-9] register horizontal tag stack (continuous if 1, break if 0)
2210 .\" IN lC o[\\n(lC]==\\n(o\\n(lC, w[\\n(lC]==\\n(w\\n(lC,
2211 .ie \\n(o\\n(lC>0 \{\
2212 ' in \\n(.iu-(\\n(w\\n(lCu)-(\\n(o\\n(lCu)-\\n(lSu
2215 .el 'in \\n(.iu-\\n(w\\n(lCu-\\n(lSu
2216 .if \\n(lC<=0 .tm Extraneous .El call (#\\n(.c)
2221 .\" NS tY macro - set up next block for list
2222 .\" NS tZ macro - decrement stack
2223 .\" NS tY register (next possible lC value)
2229 .ds t\\n(tY \\*(t\\n(lC
2249 .\" NS Xr macro - cross reference (man page only)
2252 . ie \\n(.$==0 .tm Usage: .Xr manpage_name [section#] \\*(Pu (#\\n(.c)
2255 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
2258 .if \\n(aC>\\n(aP \{\
2260 . ie \\n(C\\n(aP==1 .tm Usage: .Xr manpage_name [section#] \\*(Pu (#\\n(.c)
2262 . ie \\n(C\\n(aP>2 .y\\n(C\\n(aP
2264 . as b1 \&\\*(xR\\*(A\\n(aP\fP\s0
2265 . if \\n(aC>\\n(aP \{\
2267 . if \\n(C\\n(aP==2 \{\
2268 . as b1 \&(\\*(A\\n(aP)
2271 . if \\n(aC>=\\n(aP \{\
2280 .\" NS Sx macro - cross section reference
2283 . ie \\n(.$==0 .tm Sx Usage: .Sx Section Header \\*(Pu (#\\n(.c)
2286 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
2290 .if \\n(aC>\\n(aP \{\
2298 .\" NS cC macro - column-list end-list
2299 .\" NS eW macro - column indent width
2300 .\" NS cI register - column indent width
2301 .\" NS W[1-5] macro - establish tabs for list-type column
2303 'in \\n(.iu-\\n(o\\n(lCu-\\n(w\\n(lCu
2304 .ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
2312 .nr eW \w
\a\\*(A1
\au
2313 'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
2316 .ta \w
\a\\*(A1
\au +\w
\a\\*(A2
\au
2317 .nr eW \w
\a\\*(A1
\au+\w
\a\\*(A2
\au
2318 'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
2321 .ta \w
\a\\*(A1
\au +\w
\a\\*(A2
\au +\w
\a\\*(A3
\au
2322 .nr eW \w
\a\\*(A1
\au+\w
\a\\*(A2
\au+\w
\a\\*(A3
\au
2323 'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
2326 .ta \w
\a\\*(A1
\au +\w
\a\\*(A2
\au +\w
\a\\*(A3
\au +\w
\a\\*(A4
\au
2327 .nr eW \w
\a\\*(A1
\au+\w
\a\\*(A2
\au +\w
\a\\*(A3
\au +\w
\a\\*(A4
\au
2328 'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
2331 .ta \w
\a\\*(A1
\au +\w
\a\\*(A2
\au +\w
\a\\*(A3
\au +\w
\a\\*(A4
\au +\w
\a\\*(A5
\au
2332 .nr eW \w
\a\\*(A1
\au +\w
\a\\*(A2
\au +\w
\a\\*(A3
\au +\w
\a\\*(A4
\au +\w
\a\\*(A5
\au
2333 ' in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
2335 .\" This is packed abnormally close, intercol width should be an option
2337 .ta \w
\a\\*(A1
\au +\w
\a\\*(A2
\au +\w
\a\\*(A3
\au +\w
\a\\*(A4
\au +\w
\a\\*(A5
\au +\w
\a\\*(A6
2338 .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
2339 ' in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
2341 .\" NS cL macro - column items
2343 .if \\n(w\\n(lC==0 .nr w\\n(lC \\n(eWu
2346 ' in \\n(.iu+\\n(eWu
2351 .ie \\n(aC>=\\n(aP \{\
2352 . if "\\*(A\\n(aP"Ta" \{\
2359 .el .tm Usage: .It column_string [Ta [column_string ...] ] (#\\n(.c)
2361 .\" NS Ta macro - append tab (\t)
2365 . ie \\n(aC>=\\n(aP \{\
2366 . if "\\*(A\\n(aP"Ta" \{\
2383 . tm Usage: Ta must follow column entry: e.g. (#\\n(.c)
2384 . tm .It column_string [Ta [column_string ...] ]
2388 .\" NS Dl macro - display (one line) literal
2390 'ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
2394 . tm Usage: .Dl argument ... (#\\n(.c)
2413 . tm Usage: .Dl not callable by other macros (#\\n(.c)
2418 .\" NS D1 macro - display (one line)
2420 'ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
2424 . tm Usage: .D1 argument ... (#\\n(.c)
2440 . ie \\n(C\\n(aP==1 .\\*(A\\n(aP
2445 . tm Usage: .D1 not callable by other macros (#\\n(.c)
2449 .\" NS Ex macro - DEFUNCT
2451 .tm Ex defunct, Use .D1: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
2454 .\" NS Ex macro - DEFUNCT
2456 .tm Ex defunct, Use .D1: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
2459 .\" NS Vt macro - Variable type (for forcing old style variable declarations)
2460 .\" this is not done in the same manner as .Ot for fortrash - clean up later
2462 .\" if a function declaration was the last thing given, want vertical space
2467 .\" if a subroutine was the last thing given, want vertical space
2478 \\*(fT\&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
2485 .\" NS Ft macro - Function type
2507 \&\\*(fT\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
2513 .\" NS Ot macro - Old Function type (fortran - no newline)
2535 .if \\n(.$==4 .as b1 \&\\*(fT\&\\$1 \\$2 \\$3 \\$4
2536 .if \\n(.$==3 .as b1 \&\\*(fT\&\\$1 \\$2 \\$3
2537 .if \\n(.$==2 .as b1 \&\\*(fT\&\\$1 \\$2
2538 .if \\n(.$==1 .as b1 \&\\*(fT\&\\$1
2542 .\" NS Fa macro - Function arguments
2545 . ie \\n(.$==0 .tm Usage: .Fa Function Arguments ... \\*(Pu (#\\n(.c)
2565 . if \\n(aC>\\n(aP \{\
2577 .\" NS fC macro - interal .Fa for .FO and .Fc
2579 .ie \\n(aC>\\n(aP \{\
2582 .\" . if \\n(nS>0 \{\
2593 . as b1 \&\f\\n(cF\s\\n(cZ,\\*(S\\n(aP\\*(fA\\*(A\\n(aP\fP\s0
2594 .\" . as b1 \&\\,\\*(S\\n(aP\fP\s0\\*(fA\\*(A\\n(aP\fP\s0
2597 . as b1 \&\|\\*(fA\\*(A\\n(aP\fP\s0
2606 .\" NS Fn macro - functions
2607 .\" NS fY register - dick with old style function declarations (fortran)
2608 .\" NS fZ register - break a line when more than one function in a synopsis
2612 . ie \\n(.$==0 .tm Usage: .Fn function_name function_arg(s) ... \\*(Pu (#\\n(.c)
2629 .\" if there is/has been more than one subroutine declaration
2657 . nr iS ((8)*\\n(fW)u
2664 .if \\n(aC>\\n(aP \{\
2668 . as b1 \\*(fN\\*(A\\n(aP\fP\s0\\*(lp
2669 . ie \\n(aC>\\n(aP \{\
2684 .\" NS f1 macro - class switch
2685 .\" NS f2 macro - handle function arguments
2686 .\" NS f3 macro - punctuation
2687 .\" NS f4 macro - write out function
2689 .as b1 \\*(rp\f\\n(cF\s\\n(cZ
2704 .ie \\n(aC>\\n(aP \{\
2707 . if \\n(C\\n(aP==2 \{\
2708 . as b1 \&\|\f\\n(cF\s\\n(cZ,\\*(S\\n(aa\fP\s0\|
2713 . as b1 \\*(rp\f\\n(cF\s\\n(cZ
2718 .as b1 \\*(rp\f\\n(cF\s\\n(cZ\\*(A\\n(aP
2719 .ie \\n(aC>\\n(aP \{\
2725 .as b1 \\*(rp\f\\n(cF\s\\n(cZ\\*(S\\n(aP\\*(A\\n(aP
2726 .ie \\n(aC>\\n(aP \{\
2735 . ie \\n(.$==0 .tm Usage: .Fo function_name
2752 .\" if there is/has been more than one subroutine declaration
2780 . nr iS ((8)*\\n(fW)u
2787 .if \\n(aC>\\n(aP \{\
2793 . as b1 \\*(fN\\*(A\\n(aP\fP\s0\\*(lp
2817 .ie \\n(aC>\\n(aP \{\
2829 .\" NS fb macro - if SYNOPSIS, set hard space inbetween function args
2830 .\" NS fb register - count of words in a function argument
2831 .\" NS Fb register - counter
2832 .\" NS Fb string - temporary string
2834 .\" .tm fB==\\n(fB, Fb==\\n(Fb, 1==\\$1 2==\\$2 3==\\$3 4==\\$4 5==\\$5 6==\\$6
2842 .if \\n(Fb<\\n(fB \{\
2844 . fB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
2847 .\" NS Fc - Function close - not implemented yet
2848 .\" NS Fo - Function open - not implemented yet
2850 .\" Very crude references, stash all reference info into strings (usual
2851 .\" use of b1 buffer, then b1 contents copied to string of retrievable
2852 .\" naming convention), print out reference on .Re request and clean up.
2853 .\" Ordering very limited, no fancy citations, but can do articles, journals
2854 .\" and books - need to add several missing options (like city etc).
2855 .\" should be able to grab a refer entry, massage it a wee bit (prefix
2856 .\" a `.' to the %[A-Z]) and not worry (ha!)
2858 .\" NS Rs macro - Reference Start
2859 .\" NS rS register - Reference Start flag
2860 .\" NS rS string - Reference Start buffer name for next save (of b1 buffer)
2867 .\" NS Re macro - Reference End
2873 .\" NS rC macro - reference cleanup
2887 .rm U1 U2 U3 U4 U5 U6 U7 U8
2888 .rm uK jK nK oK rK qK tK vK dK pK bK
2890 .\" NS rZ macro - reference print
2892 .if \\n(uK \{\&\\*(U1,
2902 . ie (\\n(jK==1):(\\n(bK==1) \{\&\\*q\\*(tK\\*q.
2904 . el \{\&\\*(eM\\*(tK\\*(nO.
2908 . ie (\\n(jK==1):(\\n(bK==1) \{\&\\*q\\*(tK\\*q,
2910 . el \{\&\\*(eM\\*(tK\\*(nO,
2916 . if \\n(Kl==0 \&\\*(eM\\*(bK\\*(nO.
2917 . if \\n(Kl>0 \&\\*(eM\\*(bK\\*(nO,
2921 . if \\n(Kl==0 \&\\*(eM\\*(jK\\*(nO.
2922 . if \\n(Kl>0 \&\\*(eM\\*(jK\\*(nO,
2926 . if \\n(Kl==0 \&\\*(rK.
2927 . if \\n(Kl>0 \&\\*(rK,
2931 . if \\n(Kl==0 \&\\*(nK.
2932 . if \\n(Kl>0 \&\\*(nK,
2936 . if \\n(Kl==0 \&\\*(vK.
2937 . if \\n(Kl>0 \&\\*(vK,
2941 . if \\n(Kl==0 \&\\*(pK.
2942 . if \\n(Kl>0 \&\\*(pK,
2946 . if \\n(Kl==0 \&\\*(qK.
2947 . if \\n(Kl>0 \&\\*(qK,
2951 . if \\n(Kl==0 \&\\*(dK.
2952 . if \\n(Kl>0 \&\\*(dK,
2956 . if \\n(Kl==0 \&\\*(oK.
2957 . if \\n(Kl>0 \&\\*(oK,
2959 .if \\n(Kl>0 .tm unresolved reference problem
2961 .\" NS aK macro - print out reference authors
2964 .ie (\\n(uK-\\n(aK)==0 \{\&and \\*(U\\n(aK,
2966 .el \{\&\\*(U\\n(aK,
2970 .\" NS %A macro - reference author(s)
2971 .\" NS uK register - reference author(s) counter
2972 .\" NS U[1-9] strings - reference author(s) names
2975 . ie \\n(.$==0 .tm Usage: .%A Author_name (#\\n(.c)
2981 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
2984 .if \\n(aC>\\n(aP \{\
2991 .\" NS %B macro - [reference] Book Name
2992 .\" NS bK string - Book Name
2993 .\" NS bK register - Book Name flag
2996 . ie \\n(.$==0 .tm Usage: .%B Book Name (#\\n(.c)
3017 .if \\n(aC>\\n(aP \{\
3028 .\" NS %D macro - [reference] Date
3029 .\" NS dK string - Date String
3030 .\" NS dK register - Date flag
3033 . ie \\n(.$==0 .tm Usage: .%D Date (#\\n(.c)
3052 .if \\n(aC>\\n(aP \{\
3059 .\" NS %J macro - [reference] Journal Name
3060 .\" NS jK register - [reference] Journal Name flag
3061 .\" NS jK string - [reference] Journal Name
3064 . ie \\n(.$==0 .tm Usage: .%J Journal Name (#\\n(.c)
3083 .if \\n(aC>\\n(aP \{\
3090 .\" NS %N macro - [reference] issue number
3091 .\" NS nK register - [reference] issue number flag
3092 .\" NS nK string - [reference] issue number
3095 . ie \\n(.$==0 .tm Usage: .%N issue number (#\\n(.c)
3101 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
3104 .if \\n(aC>\\n(aP \{\
3111 .\" NS %O macro - [reference] optional information
3112 .\" NS oK register - [reference] optional information flag
3113 .\" NS oK string - [reference] optional information
3116 . ie \\n(.$==0 .tm Usage: .%O optional information ... \\*(Pu (#\\n(.c)
3135 .if \\n(aC>\\n(aP \{\
3142 .\" NS %P macro - [reference] page numbers
3143 .\" NS pK register - [reference] page number flag
3144 .\" NS pK string - [reference] page number
3147 . ie \\n(.$==0 .tm Usage: .%P page numbers ... \\*(Pu (#\\n(.c)
3166 .if \\n(aC>\\n(aP \{\
3173 .\" NS %Q macro - Corporate or Foreign Author
3174 .\" NS qK string - Corporate or Foreign Author
3175 .\" NS qK register - Corporate or Foreign Author flag
3178 . ie \\n(.$==0 .tm Usage: .%Q Corporate or Foreign Author (#\\n(.c)
3197 .if \\n(aC>\\n(aP \{\
3204 .\" NS %R macro - [reference] report name
3205 .\" NS rK string - [reference] report name
3206 .\" NS rK register - [reference] report flag
3209 . ie \\n(.$==0 .tm Usage: .%R reference report (#\\n(.c)
3228 .if \\n(aC>\\n(aP \{\
3235 .\" NS %T macro - reference title
3236 .\" NS tK string - reference title
3237 .\" NS tK register - reference title flag
3240 . ie \\n(.$==0 .tm Usage: .%T (#\\n(.c)
3261 .if \\n(aC>\\n(aP \{\
3262 .\" . ie \\n(jS==1 \{\
3265 .\" . ds qL \&\\*(Lq\\*(rA
3266 .\" . ds qR \&\\*(Rq\f\\n(cF\s\\n(cZ
3267 .\" . En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
3281 .\" NS %V macro - reference volume
3282 .\" NS vK string - reference volume
3283 .\" NS vK register - reference volume flag
3286 . ie \\n(.$==0 .tm Usage: .%V Volume , ... \\*(Pu (#\\n(.c)
3292 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
3295 .if \\n(aC>\\n(aP \{\
3302 .\" NS rR macro - reference recursion routine
3303 .\" NS jM local register
3304 .\" NS jN local register
3309 .\" . as b1 \&\f\\n(cF\s\\n(cZ
3310 . ie "\\*(A\\n(aP"Tn" \{\
3314 . if \\n(aC>8 .tm Usage: \\*(mN - maximum 8 arguments (#\\n(.c)
3321 . ie \\n(jM==2 .as b1 \&\\*(A\\n(aP
3322 . el .as b1 \&\\*(A\\n(aP
3323 .\" . el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0
3324 . ie \\n(aC==\\n(aP \{\
3325 .\" . as b1 \&\f\\n(cF\s\\n(cZ
3330 . as b1 \&\\*(S\\n(jN
3336 .\" NS rD macro - save b1 buffer in to appropriate name
3343 .\" NS Hf macro - source include header files.
3354 .ta +9n 18n 27n 36n 45n 54n 63n 72n
3357 .ta +8n 16n 24n 32n 40n 48n 56n 64n 72n
3366 .\" NS An macro - author name
3379 . ie \\n(.$==0 .tm Usage: .An author_name ... \\*(Pu (#\\n(.c)
3382 . aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
3385 .if \\n(aC>\\n(aP \{\
3392 .\" NS Sf macro -defunct
3394 .tm .Sf defunct, use prefix or Ns
3396 .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.
3397 .\" Ns Rv macro - return values
3398 .\" Ns rV string - standard return message
3401 .tm Usage: .Rv [-std] (#\\n(.c)
3406 .\" . nr lR \\n(lR+1
3415 .\" . nr fV \\n(.$-1
3416 . if "\\$1"-std" \{\
3418 . if (\\n(cH<2):(\\n(cH>3) .tm Usage: .Rv -std sections 2 and 3 only