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