groff: update vendor branch to v1.20.1
[dragonfly.git] / contrib / groff / tmac / e.tmac
CommitLineData
92d0a6a6
JR
1.\" @(#)e.tmac 2.31 (Berkeley) 5/21/88
2.\" Modified by James Clark for use with groff.
3.\"
4.\" Copyright (c) 1988 Regents of the University of California.
5.\" All rights reserved.
6.\"
7.\" Redistribution and use in source and binary forms are permitted
8.\" provided that this notice is preserved and that due credit is given
9.\" to the University of California at Berkeley. The name of the University
10.\" may not be used to endorse or promote products derived from this
11.\" software without specific prior written permission. This software
12.\" is provided ``as is'' without express or implied warranty.
13.\" %beginstrip%
14.\"
15.\"**********************************************************************
16.\"* *
17.\"* ****** - M E N R O F F / T R O F F M A C R O S ****** *
18.\"* *
19.\"* Produced for your edification and enjoyment by: *
20.\"* Eric Allman *
21.\"* Electronics Research Laboratory *
22.\"* U.C. Berkeley. *
23.\"* current address: *
24.\"* Britton-Lee, Inc. *
25.\"* 1919 Addison Street Suite 105 *
26.\"* Berkeley, California 94704 *
27.\"* *
28.\"* VERSION 2.31 First Release: 11 Sept 1978 *
29.\"* *
30.\"* Documentation is available. *
31.\"* *
32.\"**********************************************************************
33.\"
34.\" Code on .de commands:
35.\" *** a user interface macro.
36.\" &&& a user interface macro which is redefined
37.\" when used to be the real thing.
38.\" $$$ a macro which may be redefined by the user
39.\" to provide variant functions.
40.\" --- an internal macro.
41.\"
4d3e9548
JL
42.
43.do nr need_eo_h 0
44.do nr need_eo_tl 0
45.do nr need_tl 1
46.
47.do mso devtag.tmac
48.
92d0a6a6
JR
49.if !\n(.g .ig
50.de @R \" --- initialize number register to 0, if undefined
51.if !r\\$1 .nr \\$1 0
52..
4d3e9548
JL
53.
54.\" --- check whether grohtml needs end of title/heading
55.de @html_check_need_title
56.do if (\\n[need_eo_tl] == 1) \
57\{\
58. do nr need_eo_tl 0
59. do DEVTAG-EO-TL
60.\}
61.do if (\\n[need_tl] == 1) \
62\{\
63. do DEVTAG-TL
64. do nr need_tl 0
65. do nr need_eo_tl 1
66.\}
67.do if \\n[need_eo_h]>0 .do DEVTAG-EO-H
68.do nr need_eo_h 0
69..
70.
71.de @check_need_title
72..
73.
74.ie '\*(.T'html' \
75. do als check_need_title @html_check_need_title
76.el \
77. do als check_need_title @check_need_title
78.
92d0a6a6
JR
79.@R pf
80.if \n(pf .nx
4d3e9548 81.
92d0a6a6
JR
82.if !\n(.g .ig
83.de @S \" --- initialize string/macro to empty, if undefined
84.if !d\\$1 .ds \\$1 \" empty
85..
4d3e9548 86.
92d0a6a6 87.@R @\" \" debugging level
4d3e9548
JL
88.
89.
92d0a6a6 90.\" *** INTERNAL GP MACROS ***
4d3e9548
JL
91.
92.
92d0a6a6
JR
93.de @C \" --- change ev's, taking info with us
94.nr _S \\n(.s
95.nr _V \\n(.v
96.nr _F \\n(.f
97.nr _J \\n(.j
98.do ds _A \\n[.fam]
99.nr _I \\n(.i
100.ev \\$1
101.ps \\n(_S
102.vs \\n(_Vu
103.ft \\n(_F
104.ad \\n(_J
105.do @fam \\*(_A
106'in \\n(_Iu
107.xl \\n($lu
108.lt \\n($lu
109.rr _S
110.rr _V
111.rr _F
112.rr _I
113.rr _J
114.ls 1
115'ce 0
116..
4d3e9548 117.
92d0a6a6
JR
118.de @D \" --- determine display type (Indent, Left, Center)
119.ds |p "\\$3
120.nr _d 0
121.if "\\$2"C" \
122. nr _d 1
123.if "\\$2"L" \
124. nr _d 2
125.if "\\$2"I" \
126. nr _d 3
127.if "\\$2"M" \
128. nr _d 4
4d3e9548
JL
129.if !\\n(_d \
130\{\
92d0a6a6
JR
131. nr _d \\$1
132. ds |p "\\$2
133.\}
4d3e9548 134.
92d0a6a6 135..
4d3e9548 136.
92d0a6a6
JR
137.de @z \" --- end macro
138.if \n@>1 .tm >> @z, .z=\\n(.z ?a=\\n(?a
139.if !"\\n(.z"" \
140\{\
141. tm Line \\n(c. -- Unclosed block, footnote, or other diversion (\\n(.z)
142. di
143. ex
144.\}
145.if \\n(?a \
146. bp \" force out final table
147.ds bp
148.ds @b\" \" don't start another page
149.br
150.if \n@>1 .tm << @z
151..
4d3e9548
JL
152.
153.
92d0a6a6 154.\" *** STANDARD HEADERS AND FOOTERS ***
4d3e9548
JL
155.
156.
92d0a6a6
JR
157.ie \n(.g .ds $* \\\\$*
158.el .ds $* \\\\$1 \\\\$2 \\\\$3 \\\\$4 \\\\$5 \\\\$6 \\\\$7 \\\\$8 \\\\$9
4d3e9548 159.
92d0a6a6
JR
160.de he \" *** define header
161.ie !\\n(.$ \
162\{\
163. rm |4
164. rm |5
165.\}
166.el \
167\{\
168. ds |4 "\*($*
169. ds |5 "\*($*
170.\}
171..
4d3e9548 172.
92d0a6a6
JR
173.de eh \" *** define even header
174.ie !\\n(.$ \
175. rm |4
176.el \
177. ds |4 "\*($*
178..
4d3e9548 179.
92d0a6a6
JR
180.de oh \" *** define odd header
181.ie !\\n(.$ \
182. rm |5
183.el \
184. ds |5 "\*($*
185..
4d3e9548 186.
92d0a6a6
JR
187.de fo \" *** define footer
188.ie !\\n(.$ \
189\{\
190. rm |6
191. rm |7
192.\}
193.el \
194\{\
195. ds |6 "\*($*
196. ds |7 "\*($*
197.\}
198..
4d3e9548 199.
92d0a6a6
JR
200.de ef \" *** define even foot
201.ie !\\n(.$ \
202. rm |6
203.el \
204. ds |6 "\*($*
205..
4d3e9548 206.
92d0a6a6
JR
207.de of \" *** define odd footer
208.ie !\\n(.$ \
209. rm |7
210.el \
211. ds |7 "\*($*
212..
4d3e9548 213.
92d0a6a6
JR
214.de ep \" *** end page (must always be followed by a .bp)
215.if \\n(nl>0 \
216\{\
217. wh 0
218. rs
219. @b
220.\}
221..
4d3e9548
JL
222.
223.
92d0a6a6 224.\" *** INTERNAL HEADER AND FOOTER MACROS ***
4d3e9548
JL
225.
226.
92d0a6a6
JR
227.de @h \" --- header
228.if \n@>1 .tm >> @h %=\\n% ?a=\\n(?a ?b=\\n(?b ?w=\\n(?w
229.if (\\n(.i+\\n(.o)>=\\n(.l \
230. tm Line \\n(c. -- Offset + indent exceeds line length
231.\" initialize a pile of junk
232.nr ?h \\n(?H \" transfer "next page" to "this page"
233.nr ?H 0
234.nr ?c \\n(?C
235.nr ?C 0
236.rn |4 |0
237.rn |5 |1
238.rn |6 |2
239.rn |7 |3
240.nr _w 0 \" reset max footnote width
241.nr ?W 0 \" no wide floats this page (yet)
242.nr ?I 1
243.\" begin actual header stuff
244.ev 2
245.rs
246.if \\n(hm>0 \
4d3e9548
JL
247. if !'\*(.T'html' \
248. sp |\\n(hmu \" move to header position
92d0a6a6
JR
249.@t $h\" \" output header title
250.if \\n(tm<=0 \
251. nr tm \n(.Vu
4d3e9548
JL
252.if !'\*(.T'html' \
253. sp |\\n(tmu \" move to top of text
92d0a6a6
JR
254.ev
255.mk _k \" for columned output
256.if \\n(?n .nm 1 \" restore line numbering if n1 mode
257.nr $c 1 \" set first column
258.if \n@>4 .tm -- @h >> .ns nl=\\n(nl %=\\n% _k=\\n(_k tm=\\n(tm
259.ie \\n(?s \
260\{\
261. nr ?s 0
262. rs
263' @b
264.\}
265.el \
266. @n\" \" begin the column
267.if \n@>2 .tm << @h
268..
4d3e9548 269.
92d0a6a6
JR
270.de @n \" --- new column or page
271.if \n@>3 .tm >> @n nl=\\n(nl %=\\n% ?f=\\n(?f ?o=\\n(?o
272.if \\n(bm<=0 \
273. nr bm \\n(.Vu
274.if (\\n(_w<=\\n($l)&(\\n(?W=0) \
275\{\
276. nr _b (\\n(ppp*\\n($vu)/200u \" compute fudge factor (must be < 1P)
277. if \\n(_bu>((\\n(bmu-\\n(fmu-((\\n(tpp*\\n($vu)/100u))/2u) \
278. nr _b (\\n(ppp*\\n($vu)/100u-\n(.Vu
279. nr _b +\\n(bmu
280.\}
281.nr _B \\n(_bu
282.ch @f
283.wh -\\n(_bu @f
284.nr _b +(\\n(ppp*\\n($vu)/100u \" add 1 paragraph v in case of sweep past
285.if \n@>2 .tm @n .p=\\n(.p bm=\\n(bm _b=\\n(_b _B=\\n(_B
286.nr ?f 0 \" reset footnote flag
287.if \\n(?o \
288\{\
289. (f _\" \" reprocess footnotes which run off page
290. nf
291. |o
292. fi
293. )f
294. rm |o
295.\}
296.nr ?o 0
297.if \\n(?T \
298\{\
299. nr _i \\n(.i
300. in 0
301. |h\" \" output the table header
302. in \\n(_iu
303. rr _i
304. mk #T \" for tbl commands
305. ns
306.\}
307.if (\\n(?a)&((\\n($c<2):(\\n(?w=0)) \
308\{\
309. nr ?a 0 \" output floating keep
310. @k |t
311. if \\n(?w \
312. mk _k \" don't overstrike wide keeps
313. nr ?w 0
314.\}
315.os
316.$H\" \" special column header macro
317.ns
318..
4d3e9548 319.
92d0a6a6
JR
320.de @f \" --- footer
321.if \n@>1 .tm >> @f %=\\n% nl=\\n(nl ?a=\\n(?a ?b=\\n(?b ?f=\\n(?f
322.if \n@>2 .nr VL \\n(.pu-\\n(nlu
323.if \n@>2 .tm @f bm=\\n(bm _B=\\n(_B _b=\\n(_b .p-nl=\\n(VL
324.ec
325.if \\n(?T \
326\{\
327. nr T. 1 \" for tbl commands (to output bottom line)
328. T# 1\" \" output the sides and bottom lines
329. br
330.\}
331.ev 2
332.ce 0
333.if \\n(?b \
334\{\
335. nr ?b 0
336. @k |b\" \" output bottom of page tables
337.\}
338.if \\n(?f \
339. @o\" \" output footnote if present
340.ie \\n($c<\\n($m \
341. @c\" \" handle new column
342.el \
343. @e\" \" new page
344.ev
345.if \n@>2 .tm << @f
346..
4d3e9548 347.
92d0a6a6
JR
348.de @o \" --- output footnote
349.nf
350.ls 1
351.in 0
352.if \n@>2 .tm @o last printed text = \\n(nl placing @r trap at -\\n(_B
353.wh -\\n(_Bu @r
354.|f
355.fi
356.if \n@>2 .tm @o triggered @r (?o) = \\n(?o
357.if \\n(?o \
358\{\
359. di \" just in case triggered @r
360. if \\n(dn=0 \
361\{\
362. rm |o
363. nr ?o 0
364. \}
365. nr dn \\n(_D
366. rr _D
367.\}
368.rm |f
369.ch @r
370..
4d3e9548 371.
92d0a6a6
JR
372.de @c \" --- new column
373.if \n@>2 .tm >> @c %=\\n%
374.rs
375.sp |\\n(_ku
376.@O +\\n($lu+\\n($su
377.nr $c +1
378.@n
379..
4d3e9548 380.
92d0a6a6
JR
381.de @e \" --- end page
382.if \n@>2 .tm >> @e
383.@O \\n(_ou
384.rs
385.sp |\\n(.pu-\\n(fmu-((\\n(tpp*\\n($vu)/100u) \" move to footer position
386.@t $f\" \" output footer title
387.nr ?h 0
388.bp
389..
4d3e9548 390.
92d0a6a6
JR
391.de @t \" --- output header or footer title
392.if !\\n(?h \
393\{\
394. sz \\n(tp\" \" set header/footer type fonts, etc.
395. @F \\n(tf
396. lt \\n(_Lu \" make title span entire page
397. nf
398. \\$1
399. br
400.\}
401..
4d3e9548 402.
92d0a6a6
JR
403.de $h \" $$$ print header
404.ds |z
405.if !\\n(?c \
406\{\
407. if e .ds |z "\\*(|0
408. if o .ds |z "\\*(|1
409.\}
410.if !\(ts\\*(|z\(ts\(ts \
411' tl \\*(|z
412.rm |z
413..
4d3e9548 414.
92d0a6a6
JR
415.de $f \" $$$ print footer
416.ds |z
417.if \\n(?c \
418\{\
419. if e .ds |z "\\*(|0
420. if o .ds |z "\\*(|1
421.\}
422.if \(ts\\*(|z\(ts\(ts \
423\{\
424. if e .ds |z "\\*(|2
425. if o .ds |z "\\*(|3
426.\}
427.if !\(ts\\*(|z\(ts\(ts \
428' tl \\*(|z
429.rm |z
430..
4d3e9548 431.
92d0a6a6
JR
432.de @r \" --- reprocess overflow footnotes
433.if \n@>3 .tm >> @r .z=\\n(.z ?f=\\n(?f ?a=\\n(?a ?b=\\n(?b _b=\\n(_b
434.di |o \" save overflow footnote
435.nr ?o 1
436.nr _D \\n(dn
437.ns
438..
4d3e9548
JL
439.
440.
92d0a6a6 441.\" *** COMMANDS WITH VARIANT DEFINITIONS ***
4d3e9548
JL
442.
443.
444.if !'\*(.T'html' .rn bp @b \" --- begin page
445.
92d0a6a6
JR
446.de bp \" *** begin new page (overrides columns)
447.nr $c \\n($m \" force new page, not new column
448.ie \\n(nl>0 \
449. @b \\$1
450.el \
451\{\
452. if \\n(.$>0 \
453. pn \\$1
454. if \\n(?I \
455. @h\" \" 'spring' the header trap
456.\}
457.br
458.wh 0 @h \" reset header
459..
4d3e9548 460.
92d0a6a6
JR
461.rn ll xl \" *** special line length (local)
462.de ll \" *** line length (global to environments)
463.xl \\$1
464.lt \\$1
465.nr $l \\n(.l
466.if (\\n($m<=1):(\\n($l>\\n(_L) \
467. nr _L \\n(.l
468..
4d3e9548 469.
92d0a6a6 470.rn po @O \" --- local page offset
4d3e9548 471.
92d0a6a6
JR
472.de po \" *** page offset
473.@O \\$1
474.nr _o \\n(.o
475..
4d3e9548 476.
92d0a6a6
JR
477.\" Redefine the fam request to set the family in
478.\" environment 2 as well as the current environment.
479.if !\n(.g .ig
480.do rn fam @fam \" --- set family in current environment
481.do de fam \" *** set font family in ev 2 and current ev
482.do @fam \\$1
483.ev 2
484.do @fam \\$1
485.ev
486..
4d3e9548
JL
487.
488.
92d0a6a6 489.\" *** MISCELLANEOUS ROFF COMMANDS ***
4d3e9548
JL
490.
491.
92d0a6a6
JR
492.de hx \" *** suppress headers and footers next page
493.nr ?H 1
494..
4d3e9548 495.
92d0a6a6
JR
496.de ix \" *** indent, no break
497'in \\$1
498..
4d3e9548 499.
92d0a6a6
JR
500.de bl \" *** contiguous blank lines
501.br
502.ne \\$1
503.rs
504.sp \\$1
505..
4d3e9548 506.
92d0a6a6
JR
507.de n1 \" *** line numbering 1
508.nm 1
509.xl -\w'0000'u
510.nr ?n 1
511..
4d3e9548 512.
92d0a6a6
JR
513.de n2 \" *** line numbering 2
514.nm \\$1
515.ie \\n(.$ \
516. xl -\w'0000'u
517.el \
518. xl \\n($lu
519..
4d3e9548 520.
92d0a6a6
JR
521.de pa \" *** new page
522.bp \\$1
523..
4d3e9548 524.
92d0a6a6
JR
525.de ro \" *** roman page numbers
526.af % i
527..
4d3e9548 528.
92d0a6a6
JR
529.de ar \" *** arabic page numbers
530.af % 1
531..
4d3e9548 532.
92d0a6a6
JR
533.de m1 \" *** position one space
534.nr _0 \\n(hmu
535.nr hm \\$1v
536.nr tm +\\n(hmu-\\n(_0u
537.rr _0
538..
4d3e9548 539.
92d0a6a6
JR
540.de m2 \" *** position two space
541.nr tm \\n(hmu+\\n(tpp+\\$1v
542..
4d3e9548 543.
92d0a6a6
JR
544.de m3 \" *** position three space
545.nr bm \\n(fmu+\\n(tpp+\\$1v
546..
4d3e9548 547.
92d0a6a6
JR
548.de m4 \" *** position four space
549.nr _0 \\n(fmu
550.nr fm \\$1v
551.nr bm +\\n(fmu-\\n(_0u
552..
4d3e9548 553.
92d0a6a6
JR
554.de sk \" *** leave a blank page (next page)
555.if \\n(.$>0 \
556. tm Line \\n(c. -- I cannot skip multiple pages
557.nr ?s 1
558..
4d3e9548
JL
559.
560.
92d0a6a6 561.\" *** MISCELLANEOUS USER SUPPORT COMMANDS ***
4d3e9548
JL
562.
563.
92d0a6a6
JR
564.if !\n(.g .ig
565.de re \" *** reset tabs (TROFF defines 15 stops default)
566.ta T 0.5i
567..
4d3e9548 568.
92d0a6a6
JR
569.if \n(.g .ig
570.de re
571.ta 0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i
572..
4d3e9548 573.
92d0a6a6
JR
574.de ba \" *** set base indent
575.ie \\n(.$ \
576. nr $i \\$1n
577.el \
578. nr $i \\n(siu*\\n($0u
579..
4d3e9548 580.
92d0a6a6
JR
581.de hl \" *** draw horizontal line
582.br
4d3e9548
JL
583.if '\*(.T'html' \
584\{\
585. HR
586. do return
587.\}
92d0a6a6
JR
588.ie \n(.g .do nr _I \\n[.in]
589.el .nr _I \\n(.i
590\l'\\n(.lu-\\n(_Iu'
591.sp
592..
4d3e9548
JL
593.
594.
92d0a6a6 595.\" *** PARAGRAPHING ***
4d3e9548
JL
596.
597.
92d0a6a6
JR
598.de pp \" *** paragraph
599.lp \\n(piu
600..
4d3e9548 601.
92d0a6a6
JR
602.de lp \" *** left aligned paragraph
603.@p
604.if \\n(.$ \
605. ti +\\$1
606.nr $p 0 1
607..
4d3e9548 608.
92d0a6a6
JR
609.de ip \" *** indented paragraph w/ optional tag
610.if (\\n(ii>0)&(\\n(ii<1n) \
611. nr ii \\n(iin
612.nr _0 \\n(ii
613.if \\n(.$>1 \
614. nr _0 \\$2n
615.@p \\n(_0u
616.nr _I \\n(.iu
617.in 0
618.di |i
619\&\\$1
620.br
621.di
622.in \\n(_Iu
623.ds |j \\*(|i\\
4d3e9548 624.ie \\w"\\*(|j" \
92d0a6a6
JR
625\{\
626. ti -\\n(_0u
627. ie \\w"\\*(|j">=\\n(_0 \
628\{\
4d3e9548 629. do DEVTAG-COL 1
92d0a6a6 630\\*(|j
4d3e9548 631. do DEVTAG-COL-NEXT 2
92d0a6a6
JR
632. br
633. \}
4d3e9548
JL
634. el \
635\{\
636. do DEVTAG-COL 1
637\\*(|j\h'|\\n(_0u'\c
638. do DEVTAG-COL 2
639. \}
92d0a6a6 640.\}
4d3e9548 641.el .do DEVTAG-COL 2
92d0a6a6
JR
642.rr _0
643.rm |i |j
644..
4d3e9548 645.
92d0a6a6
JR
646.de np \" *** numbered paragraph
647.\" use string comparison in case user has changed format of $p
648.if '\\n($p'-1' \
649. nr $p 0 \" reset number after .bu
650.nr $p +1 \" increment paragraph number
651.@p \w'\0(000)\0'u
652.ti -\w'\0(000)\0'u
653\0(\\n($p)\h'|\w'\0(000)\0'u'\c
654..
4d3e9548 655.
92d0a6a6
JR
656.de bu \" *** bulleted paragraph
657.br
658.\" use string comparison in case user has changed format of $p
659.if '\\n($p'-1' \
660. ns \" don't space between .bu paragraphs
661.nr $p 0-1 \" mark "bulleted paragraph" mode
662.@p \w'\0\(bu\0'u
663.ti -\w'\0\(bu\0'u
664\0\(bu\0\c
665..
4d3e9548 666.
92d0a6a6 667.de @p \" --- initialize for paragraph
4d3e9548 668.do check_need_title
92d0a6a6
JR
669.if "\\n(.z"|e" .tm Line \\n(c. -- Unmatched continued equation
670.in \\n($iu+\\n(pou
671.if \\n(.$ \
672. in +\\$1n
673.ce 0
674.fi
675.@F \\n(pf
676.sz \\n(pp
677.sp \\n(psu
678.ne \\n(.Lv+\\n(.Vu
679.ns
680..
4d3e9548
JL
681.
682.
92d0a6a6 683.\" *** SECTION HEADINGS ***
4d3e9548
JL
684.
685.
92d0a6a6
JR
686.de sh \" *** section heading
687.fi
4d3e9548 688.do check_need_title
92d0a6a6
JR
689.if (\\n(si>0)&(\\n(si<1n) \
690. nr si \\n(sin
4d3e9548 691.if '\*(.T'html' .nr si 0
92d0a6a6 692.ce 0
4d3e9548
JL
693.if '\*(.T'html' \
694\{\
695. do DEVTAG-SH \\$1
696. do nr need_eo_h 1
697.\}
92d0a6a6
JR
698.@d "\\$1" +1 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
699.if !"\\$2"_" \
700\{\
701. ds |n \&\\$2
702. $p "\\*(|n" "\\*($n" \\n($0
703. $0 "\\*(|n" "\\*($n" \\n($0
704. rm |n
705.\}
706.nr $p 0 1 \" reset .np count
707..
4d3e9548 708.
92d0a6a6
JR
709.de @d \" --- change section depth
710.if !""\\$1" \
711. nr $0 \\$1
712.if \\n($0&(\\n(.$>1) \
713. nr $\\n($0 \\$2
714.ds $n \&\"
715.ie \\n($0>=1 \
716\{\
717. if '\\n($1'0' \
718. nr $1 1
719. if (\\n(.$>=3) .if !"\\$3"-" \
720. nr $1 \\$3
721. as $n \\n($1
722.\}
723.el \
724. nr $1 0
725.ie \\n($0>=2 \
726\{\
727. if '\\n($2'0' \
728. nr $2 1
729. if (\\n(.$>=4) .if !"\\$4"-" \
730. nr $2 \\$4
731. as $n .\\n($2
732.\}
733.el \
734. nr $2 0
735.ie \\n($0>=3 \
736\{\
737. if '\\n($3'0' \
738. nr $3 1
739. if (\\n(.$>=5) .if !"\\$5"-" \
740. nr $3 \\$5
741. as $n .\\n($3
742.\}
743.el \
744. nr $3 0
745.ie \\n($0>=4 \
746\{\
747. if '\\n($4'0' \
748. nr $4 1
749. if (\\n(.$>=6) .if !"\\$6"-" \
750. nr $4 \\$6
751. as $n .\\n($4
752.\}
753.el \
754. nr $4 0
755.ie \\n($0>=5 \
756\{\
757. if '\\n($5'0' \
758. nr $5 1
759. if (\\n(.$>=7) .if !"\\$7"-" \
760. nr $5 \\$7
761. as $n .\\n($5
762.\}
763.el \
764. nr $5 0
765.ie \\n($0>=6 \
766\{\
767. if '\\n($6'0' \
768. nr $6 1
769. if (\\n(.$>=8) .if !"\\$8"-" \
770. nr $6 \\$8
771. as $n .\\n($6
772.\}
773.el \
774. nr $6 0
775..
4d3e9548 776.
92d0a6a6
JR
777.de sx \" *** heading up, no increment (2.1.1 -> 2.1)
778.ce 0
779.ul 0
780.nr _0 \\n($0-1
781.if \\n(.$ .nr _0 +1
782.if \\n(.$ .nr _0 \\$1
783.@d \\n(_0
784.rr _0
785.$p "" "" \\n($0
786.nr $p 0 1 \" reset .np count
787..
4d3e9548 788.
92d0a6a6
JR
789.de uh \" *** unnumbered section heading
790.$p "\\$1"
791.$0 "\\$1"
792..
4d3e9548 793.
92d0a6a6
JR
794.de $p \" $$$ print section heading
795.if (\\n(si>0)&(\\n(.$>2) \
796. nr $i \\$3*\\n(si
797.in \\n($iu
798.ie !"\\$1\\$2"" \
799\{\
800. sp \\n(ssu \" one of them is non-null
801. ne \\n(.Lv+\\n(.Vu+\\n(psu+((\\n(spp*\\n($vu*\\n(.Lu)/100u)
802. \" exdent if \\$3 > 0
803. ie 0\\$3 \
804. ti -(\\n(siu-\\n(sou)
805. el \
806. ti +\\n(sou
807. @F \\n(sf
808. sz \\n(sp
809. if 0\\$3 \
810. $\\$3
811. if \w"\\$2">0 \\$2.
812. if \w"\\$1">0 \\$1\f1\ \ \&
813.\}
814.el \
815. sp \\n(psu
816.@F \\n(pf
817.sz \\n(pp
818..
4d3e9548
JL
819.
820.
92d0a6a6 821.\" *** COLUMNNED OUTPUT ***
4d3e9548
JL
822.
823.
92d0a6a6
JR
824.de 2c \" *** double columned output
825.br
826.if \\n($m>1 \
827. 1c\" \" revert to 1c if already 2c
828.nr $c 1
829.nr $m 2
830.if \\n(.$>1 \
831. nr $m \\$2
832.if \\n(.$>0 \
833. nr $s \\$1n \" param 1: column seperation
834.nr $l (\\n(.l-((\\n($m-1)*\\n($s))/\\n($m
835.xl \\n($lu
836.mk _k
837.ns
838..
4d3e9548 839.
92d0a6a6
JR
840.de 1c \" *** single columned output
841.br
842.nr $c 1
843.nr $m 1
844.ll \\n(_Lu \" return to normal output
845.sp |\\n(.hu
846.@O \\n(_ou
847..
4d3e9548 848.
92d0a6a6
JR
849.de bc \" *** begin column
850.sp 24i
851..
4d3e9548
JL
852.
853.
92d0a6a6 854.\" *** FLOATING TABLES AND NONFLOATING BLOCKS ***
4d3e9548
JL
855.
856.
92d0a6a6
JR
857.de (z \" *** begin floating keep
858.if \n@>4 .tm >> (z, .z=\n(.z
859.@D 4 \\$1 \\$2
860.@(
861..
4d3e9548 862.
92d0a6a6
JR
863.de )z \" *** end floating keep
864.if \n@>4 .tm >> )z, .z=\n(.z
865.sp \\n(zsu
866.@)
867.if \n@>4 .tm -- )z << @), .z=\n(.z
868.rr _0
869.if !\\n(?b \
870. nr dn +(\\n(ppp*\\n($vu)/200u+\\n(zsu
871.nr dl -\n(.H \" fudge factor necessary to make it work
872.ie ((\\n(dn+\n(.V)>=\\n(.t):(\\n(?a):((\\n(dl>\\n($l)&(\\n($c>1)) \
873\{\
874. nr ?a 1
875. if (\\n(dl>\\n($l)&(\\n($m>1) \
876. nr ?w 1 \" mark wider than one column (top)
877. ds |x |t
878.\}
879.el \
880\{\
881. nr ?b 1
882. if (\\n(dl>\\n($l)&(\\n($m>1) \
883. nr ?W 1 \" mark wider than one column (bottom)
884. nr _b +\\n(dnu
885. \" avoid moving @f back past the current position
886. if \\n(.p-\\n(nl-\n(.V<\\n(_b \
887. nr _b \\n(.p-\\n(nl-\n(.V
888. ch @f -\\n(_bu
889. ds |x |b
890.\}
891.da \\*(|x \" copy to save macro
892.nf
893.ls 1
894.nr ?k 1
895.if \n@>4 .tm -- )z >> \\*(|x
896\!.if \\\\n(nl>(\\\\n(tm+2v) .ne \\n(dnu-\\n(zsu
897.|k\" \" and the body
898.ec
899.if \n@>4 .tm -- )z << \\*(|x, .z=\\n(.z
900.nr ?k 0
901.rm |k\" \" remove the temp macro
902.da
903.in 0
904.ls 1
905.xl \\n($lu
906.ev
907.if \n@>4 .tm << )z, .z=\\n(.z
908..
4d3e9548 909.
92d0a6a6
JR
910.de @k \" --- output floating keep
911.if \n@>4 .tm >> @k, $1=\\$1, .z=\\n(.z
912.ev 1
913.nf
914.ls 1
915.in 0
916.sp \\n(zsu
917.\\$1
918.ec
919.br
920.rm \\$1
921.ev
922..
4d3e9548 923.
92d0a6a6
JR
924.de (t \" XXX temp ref to (z
925.(z \\$1 \\$2
926..
4d3e9548 927.
92d0a6a6
JR
928.de )t \" XXX temp ref to )t
929.)z \\$1 \\$2
930..
4d3e9548 931.
92d0a6a6
JR
932.de (b \" *** begin block
933.br
934.@D 3 \\$1 \\$2
935.sp \\n(bsu
936.@(
4d3e9548 937.if '\*(.T'html' .sp \\n(bsu
92d0a6a6 938..
4d3e9548 939.
92d0a6a6
JR
940.de )b \" *** end block
941.br
942.@)
943.if (\\n(bt=0):(\\n(.t<\\n(bt) \
944. ne \\n(dnu \" make it all on one page
945.ls 1
946.nf
947.|k
948.ec
949.fi
950.in 0
951.xl \\n($lu
952.ev
953.rm |k
954.sp \\n(bsu+\\n(.Lv-1v
955..
4d3e9548 956.
92d0a6a6
JR
957.de @( \" --- begin keep
958.if !"\\n(.z"" .tm Line \\n(c. -- Invalid nested keep \\n(.z
959.@M
960.di |k
961\!'rs
962..
4d3e9548 963.
92d0a6a6
JR
964.de @M \" --- set modes for display
965.nr ?k 1
966.@C 1
967.@F \\n(df
968.if \\n($R .@V
969.vs \\n(.sp*\\n($Vu/100u
970.nf
971.if "\\*(|p"F" \
972. fi \" set fill mode if "F" parameter
973.if \\n(_d=4 \
974. in 0
975.if \\n(_d=3 \
976\{\
977. in +\\n(biu
978. xl -\\n(biu
979.\}
980.if \\n(_d=1 \
981. ce 10000
982..
4d3e9548 983.
92d0a6a6
JR
984.de @) \" --- end keep
985.br
986.if !"\\n(.z"|k" .tm Line \\n(c. -- Close of a keep which has never been opened
987.nr ?k 0
988.di
989.in 0
990.ce 0
991..
4d3e9548 992.
92d0a6a6
JR
993.de (c \" *** begin block centered text
994.if "\\n(.z"|c" .tm Line \\n(c. -- Nested .(c requests
995.di |c
996..
4d3e9548 997.
92d0a6a6
JR
998.de )c \" *** end block centered text
999.if !"\\n(.z"|c" .tm Line \\n(c. -- Unmatched .)c
1000.br \" force out final line
1001.di
1002.if \n@>4 .tm >> .)c .l=\\n(.l .i=\\n(.i $i=\\n($i dl=\\n(dl
1003.ev 1
1004.ls 1
1005.in (\\n(.lu-\\n(.iu-\\n(dlu)/2u
1006.if \n@>4 .tm -- .)c << .in .l=\\n(.l .i=\\n(.i dl=\\n(dl
1007.nf
1008.|c
1009.ec
1010.in
1011.ls
1012.ev
1013.rm |c
1014..
4d3e9548
JL
1015.
1016.
92d0a6a6 1017.\" *** BLOCK QUOTES (OR WHATEVER) AND LISTS ***
4d3e9548
JL
1018.
1019.
92d0a6a6
JR
1020.de (q \" *** begin block quote
1021.br
1022.@C 1
1023.fi
1024.sp \\n(qsu
1025.in +\\n(qiu
1026.xl -\\n(qiu
1027.sz \\n(qp
1028..
4d3e9548 1029.
92d0a6a6
JR
1030.de )q \" *** end block quote
1031.br
1032.ev
1033.sp \\n(qsu+\\n(.Lv-1v
1034.nr ?k 0
1035..
4d3e9548 1036.
92d0a6a6
JR
1037.de (l \" *** begin list
1038.br
1039.sp \\n(bsu
1040.@D 3 \\$1 \\$2
1041.@M
4d3e9548 1042.if '\*(.T'html' .sp \\n(bsu
92d0a6a6 1043..
4d3e9548 1044.
92d0a6a6
JR
1045.de )l \" *** end list
1046.br
1047.ev
1048.sp \\n(bsu+\\n(.Lv-1v
1049.nr ?k 0
1050..
4d3e9548
JL
1051.
1052.
92d0a6a6 1053.\" *** PREPROCESSOR SUPPORT ***
4d3e9548
JL
1054.
1055.
92d0a6a6
JR
1056.\"
1057.\" EQN
1058.\"
1059.de EQ \" *** equation start
4d3e9548
JL
1060.do if \\n[need_eo_h]>0 .do DEVTAG-EO-H
1061.do nr need_eo_h 0
92d0a6a6 1062.ec
4d3e9548
JL
1063.if "\*(.T"html" \
1064\{\
1065. do nr e-EQ-ll \\n(.l
1066. ll 1000n
1067.\}
1068.do HTML-IMAGE
92d0a6a6
JR
1069.if !\\n(?e \
1070\{\
1071. if "\\n(.z"|e" .tm Line \\n(c. -- Nested .EQ request
1072. @D 1 "\\$1" "\\$2"
1073. @C 2
1074. di |e
1075.\}
1076.ls 1
1077.in 0
1078.nf
1079..
4d3e9548 1080.
92d0a6a6
JR
1081.de EN \" *** equation end
1082.br
4d3e9548
JL
1083.do HTML-IMAGE-END
1084.if "\*(.T"html" \
1085. do ll \\n[e-EQ-ll]u
92d0a6a6
JR
1086.ie "\\$1"C" \
1087\{\
1088. nr ?e 1
1089. sp \\n(esu
1090.\}
1091.el \
1092\{\
1093. nr ?e 0
1094. di
1095. if \\n(dn \
1096. @q\" \" actual equation output
1097. rm |e
1098. ev
1099.\}
1100..
4d3e9548 1101.
92d0a6a6
JR
1102.de @q \" --- equation output
1103.nr _Q \\n(dnu
1104.ev
1105.sp \\n(esu \" output rest of preceeding text
1106.if !"\\n(.z"" \!.ne \\n(_Qu
1107.ne \\n(_Qu+\n(.Vu \" keep it on one page
1108.@C 2\" \" .ev 2 may be jumbled from header
1109.if \\n(_d=1 \
1110. in (\\n(.lu+\\n($iu-\\n(dlu)/2u
1111.if \\n(_d=2 \
1112. in \\n($iu
1113.if \\n(_d=3 \
1114. in \\n(biu+\\n($iu
1115.if \\n(_d=4 \
1116. in 0
1117.mk _q
1118.if \n@>1 .tm --@e: _Q=\\n(_Q _q=\\n(_q nl=\\n(nl |p=\\*(|p
1119.if !"\\*(|p"" \
1120\{\
1121. rs
1122. sp (\\n(_Qu-\\n(.vu)/2u
1123. tl """\\*(|p"
1124. rt \\n(_qu
1125.\}
1126.|e
1127.sp |\\n(_qu+\\n(_Qu
1128.sp \\n(esu+\\n(.Lv-1v
1129.rr _q
1130.rr _Q
1131..
4d3e9548 1132.
92d0a6a6
JR
1133.\"
1134.\" TBL
1135.\"
1136.de TS \" *** table start
1137.sp \\n(bsu
4d3e9548
JL
1138.if "\*(.T"html" \
1139\{\
1140. do nr e-TS-ll \\n(.l
1141. ll 1000n
1142.\}
1143.do HTML-IMAGE
92d0a6a6
JR
1144.@C 1
1145.fi \" drop into fill mode for text boxes
1146.if "\\$1"H" \
1147\{\
1148. di |h \" save header part
1149. nr ?T 1
1150.\}
1151.ls 1
1152.ch @f -(\\n(_bu+1v) \" set pseudo-trap for bottom line
1153.if \\n(.p-\\n(_b-1v<=\\n(nl \
1154. ch @f \\n(nlu+\n(.Vu
1155..
4d3e9548 1156.
92d0a6a6
JR
1157.de TH \" *** end header part of table
1158.nr T. 0
1159.T# 0
1160.di
1161.nr _T \\n(?T
1162.nr ?T 0
1163.ne \\n(dnu+1v
1164.nr ?T \\n(_T
1165.nr _i \\n(.i
1166.in 0
1167.|h\" \" put in the initial header
1168.in \\n(_iu
1169.rr _i
1170.mk #T
1171..
4d3e9548 1172.
92d0a6a6
JR
1173.de TE \" *** table end
1174.nr ?T 0
1175.ch @f -\\n(_bu \" reset pseudo-trap
1176.if \\n(.p-\\n(_b<=\\n(nl \
1177. ch @f \\n(nlu+\n(.Vu
1178.ev
4d3e9548
JL
1179.do HTML-IMAGE-END
1180.if "\*(.T"html" \
1181. do ll \\n[e-TS-ll]u
92d0a6a6
JR
1182.sp \\n(bsu+\\n(.Lv-1v
1183.re
1184..
4d3e9548 1185.
92d0a6a6
JR
1186.de T&
1187..
4d3e9548 1188.
92d0a6a6
JR
1189.\"
1190.\" REFER
1191.\"
1192.de ][ \" *** refer output
1193.if \\$1>5 .tm Bad arg to []
1194.[\\$1
1195..
4d3e9548 1196.
92d0a6a6
JR
1197.de [0 \" --- other
1198.(f
1199.ip "\\*([F.\0"
1200.if !"\\*([A"" \\*([A,
1201.if !"\\*([T"" \\f2\\*([T\\f1\c
1202.if !"\\*([T"" .if !"\\*([O"" ,\ \"
1203.ie !"\\*([O"" \\*([O
1204.el .if !"\\*([T"" \&.
1205.if !"\\*([D"" \\*([D.
1206.@p
1207.)f
1208..
4d3e9548 1209.
92d0a6a6
JR
1210.de [1 \" --- journal article
1211.(f
1212.ip "\\*([F.\0"
1213\\*([A,
1214.if !"\\*([T"" \\*(lq\\*([T,\\*(rq
1215.if "\\*([V"" \\f2\\*([J\\f1,
1216.if !"\\*([V"" \\f2\\*([J\\f1
1217.if !"\\*([V"" \\f3\\*([V\\f1\c
1218.if !"\\*([N"" (\\*([N)\c
1219.if !"\\*([P"" \
1220\{\
1221. ie \\n([P>0 \ pp.\&
1222. el \ p.\&
1223\\*([P
1224.\}
1225.if !"\\*([I"" .if "\\*([R"" \\*([I,
1226(\\*([D).
1227.if !"\\*([O"" \\*([O
1228.)f
1229..
4d3e9548 1230.
92d0a6a6
JR
1231.de [2 \" --- book
1232.(f
1233.ip "\\*([F.\0"
1234\\*([A, \\f2\\*([T,\\f1
1235\\*([I\c
1236.if !"\\*([C"" , \\*([C\c
1237 (\\*([D).
1238.if !"\\*([G"" Gov't. ordering no. \\*([G
1239.if !"\\*([O"" \\*([O
1240.)f
1241..
4d3e9548 1242.
92d0a6a6
JR
1243.de [3 \" --- article in book
1244.(f
1245.ip "\\*([F.\0"
1246\\*([A, \\*(lq\\*([T,\\*(rq
1247.if !"\\*([P"" pp. \\*([P
1248in \\f2\\*([B\\f1, \c
1249.if !"\\*([E"" ed. \\*([E, \c
1250.if !"\\*([I"" \\*([I\c
1251.if !"\\*([C"" , \\*([C\c
1252 (\\*([D).
1253.if !"\\*([O"" \\*([O
1254.)f
1255..
4d3e9548 1256.
92d0a6a6
JR
1257.de [4 \" --- report
1258.(f
1259.ip "\\*([F.\0"
1260\\*([A, \\*(lq\\*([T,\\*(rq
1261\\*([R\c
1262.if !"\\*([G"" \& (\\*([G)\c
1263.if !"\\*([I"" , \\*([I\c
1264.if !"\\*([C"" , \\*([C\c
1265 (\\*([D).
1266.if !"\\*([O"" \\*([O
1267.)f
1268..
4d3e9548 1269.
92d0a6a6
JR
1270.de [5 \" --- tm style
1271.(f
1272.ip "\\*([F.\0"
1273\\*([A, \\f2\\*([T\\f1,
1274.ie \\n(TN \\*([M.
1275.el Bell Laboratories internal memorandum (\\*([D).
1276.)f
1277..
4d3e9548 1278.
92d0a6a6
JR
1279.de ]<
1280.$p References
1281.lp
1282.rm (f )f
1283..
4d3e9548 1284.
92d0a6a6
JR
1285.de ]>
1286.sp
1287..
4d3e9548 1288.
92d0a6a6
JR
1289.de ]-
1290.rm [V [P [A [T [N [C [B [O [R [I [E [D
1291..
4d3e9548 1292.
92d0a6a6
JR
1293.ie \n(.V<1v \
1294\{\
1295. ds [. \s-2\v'-.4m'\f1
1296. ds .] \v'.4m'\s+2\fP
1297.\}
1298.el \
1299\{\
1300. ds [. " [
1301. ds .] ]
1302.\}
4d3e9548 1303.
92d0a6a6
JR
1304.\"
1305.\" IDEAL
1306.\"
1307.de IS \" *** start ideal picture
1308.nr g7 \\n(.u
1309.ls 1
1310..
4d3e9548 1311.
92d0a6a6
JR
1312.de IF
1313.if \\n(g7 .fi
1314.ls
1315..
4d3e9548 1316.
92d0a6a6
JR
1317.de IE \" *** end ideal picture
1318.if \\n(g7 .fi
1319.ls
1320..
4d3e9548 1321.
92d0a6a6
JR
1322.\"
1323.\" PIC
1324.\"
1325.de PS \" *** start picture: $1=height, $2=width in units or inches
1326.sp 0.3
4d3e9548 1327.do HTML-IMAGE
92d0a6a6
JR
1328.nr g7 \\$2
1329.in (u;\\n(.l-\\n(g7>?0/2)
1330.ne \\$1u
1331.nr g7 \\n(.u
1332.ls 1
1333..
4d3e9548 1334.
92d0a6a6
JR
1335.de PE \" *** end picture
1336.ls
1337.in
1338.if \\n(g7 .fi
4d3e9548 1339.do HTML-IMAGE-END
92d0a6a6
JR
1340.sp .6
1341..
4d3e9548 1342.
92d0a6a6
JR
1343.\"
1344.\" GREMLIN
1345.\"
1346.de GS \" *** start gremlin picture
4d3e9548
JL
1347.ie '\*(.T'html' \
1348\{\
1349. ie "\\$1"L" .do HTML-IMAGE-LEFT
1350. el .ie "\\$1"R" .do HTML-IMAGE-RIGHT
1351. el .do HTML-IMAGE
1352.\}
1353.el \
1354\{\
1355. nr g7 (\\n(.lu-\\n(g1u)/2u
1356. if "\\$1"L" .nr g7 \\n(.iu
1357. if "\\$1"R" .nr g7 \\n(.lu-\\n(g1u
1358. in \\n(g7u
1359. nr g7 \\n(.u
1360. ls 1
1361. nf
1362. ne \\n(g2u
1363.\}
92d0a6a6 1364..
4d3e9548 1365.
92d0a6a6 1366.de GE \" *** end gremlin picture
4d3e9548
JL
1367.ie '\*(.T'html' .do HTML-IMAGE-END
1368.el \
1369\{\
1370. GF
1371. sp .6
1372.\}
92d0a6a6 1373..
4d3e9548 1374.
92d0a6a6
JR
1375.de GF \" *** finish gremlin picture; stay at top
1376.ls
1377.in
1378.if \\n(g7 .fi
1379..
4d3e9548
JL
1380.
1381.
92d0a6a6 1382.\" *** FONT AIDS ***
4d3e9548
JL
1383.
1384.
92d0a6a6
JR
1385.de sz \" *** set point size and vertical spacing
1386.ps \\$1
1387.if \\n($r .@v
1388.vs \\n(.sp*\\n($vu/100u \" default vs at pointsize + 20%
1389..
4d3e9548 1390.
92d0a6a6
JR
1391.de @v \" --- possibly set $v from $r
1392.if (1i>=240u)&(1p<=\\n($r)&(\\n($r<=4p) .nr $v \\n($r00/1p
1393..
4d3e9548 1394.
92d0a6a6
JR
1395.de @V \" --- possibly set $V from $R
1396.if (1i>=240u)&(1p<=\\n($R)&(\\n($R<=4p) .nr $V \\n($R00/1p
1397..
4d3e9548 1398.
92d0a6a6
JR
1399.de @E \" --- store in _F argument to \f for restoring font
1400.ie \\n(.f<10 \
1401. ds _F \\n(.f
1402.el \
1403\{\
1404. ie \\n(.f<100&\n(.g \
1405. ds _F (\\n(.f
1406. el \
1407. ds _F P
1408.\}
1409..
4d3e9548 1410.
92d0a6a6 1411.de r \" *** enter roman font
4d3e9548 1412.do check_need_title
92d0a6a6
JR
1413.@E
1414.ft 1
1415.if \\n(.$ \&\\$1\f\\*(_F\\$2
4d3e9548 1416.do check_need_title
92d0a6a6 1417..
4d3e9548 1418.
92d0a6a6 1419.de i \" *** enter italic
4d3e9548 1420.do check_need_title
92d0a6a6
JR
1421.@E
1422.ft 2
1423.if \\n(.$ \&\\$1\f\\*(_F\\$2
4d3e9548 1424.do check_need_title
92d0a6a6 1425..
4d3e9548 1426.
92d0a6a6 1427.de b \" *** enter boldface
4d3e9548 1428.do check_need_title
92d0a6a6
JR
1429.@E
1430.ft 3
1431.if \\n(.$ \&\\$1\f\\*(_F\\$2
4d3e9548 1432.do check_need_title
92d0a6a6 1433..
4d3e9548 1434.
92d0a6a6 1435.de rb \" *** enter real boldface
4d3e9548 1436.do check_need_title
92d0a6a6
JR
1437.@E
1438.ft 3
1439.if \\n(.$ \&\\$1\f\\*(_F\\$2
4d3e9548 1440.do check_need_title
92d0a6a6 1441..
4d3e9548 1442.
92d0a6a6 1443.de bi \" *** enter bold italic
4d3e9548 1444.do check_need_title
92d0a6a6
JR
1445.@E
1446.ft 4
1447.if \\n(.$ \&\\$1\f\\*(_F\\$2
4d3e9548 1448.do check_need_title
92d0a6a6 1449..
4d3e9548 1450.
92d0a6a6
JR
1451.de u \" *** enter underlined word
1452\&\\$1\l'|0\(ul'\\$2
1453..
4d3e9548 1454.
92d0a6a6
JR
1455.\" a better version of u
1456.if !\n(.g .ig
1457.de u
1458\Z'\\$1'\v'.25m'\D'l \w'\\$1'u 0'\v'-.25m'\\$2
1459..
4d3e9548 1460.
92d0a6a6
JR
1461.de q \" *** enter quoted word
1462\&\\*(lq\\$1\\*(rq\\$2
1463..
4d3e9548 1464.
92d0a6a6 1465.de bx \" *** enter boxed word
4d3e9548
JL
1466.ie '\*(.T'html' \\$1\\$2
1467.el \k~\(br\|\\$1\|\(br\l'|\\n~u\(rn'\l'|\\n~u\(ul'\^\\$2
92d0a6a6 1468..
4d3e9548 1469.
92d0a6a6
JR
1470.de sm \" *** print in smaller font
1471\s-1\\$1\\s0\\$2
1472..
4d3e9548 1473.
92d0a6a6
JR
1474.de @F \" --- change font (0 -> no change)
1475.nr ~ \\$1
1476.if \\n~>0 \
1477. ft \\n~
1478.rr ~
1479..
4d3e9548
JL
1480.
1481.
92d0a6a6 1482.\" *** FOOTNOTING ***
4d3e9548
JL
1483.
1484.
92d0a6a6
JR
1485.de (f \" *** begin footnote
1486.ec
1487.if "\\n(.z"|f" .tm Line \\n(c. -- Invalid footnote nesting
1488.ie "\\n(.z"" \
1489\{\
1490. nr _D \\n(dn
1491. nr _0 1v+\\n(nlu
1492. ev 2
1493. da |f
1494. in 0
1495. xl \\n($lu-\\n(fuu
1496. @F \\n(ff
1497. sz \\n(fp
1498. vs \\n(.sp*\\n($Vu/100u
1499. if !\\n(?f \
1500\{\
1501. nr _b +1v \" allow space for $s
1502. $s
1503. \}
1504. br
1505. if \\n(.p-\\n(_b-\\n(_0-\\n(.h-1v-\\n(fs<0 \
1506\{\
1507. da\" \" won't fit on page at all
1508. bc
1509. if !\\n(?f \
1510. rm |f
1511. da |f
1512.\" next five lines could be dropped if headers had their own environment
1513. in 0 \" reset everything from .bc
1514. xl \\n($lu-\\n(fuu
1515. @F \\n(ff
1516. sz \\n(fp
1517. vs \\n(.sp*\\n($Vu/100u
1518. if !\\n(?f \
1519. $s
1520. br
1521. \}
1522. rr _0
1523. sp \\n(fsu
1524. nr ?f 1
1525. fi
1526. if !"\\$1"_" \
1527. ti \\n(fiu
1528. if \n@>2 .tm << (f $f=\\n($f
1529.\}
1530.el \
1531\{\
1532. ev 2
1533. in 0
1534. xl \\n($lu-\\n(fuu
1535. @F \\n(ff
1536. sz \\n(fp
1537. vs \\n(.sp*\\n($Vu/100u
1538. fi
1539\!.(f \\$1
1540\!.@N
1541.\}
1542..
4d3e9548 1543.
92d0a6a6
JR
1544.de @N \" --- set no fill mode in the top-level diversion
1545.ie "\\n(.z"" .nf
1546.el \!.@N
1547..
4d3e9548 1548.
92d0a6a6
JR
1549.de )f \" *** end footnote
1550.ie "\\n(.z"|f" \
1551\{\
1552. if \\n* \
1553. nr $f +1
1554. ds * \\*{\\n($f\\*}\k*
1555. nr * 0
1556. in 0
1557. da
1558. ev
1559. if \\n(_w<\\n(dl \
1560. nr _w \\n(dl \" compute maximum fn width
1561. nr _b +\\n(dn
1562. ch @f -\\n(_bu
1563. if \\n(.p-\\n(_b<=\\n(nl \
1564. ch @f \\n(nlu+\n(.Vu
1565. nr dn \\n(_D
1566. rr _D
1567.\}
1568.el \
1569\{\
1570. br
1571\!.)f
1572. ev
1573.\}
1574..
4d3e9548 1575.
92d0a6a6
JR
1576.@R ff
1577.if \n(ff<=0 \
1578. nr ff 1 \" footnote font: Times Roman
1579.@R fp
1580.if \n(fp<=0 \
1581. nr fp 8 \" footnote pointsize
4d3e9548 1582.
92d0a6a6
JR
1583.de $s \" $$$ footnote separator
1584\l'2i'
1585..
4d3e9548
JL
1586.
1587.
92d0a6a6 1588.\" *** DELAYED TEXT ***
4d3e9548
JL
1589.
1590.
92d0a6a6
JR
1591.de (d \" *** begin delayed text
1592.am |d )d
1593.sp \\n(bsu
1594..
4d3e9548 1595.
92d0a6a6
JR
1596.de )d \" *** end delayed text
1597.if \\n# \
1598. nr $d +1
1599.ds # [\\n($d]\k#
1600.rr #
1601..
4d3e9548 1602.
92d0a6a6
JR
1603.de pd \" *** print delayed text
1604.|d
1605.rm |d
1606.nr $d 1 1
1607.ds # [1]\k#
1608..
4d3e9548
JL
1609.
1610.
92d0a6a6 1611.\" *** INDEXES (TABLE OF CONTENTS) ***
4d3e9548
JL
1612.
1613.
92d0a6a6 1614.nr _x 0 1
4d3e9548 1615.do nr _xn 0
92d0a6a6 1616.af _x a
4d3e9548 1617.
92d0a6a6
JR
1618.de (x \" *** begin index entry
1619.if \n@>4 .tm >> (x, .z=\\n(.z
1620.ds |X x
1621.if \\n(.$>0 \
1622. ds |X \\$1
1623.ie "\\n(.z"" \
1624. nr _z 0
1625.el \
1626. nr _z 1
1627.@\\n(_z
1628..
4d3e9548 1629.
92d0a6a6
JR
1630.de @0 \" --- finish (x if no current diversion
1631.am %\\*(|X )x
1632.sp \\n(xsu
1633.ti -\\n(piu
1634..
4d3e9548 1635.
92d0a6a6
JR
1636.de @1 \" --- finish (x if current diversion
1637.if "\\n(_x"z" .nr _x 0
1638.de =\\n+(_x )x
1639..
4d3e9548 1640.
92d0a6a6
JR
1641.de )x \" *** end index entry
1642.if \n@>4 .tm >> )x, .z=\\n(.z
1643.ie "\\n(.z"" \
1644\{\
1645. ds |x \\n%
1646. if \\n(.$>0 \
1647. ds |x \\$1
1648. if "\\*(|x"_" \
1649. ig ..
1650. am %\\*(|X ..
1651. if \w"\\$2">(\\n(.l-\\n(.i-\\n(.k) \
1652. ti +\\n(xuu
1653\\\\a\\\\t\\$2\\*(|x
1654...
1655. rm |x
1656. rm |X
1657.\}
1658.el \
1659\{\
1660\!.(x \\*(|X
1661\!\\\\*(=\\n(_x\\\\
1662\!.)x \\$1 \\$2
1663\!.rm =\\n(_x
1664.\}
1665..
4d3e9548 1666.
92d0a6a6
JR
1667.de xp \" *** print the index
1668.br
1669.@C 2
1670.ls 1
1671.vs \\n(.sp*\\n($Vu/100u
1672.fi
1673.in +\\n(piu
1674.ds |X x
1675.if \\n(.$>0 \
1676. ds |X \\$1
1677.xl -(\\n(xuu+\w'...'u)
1678.di |x
1679.%\\*(|X
1680.br
1681.di
1682.rm %\\*(|X
1683.xl \\n($lu
1684.rm |X
1685.ev
1686.nf
1687.in 0
1688.ta \\n(.lu-\\n(xuuR \\n(.luR
1689.|x
1690.fi
1691.in
1692.rm |x
1693..
4d3e9548
JL
1694.
1695.
1696.\" *** HTML VERSIONS OF .x(, .x), AND .xp ***
1697.
1698.
1699.de (x-html \" --- create TAG and divert text
1700.nr _x +1
1701.do nr _xn +1
1702.do TAG "_x\\n[_x]
1703.br
1704.do di |x\\n[_xn]
1705.br
1706..
1707.
1708.de )x-html \" --- end diversion
1709.br
1710.di
1711..
1712.
1713.de xp-html \" --- create list of links
1714.do nr _xx 1
1715.br
1716.do ev xp-html-ev
1717.sp
1718.do ULS
1719.do while \\n[_xx]<=\\n[_xn] \
1720\{\
1721. br
1722. do unformat |x\\n[_xx]
1723. do di xp-html-div
1724. br
1725. ll 100i
1726. fi
1727. do |x\\n[_xx]
1728. br
1729. di
1730. do asciify xp-html-div
1731. do rm xp-html-as
1732. do as xp-html-as #
1733. do as xp-html-as _x\\n[_xx]
1734. ll
1735. LI
1736. do URL \\*[xp-html-as] "\\*[xp-html-div]
1737. do rm xp-html-as
1738. do nr _xx +1
1739.\}
1740.do ULE
1741.sp
1742.ev
1743..
1744.
1745.if '\*(.T'html' \
1746\{\
1747. rm (x
1748. do als (x (x-html
1749. rm )x
1750. do als )x )x-html
1751. rm xp
1752. do als xp xp-html
1753.\}
1754.
1755.
1756.\" *** CHAPTERS AND TITLES ***
1757.
1758.
1759.de +c \" *** begin chapter
92d0a6a6
JR
1760.ep\" \" force out footnotes
1761.if \\n(?o:\\n(?a \
1762\{\
1763. bp \" force out a table or more footnote
1764. rs
1765. ep
1766.\}
1767.nr ?C 1
1768.nr $f 1 1
1769.ds * \\*{1\\*}\k*
1770.if \\n(?R \
1771. pn 1
1772.bp
1773.in \\n($iu \" reset the indent
1774.rs
1775.ie \\n(.$ \
1776. $c "\\$1"
1777.el \
1778. sp 3
1779..
4d3e9548 1780.
92d0a6a6
JR
1781.de ++ \" *** declare chapter type
1782.nr _0 0
1783.if "\\$1"C" \
1784. nr _0 1 \" chapter
1785.if "\\$1"RC" \
1786. nr _0 11 \" renumbered chapter
1787.if "\\$1"A" \
1788. nr _0 2 \" appendix
1789.if "\\$1"RA" \
1790. nr _0 12 \" renumbered appendix
1791.if "\\$1"P" \
1792. nr _0 3 \" preliminary material
1793.if "\\$1"B" \
1794. nr _0 4 \" bibliographic material
1795.if "\\$1"AB" \
1796. nr _0 5 \" abstract
1797.if \\n(_0=0 \
1798. tm Line \\n(c. -- Bad mode to .++
1799.nr ?R 0
1800.if \\n(_0>10 \
1801.\{
1802. nr ?R 1
1803. nr _0 -10
1804.\}
1805.nr ch 0 1
1806.if (\\n(_0=3):(\\n(_0=5) \
1807. pn 1 \" must do before .ep
1808.if !\\n(_0=\\n(_M .if \\n(_M=3 \
1809. pn 1 \" must do before .ep
1810.ep\" \" end page for correct page number types
1811.if \\n(_0=1 \
1812\{\
1813. af ch 1
1814. af % 1
1815.\}
1816.if \\n(_0=2 \
1817\{\
1818. af ch A
1819. af % 1
1820.\}
1821.if \\n(_0=3 \
1822. af % i
1823.if \\n(_0=4 \
1824. af % 1
1825.if \\n(_0=5 \
1826. af % 1
1827.if \\n(.$>1 \
1828. he \\$2
1829.nr _M \\n(_0
1830.rr _0
1831..
4d3e9548 1832.
92d0a6a6
JR
1833.de $c \" $$$ print chapter title
1834.sz 12
1835.ft 3
1836.ce 1000
1837.if \\n(_M<3 \
1838. nr ch +1
1839.ie \\n(_M=1 CHAPTER\ \ \\n(ch
1840.el .if \\n(_M=2 APPENDIX\ \ \\n(ch
1841.if \w"\\$1" .sp 3-\\n(.L
1842.if \w"\\$1" \\$1
1843.if (\\n(_M<3):(\w"\\$1") \
1844. sp 4-\\n(.L
1845.ce 0
1846.ft
1847.sz
1848.ie \\n(_M=1 \
1849. $C Chapter \\n(ch "\\$1"
1850.el .if \\n(_M=2 \
1851. $C Appendix \\n(ch "\\$1"
1852..
4d3e9548 1853.
92d0a6a6
JR
1854.de tp \" *** title page
1855.hx
1856.bp
1857.br
1858.rs
1859.pn \\n%
1860..
4d3e9548 1861.
92d0a6a6
JR
1862.\" *** DATES ***
1863.if \n(mo=1 .ds mo January
1864.if \n(mo=2 .ds mo February
1865.if \n(mo=3 .ds mo March
1866.if \n(mo=4 .ds mo April
1867.if \n(mo=5 .ds mo May
1868.if \n(mo=6 .ds mo June
1869.if \n(mo=7 .ds mo July
1870.if \n(mo=8 .ds mo August
1871.if \n(mo=9 .ds mo September
1872.if \n(mo=10 .ds mo October
1873.if \n(mo=11 .ds mo November
1874.if \n(mo=12 .ds mo December
1875.if \n(dw=1 .ds dw Sunday
1876.if \n(dw=2 .ds dw Monday
1877.if \n(dw=3 .ds dw Tuesday
1878.if \n(dw=4 .ds dw Wednesday
1879.if \n(dw=5 .ds dw Thursday
1880.if \n(dw=6 .ds dw Friday
1881.if \n(dw=7 .ds dw Saturday
1882.nr y2 \n(yr%100
1883.af y2 00
1884.nr y4 \n(yr+1900
1885.ds td \*(mo \n(dy, \n(y4
4d3e9548
JL
1886.
1887.
92d0a6a6 1888.\" *** PARAMETRIC INITIALIZATIONS ***
4d3e9548
JL
1889.
1890.
92d0a6a6
JR
1891.rr x
1892.nr $v \n(.v00+\n(.sp-1/\n(.sp \" vs as percentage of ps for .sz request
1893.nr $V \n($v \" same for displays & footnotes
1894.nr hm 4v \" header margin
1895.nr tm 7v \" top margin
1896.nr bm 6v \" bottom margin
1897.nr fm 3v \" footer margin
1898.nr tf 3 \" title font: (real) Times Bold
1899.nr tp 10 \" title point size
1900.hy 14
1901.nr bi 4m \" indent for blocks
1902.nr pi 5n \" indent for paragraphs
1903.nr pf 1 \" normal text font
1904.nr pp 10 \" normal text point size
1905.nr qi 4n \" indent for quotes
1906.nr qp -1 \" down one point
1907.nr ii 5n \" indent for .ip's and .np's
1908.nr $m 1 \" max number of columns
1909.nr $s 4n \" column separation
1910.nr sf 3 \" section font -- Times Bold
1911.nr sp 10 \" section title pointsize
1912.nr ss 12p \" section prespacing
1913.nr si 0 \" section indent
4d3e9548
JL
1914.
1915.
92d0a6a6 1916.\" *** OTHER INITIALIZATION ***
4d3e9548
JL
1917.
1918.
92d0a6a6
JR
1919.\" GNU pic sets this register to 1, to indicate that \x should not be used.
1920.@R 0x
1921.ds { \v'-0.4m'\x'\\n(0x=0*-0.2m'\s-3
1922.ds } \s0\v'0.4m'
1923.\" for compatibility with traditional -me
1924.\" (the first will work only in compatibility mode)
1925.ds [ \*{
1926.ds ] \*}
1927.ds < \v'0.4m'\x'\\n(0x=0*0.2m'\s-3
1928.ds > \s0\v'-0.4m'
1929.ds - \(em
1930.\" Avoid warnings from groff -ww.
1931.@S |0
1932.@S |1
1933.@S |2
1934.@S |3
1935.@S $H
1936.@S $0
1937.@S $1
1938.@S $2
1939.@S $3
1940.@S $4
1941.@S $5
1942.@S $6
1943.@S $7
1944.@S $8
1945.@S $9
1946.@S ..
4d3e9548 1947.
92d0a6a6
JR
1948.@R po\" \" simulated page offset
1949.@R $0\" \" section depth
1950.@R $i\" \" paragraph base indent
1951.@R $p\" \" numbered paragraph number
1952.@R $r\" \" ratio of vs to ps (may override $v)
1953.@R $R\" \" same for displays (may override $V)
1954.@R df\" \" display font: same as surrounding text
1955.@R so\" \" additional section title offset
1956.@R fu\" \" footnote undent
1957.@R bt\" \" block keep threshold
1958.@R *\" \" has \** been referenced?
1959.@R ?a\" \" pending floating keep at page top?
1960.@R ?b\" \" pending floating keep at page bottom?
1961.@R ?C\" \" at chapter header?
1962.@R ?e\" \" in equation?
1963.@R ?H\" \" suppress headers and footers next page?
1964.@R ?I\" \" has the header trap been sprung?
1965.@R ?n\" \" n1 mode?
1966.@R ?o\" \" footnote overflow?
1967.@R ?R\" \" renumbered chapter?
1968.@R ?s\" \" skip next page?
1969.@R ?T\" \" inside .TS H?
1970.@R ?W\" \" wide floating keep at page bottom?
1971.@R ?w\" \" wide floating keep at page top?
4d3e9548 1972.
92d0a6a6
JR
1973.nr fi 0.3i
1974.nr _o \n(.o
1975.nr $b 3 \" bold
1976.nr ps 0.35v
1977.if \n(ps<\n(.V .nr ps \n(.V
1978.nr bs \n(ps \" block pre/post spacing
1979.nr qs \n(ps \" quote pre/post spacing
1980.nr zs 1v \" float-block pre/postspacing
1981.nr xs 0.2v \" index prespacing
1982.nr xu 0.5i \" index undent
1983.nr fs 0.2v \" footnote prespacing
1984.nr es 0.5v \" equation pre/postspacing
1985.if \n(es<\n(.V .nr es \n(.V
1986.wh 0 @h \" set header
1987.nr $l \n(.lu \" line length
1988.nr _L \n(.lu \" line length of page
1989.nr $c 1 \" current column number
1990.nr $f 1 1 \" footnote number
1991.ds * \*{1\*}\k*\" \" footnote "name"
1992.nr $d 1 1 \" delayed text number
1993.ds # [1]\k#\" \" delayed text "name"
1994.nr _M 1 \" chapter mode is chapter
1995.ds lq \(lq\" \" left quote
1996.ds rq \(rq\" \" right quote
1997.em @z
4d3e9548
JL
1998.
1999.
92d0a6a6 2000.\" *** FOREIGN LETTERS AND SPECIAL CHARACTERS ***
4d3e9548
JL
2001.
2002.
92d0a6a6
JR
2003.ds #h ((1u-(\\\\n(.fu%2u))*0.13m)
2004.ds #v 0.6m
4d3e9548 2005.
92d0a6a6
JR
2006.\" \" accents
2007.ds ' \k_\h'-(\\n(.wu*8/10-\*(#h)'\(aa\h'|\\n_u'
2008.ds ` \k_\h'-(\\n(.wu*7/10-\*(#h)'\(ga\h'|\\n_u'
4d3e9548 2009.
92d0a6a6
JR
2010.\" \" umlaut
2011.ds : \k_\h'-(\\n(.wu*8/10-\*(#h+0.1m)'\v'-\*(#v'\z.\h'0.2m'.\h'|\\n_u'\v'\*(#v'
4d3e9548 2012.
92d0a6a6
JR
2013.\" \" circumflex and tilde
2014.ds ^ \k_\h'-(\\n(.wu-\*(#h-0.05m)'^\h'|\\n_u'
2015.ds ~ \k_\h'-(\\n(.wu-\*(#h-0.05m)'~\h'|\\n_u'
4d3e9548 2016.
92d0a6a6
JR
2017.\" \" cedilla and czech
2018.ds , \k_\h'-(\\n(.wu)',\h'|\\n_u'
2019.ds v \k_\h'-(\\n(.wu*9/10-\*(#h)'\v'-\*(#v'\s-4v\s0\v'\*(#v'\h'|\\n_u'
4d3e9548 2020.
92d0a6a6
JR
2021.\" \" Norwegian A or angstrom
2022.ds o \k_\h'-(\\n(.wu+\w'\(de'u-\*(#h)/2u'\v'-0.4n'\z\(de\v'0.4n'\h'|\\n_u'
4d3e9548 2023.
92d0a6a6
JR
2024.\" \" there exists, for all
2025.ds qe \s-2\v'0.45m'\z\(em\v'-0.625m'\z\(em\v'-0.625m'\(em\v'0.8m'\s0\h'-0.1m'\v'-0.05m'\(br\v'0.05m'\h'0.1m'
2026.ds qa \z\e\h'0.35m'\z\(sl\h'-0.33m'\v'-0.3m'\s-4\(em\s0\v'0.3m'\h'0.15m'
2027.rm #h #v
2028.ll 6.0i
2029.lt 6.0i
4d3e9548 2030.
92d0a6a6
JR
2031.de @U
2032.tm The \\$1 macro has been removed from this version of the -me macros.
2033..
4d3e9548 2034.
92d0a6a6
JR
2035.de lo
2036.@U lo
2037..
4d3e9548 2038.
92d0a6a6
JR
2039.de th
2040.@U th
2041..
4d3e9548 2042.
92d0a6a6
JR
2043.de ac
2044.@U ac
2045..
4d3e9548
JL
2046.
2047.\" EOF