~ubuntu-branches/ubuntu/dapper/groff/dapper

« back to all changes in this revision

Viewing changes to tmac/docj.tmac

  • Committer: Bazaar Package Importer
  • Author(s): Colin Watson
  • Date: 2002-03-17 04:11:50 UTC
  • Revision ID: james.westby@ubuntu.com-20020317041150-em69nkqd2qw26v96
Tags: 1.17.2-15.woody.1
* New Danish debconf translation (thanks, Rune B. Broberg;
  closes: #131092).
* New French debconf translation (thanks, Philippe Batailler;
  closes: #138515).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
.\" Copyright (c) 1991 The Regents of the University of California.
 
2
.\" All rights reserved.
 
3
.\"
 
4
.\" Redistribution and use in source and binary forms, with or without
 
5
.\" modification, are permitted provided that the following conditions
 
6
.\" are met:
 
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.
 
19
.\"
 
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
 
30
.\" SUCH DAMAGE.
 
31
.\"
 
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.
 
37
.\"   
 
38
.\" .mdoc-parse - attempt to parse troff request arguments
 
39
.\"     %beginstrip%
 
40
.if \n(.g \{\
 
41
.cp 0
 
42
.ftr C CR
 
43
.\}
 
44
.if \n(.g .ig
 
45
.de sO
 
46
.so /usr/share/tmac/\\$1
 
47
..
 
48
.if !\n(.g .ig
 
49
.de sO
 
50
.mso mdoc/\\$1
 
51
..
 
52
.if t \{\
 
53
.       sO docj-ditroff
 
54
.\}
 
55
.if n \{\
 
56
.       sO docj-nroff
 
57
.\}
 
58
.sO doc-common
 
59
.sO doc-syms
 
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))
 
63
.nr Db 0
 
64
.de Db
 
65
.ie \\n(.$==0 \{\
 
66
.       ie \\n(Db==0 \{\
 
67
.tm DEBUGGING ON
 
68
.               nr Db 1
 
69
.       \}
 
70
.       el \{\
 
71
.tm DEBUGGING OFF
 
72
.               nr Db 0
 
73
.       \}
 
74
.\}
 
75
.el \{\
 
76
.       if "\\$1"on" \{\
 
77
.tm DEBUGGING ON
 
78
.               nr Db 1
 
79
.       \}
 
80
.       if "\\$1"off" \{\
 
81
.tm DEBUGGING OFF
 
82
.               nr Db 0
 
83
.       \}
 
84
.\}
 
85
..
 
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)
 
97
.de aV
 
98
.nr aC \\n(aC+1
 
99
.ie "\\$1"|" \{\
 
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
 
105
.\}
 
106
.el .ds A\\n(aC \\$1
 
107
.aU \\n(aC
 
108
.nr C\\n(aC \\n(aT
 
109
.s\\n(aT
 
110
.if \\n(Db \{\
 
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
 
115
.       if \\n(iN==1 \{\
 
116
.               br
 
117
.               nr iI \\n(.iu
 
118
.               in -\\n(iIu
 
119
.               if \\n(aC==1 \{\
 
120
\&\fBDEBUG(argv) MACRO:\fP `.\\*(mN' \fBLine #:\fP \\n(.c
 
121
.               \}
 
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
 
124
.       \}
 
125
.       if \\n(iN==0 \{\
 
126
.               if \\n(aC==1 \{\
 
127
.                       tm DEBUG(argv) MACRO: `.\\*(mN'  Line #: \\n(.c
 
128
.               \}
 
129
.               tm \tArgc: \\n(aC  Argv: `\\*(A\\n(aC'  Length: \\n(sW
 
130
.               tm \tSpace: `\\*(S\\n(aC'  Class: \\*(yU
 
131
.       \}
 
132
.\}
 
133
.ie \\n(.$==1 \{\
 
134
.       nr aP 0
 
135
.       ie \\n(dZ==1 \{\
 
136
.               if \\n(oM>1 .as b1 \\*(S0
 
137
.       \}
 
138
.       el \{\
 
139
.               if \\n(oM>0 \{\
 
140
.                       if \\n(fC==0 .as b1 \\*(S0
 
141
.               \}
 
142
.       \}
 
143
.       ds S0 \\*(S\\n(aC
 
144
.       if \\n(Db \{\
 
145
.               if \\n(iN==1 \{\
 
146
\&MACRO REQUEST: \t.\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
 
147
.                       br
 
148
.                       in \\n(iIu
 
149
.               \}
 
150
.               if \\n(iN==0 \{\
 
151
.tm \tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
 
152
.               \}
 
153
.       \}
 
154
.\}
 
155
.el .aV \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
156
..
 
157
.de fV
 
158
.nr aC \\n(aC+1
 
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
 
165
.\}
 
166
.aU \\n(aC
 
167
.nr C\\n(aC \\n(aT
 
168
.s\\n(aT
 
169
.if \\n(Db \{\
 
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
 
174
.       if \\n(iN==1 \{\
 
175
.               br
 
176
.               nr iI \\n(.iu
 
177
.               in -\\n(iIu
 
178
.               if \\n(aC==1 \{\
 
179
\&\fBDEBUG(fargv) MACRO:\fP `.\\*(mN'  \fBLine #:\fP \\n(.c
 
180
.               \}
 
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
 
183
.       \}
 
184
.       if \\n(iN==0 \{\
 
185
.               if \\n(aC==1 \{\
 
186
.                       tm DEBUG(fargv) MACRO: `.\\*(mN'  Line #: \\n(.c
 
187
.               \}
 
188
.               tm \tArgc: \\n(aC  Argv: `\\*(A\\n(aC'  Length: \\n(sW
 
189
.               tm \tSpace: `\\*(S\\n(aC'  Class: \\*(yU
 
190
.       \}
 
191
.\}
 
192
.ie \\n(fV==1 \{\
 
193
.       nr aP 0
 
194
.       ie \\n(dZ==1 \{\
 
195
.               if \\n(oM>1 .as b1 \\*(S0
 
196
.       \}
 
197
.       el \{\
 
198
.               if \\n(oM>0 \{\
 
199
.                       if \\n(fC==0 .as b1 \\*(S0
 
200
.               \}
 
201
.       \}
 
202
.       ds S0 \\*(S\\n(aC
 
203
.       nr fV 0
 
204
.       if \\n(Db \{\
 
205
.               ie \\n(iN \{\
 
206
\&\tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
 
207
.                       br
 
208
.                       in \\n(iIu
 
209
.               \}
 
210
.               el \{\
 
211
.tm \tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
 
212
.               \}
 
213
.       \}
 
214
.\}
 
215
.el \{\
 
216
.       nr fV \\n(fV-1
 
217
.       fV
 
218
.\}
 
219
..
 
220
.\" NS aX macro - stuff saved strings into `b1' (used by -diag list)
 
221
.de aX
 
222
.nr aP \\n(aP+1
 
223
.as b1 \&\\*(A\\n(aP
 
224
.ie \\n(fV==1 \{\
 
225
.       nr aP 0
 
226
.       nr fV 0
 
227
.\}
 
228
.el \{\
 
229
.       as b1 \&\\*(sV
 
230
.       nr fV \\n(fV-1
 
231
.       aX
 
232
.\}
 
233
..
 
234
.\" NS aI macro - append arg to arg vector: .aI [arg] [type] (used by .En only)
 
235
.de aI
 
236
.ie \\n(aC<9 \{\
 
237
.       nr aC \\n(aC+1
 
238
.       ds A\\n(aC \\$1
 
239
.       nr C\\n(aC \\$2
 
240
.       s\\$2
 
241
.       ds xV S\\n(aC
 
242
.\}
 
243
.el \{\
 
244
.       tm Usage: Too many arguments (maximum of 8 accepted) (#\\n(.c)
 
245
.       tm \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
 
246
.\}
 
247
..
 
248
.\"
 
249
.\" NS aZ macro - print buffer (pB) and clean up arg vectors (aY)
 
250
.de aZ
 
251
.pB
 
252
.aY
 
253
..
 
254
.\" NS aY macro - clean up arg vector
 
255
.de aY
 
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
 
259
.nr aC 0
 
260
.nr aP 0
 
261
..
 
262
.\" NS pB macro - test for end of vector (eol) (print b1 buffer or divert)
 
263
.de pB
 
264
.ie \\n(dZ==1 \{\
 
265
.       if \\n(oM==1 \{\&\\*(b1
 
266
.               rm S0
 
267
.               ds b1
 
268
.       \}
 
269
.       if \\n(oM==0 \{\
 
270
.               x2
 
271
.       \}
 
272
.\}
 
273
.el \{\
 
274
.       ie \\n(oM==0 \{\&\\*(b1
 
275
.               rm S0
 
276
.               ds b1
 
277
.       \}
 
278
.       el \{\
 
279
.               if ((\\n(sM==1)&(\\n(tP==0)) \{\
 
280
.                       x1
 
281
.               \}
 
282
.       \}
 
283
.\}
 
284
.hy
 
285
..
 
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
 
290
.de x1
 
291
.nr dZ \\n(dZ+1
 
292
.ds b2 \\*(b1
 
293
.ds b1
 
294
.nr lK \\n(.c
 
295
.ev 2
 
296
.fi
 
297
.di eB
 
298
..
 
299
.\"
 
300
.\" NS x2 macro - end diversion and print
 
301
.\" NS b0 string local temporary
 
302
.de x2
 
303
.br
 
304
.di
 
305
.ev
 
306
.ie (\\n(.c-\\n(lK>1) \{\
 
307
.       ds b0 \&\\*(eB\\
 
308
.       ds b1 \\*(b2\\*(b0\\*(b1
 
309
.\}
 
310
.el .ds b1 \\*(b2\\*(b1
 
311
\&\\*(b1
 
312
.rm eB b2 b0 b1
 
313
.nr dZ \\n(dZ-1
 
314
..
 
315
.\" NS Fl macro - flags (appends - and prints flags)
 
316
.\" NS cF register save current font
 
317
.\" NS cZ register save current font size
 
318
.de Fl
 
319
.as b1 \&\\*(fL
 
320
.if \\n(aC==0 \{\
 
321
.       ie \\n(.$==0 \{\
 
322
.               as b1 \&\|\-\|\fP\s0
 
323
.               pB
 
324
.       \}
 
325
.       el \{\
 
326
.               ds mN Fl
 
327
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
328
.       \}
 
329
.\}
 
330
.if \\n(aC>0 \{\
 
331
.       ie (\\n(aC-\\n(aP)==0 \{\
 
332
.               as b1 \&\|\-\fP\s0
 
333
.               aZ
 
334
.       \}
 
335
.       el \{\
 
336
.               nr aP \\n(aP+1
 
337
.               ie \\n(C\\n(aP==1 \{\
 
338
.                       as b1 \&\|\-\fP\s0
 
339
.                       \\*(A\\n(aP
 
340
.               \}
 
341
.               el \{\
 
342
.                       nr cF \\n(.f
 
343
.                       nr cZ \\n(.s
 
344
.                       if \\n(C\\n(aP==3 \{\
 
345
.                               as b1 \&\|\-\|
 
346
.                       \}
 
347
.                       fR
 
348
.               \}
 
349
.       \}
 
350
.\}
 
351
..
 
352
.\"
 
353
.\" NS fR macro - Fl flag recursion routine (special handling)
 
354
.\" NS jM local register
 
355
.\" NS jN local register
 
356
.\"
 
357
.de fR
 
358
.hy 0
 
359
.nr jM \\n(C\\n(aP
 
360
.ie \\n(jM==1 \{\
 
361
.       as b1 \&\fP\s0
 
362
.       \\*(A\\n(aP
 
363
.\}
 
364
.el \{\
 
365
.       nr jN \\n(aP
 
366
.       ie \\n(jM==2 \{\
 
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
 
371
.                       \}
 
372
.                       el .as b1 \&\\*(A\\n(aP
 
373
.               \}
 
374
.               el .as b1 \&\\*(A\\n(aP
 
375
.       \}
 
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 \&\|\-
 
379
.               as b1 \&\fP\s0
 
380
.               aZ
 
381
.       \}
 
382
.       el \{\
 
383
.               nr aP \\n(aP+1
 
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
 
387
.       \}
 
388
.\}
 
389
.rr jM jN
 
390
..
 
391
.\"
 
392
.\" NS nR macro - general name recursion routine
 
393
.\" NS jM local register
 
394
.\" NS jN local register
 
395
.de nR
 
396
.hy 0
 
397
.nr jM \\n(C\\n(aP
 
398
.ie \\n(jM==1 \{\
 
399
.       as b1 \&\f\\n(cF\s\\n(cZ
 
400
.       \\*(A\\n(aP
 
401
.\}
 
402
.el \{\
 
403
.       nr jN \\n(aP
 
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
 
408
.               aZ
 
409
.       \}
 
410
.       el \{\
 
411
.               nr aP \\n(aP+1
 
412
.               as b1 \&\\*(S\\n(jN
 
413
.               nR
 
414
.       \}
 
415
.\}
 
416
.rr jM jN
 
417
..
 
418
.\" NS Ar macro - command line `argument' macro
 
419
.\"
 
420
.de Ar
 
421
.as b1 \\*(aR
 
422
.if \\n(aC==0 \{\
 
423
.       ie \\n(.$==0 \{\
 
424
.               as b1 file\ ...\fP\s0
 
425
.               pB
 
426
.       \}
 
427
.       el \{\
 
428
.               ds mN Ar
 
429
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
430
.       \}
 
431
.\}
 
432
.if \\n(aC>0 \{\
 
433
.       ie (\\n(aC-\\n(aP)==0 \{\
 
434
.               as b1 \&file\ ...\fP\s0
 
435
.               aZ
 
436
.       \}
 
437
.       el \{\
 
438
.               nr aP \\n(aP+1
 
439
.               ie \\n(C\\n(aP==1 \{\
 
440
.                       as b1 \&file\ ...\fP\s0
 
441
.                       \\*(A\\n(aP
 
442
.               \}
 
443
.               el \{\
 
444
.                       nr cF \\n(.f
 
445
.                       nr cZ \\n(.s
 
446
.                       if \\n(C\\n(aP==3 \{\
 
447
.                               as b1 \&file\ ...
 
448
.                       \}
 
449
.                       nR
 
450
.               \}
 
451
.       \}
 
452
.\}
 
453
..
 
454
.\" NS Ad macro - Addresses
 
455
.de Ad
 
456
.if \\n(aC==0 \{\
 
457
.       ie \\n(.$==0 .tm Usage: .Ad address ... \\*(Pu (#\\n(.c)
 
458
.       el \{\
 
459
.               ds mN Ad
 
460
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
461
.       \}
 
462
.\}
 
463
.if \\n(aC>\\n(aP \{\
 
464
.       as b1 \\*(aD
 
465
.       nr aP \\n(aP+1
 
466
.       nr cF \\n(.f
 
467
.       nr cZ \\n(.s
 
468
.       nR
 
469
.\}
 
470
..
 
471
.\" NS Cd macro - Config declaration (for section 4 SYNOPSIS) (not callable)
 
472
.\" needs work - not very translatable
 
473
.de Cd
 
474
.if \\n(aC==0 \{\
 
475
.       ie \\n(.$==0 .tm Usage: .Cd Configuration file declaration (#\\n(.c)
 
476
.       el \{\
 
477
.               ds mN Cd
 
478
.               ds A1 \\$1
 
479
.               ds A2 \\$2
 
480
.               ds A3 \\$3
 
481
.               ds A4 \\$4
 
482
.               ds A5 \\$5
 
483
.               ds A6 \\$6
 
484
.               ds A7 \\$7
 
485
.               ds A8 \\$8
 
486
.               ds A9 \\$9
 
487
.               nr fV \\n(.$
 
488
.               fV
 
489
.       \}
 
490
.\}
 
491
.br
 
492
.if \\n(aC>\\n(aP \{\
 
493
.       as b1 \\*(nM
 
494
.       nr aP \\n(aP+1
 
495
.       nr cF \\n(.f
 
496
.       nr cZ \\n(.s
 
497
.       ie \\n(nS \{\
 
498
.               if "\\*(mN"Cd" \{\
 
499
.                       rs
 
500
.                       ie \\n(nS>1 .br
 
501
.                       el \{\
 
502
.                               if \\n(iS==0 .nr iS \\n(Dsu
 
503
.                       \}
 
504
.                       in +\\n(iSu
 
505
.                       ti -\\n(iSu
 
506
.                       nr nS \\n(nS+1
 
507
.               \}
 
508
.       nR
 
509
.       in -\\n(iSu
 
510
.       \}
 
511
.       el .nR
 
512
.\}
 
513
..
 
514
.\" NS Cm macro - Interactive command modifier (flag)
 
515
.de Cm
 
516
.if \\n(aC==0 \{\
 
517
.       ie \\n(.$==0 .tm Usage: .Cm Interactive command modifier ... \\*(Pu (#\\n(.c)
 
518
.       el \{\
 
519
.               ds mN Cm
 
520
.               ds A1 \\$1
 
521
.               ds A2 \\$2
 
522
.               ds A3 \\$3
 
523
.               ds A4 \\$4
 
524
.               ds A5 \\$5
 
525
.               ds A6 \\$6
 
526
.               ds A7 \\$7
 
527
.               ds A8 \\$8
 
528
.               ds A9 \\$9
 
529
.               nr fV \\n(.$
 
530
.               fV
 
531
.       \}
 
532
.\}
 
533
.if \\n(aC>\\n(aP \{\
 
534
.       as b1 \\*(cM
 
535
.       nr aP \\n(aP+1
 
536
.       nr cF \\n(.f
 
537
.       nr cZ \\n(.s
 
538
.       nR
 
539
.\}
 
540
..
 
541
.\" NS Dv macro - define variable
 
542
.de Dv
 
543
.if \\n(aC==0 \{\
 
544
.       ie \\n(.$==0 .tm Usage: .Dv define_variable ... \\*(Pu (#\\n(.c)
 
545
.       el \{\
 
546
.               ds mN Dv
 
547
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
548
.       \}
 
549
.\}
 
550
.if \\n(aC>\\n(aP \{\
 
551
.       as b1 \\*(eR
 
552
.       nr aP \\n(aP+1
 
553
.       nr cF \\n(.f
 
554
.       nr cZ \\n(.s
 
555
.       nR
 
556
.\}
 
557
..
 
558
.\" NS Em macro - Emphasis
 
559
.de Em
 
560
.if \\n(aC==0 \{\
 
561
.       ie \\n(.$==0 \{\
 
562
.               tm Usage: .Em text ... \\*(Pu (#\\n(.c)
 
563
.       \}
 
564
.       el \{\
 
565
.               ds mN Em
 
566
.               ds A1 \\$1
 
567
.               ds A2 \\$2
 
568
.               ds A3 \\$3
 
569
.               ds A4 \\$4
 
570
.               ds A5 \\$5
 
571
.               ds A6 \\$6
 
572
.               ds A7 \\$7
 
573
.               ds A8 \\$8
 
574
.               ds A9 \\$9
 
575
.               nr fV \\n(.$
 
576
.               fV
 
577
.       \}
 
578
.\}
 
579
.if \\n(aC>\\n(aP \{\
 
580
.       as b1 \\*(eM
 
581
.       nr aP \\n(aP+1
 
582
.       nr cF \\n(.f
 
583
.       nr cZ \\n(.s
 
584
.       nR
 
585
.\}
 
586
..
 
587
.\" NS Er macro - Errnotype
 
588
.de Er
 
589
.if \\n(aC==0 \{\
 
590
.       ie \\n(.$==0 .tm Usage: .Er ERRNOTYPE ... \\*(Pu (#\\n(.c)
 
591
.       el \{\
 
592
.               ds mN Er
 
593
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
594
.       \}
 
595
.\}
 
596
.if \\n(aC>\\n(aP \{\
 
597
.       as b1 \\*(eR
 
598
.       nr aP \\n(aP+1
 
599
.       nr cF \\n(.f
 
600
.       nr cZ \\n(.s
 
601
.       nR
 
602
.\}
 
603
..
 
604
.\" NS Ev macro - Environment variable
 
605
.de Ev
 
606
.if \\n(aC==0 \{\
 
607
.       ie \\n(.$==0 .tm Usage: .Ev ENVIRONMENT_VARIABLE ... \\*(Pu (#\\n(.c)
 
608
.       el \{\
 
609
.               ds mN Ev
 
610
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
611
.       \}
 
612
.\}
 
613
.if \\n(aC>\\n(aP \{\
 
614
.       as b1 \\*(eV
 
615
.       nr aP \\n(aP+1
 
616
.       nr cF \\n(.f
 
617
.       nr cZ \\n(.s
 
618
.       nR
 
619
.\}
 
620
..
 
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)
 
625
.de Fd
 
626
.ds mN Fd
 
627
.if \\n(nS>0 \{\
 
628
.\"     if a variable type was the last thing given, want vertical space
 
629
.       if \\n(fX>0 \{\
 
630
.               Pp
 
631
.               nr fX 0
 
632
.       \}
 
633
.\"     if a subroutine was the last thing given, want vertical space
 
634
.       if \\n(fZ>0 \{\
 
635
.               ie \\n(fD==0 \{\
 
636
.                       Pp
 
637
.                       rs
 
638
.               \}
 
639
.               el .br
 
640
.       \}
 
641
.       nr fD \\n(fD+1
 
642
.\}
 
643
.nr cF \\n(.f
 
644
.nr cZ \\n(.s
 
645
\&\\*(fD\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
646
.br
 
647
.ft \\n(cF
 
648
.fs \\n(cZ
 
649
..
 
650
.\" NS Fr macro - function return value - not callable (at the moment)
 
651
.de Fr
 
652
.if \\n(aC==0 \{\
 
653
.       ie \\n(.$==0 .tm Usage: .Fr Function_return_value... \\*(Pu (#\\n(.c)
 
654
.       el \{\
 
655
.               ds mN Fr
 
656
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
657
.       \}
 
658
.\}
 
659
.if \\n(aC>\\n(aP \{\
 
660
.       as b1 \\*(aR
 
661
.       nr aP \\n(aP+1
 
662
.       nr cF \\n(.f
 
663
.       nr cZ \\n(.s
 
664
.       nR
 
665
.\}
 
666
..
 
667
.\" NS Ic macro - Interactive command
 
668
.de Ic
 
669
.if \\n(aC==0 \{\
 
670
.       ie \\n(.$==0 .tm Usage: .Ic Interactive command ... \\*(Pu (#\\n(.c)
 
671
.       el \{\
 
672
.               ds mN Ic
 
673
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
674
.       \}
 
675
.\}
 
676
.if \\n(aC>\\n(aP \{\
 
677
.       as b1 \\*(iC
 
678
.       nr aP \\n(aP+1
 
679
.       nr cF \\n(.f
 
680
.       nr cZ \\n(.s
 
681
.       nR
 
682
.\}
 
683
..
 
684
.\" NS Li macro - literals
 
685
.de Li
 
686
.if \\n(aC==0 \{\
 
687
.       ie \\n(.$==0 .tm Usage .Li argument ... \\*(Pu (#\\n(.c)
 
688
.       el \{\
 
689
.               ds mN Li
 
690
.               ds A1 \\$1
 
691
.               ds A2 \\$2
 
692
.               ds A3 \\$3
 
693
.               ds A4 \\$4
 
694
.               ds A5 \\$5
 
695
.               ds A6 \\$6
 
696
.               ds A7 \\$7
 
697
.               ds A8 \\$8
 
698
.               ds A9 \\$9
 
699
.               nr fV \\n(.$
 
700
.               fV
 
701
.       \}
 
702
.\}
 
703
.if \\n(aC>\\n(aP \{\
 
704
.       as b1 \\*(lI
 
705
.       nr aP \\n(aP+1
 
706
.       nr cF \\n(.f
 
707
.       nr cZ \\n(.s
 
708
.       nR
 
709
.\}
 
710
..
 
711
.\" NS Or macro - Pipe symbol (OR)
 
712
.de Or
 
713
.if \\n(aC==0 \{\
 
714
.       ie \\n(.$==0 .tm Usage: .Or ... \\*(Pu (#\\n(.c)
 
715
.       el \{\
 
716
.               ds mN Or
 
717
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
718
.       \}
 
719
.\}
 
720
.if \\n(aC>\\n(aP \{\
 
721
.       as b1 \\*(iC
 
722
.       nr aP \\n(aP+1
 
723
.       nr cF \\n(.f
 
724
.       nr cZ \\n(.s
 
725
.       nR
 
726
.\}
 
727
..
 
728
.\" NS Ms macro - Math symbol
 
729
.de Ms
 
730
.if \\n(aC==0 \{\
 
731
.       ie \\n(.$==0 .tm Usage: .Ms Math symbol ... \\*(Pu (#\\n(.c)
 
732
.       el \{\
 
733
.               ds mN Ms
 
734
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
735
.       \}
 
736
.\}
 
737
.if \\n(aC>\\n(aP \{\
 
738
.       as b1 \\*(sY
 
739
.       nr aP \\n(aP+1
 
740
.       nr cF \\n(.f
 
741
.       nr cZ \\n(.s
 
742
.       nR
 
743
.\}
 
744
..
 
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
 
748
.de Nm
 
749
.if \\n(aC==0 \{\
 
750
.       ie \\n(.$==0 \{\
 
751
.               ie "\\*(n1"" .tm Usage: .Nm Name(s) ... \\*(Pu (#\\n(.c)
 
752
.               el \&\\*(nM\\*(n1\fP\s0
 
753
.       \}
 
754
.       el \{\
 
755
.               ds mN Nm
 
756
.               ds A1 \\$1
 
757
.               ds A2 \\$2
 
758
.               ds A3 \\$3
 
759
.               ds A4 \\$4
 
760
.               ds A5 \\$5
 
761
.               ds A6 \\$6
 
762
.               ds A7 \\$7
 
763
.               ds A8 \\$8
 
764
.               ds A9 \\$9
 
765
.               nr fV \\n(.$
 
766
.               fV
 
767
.       \}
 
768
.\}
 
769
.if \\n(aC>0 \{\
 
770
.       ie \\n(aC==\\n(aP \{\
 
771
.               as b1 \&\\*(nM\\*(n1\fP\s0
 
772
.               aZ
 
773
.       \}
 
774
.       el \{\
 
775
.               as b1 \\*(nM
 
776
.               nr aP \\n(aP+1
 
777
.               ie \\n(C\\n(aP==1 \{\
 
778
.                       as b1 \&\\*(n1\fP\s0
 
779
.                       \\*(A\\n(aP
 
780
.               \}
 
781
.               el \{\
 
782
.                       nr cF \\n(.f
 
783
.                       nr cZ \\n(.s
 
784
.                       if \\n(nS \{\
 
785
.                               if "\\*(mN"Nm" \{\
 
786
.                                       rs
 
787
.                                       in -\\n(iSu
 
788
.                                       ie \\n(nS>1 .br
 
789
.                                       el \{\
 
790
.                                               if \\n(iS==0 \{\
 
791
.                                                       sw \\$1
 
792
.                                       nr iS ((\\n(sWu+1)*\\n(fW)u
 
793
.                                               \}
 
794
.                                       \}
 
795
.                                       in +\\n(iSu
 
796
.                                       ti -\\n(iSu
 
797
.                                       nr nS \\n(nS+1
 
798
.                               \}
 
799
.                       \}
 
800
.                       if "\\*(n1"" .ds n1 \\*(A\\n(aP
 
801
.                       nR
 
802
.               \}
 
803
.       \}
 
804
.\}
 
805
..
 
806
.\" NS Pa macro - Pathname
 
807
.de Pa
 
808
.if \\n(aC==0 \{\
 
809
.       ie \\n(.$==0 \&\\*(pA~\fP\s0
 
810
.       el \{\
 
811
.               ds mN Pa
 
812
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
813
.       \}
 
814
.\}
 
815
.if \\n(aC>\\n(aP \{\
 
816
.       as b1 \\*(pA
 
817
.       nr aP \\n(aP+1
 
818
.       nr cF \\n(.f
 
819
.       nr cZ \\n(.s
 
820
.       nR
 
821
.\}
 
822
..
 
823
.\" NS Sy macro - Symbolics
 
824
.de Sy
 
825
.if \\n(aC==0 \{\
 
826
.       ie \\n(.$==0 .tm Usage: .Sy symbolic_text ... \\*(Pu (#\\n(.c)
 
827
.       el \{\
 
828
.               ds mN Sy
 
829
.               ds A1 \\$1
 
830
.               ds A2 \\$2
 
831
.               ds A3 \\$3
 
832
.               ds A4 \\$4
 
833
.               ds A5 \\$5
 
834
.               ds A6 \\$6
 
835
.               ds A7 \\$7
 
836
.               ds A8 \\$8
 
837
.               ds A9 \\$9
 
838
.               nr fV \\n(.$
 
839
.               fV
 
840
.       \}
 
841
.\}
 
842
.if \\n(aC>\\n(aP \{\
 
843
.       as b1 \\*(sY
 
844
.       nr aP \\n(aP+1
 
845
.       nr cF \\n(.f
 
846
.       nr cZ \\n(.s
 
847
.       nR
 
848
.\}
 
849
..
 
850
.\" NS Tn macro - Trade Name Macro
 
851
.de Tn
 
852
.if \\n(aC==0 \{\
 
853
.       ie \\n(.$==0 .tm Usage: .Tn Trade_name(s) ... \\*(Pu (#\\n(.c)
 
854
.       el \{\
 
855
.               ds mN Tn
 
856
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
857
.       \}
 
858
.\}
 
859
.if \\n(aC>\\n(aP \{\
 
860
.       as b1 \\*(tN\\*(tF
 
861
.       nr aP \\n(aP+1
 
862
.       nr cF \\n(.f
 
863
.       nr cZ \\n(.s
 
864
.       nR
 
865
.\}
 
866
..
 
867
.\" NS nN macro - Trade Name Macro for inside of reference
 
868
.de nN
 
869
.if \\n(aC==0 \{\
 
870
.       ie \\n(.$==0 .tm Usage: .Tn Trade_name(s) ... \\*(Pu (#\\n(.c)
 
871
.       el \{\
 
872
.               ds mN Tn
 
873
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
874
.       \}
 
875
.\}
 
876
.if \\n(aC>\\n(aP \{\
 
877
.       as b1 \\*(tN
 
878
.       nr aP \\n(aP+1
 
879
.       nr cF \\n(.f
 
880
.       nr cZ \\n(.s
 
881
.       rR
 
882
.\}
 
883
..
 
884
.\" NS Va macro - variable name macro
 
885
.de Va
 
886
.if \\n(aC==0 \{\
 
887
.       ie \\n(.$==0 .tm Usage: .Va variable_name(s) ... \\*(Pu (#\\n(.c)
 
888
.       el \{\
 
889
.               ds mN Va
 
890
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
891
.       \}
 
892
.\}
 
893
.if \\n(aC>\\n(aP \{\
 
894
.       as b1 \\*(vA
 
895
.       nr aP \\n(aP+1
 
896
.       nr cF \\n(.f
 
897
.       nr cZ \\n(.s
 
898
.       nR
 
899
.\}
 
900
..
 
901
.\"
 
902
.\" NS No macro - Normal text macro (default text style if mess up)
 
903
.de No
 
904
.as b1 \\*(nO
 
905
.if \\n(aC==0 \{\
 
906
.       ie \\n(.$==0 .tm Usage: .No must be called with arguments (#\\n(.c)
 
907
.       el \{\
 
908
.               ds mN No
 
909
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
910
.       \}
 
911
.\}
 
912
.if \\n(aC>\\n(aP \{\
 
913
.       nr aP \\n(aP+1
 
914
.       ie \\n(C\\n(aP==1 \{\
 
915
.               \\*(A\\n(aP
 
916
.       \}
 
917
.       el \{\
 
918
.               nr cF \\n(.f
 
919
.               nr cZ \\n(.s
 
920
.               nR
 
921
.       \}
 
922
.\}
 
923
..
 
924
.\"------------------------------------------------------------------------
 
925
.\" NS Op macro - Option Expression
 
926
.de Op
 
927
.if \\n(aC==0 \{\
 
928
.       ds mN Op
 
929
.\}
 
930
.\" .ds qL \&\\*(lO
 
931
.\" .ds qR \&\\*(rO
 
932
.ds qL \&\\*(lB
 
933
.ds qR \&\\*(rB
 
934
.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
 
935
..
 
936
.\" NS Aq macro - Enclose string in angle brackets
 
937
.de Aq
 
938
.if \\n(aC==0 .ds mN Aq
 
939
.ds qL \&<
 
940
.ds qR \&>
 
941
.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
942
..
 
943
.\" NS Bq macro - Enclose string in square brackets
 
944
.de Bq
 
945
.if \\n(aC==0 .ds mN Bq
 
946
.ds qL \&\\*(lB
 
947
.ds qR \&\\*(rB
 
948
.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
949
..
 
950
.\" NS Dq macro - Enclose string in double quotes
 
951
.de Dq
 
952
.if \\n(aC==0 .ds mN Dq
 
953
.ds qL \&\\*(Lq
 
954
.ds qR \&\\*(Rq
 
955
.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
956
..
 
957
.\" NS Eq macro - Enclose string in double quotes
 
958
.de Eq
 
959
.if \\n(aC==0 .ds mN Eq
 
960
.ds qL \\$1
 
961
.ds qR \\$2
 
962
.En \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
963
..
 
964
.\" NS Pq macro - Enclose string in parenthesis
 
965
.de Pq
 
966
.if \\n(aC==0 .ds mN Pq
 
967
.ds qL \&\\*(lP
 
968
.ds qR \&\\*(rP
 
969
.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
970
..
 
971
.\" NS Ql macro - Quoted literal is in file mdocj-[dit|n|g]roff (too large
 
972
.\" an if-else to carry along recursively for `if n ...')
 
973
.\"
 
974
.\" NS Sq macro - Enclose string in single quotes
 
975
.de Qq
 
976
.if \\n(aC==0 .ds mN Qq
 
977
.ds qL \&\\*q
 
978
.ds qR \&\\*q
 
979
.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
980
..
 
981
.\" NS Sq macro - Enclose string in single quotes
 
982
.de Sq
 
983
.if \\n(aC==0 .ds mN Sq
 
984
.ds qL \&\\*(sL
 
985
.ds qR \&\\*(sR
 
986
.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
987
..
 
988
.\"
 
989
.\" NS Es macro - Set up strings for .En call
 
990
.de Es
 
991
.if \\n(aC==0 \{\
 
992
.       ie \\n(.$>2 .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
993
.       el \{\
 
994
.               ds qL \\$1
 
995
.               ds qR \\$2
 
996
.       \}
 
997
.\}
 
998
.if \\n(aC>\\n(aP \{\
 
999
.       nr aP \\n(aP+1
 
1000
.       ds qL \\*(A\\n(aP
 
1001
.       nr aP \\n(aP+1
 
1002
.       ds qR \\*(A\\n(aP
 
1003
.       ie \\n(aC>\\n(aP .c\\n(C\\n(aP
 
1004
.       el .aZ
 
1005
.\}
 
1006
..
 
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)
 
1013
.de En
 
1014
.ie \\n(aC==0 \{\
 
1015
.       ie \\n(.$==0 \{\
 
1016
.               as b1 \&\\*(qL\\*(qR
 
1017
.               pB
 
1018
.       \}
 
1019
.       el \{\
 
1020
.\".            as mN (En)
 
1021
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1022
.               as b1 \&\\*(qL
 
1023
.       \}
 
1024
.\}
 
1025
.el \{\
 
1026
.       as b1 \&\\*(qL
 
1027
.\}
 
1028
.if \\n(aC>0 \{\
 
1029
.       ie (\\n(aC-\\n(aP)==0 \{\
 
1030
.               as b1 \&\\*(qR
 
1031
.               aZ
 
1032
.       \}
 
1033
.       el \{\
 
1034
.               ie \\n(C\\n(aC==3 \{\
 
1035
.                       nr aJ \\n(aC-1
 
1036
.                       vR
 
1037
.                       nr aJ \\n(aJ+1
 
1038
.                       ds A\\n(aJ \&\\*(qR\\*(A\\n(aJ
 
1039
.                       nr aJ 0
 
1040
.               \}
 
1041
.               el .aI \&\\*(qR 3
 
1042
.               nr aP \\n(aP+1
 
1043
.               if \\n(C\\n(aP==1 .\\*(A\\n(aP
 
1044
.               if \\n(C\\n(aP>1 \{\
 
1045
.                       nr aP \\n(aP-1
 
1046
.                       No
 
1047
.               \}
 
1048
.       \}
 
1049
.\}
 
1050
..
 
1051
.\" NS vR macro - vector routine (for En, trace backwards past trail punct)
 
1052
.de vR
 
1053
.if \\n(C\\n(aJ==3 \{\
 
1054
.       nr aJ \\n(aJ-1
 
1055
.       vR
 
1056
.\}
 
1057
..
 
1058
.\"------------------------------------------------------------------------
 
1059
.\" NS Ao macro - Angle open
 
1060
.de Ao
 
1061
.if \\n(aC==0 .ds mN Ao
 
1062
.ds qL \&<
 
1063
.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1064
..
 
1065
.\" NS Ac macro - Angle close
 
1066
.de Ac
 
1067
.if \\n(aC==0 .ds mN Ac
 
1068
.ds qR \&>
 
1069
.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1070
..
 
1071
.\" NS Bo macro - Bracket open
 
1072
.de Bo
 
1073
.if \\n(aC==0 .ds mN Bo
 
1074
.ds qL \&[
 
1075
.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1076
..
 
1077
.\" NS Bc macro - Bracket close
 
1078
.de Bc
 
1079
.if \\n(aC==0 .ds mN Bc
 
1080
.ds qR \&]
 
1081
.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1082
..
 
1083
.\" NS Do macro - Double Quote open
 
1084
.de Do
 
1085
.if \\n(aC==0 .ds mN Do
 
1086
.ds qL \&\\*(Lq
 
1087
.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1088
..
 
1089
.\" NS Dc macro - Double Quote close
 
1090
.de Dc
 
1091
.if \\n(aC==0 .ds mN Dc
 
1092
.ds qR \&\\*(Rq
 
1093
.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1094
..
 
1095
.\" NS Eo macro - Enclose open
 
1096
.de Eo
 
1097
.if \\n(aC==0 .ds mN Eo
 
1098
.ds qL \\$1
 
1099
.eO \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1100
..
 
1101
.\" NS Ec macro - Enclose close
 
1102
.de Ec
 
1103
.if \\n(aC==0 .ds mN Ec
 
1104
.ds qR \\$1
 
1105
.eC \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1106
..
 
1107
.\" NS Oo macro - Option open
 
1108
.de Oo
 
1109
.if \\n(aC==0 .ds mN Oo
 
1110
.ds qL \&[
 
1111
.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1112
..
 
1113
.\" NS Oc macro - Option close
 
1114
.de Oc
 
1115
.if \\n(aC==0 .ds mN Oc
 
1116
.ds qR \&]
 
1117
.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1118
..
 
1119
.\" NS Po macro - Parenthesis open
 
1120
.de Po
 
1121
.if \\n(aC==0 .ds mN Po
 
1122
.ds qL \&(
 
1123
.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1124
..
 
1125
.\" NS Pc macro - Parenthesis close
 
1126
.de Pc
 
1127
.if \\n(aC==0 .ds mN Pc
 
1128
.ds qR \&)
 
1129
.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1130
..
 
1131
.\" NS Qo macro - Straight Double Quote open
 
1132
.de Qo
 
1133
.if \\n(aC==0 .ds mN Qo
 
1134
.ds qL \&\\*q
 
1135
.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1136
..
 
1137
.\" NS Qc macro - Straight Double Quote close
 
1138
.de Qc
 
1139
.if \\n(aC==0 .ds mN Qc
 
1140
.ds qR \&\\*q
 
1141
.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1142
..
 
1143
.\" NS So macro - Single Quote open
 
1144
.de So
 
1145
.if \\n(aC==0 .ds mN So
 
1146
.ds qL \&\\*(sL
 
1147
.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1148
..
 
1149
.\" NS Sc macro - Single Quote close
 
1150
.de Sc
 
1151
.if \\n(aC==0 .ds mN Sc
 
1152
.ds qR \&\\*(sR
 
1153
.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1154
..
 
1155
.\" NS Xo macro - Extend open (continue)
 
1156
.de Xo
 
1157
.if \\n(aC==0 .ds mN Xo
 
1158
.\" .nr mN 1
 
1159
.ds qL
 
1160
.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1161
..
 
1162
.\" NS Xe macro - Extend close (end)
 
1163
.de Xc
 
1164
.\" .nr mN 0
 
1165
.if \\n(aC==0 .ds mN Xc
 
1166
.ds qR
 
1167
.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1168
..
 
1169
.\" NS eO macro - enclose string open
 
1170
.\" NS oM register (extension possible)
 
1171
.de eO
 
1172
.nr oM \\n(oM+1
 
1173
.\" .tm eO last arg==A[\\n(aC]==\\*(A\\n(aC; aP==\\n(aP; oM==\\n(oM; dZ==\\n(dZ;
 
1174
.ie \\n(aC==0 \{\
 
1175
.       ie \\n(.$>0 \{\
 
1176
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1177
.               as b1 \\*(qL
 
1178
.       \}
 
1179
.       el \{\
 
1180
.               as b1 \\*(qL
 
1181
.               if (\\n(dZ==0)&(\\n(sM==1) \{\
 
1182
.                       nr dZ \\n(dZ+1
 
1183
.                       ds b2 \\*(b1
 
1184
.                       ds b1
 
1185
.                       nr lK \\n(.c
 
1186
.                       ev 2
 
1187
.                       fi
 
1188
.                       di eB
 
1189
.               \}
 
1190
.       \}
 
1191
.\}
 
1192
.el \{\
 
1193
.       as b1 \\*(qL
 
1194
.\}
 
1195
.ie \\n(aC>0 \{\
 
1196
.       if \\n(aC>\\n(aP \{\
 
1197
.               nr aP \\n(aP+1
 
1198
.               ie \\n(C\\n(aP==1 .\\*(A\\n(aP
 
1199
.               el  \{\
 
1200
.                       nr aP \\n(aP-1
 
1201
.                       No
 
1202
.               \}
 
1203
.       \}
 
1204
.       if \\n(aC==\\n(aP \{\
 
1205
.               if \\n(tP==1 \{\
 
1206
.\" .tm SETTING Xt!!!
 
1207
.                       nr Xt 1
 
1208
.               \}
 
1209
.\".\" .                ds S0
 
1210
.\"CHANGED              ds S0 \\*(iV
 
1211
.               aY
 
1212
.       \}
 
1213
.\}
 
1214
.el \{\
 
1215
.       if \\n(oM>1 .as b1 \\*(sV
 
1216
.\}
 
1217
..
 
1218
.\"
 
1219
.\" NS eC macro - enclose string close
 
1220
.\" NS aa local register
 
1221
.de eC
 
1222
.nr oM \\n(oM-1
 
1223
.\" tm eC last arg==A[\\n(aC]==\\*(A\\n(aC; aP==\\n(aP; oM==\\n(oM; dZ==\\n(dZ;
 
1224
.as b1 \\*(qR
 
1225
.if \\n(aC==0 \{\
 
1226
.       ie \\n(.$>0 \{\
 
1227
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1228
.       \}
 
1229
.       el \{\
 
1230
.               ie "\\*(xB"" \{\
 
1231
.                       pB
 
1232
.               \}
 
1233
.               el \{\
 
1234
.                       pB
 
1235
.\\*(L\\n(lC
 
1236
.                       nr Xt 0
 
1237
.                       ds xB
 
1238
.               \}
 
1239
.       \}
 
1240
.\}
 
1241
.if \\n(aC>0 \{\
 
1242
.       ie \\n(aC==\\n(aP \{\
 
1243
.               ie \\n(oM==0 \{\
 
1244
.                       aZ
 
1245
.               \}
 
1246
.               el .aY
 
1247
.       \}
 
1248
.       el \{\
 
1249
.               nr aa \\n(aP+1
 
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
 
1252
.               rr aa
 
1253
.               if \\n(tP>0 \{\
 
1254
.\" tm UNSETTING Xt==\\n(Xt!!!!
 
1255
.                       if \\n(Xt>0 .nr Xt \\n(Xt-1
 
1256
.\" tm NOW Xt==\\n(Xt!!!!
 
1257
.               \}
 
1258
.               No
 
1259
.       \}
 
1260
.\}
 
1261
..
 
1262
.\"------------------------------------------------------------------------
 
1263
.\" NS Pf macro - Prefix (calls .pF)
 
1264
.de Pf
 
1265
.if \\n(aC==0 .ds mN Pf
 
1266
.ds qL \&\\$1
 
1267
.pF \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1268
..
 
1269
.\" NS pF macro - Prefix (for prefixing open quotes, brackets etc)
 
1270
.de pF
 
1271
.ie \\n(aC==0 \{\
 
1272
.       as b1 \&\\*(qL
 
1273
.       ie \\n(.$<2 \{\
 
1274
.               tm Warning: Missing arguments - prefix .Pf)
 
1275
.               pB
 
1276
.       \}
 
1277
.       el .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1278
.\}
 
1279
.el \{\
 
1280
.       ie (\\n(aC-\\n(aP)>1 \{\
 
1281
.               nr aP \\n(aP+1
 
1282
.               as b1 \&\\*(A\\n(aP
 
1283
.       \}
 
1284
.       el .tm Warning: .Pf: trailing prefix (#\\n(.c)
 
1285
.\}
 
1286
.if \\n(aC>0 \{\
 
1287
.       ie (\\n(aC-\\n(aP)==0 .aZ
 
1288
.       el \{\
 
1289
.               nr aP \\n(aP+1
 
1290
.               c\\n(C\\n(aP
 
1291
.       \}
 
1292
.\}
 
1293
..
 
1294
.\" NS Ns macro - remove space (space remove done by .aV or .fV)
 
1295
.de Ns
 
1296
.if \\n(aC==0 \{\
 
1297
.       ds mN Ns
 
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)
 
1300
.\}
 
1301
.No
 
1302
..
 
1303
.de Ap
 
1304
.if \\n(aC==0 \{\
 
1305
.       ds mN Ap
 
1306
.       tm Usage: Ap "cannot be first request on a line (no .Ap)" (#\\n(.c)
 
1307
.\}
 
1308
.as b1 \&'
 
1309
.No
 
1310
..
 
1311
.\" NS Hv macro - Hard (unpaddable) Space vector
 
1312
.\" NS iV string inter-vector space
 
1313
.\" NS sV string inter-argument space
 
1314
.de Hv
 
1315
.ds iV \\*(sV
 
1316
.ds sV \\*(hV
 
1317
..
 
1318
.\" NS Sv macro - Soft Space vector (troff limitation)
 
1319
.de Sv
 
1320
.ds sV \\*(iV
 
1321
..
 
1322
.\" NS Tv macro - Tab Space vector
 
1323
.de Tv
 
1324
.ds sV \\*(tV
 
1325
..
 
1326
.\" NS Sm macro - Space mode
 
1327
.\" NS sM register - default is one (space mode on)
 
1328
.nr sM 1
 
1329
.de Sm
 
1330
.if \\n(aC==0 \{\
 
1331
.       ie \\n(.$==0 .tm "Usage: .Sm [off | on]" (#\\n(.c)
 
1332
.       el \{\
 
1333
.               ds mN Sm
 
1334
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1335
.       \}
 
1336
.\}
 
1337
.if \\n(aC>0 \{\
 
1338
.       nr aP \\n(aP+1
 
1339
.       if "\\*(A\\n(aP"on" \{\
 
1340
.               ds sV \\*(iV
 
1341
.               nr sM 1
 
1342
.       \}
 
1343
.       if "\\*(A\\n(aP"off" \{\
 
1344
.               ds sV
 
1345
.               rm S0 S1 S2 S3 S4 S5 S6 S7 S8 S9
 
1346
.               nr sM 0
 
1347
.       \}
 
1348
.       ie \\n(aC>\\n(aP \{\
 
1349
.               No
 
1350
.       \}
 
1351
.       el .aY
 
1352
.\}
 
1353
..
 
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
 
1359
.if \n(.g \{\
 
1360
.de aT
 
1361
.nr aT 0
 
1362
.ie \\n(sW>2:(\A'\\$1'==0) \{\
 
1363
.       nr aT 2
 
1364
.\}
 
1365
.el \{\
 
1366
.       if \\n(sW==1 \{\
 
1367
.               ie \\n(z\\$1>2 \{\
 
1368
.                       nr aT \\n(z\\$1
 
1369
.               \}
 
1370
.               el .nr aT 2
 
1371
.       \}
 
1372
.       if \\n(sW==2 \{\
 
1373
.               ie \\n(\\$1 \{\
 
1374
.                       nr aT 1
 
1375
.               \}
 
1376
.               el .nr aT 2
 
1377
.       \}
 
1378
.\}
 
1379
..
 
1380
.de aU
 
1381
.nr aT 0
 
1382
.aW \\$1
 
1383
.ie \\n(sW>2:(\A'\\*(A\\$1'==0) .nr aT 2
 
1384
.el \{\
 
1385
.       if \\n(sW==1 \{\
 
1386
.               ie \\n(z\\*(A\\$1>2 \{\
 
1387
.                       nr aT \\n(z\\*(A\\$1
 
1388
.               \}
 
1389
.               el .nr aT 2
 
1390
.       \}
 
1391
.       if \\n(sW==2 \{\
 
1392
.               ie (\\n(\\*(A\\$1) \{\
 
1393
.                       nr aT 1
 
1394
.               \}
 
1395
.               el .nr aT 2
 
1396
.       \}
 
1397
.\}
 
1398
..
 
1399
.\}
 
1400
.if !\n(.g \{\
 
1401
.de aT
 
1402
.nr aT 0
 
1403
.ie \\n(sW>2 \{\
 
1404
.       nr aT 2
 
1405
.\}
 
1406
.el \{\
 
1407
.       if \\n(sW==1 \{\
 
1408
.               ie \\n(z\\$1>2 \{\
 
1409
.                       nr aT \\n(z\\$1
 
1410
.               \}
 
1411
.               el .nr aT 2
 
1412
.       \}
 
1413
.       if \\n(sW==2 \{\
 
1414
.               ie \\n(\\$1 \{\
 
1415
.                       nr aT 1
 
1416
.               \}
 
1417
.               el .nr aT 2
 
1418
.       \}
 
1419
.\}
 
1420
..
 
1421
.de aU
 
1422
.nr aT 0
 
1423
.aW \\$1
 
1424
.ie \\n(sW>2 .nr aT 2
 
1425
.el \{\
 
1426
.       if \\n(sW==1 \{\
 
1427
.               ie \\n(z\\*(A\\$1>2 \{\
 
1428
.                       nr aT \\n(z\\*(A\\$1
 
1429
.               \}
 
1430
.               el .nr aT 2
 
1431
.       \}
 
1432
.       if \\n(sW==2 \{\
 
1433
.               ie (\\n(\\*(A\\$1) \{\
 
1434
.                       nr aT 1
 
1435
.               \}
 
1436
.               el .nr aT 2
 
1437
.       \}
 
1438
.\}
 
1439
..
 
1440
.\}
 
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
 
1451
.de s0
 
1452
.tm MDOC-ERROR: bogus type 0 (can't set space '\\*(A\\n(aC') (#\\n(.c)
 
1453
..
 
1454
.de s1
 
1455
.if \\n(\\*(A\\n(aC==3 \{\
 
1456
.       nr xX \\n(aC-1
 
1457
.       rm S\\n(xX
 
1458
.       ds S\\n(aC \\*(sV
 
1459
.\}
 
1460
.if \\n(\\*(A\\n(aC==2 \{\
 
1461
.       nr xX \\n(aC-1
 
1462
.\" this kludge can probably go away, but need to double check first
 
1463
.       ie "\\*(A\\n(aC"Nb" .ds S\\n(xX \\*(hV
 
1464
.       el .rm S\\n(xX
 
1465
.\}
 
1466
..
 
1467
.de s2
 
1468
.ds S\\n(aC \\*(sV
 
1469
..
 
1470
.de s3
 
1471
.if \\n(aC>1 \{\
 
1472
.       nr xX \\n(aC-1
 
1473
.       rm S\\n(xX
 
1474
.\}
 
1475
.ds S\\n(aC \\*(sV
 
1476
..
 
1477
.de s4
 
1478
.nr aa 0
 
1479
..
 
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
 
1486
.de c0
 
1487
.tm MDOC-ERROR: bogus class 0 (can't determine '\\*(A\\n(aC') (#\\n(.c)
 
1488
..
 
1489
.de c1
 
1490
.\\*(A\\n(aP
 
1491
..
 
1492
.de c2
 
1493
.nr aP \\n(aP-1
 
1494
.No
 
1495
..
 
1496
.de c3
 
1497
.nr aP \\n(aP-1
 
1498
.No
 
1499
..
 
1500
.de c4
 
1501
.nr aP \\n(aP-1
 
1502
.No
 
1503
..
 
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
 
1508
.de y1
 
1509
.nr aa 1
 
1510
..
 
1511
.de y2
 
1512
.nr aa 1
 
1513
..
 
1514
.de y3
 
1515
.as b1 \\*(A\\n(aP
 
1516
.nr aP \\n(aP+1
 
1517
.n\\C\\n(aP
 
1518
..
 
1519
.de y4
 
1520
.as b1 \\*(A\\n(aP
 
1521
.nr aP \\n(aP+1
 
1522
.n\\C\\n(aP
 
1523
..
 
1524
.\"--------------------------------------------------------------------------
 
1525
.\" Ns Bf macro - Begin Font Mode (will be begin-mode/end-mode in groff & TeX)
 
1526
.\" Ns Ef macro - End Font Mode
 
1527
.de Bf
 
1528
.ds mN Bf
 
1529
.ie \\n(.$>0 \{\
 
1530
.       nr bF \\n(.f
 
1531
.       nr bZ \\n(.s
 
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
 
1538
.\}
 
1539
.el .tm Usage .Bf [Em | emphasis | Li | literal | Sy | symbolic] (#\\n(.c)
 
1540
..
 
1541
.de Ef
 
1542
.ds mN Ef
 
1543
.ie \\n(.$>0 .tm Usage .Ef (does not take arguments) (#\\n(.c)
 
1544
.el \&\f\\n(bF\s\\n(bZ
 
1545
..
 
1546
.\" Ns Bk macro - Begin Keep
 
1547
.\" Ns Ek macro - End Keep
 
1548
.\" Ns kS string - keep type
 
1549
.de Bk
 
1550
.ds mN Bk
 
1551
.ie \\n(.$==0 \{\
 
1552
.tm Usage: .Bk [-lines | -words] (#\\n(.c)
 
1553
.\}
 
1554
.el \{\
 
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
 
1558
.       ds kS \\$1
 
1559
.\}
 
1560
..
 
1561
.de Ek
 
1562
.ds mN Ek
 
1563
.ie \\n(.$>0 .tm Usage .Ek (does not take arguments) (#\\n(.c)
 
1564
.el \{\
 
1565
.       if "\\*(kS"-lines" .tm .Bd -lines: Not implemented yet. (#\\n(.c)
 
1566
.       if "\\*(kS"-words" .Sv
 
1567
.       rm kS
 
1568
.\}
 
1569
..
 
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
 
1574
.de Bd
 
1575
.ds mN Bd
 
1576
.ie \\n(.$==0 \{\
 
1577
.tm Usage: .Bd [-literal | -filled | -ragged | -unfilled] [-offset [string]] [-compact] (#\\n(.c)
 
1578
.\}
 
1579
.el \{\
 
1580
.       ds aa
 
1581
.       nr bV 0
 
1582
.       nr iD 0
 
1583
.       nr dP \\n(dP+1
 
1584
.       if "\\$1"-literal" \{\
 
1585
.               nr iD \\n(iD+1
 
1586
.               ds d\\n(dP dL
 
1587
.               nr cF \\n(.f
 
1588
.               nr cZ \\n(.s
 
1589
.               ie t \{\&\\*(lI
 
1590
'                       ta 9n 18n 27n 36n 45n 54n 63n 72n
 
1591
.               \}
 
1592
.               el \{\
 
1593
'                       ta 8n 16n 24n 32n 40n 48n 56n 64n 72n
 
1594
.               \}
 
1595
.               nf
 
1596
.       \}
 
1597
.       if "\\$1"-filled" \{\
 
1598
.               nr iD \\n(iD+1
 
1599
.               ds d\\n(dP dF
 
1600
.               br
 
1601
.       \}
 
1602
.       if "\\$1"-ragged" \{\
 
1603
.               nr iD \\n(iD+1
 
1604
.               ds d\\n(dP dR
 
1605
.               na
 
1606
.       \}
 
1607
.       if "\\$1"-unfilled" \{\
 
1608
.               nr iD \\n(iD+1
 
1609
.               ds d\\n(dP dU
 
1610
.               nf
 
1611
.       \}
 
1612
.\" .tm Here is argc: \\n(.$ and here is iD \\n(iD
 
1613
.       if ((\\n(iD>=1)&(\\n(.$>\\n(iD)) \{\
 
1614
.               bV \\$2 \\$3 \\$4
 
1615
.       \}
 
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
 
1620
.                       el 'sp \\n(dVu
 
1621
.               \}
 
1622
.       \}
 
1623
.       if \\n(cR==0 .ne 2v
 
1624
.       nr bV 0
 
1625
.       nr iD 0
 
1626
.\}
 
1627
..
 
1628
.\" NS bV macro - resolve remaining .Bd arguments
 
1629
.de bV
 
1630
.\" .tm in bV with args: \\$1 \\$2 \\$3
 
1631
.nr iD 1
 
1632
.ds bY
 
1633
.if "\\$1"-offset" \{\
 
1634
.       ds bY \\$2
 
1635
.       if "\\*(bY"left" \{\
 
1636
.               nr iD \\n(iD+1
 
1637
.               nr O\\n(dP 0
 
1638
.       \}
 
1639
.       if "\\*(bY"right" \{\
 
1640
.               nr iD \\n(iD+1
 
1641
.               nr O\\n(dP (\\n(.l/3)u
 
1642
.       \}
 
1643
.       if "\\*(bY"center" \{\
 
1644
.               nr iD \\n(iD+1
 
1645
.               nr O\\n(dP (\\n(.l-\\n(.i)/4u
 
1646
.       \}
 
1647
.       if "\\*(bY"indent" \{\
 
1648
.               nr iD \\n(iD+1
 
1649
.               nr O\\n(dP \\n(dIu
 
1650
.       \}
 
1651
.       if "\\*(bY"indent-two" \{\
 
1652
.               nr iD \\n(iD+1
 
1653
.               nr O\\n(dP \\n(dIu+\\n(dIu
 
1654
.       \}
 
1655
.       if \\n(iD==1 \{\
 
1656
.               nr iD \\n(iD+1
 
1657
.               sW "\\*(bY"
 
1658
.               ie \\n(sW>2 \{\
 
1659
.                       ie ((\\*(bY>9n)&(\\*(bY<100n)) \{\
 
1660
.                               nr O\\n(dP \\*(bY
 
1661
.                       \}
 
1662
.                       el .nr O\\n(dP (\\n(sW)*\\n(fWu
 
1663
.               \}
 
1664
.               el \{\
 
1665
.                       if \\n(sW==2 .aT \\*(bY
 
1666
.                       ie \\n(aT==1 \{\
 
1667
.                               nr O\\n(dP \\n(\\*(bY
 
1668
.                       \}
 
1669
.                       el .nr O\\n(dP \\*(bY
 
1670
.               \}
 
1671
.       \}
 
1672
.\}
 
1673
.if "\\$1"-compact" \{\
 
1674
.       nr bV 1
 
1675
.\}
 
1676
.if \\n(iD<\\n(.$ \{\
 
1677
.       ie "\\*(bY"" \{\
 
1678
.               bV \\$2 \\$3
 
1679
.       \}
 
1680
.       el \{\
 
1681
.               bV \\$3
 
1682
.       \}
 
1683
.\}
 
1684
..
 
1685
.\" NS Ed macro - end display
 
1686
.de Ed
 
1687
.ds mN Ed
 
1688
.br
 
1689
.if \\n(dP==0 .tm mdoc: Extraneous .Ed
 
1690
.if "\\*(d\\n(dP"dL" \{\
 
1691
.       ft \\n(cF
 
1692
.       fz \\n(cZ
 
1693
.\}
 
1694
.in \\n(.iu-\\n(O\\n(dPu
 
1695
.rr O\\n(dP
 
1696
.rm d\\n(dP
 
1697
.nr dP \\n(dP-1
 
1698
.fi
 
1699
.if t .ad
 
1700
..
 
1701
.\"--------------------------------------------------------------------------
 
1702
.\" NS Bl macro - begin list (.Bl list-type)
 
1703
.\" NS L[0-9] registers - stack of list types
 
1704
.de Bl
 
1705
.ie \\n(.$==0 \{\
 
1706
.tm Usage: .Bl [[-hang | -tag] [-width]] [ -item | -enum | -bullet | -diag] (#\\n(.c)
 
1707
.\}
 
1708
.el \{\
 
1709
.       ds mN Bl
 
1710
.       nr aP 0
 
1711
.       nr lC \\n(lC+1
 
1712
.       ds A1 \\$2
 
1713
.       ds A2 \\$3
 
1714
.       ds A3 \\$4
 
1715
.       ds A4 \\$5
 
1716
.       ds A5 \\$6
 
1717
.       ds A6 \\$7
 
1718
.       ds A7 \\$8
 
1719
.       ds A8 \\$9
 
1720
.       nr fV \\n(.$-1
 
1721
.       if "\\$1"-hang" \{\
 
1722
.               nr aP \\n(aP+1
 
1723
.               ds L\\n(lC hL
 
1724
.               nr w\\n(lC 6n
 
1725
.               nr tC  1
 
1726
.       \}
 
1727
.       if "\\$1"-tag" \{\
 
1728
.               nr aP \\n(aP+1
 
1729
.               ds L\\n(lC tL
 
1730
.               nr tC  1
 
1731
.       \}
 
1732
.       if "\\$1"-item" \{\
 
1733
.               nr aP \\n(aP+1
 
1734
.               ds L\\n(lC iT
 
1735
.               nr tC  1
 
1736
.       \}
 
1737
.       if "\\$1"-enum" \{\
 
1738
.               nr aP \\n(aP+1
 
1739
.               ds L\\n(lC nU
 
1740
.               nr w\\n(lC 3n
 
1741
.               nr tC  1
 
1742
.       \}
 
1743
.       if "\\$1"-bullet" \{\
 
1744
.               nr aP \\n(aP+1
 
1745
.               ds L\\n(lC bU
 
1746
.               nr w\\n(lC 2n
 
1747
.               nr tC  1
 
1748
.       \}
 
1749
.       if "\\$1"-dash" \{\
 
1750
.               nr aP \\n(aP+1
 
1751
.               ds L\\n(lC hU
 
1752
.               nr w\\n(lC 2n
 
1753
.               nr tC  1
 
1754
.       \}
 
1755
.       if "\\$1"-hyphen" \{\
 
1756
.               nr aP \\n(aP+1
 
1757
.               ds L\\n(lC hU
 
1758
.               nr w\\n(lC 2n
 
1759
.               nr tC  1
 
1760
.       \}
 
1761
.       if "\\$1"-inset" \{\
 
1762
.               nr aP \\n(aP+1
 
1763
.               ds L\\n(lC lL
 
1764
.               nr tC  1
 
1765
.       \}
 
1766
.       if "\\$1"-diag" \{\
 
1767
.               nr aP \\n(aP+1
 
1768
.               ds L\\n(lC mL
 
1769
.               nr mL 1
 
1770
.       \}
 
1771
.       if "\\$1"-ohang" \{\
 
1772
.               nr aP \\n(aP+1
 
1773
.               ds L\\n(lC oL
 
1774
.               nr tC 1
 
1775
.       \}
 
1776
.       if "\\$1"-column" \{\
 
1777
.               nr aP \\n(aP+1
 
1778
.               ds L\\n(lC cL
 
1779
.       \}
 
1780
.       ie \\n(aP==0 \{\
 
1781
.       tm \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
1782
.       tm Usage: .Bl [[-inset|-tag] -width] [-item|-enum|-bullet|-diag] (#\\n(.c)
 
1783
.       \}
 
1784
.       el \{\
 
1785
.               tY
 
1786
.               if (\\n(aP==1)&(\\n(aP<\\n(.$) \{\
 
1787
.                       nr aP 0
 
1788
.                       lV
 
1789
.                       if "\\*(L\\n(lC"cL" \{\
 
1790
.                               W\\n(wV
 
1791
.                               nr w\\n(lC 0
 
1792
'                               in -\\n(eWu
 
1793
.                               ie \\n(v\\n(lC==1 \{\
 
1794
.                                      nr aa 0
 
1795
.                               \}
 
1796
.                               el \{\
 
1797
.                                       sp \\n(dVu
 
1798
.                               \}
 
1799
.                               nf
 
1800
.                               nr wV 0
 
1801
.                       \}
 
1802
.               \}
 
1803
.       \}
 
1804
.       nr aP 0
 
1805
.\" .   ds b1
 
1806
.       aY
 
1807
.\" .tm Here is L[\\n(lC]==\\*(L\\n(lC
 
1808
.\}
 
1809
..
 
1810
.if \n(.g \{\
 
1811
.       nr i 10
 
1812
.       while \ni<100 \{\
 
1813
.            nr num!\nin 1
 
1814
.            nr i +1
 
1815
.       \}
 
1816
.\}
 
1817
.\" NS lV macro - resolve remaining .Bl arguments
 
1818
.de lV
 
1819
.nr aP \\n(aP+1
 
1820
.if \\n(fV>=\\n(aP \{\
 
1821
.       nr iD 0
 
1822
.       if "\\*(A\\n(aP"-compact" \{\
 
1823
.               nr iD 1
 
1824
.               nr v\\n(lC 1
 
1825
.       \}
 
1826
.       if "\\*(A\\n(aP"-width" \{\
 
1827
.               nr iD 1
 
1828
.               nr aP \\n(aP+1
 
1829
.               nr tW 1
 
1830
.               ds t\\n(lC TagwidtH
 
1831
.               ds tS \\*(A\\n(aP
 
1832
.               aW \\n(aP
 
1833
.               ie \\n(sW>2 \{\
 
1834
.                       nr w\\n(lC (\\n(sW)*\\n(fWu
 
1835
.                       if \\n(sW==3 \{\
 
1836
.                               ie \\n(.g \{\
 
1837
.                                       if \A'\\*(tS' .if r num!\\*(tS \{\
 
1838
.                                               nr w\\n(lC \\*(tS
 
1839
.                                       \}
 
1840
.                               \}
 
1841
.                               el \{\
 
1842
.                                       if (\\*(tS>9n)&(\\*(tS<99n) \{\
 
1843
.                                               nr w\\n(lC \\*(tSu
 
1844
.                                       \}
 
1845
.                               \}
 
1846
.                       \}
 
1847
.               \}
 
1848
.               el \{\
 
1849
.                       aT \\*(tS
 
1850
.                       ie \\n(aT==1 \{\
 
1851
.                               nr w\\n(lC \\n(\\*(tS
 
1852
.                       \}
 
1853
.                       el \{\
 
1854
.                               nr w\\n(lC \\*(tSu
 
1855
.                       \}
 
1856
.               \}
 
1857
.       \}
 
1858
.       if "\\*(A\\n(aP"-offset" \{\
 
1859
.               nr iD 1
 
1860
.               nr aP \\n(aP+1
 
1861
.               ie "\\*(A\\n(aP"indent" \{\
 
1862
.                       nr o\\n(lC \\n(Dsu
 
1863
.               \}
 
1864
.               el \{\
 
1865
.                       ds tS \\*(A\\n(aP
 
1866
.                       aW \\n(aP
 
1867
.                       ie \\n(sW>2 \{\
 
1868
.                               nr o\\n(lC (\\n(sW)*\\n(fWu
 
1869
.                               ie \\n(.g \{\
 
1870
.                                       if \A'\\*(tS' .if r num!\\*(tS \{\
 
1871
.                                               nr o\\n(lC \\*(tS
 
1872
.                                       \}
 
1873
.                               \}
 
1874
.                               el \{\
 
1875
.                                       if (\\*(tS>9n)&(\\*(tS<100n) \{\
 
1876
.                                               nr o\\n(lC \\*(tS
 
1877
.                                       \}
 
1878
.                               \}
 
1879
.                       \}
 
1880
.                       el \{\
 
1881
.                               ie \\n(C\\n(aP==1 .nr o\\n(lC \\n(\\*(tS
 
1882
.                               el .nr o\\n(lC \\*(tS
 
1883
.                       \}
 
1884
.               \}
 
1885
.       \}
 
1886
.       if \\n(iD==0 \{\
 
1887
.               if "\\*(L\\n(lC"cL" \{\
 
1888
.                       nr wV \\n(wV+1
 
1889
.                       ds A\\n(wV \\*(A\\n(aP
 
1890
.               \}
 
1891
.       \}
 
1892
.       if \\n(fV>\\n(aP .lV
 
1893
.\}
 
1894
..
 
1895
.\" NS El macro - end list
 
1896
.\" NS iD local register
 
1897
.de El
 
1898
.ie \\n(.$>0 \{\
 
1899
.       tm Usage: .El (#\\n(.c)
 
1900
.\}
 
1901
.el \{\
 
1902
.       ds mN El
 
1903
.       nr iD 0
 
1904
.       if "\\*(L\\n(lC"cL" \{\
 
1905
.               nr iD 1
 
1906
.               cC
 
1907
.       \}
 
1908
.       if "\\*(L\\n(lC"nU" \{\
 
1909
.               nr nU 0
 
1910
.       \}
 
1911
.       if \\n(mL>0 \{\
 
1912
.               nr iD 1
 
1913
.               nr mL 0
 
1914
.               tZ
 
1915
.               nr lC \\n(lC-1
 
1916
.               tY
 
1917
.       \}
 
1918
.       if "\\*(L\\n(lC"iT" \{\
 
1919
'               in \\n(.iu-\\n(o\\n(lCu
 
1920
.               tZ
 
1921
.               nr lC \\n(lC-1
 
1922
.               tY
 
1923
.               nr iD 1
 
1924
.       \}
 
1925
.       if "\\*(L\\n(lC"oL" \{\
 
1926
'               in \\n(.iu-\\n(o\\n(lCu
 
1927
.               tZ
 
1928
.               nr lC \\n(lC-1
 
1929
.               tY
 
1930
.               nr iD 1
 
1931
.       \}
 
1932
.       if "\\*(L\\n(lC"lL" \{\
 
1933
'               in \\n(.iu-\\n(o\\n(lCu
 
1934
.               tZ
 
1935
.               nr lC \\n(lC-1
 
1936
.               tY
 
1937
.               nr iD 1
 
1938
.       \}
 
1939
.       if \\n(iD==0 \{\
 
1940
.               lE
 
1941
.       \}
 
1942
.       br
 
1943
.       nr iD 0
 
1944
.\}
 
1945
..
 
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)
 
1949
.de It
 
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
 
1953
.\}
 
1954
.\" .tm Here is L[\\n(lC]==\\*(L\\n(lC
 
1955
.ne 3v
 
1956
.ie \\n(.$>0 \{\
 
1957
.       ds mN It
 
1958
.       ds b1
 
1959
.       nr iD 0
 
1960
.       ds A1 \\$1
 
1961
.       ds A2 \\$2
 
1962
.       ds A3 \\$3
 
1963
.       ds A4 \\$4
 
1964
.       ds A5 \\$5
 
1965
.       ds A6 \\$6
 
1966
.       ds A7 \\$7
 
1967
.       ds A8 \\$8
 
1968
.       ds A9 \\$9
 
1969
.       nr fV \\n(.$
 
1970
.       if "\\*(L\\n(lC"mL" \{\
 
1971
.               nr iD 1
 
1972
.               nr aP 0
 
1973
.               aX
 
1974
.               \\*(L\\n(lC
 
1975
.       \}
 
1976
.       if "\\*(L\\n(lC"cL" \{\
 
1977
.               ds b1
 
1978
.               nr aP 0
 
1979
.               nr iD 1
 
1980
.               \\*(L\\n(lC
 
1981
.       \}
 
1982
.       if "\\*(L\\n(lC"iT" \{\
 
1983
.               nr aP 0
 
1984
.               nr iD 1
 
1985
.               \\*(L\\n(lC
 
1986
.       \}
 
1987
.       if \\n(iD==0 \{\
 
1988
.               fV
 
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
 
1992
.               nr oM \\n(oM+1
 
1993
.               nr tP 1
 
1994
.               nr aP \\n(aP+1
 
1995
.               nr tX \\n(C\\n(aP
 
1996
.               ds tX \\*(A\\n(aP
 
1997
.               if \\n(nF==1 \{\
 
1998
.                       ds aA \\*(pA
 
1999
.                       if n .ds pA \\*(nO
 
2000
.               \}
 
2001
.               ie \\n(C\\n(aP==1 \{\
 
2002
.                       \\*(A\\n(aP
 
2003
.               \}
 
2004
.               el \{\
 
2005
.                       nr aP \\n(aP-1
 
2006
.                       No
 
2007
.               \}
 
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
 
2011
.               el .\\*(L\\n(lC
 
2012
.       \}
 
2013
.       nr iD 0
 
2014
.\}
 
2015
.el .\\*(L\\n(lC
 
2016
..
 
2017
.\" NS lL macro - .It item of list-type inset
 
2018
.de lL
 
2019
.lY
 
2020
.br
 
2021
\&\\*(b1
 
2022
.nr oM \\n(oM-1
 
2023
.nr tP 0
 
2024
.ds b1
 
2025
.aY
 
2026
'fi
 
2027
..
 
2028
.\" NS hL macro - .It item of list-type hanging label (as opposed to tagged)
 
2029
.de hL
 
2030
.lX
 
2031
.nr bb \\n(w\\n(lCu+\\n(lSu
 
2032
.ti -\\n(bbu
 
2033
.ie \w\\*(b1u>=(\\n(w\\n(lCu) \&\\*(b1
 
2034
.el \&\\*(b1\h'|\\n(bbu'\c
 
2035
.nr oM \\n(oM-1
 
2036
.ds b1
 
2037
.nr tP 0
 
2038
.aY
 
2039
'fi
 
2040
..
 
2041
.\" NS oL macro - .It item of list-type overhanging label
 
2042
.de oL
 
2043
.lY
 
2044
\&\\*(b1
 
2045
.br
 
2046
.nr oM \\n(oM-1
 
2047
.ds b1
 
2048
.nr tP 0
 
2049
.aY
 
2050
'fi
 
2051
..
 
2052
.\" NS iT macro - .It item of list-type [empty label]
 
2053
.de iT
 
2054
.lY
 
2055
.br
 
2056
.\" .ds b1
 
2057
.aY
 
2058
'fi
 
2059
..
 
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
 
2064
.de nU
 
2065
.nr oM \\n(oM+1
 
2066
.nr nU \\n(nU+1
 
2067
.ds b1 \&\\n(nU.
 
2068
.uL
 
2069
..
 
2070
.de bU
 
2071
.nr oM \\n(oM+1
 
2072
.nr bU \\n(bU+1
 
2073
.ds b1 \&\\*(sY\&\(bu\fP
 
2074
.uL
 
2075
..
 
2076
.de hU
 
2077
.nr oM \\n(oM+1
 
2078
.nr bU \\n(bU+1
 
2079
.ds b1 \&\\*(sY\&\-\fP
 
2080
.uL
 
2081
..
 
2082
.\" NS uL macro - .It item of list-type enum/bullet/hyphen
 
2083
.de uL
 
2084
.lX
 
2085
.nr bb \\n(w\\n(lCu+\\n(lSu
 
2086
.ti -\\n(bbu
 
2087
.ie \w\\*(b1u>=(\\n(w\\n(lCu) \&\\*(b1
 
2088
.el \&\\*(b1\h'|\\n(bbu'\c
 
2089
.nr oM \\n(oM-1
 
2090
.\" .nr dZ \\n(dZ+1
 
2091
.ds b1
 
2092
.nr tP 0
 
2093
.aY
 
2094
'fi
 
2095
..
 
2096
.\" NS mL macro - .It item of list-type diagnostic-message
 
2097
.de mL
 
2098
.nr cF \\n(.f
 
2099
.nr cZ \\n(.s
 
2100
.ie \\n(mL==1 \{\
 
2101
.       nr zB \\n(.c
 
2102
.       ie (\\n(zB-\\n(zA)>1 .Pp
 
2103
.       el .br
 
2104
.       nr zA \\n(zB
 
2105
.       nr zB 0
 
2106
.\}
 
2107
.el \{\
 
2108
.       nr zA \\n(.c
 
2109
.       br
 
2110
.\}
 
2111
\&\\*(sY\\*(b1\f\\n(cF\s\\n(cZ\\*(lS\c
 
2112
.aY
 
2113
.ds b1
 
2114
'fi
 
2115
..
 
2116
.\" NS tL macro - .It item of list-type "tag"
 
2117
.de tL
 
2118
.\" tm in tL here is b1==\\*(b1
 
2119
.if \\n(tW==0 .lW
 
2120
.lX
 
2121
.nr bb \\n(w\\n(lCu+\\n(lSu
 
2122
.ti -\\n(bbu
 
2123
.ie (\w\\*(b1u)>(\\n(w\\n(lCu) \{\&\\*(b1
 
2124
.       br
 
2125
.\}
 
2126
.el \&\\*(b1\h'|\\n(bbu'\c
 
2127
.if \\n(nF==1 \{\
 
2128
.       if n .ds pA \\*(aA
 
2129
.\}
 
2130
.nr oM \\n(oM-1
 
2131
.nr tP 0
 
2132
.\" .nr dZ \\n(dZ+1
 
2133
.ds b1
 
2134
.aY
 
2135
'fi
 
2136
..
 
2137
.\" NS lW macro - resolve unknown label/tag width (if .Bl [inset | tag] only)
 
2138
.de lW
 
2139
.if !"TagwidtH"\\*(t\\n(lC" \{\
 
2140
.       ie \\n(tX==1 \{\
 
2141
.               ds t\\n(lN \\*(tX
 
2142
.               nr w\\n(lN \\n(\\*(tX
 
2143
.       \}
 
2144
.       el \{\
 
2145
.               ds t\\n(lN No
 
2146
.               nr w\\n(lN \\n(No
 
2147
.       \}
 
2148
.       if !"\\*(t\\n(lC"\\*(t\\n(lN" .nr tC 1
 
2149
.\}
 
2150
..
 
2151
.\" NS lX macro - set up vertical spacing (if compact) and offset+indent (all)
 
2152
.de lX
 
2153
.ie \\n(tC \{\
 
2154
.       nr tC 0
 
2155
.       nr tW 0
 
2156
.       if \\n(v\\n(lC==0 .sp \\n(dVu
 
2157
.       in \\n(.iu+\\n(w\\n(lCu+\\n(o\\n(lCu+\\n(lSu
 
2158
.\}
 
2159
.el \{\
 
2160
.       ie \\n(v\\n(lC==1 \{\
 
2161
.              nr aa 0
 
2162
.       \}
 
2163
.       el \{\
 
2164
.               sp \\n(dVu
 
2165
.       \}
 
2166
.\}
 
2167
.if !\\n(cR .ne 2v
 
2168
..
 
2169
.\" NS lY macro - set up vertical spacing (if compact) and offset+indent (all)
 
2170
.de lY
 
2171
.ie \\n(tC \{\
 
2172
.       nr tC 0
 
2173
.       nr tW 0
 
2174
.       if \\n(v\\n(lC==0 .sp \\n(dVu
 
2175
.       in \\n(.iu+\\n(o\\n(lCu
 
2176
.\}
 
2177
.el \{\
 
2178
.       ie \\n(v\\n(lC==1 \{\
 
2179
.              nr aa 0
 
2180
.       \}
 
2181
.       el \{\
 
2182
.               sp \\n(dVu
 
2183
.       \}
 
2184
.\}
 
2185
.if !\\n(cR .ne 2v
 
2186
..
 
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)
 
2204
.nr lC 0
 
2205
.nr wV 0
 
2206
.nr w1 0
 
2207
.nr o1 0
 
2208
.nr v1 0
 
2209
.nr h1 0
 
2210
.ds t\n(lC
 
2211
.de lE
 
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
 
2215
.       rr o\\n(lC
 
2216
.\}
 
2217
.el 'in \\n(.iu-\\n(w\\n(lCu-\\n(lSu
 
2218
.if \\n(lC<=0 .tm Extraneous .El call (#\\n(.c)
 
2219
.tZ
 
2220
.nr lC \\n(lC-1
 
2221
.tY
 
2222
..
 
2223
.\" NS tY macro - set up next block for list
 
2224
.\" NS tZ macro - decrement stack
 
2225
.\" NS tY register (next possible lC value)
 
2226
.de tY
 
2227
.nr tY (\\n(lC+1)
 
2228
.nr w\\n(tY 0
 
2229
.nr h\\n(tY 0
 
2230
.nr o\\n(tY 0
 
2231
.ds t\\n(tY \\*(t\\n(lC
 
2232
.ds L\\n(tY
 
2233
.nr v\\n(tY 0
 
2234
..
 
2235
.de tZ
 
2236
.rm L\\n(tY
 
2237
.rr w\\n(tY
 
2238
.rr h\\n(tY
 
2239
.rr o\\n(tY
 
2240
.rm t\\n(tY
 
2241
.rr v\\n(tY
 
2242
.nr tY \\n(tY-1
 
2243
..
 
2244
.\" initial values
 
2245
.nr w1 0
 
2246
.nr o1 0
 
2247
.nr h1 0
 
2248
.ds t1
 
2249
.nr v1 0
 
2250
.nr tY 1
 
2251
.\" NS Xr macro - cross reference (man page only)
 
2252
.de Xr
 
2253
.if \\n(aC==0 \{\
 
2254
.       ie \\n(.$==0 .tm Usage: .Xr manpage_name [section#] \\*(Pu (#\\n(.c)
 
2255
.       el \{\
 
2256
.               ds mN Xr
 
2257
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
2258
.       \}
 
2259
.\}
 
2260
.if \\n(aC>\\n(aP \{\
 
2261
.       nr aP \\n(aP+1
 
2262
.       ie \\n(C\\n(aP==1 .tm Usage: .Xr manpage_name [section#] \\*(Pu (#\\n(.c)
 
2263
.       el \{\
 
2264
.               ie \\n(C\\n(aP>2 .y\\n(C\\n(aP
 
2265
.               el \{\
 
2266
.                       as b1 \&\\*(xR\\*(A\\n(aP\fP\s0
 
2267
.                       if \\n(aC>\\n(aP \{\
 
2268
.                               nr aP \\n(aP+1
 
2269
.                               if \\n(C\\n(aP==2 \{\
 
2270
.                                       as b1 \&(\\*(A\\n(aP)
 
2271
.                                       nr aP \\n(aP+1
 
2272
.                               \}
 
2273
.                               if \\n(aC>=\\n(aP \{\
 
2274
.                                       c\\n(C\\n(aP
 
2275
.                               \}
 
2276
.                       \}
 
2277
.               \}
 
2278
.               aZ
 
2279
.       \}
 
2280
.\}
 
2281
..
 
2282
.\" NS Sx macro - cross section reference
 
2283
.de Sx
 
2284
.if \\n(aC==0 \{\
 
2285
.       ie \\n(.$==0 .tm Sx Usage: .Sx Section Header \\*(Pu (#\\n(.c)
 
2286
.       el \{\
 
2287
.               ds mN Sx
 
2288
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
2289
.       \}
 
2290
.\}
 
2291
.\}
 
2292
.if \\n(aC>\\n(aP \{\
 
2293
.       nr aP \\n(aP+1
 
2294
.       as b1 \\*(sX
 
2295
.       nr cF \\n(.f
 
2296
.       nr cZ \\n(.s
 
2297
.       nR
 
2298
.\}
 
2299
..
 
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
 
2304
.de cC
 
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
 
2307
.fi
 
2308
.tZ
 
2309
.nr lC \\n(lC-1
 
2310
.tY
 
2311
..
 
2312
.de W1
 
2313
.ta \w\\*(A1    u
 
2314
.nr eW \w\\*(A1    u
 
2315
'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
 
2316
..
 
2317
.de W2
 
2318
.ta \w\\*(A1    u +\w\\*(A2    u
 
2319
.nr eW \w\\*(A1    u+\w\\*(A2    u
 
2320
'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
 
2321
..
 
2322
.de W3
 
2323
.ta \w\\*(A1    u +\w\\*(A2    u +\w\\*(A3    u
 
2324
.nr eW \w\\*(A1    u+\w\\*(A2    u+\w\\*(A3    u
 
2325
'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
 
2326
..
 
2327
.de W4
 
2328
.ta \w\\*(A1    u +\w\\*(A2    u +\w\\*(A3    u +\w\\*(A4    u
 
2329
.nr eW \w\\*(A1    u+\w\\*(A2    u +\w\\*(A3    u +\w\\*(A4    u
 
2330
'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
 
2331
..
 
2332
.de W5
 
2333
.ta \w\\*(A1   u +\w\\*(A2   u +\w\\*(A3   u +\w\\*(A4   u +\w\\*(A5   u
 
2334
.nr eW \w\\*(A1   u +\w\\*(A2   u +\w\\*(A3   u +\w\\*(A4   u +\w\\*(A5   u
 
2335
'       in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
 
2336
..
 
2337
.\" This is packed abnormally close, intercol width should be an option
 
2338
.de W6
 
2339
.ta \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u +\w\\*(A6
 
2340
.nr eW \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u +\w\\*(A6
 
2341
'       in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
 
2342
..
 
2343
.\" NS cL macro - column items
 
2344
.de cL
 
2345
.if \\n(w\\n(lC==0 .nr w\\n(lC \\n(eWu
 
2346
.if \\n(.u==0 \{\
 
2347
.       fi
 
2348
'       in \\n(.iu+\\n(eWu
 
2349
.\}
 
2350
.ti -\\n(eWu
 
2351
.fV
 
2352
.nr aP \\n(aP+1
 
2353
.ie \\n(aC>=\\n(aP  \{\
 
2354
.       if "\\*(A\\n(aP"Ta" \{\
 
2355
.               nr jJ \\n(aP-1
 
2356
.               rm S\\n(jJ
 
2357
.               rr jJ
 
2358
.       \}
 
2359
.       c\\n(C\\n(aP
 
2360
.\}
 
2361
.el .tm Usage: .It column_string [Ta [column_string ...] ] (#\\n(.c)
 
2362
..
 
2363
.\" NS Ta macro - append tab (\t)
 
2364
.de Ta
 
2365
.ie \\n(aC>0 \{\
 
2366
.       nr aP \\n(aP+1
 
2367
.       ie \\n(aC>=\\n(aP \{\
 
2368
.               if "\\*(A\\n(aP"Ta" \{\
 
2369
.                       nr jJ \\n(aP-1
 
2370
.                       rm S\\n(jJ
 
2371
.                       rr jJ
 
2372
.               \}
 
2373
.               as b1 \\t
 
2374
.               c\\n(C\\n(aP
 
2375
.       \}
 
2376
.       el \{\
 
2377
.               as b1 \\t\\c
 
2378
.               rm S\\n(aP
 
2379
.               pB
 
2380
.               aY
 
2381
.\" .           ds b1
 
2382
.       \}
 
2383
.\}
 
2384
.el \{\
 
2385
.       tm Usage: Ta must follow column entry: e.g. (#\\n(.c)
 
2386
.       tm .It column_string [Ta [column_string ...] ]
 
2387
.\}
 
2388
..
 
2389
.\"
 
2390
.\" NS Dl macro - display (one line) literal
 
2391
.de Dl
 
2392
'ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
 
2393
.in \\n(.iu+\\n(Dsu
 
2394
.ie \\n(aC==0 \{\
 
2395
.       ie \\n(.$==0 \{\
 
2396
.               tm Usage: .Dl argument ... (#\\n(.c)
 
2397
.       \}
 
2398
.       el \{\
 
2399
.               ds mN Dl
 
2400
.               ds A1 \\$1
 
2401
.               ds A2 \\$2
 
2402
.               ds A3 \\$3
 
2403
.               ds A4 \\$4
 
2404
.               ds A5 \\$5
 
2405
.               ds A6 \\$6
 
2406
.               ds A7 \\$7
 
2407
.               ds A8 \\$8
 
2408
.               ds A9 \\$9
 
2409
.               nr fV \\n(.$
 
2410
.               fV
 
2411
.               Li
 
2412
.       \}
 
2413
.\}
 
2414
.el \{\
 
2415
.       tm Usage: .Dl not callable by other macros (#\\n(.c)
 
2416
.\}
 
2417
.in \\n(.iu-\\n(Dsu
 
2418
..
 
2419
.\"
 
2420
.\" NS D1 macro - display (one line)
 
2421
.de D1
 
2422
'ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
 
2423
.in \\n(.iu+\\n(Dsu
 
2424
.ie \\n(aC==0 \{\
 
2425
.       ie \\n(.$==0 \{\
 
2426
.               tm Usage: .D1 argument ... (#\\n(.c)
 
2427
.       \}
 
2428
.       el \{\
 
2429
.               ds mN D1
 
2430
.               ds A1 \\$1
 
2431
.               ds A2 \\$2
 
2432
.               ds A3 \\$3
 
2433
.               ds A4 \\$4
 
2434
.               ds A5 \\$5
 
2435
.               ds A6 \\$6
 
2436
.               ds A7 \\$7
 
2437
.               ds A8 \\$8
 
2438
.               ds A9 \\$9
 
2439
.               nr fV \\n(.$
 
2440
.               fV
 
2441
.               nr aP \\n(aP+1
 
2442
.               ie \\n(C\\n(aP==1 .\\*(A\\n(aP
 
2443
.               el .No
 
2444
.       \}
 
2445
.\}
 
2446
.el \{\
 
2447
.       tm Usage: .D1 not callable by other macros (#\\n(.c)
 
2448
.\}
 
2449
.in \\n(.iu-\\n(Dsu
 
2450
..
 
2451
.\" NS Ex macro - DEFUNCT
 
2452
.de Ex
 
2453
.tm Ex defunct, Use .D1: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
2454
..
 
2455
.\"
 
2456
.\" NS Ex macro - DEFUNCT
 
2457
.de Ex
 
2458
.tm Ex defunct, Use .D1: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
2459
..
 
2460
.\"
 
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
 
2463
.de Vt
 
2464
.\" if a function declaration was the last thing given, want vertical space
 
2465
.if \\n(fD>0 \{\
 
2466
.       Pp
 
2467
.       nr fD 0
 
2468
.\}
 
2469
.\"     if a subroutine was the last thing given, want vertical space
 
2470
.if \\n(fZ>0 \{\
 
2471
.       ie \\n(fX==0 \{\
 
2472
.               Pp
 
2473
.               rs
 
2474
.       \}
 
2475
.       el .br
 
2476
.\}
 
2477
.nr fX \\n(fX+1
 
2478
.nr cF \\n(.f
 
2479
.nr cZ \\n(.s
 
2480
\\*(fT\&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
2481
.ie \\n(oT==0 .br
 
2482
.el \&\ \&
 
2483
.ft \\n(cF
 
2484
.fs \\n(cZ
 
2485
..
 
2486
.\"
 
2487
.\" NS Ft macro - Function type
 
2488
.nr fZ 0
 
2489
.de Ft
 
2490
.if \\n(nS>0 \{\
 
2491
.       if \\n(fZ>0 \{\
 
2492
.               Pp
 
2493
.               nr fD 0
 
2494
.               nr fX 0
 
2495
.       \}
 
2496
.       if \\n(fD>0 \{\
 
2497
.               Pp
 
2498
.               nr fD 0
 
2499
.               nr fX 0
 
2500
.       \}
 
2501
.       if \\n(fX>0 \{\
 
2502
.               Pp
 
2503
.               nr fX 0
 
2504
.       \}
 
2505
.       nr fY 1
 
2506
.\}
 
2507
.nr cF \\n(.f
 
2508
.nr cZ \\n(.s
 
2509
\&\\*(fT\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
2510
.ft \\n(cF
 
2511
.fs \\n(cZ
 
2512
.\" .br
 
2513
..
 
2514
.\"
 
2515
.\" NS Ot macro - Old Function type (fortran - no newline)
 
2516
.\" Ns oT register
 
2517
.nr oT 0
 
2518
.de Ot
 
2519
.nr oT 1
 
2520
.if \\n(nS>0 \{\
 
2521
.       if \\n(fZ>0 \{\
 
2522
.               Pp
 
2523
.               nr fD 0
 
2524
.               nr fX 0
 
2525
.       \}
 
2526
.       if \\n(fD>0 \{\
 
2527
.               Pp
 
2528
.               nr fD 0
 
2529
.               nr fX 0
 
2530
.       \}
 
2531
.       if \\n(fX>0 \{\
 
2532
.               Pp
 
2533
.               nr fX 0
 
2534
.       \}
 
2535
.       nr fY 1
 
2536
.\}
 
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
 
2541
.as b1 \&\ \fP
 
2542
..
 
2543
.\"
 
2544
.\" NS Fa macro - Function arguments
 
2545
.de Fa
 
2546
.if \\n(aC==0 \{\
 
2547
.       ie \\n(.$==0 .tm Usage: .Fa Function Arguments ... \\*(Pu (#\\n(.c)
 
2548
.       el \{\
 
2549
.               ds mN Fa
 
2550
.               ds A1 \\$1
 
2551
.               ds A2 \\$2
 
2552
.               ds A3 \\$3
 
2553
.               ds A4 \\$4
 
2554
.               ds A5 \\$5
 
2555
.               ds A6 \\$6
 
2556
.               ds A7 \\$7
 
2557
.               ds A8 \\$8
 
2558
.               ds A9 \\$9
 
2559
.               nr fV \\n(.$
 
2560
.               fV
 
2561
.       \}
 
2562
.\}
 
2563
.ie \\n(fC>0 \{\
 
2564
.       fC
 
2565
.\}
 
2566
.el \{\
 
2567
.       if \\n(aC>\\n(aP \{\
 
2568
.               as b1 \\*(fA
 
2569
.               nr aP \\n(aP+1
 
2570
.               nr cF \\n(.f
 
2571
.               nr cZ \\n(.s
 
2572
.               nR
 
2573
.               if \\n(nS>0 \{\
 
2574
.                       if \\n(fZ>0 .br
 
2575
.               \}
 
2576
.       \}
 
2577
.\}
 
2578
..
 
2579
.\" NS fC macro - interal .Fa for .FO and .Fc
 
2580
.de fC
 
2581
.ie \\n(aC>\\n(aP \{\
 
2582
.       nr aP \\n(aP+1
 
2583
.\" .   nr aa \\n(aP
 
2584
.\" .   if \\n(nS>0 \{\
 
2585
.               ds Fb
 
2586
.               nr fB 0
 
2587
.               nr Fb 0
 
2588
.               fB \\*(A\\n(aP
 
2589
.               if \\n(fB>1 \{\
 
2590
.                       rm A\\n(aP
 
2591
.                       rn Fb A\\n(aP
 
2592
.               \}
 
2593
.\" .   \}
 
2594
.       if \\n(fC>1 \{\
 
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
 
2597
.       \}
 
2598
.       if \\n(fC==1 \{\
 
2599
.               as b1 \&\|\\*(fA\\*(A\\n(aP\fP\s0
 
2600
.       \}
 
2601
.       nr fC \\n(fC+1
 
2602
.       fC
 
2603
.\}
 
2604
.el  \{\
 
2605
.       aY
 
2606
.\}
 
2607
..
 
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
 
2611
.\"
 
2612
.de Fn
 
2613
.if \\n(aC==0 \{\
 
2614
.       ie \\n(.$==0 .tm Usage: .Fn function_name function_arg(s) ... \\*(Pu (#\\n(.c)
 
2615
.       el \{\
 
2616
.               ds mN Fn
 
2617
.               ds A1 \\$1
 
2618
.               ds A2 \\$2
 
2619
.               ds A3 \\$3
 
2620
.               ds A4 \\$4
 
2621
.               ds A5 \\$5
 
2622
.               ds A6 \\$6
 
2623
.               ds A7 \\$7
 
2624
.               ds A8 \\$8
 
2625
.               ds A9 \\$9
 
2626
.               nr fV \\n(.$
 
2627
.               fV
 
2628
.       \}
 
2629
.\}
 
2630
.if \\n(nS>0 \{\
 
2631
.\" if there is/has been more than one subroutine declaration
 
2632
.       if \\n(fY==0 \{\
 
2633
.               if \\n(fZ>0 \{\
 
2634
.                       Pp
 
2635
.                       nr fX 0
 
2636
.                       nr fD 0
 
2637
.               \}
 
2638
.       \}
 
2639
.       if \\n(fY==1 \{\
 
2640
.               br
 
2641
.               nr fX 0
 
2642
.               nr fD 0
 
2643
.               nr fY 0
 
2644
.       \}
 
2645
.       if \\n(fD>0 \{\
 
2646
.               Pp
 
2647
.               nr fX 0
 
2648
.       \}
 
2649
.       if \\n(fX>0 \{\
 
2650
.               Pp
 
2651
.               nr fD 0
 
2652
.       \}
 
2653
.       nr fZ \\n(fZ+1
 
2654
.       nr fY 0
 
2655
.       rs
 
2656
.       ie \\n(nS>1 .br
 
2657
.       el \{\
 
2658
.               if \\n(iS==0 \{\
 
2659
.                       nr iS ((8)*\\n(fW)u
 
2660
.               \}
 
2661
.       \}
 
2662
.       in +\\n(iSu
 
2663
.       ti -\\n(iSu
 
2664
.       nr nS \\n(nS+1
 
2665
.\}
 
2666
.if \\n(aC>\\n(aP \{\
 
2667
.       nr aP \\n(aP+1
 
2668
.       nr cF \\n(.f
 
2669
.       nr cZ \\n(.s
 
2670
.       as b1 \\*(fN\\*(A\\n(aP\fP\s0\\*(lp
 
2671
.       ie \\n(aC>\\n(aP \{\
 
2672
.               as b1 \\*(fA
 
2673
.               nr aP \\n(aP+1
 
2674
.               f\\n(C\\n(aP
 
2675
.       \}
 
2676
.       el \{\
 
2677
.               as b1 \|\\*(rp
 
2678
.               aZ
 
2679
.       \}
 
2680
.       if \\n(nS>0 \{\
 
2681
.               in -\\n(iSu
 
2682
.       \}
 
2683
.\}
 
2684
..
 
2685
.\"
 
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
 
2690
.de f1
 
2691
.as b1 \\*(rp\f\\n(cF\s\\n(cZ
 
2692
.\\*(A\\n(aP
 
2693
..
 
2694
.de f2
 
2695
.if \\n(nS>0 \{\
 
2696
.       ds Fb
 
2697
.       nr fB 0
 
2698
.       nr Fb 0
 
2699
.       fB \\*(A\\n(aP
 
2700
.       if \\n(fB>1 \{\
 
2701
.               rm A\\n(aP
 
2702
.               rn Fb A\\n(aP
 
2703
.       \}
 
2704
.\}
 
2705
.as b1 \\*(A\\n(aP
 
2706
.ie \\n(aC>\\n(aP \{\
 
2707
.       nr aa \\n(aP
 
2708
.       nr aP \\n(aP+1
 
2709
.       if \\n(C\\n(aP==2 \{\
 
2710
.               as b1 \&\|\f\\n(cF\s\\n(cZ,\\*(S\\n(aa\fP\s0\|
 
2711
.       \}
 
2712
.       f\\n(C\\n(aP
 
2713
.\}
 
2714
.el  \{\
 
2715
.       as b1 \\*(rp\f\\n(cF\s\\n(cZ
 
2716
.       aZ
 
2717
.\}
 
2718
..
 
2719
.de f3
 
2720
.as b1 \\*(rp\f\\n(cF\s\\n(cZ\\*(A\\n(aP
 
2721
.ie \\n(aC>\\n(aP \{\
 
2722
.       No
 
2723
.\}
 
2724
.el .aZ
 
2725
..
 
2726
.de f4
 
2727
.as b1 \\*(rp\f\\n(cF\s\\n(cZ\\*(S\\n(aP\\*(A\\n(aP
 
2728
.ie \\n(aC>\\n(aP \{\
 
2729
.       nr aP \\n(aP+1
 
2730
.       No
 
2731
.\}
 
2732
.el .aZ
 
2733
..
 
2734
.de Fo
 
2735
.hy 0
 
2736
.if \\n(aC==0 \{\
 
2737
.       ie \\n(.$==0 .tm Usage: .Fo function_name
 
2738
.       el \{\
 
2739
.               ds mN Fo
 
2740
.               ds A1 \\$1
 
2741
.               ds A2 \\$2
 
2742
.               ds A3 \\$3
 
2743
.               ds A4 \\$4
 
2744
.               ds A5 \\$5
 
2745
.               ds A6 \\$6
 
2746
.               ds A7 \\$7
 
2747
.               ds A8 \\$8
 
2748
.               ds A9 \\$9
 
2749
.               nr fV \\n(.$
 
2750
.               fV
 
2751
.       \}
 
2752
.\}
 
2753
.if \\n(nS>0 \{\
 
2754
.\" if there is/has been more than one subroutine declaration
 
2755
.       if \\n(fY==0 \{\
 
2756
.               if \\n(fZ>0 \{\
 
2757
.                       Pp
 
2758
.                       nr fX 0
 
2759
.                       nr fD 0
 
2760
.               \}
 
2761
.       \}
 
2762
.       if \\n(fY==1 \{\
 
2763
.               br
 
2764
.               nr fX 0
 
2765
.               nr fD 0
 
2766
.               nr fY 0
 
2767
.       \}
 
2768
.       if \\n(fD>0 \{\
 
2769
.               Pp
 
2770
.               nr fX 0
 
2771
.       \}
 
2772
.       if \\n(fX>0 \{\
 
2773
.               Pp
 
2774
.               nr fD 0
 
2775
.       \}
 
2776
.       nr fZ \\n(fZ+1
 
2777
.       nr fY 0
 
2778
.       rs
 
2779
.       ie \\n(nS>1 .br
 
2780
.       el \{\
 
2781
.               if \\n(iS==0 \{\
 
2782
.                       nr iS ((8)*\\n(fW)u
 
2783
.               \}
 
2784
.       \}
 
2785
.       in +\\n(iSu
 
2786
.       ti -\\n(iSu
 
2787
.       nr nS \\n(nS+1
 
2788
.\}
 
2789
.if \\n(aC>\\n(aP \{\
 
2790
.       nr oM \\n(oM+1
 
2791
.       nr fC 1
 
2792
.       nr aP \\n(aP+1
 
2793
.       nr cF \\n(.f
 
2794
.       nr cZ \\n(.s
 
2795
.       as b1 \\*(fN\\*(A\\n(aP\fP\s0\\*(lp
 
2796
.       aY
 
2797
.\}
 
2798
..
 
2799
.de Fc
 
2800
.if \\n(aC==0 \{\
 
2801
.       if \\n(.$>0 \{\
 
2802
.               ds mN Fo
 
2803
.               ds A1 \\$1
 
2804
.               ds A2 \\$2
 
2805
.               ds A3 \\$3
 
2806
.               ds A4 \\$4
 
2807
.               ds A5 \\$5
 
2808
.               ds A6 \\$6
 
2809
.               ds A7 \\$7
 
2810
.               ds A8 \\$8
 
2811
.               ds A9 \\$9
 
2812
.               nr fV \\n(.$
 
2813
.               fV
 
2814
.       \}
 
2815
.\}
 
2816
.nr fC 0
 
2817
.nr oM \\n(oM-1
 
2818
.as b1 \|\\*(rp
 
2819
.ie \\n(aC>\\n(aP \{\
 
2820
.       nr aP \\n(aP+1
 
2821
.       \\*(A\\n(aP
 
2822
.\}
 
2823
.el \{\
 
2824
.       aZ
 
2825
.\}
 
2826
.if \\n(nS>0 \{\
 
2827
.       in -\\n(iSu
 
2828
.\}
 
2829
.hy
 
2830
..
 
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
 
2835
.de fB
 
2836
.\" .tm fB==\\n(fB, Fb==\\n(Fb, 1==\\$1 2==\\$2 3==\\$3 4==\\$4 5==\\$5 6==\\$6
 
2837
.if \\n(fB==0 \{\
 
2838
.       nr fB \\n(.$
 
2839
.       nr Fb 0
 
2840
.       ds Fb
 
2841
.\}
 
2842
.nr Fb \\n(Fb+1
 
2843
.as Fb \&\\$1
 
2844
.if \\n(Fb<\\n(fB \{\
 
2845
.       as Fb \&\\*(hV
 
2846
.       fB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
2847
.\}
 
2848
..
 
2849
.\" NS Fc - Function close - not implemented yet
 
2850
.\" NS Fo - Function open - not implemented yet
 
2851
.\"
 
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!)
 
2859
.\"
 
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)
 
2863
.de Rs
 
2864
.nr rS 1
 
2865
.rC
 
2866
.if \\n(nA==1 .Pp
 
2867
.nr Kl 0
 
2868
..
 
2869
.\" NS Re macro - Reference End
 
2870
.de Re
 
2871
.rZ
 
2872
.rC
 
2873
.nr rS 0
 
2874
..
 
2875
.\" NS rC macro - reference cleanup
 
2876
.de rC
 
2877
.nr uK 0
 
2878
.nr jK 0
 
2879
.nr nK 0
 
2880
.nr oK 0
 
2881
.nr qK 0
 
2882
.nr rK 0
 
2883
.nr tK 0
 
2884
.nr vK 0
 
2885
.nr dK 0
 
2886
.nr pK 0
 
2887
.nr bK 0
 
2888
.ds rS
 
2889
.rm U1 U2 U3 U4 U5 U6 U7 U8
 
2890
.rm uK jK nK oK rK qK tK vK dK pK bK
 
2891
..
 
2892
.\" NS rZ macro - reference print
 
2893
.de rZ
 
2894
.if \\n(uK \{\&\\*(U1,
 
2895
.       nr aK 1
 
2896
.       if (\\n(uK>1 \{\
 
2897
.               aK
 
2898
.       \}
 
2899
.       nr Kl -\\n(uK
 
2900
.\}
 
2901
.if \\n(tK \{\
 
2902
.       nr Kl \\n(Kl-1
 
2903
.       if \\n(Kl==0 \{\
 
2904
.               ie (\\n(jK==1):(\\n(bK==1) \{\&\\*q\\*(tK\\*q.
 
2905
.               \}
 
2906
.               el \{\&\\*(eM\\*(tK\\*(nO.
 
2907
.               \}
 
2908
.       \}
 
2909
.       if \\n(Kl>0 \{\
 
2910
.               ie (\\n(jK==1):(\\n(bK==1) \{\&\\*q\\*(tK\\*q,
 
2911
.               \}
 
2912
.               el \{\&\\*(eM\\*(tK\\*(nO,
 
2913
.               \}
 
2914
.       \}
 
2915
.\}
 
2916
.if \\n(bK \{\
 
2917
.       nr Kl \\n(Kl-1
 
2918
.       if \\n(Kl==0 \&\\*(eM\\*(bK\\*(nO.
 
2919
.       if \\n(Kl>0 \&\\*(eM\\*(bK\\*(nO,
 
2920
.\}
 
2921
.if \\n(jK \{\
 
2922
.       nr Kl \\n(Kl-1
 
2923
.       if \\n(Kl==0 \&\\*(eM\\*(jK\\*(nO.
 
2924
.       if \\n(Kl>0 \&\\*(eM\\*(jK\\*(nO,
 
2925
.\}
 
2926
.if \\n(rK \{\
 
2927
.       nr Kl \\n(Kl-1
 
2928
.       if \\n(Kl==0 \&\\*(rK.
 
2929
.       if \\n(Kl>0 \&\\*(rK,
 
2930
.\}
 
2931
.if \\n(nK \{\
 
2932
.       nr Kl \\n(Kl-1
 
2933
.       if \\n(Kl==0 \&\\*(nK.
 
2934
.       if \\n(Kl>0 \&\\*(nK,
 
2935
.\}
 
2936
.if \\n(vK \{\
 
2937
.       nr Kl \\n(Kl-1
 
2938
.       if \\n(Kl==0 \&\\*(vK.
 
2939
.       if \\n(Kl>0 \&\\*(vK,
 
2940
.\}
 
2941
.if \\n(pK \{\
 
2942
.       nr Kl \\n(Kl-1
 
2943
.       if \\n(Kl==0 \&\\*(pK.
 
2944
.       if \\n(Kl>0 \&\\*(pK,
 
2945
.\}
 
2946
.if \\n(qK \{\
 
2947
.       nr Kl \\n(Kl-1
 
2948
.       if \\n(Kl==0 \&\\*(qK.
 
2949
.       if \\n(Kl>0 \&\\*(qK,
 
2950
.\}
 
2951
.if \\n(dK \{\
 
2952
.       nr Kl \\n(Kl-1
 
2953
.       if \\n(Kl==0 \&\\*(dK.
 
2954
.       if \\n(Kl>0 \&\\*(dK,
 
2955
.\}
 
2956
.if \\n(oK \{\
 
2957
.       nr Kl \\n(Kl-1
 
2958
.       if \\n(Kl==0 \&\\*(oK.
 
2959
.       if \\n(Kl>0 \&\\*(oK,
 
2960
.\}
 
2961
.if \\n(Kl>0 .tm unresolved reference problem
 
2962
..
 
2963
.\" NS aK macro - print out reference authors
 
2964
.de aK
 
2965
.nr aK \\n(aK+1
 
2966
.ie (\\n(uK-\\n(aK)==0 \{\&and \\*(U\\n(aK,
 
2967
.\}
 
2968
.el \{\&\\*(U\\n(aK,
 
2969
.       aK
 
2970
.\}
 
2971
..
 
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
 
2975
.de %A
 
2976
.if \\n(aC==0 \{\
 
2977
.       ie \\n(.$==0 .tm Usage: .%A Author_name (#\\n(.c)
 
2978
.       el \{\
 
2979
.               nr uK \\n(uK+1
 
2980
.               nr Kl \\n(Kl+1
 
2981
.               ds rS U\\n(uK
 
2982
.               ds mN %A
 
2983
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
2984
.       \}
 
2985
.\}
 
2986
.if \\n(aC>\\n(aP \{\
 
2987
.       nr aP \\n(aP+1
 
2988
.       nr cF \\n(.f
 
2989
.       nr cZ \\n(.s
 
2990
.       rR
 
2991
.\}
 
2992
..
 
2993
.\" NS %B macro - [reference] Book Name
 
2994
.\" NS bK string - Book Name
 
2995
.\" NS bK register - Book Name flag
 
2996
.de %B
 
2997
.if \\n(aC==0 \{\
 
2998
.       ie \\n(.$==0 .tm Usage: .%B Book Name (#\\n(.c)
 
2999
.       el \{\
 
3000
.               ds mN %B
 
3001
.               if \\n(rS>0 \{\
 
3002
.                       nr bK \\n(bK+1
 
3003
.                       nr Kl \\n(Kl+1
 
3004
.                       ds rS bK
 
3005
.               \}
 
3006
.               ds A1 \\$1
 
3007
.               ds A2 \\$2
 
3008
.               ds A3 \\$3
 
3009
.               ds A4 \\$4
 
3010
.               ds A5 \\$5
 
3011
.               ds A6 \\$6
 
3012
.               ds A7 \\$7
 
3013
.               ds A8 \\$8
 
3014
.               ds A9 \\$9
 
3015
.               nr fV \\n(.$
 
3016
.               fV
 
3017
.       \}
 
3018
.\}
 
3019
.if \\n(aC>\\n(aP \{\
 
3020
.       nr aP \\n(aP+1
 
3021
.       nr cF \\n(.f
 
3022
.       nr cZ \\n(.s
 
3023
.       ie \\n(rS==0 \{\
 
3024
.               as b1 \&\\*(eM
 
3025
.               nR
 
3026
.       \}
 
3027
.       el .rR
 
3028
.\}
 
3029
..
 
3030
.\" NS %D macro - [reference] Date
 
3031
.\" NS dK string - Date String
 
3032
.\" NS dK register - Date flag
 
3033
.de %D
 
3034
.if \\n(aC==0 \{\
 
3035
.       ie \\n(.$==0 .tm Usage: .%D Date (#\\n(.c)
 
3036
.       el \{\
 
3037
.               ds mN %D
 
3038
.               nr dK \\n(dK+1
 
3039
.               nr Kl \\n(Kl+1
 
3040
.               ds rS dK
 
3041
.               ds A1 \\$1
 
3042
.               ds A2 \\$2
 
3043
.               ds A3 \\$3
 
3044
.               ds A4 \\$4
 
3045
.               ds A5 \\$5
 
3046
.               ds A6 \\$6
 
3047
.               ds A7 \\$7
 
3048
.               ds A8 \\$8
 
3049
.               ds A9 \\$9
 
3050
.               nr fV \\n(.$
 
3051
.               fV
 
3052
.       \}
 
3053
.\}
 
3054
.if \\n(aC>\\n(aP \{\
 
3055
.       nr aP \\n(aP+1
 
3056
.       nr cF \\n(.f
 
3057
.       nr cZ \\n(.s
 
3058
.       rR
 
3059
.\}
 
3060
..
 
3061
.\" NS %J macro - [reference] Journal Name
 
3062
.\" NS jK register - [reference] Journal Name flag
 
3063
.\" NS jK string - [reference] Journal Name
 
3064
.de %J
 
3065
.if \\n(aC==0 \{\
 
3066
.       ie \\n(.$==0 .tm Usage: .%J Journal Name (#\\n(.c)
 
3067
.       el \{\
 
3068
.               ds mN %J
 
3069
.               nr jK \\n(jK+1
 
3070
.               ds rS jK
 
3071
.               nr Kl \\n(Kl+1
 
3072
.               ds A1 \\$1
 
3073
.               ds A2 \\$2
 
3074
.               ds A3 \\$3
 
3075
.               ds A4 \\$4
 
3076
.               ds A5 \\$5
 
3077
.               ds A6 \\$6
 
3078
.               ds A7 \\$7
 
3079
.               ds A8 \\$8
 
3080
.               ds A9 \\$9
 
3081
.               nr fV \\n(.$
 
3082
.               fV
 
3083
.       \}
 
3084
.\}
 
3085
.if \\n(aC>\\n(aP \{\
 
3086
.       nr aP \\n(aP+1
 
3087
.       nr cF \\n(.f
 
3088
.       nr cZ \\n(.s
 
3089
.       rR
 
3090
.\}
 
3091
..
 
3092
.\" NS %N macro - [reference] issue number
 
3093
.\" NS nK register - [reference] issue number flag
 
3094
.\" NS nK string - [reference] issue number
 
3095
.de %N
 
3096
.if \\n(aC==0 \{\
 
3097
.       ie \\n(.$==0 .tm Usage: .%N issue number (#\\n(.c)
 
3098
.       el \{\
 
3099
.               nr nK \\n(nK+1
 
3100
.               nr Kl \\n(Kl+1
 
3101
.               ds rS nK
 
3102
.               ds mN %N
 
3103
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
3104
.       \}
 
3105
.\}
 
3106
.if \\n(aC>\\n(aP \{\
 
3107
.       nr aP \\n(aP+1
 
3108
.       nr cF \\n(.f
 
3109
.       nr cZ \\n(.s
 
3110
.       rR
 
3111
.\}
 
3112
..
 
3113
.\" NS %O macro - [reference] optional information
 
3114
.\" NS oK register - [reference] optional information flag
 
3115
.\" NS oK string - [reference] optional information
 
3116
.de %O
 
3117
.if \\n(aC==0 \{\
 
3118
.       ie \\n(.$==0 .tm Usage: .%O optional information ... \\*(Pu (#\\n(.c)
 
3119
.       el \{\
 
3120
.               ds mN %O
 
3121
.               nr oK \\n(oK+1
 
3122
.               nr Kl \\n(Kl+1
 
3123
.               ds rS oK
 
3124
.               ds A1 \\$1
 
3125
.               ds A2 \\$2
 
3126
.               ds A3 \\$3
 
3127
.               ds A4 \\$4
 
3128
.               ds A5 \\$5
 
3129
.               ds A6 \\$6
 
3130
.               ds A7 \\$7
 
3131
.               ds A8 \\$8
 
3132
.               ds A9 \\$9
 
3133
.               nr fV \\n(.$
 
3134
.               fV
 
3135
.       \}
 
3136
.\}
 
3137
.if \\n(aC>\\n(aP \{\
 
3138
.       nr aP \\n(aP+1
 
3139
.       nr cF \\n(.f
 
3140
.       nr cZ \\n(.s
 
3141
.       rR
 
3142
.\}
 
3143
..
 
3144
.\" NS %P macro - [reference] page numbers
 
3145
.\" NS pK register - [reference] page number flag
 
3146
.\" NS pK string - [reference] page number
 
3147
.de %P
 
3148
.if \\n(aC==0 \{\
 
3149
.       ie \\n(.$==0 .tm Usage: .%P page numbers ... \\*(Pu (#\\n(.c)
 
3150
.       el \{\
 
3151
.               ds mN %P
 
3152
.               nr pK \\n(pK+1
 
3153
.               nr Kl \\n(Kl+1
 
3154
.               ds rS pK
 
3155
.               ds A1 \\$1
 
3156
.               ds A2 \\$2
 
3157
.               ds A3 \\$3
 
3158
.               ds A4 \\$4
 
3159
.               ds A5 \\$5
 
3160
.               ds A6 \\$6
 
3161
.               ds A7 \\$7
 
3162
.               ds A8 \\$8
 
3163
.               ds A9 \\$9
 
3164
.               nr fV \\n(.$
 
3165
.               fV
 
3166
.       \}
 
3167
.\}
 
3168
.if \\n(aC>\\n(aP \{\
 
3169
.       nr aP \\n(aP+1
 
3170
.       nr cF \\n(.f
 
3171
.       nr cZ \\n(.s
 
3172
.       rR
 
3173
.\}
 
3174
..
 
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
 
3178
.de %Q
 
3179
.if \\n(aC==0 \{\
 
3180
.       ie \\n(.$==0 .tm Usage: .%Q Corporate or Foreign Author (#\\n(.c)
 
3181
.       el \{\
 
3182
.               ds mN %Q
 
3183
.               nr qK \\n(qK+1
 
3184
.               nr Kl \\n(Kl+1
 
3185
.               ds rS qK
 
3186
.               ds A1 \\$1
 
3187
.               ds A2 \\$2
 
3188
.               ds A3 \\$3
 
3189
.               ds A4 \\$4
 
3190
.               ds A5 \\$5
 
3191
.               ds A6 \\$6
 
3192
.               ds A7 \\$7
 
3193
.               ds A8 \\$8
 
3194
.               ds A9 \\$9
 
3195
.               nr fV \\n(.$
 
3196
.               fV
 
3197
.       \}
 
3198
.\}
 
3199
.if \\n(aC>\\n(aP \{\
 
3200
.       nr aP \\n(aP+1
 
3201
.       nr cF \\n(.f
 
3202
.       nr cZ \\n(.s
 
3203
.       rR
 
3204
.\}
 
3205
..
 
3206
.\" NS %R macro - [reference] report name
 
3207
.\" NS rK string - [reference] report name
 
3208
.\" NS rK register - [reference] report flag
 
3209
.de %R
 
3210
.if \\n(aC==0 \{\
 
3211
.       ie \\n(.$==0 .tm Usage: .%R reference report (#\\n(.c)
 
3212
.       el \{\
 
3213
.               ds mN %R
 
3214
.               nr rK \\n(rK+1
 
3215
.               nr Kl \\n(Kl+1
 
3216
.               ds rS rK
 
3217
.               ds A1 \\$1
 
3218
.               ds A2 \\$2
 
3219
.               ds A3 \\$3
 
3220
.               ds A4 \\$4
 
3221
.               ds A5 \\$5
 
3222
.               ds A6 \\$6
 
3223
.               ds A7 \\$7
 
3224
.               ds A8 \\$8
 
3225
.               ds A9 \\$9
 
3226
.               nr fV \\n(.$
 
3227
.               fV
 
3228
.       \}
 
3229
.\}
 
3230
.if \\n(aC>\\n(aP \{\
 
3231
.       nr aP \\n(aP+1
 
3232
.       nr cF \\n(.f
 
3233
.       nr cZ \\n(.s
 
3234
.       rR
 
3235
.\}
 
3236
..
 
3237
.\" NS %T macro - reference title
 
3238
.\" NS tK string - reference title
 
3239
.\" NS tK register - reference title flag
 
3240
.de %T
 
3241
.if \\n(aC==0 \{\
 
3242
.       ie \\n(.$==0 .tm Usage: .%T (#\\n(.c)
 
3243
.       el \{\
 
3244
.               ds mN %T
 
3245
.               if \\n(rS>0 \{\
 
3246
.                       nr tK \\n(tK+1
 
3247
.                       nr Kl \\n(Kl+1
 
3248
.                       ds rS tK
 
3249
.               \}
 
3250
.               ds A1 \\$1
 
3251
.               ds A2 \\$2
 
3252
.               ds A3 \\$3
 
3253
.               ds A4 \\$4
 
3254
.               ds A5 \\$5
 
3255
.               ds A6 \\$6
 
3256
.               ds A7 \\$7
 
3257
.               ds A8 \\$8
 
3258
.               ds A9 \\$9
 
3259
.               nr fV \\n(.$
 
3260
.               fV
 
3261
.       \}
 
3262
.\}
 
3263
.if \\n(aC>\\n(aP \{\
 
3264
.\" .   ie \\n(jS==1 \{\
 
3265
.\" .           nr cF \\n(.f
 
3266
.\" .           nr cZ \\n(.s
 
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
 
3270
.\" .   \}
 
3271
.\" .   el \{\
 
3272
.               nr aP \\n(aP+1
 
3273
.               nr cF \\n(.f
 
3274
.               nr cZ \\n(.s
 
3275
.               ie \\n(rS==0 \{\
 
3276
.                       as b1 \&\\*(eM
 
3277
.                       nR
 
3278
.               \}
 
3279
.               el .rR
 
3280
.\" .   \}
 
3281
.\}
 
3282
..
 
3283
.\" NS %V macro - reference volume
 
3284
.\" NS vK string - reference volume
 
3285
.\" NS vK register - reference volume flag
 
3286
.de %V
 
3287
.if \\n(aC==0 \{\
 
3288
.       ie \\n(.$==0 .tm Usage: .%V Volume , ... \\*(Pu (#\\n(.c)
 
3289
.       el \{\
 
3290
.               ds mN %V
 
3291
.               nr vK \\n(vK+1
 
3292
.               nr Kl \\n(Kl+1
 
3293
.               ds rS vK
 
3294
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
3295
.       \}
 
3296
.\}
 
3297
.if \\n(aC>\\n(aP \{\
 
3298
.       nr aP \\n(aP+1
 
3299
.       nr cF \\n(.f
 
3300
.       nr cZ \\n(.s
 
3301
.       rR
 
3302
.\}
 
3303
..
 
3304
.\" NS rR macro - reference recursion routine
 
3305
.\" NS jM local register
 
3306
.\" NS jN local register
 
3307
.de rR
 
3308
.hy 0
 
3309
.nr jM \\n(C\\n(aP
 
3310
.ie \\n(jM==1 \{\
 
3311
.\" .   as b1 \&\f\\n(cF\s\\n(cZ
 
3312
.       ie "\\*(A\\n(aP"Tn" \{\
 
3313
.               nN
 
3314
.       \}
 
3315
.       el \{\
 
3316
.               if \\n(aC>8 .tm Usage: \\*(mN - maximum 8 arguments (#\\n(.c)
 
3317
.               aI rR 1
 
3318
.               \\*(A\\n(aP
 
3319
.       \}
 
3320
.\}
 
3321
.el \{\
 
3322
.       nr jN \\n(aP
 
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
 
3328
.               rD
 
3329
.       \}
 
3330
.       el \{\
 
3331
.               nr aP \\n(aP+1
 
3332
.               as b1 \&\\*(S\\n(jN
 
3333
.               rR
 
3334
.       \}
 
3335
.\}
 
3336
.rr jM jN
 
3337
..
 
3338
.\" NS rD macro - save b1 buffer in to appropriate name
 
3339
.de rD
 
3340
.as \\*(rS \\*(b1
 
3341
.ds b1
 
3342
.ds rS
 
3343
.aY
 
3344
..
 
3345
.\" NS Hf macro - source include header files.
 
3346
.de Hf
 
3347
.Pp
 
3348
File:
 
3349
.Pa \\$1
 
3350
.Pp
 
3351
.nr cF \\n(.f
 
3352
.nr cZ \\n(.s
 
3353
.ie t \{\
 
3354
\&\\*(lI
 
3355
.br
 
3356
.ta +9n 18n 27n 36n 45n 54n 63n 72n
 
3357
.\}
 
3358
.el \{\
 
3359
.ta +8n 16n 24n 32n 40n 48n 56n 64n 72n
 
3360
.\}
 
3361
.nf
 
3362
.so  \\$1
 
3363
.fi
 
3364
.ft \\n(cF
 
3365
.fz \\n(cZ
 
3366
.Pp
 
3367
..
 
3368
.\" NS An macro - author name
 
3369
.\" NS aN register
 
3370
.nr aN 0
 
3371
.de An
 
3372
.if \\n(nY==1 \{\
 
3373
.       ie \\n(aN==1 \{\
 
3374
.               br
 
3375
.       \}
 
3376
.       el \{\
 
3377
.               nr aN 1
 
3378
.       \}
 
3379
.\}
 
3380
.if \\n(aC==0 \{\
 
3381
.       ie \\n(.$==0 .tm Usage: .An author_name ... \\*(Pu (#\\n(.c)
 
3382
.       el \{\
 
3383
.               ds mN An
 
3384
.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 
3385
.       \}
 
3386
.\}
 
3387
.if \\n(aC>\\n(aP \{\
 
3388
.       nr aP \\n(aP+1
 
3389
.       nr cF \\n(.f
 
3390
.       nr cZ \\n(.s
 
3391
.       nR
 
3392
.\}
 
3393
..
 
3394
.\" NS Sf macro -defunct
 
3395
.de Sf
 
3396
.tm .Sf defunct, use prefix or Ns
 
3397
..
 
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
 
3401
.de Rv
 
3402
.ie \\n(.$==0 \{\
 
3403
.tm Usage: .Rv [-std] (#\\n(.c)
 
3404
.\}
 
3405
.el \{\
 
3406
.       ds mN Rv
 
3407
.\" .   nr aP 0
 
3408
.\" .   nr lR \\n(lR+1
 
3409
.\" .   ds A1 \\$2
 
3410
.\" .   ds A2 \\$3
 
3411
.\" .   ds A3 \\$4
 
3412
.\" .   ds A4 \\$5
 
3413
.\" .   ds A5 \\$6
 
3414
.\" .   ds A6 \\$7
 
3415
.\" .   ds A7 \\$8
 
3416
.\" .   ds A8 \\$9
 
3417
.\" .   nr fV \\n(.$-1
 
3418
.       if "\\$1"-std" \{\
 
3419
.       nr cH \\*(cH
 
3420
.       if (\\n(cH<2):(\\n(cH>3) .tm Usage: .Rv -std sections 2 and 3 only
 
3421
.               br
 
3422
\&The
 
3423
.Fn \\$2
 
3424
\&\\*(rV
 
3425
.       \}
 
3426
.\}
 
3427
..