tmac.orig_me revision 31906
11638Srgrimes.nr _0 \n(.c
21638Srgrimes.\" Copyright (c) 1988, 1993
31638Srgrimes.\"	The Regents of the University of California.  All rights reserved.
41638Srgrimes.\"
51638Srgrimes.\" Redistribution and use in source and binary forms, with or without
61638Srgrimes.\" modification, are permitted provided that the following conditions
71638Srgrimes.\" are met:
81638Srgrimes.\" 1. Redistributions of source code must retain the above copyright
91638Srgrimes.\"    notice, this list of conditions and the following disclaimer.
101638Srgrimes.\" 2. Redistributions in binary form must reproduce the above copyright
111638Srgrimes.\"    notice, this list of conditions and the following disclaimer in the
121638Srgrimes.\"    documentation and/or other materials provided with the distribution.
131638Srgrimes.\" 3. All advertising materials mentioning features or use of this software
141638Srgrimes.\"    must display the following acknowledgement:
151638Srgrimes.\"	This product includes software developed by the University of
161638Srgrimes.\"	California, Berkeley and its contributors.
171638Srgrimes.\" 4. Neither the name of the University nor the names of its contributors
181638Srgrimes.\"    may be used to endorse or promote products derived from this software
191638Srgrimes.\"    without specific prior written permission.
201638Srgrimes.\"
211638Srgrimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
221638Srgrimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
231638Srgrimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
241638Srgrimes.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
251638Srgrimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
261638Srgrimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
271638Srgrimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
281638Srgrimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
291638Srgrimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
301638Srgrimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
311638Srgrimes.\" SUCH DAMAGE.
321638Srgrimes.\"
331638Srgrimes.\"	@(#)tmac.e	8.1 (Berkeley) 6/5/93
341638Srgrimes.\"
351638Srgrimes.\"	%beginstrip%
361638Srgrimes.\"
371638Srgrimes.\"**********************************************************************
381638Srgrimes.\"*									*
391638Srgrimes.\"*	******  - M E   N R O F F / T R O F F   M A C R O S  ******	*
401638Srgrimes.\"*									*
411638Srgrimes.\"*	Produced for your edification and enjoyment by:			*
421638Srgrimes.\"*		Eric Allman						*
431638Srgrimes.\"*		Electronics Research Laboratory				*
441638Srgrimes.\"*		U.C. Berkeley.						*
451638Srgrimes.\"*	current address:						*
461638Srgrimes.\"*		Britton-Lee, Inc.					*
471638Srgrimes.\"*		1919 Addison Street Suite 105				*
481638Srgrimes.\"*		Berkeley, California  94704				*
491638Srgrimes.\"*									*
501638Srgrimes.\"*	VERSION 8.1	First Release: 11 Sept 1978			*
511638Srgrimes.\"*	See file \*(||/revisions for revision history			*
521638Srgrimes.\"*									*
531638Srgrimes.\"*	Documentation is available.					*
541638Srgrimes.\"*									*
551638Srgrimes.\"**********************************************************************
561638Srgrimes.\"
571638Srgrimes.\"	Code on .de commands:
581638Srgrimes.\"		***	a user interface macro.
591638Srgrimes.\"		&&&	a user interface macro which is redefined
601638Srgrimes.\"			when used to be the real thing.
611638Srgrimes.\"		$$$	a macro which may be redefined by the user
621638Srgrimes.\"			to provide variant functions.
631638Srgrimes.\"		---	an internal macro.
641638Srgrimes.\"
651638Srgrimes.\" library directory for sourced files:
661638Srgrimes.ds || /usr/old/lib/me
671638Srgrimes.if \n@>0 .ds || .
681638Srgrimes.\"
691638Srgrimes.if !\n(.V .tm You are using the wrong version of NROFF/TROFF!!
701638Srgrimes.if !\n(.V .tm This macro package works only on the version seven
711638Srgrimes.if !\n(.V .tm release of NROFF and TROFF.
721638Srgrimes.if !\n(.V .ex
731638Srgrimes.if \n(pf \
741638Srgrimes.	nx \*(||/null.me
751638Srgrimes.\"		*** INTERNAL GP MACROS ***
761638Srgrimes.de @C			\" --- change ev's, taking info with us
771638Srgrimes.nr _S \\n(.s
781638Srgrimes.nr _V \\n(.v
791638Srgrimes.nr _F \\n(.f
801638Srgrimes.nr _I \\n(.i
811638Srgrimes.ev \\$1
821638Srgrimes.ps \\n(_S
831638Srgrimes.vs \\n(_Vu
841638Srgrimes.ft \\n(_F
851638Srgrimes'in \\n(_Iu
861638Srgrimes.xl \\n($lu
871638Srgrimes.lt \\n($lu
881638Srgrimes.rr _S
891638Srgrimes.rr _V
901638Srgrimes.rr _F
911638Srgrimes.rr _I
921638Srgrimes.ls 1
931638Srgrimes'ce 0
941638Srgrimes..
951638Srgrimes.de @D			\" --- determine display type (Indent, Left, Center)
961638Srgrimes.ds |p "\\$3
971638Srgrimes.nr _d \\$1
981638Srgrimes.ie "\\$2"C" \
991638Srgrimes.	nr _d 1
1001638Srgrimes.el .ie "\\$2"L" \
1011638Srgrimes.	nr _d 2
1021638Srgrimes.el .ie "\\$2"I" \
1031638Srgrimes.	nr _d 3
1041638Srgrimes.el .ie "\\$2"M" \
1051638Srgrimes.	nr _d 4
1061638Srgrimes.el \
1071638Srgrimes.	ds |p "\\$2
1081638Srgrimes..
1091638Srgrimes.de @z			\" --- end macro
1101638Srgrimes.if \n@>1 .tm >> @z, .z=\\n(.z ?a=\\n(?a
1111638Srgrimes.if !"\\n(.z"" \
1121638Srgrimes\{\
1131638Srgrimes.	tm Line \\n(c. -- Unclosed block, footnote, or other diversion (\\n(.z)
1141638Srgrimes.	di
1151638Srgrimes.	ex
1161638Srgrimes.\}
1171638Srgrimes.if \\n(?a \
1181638Srgrimes.	bp			\" force out final table
1191638Srgrimes.rm bp
1201638Srgrimes.rm @b\"			\" don't start another page
1211638Srgrimes.if t \
1221638Srgrimes.	wh -1p @m
1231638Srgrimes.br
1241638Srgrimes.if \n@>1 .tm << @z
1251638Srgrimes..
1261638Srgrimes.de @I			\" --- initialize processor
1271638Srgrimes.rm th
1281638Srgrimes.rm ac
1291638Srgrimes.rm lo
1301638Srgrimes.rm sc
1311638Srgrimes.rm @I
1321638Srgrimes..
1331638Srgrimes.\"		*** STANDARD HEADERS AND FOOTERS ***
1341638Srgrimes.de he			\" *** define header
1351638Srgrimes.ie !\\n(.$ \
1361638Srgrimes\{\
1371638Srgrimes.	rm |4
1381638Srgrimes.	rm |5
1391638Srgrimes.\}
1401638Srgrimes.el \
1411638Srgrimes\{\
1421638Srgrimes.	ds |4 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1431638Srgrimes.	ds |5 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1441638Srgrimes.\}
1451638Srgrimes..
1461638Srgrimes.de eh			\" *** define even header
1471638Srgrimes.ie !\\n(.$ \
1481638Srgrimes.	rm |4
1491638Srgrimes.el \
1501638Srgrimes.	ds |4 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1511638Srgrimes..
1521638Srgrimes.de oh			\" *** define odd header
1531638Srgrimes.ie !\\n(.$ \
1541638Srgrimes.	rm |5
1551638Srgrimes.el \
1561638Srgrimes.	ds |5 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1571638Srgrimes..
1581638Srgrimes.de fo			\" *** define footer
1591638Srgrimes.ie !\\n(.$ \
1601638Srgrimes\{\
1611638Srgrimes.	rm |6
1621638Srgrimes.	rm |7
1631638Srgrimes.\}
1641638Srgrimes.el \
1651638Srgrimes\{\
1661638Srgrimes.	ds |6 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1671638Srgrimes.	ds |7 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1681638Srgrimes.\}
1691638Srgrimes..
1701638Srgrimes.de ef			\" *** define even foot
1711638Srgrimes.ie !\\n(.$ \
1721638Srgrimes.	rm |6
1731638Srgrimes.el \
1741638Srgrimes.	ds |6 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1751638Srgrimes..
1761638Srgrimes.de of			\" *** define odd footer
1771638Srgrimes.ie !\\n(.$ \
1781638Srgrimes.	rm |7
1791638Srgrimes.el \
1801638Srgrimes.	ds |7 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
1811638Srgrimes..
1821638Srgrimes.de ep			\" *** end page (must always be followed by a .bp)
1831638Srgrimes.if \\n(nl>0 \
1841638Srgrimes\{\
1851638Srgrimes.	wh 0
1861638Srgrimes.	rs
1871638Srgrimes.	@b
1881638Srgrimes.\}
1891638Srgrimes..
1901638Srgrimes.\"		*** INTERNAL HEADER AND FOOTER MACROS ***
1911638Srgrimes.de @h			\" --- header
1921638Srgrimes.if \n@>1 .tm >> @h %=\\n% ?a=\\n(?a ?b=\\n(?b ?w=\\n(?w
1931638Srgrimes.if (\\n(.i+\\n(.o)>=\\n(.l \
1941638Srgrimes.	tm Line \\n(c. -- Offset + indent exceeds line length
1951638Srgrimes.if t .if (\\n(.l+\\n(.o)>7.75i \
1961638Srgrimes.	tm Line \\n(c. -- Offset + line length exceeds paper width
1971638Srgrimes.\" initialize a pile of junk
1981638Srgrimes.nr ?h \\n(?H			\" transfer "next page" to "this page"
1991638Srgrimes.rr ?H
2001638Srgrimes.nr ?c \\n(?C
2011638Srgrimes.rr ?C
2021638Srgrimes.if !"\\*(|4"" .rn |4 |0
2031638Srgrimes.if !"\\*(|5"" .rn |5 |1
2041638Srgrimes.if !"\\*(|6"" .rn |6 |2
2051638Srgrimes.if !"\\*(|7"" .rn |7 |3
2061638Srgrimes.nr _w 0			\" reset max footnote width
2071638Srgrimes.nr ?W 0			\" no wide floats this page (yet)
2081638Srgrimes.nr ?I 1
2091638Srgrimes.\" begin actual header stuff
2101638Srgrimes.ev 2
2111638Srgrimes.rs
2121638Srgrimes.if t .@m			\" output cut mark
2131638Srgrimes.if \\n(hm>0 \
2141638Srgrimes.	sp |\\n(hmu		\" move to header position
2151638Srgrimes.@t $h				\" output header title
2161638Srgrimes.if \\n(tm<=0 \
2171638Srgrimes.	nr tm \n(.Vu
2181638Srgrimes.sp |\\n(tmu			\" move to top of text
2191638Srgrimes.ev
2201638Srgrimes.mk _k				\" for columned output
2211638Srgrimes.if \\n(?n .nm 1		\" restore line numbering if n1 mode
2221638Srgrimes.nr $c 1			\" set first column
2231638Srgrimes.if \n@>4 .tm -- @h >> .ns nl=\\n(nl %=\\n% _k=\\n(_k tm=\\n(tm
2241638Srgrimes.ie \\n(?s \
2251638Srgrimes\{\
2261638Srgrimes.	rr ?s
2271638Srgrimes.	rs
2281638Srgrimes'	@b
2291638Srgrimes.\}
2301638Srgrimes.el \
2311638Srgrimes.	@n			\" begin the column
2321638Srgrimes.if \n@>2 .tm << @h
2331638Srgrimes..
2341638Srgrimes.if \nv=2 \
2351638Srgrimes\{\
2361638Srgrimes.	de @m		\" --- output cut mark (only on C/A/T-style)
2371638Srgrimes.	@O 0
2381638Srgrimes.	lt 7.5i
2391638Srgrimes.	tl '\(rn''\(rn'
2401638Srgrimes.	@O
2411638Srgrimes.	lt
2421638Srgrimes..
2431638Srgrimes.\}
2441638Srgrimes.de @n			\" --- new column or page
2451638Srgrimes.if \n@>3 .tm >> @n nl=\\n(nl %=\\n% ?f=\\n(?f ?o=\\n(?o
2461638Srgrimes.if \\n(bm<=0 \
2471638Srgrimes.	nr bm \\n(.Vu
2481638Srgrimes.if (\\n(_w<=\\n($l)&(\\n(?W=0) \
2491638Srgrimes\{\
2501638Srgrimes.	nr _b (\\n(ppu*\\n($ru)/2u	\" compute fudge factor (must be < 1P)
2511638Srgrimes.	if \\n(_bu>((\\n(bmu-\\n(fmu-(\\n(tpu*\\n($ru))/2u) \
2521638Srgrimes.		nr _b (\\n(ppu*\\n($ru)-\n(.Vu
2531638Srgrimes.	nr _b +\\n(bmu
2541638Srgrimes.\}
2551638Srgrimes.nr _B \\n(_bu
2561638Srgrimes.ch @f
2571638Srgrimes.wh -\\n(_bu @f
2581638Srgrimes.nr _b +(\\n(ppu*\\n($ru)	\" add 1 paragraph v in case of sweep past
2591638Srgrimes.if \n@>2 .tm @n .p=\\n(.p bm=\\n(bm _b=\\n(_b _B=\\n(_B
2601638Srgrimes.nr ?f 0			\" reset footnote flag
2611638Srgrimes.if \\n(?o \
2621638Srgrimes\{\
2631638Srgrimes.	(f _			\" reprocess footnotes which run off page
2641638Srgrimes.	nf
2651638Srgrimes.	|o
2661638Srgrimes.	fi
2671638Srgrimes.	)f
2681638Srgrimes.	rm |o
2691638Srgrimes.\}
2701638Srgrimes.nr ?o 0
2711638Srgrimes.if \\n(?T \
2721638Srgrimes\{\
2731638Srgrimes.	nr _i \\n(.i
2741638Srgrimes.	in \\n($iu
2751638Srgrimes.	|h			\" output the table header
2761638Srgrimes.	in \\n(_iu
2771638Srgrimes.	rr _i
2781638Srgrimes.	mk #T			\" for tbl commands
2791638Srgrimes.	ns
2801638Srgrimes.\}
2811638Srgrimes.if (\\n(?a)&((\\n($c<2):(\\n(?w=0)) \
2821638Srgrimes\{\
2831638Srgrimes.	nr ?a 0			\" output floating keep
2841638Srgrimes.	@k |t
2851638Srgrimes.	if \\n(?w \
2861638Srgrimes.		mk _k		\" don't overstrike wide keeps
2871638Srgrimes.	nr ?w 0
2881638Srgrimes.\}
2891638Srgrimes.os
2901638Srgrimes.$H				\" special column header macro
2911638Srgrimes.ns
2921638Srgrimes..
2931638Srgrimes.de @f			\" --- footer
2941638Srgrimes.if \n@>1 .tm >> @f %=\\n% nl=\\n(nl ?a=\\n(?a ?b=\\n(?b ?f=\\n(?f
2951638Srgrimes.if \n@>2 .nr VL \\n(.pu-\\n(nlu
2961638Srgrimes.if \n@>2 .tm @f bm=\\n(bm _B=\\n(_B _b=\\n(_b .p-nl=\\n(VL
2971638Srgrimes.ec
2981638Srgrimes.if \\n(?T \
2991638Srgrimes\{\
3001638Srgrimes.	nr T. 1			\" for tbl commands (to output bottom line)
3011638Srgrimes.	T# 1			\" output the sides and bottom lines
3021638Srgrimes.	br
3031638Srgrimes.\}
3041638Srgrimes.ev 2
3051638Srgrimes.ce 0
3061638Srgrimes.if \\n(?b \
3071638Srgrimes\{\
3081638Srgrimes.	nr ?b 0
3091638Srgrimes.	@k |b\"			\" output bottom of page tables
3101638Srgrimes.\}
3111638Srgrimes.if \\n(?f \
3121638Srgrimes.	@o			\" output footnote if present
3131638Srgrimes.ie \\n($c<\\n($m \
3141638Srgrimes.	@c			\" handle new column
3151638Srgrimes.el \
3161638Srgrimes.	@e			\" new page
3171638Srgrimes.ev
3181638Srgrimes.if \n@>2 .tm << @f
3191638Srgrimes..
3201638Srgrimes.de @o			\" --- output footnote
3211638Srgrimes.nf
3221638Srgrimes.ls 1
3231638Srgrimes.in 0
3241638Srgrimes.if \n@>2 .tm @o last printed text = \\n(nl placing @r trap at -\\n(_B
3251638Srgrimes.wh -\\n(_Bu @r
3261638Srgrimes.|f
3271638Srgrimes.fi
3281638Srgrimes.if \n@>2 .tm @o triggered @r (?o) = \\n(?o
3291638Srgrimes.if \\n(?o \
3301638Srgrimes\{\
3311638Srgrimes.	di			\" just in case triggered @r
3321638Srgrimes.	if \\n(dn=0 \
3331638Srgrimes\{\
3341638Srgrimes.		rm |o
3351638Srgrimes.		nr ?o 0
3361638Srgrimes.	\}
3371638Srgrimes.	nr dn \\n(_D
3381638Srgrimes.	rr _D
3391638Srgrimes.\}
3401638Srgrimes.rm |f
3411638Srgrimes.ch @r
3421638Srgrimes..
3431638Srgrimes.de @c			\" --- new column
3441638Srgrimes.if \n@>2 .tm	>> @c %=\\n%
3451638Srgrimes.rs
3461638Srgrimes.sp |\\n(_ku
3471638Srgrimes.@O +\\n($lu+\\n($su
3481638Srgrimes.nr $c +1
3491638Srgrimes.@n
3501638Srgrimes..
3511638Srgrimes.de @e			\" --- end page
3521638Srgrimes.if \n@>2 .tm	>> @e
3531638Srgrimes.@O \\n(_ou
3541638Srgrimes.rs
3551638Srgrimes.sp |\\n(.pu-\\n(fmu-(\\n(tpu*\\n($ru)	\" move to footer position
3561638Srgrimes.@t $f				\" output footer title
3571638Srgrimes.nr ?h 0
3581638Srgrimes.bp
3591638Srgrimes..
3601638Srgrimes.de @t			\" --- output header or footer title
3611638Srgrimes.if !\\n(?h \
3621638Srgrimes\{\
3631638Srgrimes.	sz \\n(tp		\" set header/footer type fonts, etc.
3641638Srgrimes.	@F \\n(tf
3651638Srgrimes.	lt \\n(_Lu		\" make title span entire page
3661638Srgrimes.	nf
3671638Srgrimes.	\\$1
3681638Srgrimes.	br
3691638Srgrimes.\}
3701638Srgrimes..
3711638Srgrimes.de $h			\" $$$ print header
3721638Srgrimes.rm |z
3731638Srgrimes.if !\\n(?c \
3741638Srgrimes\{\
3751638Srgrimes.	if e .ds |z "\\*(|0
3761638Srgrimes.	if o .ds |z "\\*(|1
3771638Srgrimes.\}
3781638Srgrimes.if !\(ts\\*(|z\(ts\(ts \
3791638Srgrimes'	tl \\*(|z
3801638Srgrimes.rm |z
3811638Srgrimes..
3821638Srgrimes.de $f			\" $$$ print footer
3831638Srgrimes.rm |z
3841638Srgrimes.if \\n(?c \
3851638Srgrimes\{\
3861638Srgrimes.	if e .ds |z "\\*(|0
3871638Srgrimes.	if o .ds |z "\\*(|1
3881638Srgrimes.\}
3891638Srgrimes.if \(ts\\*(|z\(ts\(ts \
3901638Srgrimes\{\
3911638Srgrimes.	if e .ds |z "\\*(|2
3921638Srgrimes.	if o .ds |z "\\*(|3
3931638Srgrimes.\}
3941638Srgrimes.if !\(ts\\*(|z\(ts\(ts \
3951638Srgrimes'	tl \\*(|z
3961638Srgrimes.rm |z
3971638Srgrimes..
3981638Srgrimes.de @r			\" --- reprocess overflow footnotes
3991638Srgrimes.if \n@>3 .tm		>> @r .z=\\n(.z ?f=\\n(?f ?a=\\n(?a ?b=\\n(?b _b=\\n(_b
4001638Srgrimes.di |o				\" save overflow footnote
4011638Srgrimes.nr ?o 1
4021638Srgrimes.nr _D \\n(dn
4031638Srgrimes.ns
4041638Srgrimes..
4051638Srgrimes.\"		*** COMMANDS WITH VARIANT DEFINITIONS ***
4061638Srgrimes.rn bp @b		\" --- begin page
4071638Srgrimes.de bp			\" *** begin new page (overrides columns)
4081638Srgrimes.nr $c \\n($m			\" force new page, not new column
4091638Srgrimes.ie \\n(nl>0 \
4101638Srgrimes.	@b \\$1
4111638Srgrimes.el \
4121638Srgrimes\{\
4131638Srgrimes.	if \\n(.$>0 \
4141638Srgrimes.		pn \\$1
4151638Srgrimes.	if \\n(?I \
4161638Srgrimes.		@h		\" 'spring' the header trap
4171638Srgrimes.\}
4181638Srgrimes.br
4191638Srgrimes.wh 0 @h			\" reset header
4201638Srgrimes..
4211638Srgrimes.rn ll xl		\" *** special line length (local)
4221638Srgrimes.de ll			\" *** line length (global to environments)
4231638Srgrimes.xl \\$1
4241638Srgrimes.lt \\$1
4251638Srgrimes.nr $l \\n(.l
4261638Srgrimes.if (\\n($m<=1):(\\n($l>\\n(_L) \
4271638Srgrimes.	nr _L \\n(.l
4281638Srgrimes..
4291638Srgrimes.rn po @O		\" --- local page offset
4301638Srgrimes.de po			\" *** page offset
4311638Srgrimes.@O \\$1
4321638Srgrimes.nr _o \\n(.o
4331638Srgrimes..
4341638Srgrimes.\"		*** MISCELLANEOUS ROFF COMMANDS ***
4351638Srgrimes.de hx			\" *** suppress headers and footers next page
4361638Srgrimes.nr ?H 1
4371638Srgrimes..
4381638Srgrimes.de ix			\" *** indent, no break
4391638Srgrimes'in \\$1
4401638Srgrimes..
4411638Srgrimes.de bl			\" *** contiguous blank lines
4421638Srgrimes.br
4431638Srgrimes.ne \\$1
4441638Srgrimes.rs
4451638Srgrimes.sp \\$1
4461638Srgrimes..
4471638Srgrimes.de n1			\" *** line numbering 1
4481638Srgrimes.nm 1
4491638Srgrimes.xl -\w'0000'u
4501638Srgrimes.nr ?n 1
4511638Srgrimes..
4521638Srgrimes.de n2			\" *** line numbering 2
4531638Srgrimes.nm \\$1
4541638Srgrimes.ie \\n(.$ \
4551638Srgrimes.	xl -\w'0000'u
4561638Srgrimes.el \
4571638Srgrimes.	xl \\n($lu
4581638Srgrimes..
4591638Srgrimes.de pa			\" *** new page
4601638Srgrimes.bp \\$1
4611638Srgrimes..
4621638Srgrimes.de ro			\" *** roman page numbers
4631638Srgrimes.af % i
4641638Srgrimes..
4651638Srgrimes.de ar			\" *** arabic page numbers
4661638Srgrimes.af % 1
4671638Srgrimes..
4681638Srgrimes.de m1			\" *** position one space
4691638Srgrimes.nr _0 \\n(hmu
4701638Srgrimes.nr hm \\$1v
4711638Srgrimes.nr tm +\\n(hmu-\\n(_0u
4721638Srgrimes.rr _0
4731638Srgrimes..
4741638Srgrimes.de m2			\" *** position two space
4751638Srgrimes.nr tm \\n(hmu+\\n(tpp+\\$1v
4761638Srgrimes..
4771638Srgrimes.de m3			\" *** position three space
4781638Srgrimes.nr bm \\n(fmu+\\n(tpp+\\$1v
4791638Srgrimes..
4801638Srgrimes.de m4			\" *** position four space
4811638Srgrimes.nr _0 \\n(fmu
4821638Srgrimes.nr fm \\$1v
4831638Srgrimes.nr bm +\\n(fmu-\\n(_0u
4841638Srgrimes..
4851638Srgrimes.de sk			\" *** leave a blank page (next page)
4861638Srgrimes.if \\n(.$>0 \
4871638Srgrimes.	tm Line \\n(c. -- I cannot skip multiple pages
4881638Srgrimes.nr ?s 1
4891638Srgrimes..
4901638Srgrimes.\"		*** MISCELLANEOUS USER SUPPORT COMMANDS ***
4911638Srgrimes.de re			\" *** reset tabs (TROFF defines 15 stops default)
4921638Srgrimes.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
4931638Srgrimes..
4941638Srgrimes.if t .ig
4951638Srgrimes.de re			\" *** reset tabs (NROFF version)
4961638Srgrimes.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
4971638Srgrimes..
4981638Srgrimes.de ba			\" *** set base indent
4991638Srgrimes.ie \\n(.$ \
5001638Srgrimes.	nr $i \\$1n
5011638Srgrimes.el \
5021638Srgrimes.	nr $i \\n(siu*\\n($0u
5031638Srgrimes..
5041638Srgrimes.de hl			\" *** draw horizontal line
5051638Srgrimes.br
5061638Srgrimes\l'\\n(.lu-\\n(.iu'
5071638Srgrimes.sp
5081638Srgrimes..
5091638Srgrimes.\"		*** PARAGRAPHING ***
5101638Srgrimes.de pp			\" *** paragraph
5111638Srgrimes.lp \\n(piu
5121638Srgrimes..
5131638Srgrimes.de lp			\" *** left aligned paragraph
5141638Srgrimes.@p
5151638Srgrimes.if \\n(.$ \
5161638Srgrimes.	ti +\\$1
5171638Srgrimes.nr $p 0 1
5181638Srgrimes..
5191638Srgrimes.de ip			\" *** indented paragraph w/ optional tag
5201638Srgrimes.if (\\n(ii>0)&(\\n(ii<1n) \
5211638Srgrimes.	nr ii \\n(iin
5221638Srgrimes.nr _0 \\n(ii
5231638Srgrimes.if \\n(.$>1 \
5241638Srgrimes.	nr _0 \\$2n
5251638Srgrimes.@p \\n(_0u
5261638Srgrimes.if \\w"\\$1" \
5271638Srgrimes\{\
5281638Srgrimes.	ti -\\n(_0u
5291638Srgrimes.	ie \\w"\\$1">=\\n(_0 \
5301638Srgrimes\{\
5311638Srgrimes\&\\$1
5321638Srgrimes.		br
5331638Srgrimes.	\}
5341638Srgrimes.	el \&\\$1\h'|\\n(_0u'\c
5351638Srgrimes.\}
5361638Srgrimes.rr _0
5371638Srgrimes..
5381638Srgrimes.de np			\" *** numbered paragraph
5391638Srgrimes.if \\n($p<0 \
5401638Srgrimes.	nr $p 0			\" reset number after .bu
5411638Srgrimes.nr $p +1			\" increment paragraph number
5421638Srgrimes.@p \w'\0(000)\0'u
5431638Srgrimes.ti -\w'\0(000)\0'u
5441638Srgrimes\0(\\n($p)\h'|\w'\0(000)\0'u'\c
5451638Srgrimes..
5461638Srgrimes.de bu			\" *** bulleted paragraph
5471638Srgrimes.br
5481638Srgrimes.if \\n($p<0 \
5491638Srgrimes.	ns			\" don't space between .bu paragraphs
5501638Srgrimes.nr $p 0-1			\" mark "bulleted paragraph" mode
5511638Srgrimes.@p \w'\0\(bu\0'u
5521638Srgrimes.ti -\w'\0\(bu\0'u
5531638Srgrimes\0\(bu\0\c
5541638Srgrimes..
5551638Srgrimes.de @p			\" --- initialize for paragraph
5561638Srgrimes.@I				\" initialize macro processor
5571638Srgrimes.if "\\n(.z"|e" .tm Line \\n(c. -- Unmatched continued equation
5581638Srgrimes.in \\n($iu+\\n(pou
5591638Srgrimes.if \\n(.$ \
5601638Srgrimes.	in +\\$1n
5611638Srgrimes.ce 0
5621638Srgrimes.fi
5631638Srgrimes.@F \\n(pf
5641638Srgrimes.sz \\n(pp
5651638Srgrimes.sp \\n(psu
5661638Srgrimes.ne \\n(.Lv+\\n(.Vu
5671638Srgrimes.ns
5681638Srgrimes..
5691638Srgrimes.\"		*** SECTION HEADINGS ***
5701638Srgrimes.de sh			\" &&& section heading
5711638Srgrimes.rn sh @T
5721638Srgrimes.so \\*(||/sh.me
5731638Srgrimes.sh "\\$1" "\\$2" \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
5741638Srgrimes.rm @T
5751638Srgrimes..
5761638Srgrimes.de $p			\" $$$ print section heading
5771638Srgrimes.if (\\n(si>0)&(\\n(.$>2) \
5781638Srgrimes.	nr $i \\$3*\\n(si
5791638Srgrimes.in \\n($iu
5801638Srgrimes.ie !"\\$1\\$2"" \
5811638Srgrimes\{\
5821638Srgrimes.	sp \\n(ssu 		\" one of them is non-null
5831638Srgrimes.	ne \\n(.Lv+\\n(.Vu+\\n(psu+(\\n(spu*\\n($ru*\\n(.Lu)
5841638Srgrimes.	ie \\n(.$>2 \
5851638Srgrimes.		ti -(\\n(siu-\\n(sou)
5861638Srgrimes.	el \
5871638Srgrimes.		ti +\\n(sou
5881638Srgrimes.	@F \\n(sf
5891638Srgrimes.	sz \\n(sp
5901638Srgrimes.	if \\$3>0 \
5911638Srgrimes.		$\\$3
5921638Srgrimes.	if \w"\\$2">0 \\$2.
5931638Srgrimes.	if \w"\\$1">0 \\$1\f1\ \ \&
5941638Srgrimes.\}
5951638Srgrimes.el \
5961638Srgrimes.	sp \\n(psu
5971638Srgrimes.@F \\n(pf
5981638Srgrimes.sz \\n(pp
5991638Srgrimes..
6001638Srgrimes.de uh			\" *** unnumbered section heading
6011638Srgrimes.rn uh @T
6021638Srgrimes.so \\*(||/sh.me
6031638Srgrimes.uh "\\$1"
6041638Srgrimes.rm @T
6051638Srgrimes..
6061638Srgrimes.\"		*** COLUMNNED OUTPUT ***
6071638Srgrimes.de 2c			\" *** double columned output
6081638Srgrimes.br
6091638Srgrimes.if \\n($m>1 \
6101638Srgrimes.	1c			\" revert to 1c if already 2c
6111638Srgrimes.nr $c 1
6121638Srgrimes.nr $m 2
6131638Srgrimes.if \\n(.$>1 \
6141638Srgrimes.	nr $m \\$2
6151638Srgrimes.if \\n(.$>0 \
6161638Srgrimes.	nr $s \\$1n		\" param 1: column seperation
6171638Srgrimes.nr $l (\\n(.l-((\\n($m-1)*\\n($s))/\\n($m
6181638Srgrimes.xl \\n($lu
6191638Srgrimes.mk _k
6201638Srgrimes.ns
6211638Srgrimes..
6221638Srgrimes.de 1c			\" *** single columned output
6231638Srgrimes.br
6241638Srgrimes.nr $c 1
6251638Srgrimes.nr $m 1
6261638Srgrimes.ll \\n(_Lu			\" return to normal output
6271638Srgrimes.sp |\\n(.hu
6281638Srgrimes.@O \\n(_ou
6291638Srgrimes..
6301638Srgrimes.de bc			\" *** begin column
6311638Srgrimes.sp 24i
6321638Srgrimes..
6331638Srgrimes.\"		*** FLOATING TABLES AND NONFLOATING BLOCKS ***
6341638Srgrimes.de (z			\" &&& begin floating keep
6351638Srgrimes.rn (z @V
6361638Srgrimes.so \\*(||/float.me
6371638Srgrimes.(z \\$1 \\$2
6381638Srgrimes.rm @V
6391638Srgrimes..
6401638Srgrimes.de )z			\" &&& end floating keep
6411638Srgrimes.tm Line \\n(c. -- unmatched .)z
6421638Srgrimes..
6431638Srgrimes.de (t			\" XXX temp ref to (z
6441638Srgrimes.(z \\$1 \\$2
6451638Srgrimes..
6461638Srgrimes.de )t			\" XXX temp ref to )t
6471638Srgrimes.)z \\$1 \\$2
6481638Srgrimes..
6491638Srgrimes.de (b			\" *** begin block
6501638Srgrimes.br
6511638Srgrimes.@D 3 \\$1 \\$2
6521638Srgrimes.sp \\n(bsu
6531638Srgrimes.@(
6541638Srgrimes..
6551638Srgrimes.de )b			\" *** end block
6561638Srgrimes.br
6571638Srgrimes.@)
6581638Srgrimes.if (\\n(bt=0):(\\n(.t<\\n(bt) \
6591638Srgrimes.	ne \\n(dnu		\" make it all on one page
6601638Srgrimes.ls 1
6611638Srgrimes.nf
6621638Srgrimes.|k
6631638Srgrimes.ec
6641638Srgrimes.fi
6651638Srgrimes.in 0
6661638Srgrimes.xl \\n($lu
6671638Srgrimes.ev
6681638Srgrimes.rm |k
6691638Srgrimes.sp \\n(bsu+\\n(.Lv-1v
6701638Srgrimes..
6711638Srgrimes.de @(			\" --- begin keep
6721638Srgrimes.if !"\\n(.z"" .tm Line \\n(c. -- Illegal nested keep \\n(.z
6731638Srgrimes.@M
6741638Srgrimes.di |k
6751638Srgrimes\!'rs
6761638Srgrimes..
6771638Srgrimes.de @M			\" --- set modes for display
6781638Srgrimes.nr ?k 1
6791638Srgrimes.@C 1
6801638Srgrimes.@F \\n(df
6811638Srgrimes.vs \\n(.su*\\n($Ru
6821638Srgrimes.nf
6831638Srgrimes.if "\\*(|p"F" \
6841638Srgrimes.	fi			\" set fill mode if "F" parameter
6851638Srgrimes.if \\n(_d=4 \
6861638Srgrimes.	in 0
6871638Srgrimes.if \\n(_d=3 \
6881638Srgrimes\{\
6891638Srgrimes.	in +\\n(biu
6901638Srgrimes.	xl -\\n(biu
6911638Srgrimes.\}
6921638Srgrimes.if \\n(_d=1 \
6931638Srgrimes.	ce 10000
6941638Srgrimes..
6951638Srgrimes.de @)			\" --- end keep
6961638Srgrimes.br
6971638Srgrimes.if !"\\n(.z"|k" .tm Line \\n(c. -- Close of a keep which has never been opened
6981638Srgrimes.nr ?k 0
6991638Srgrimes.di
7001638Srgrimes.in 0
7011638Srgrimes.ce 0
7021638Srgrimes..
7031638Srgrimes.de (c			\" *** begin block centered text
7041638Srgrimes.if "\\n(.z"|c" .tm Line \\n(c. -- Nested .(c requests
7051638Srgrimes.di |c
7061638Srgrimes..
7071638Srgrimes.de )c			\" *** end block centered text
7081638Srgrimes.if !"\\n(.z"|c" .tm Line \\n(c. -- Unmatched .)c
7091638Srgrimes.br				\" force out final line
7101638Srgrimes.di
7111638Srgrimes.if \n@>4 .tm >> .)c .l=\\n(.l .i=\\n(.i $i=\\n($i dl=\\n(dl
7121638Srgrimes.ev 1
7131638Srgrimes.ls 1
7141638Srgrimes.in (\\n(.lu-\\n(.iu-\\n(dlu)/2u
7151638Srgrimes.if \n@>4 .tm -- .)c << .in .l=\\n(.l .i=\\n(.i dl=\\n(dl
7161638Srgrimes.nf
7171638Srgrimes.|c
7181638Srgrimes.ec
7191638Srgrimes.in
7201638Srgrimes.ls
7211638Srgrimes.ev
7221638Srgrimes.rm |c
7231638Srgrimes..
7241638Srgrimes.\"		*** BLOCK QUOTES (OR WHATEVER) AND LISTS ***
7251638Srgrimes.de (q			\" *** begin block quote
7261638Srgrimes.br
7271638Srgrimes.@C 1
7281638Srgrimes.fi
7291638Srgrimes.sp \\n(qsu
7301638Srgrimes.in +\\n(qiu
7311638Srgrimes.xl -\\n(qiu
7321638Srgrimes.sz \\n(qp
7331638Srgrimes..
7341638Srgrimes.de )q			\" *** end block quote
7351638Srgrimes.br
7361638Srgrimes.ev
7371638Srgrimes.sp \\n(qsu+\\n(.Lv-1v
7381638Srgrimes.nr ?k 0
7391638Srgrimes..
7401638Srgrimes.de (l			\" *** begin list
7411638Srgrimes.br
7421638Srgrimes.sp \\n(bsu
7431638Srgrimes.@D 3 \\$1 \\$2
7441638Srgrimes.@M
7451638Srgrimes..
7461638Srgrimes.de )l			\" *** end list
7471638Srgrimes.br
7481638Srgrimes.ev
7491638Srgrimes.sp \\n(bsu+\\n(.Lv-1v
7501638Srgrimes.nr ?k 0
7511638Srgrimes..
7521638Srgrimes.\"		*** PREPROCESSOR SUPPORT ***
7531638Srgrimes.\"
7541638Srgrimes.\"	EQN
7551638Srgrimes.\"
7561638Srgrimes.de EQ			\" &&& begin equation
7571638Srgrimes.rn EQ @T
7581638Srgrimes.so \\*(||/eqn.me
7591638Srgrimes.EQ \\$1 \\$2
7601638Srgrimes.rm @T
7611638Srgrimes..
7621638Srgrimes.\"
7631638Srgrimes.\"	TBL
7641638Srgrimes.\"
7651638Srgrimes.de TS			\" &&& begin table
7661638Srgrimes.rn TS @W
7671638Srgrimes.so \\*(||/tbl.me
7681638Srgrimes.TS \\$1 \\$2
7691638Srgrimes.rm @W
7701638Srgrimes..
7711638Srgrimes.\"
7721638Srgrimes.\"	REFER
7731638Srgrimes.\"
7741638Srgrimes.de ]-			\" &&& initialize reference
7751638Srgrimes.rn ]- @]
7761638Srgrimes.so \\*(||/refer.me
7771638Srgrimes.]-
7781638Srgrimes.rm @]
7791638Srgrimes..
7801638Srgrimes.de ]<			\" &&& initialize reference
7811638Srgrimes.rn ]< @]
7821638Srgrimes.so \\*(||/refer.me
7831638Srgrimes.]<
7841638Srgrimes.rm @]
7851638Srgrimes..
7861638Srgrimes.if n .ds [. " [
7871638Srgrimes.if t .ds [. \s-2\v'-.4m'\f1
7881638Srgrimes.if n .ds .] ]
7891638Srgrimes.if t .ds .] \v'.4m'\s+2\fP
7901638Srgrimes.if n .ds <. "
7911638Srgrimes.if t .ds <. .
7921638Srgrimes.if n .ds >. .
7931638Srgrimes.if t .ds >. "
7941638Srgrimes.\"
7951638Srgrimes.\"	IDEAL
7961638Srgrimes.\"
7971638Srgrimes.de IS			\" *** start ideal picture
7981638Srgrimes.nr g7 \\n(.u
7991638Srgrimes.ls 1
8001638Srgrimes..
8011638Srgrimes.de IF
8021638Srgrimes.if \\n(g7 .fi
8031638Srgrimes.ls
8041638Srgrimes..
8051638Srgrimes.de IE			\" *** end ideal picture
8061638Srgrimes.if \\n(g7 .fi
8071638Srgrimes.ls
8081638Srgrimes..
8091638Srgrimes.\"
8101638Srgrimes.\"	PIC
8111638Srgrimes.\"
8121638Srgrimes.de PS		\" *** start picture: $1=height, $2=width in units or inches
8131638Srgrimes.if t \
8141638Srgrimes.	sp 0.3
8151638Srgrimes.nr g7 \\$2
8161638Srgrimes.in (\\n(.lu-\\n(g7u)/2u
8171638Srgrimes.ne \\$1u
8181638Srgrimes.nr g7 \\n(.u
8191638Srgrimes.ls 1
8201638Srgrimes..
8211638Srgrimes.de PE			\" *** end picture
8221638Srgrimes.ls
8231638Srgrimes.in
8241638Srgrimes.if \\n(g7 .fi
8251638Srgrimes.if t .sp .6
8261638Srgrimes..
8271638Srgrimes.\"
8281638Srgrimes.\"	GREMLIN
8291638Srgrimes.\"
8301638Srgrimes.de GS			\" *** start gremlin picture
8311638Srgrimes.nr g7 (\\n(.lu-\\n(g1u)/2u
8321638Srgrimes.if "\\$1"L" .nr g7 \\n(.iu
8331638Srgrimes.if "\\$1"R" .nr g7 \\n(.lu-\\n(g1u
8341638Srgrimes.in \\n(g7u
8351638Srgrimes.nr g7 \\n(.u
8361638Srgrimes.ls 1
8371638Srgrimes.nf
8381638Srgrimes.ne \\n(g2u
8391638Srgrimes..
8401638Srgrimes.de GE			\" *** end gremlin picture
8411638Srgrimes.GF
8421638Srgrimes.if t .sp .6
8431638Srgrimes..
8441638Srgrimes.de GF			\" *** finish gremlin picture; stay at top
8451638Srgrimes.ls
8461638Srgrimes.in
8471638Srgrimes.if \\n(g7 .fi
8481638Srgrimes..
8491638Srgrimes.\"		*** FONT AIDS ***
8501638Srgrimes.de sz			\" *** set point size and vertical spacing
8511638Srgrimes.ps \\$1
8521638Srgrimes.vs \\n(.su*\\n($ru		\" default vs at pointsize + 20%
8531638Srgrimes.bd S B \\n(.su/3u
8541638Srgrimes..
8551638Srgrimes.de r			\" *** enter roman font
8561638Srgrimes.nr _F \\n(.f
8571638Srgrimes.ul 0
8581638Srgrimes.ft 1
8591638Srgrimes.if \\n(.$ \&\\$1\f\\n(_F\\$2
8601638Srgrimes.rr _F
8611638Srgrimes..
8621638Srgrimes.de i			\" *** enter italic
8631638Srgrimes.nr _F \\n(.f
8641638Srgrimes.ul 0
8651638Srgrimes.ft 2
8661638Srgrimes.if \\n(.$ \&\\$1\f\\n(_F\\$2
8671638Srgrimes.rr _F
8681638Srgrimes..
8691638Srgrimes.de b			\" *** enter boldface (underline in NROFF)
8701638Srgrimes.nr _F \\n(.f
8711638Srgrimes.ul 0
8721638Srgrimes.ft \\n($b
8731638Srgrimes.if \\n(.$ \&\\$1\f\\n(_F\\$2
8741638Srgrimes.rr _F
8751638Srgrimes..
8761638Srgrimes.de rb			\" *** enter real boldface (not underlined in NROFF)
8771638Srgrimes.nr _F \\n(.f
8781638Srgrimes.ul 0
8791638Srgrimes.ft 3
8801638Srgrimes.if \\n(.$ \&\\$1\f\\n(_F\\$2
8811638Srgrimes.rr _F
8821638Srgrimes..
8831638Srgrimes.de u			\" *** enter underlined word
8841638Srgrimes\&\\$1\l'|0\(ul'\\$2
8851638Srgrimes..
8861638Srgrimes.de q			\" *** enter quoted word
8871638Srgrimes\&\\*(lq\\$1\\*(rq\\$2
8881638Srgrimes..
8891638Srgrimes.de bi			\" *** enter word in bold italics
8901638Srgrimes.ft 2
8911638Srgrimes.ie t \&\k~\\$1\h'|\\n~u+(\\w' 'u/4u)'\\$1\fP\\$2
8921638Srgrimes.el \&\\$1\fP\\$2
8931638Srgrimes..
8941638Srgrimes.de bx			\" *** enter boxed word
8951638Srgrimes.ie \\n($T \&\f2\\$1\fP\\$2
8961638Srgrimes.el \k~\(br\|\\$1\|\(br\l'|\\n~u\(rn'\l'|\\n~u\(ul'\^\\$2
8971638Srgrimes..
8981638Srgrimes.de sm			\" *** print in smaller font
8991638Srgrimes\s-1\\$1\\s0\\$2
9001638Srgrimes..
9011638Srgrimes.de @F			\" --- change font (8 -> underlined, 0 -> no change)
9021638Srgrimes.nr ~ \\$1
9031638Srgrimes.if \\n~>0 \
9041638Srgrimes\{\
9051638Srgrimes.	ul 0
9061638Srgrimes.	if \\n~=8 \
9071638Srgrimes.		nr ~ \\n($b
9081638Srgrimes.	ft \\n~
9091638Srgrimes.\}
9101638Srgrimes.rr ~
9111638Srgrimes..
9121638Srgrimes.\"		*** FOOTNOTING ***
9131638Srgrimes.de (f			\" &&& begin footnote
9141638Srgrimes.rn (f @U
9151638Srgrimes.so \\*(||/footnote.me
9161638Srgrimes.(f \\$1 \\$2
9171638Srgrimes.rm @U
9181638Srgrimes..
9191638Srgrimes.de )f			\" &&& end footnote
9201638Srgrimes.tm Line \\n(c. -- unmatched .)f
9211638Srgrimes..
9221638Srgrimes.de $s			\" $$$ footnote separator
9231638Srgrimes\l'2i'
9241638Srgrimes.if n \
9251638Srgrimes.	sp 0.3
9261638Srgrimes..
9271638Srgrimes.\"		*** DELAYED TEXT ***
9281638Srgrimes.de (d			\" &&& begin delayed text
9291638Srgrimes.rn (d @U
9301638Srgrimes.so \\*(||/deltext.me
9311638Srgrimes.(d \\$1 \\$2
9321638Srgrimes.rm @U
9331638Srgrimes..
9341638Srgrimes.de )d			\" &&& end delayed text
9351638Srgrimes.tm Line \\n(c. -- unmatched .)d
9361638Srgrimes..
9371638Srgrimes.\"		*** INDEXES (TABLE OF CONTENTS) ***
9381638Srgrimes.de (x			\" &&& begin index
9391638Srgrimes.rn (x @U
9401638Srgrimes.so \\*(||/index.me
9411638Srgrimes.(x \\$1 \\$2
9421638Srgrimes.rm @U
9431638Srgrimes..
9441638Srgrimes.de )x			\" &&& end index entry
9451638Srgrimes.tm Line \\n(c. -- unmatched .)x
9461638Srgrimes..
9471638Srgrimes.\"		*** STUFF FOR "STANDARD" PAPERS ***
9481638Srgrimes.de th			\" *** set "thesis" mode
9491638Srgrimes.so \\*(||/thesis.me
9501638Srgrimes.rm th
9511638Srgrimes..
9521638Srgrimes.de +c			\" *** begin chapter
9531638Srgrimes.ep				\" force out footnotes
9541638Srgrimes.if \\n(?o:\\n(?a \
9551638Srgrimes\{\
9561638Srgrimes.	bp			\" force out a table or more footnote
9571638Srgrimes.	rs
9581638Srgrimes.	ep
9591638Srgrimes.\}
9601638Srgrimes.nr ?C 1
9611638Srgrimes.nr $f 1 1
9621638Srgrimes.ds * \\*[1\\*]\k*
9631638Srgrimes.if \\n(?R \
9641638Srgrimes.	pn 1
9651638Srgrimes.bp
9661638Srgrimes.in \\n($iu			\" reset the indent
9671638Srgrimes.rs
9681638Srgrimes.ie \\n(.$ \
9691638Srgrimes.	$c "\\$1"
9701638Srgrimes.el \
9711638Srgrimes.	sp 3
9721638Srgrimes..
9731638Srgrimes.de ++			\" *** declare chapter type
9741638Srgrimes.nr _0 0
9751638Srgrimes.if "\\$1"C" \
9761638Srgrimes.	nr _0 1			\" chapter
9771638Srgrimes.if "\\$1"RC" \
9781638Srgrimes.	nr _0 11		\" renumbered chapter
9791638Srgrimes.if "\\$1"A" \
9801638Srgrimes.	nr _0 2			\" appendix
9811638Srgrimes.if "\\$1"RA" \
9821638Srgrimes.	nr _0 12		\" renumbered appendix
9831638Srgrimes.if "\\$1"P" \
9841638Srgrimes.	nr _0 3			\" preliminary material
9851638Srgrimes.if "\\$1"B" \
9861638Srgrimes.	nr _0 4			\" bibliographic material
9871638Srgrimes.if "\\$1"AB" \
9881638Srgrimes.	nr _0 5			\" abstract
9891638Srgrimes.if \\n(_0=0 \
9901638Srgrimes.	tm Line \\n(c. -- Bad mode to .++
9911638Srgrimes.nr ?R 0
9921638Srgrimes.if \\n(_0>10 \
9931638Srgrimes.\{
9941638Srgrimes.	nr ?R 1
9951638Srgrimes.	nr _0 -10
9961638Srgrimes.\}
9971638Srgrimes.nr ch 0 1
9981638Srgrimes.if (\\n(_0=3):(\\n(_0=5) \
9991638Srgrimes.	pn 1			\" must do before .ep
10001638Srgrimes.ep				\" end page for correct page number types
10011638Srgrimes.if \\n(_0=1 \
10021638Srgrimes\{\
10031638Srgrimes.	af ch 1
10041638Srgrimes.	af % 1
10051638Srgrimes.\}
10061638Srgrimes.if \\n(_0=2 \
10071638Srgrimes\{\
10081638Srgrimes.	af ch A
10091638Srgrimes.	af % 1
10101638Srgrimes.\}
10111638Srgrimes.if \\n(_0=3 \
10121638Srgrimes.	af % i
10131638Srgrimes.if \\n(_0=4 \
10141638Srgrimes.	af % 1
10151638Srgrimes.if \\n(_0=5 \
10161638Srgrimes.	af % 1
10171638Srgrimes.if \\n(.$>1 \
10181638Srgrimes.	he \\$2
10191638Srgrimes.if !\\n(_0=\\n(_M .if \\n(_M=3 \
10201638Srgrimes.	pn 1
10211638Srgrimes.nr _M \\n(_0
10221638Srgrimes.rr _0
10231638Srgrimes..
10241638Srgrimes.de $c			\" $$$ print chapter title
10251638Srgrimes.sz 12
10261638Srgrimes.ft B
10271638Srgrimes.ce 1000
10281638Srgrimes.if \\n(_M<3 \
10291638Srgrimes.	nr ch +1
10301638Srgrimes.ie \\n(_M=1 CHAPTER\ \ \\n(ch
10311638Srgrimes.el .if \\n(_M=2 APPENDIX\ \ \\n(ch
10321638Srgrimes.if \w"\\$1" .sp 3-\\n(.L
10331638Srgrimes.if \w"\\$1" \\$1
10341638Srgrimes.if (\\n(_M<3):(\w"\\$1") \
10351638Srgrimes.	sp 4-\\n(.L
10361638Srgrimes.ce 0
10371638Srgrimes.ft
10381638Srgrimes.sz
10391638Srgrimes.ie \\n(_M=1 \
10401638Srgrimes.	$C Chapter \\n(ch "\\$1"
10411638Srgrimes.el .if \\n(_M=2 \
10421638Srgrimes.	$C Appendix \\n(ch "\\$1"
10431638Srgrimes..
10441638Srgrimes.de tp			\" *** title page
10451638Srgrimes.hx
10461638Srgrimes.bp
10471638Srgrimes.br
10481638Srgrimes.rs
10491638Srgrimes.pn \\n%
10501638Srgrimes..
10511638Srgrimes.de ac			\" *** setup for ACM photo-ready paper
10521638Srgrimes.rn ac @T
10531638Srgrimes.so \\*(||/acm.me
10541638Srgrimes.ac "\\$1" "\\$2"
10551638Srgrimes.rm @T
10561638Srgrimes..
10571638Srgrimes.de lo			\" *** pull in the set of local macros
10581638Srgrimes.\" all these macros should be named "*X", where X is any letter
10591638Srgrimes.so \\*(||/local.me
10601638Srgrimes.rm lo
10611638Srgrimes..
10621638Srgrimes.de lh			\" *** letterhead
10631638Srgrimes.so \\*(||/letterhead.me
10641638Srgrimes..
10651638Srgrimes.\"		*** DATES ***
10661638Srgrimes.if \n(mo=1 .ds mo January
10671638Srgrimes.if \n(mo=2 .ds mo February
10681638Srgrimes.if \n(mo=3 .ds mo March
10691638Srgrimes.if \n(mo=4 .ds mo April
10701638Srgrimes.if \n(mo=5 .ds mo May
10711638Srgrimes.if \n(mo=6 .ds mo June
10721638Srgrimes.if \n(mo=7 .ds mo July
10731638Srgrimes.if \n(mo=8 .ds mo August
10741638Srgrimes.if \n(mo=9 .ds mo September
10751638Srgrimes.if \n(mo=10 .ds mo October
10761638Srgrimes.if \n(mo=11 .ds mo November
10771638Srgrimes.if \n(mo=12 .ds mo December
10781638Srgrimes.if \n(dw=1 .ds dw Sunday
10791638Srgrimes.if \n(dw=2 .ds dw Monday
10801638Srgrimes.if \n(dw=3 .ds dw Tuesday
10811638Srgrimes.if \n(dw=4 .ds dw Wednesday
10821638Srgrimes.if \n(dw=5 .ds dw Thursday
10831638Srgrimes.if \n(dw=6 .ds dw Friday
10841638Srgrimes.if \n(dw=7 .ds dw Saturday
108531906Sjraynard.ds td \*(mo \n(dy, \n(yr+1900
10861638Srgrimes.\"		*** PARAMETRIC INITIALIZATIONS ***
10871638Srgrimes.if (1m<0.1i)&(\nx!=0) \
10881638Srgrimes.	vs 9p			\" for 12-pitch DTC terminals
10891638Srgrimes.rr x
10901638Srgrimes.nr $r \n(.v/\n(.s		\" ratio of vs to ps for .sz request
10911638Srgrimes.nr $R \n($r			\" ratio for displays & footnotes
10921638Srgrimes.nr hm 4v			\" header margin
10931638Srgrimes.nr tm 7v			\" top margin
10941638Srgrimes.nr bm 6v			\" bottom margin
10951638Srgrimes.nr fm 3v			\" footer margin
10961638Srgrimes.nr tf 3			\" title font: (real) Times Bold
10971638Srgrimes.nr tp 10			\" title point size
10981638Srgrimes.hy 14
10991638Srgrimes.nr bi 4m			\" indent for blocks
11001638Srgrimes.nr pi 5n			\" indent for paragraphs
11011638Srgrimes.nr pf 1			\" normal text font
11021638Srgrimes.nr pp 10			\" normal text point size
11031638Srgrimes.nr qi 4n			\" indent for quotes
11041638Srgrimes.nr qp -1			\" down one point
11051638Srgrimes.nr ii 5n			\" indent for .ip's and .np's
11061638Srgrimes.nr $m 1			\" max number of columns
11071638Srgrimes.nr $s 4n			\" column separation
11081638Srgrimes.bd S B 3
11091638Srgrimes.\"		*** OTHER INITIALIZATION ***
11101638Srgrimes.ds [ \u\x'-0.25v'
11111638Srgrimes.ds ] \d
11121638Srgrimes.ds < \d\x'0.25v'
11131638Srgrimes.ds > \u
11141638Srgrimes.ds - --
11151638Srgrimes.if t \
11161638Srgrimes\{\
11171638Srgrimes.	ds [ \v'-0.4m'\x'-0.2m'\s-3
11181638Srgrimes.	ds ] \s0\v'0.4m'
11191638Srgrimes.	ds < \v'0.4m'\x'0.2m'\s-3
11201638Srgrimes.	ds > \s0\v'-0.4m'
11211638Srgrimes.	ds - \(em
11221638Srgrimes.	nr fi 0.3i
11231638Srgrimes.\}
11241638Srgrimes.if n \
11251638Srgrimes\{\
11261638Srgrimes.	nr fi 3n
11271638Srgrimes.\}
11281638Srgrimes.nr _o \n(.o
11291638Srgrimes.if n .po 1i
11301638Srgrimes.if \n(.V=1v \
11311638Srgrimes.	nr $T 2
11321638Srgrimes.if n .if \n(.T=0 \
11331638Srgrimes.	nr $T 1
11341638Srgrimes.if \nv=2 \
11351638Srgrimes\{\
11361638Srgrimes.	nr $T 0
11371638Srgrimes.	po -0.5i		\" make ugly line on LHS on C/A/T typesetters
11381638Srgrimes.\}
11391638Srgrimes.if \n($T \
11401638Srgrimes\{\
11411638Srgrimes.	if \n($T=1 \
11421638Srgrimes.		po 0
11431638Srgrimes.	ds [ [
11441638Srgrimes.	ds ] ]
11451638Srgrimes.	ds < <
11461638Srgrimes.	ds > >
11471638Srgrimes.\}
11481638Srgrimes.nr $b \nb			\" figure the real font 8 font
11491638Srgrimes.rr b
11501638Srgrimes.if \n($b=0 \
11511638Srgrimes\{\
11521638Srgrimes.	if n .nr $b 2		\" italic
11531638Srgrimes.	if t .nr $b 3		\" bold
11541638Srgrimes.\}
11551638Srgrimes.nr ps 0.5v			\" paragraph pre/post spacing
11561638Srgrimes.if \n($T \
11571638Srgrimes.	nr ps 1v
11581638Srgrimes.if t .nr ps 0.35v
11591638Srgrimes.nr bs \n(ps			\" block pre/post spacing
11601638Srgrimes.nr qs \n(ps			\" quote pre/post spacing
11611638Srgrimes.nr zs 1v			\" float-block pre/postspacing
11621638Srgrimes.nr xs 0.2v			\" index prespacing
11631638Srgrimes.nr fs 0.2v			\" footnote prespacing
11641638Srgrimes.if \n($T \
11651638Srgrimes.	nr fs 0
11661638Srgrimes.if n .nr es 1v			\" equation pre/postspacing
11671638Srgrimes.if t .nr es 0.5v
11681638Srgrimes.wh 0 @h			\" set header
11691638Srgrimes.nr $l \n(.lu			\" line length
11701638Srgrimes.nr _L \n(.lu			\" line length of page
11711638Srgrimes.nr $c 1			\" current column number
11721638Srgrimes.nr $f 1 1			\" footnote number
11731638Srgrimes.ds * \*[1\*]\k*\"		\" footnote "name"
11741638Srgrimes.nr $d 1 1			\" delayed text number
11751638Srgrimes.ds # [1]\k#\"			\" delayed text "name"
11761638Srgrimes.nr _M 1			\" chapter mode is chapter
11771638Srgrimes.ds lq \&"\"			\" left quote
11781638Srgrimes.ds rq \&"\"			\" right quote
11791638Srgrimes.if t \
11801638Srgrimes.	ds lq ``
11811638Srgrimes.if t \
11821638Srgrimes.	ds rq ''
11831638Srgrimes.em @z
11841638Srgrimes.\"		*** FOREIGN LETTERS AND SPECIAL CHARACTERS ***
11851638Srgrimes.de sc			\" *** define special characters
11861638Srgrimes.so \\*(||/chars.me
11871638Srgrimes.rm sc
11881638Srgrimes..
11891638Srgrimes.ll 6.0i
11901638Srgrimes.lt 6.0i
1191