move redist stuff to share/copyr directory
[unix-history] / usr / src / share / me / tmac.orig_me
CommitLineData
84f25a89 1.nr _0 \n(.c
0a1cd3e4 2.\" Copyright (c) 1988 The Regents of the University of California.
70e37822
KB
3.\" All rights reserved.
4.\"
5.\" Redistribution and use in source and binary forms are permitted
0a1cd3e4
KB
6.\" provided that the above copyright notice and this paragraph are
7.\" duplicated in all such forms and that any documentation,
8.\" advertising materials, and other materials related to such
9.\" distribution and use acknowledge that the software was developed
10.\" by the University of California, Berkeley. The name of the
11.\" University may not be used to endorse or promote products derived
12.\" from this software without specific prior written permission.
13.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14.\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15.\" WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16.\"
964b9ef7 17.\" @(#)tmac.orig_me 2.33 (Berkeley) %G%
0a1cd3e4 18.\"
a3fd506b 19.\" %beginstrip%
70e37822 20.\"
84f25a89
EA
21.\"**********************************************************************
22.\"* *
23.\"* ****** - M E N R O F F / T R O F F M A C R O S ****** *
24.\"* *
25.\"* Produced for your edification and enjoyment by: *
26.\"* Eric Allman *
27.\"* Electronics Research Laboratory *
28.\"* U.C. Berkeley. *
7729eef3
EA
29.\"* current address: *
30.\"* Britton-Lee, Inc. *
b4c5d7ad 31.\"* 1919 Addison Street Suite 105 *
a61ea4a3 32.\"* Berkeley, California 94704 *
84f25a89 33.\"* *
964b9ef7 34.\"* VERSION 2.33 First Release: 11 Sept 1978 *
84f25a89
EA
35.\"* See file \*(||/revisions for revision history *
36.\"* *
37.\"* Documentation is available. *
38.\"* *
39.\"**********************************************************************
6c97ff5a 40.\"
84f25a89
EA
41.\" Code on .de commands:
42.\" *** a user interface macro.
43.\" &&& a user interface macro which is redefined
44.\" when used to be the real thing.
45.\" $$$ a macro which may be redefined by the user
46.\" to provide variant functions.
47.\" --- an internal macro.
48.\"
49.if !\n(.V .tm You are using the wrong version of NROFF/TROFF!!
50.if !\n(.V .tm This macro package works only on the version seven
51.if !\n(.V .tm release of NROFF and TROFF.
52.if !\n(.V .ex
53.if \n(pf \
54. nx \*(||/null.me
55.\"\f *** INTERNAL GP MACROS ***
56.de @C \" --- change ev's, taking info with us
57.nr _S \\n(.s
58.nr _V \\n(.v
59.nr _F \\n(.f
60.nr _I \\n(.i
61.ev \\$1
59ed1d66 62.ps \\n(_S
84f25a89
EA
63.vs \\n(_Vu
64.ft \\n(_F
65'in \\n(_Iu
66.xl \\n($lu
67.lt \\n($lu
68.rr _S
69.rr _V
70.rr _F
71.rr _I
72.ls 1
73'ce 0
74..
75.de @D \" --- determine display type (Indent, Left, Center)
76.ds |p "\\$3
77.nr _d \\$1
78.ie "\\$2"C" \
79. nr _d 1
80.el .ie "\\$2"L" \
81. nr _d 2
82.el .ie "\\$2"I" \
83. nr _d 3
84.el .ie "\\$2"M" \
85. nr _d 4
86.el \
87. ds |p "\\$2
88..
89.de @z \" --- end macro
799e5a57 90.if \n@>1 .tm >> @z, .z=\\n(.z ?a=\\n(?a
84f25a89
EA
91.if !"\\n(.z"" \
92\{\
93. tm Line \\n(c. -- Unclosed block, footnote, or other diversion (\\n(.z)
94. di
95. ex
96.\}
97.if \\n(?a \
98. bp \" force out final table
99.rm bp
799e5a57 100.rm @b\" \" don't start another page
84f25a89
EA
101.if t \
102. wh -1p @m
103.br
799e5a57 104.if \n@>1 .tm << @z
84f25a89
EA
105..
106.de @I \" --- initialize processor
107.rm th
108.rm ac
109.rm lo
110.rm sc
111.rm @I
112..
113.\"\f *** STANDARD HEADERS AND FOOTERS ***
114.de he \" *** define header
115.ie !\\n(.$ \
116\{\
117. rm |4
118. rm |5
119.\}
120.el \
121\{\
122. ds |4 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
123. ds |5 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
124.\}
125..
126.de eh \" *** define even header
127.ie !\\n(.$ \
128. rm |4
129.el \
130. ds |4 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
131..
132.de oh \" *** define odd header
133.ie !\\n(.$ \
134. rm |5
135.el \
136. ds |5 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
137..
138.de fo \" *** define footer
139.ie !\\n(.$ \
140\{\
141. rm |6
142. rm |7
143.\}
144.el \
145\{\
146. ds |6 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
147. ds |7 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
148.\}
149..
150.de ef \" *** define even foot
151.ie !\\n(.$ \
152. rm |6
153.el \
154. ds |6 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
155..
156.de of \" *** define odd footer
157.ie !\\n(.$ \
158. rm |7
159.el \
160. ds |7 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
161..
162.de ep \" *** end page (must always be followed by a .bp)
163.if \\n(nl>0 \
164\{\
165. wh 0
166. rs
167. @b
168.\}
169..
170.\"\f *** INTERNAL HEADER AND FOOTER MACROS ***
171.de @h \" --- header
799e5a57 172.if \n@>1 .tm >> @h %=\\n% ?a=\\n(?a ?b=\\n(?b ?w=\\n(?w
84f25a89
EA
173.if (\\n(.i+\\n(.o)>=\\n(.l \
174. tm Line \\n(c. -- Offset + indent exceeds line length
175.if t .if (\\n(.l+\\n(.o)>7.75i \
176. tm Line \\n(c. -- Offset + line length exceeds paper width
177.\" initialize a pile of junk
178.nr ?h \\n(?H \" transfer "next page" to "this page"
179.rr ?H
180.nr ?c \\n(?C
181.rr ?C
182.rn |4 |0
183.rn |5 |1
184.rn |6 |2
185.rn |7 |3
186.nr _w 0 \" reset max footnote width
9271e56c 187.nr ?W 0 \" no wide floats this page (yet)
84f25a89
EA
188.nr ?I 1
189.\" begin actual header stuff
190.ev 2
191.rs
192.if t .@m \" output cut mark
193.if \\n(hm>0 \
194. sp |\\n(hmu \" move to header position
84f25a89
EA
195.@t $h \" output header title
196.if \\n(tm<=0 \
197. nr tm \n(.Vu
198.sp |\\n(tmu \" move to top of text
199.ev
200.mk _k \" for columned output
201.if \\n(?n .nm 1 \" restore line numbering if n1 mode
202.nr $c 1 \" set first column
203.if \n@>4 .tm -- @h >> .ns nl=\\n(nl %=\\n% _k=\\n(_k tm=\\n(tm
204.ie \\n(?s \
205\{\
206. rr ?s
207. rs
208' @b
209.\}
210.el \
211. @n \" begin the column
799e5a57 212.if \n@>2 .tm << @h
84f25a89 213..
8f2cf3db 214.if \nv=2 \
5fcae4d3
EA
215\{\
216. de @m \" --- output cut mark (only on C/A/T-style)
217. @O 0
218. lt 7.5i
219. tl '\(rn''\(rn'
220. @O
221. lt
84f25a89 222..
5fcae4d3 223.\}
84f25a89
EA
224.de @n \" --- new column or page
225.if \n@>3 .tm >> @n nl=\\n(nl %=\\n% ?f=\\n(?f ?o=\\n(?o
226.if \\n(bm<=0 \
227. nr bm \\n(.Vu
9271e56c 228.if (\\n(_w<=\\n($l)&(\\n(?W=0) \
84f25a89
EA
229\{\
230. nr _b (\\n(ppu*\\n($ru)/2u \" compute fudge factor (must be < 1P)
231. if \\n(_bu>((\\n(bmu-\\n(fmu-(\\n(tpu*\\n($ru))/2u) \
232. nr _b (\\n(ppu*\\n($ru)-\n(.Vu
233. nr _b +\\n(bmu
234.\}
235.nr _B \\n(_bu
236.ch @f
237.wh -\\n(_bu @f
601202e1
EA
238.nr _b +(\\n(ppu*\\n($ru) \" add 1 paragraph v in case of sweep past
239.if \n@>2 .tm @n .p=\\n(.p bm=\\n(bm _b=\\n(_b _B=\\n(_B
84f25a89
EA
240.nr ?f 0 \" reset footnote flag
241.if \\n(?o \
242\{\
243. (f _ \" reprocess footnotes which run off page
244. nf
245. |o
246. fi
247. )f
248. rm |o
249.\}
250.nr ?o 0
251.if \\n(?T \
252\{\
253. nr _i \\n(.i
254. in \\n($iu
255. |h \" output the table header
256. in \\n(_iu
257. rr _i
258. mk #T \" for tbl commands
259. ns
260.\}
3778aaad 261.if (\\n(?a)&((\\n($c<2):(\\n(?w=0)) \
84f25a89
EA
262\{\
263. nr ?a 0 \" output floating keep
264. @k |t
3778aaad
EA
265. if \\n(?w \
266. mk _k \" don't overstrike wide keeps
267. nr ?w 0
84f25a89
EA
268.\}
269.os
270.$H \" special column header macro
271.ns
272..
273.de @f \" --- footer
601202e1
EA
274.if \n@>1 .tm >> @f %=\\n% nl=\\n(nl ?a=\\n(?a ?b=\\n(?b ?f=\\n(?f
275.if \n@>2 .nr VL \\n(.pu-\\n(nlu
276.if \n@>2 .tm @f bm=\\n(bm _B=\\n(_B _b=\\n(_b .p-nl=\\n(VL
84f25a89
EA
277.ec
278.if \\n(?T \
279\{\
280. nr T. 1 \" for tbl commands (to output bottom line)
281. T# 1 \" output the sides and bottom lines
282. br
283.\}
284.ev 2
285.ce 0
286.if \\n(?b \
287\{\
288. nr ?b 0
799e5a57 289. @k |b\" \" output bottom of page tables
84f25a89
EA
290.\}
291.if \\n(?f \
292. @o \" output footnote if present
293.ie \\n($c<\\n($m \
294. @c \" handle new column
295.el \
296. @e \" new page
297.ev
298.if \n@>2 .tm << @f
299..
300.de @o \" --- output footnote
301.nf
302.ls 1
303.in 0
601202e1 304.if \n@>2 .tm @o last printed text = \\n(nl placing @r trap at -\\n(_B
84f25a89
EA
305.wh -\\n(_Bu @r
306.|f
307.fi
601202e1 308.if \n@>2 .tm @o triggered @r (?o) = \\n(?o
84f25a89 309.if \\n(?o \
d382181b 310\{\
84f25a89
EA
311. di \" just in case triggered @r
312. if \\n(dn=0 \
313\{\
314. rm |o
315. nr ?o 0
316. \}
317. nr dn \\n(_D
318. rr _D
319.\}
320.rm |f
321.ch @r
322..
323.de @c \" --- new column
324.if \n@>2 .tm >> @c %=\\n%
325.rs
326.sp |\\n(_ku
327.@O +\\n($lu+\\n($su
328.nr $c +1
329.@n
330..
331.de @e \" --- end page
332.if \n@>2 .tm >> @e
333.@O \\n(_ou
334.rs
335.sp |\\n(.pu-\\n(fmu-(\\n(tpu*\\n($ru) \" move to footer position
336.@t $f \" output footer title
337.nr ?h 0
338.bp
339..
340.de @t \" --- output header or footer title
341.if !\\n(?h \
342\{\
343. sz \\n(tp \" set header/footer type fonts, etc.
344. @F \\n(tf
345. lt \\n(_Lu \" make title span entire page
346. nf
347. \\$1
348. br
349.\}
350..
351.de $h \" $$$ print header
352.rm |z
353.if !\\n(?c \
354\{\
355. if e .ds |z "\\*(|0
356. if o .ds |z "\\*(|1
357.\}
358.if !\(ts\\*(|z\(ts\(ts \
359' tl \\*(|z
360.rm |z
361..
362.de $f \" $$$ print footer
363.rm |z
364.if \\n(?c \
365\{\
366. if e .ds |z "\\*(|0
367. if o .ds |z "\\*(|1
368.\}
369.if \(ts\\*(|z\(ts\(ts \
370\{\
371. if e .ds |z "\\*(|2
372. if o .ds |z "\\*(|3
373.\}
374.if !\(ts\\*(|z\(ts\(ts \
375' tl \\*(|z
376.rm |z
377..
378.de @r \" --- reprocess overflow footnotes
379.if \n@>3 .tm >> @r .z=\\n(.z ?f=\\n(?f ?a=\\n(?a ?b=\\n(?b _b=\\n(_b
380.di |o \" save overflow footnote
381.nr ?o 1
382.nr _D \\n(dn
383.ns
384..
385.\"\f *** COMMANDS WITH VARIANT DEFINITIONS ***
386.rn bp @b \" --- begin page
387.de bp \" *** begin new page (overrides columns)
388.nr $c \\n($m \" force new page, not new column
389.ie \\n(nl>0 \
390. @b \\$1
391.el \
392\{\
393. if \\n(.$>0 \
394. pn \\$1
395. if \\n(?I \
396. @h \" 'spring' the header trap
397.\}
398.br
399.wh 0 @h \" reset header
400..
401.rn ll xl \" *** special line length (local)
402.de ll \" *** line length (global to environments)
403.xl \\$1
404.lt \\$1
405.nr $l \\n(.l
406.if (\\n($m<=1):(\\n($l>\\n(_L) \
407. nr _L \\n(.l
408..
409.rn po @O \" --- local page offset
410.de po \" *** page offset
411.@O \\$1
412.nr _o \\n(.o
413..
414.\"\f *** MISCELLANEOUS ROFF COMMANDS ***
415.de hx \" *** suppress headers and footers next page
416.nr ?H 1
417..
418.de ix \" *** indent, no break
419'in \\$1
420..
421.de bl \" *** contiguous blank lines
422.br
423.ne \\$1
424.rs
425.sp \\$1
426..
427.de n1 \" *** line numbering 1
428.nm 1
429.xl -\w'0000'u
430.nr ?n 1
431..
432.de n2 \" *** line numbering 2
433.nm \\$1
434.ie \\n(.$ \
435. xl -\w'0000'u
436.el \
437. xl \\n($lu
438..
439.de pa \" *** new page
440.bp \\$1
441..
442.de ro \" *** roman page numbers
443.af % i
444..
445.de ar \" *** arabic page numbers
446.af % 1
447..
448.de m1 \" *** position one space
449.nr _0 \\n(hmu
450.nr hm \\$1v
451.nr tm +\\n(hmu-\\n(_0u
452.rr _0
453..
454.de m2 \" *** position two space
455.nr tm \\n(hmu+\\n(tpp+\\$1v
456..
457.de m3 \" *** position three space
458.nr bm \\n(fmu+\\n(tpp+\\$1v
459..
460.de m4 \" *** position four space
461.nr _0 \\n(fmu
462.nr fm \\$1v
463.nr bm +\\n(fmu-\\n(_0u
464..
465.de sk \" *** leave a blank page (next page)
466.if \\n(.$>0 \
467. tm Line \\n(c. -- I cannot skip multiple pages
468.nr ?s 1
469..
470.\"\f *** MISCELLANEOUS USER SUPPORT COMMANDS ***
471.de re \" *** reset tabs (TROFF defines 15 stops default)
472.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
473..
474.if t .ig
475.de re \" *** reset tabs (NROFF version)
476.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
477..
478.de ba \" *** set base indent
479.ie \\n(.$ \
480. nr $i \\$1n
481.el \
482. nr $i \\n(siu*\\n($0u
483..
484.de hl \" *** draw horizontal line
485.br
486\l'\\n(.lu-\\n(.iu'
487.sp
488..
489.\"\f *** PARAGRAPHING ***
490.de pp \" *** paragraph
491.lp \\n(piu
492..
493.de lp \" *** left aligned paragraph
494.@p
495.if \\n(.$ \
496. ti +\\$1
497.nr $p 0 1
498..
499.de ip \" *** indented paragraph w/ optional tag
500.if (\\n(ii>0)&(\\n(ii<1n) \
501. nr ii \\n(iin
502.nr _0 \\n(ii
503.if \\n(.$>1 \
504. nr _0 \\$2n
505.@p \\n(_0u
506.if \\w"\\$1" \
507\{\
508. ti -\\n(_0u
509. ie \\w"\\$1">=\\n(_0 \
510\{\
511\&\\$1
512. br
513. \}
514. el \&\\$1\h'|\\n(_0u'\c
515.\}
516.rr _0
517..
518.de np \" *** numbered paragraph
da445562
EA
519.if \\n($p<0 \
520. nr $p 0 \" reset number after .bu
521.nr $p +1 \" increment paragraph number
522.@p \w'\0(000)\0'u
523.ti -\w'\0(000)\0'u
524\0(\\n($p)\h'|\w'\0(000)\0'u'\c
53122a0b
EA
525..
526.de bu \" *** bulleted paragraph
da445562
EA
527.br
528.if \\n($p<0 \
529. ns \" don't space between .bu paragraphs
530.nr $p 0-1 \" mark "bulleted paragraph" mode
531.@p \w'\0\(bu\0'u
532.ti -\w'\0\(bu\0'u
533\0\(bu\0\c
84f25a89
EA
534..
535.de @p \" --- initialize for paragraph
536.@I \" initialize macro processor
537.if "\\n(.z"|e" .tm Line \\n(c. -- Unmatched continued equation
538.in \\n($iu+\\n(pou
539.if \\n(.$ \
540. in +\\$1n
541.ce 0
542.fi
543.@F \\n(pf
59ed1d66 544.sz \\n(pp
84f25a89
EA
545.sp \\n(psu
546.ne \\n(.Lv+\\n(.Vu
547.ns
548..
549.\"\f *** SECTION HEADINGS ***
550.de sh \" &&& section heading
551.rn sh @T
552.so \\*(||/sh.me
553.sh "\\$1" "\\$2" \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
554.rm @T
555..
556.de $p \" $$$ print section heading
557.if (\\n(si>0)&(\\n(.$>2) \
558. nr $i \\$3*\\n(si
559.in \\n($iu
560.ie !"\\$1\\$2"" \
561\{\
562. sp \\n(ssu \" one of them is non-null
563. ne \\n(.Lv+\\n(.Vu+\\n(psu+(\\n(spu*\\n($ru*\\n(.Lu)
564. ie \\n(.$>2 \
565. ti -(\\n(siu-\\n(sou)
566. el \
567. ti +\\n(sou
568. @F \\n(sf
59ed1d66 569. sz \\n(sp
84f25a89
EA
570. if \\$3>0 \
571. $\\$3
572. if \w"\\$2">0 \\$2.
284cbcb7 573. if \w"\\$1">0 \\$1\f1\ \ \&
84f25a89
EA
574.\}
575.el \
576. sp \\n(psu
577.@F \\n(pf
59ed1d66 578.sz \\n(pp
84f25a89
EA
579..
580.de uh \" *** unnumbered section heading
581.rn uh @T
582.so \\*(||/sh.me
583.uh "\\$1"
584.rm @T
585..
586.\"\f *** COLUMNNED OUTPUT ***
587.de 2c \" *** double columned output
588.br
589.if \\n($m>1 \
590. 1c \" revert to 1c if already 2c
591.nr $c 1
592.nr $m 2
593.if \\n(.$>1 \
594. nr $m \\$2
595.if \\n(.$>0 \
596. nr $s \\$1n \" param 1: column seperation
597.nr $l (\\n(.l-((\\n($m-1)*\\n($s))/\\n($m
598.xl \\n($lu
599.mk _k
600.ns
601..
602.de 1c \" *** single columned output
603.br
604.nr $c 1
605.nr $m 1
606.ll \\n(_Lu \" return to normal output
607.sp |\\n(.hu
608.@O \\n(_ou
609..
610.de bc \" *** begin column
611.sp 24i
612..
613.\"\f *** FLOATING TABLES AND NONFLOATING BLOCKS ***
614.de (z \" &&& begin floating keep
517824c0 615.rn (z @V
84f25a89
EA
616.so \\*(||/float.me
617.(z \\$1 \\$2
517824c0 618.rm @V
84f25a89
EA
619..
620.de )z \" &&& end floating keep
621.tm Line \\n(c. -- unmatched .)z
622..
623.de (t \" XXX temp ref to (z
624.(z \\$1 \\$2
625..
626.de )t \" XXX temp ref to )t
627.)z \\$1 \\$2
628..
629.de (b \" *** begin block
630.br
631.@D 3 \\$1 \\$2
632.sp \\n(bsu
633.@(
634..
635.de )b \" *** end block
636.br
637.@)
638.if (\\n(bt=0):(\\n(.t<\\n(bt) \
639. ne \\n(dnu \" make it all on one page
640.ls 1
641.nf
642.|k
643.ec
644.fi
645.in 0
646.xl \\n($lu
647.ev
648.rm |k
649.sp \\n(bsu+\\n(.Lv-1v
650..
651.de @( \" --- begin keep
652.if !"\\n(.z"" .tm Line \\n(c. -- Illegal nested keep \\n(.z
653.@M
654.di |k
655\!'rs
656..
657.de @M \" --- set modes for display
658.nr ?k 1
659.@C 1
660.@F \\n(df
661.vs \\n(.su*\\n($Ru
662.nf
663.if "\\*(|p"F" \
664. fi \" set fill mode if "F" parameter
665.if \\n(_d=4 \
666. in 0
667.if \\n(_d=3 \
668\{\
669. in +\\n(biu
670. xl -\\n(biu
671.\}
672.if \\n(_d=1 \
673. ce 10000
674..
675.de @) \" --- end keep
676.br
677.if !"\\n(.z"|k" .tm Line \\n(c. -- Close of a keep which has never been opened
678.nr ?k 0
679.di
680.in 0
681.ce 0
682..
683.de (c \" *** begin block centered text
684.if "\\n(.z"|c" .tm Line \\n(c. -- Nested .(c requests
685.di |c
686..
687.de )c \" *** end block centered text
688.if !"\\n(.z"|c" .tm Line \\n(c. -- Unmatched .)c
f0646cae 689.br \" force out final line
84f25a89
EA
690.di
691.if \n@>4 .tm >> .)c .l=\\n(.l .i=\\n(.i $i=\\n($i dl=\\n(dl
692.ev 1
693.ls 1
694.in (\\n(.lu-\\n(.iu-\\n(dlu)/2u
695.if \n@>4 .tm -- .)c << .in .l=\\n(.l .i=\\n(.i dl=\\n(dl
696.nf
697.|c
698.ec
699.in
700.ls
701.ev
702.rm |c
703..
704.\"\f *** BLOCK QUOTES (OR WHATEVER) AND LISTS ***
705.de (q \" *** begin block quote
706.br
707.@C 1
708.fi
709.sp \\n(qsu
710.in +\\n(qiu
711.xl -\\n(qiu
712.sz \\n(qp
713..
714.de )q \" *** end block quote
715.br
716.ev
717.sp \\n(qsu+\\n(.Lv-1v
718.nr ?k 0
719..
720.de (l \" *** begin list
721.br
722.sp \\n(bsu
723.@D 3 \\$1 \\$2
724.@M
725..
726.de )l \" *** end list
727.br
728.ev
729.sp \\n(bsu+\\n(.Lv-1v
730.nr ?k 0
731..
732.\"\f *** PREPROCESSOR SUPPORT ***
b4c5d7ad
EA
733.\"
734.\" EQN
735.\"
84f25a89
EA
736.de EQ \" &&& begin equation
737.rn EQ @T
738.so \\*(||/eqn.me
739.EQ \\$1 \\$2
740.rm @T
741..
b4c5d7ad
EA
742.\"
743.\" TBL
744.\"
84f25a89 745.de TS \" &&& begin table
517824c0 746.rn TS @W
84f25a89
EA
747.so \\*(||/tbl.me
748.TS \\$1 \\$2
517824c0 749.rm @W
84f25a89 750..
b4c5d7ad
EA
751.\"
752.\" REFER
753.\"
a61ea4a3
EA
754.de ]- \" &&& initialize reference
755.rn ]- @]
756.so \\*(||/refer.me
757.]-
758.rm @]
759..
1169d9f1
EA
760.de ]< \" &&& initialize reference
761.rn ]< @]
762.so \\*(||/refer.me
763.]<
764.rm @]
765..
a61ea4a3
EA
766.if n .ds [. " [
767.if t .ds [. \s-2\v'-.4m'\f1
768.if n .ds .] ]
769.if t .ds .] \v'.4m'\s+2\fP
770.if n .ds <. "
771.if t .ds <. .
772.if n .ds >. .
773.if t .ds >. "
b4c5d7ad
EA
774.\"
775.\" IDEAL
776.\"
777.de IS \" *** start ideal picture
778.nr g7 \\n(.u
779.ls 1
780..
781.de IF
782.if \\n(g7 .fi
783.ls
784..
785.de IE \" *** end ideal picture
786.if \\n(g7 .fi
787.ls
788..
789.\"
790.\" PIC
791.\"
f0475b37 792.de PS \" *** start picture: $1=height, $2=width in units or inches
b4c5d7ad
EA
793.if t \
794. sp 0.3
f0475b37
MK
795.nr g7 \\$2
796.in (\\n(.lu-\\n(g7u)/2u
b4c5d7ad
EA
797.ne \\$1u
798.nr g7 \\n(.u
799.ls 1
800..
801.de PE \" *** end picture
802.ls
803.in
804.if \\n(g7 .fi
805.if t .sp .6
806..
807.\"
808.\" GREMLIN
809.\"
810.de GS \" *** start gremlin picture
811.nr g7 (\\n(.lu-\\n(g1u)/2u
812.if "\\$1"L" .nr g7 \\n(.iu
813.if "\\$1"R" .nr g7 \\n(.lu-\\n(g1u
814.in \\n(g7u
815.nr g7 \\n(.u
816.ls 1
817.nf
818.ne \\n(g2u
819..
820.de GE \" *** end gremlin picture
821.GF
822.if t .sp .6
823..
824.de GF \" *** finish gremlin picture; stay at top
825.ls
826.in
827.if \\n(g7 .fi
828..
84f25a89
EA
829.\"\f *** FONT AIDS ***
830.de sz \" *** set point size and vertical spacing
831.ps \\$1
832.vs \\n(.su*\\n($ru \" default vs at pointsize + 20%
833.bd S B \\n(.su/3u
834..
835.de r \" *** enter roman font
836.nr _F \\n(.f
837.ul 0
838.ft 1
839.if \\n(.$ \&\\$1\f\\n(_F\\$2
840.rr _F
841..
842.de i \" *** enter italic
843.nr _F \\n(.f
844.ul 0
845.ft 2
846.if \\n(.$ \&\\$1\f\\n(_F\\$2
847.rr _F
848..
849.de b \" *** enter boldface (underline in NROFF)
850.nr _F \\n(.f
851.ul 0
7729eef3 852.ft \\n($b
84f25a89 853.if \\n(.$ \&\\$1\f\\n(_F\\$2
84f25a89
EA
854.rr _F
855..
856.de rb \" *** enter real boldface (not underlined in NROFF)
857.nr _F \\n(.f
858.ul 0
859.ft 3
860.if \\n(.$ \&\\$1\f\\n(_F\\$2
861.rr _F
862..
863.de u \" *** enter underlined word
864\&\\$1\l'|0\(ul'\\$2
865..
866.de q \" *** enter quoted word
867\&\\*(lq\\$1\\*(rq\\$2
868..
869.de bi \" *** enter word in bold italics
870.ft 2
b4c5d7ad 871.ie t \&\k~\\$1\h'|\\n~u+(\\w' 'u/4u)'\\$1\fP\\$2
84f25a89
EA
872.el \&\\$1\fP\\$2
873..
874.de bx \" *** enter boxed word
875.ie \\n($T \&\f2\\$1\fP\\$2
876.el \k~\(br\|\\$1\|\(br\l'|\\n~u\(rn'\l'|\\n~u\(ul'\^\\$2
877..
53122a0b
EA
878.de sm \" *** print in smaller font
879\s-1\\$1\\s0\\$2
880..
84f25a89
EA
881.de @F \" --- change font (8 -> underlined, 0 -> no change)
882.nr ~ \\$1
883.if \\n~>0 \
884\{\
885. ul 0
964b9ef7 886. if \\n~=8 \
7729eef3
EA
887. nr ~ \\n($b
888. ft \\n~
84f25a89
EA
889.\}
890.rr ~
891..
892.\"\f *** FOOTNOTING ***
893.de (f \" &&& begin footnote
517824c0 894.rn (f @U
84f25a89
EA
895.so \\*(||/footnote.me
896.(f \\$1 \\$2
517824c0 897.rm @U
84f25a89
EA
898..
899.de )f \" &&& end footnote
900.tm Line \\n(c. -- unmatched .)f
901..
902.de $s \" $$$ footnote separator
903\l'2i'
904.if n \
905. sp 0.3
906..
907.\"\f *** DELAYED TEXT ***
908.de (d \" &&& begin delayed text
517824c0 909.rn (d @U
84f25a89
EA
910.so \\*(||/deltext.me
911.(d \\$1 \\$2
517824c0 912.rm @U
84f25a89
EA
913..
914.de )d \" &&& end delayed text
915.tm Line \\n(c. -- unmatched .)d
916..
917.\"\f *** INDEXES (TABLE OF CONTENTS) ***
918.de (x \" &&& begin index
517824c0 919.rn (x @U
84f25a89
EA
920.so \\*(||/index.me
921.(x \\$1 \\$2
517824c0 922.rm @U
84f25a89
EA
923..
924.de )x \" &&& end index entry
925.tm Line \\n(c. -- unmatched .)x
926..
927.\"\f *** STUFF FOR "STANDARD" PAPERS ***
928.de th \" *** set "thesis" mode
929.so \\*(||/thesis.me
930.rm th
931..
932.de +c \" *** begin chapter
933.ep \" force out footnotes
934.if \\n(?o:\\n(?a \
935\{\
936. bp \" force out a table or more footnote
937. rs
938. ep
939.\}
940.nr ?C 1
941.nr $f 1 1
942.ds * \\*[1\\*]\k*
943.if \\n(?R \
944. pn 1
945.bp
946.in \\n($iu \" reset the indent
947.rs
948.ie \\n(.$ \
949. $c "\\$1"
950.el \
951. sp 3
952..
953.de ++ \" *** declare chapter type
954.nr _0 0
955.if "\\$1"C" \
956. nr _0 1 \" chapter
957.if "\\$1"RC" \
958. nr _0 11 \" renumbered chapter
959.if "\\$1"A" \
960. nr _0 2 \" appendix
961.if "\\$1"RA" \
962. nr _0 12 \" renumbered appendix
963.if "\\$1"P" \
964. nr _0 3 \" preliminary material
965.if "\\$1"B" \
966. nr _0 4 \" bibliographic material
967.if "\\$1"AB" \
968. nr _0 5 \" abstract
969.if \\n(_0=0 \
970. tm Line \\n(c. -- Bad mode to .++
971.nr ?R 0
972.if \\n(_0>10 \
973.\{
974. nr ?R 1
975. nr _0 -10
976.\}
977.nr ch 0 1
978.if (\\n(_0=3):(\\n(_0=5) \
979. pn 1 \" must do before .ep
980.ep \" end page for correct page number types
981.if \\n(_0=1 \
982\{\
983. af ch 1
984. af % 1
985.\}
986.if \\n(_0=2 \
987\{\
988. af ch A
989. af % 1
990.\}
991.if \\n(_0=3 \
992. af % i
993.if \\n(_0=4 \
994. af % 1
995.if \\n(_0=5 \
996. af % 1
997.if \\n(.$>1 \
998. he \\$2
999.if !\\n(_0=\\n(_M .if \\n(_M=3 \
1000. pn 1
1001.nr _M \\n(_0
1002.rr _0
1003..
1004.de $c \" $$$ print chapter title
1005.sz 12
1006.ft B
1007.ce 1000
1008.if \\n(_M<3 \
1009. nr ch +1
1010.ie \\n(_M=1 CHAPTER\ \ \\n(ch
1011.el .if \\n(_M=2 APPENDIX\ \ \\n(ch
1012.if \w"\\$1" .sp 3-\\n(.L
1013.if \w"\\$1" \\$1
1014.if (\\n(_M<3):(\w"\\$1") \
1015. sp 4-\\n(.L
1016.ce 0
1017.ft
1018.sz
1019.ie \\n(_M=1 \
1020. $C Chapter \\n(ch "\\$1"
1021.el .if \\n(_M=2 \
1022. $C Appendix \\n(ch "\\$1"
1023..
1024.de tp \" *** title page
1025.hx
1026.bp
1027.br
1028.rs
1029.pn \\n%
1030..
1031.de ac \" *** setup for ACM photo-ready paper
1032.rn ac @T
1033.so \\*(||/acm.me
1034.ac "\\$1" "\\$2"
1035.rm @T
1036..
1037.de lo \" *** pull in the set of local macros
1038.\" all these macros should be named "*X", where X is any letter
1039.so \\*(||/local.me
1040.rm lo
1041..
b4c5d7ad
EA
1042.de lh \" *** letterhead
1043.so \\*(||/letterhead.me
1044..
84f25a89
EA
1045.\"\f *** DATES ***
1046.if \n(mo=1 .ds mo January
1047.if \n(mo=2 .ds mo February
1048.if \n(mo=3 .ds mo March
1049.if \n(mo=4 .ds mo April
1050.if \n(mo=5 .ds mo May
1051.if \n(mo=6 .ds mo June
1052.if \n(mo=7 .ds mo July
1053.if \n(mo=8 .ds mo August
1054.if \n(mo=9 .ds mo September
1055.if \n(mo=10 .ds mo October
1056.if \n(mo=11 .ds mo November
1057.if \n(mo=12 .ds mo December
1058.if \n(dw=1 .ds dw Sunday
1059.if \n(dw=2 .ds dw Monday
1060.if \n(dw=3 .ds dw Tuesday
1061.if \n(dw=4 .ds dw Wednesday
1062.if \n(dw=5 .ds dw Thursday
1063.if \n(dw=6 .ds dw Friday
1064.if \n(dw=7 .ds dw Saturday
1065.ds td \*(mo \n(dy, 19\n(yr
1066.\"\f *** PARAMETRIC INITIALIZATIONS ***
1067.if (1m<0.1i)&(\nx!=0) \
1068. vs 9p \" for 12-pitch DTC terminals
1069.rr x
1070.nr $r \n(.v/\n(.s \" ratio of vs to ps for .sz request
1071.nr $R \n($r \" ratio for displays & footnotes
1072.nr hm 4v \" header margin
1073.nr tm 7v \" top margin
1074.nr bm 6v \" bottom margin
1075.nr fm 3v \" footer margin
1076.nr tf 3 \" title font: (real) Times Bold
1077.nr tp 10 \" title point size
1078.hy 14
7e6018e6 1079.nr bi 4m \" indent for blocks
84f25a89
EA
1080.nr pi 5n \" indent for paragraphs
1081.nr pf 1 \" normal text font
1082.nr pp 10 \" normal text point size
1083.nr qi 4n \" indent for quotes
1084.nr qp -1 \" down one point
1085.nr ii 5n \" indent for .ip's and .np's
1086.nr $m 1 \" max number of columns
1087.nr $s 4n \" column separation
1088.ds || /usr/lib/me
1089.if \n@>0 .ds || .
1090.bd S B 3
1091.\"\f *** OTHER INITIALIZATION ***
1092.ds [ \u\x'-0.25v'
1093.ds ] \d
1094.ds < \d\x'0.25v'
1095.ds > \u
1096.ds - --
1097.if t \
1098\{\
1099. ds [ \v'-0.4m'\x'-0.2m'\s-3
1100. ds ] \s0\v'0.4m'
1101. ds < \v'0.4m'\x'0.2m'\s-3
1102. ds > \s0\v'-0.4m'
7e6018e6 1103. ds - \(em
6c97ff5a
EA
1104. nr fi 0.3i
1105.\}
1106.if n \
1107\{\
1108. nr fi 3n
84f25a89
EA
1109.\}
1110.nr _o \n(.o
1111.if n .po 1i
1112.if \n(.V=1v \
1113. nr $T 2
7063ebd2 1114.if n .if \n(.T=0 \
84f25a89 1115. nr $T 1
8f2cf3db 1116.if \nv=2 \
84f25a89
EA
1117\{\
1118. nr $T 0
8f2cf3db 1119. po -0.5i \" make ugly line on LHS on C/A/T typesetters
84f25a89
EA
1120.\}
1121.if \n($T \
1122\{\
1123. if \n($T=1 \
1124. po 0
1125. ds [ [
1126. ds ] ]
1127. ds < <
1128. ds > >
1129.\}
7729eef3
EA
1130.nr $b \nb \" figure the real font 8 font
1131.rr b
1132.if \n($b=0 \
1133\{\
1134. if n .nr $b 2 \" italic
1135. if t .nr $b 3 \" bold
1136.\}
84f25a89
EA
1137.nr ps 0.5v \" paragraph pre/post spacing
1138.if \n($T \
1139. nr ps 1v
1140.if t .nr ps 0.35v
1141.nr bs \n(ps \" block pre/post spacing
1142.nr qs \n(ps \" quote pre/post spacing
1143.nr zs 1v \" float-block pre/postspacing
1144.nr xs 0.2v \" index prespacing
1145.nr fs 0.2v \" footnote prespacing
1146.if \n($T \
1147. nr fs 0
1148.if n .nr es 1v \" equation pre/postspacing
1149.if t .nr es 0.5v
1150.wh 0 @h \" set header
1151.nr $l \n(.lu \" line length
1152.nr _L \n(.lu \" line length of page
1153.nr $c 1 \" current column number
1154.nr $f 1 1 \" footnote number
1155.ds * \*[1\*]\k*\" \" footnote "name"
1156.nr $d 1 1 \" delayed text number
1157.ds # [1]\k#\" \" delayed text "name"
1158.nr _M 1 \" chapter mode is chapter
1159.ds lq \&"\" \" left quote
1160.ds rq \&"\" \" right quote
1161.if t \
1162. ds lq ``
1163.if t \
1164. ds rq ''
1165.em @z
1166.\" *** FOREIGN LETTERS AND SPECIAL CHARACTERS ***
1167.de sc \" *** define special characters
1168.so \\*(||/chars.me
1169.rm sc
1170..
1171.ll 6.0i
1172.lt 6.0i