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