1 .\" @(#)tmac.e 2.31 (Berkeley) 5/21/88
2 .\" Modified by James Clark for use with groff.
4 .\" Copyright (c) 1988 Regents of the University of California.
5 .\" All rights reserved.
7 .\" Redistribution and use in source and binary forms are permitted
8 .\" provided that this notice is preserved and that due credit is given
9 .\" to the University of California at Berkeley. The name of the University
10 .\" may not be used to endorse or promote products derived from this
11 .\" software without specific prior written permission. This software
12 .\" is provided ``as is'' without express or implied warranty.
15 .\"**********************************************************************
17 .\"* ****** - M E N R O F F / T R O F F M A C R O S ****** *
19 .\"* Produced for your edification and enjoyment by: *
21 .\"* Electronics Research Laboratory *
23 .\"* current address: *
24 .\"* Britton-Lee, Inc. *
25 .\"* 1919 Addison Street Suite 105 *
26 .\"* Berkeley, California 94704 *
28 .\"* VERSION 2.31 First Release: 11 Sept 1978 *
30 .\"* Documentation is available. *
32 .\"**********************************************************************
34 .\" Code on .de commands:
35 .\" *** a user interface macro.
36 .\" &&& a user interface macro which is redefined
37 .\" when used to be the real thing.
38 .\" $$$ a macro which may be redefined by the user
39 .\" to provide variant functions.
40 .\" --- an internal macro.
45 .de @R \" --- initialize number register to 0, if undefined
51 .de @S \" --- initialize string/macro to empty, if undefined
52 .if !d\\$1 .ds \\$1 \" empty
54 .@R @\" \" debugging level
55 .\" *** INTERNAL GP MACROS ***
56 .de @C \" --- change ev's, taking info with us
77 .de @D \" --- determine display type (Indent, Left, Center)
93 .de @z \" --- end macro
94 .if \n@>1 .tm >> @z, .z=\\n(.z ?a=\\n(?a
97 . tm Line \\n(c. -- Unclosed block, footnote, or other diversion (\\n(.z)
102 . bp \" force out final table
104 .ds @b\" \" don't start another page
108 .\" *** STANDARD HEADERS AND FOOTERS ***
109 .ie \n(.g .ds $* \\\\$*
110 .el .ds $* \\\\$1 \\\\$2 \\\\$3 \\\\$4 \\\\$5 \\\\$6 \\\\$7 \\\\$8 \\\\$9
111 .de he \" *** define header
123 .de eh \" *** define even header
129 .de oh \" *** define odd header
135 .de fo \" *** define footer
147 .de ef \" *** define even foot
153 .de of \" *** define odd footer
159 .de ep \" *** end page (must always be followed by a .bp)
167 .\" *** INTERNAL HEADER AND FOOTER MACROS ***
169 .if \n@>1 .tm >> @h %=\\n% ?a=\\n(?a ?b=\\n(?b ?w=\\n(?w
170 .if (\\n(.i+\\n(.o)>=\\n(.l \
171 . tm Line \\n(c. -- Offset + indent exceeds line length
172 .\" initialize a pile of junk
173 .nr ?h \\n(?H \" transfer "next page" to "this page"
181 .nr _w 0 \" reset max footnote width
182 .nr ?W 0 \" no wide floats this page (yet)
184 .\" begin actual header stuff
188 . sp |\\n(hmu \" move to header position
189 .@t $h \" output header title
192 .sp |\\n(tmu \" move to top of text
194 .mk _k \" for columned output
195 .if \\n(?n .nm 1 \" restore line numbering if n1 mode
196 .nr $c 1 \" set first column
197 .if \n@>4 .tm -- @h >> .ns nl=\\n(nl %=\\n% _k=\\n(_k tm=\\n(tm
205 . @n \" begin the column
208 .de @n \" --- new column or page
209 .if \n@>3 .tm >> @n nl=\\n(nl %=\\n% ?f=\\n(?f ?o=\\n(?o
212 .if (\\n(_w<=\\n($l)&(\\n(?W=0) \
214 . nr _b (\\n(ppp*\\n($vu)/200u \" compute fudge factor (must be < 1P)
215 . if \\n(_bu>((\\n(bmu-\\n(fmu-((\\n(tpp*\\n($vu)/100u))/2u) \
216 . nr _b (\\n(ppp*\\n($vu)/100u-\n(.Vu
222 .nr _b +(\\n(ppp*\\n($vu)/100u \" add 1 paragraph v in case of sweep past
223 .if \n@>2 .tm @n .p=\\n(.p bm=\\n(bm _b=\\n(_b _B=\\n(_B
224 .nr ?f 0 \" reset footnote flag
227 . (f _ \" reprocess footnotes which run off page
239 . |h \" output the table header
242 . mk #T \" for tbl commands
245 .if (\\n(?a)&((\\n($c<2):(\\n(?w=0)) \
247 . nr ?a 0 \" output floating keep
250 . mk _k \" don't overstrike wide keeps
254 .$H \" special column header macro
258 .if \n@>1 .tm >> @f %=\\n% nl=\\n(nl ?a=\\n(?a ?b=\\n(?b ?f=\\n(?f
259 .if \n@>2 .nr VL \\n(.pu-\\n(nlu
260 .if \n@>2 .tm @f bm=\\n(bm _B=\\n(_B _b=\\n(_b .p-nl=\\n(VL
264 . nr T. 1 \" for tbl commands (to output bottom line)
265 . T# 1 \" output the sides and bottom lines
273 . @k |b\" \" output bottom of page tables
276 . @o \" output footnote if present
278 . @c \" handle new column
284 .de @o \" --- output footnote
288 .if \n@>2 .tm @o last printed text = \\n(nl placing @r trap at -\\n(_B
292 .if \n@>2 .tm @o triggered @r (?o) = \\n(?o
295 . di \" just in case triggered @r
307 .de @c \" --- new column
308 .if \n@>2 .tm >> @c %=\\n%
315 .de @e \" --- end page
319 .sp |\\n(.pu-\\n(fmu-((\\n(tpp*\\n($vu)/100u) \" move to footer position
320 .@t $f \" output footer title
324 .de @t \" --- output header or footer title
327 . sz \\n(tp \" set header/footer type fonts, etc.
329 . lt \\n(_Lu \" make title span entire page
335 .de $h \" $$$ print header
339 . if e .ds |z "\\*(|0
340 . if o .ds |z "\\*(|1
342 .if !\(ts\\*(|z\(ts\(ts \
346 .de $f \" $$$ print footer
350 . if e .ds |z "\\*(|0
351 . if o .ds |z "\\*(|1
353 .if \(ts\\*(|z\(ts\(ts \
355 . if e .ds |z "\\*(|2
356 . if o .ds |z "\\*(|3
358 .if !\(ts\\*(|z\(ts\(ts \
362 .de @r \" --- reprocess overflow footnotes
363 .if \n@>3 .tm >> @r .z=\\n(.z ?f=\\n(?f ?a=\\n(?a ?b=\\n(?b _b=\\n(_b
364 .di |o \" save overflow footnote
369 .\" *** COMMANDS WITH VARIANT DEFINITIONS ***
370 .rn bp @b \" --- begin page
371 .de bp \" *** begin new page (overrides columns)
372 .nr $c \\n($m \" force new page, not new column
380 . @h \" 'spring' the header trap
383 .wh 0 @h \" reset header
385 .rn ll xl \" *** special line length (local)
386 .de ll \" *** line length (global to environments)
390 .if (\\n($m<=1):(\\n($l>\\n(_L) \
393 .rn po @O \" --- local page offset
394 .de po \" *** page offset
398 .\" Redefine the fam request to set the family in
399 .\" environment 2 as well as the current environment.
401 .do rn fam @fam \" --- set family in current environment
402 .do de fam \" *** set font family in ev 2 and current ev
408 .\" *** MISCELLANEOUS ROFF COMMANDS ***
409 .de hx \" *** suppress headers and footers next page
412 .de ix \" *** indent, no break
415 .de bl \" *** contiguous blank lines
421 .de n1 \" *** line numbering 1
426 .de n2 \" *** line numbering 2
433 .de pa \" *** new page
436 .de ro \" *** roman page numbers
439 .de ar \" *** arabic page numbers
442 .de m1 \" *** position one space
445 .nr tm +\\n(hmu-\\n(_0u
448 .de m2 \" *** position two space
449 .nr tm \\n(hmu+\\n(tpp+\\$1v
451 .de m3 \" *** position three space
452 .nr bm \\n(fmu+\\n(tpp+\\$1v
454 .de m4 \" *** position four space
457 .nr bm +\\n(fmu-\\n(_0u
459 .de sk \" *** leave a blank page (next page)
461 . tm Line \\n(c. -- I cannot skip multiple pages
464 .\" *** MISCELLANEOUS USER SUPPORT COMMANDS ***
466 .de re \" *** reset tabs (TROFF defines 15 stops default)
471 .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 .de ba \" *** set base indent
477 . nr $i \\n(siu*\\n($0u
479 .de hl \" *** draw horizontal line
481 .ie \n(.g .do nr _I \\n[.in]
486 .\" *** PARAGRAPHING ***
487 .de pp \" *** paragraph
490 .de lp \" *** left aligned paragraph
496 .de ip \" *** indented paragraph w/ optional tag
497 .if (\\n(ii>0)&(\\n(ii<1n) \
514 . ie \\w"\\*(|j">=\\n(_0 \
519 . el \\*(|j\h'|\\n(_0u'\c
524 .de np \" *** numbered paragraph
525 .\" use string comparison in case user has changed format of $p
527 . nr $p 0 \" reset number after .bu
528 .nr $p +1 \" increment paragraph number
531 \0(\\n($p)\h'|\w'\0(000)\0'u'\c
533 .de bu \" *** bulleted paragraph
535 .\" use string comparison in case user has changed format of $p
537 . ns \" don't space between .bu paragraphs
538 .nr $p 0-1 \" mark "bulleted paragraph" mode
543 .de @p \" --- initialize for paragraph
544 .if "\\n(.z"|e" .tm Line \\n(c. -- Unmatched continued equation
556 .\" *** SECTION HEADINGS ***
557 .de sh \" *** section heading
559 .if (\\n(si>0)&(\\n(si<1n) \
562 .@d "\\$1" +1 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
566 . $p "\\*(|n" "\\*($n" \\n($0
567 . $0 "\\*(|n" "\\*($n" \\n($0
570 .nr $p 0 1 \" reset .np count
572 .de @d \" --- change section depth
575 .if \\n($0&(\\n(.$>1) \
582 . if (\\n(.$>=3) .if !"\\$3"-" \
592 . if (\\n(.$>=4) .if !"\\$4"-" \
602 . if (\\n(.$>=5) .if !"\\$5"-" \
612 . if (\\n(.$>=6) .if !"\\$6"-" \
622 . if (\\n(.$>=7) .if !"\\$7"-" \
632 . if (\\n(.$>=8) .if !"\\$8"-" \
639 .de sx \" *** heading up, no increment (2.1.1 -> 2.1)
644 .if \\n(.$ .nr _0 \\$1
648 .nr $p 0 1 \" reset .np count
650 .de uh \" *** unnumbered section heading
654 .de $p \" $$$ print section heading
655 .if (\\n(si>0)&(\\n(.$>2) \
660 . sp \\n(ssu \" one of them is non-null
661 . ne \\n(.Lv+\\n(.Vu+\\n(psu+((\\n(spp*\\n($vu*\\n(.Lu)/100u)
662 . \" exdent if \\$3 > 0
664 . ti -(\\n(siu-\\n(sou)
671 . if \w"\\$2">0 \\$2.
672 . if \w"\\$1">0 \\$1\f1\ \ \&
679 .\" *** COLUMNNED OUTPUT ***
680 .de 2c \" *** double columned output
683 . 1c \" revert to 1c if already 2c
689 . nr $s \\$1n \" param 1: column seperation
690 .nr $l (\\n(.l-((\\n($m-1)*\\n($s))/\\n($m
695 .de 1c \" *** single columned output
699 .ll \\n(_Lu \" return to normal output
703 .de bc \" *** begin column
706 .\" *** FLOATING TABLES AND NONFLOATING BLOCKS ***
707 .de (z \" *** begin floating keep
708 .if \n@>4 .tm >> (z, .z=\n(.z
712 .de )z \" *** end floating keep
713 .if \n@>4 .tm >> )z, .z=\n(.z
716 .if \n@>4 .tm -- )z << @), .z=\n(.z
719 . nr dn +(\\n(ppp*\\n($vu)/200u+\\n(zsu
720 .nr dl -\n(.H \" fudge factor necessary to make it work
721 .ie ((\\n(dn+\n(.V)>=\\n(.t):(\\n(?a):((\\n(dl>\\n($l)&(\\n($c>1)) \
724 . if (\\n(dl>\\n($l)&(\\n($m>1) \
725 . nr ?w 1 \" mark wider than one column (top)
731 . if (\\n(dl>\\n($l)&(\\n($m>1) \
732 . nr ?W 1 \" mark wider than one column (bottom)
734 . \" avoid moving @f back past the current position
735 . if \\n(.p-\\n(nl-\n(.V<\\n(_b \
736 . nr _b \\n(.p-\\n(nl-\n(.V
740 .da \\*(|x \" copy to save macro
744 .if \n@>4 .tm -- )z >> \\*(|x
745 \!.if \\\\n(nl>(\\\\n(tm+2v) .ne \\n(dnu-\\n(zsu
746 .|k\" \" and the body
748 .if \n@>4 .tm -- )z << \\*(|x, .z=\\n(.z
750 .rm |k\" \" remove the temp macro
756 .if \n@>4 .tm << )z, .z=\\n(.z
758 .de @k \" --- output floating keep
759 .if \n@>4 .tm >> @k, $1=\\$1, .z=\\n(.z
771 .de (t \" XXX temp ref to (z
774 .de )t \" XXX temp ref to )t
777 .de (b \" *** begin block
783 .de )b \" *** end block
786 .if (\\n(bt=0):(\\n(.t<\\n(bt) \
787 . ne \\n(dnu \" make it all on one page
797 .sp \\n(bsu+\\n(.Lv-1v
799 .de @( \" --- begin keep
800 .if !"\\n(.z"" .tm Line \\n(c. -- Illegal nested keep \\n(.z
805 .de @M \" --- set modes for display
810 .vs \\n(.sp*\\n($Vu/100u
813 . fi \" set fill mode if "F" parameter
824 .de @) \" --- end keep
826 .if !"\\n(.z"|k" .tm Line \\n(c. -- Close of a keep which has never been opened
832 .de (c \" *** begin block centered text
833 .if "\\n(.z"|c" .tm Line \\n(c. -- Nested .(c requests
836 .de )c \" *** end block centered text
837 .if !"\\n(.z"|c" .tm Line \\n(c. -- Unmatched .)c
838 .br \" force out final line
840 .if \n@>4 .tm >> .)c .l=\\n(.l .i=\\n(.i $i=\\n($i dl=\\n(dl
843 .in (\\n(.lu-\\n(.iu-\\n(dlu)/2u
844 .if \n@>4 .tm -- .)c << .in .l=\\n(.l .i=\\n(.i dl=\\n(dl
853 .\" *** BLOCK QUOTES (OR WHATEVER) AND LISTS ***
854 .de (q \" *** begin block quote
863 .de )q \" *** end block quote
866 .sp \\n(qsu+\\n(.Lv-1v
869 .de (l \" *** begin list
875 .de )l \" *** end list
878 .sp \\n(bsu+\\n(.Lv-1v
881 .\" *** PREPROCESSOR SUPPORT ***
885 .de EQ \" *** equation start
889 . if "\\n(.z"|e" .tm Line \\n(c. -- Nested .EQ request
898 .de EN \" *** equation end
910 . @q \" actual equation output
915 .de @q \" --- equation output
918 .sp \\n(esu \" output rest of preceeding text
919 .if !"\\n(.z"" \!.ne \\n(_Qu
920 .ne \\n(_Qu+\n(.Vu \" keep it on one page
921 .@C 2 \" .ev 2 may be jumbled from header
923 . in (\\n(.lu+\\n($iu-\\n(dlu)/2u
931 .if \n@>1 .tm --@e: _Q=\\n(_Q _q=\\n(_q nl=\\n(nl |p=\\*(|p
935 . sp (\\n(_Qu-\\n(.vu)/2u
941 .sp \\n(esu+\\n(.Lv-1v
948 .de TS \" *** table start
951 .fi \" drop into fill mode for text boxes
954 . di |h \" save header part
958 .ch @f -(\\n(_bu+1v) \" set pseudo-trap for bottom line
959 .if \\n(.p-\\n(_b-1v<=\\n(nl \
960 . ch @f \\n(nlu+\n(.Vu
962 .de TH \" *** end header part of table
972 .|h \" put in the initial header
977 .de TE \" *** table end
979 .ch @f -\\n(_bu \" reset pseudo-trap
980 .if \\n(.p-\\n(_b<=\\n(nl \
981 . ch @f \\n(nlu+\n(.Vu
983 .sp \\n(bsu+\\n(.Lv-1v
989 .de ][ \" *** refer output
990 .if \\$1>5 .tm Bad arg to []
996 .if !"\\*([A"" \\*([A,
997 .if !"\\*([T"" \\f2\\*([T\\f1\c
998 .if !"\\*([T"" .if !"\\*([O"" ,\
999 .ie !"\\*([O"" \\*([O
1000 .el .if !"\\*([T"" \&.
1001 .if !"\\*([D"" \\*([D.
1005 .de [1 \" --- journal article
1009 .if !"\\*([T"" \\*(lq\\*([T,\\*(rq
1010 .if "\\*([V"" \\f2\\*([J\\f1,
1011 .if !"\\*([V"" \\f2\\*([J\\f1
1012 .if !"\\*([V"" \\f3\\*([V\\f1\c
1013 .if !"\\*([N"" (\\*([N)\c
1016 . ie \\n([P>0 \ pp.\&
1020 .if !"\\*([I"" .if "\\*([R"" \\*([I,
1022 .if !"\\*([O"" \\*([O
1028 \\*([A, \\f2\\*([T,\\f1
1030 .if !"\\*([C"" , \\*([C\c
1032 .if !"\\*([G"" Gov't. ordering no. \\*([G
1033 .if !"\\*([O"" \\*([O
1036 .de [3 \" --- article in book
1039 \\*([A, \\*(lq\\*([T,\\*(rq
1040 .if !"\\*([P"" pp. \\*([P
1041 in \\f2\\*([B\\f1, \c
1042 .if !"\\*([E"" ed. \\*([E, \c
1043 .if !"\\*([I"" \\*([I\c
1044 .if !"\\*([C"" , \\*([C\c
1046 .if !"\\*([O"" \\*([O
1049 .de [4 \" --- report
1052 \\*([A, \\*(lq\\*([T,\\*(rq
1054 .if !"\\*([G"" \& (\\*([G)\c
1055 .if !"\\*([I"" , \\*([I\c
1056 .if !"\\*([C"" , \\*([C\c
1058 .if !"\\*([O"" \\*([O
1061 .de [5 \" --- tm style
1064 \\*([A, \\f2\\*([T\\f1,
1066 .el Bell Laboratories internal memorandum (\\*([D).
1078 .rm [V [P [A [T [N [C [B [O [R [I [E [D
1082 . ds [. \s-2\v'-.4m'\f1
1083 . ds .] \v'.4m'\s+2\fP
1093 .de IS \" *** start ideal picture
1101 .de IE \" *** end ideal picture
1108 .de PS \" *** start picture: $1=height, $2=width in units or inches
1111 .in (\\n(.lu-\\n(g7u)/2u
1116 .de PE \" *** end picture
1125 .de GS \" *** start gremlin picture
1126 .nr g7 (\\n(.lu-\\n(g1u)/2u
1127 .if "\\$1"L" .nr g7 \\n(.iu
1128 .if "\\$1"R" .nr g7 \\n(.lu-\\n(g1u
1135 .de GE \" *** end gremlin picture
1139 .de GF \" *** finish gremlin picture; stay at top
1144 .\" *** FONT AIDS ***
1145 .de sz \" *** set point size and vertical spacing
1148 .vs \\n(.sp*\\n($vu/100u \" default vs at pointsize + 20%
1150 .de @v \" --- possibly set $v from $r
1151 .if (1i>=240u)&(1p<=\\n($r)&(\\n($r<=4p) .nr $v \\n($r00/1p
1153 .de @V \" --- possibly set $V from $R
1154 .if (1i>=240u)&(1p<=\\n($R)&(\\n($R<=4p) .nr $V \\n($R00/1p
1156 .de @E \" --- store in _F argument to \f for restoring font
1161 . ie \\n(.f<100&\n(.g \
1167 .de r \" *** enter roman font
1170 .if \\n(.$ \&\\$1\f\\*(_F\\$2
1172 .de i \" *** enter italic
1175 .if \\n(.$ \&\\$1\f\\*(_F\\$2
1177 .de b \" *** enter boldface
1180 .if \\n(.$ \&\\$1\f\\*(_F\\$2
1182 .de rb \" *** enter real boldface
1185 .if \\n(.$ \&\\$1\f\\*(_F\\$2
1187 .de bi \" *** enter bold italic
1190 .if \\n(.$ \&\\$1\f\\*(_F\\$2
1192 .de u \" *** enter underlined word
1193 \&\\$1\l'|0\(ul'\\$2
1195 .\" a better version of u
1198 \Z'\\$1'\v'.25m'\D'l \w'\\$1'u 0'\v'-.25m'\\$2
1200 .de q \" *** enter quoted word
1201 \&\\*(lq\\$1\\*(rq\\$2
1203 .de bx \" *** enter boxed word
1204 \k~\(br\|\\$1\|\(br\l'|\\n~u\(rn'\l'|\\n~u\(ul'\^\\$2
1206 .de sm \" *** print in smaller font
1209 .de @F \" --- change font (0 -> no change)
1215 .\" *** FOOTNOTING ***
1216 .de (f \" *** begin footnote
1218 .if "\\n(.z"|f" .tm Line \\n(c. -- Illegal footnote nesting
1226 . xl \\n($lu-\\n(fuu
1229 . vs \\n(.sp*\\n($Vu/100u
1232 . nr _b +1v \" allow space for $s
1236 . if \\n(.p-\\n(_b-\\n(_0-\\n(.h-1v-\\n(fs<0 \
1238 . da\" \" won't fit on page at all
1243 .\" next five lines could be dropped if headers had their own environment
1244 . in 0 \" reset everything from .bc
1245 . xl \\n($lu-\\n(fuu
1248 . vs \\n(.sp*\\n($Vu/100u
1259 . if \n@>2 .tm << (f $f=\\n($f
1265 . xl \\n($lu-\\n(fuu
1268 . vs \\n(.sp*\\n($Vu/100u
1274 .de @N \" --- set no fill mode in the top-level diversion
1278 .de )f \" *** end footnote
1283 . ds * \\*{\\n($f\\*}\k*
1288 . if \\n(_w<\\n(dl \
1289 . nr _w \\n(dl \" compute maximum fn width
1292 . if \\n(.p-\\n(_b<=\\n(nl \
1293 . ch @f \\n(nlu+\n(.Vu
1306 . nr ff 1 \" footnote font: Times Roman
1309 . nr fp 8 \" footnote pointsize
1310 .de $s \" $$$ footnote separator
1313 .\" *** DELAYED TEXT ***
1314 .de (d \" *** begin delayed text
1318 .de )d \" *** end delayed text
1324 .de pd \" *** print delayed text
1330 .\" *** INDEXES (TABLE OF CONTENTS) ***
1333 .de (x \" *** begin index entry
1334 .if \n@>4 .tm >> (x, .z=\\n(.z
1344 .de @0 \" --- finish (x if no current diversion
1349 .de @1 \" --- finish (x if current diversion
1350 .if "\\n(_x"z" .nr _x 0
1353 .de )x \" *** end index entry
1354 .if \n@>4 .tm >> )x, .z=\\n(.z
1363 . if \w"\\$2">(\\n(.l-\\n(.i-\\n(.k) \
1365 \\\\a\\\\t\\$2\\*(|x
1378 .de xp \" *** print the index
1382 .vs \\n(.sp*\\n($Vu/100u
1388 .xl -(\\n(xuu+\w'...'u)
1399 .ta \\n(.lu-\\n(xuuR \\n(.luR
1405 .de +c \" *** begin chapter
1406 .ep \" force out footnotes
1409 . bp \" force out a table or more footnote
1419 .in \\n($iu \" reset the indent
1426 .de ++ \" *** declare chapter type
1429 . nr _0 1 \" chapter
1431 . nr _0 11 \" renumbered chapter
1433 . nr _0 2 \" appendix
1435 . nr _0 12 \" renumbered appendix
1437 . nr _0 3 \" preliminary material
1439 . nr _0 4 \" bibliographic material
1441 . nr _0 5 \" abstract
1443 . tm Line \\n(c. -- Bad mode to .++
1451 .if (\\n(_0=3):(\\n(_0=5) \
1452 . pn 1 \" must do before .ep
1453 .if !\\n(_0=\\n(_M .if \\n(_M=3 \
1454 . pn 1 \" must do before .ep
1455 .ep \" end page for correct page number types
1477 .de $c \" $$$ print chapter title
1483 .ie \\n(_M=1 CHAPTER\ \ \\n(ch
1484 .el .if \\n(_M=2 APPENDIX\ \ \\n(ch
1485 .if \w"\\$1" .sp 3-\\n(.L
1487 .if (\\n(_M<3):(\w"\\$1") \
1493 . $C Chapter \\n(ch "\\$1"
1495 . $C Appendix \\n(ch "\\$1"
1497 .de tp \" *** title page
1505 .if \n(mo=1 .ds mo January
1506 .if \n(mo=2 .ds mo February
1507 .if \n(mo=3 .ds mo March
1508 .if \n(mo=4 .ds mo April
1509 .if \n(mo=5 .ds mo May
1510 .if \n(mo=6 .ds mo June
1511 .if \n(mo=7 .ds mo July
1512 .if \n(mo=8 .ds mo August
1513 .if \n(mo=9 .ds mo September
1514 .if \n(mo=10 .ds mo October
1515 .if \n(mo=11 .ds mo November
1516 .if \n(mo=12 .ds mo December
1517 .if \n(dw=1 .ds dw Sunday
1518 .if \n(dw=2 .ds dw Monday
1519 .if \n(dw=3 .ds dw Tuesday
1520 .if \n(dw=4 .ds dw Wednesday
1521 .if \n(dw=5 .ds dw Thursday
1522 .if \n(dw=6 .ds dw Friday
1523 .if \n(dw=7 .ds dw Saturday
1527 .ds td \*(mo \n(dy, \n(y4
1528 .\" *** PARAMETRIC INITIALIZATIONS ***
1530 .nr $v \n(.v00+\n(.sp-1/\n(.sp \" vs as percentage of ps for .sz request
1531 .nr $V \n($v \" same for displays & footnotes
1532 .nr hm 4v \" header margin
1533 .nr tm 7v \" top margin
1534 .nr bm 6v \" bottom margin
1535 .nr fm 3v \" footer margin
1536 .nr tf 3 \" title font: (real) Times Bold
1537 .nr tp 10 \" title point size
1539 .nr bi 4m \" indent for blocks
1540 .nr pi 5n \" indent for paragraphs
1541 .nr pf 1 \" normal text font
1542 .nr pp 10 \" normal text point size
1543 .nr qi 4n \" indent for quotes
1544 .nr qp -1 \" down one point
1545 .nr ii 5n \" indent for .ip's and .np's
1546 .nr $m 1 \" max number of columns
1547 .nr $s 4n \" column separation
1548 .nr sf 3 \" section font -- Times Bold
1549 .nr sp 10 \" section title pointsize
1550 .nr ss 12p \" section prespacing
1551 .nr si 0 \" section indent
1552 .\" *** OTHER INITIALIZATION ***
1553 .\" GNU pic sets this register to 1, to indicate that \x should not be used.
1555 .ds { \v'-0.4m'\x'\\n(0x=0*-0.2m'\s-3
1557 .\" for compatibility with traditional -me
1558 .\" (the first will work only in compatibility mode)
1561 .ds < \v'0.4m'\x'\\n(0x=0*0.2m'\s-3
1564 .\" Avoid warnings from groff -ww.
1581 .@R po\" \" simulated page offset
1582 .@R $0\" \" section depth
1583 .@R $i\" \" paragraph base indent
1584 .@R $p\" \" numbered paragraph number
1585 .@R $r\" \" ratio of vs to ps (may override $v)
1586 .@R $R\" \" same for displays (may override $V)
1587 .@R df\" \" display font: same as surrounding text
1588 .@R so\" \" additional section title offset
1589 .@R fu\" \" footnote undent
1590 .@R bt\" \" block keep threshold
1591 .@R *\" \" has \** been referenced?
1592 .@R ?a\" \" pending floating keep at page top?
1593 .@R ?b\" \" pending floating keep at page bottom?
1594 .@R ?C\" \" at chapter header?
1595 .@R ?e\" \" in equation?
1596 .@R ?H\" \" suppress headers and footers next page?
1597 .@R ?I\" \" has the header trap been sprung?
1598 .@R ?n\" \" n1 mode?
1599 .@R ?o\" \" footnote overflow?
1600 .@R ?R\" \" renumbered chapter?
1601 .@R ?s\" \" skip next page?
1602 .@R ?T\" \" inside .TS H?
1603 .@R ?W\" \" wide floating keep at page bottom?
1604 .@R ?w\" \" wide floating keep at page top?
1609 .if \n(ps<\n(.V .nr ps \n(.V
1610 .nr bs \n(ps \" block pre/post spacing
1611 .nr qs \n(ps \" quote pre/post spacing
1612 .nr zs 1v \" float-block pre/postspacing
1613 .nr xs 0.2v \" index prespacing
1614 .nr xu 0.5i \" index undent
1615 .nr fs 0.2v \" footnote prespacing
1616 .nr es 0.5v \" equation pre/postspacing
1617 .if \n(es<\n(.V .nr es \n(.V
1618 .wh 0 @h \" set header
1619 .nr $l \n(.lu \" line length
1620 .nr _L \n(.lu \" line length of page
1621 .nr $c 1 \" current column number
1622 .nr $f 1 1 \" footnote number
1623 .ds * \*{1\*}\k*\" \" footnote "name"
1624 .nr $d 1 1 \" delayed text number
1625 .ds # [1]\k#\" \" delayed text "name"
1626 .nr _M 1 \" chapter mode is chapter
1627 .ds lq \(lq\" \" left quote
1628 .ds rq \(rq\" \" right quote
1630 .\" *** FOREIGN LETTERS AND SPECIAL CHARACTERS ***
1631 .ds #h ((1u-(\\\\n(.fu%2u))*0.13m)
1634 .ds ' \k_\h'-(\\n(.wu*8/10-\*(#h)'\(aa\h'|\\n_u'
1635 .ds ` \k_\h'-(\\n(.wu*7/10-\*(#h)'\(ga\h'|\\n_u'
1637 .ds : \k_\h'-(\\n(.wu*8/10-\*(#h+0.1m)'\v'-\*(#v'\z.\h'0.2m'.\h'|\\n_u'\v'\*(#v'
1638 .\" \" circumflex and tilde
1639 .ds ^ \k_\h'-(\\n(.wu-\*(#h-0.05m)'^\h'|\\n_u'
1640 .ds ~ \k_\h'-(\\n(.wu-\*(#h-0.05m)'~\h'|\\n_u'
1641 .\" \" cedilla and czech
1642 .ds , \k_\h'-(\\n(.wu)',\h'|\\n_u'
1643 .ds v \k_\h'-(\\n(.wu*9/10-\*(#h)'\v'-\*(#v'\s-4v\s0\v'\*(#v'\h'|\\n_u'
1644 .\" \" Norwegian A or angstrom
1645 .ds o \k_\h'-(\\n(.wu+\w'\(de'u-\*(#h)/2u'\v'-0.4n'\z\(de\v'0.4n'\h'|\\n_u'
1646 .\" \" there exists, for all
1647 .ds qe \s-2\v'0.45m'\z\(em\v'-0.625m'\z\(em\v'-0.625m'\(em\v'0.8m'\s0\h'-0.1m'\v'-0.05m'\(br\v'0.05m'\h'0.1m'
1648 .ds qa \z\e\h'0.35m'\z\(sl\h'-0.33m'\v'-0.3m'\s-4\(em\s0\v'0.3m'\h'0.15m'
1653 .tm The \\$1 macro has been removed from this version of the -me macros.