1 .\" @(#)e.tmac 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.
43 .de @R \" --- initialize number register to 0, if undefined
49 .de @S \" --- initialize string/macro to empty, if undefined
50 .if !d\\$1 .ds \\$1 \" empty
52 .@R @\" \" debugging level
53 .\" *** INTERNAL GP MACROS ***
54 .de @C \" --- change ev's, taking info with us
78 .de @D \" --- determine display type (Indent, Left, Center)
94 .de @z \" --- end macro
95 .if \n@>1 .tm >> @z, .z=\\n(.z ?a=\\n(?a
98 . tm Line \\n(c. -- Unclosed block, footnote, or other diversion (\\n(.z)
103 . bp \" force out final table
105 .ds @b\" \" don't start another page
109 .\" *** STANDARD HEADERS AND FOOTERS ***
110 .ie \n(.g .ds $* \\\\$*
111 .el .ds $* \\\\$1 \\\\$2 \\\\$3 \\\\$4 \\\\$5 \\\\$6 \\\\$7 \\\\$8 \\\\$9
112 .de he \" *** define header
124 .de eh \" *** define even header
130 .de oh \" *** define odd header
136 .de fo \" *** define footer
148 .de ef \" *** define even foot
154 .de of \" *** define odd footer
160 .de ep \" *** end page (must always be followed by a .bp)
168 .\" *** INTERNAL HEADER AND FOOTER MACROS ***
170 .if \n@>1 .tm >> @h %=\\n% ?a=\\n(?a ?b=\\n(?b ?w=\\n(?w
171 .if (\\n(.i+\\n(.o)>=\\n(.l \
172 . tm Line \\n(c. -- Offset + indent exceeds line length
173 .\" initialize a pile of junk
174 .nr ?h \\n(?H \" transfer "next page" to "this page"
182 .nr _w 0 \" reset max footnote width
183 .nr ?W 0 \" no wide floats this page (yet)
185 .\" begin actual header stuff
189 . sp |\\n(hmu \" move to header position
190 .@t $h\" \" output header title
193 .sp |\\n(tmu \" move to top of text
195 .mk _k \" for columned output
196 .if \\n(?n .nm 1 \" restore line numbering if n1 mode
197 .nr $c 1 \" set first column
198 .if \n@>4 .tm -- @h >> .ns nl=\\n(nl %=\\n% _k=\\n(_k tm=\\n(tm
206 . @n\" \" begin the column
209 .de @n \" --- new column or page
210 .if \n@>3 .tm >> @n nl=\\n(nl %=\\n% ?f=\\n(?f ?o=\\n(?o
213 .if (\\n(_w<=\\n($l)&(\\n(?W=0) \
215 . nr _b (\\n(ppp*\\n($vu)/200u \" compute fudge factor (must be < 1P)
216 . if \\n(_bu>((\\n(bmu-\\n(fmu-((\\n(tpp*\\n($vu)/100u))/2u) \
217 . nr _b (\\n(ppp*\\n($vu)/100u-\n(.Vu
223 .nr _b +(\\n(ppp*\\n($vu)/100u \" add 1 paragraph v in case of sweep past
224 .if \n@>2 .tm @n .p=\\n(.p bm=\\n(bm _b=\\n(_b _B=\\n(_B
225 .nr ?f 0 \" reset footnote flag
228 . (f _\" \" reprocess footnotes which run off page
240 . |h\" \" output the table header
243 . mk #T \" for tbl commands
246 .if (\\n(?a)&((\\n($c<2):(\\n(?w=0)) \
248 . nr ?a 0 \" output floating keep
251 . mk _k \" don't overstrike wide keeps
255 .$H\" \" special column header macro
259 .if \n@>1 .tm >> @f %=\\n% nl=\\n(nl ?a=\\n(?a ?b=\\n(?b ?f=\\n(?f
260 .if \n@>2 .nr VL \\n(.pu-\\n(nlu
261 .if \n@>2 .tm @f bm=\\n(bm _B=\\n(_B _b=\\n(_b .p-nl=\\n(VL
265 . nr T. 1 \" for tbl commands (to output bottom line)
266 . T# 1\" \" output the sides and bottom lines
274 . @k |b\" \" output bottom of page tables
277 . @o\" \" output footnote if present
279 . @c\" \" handle new column
285 .de @o \" --- output footnote
289 .if \n@>2 .tm @o last printed text = \\n(nl placing @r trap at -\\n(_B
293 .if \n@>2 .tm @o triggered @r (?o) = \\n(?o
296 . di \" just in case triggered @r
308 .de @c \" --- new column
309 .if \n@>2 .tm >> @c %=\\n%
316 .de @e \" --- end page
320 .sp |\\n(.pu-\\n(fmu-((\\n(tpp*\\n($vu)/100u) \" move to footer position
321 .@t $f\" \" output footer title
325 .de @t \" --- output header or footer title
328 . sz \\n(tp\" \" set header/footer type fonts, etc.
330 . lt \\n(_Lu \" make title span entire page
336 .de $h \" $$$ print header
340 . if e .ds |z "\\*(|0
341 . if o .ds |z "\\*(|1
343 .if !\(ts\\*(|z\(ts\(ts \
347 .de $f \" $$$ print footer
351 . if e .ds |z "\\*(|0
352 . if o .ds |z "\\*(|1
354 .if \(ts\\*(|z\(ts\(ts \
356 . if e .ds |z "\\*(|2
357 . if o .ds |z "\\*(|3
359 .if !\(ts\\*(|z\(ts\(ts \
363 .de @r \" --- reprocess overflow footnotes
364 .if \n@>3 .tm >> @r .z=\\n(.z ?f=\\n(?f ?a=\\n(?a ?b=\\n(?b _b=\\n(_b
365 .di |o \" save overflow footnote
370 .\" *** COMMANDS WITH VARIANT DEFINITIONS ***
371 .rn bp @b \" --- begin page
372 .de bp \" *** begin new page (overrides columns)
373 .nr $c \\n($m \" force new page, not new column
381 . @h\" \" 'spring' the header trap
384 .wh 0 @h \" reset header
386 .rn ll xl \" *** special line length (local)
387 .de ll \" *** line length (global to environments)
391 .if (\\n($m<=1):(\\n($l>\\n(_L) \
394 .rn po @O \" --- local page offset
395 .de po \" *** page offset
399 .\" Redefine the fam request to set the family in
400 .\" environment 2 as well as the current environment.
402 .do rn fam @fam \" --- set family in current environment
403 .do de fam \" *** set font family in ev 2 and current ev
409 .\" *** MISCELLANEOUS ROFF COMMANDS ***
410 .de hx \" *** suppress headers and footers next page
413 .de ix \" *** indent, no break
416 .de bl \" *** contiguous blank lines
422 .de n1 \" *** line numbering 1
427 .de n2 \" *** line numbering 2
434 .de pa \" *** new page
437 .de ro \" *** roman page numbers
440 .de ar \" *** arabic page numbers
443 .de m1 \" *** position one space
446 .nr tm +\\n(hmu-\\n(_0u
449 .de m2 \" *** position two space
450 .nr tm \\n(hmu+\\n(tpp+\\$1v
452 .de m3 \" *** position three space
453 .nr bm \\n(fmu+\\n(tpp+\\$1v
455 .de m4 \" *** position four space
458 .nr bm +\\n(fmu-\\n(_0u
460 .de sk \" *** leave a blank page (next page)
462 . tm Line \\n(c. -- I cannot skip multiple pages
465 .\" *** MISCELLANEOUS USER SUPPORT COMMANDS ***
467 .de re \" *** reset tabs (TROFF defines 15 stops default)
472 .ta 0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i
474 .de ba \" *** set base indent
478 . nr $i \\n(siu*\\n($0u
480 .de hl \" *** draw horizontal line
482 .ie \n(.g .do nr _I \\n[.in]
487 .\" *** PARAGRAPHING ***
488 .de pp \" *** paragraph
491 .de lp \" *** left aligned paragraph
497 .de ip \" *** indented paragraph w/ optional tag
498 .if (\\n(ii>0)&(\\n(ii<1n) \
515 . ie \\w"\\*(|j">=\\n(_0 \
520 . el \\*(|j\h'|\\n(_0u'\c
525 .de np \" *** numbered paragraph
526 .\" use string comparison in case user has changed format of $p
528 . nr $p 0 \" reset number after .bu
529 .nr $p +1 \" increment paragraph number
532 \0(\\n($p)\h'|\w'\0(000)\0'u'\c
534 .de bu \" *** bulleted paragraph
536 .\" use string comparison in case user has changed format of $p
538 . ns \" don't space between .bu paragraphs
539 .nr $p 0-1 \" mark "bulleted paragraph" mode
544 .de @p \" --- initialize for paragraph
545 .if "\\n(.z"|e" .tm Line \\n(c. -- Unmatched continued equation
557 .\" *** SECTION HEADINGS ***
558 .de sh \" *** section heading
560 .if (\\n(si>0)&(\\n(si<1n) \
563 .@d "\\$1" +1 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
567 . $p "\\*(|n" "\\*($n" \\n($0
568 . $0 "\\*(|n" "\\*($n" \\n($0
571 .nr $p 0 1 \" reset .np count
573 .de @d \" --- change section depth
576 .if \\n($0&(\\n(.$>1) \
583 . if (\\n(.$>=3) .if !"\\$3"-" \
593 . if (\\n(.$>=4) .if !"\\$4"-" \
603 . if (\\n(.$>=5) .if !"\\$5"-" \
613 . if (\\n(.$>=6) .if !"\\$6"-" \
623 . if (\\n(.$>=7) .if !"\\$7"-" \
633 . if (\\n(.$>=8) .if !"\\$8"-" \
640 .de sx \" *** heading up, no increment (2.1.1 -> 2.1)
645 .if \\n(.$ .nr _0 \\$1
649 .nr $p 0 1 \" reset .np count
651 .de uh \" *** unnumbered section heading
655 .de $p \" $$$ print section heading
656 .if (\\n(si>0)&(\\n(.$>2) \
661 . sp \\n(ssu \" one of them is non-null
662 . ne \\n(.Lv+\\n(.Vu+\\n(psu+((\\n(spp*\\n($vu*\\n(.Lu)/100u)
663 . \" exdent if \\$3 > 0
665 . ti -(\\n(siu-\\n(sou)
672 . if \w"\\$2">0 \\$2.
673 . if \w"\\$1">0 \\$1\f1\ \ \&
680 .\" *** COLUMNNED OUTPUT ***
681 .de 2c \" *** double columned output
684 . 1c\" \" revert to 1c if already 2c
690 . nr $s \\$1n \" param 1: column seperation
691 .nr $l (\\n(.l-((\\n($m-1)*\\n($s))/\\n($m
696 .de 1c \" *** single columned output
700 .ll \\n(_Lu \" return to normal output
704 .de bc \" *** begin column
707 .\" *** FLOATING TABLES AND NONFLOATING BLOCKS ***
708 .de (z \" *** begin floating keep
709 .if \n@>4 .tm >> (z, .z=\n(.z
713 .de )z \" *** end floating keep
714 .if \n@>4 .tm >> )z, .z=\n(.z
717 .if \n@>4 .tm -- )z << @), .z=\n(.z
720 . nr dn +(\\n(ppp*\\n($vu)/200u+\\n(zsu
721 .nr dl -\n(.H \" fudge factor necessary to make it work
722 .ie ((\\n(dn+\n(.V)>=\\n(.t):(\\n(?a):((\\n(dl>\\n($l)&(\\n($c>1)) \
725 . if (\\n(dl>\\n($l)&(\\n($m>1) \
726 . nr ?w 1 \" mark wider than one column (top)
732 . if (\\n(dl>\\n($l)&(\\n($m>1) \
733 . nr ?W 1 \" mark wider than one column (bottom)
735 . \" avoid moving @f back past the current position
736 . if \\n(.p-\\n(nl-\n(.V<\\n(_b \
737 . nr _b \\n(.p-\\n(nl-\n(.V
741 .da \\*(|x \" copy to save macro
745 .if \n@>4 .tm -- )z >> \\*(|x
746 \!.if \\\\n(nl>(\\\\n(tm+2v) .ne \\n(dnu-\\n(zsu
747 .|k\" \" and the body
749 .if \n@>4 .tm -- )z << \\*(|x, .z=\\n(.z
751 .rm |k\" \" remove the temp macro
757 .if \n@>4 .tm << )z, .z=\\n(.z
759 .de @k \" --- output floating keep
760 .if \n@>4 .tm >> @k, $1=\\$1, .z=\\n(.z
772 .de (t \" XXX temp ref to (z
775 .de )t \" XXX temp ref to )t
778 .de (b \" *** begin block
784 .de )b \" *** end block
787 .if (\\n(bt=0):(\\n(.t<\\n(bt) \
788 . ne \\n(dnu \" make it all on one page
798 .sp \\n(bsu+\\n(.Lv-1v
800 .de @( \" --- begin keep
801 .if !"\\n(.z"" .tm Line \\n(c. -- Invalid nested keep \\n(.z
806 .de @M \" --- set modes for display
811 .vs \\n(.sp*\\n($Vu/100u
814 . fi \" set fill mode if "F" parameter
825 .de @) \" --- end keep
827 .if !"\\n(.z"|k" .tm Line \\n(c. -- Close of a keep which has never been opened
833 .de (c \" *** begin block centered text
834 .if "\\n(.z"|c" .tm Line \\n(c. -- Nested .(c requests
837 .de )c \" *** end block centered text
838 .if !"\\n(.z"|c" .tm Line \\n(c. -- Unmatched .)c
839 .br \" force out final line
841 .if \n@>4 .tm >> .)c .l=\\n(.l .i=\\n(.i $i=\\n($i dl=\\n(dl
844 .in (\\n(.lu-\\n(.iu-\\n(dlu)/2u
845 .if \n@>4 .tm -- .)c << .in .l=\\n(.l .i=\\n(.i dl=\\n(dl
854 .\" *** BLOCK QUOTES (OR WHATEVER) AND LISTS ***
855 .de (q \" *** begin block quote
864 .de )q \" *** end block quote
867 .sp \\n(qsu+\\n(.Lv-1v
870 .de (l \" *** begin list
876 .de )l \" *** end list
879 .sp \\n(bsu+\\n(.Lv-1v
882 .\" *** PREPROCESSOR SUPPORT ***
886 .de EQ \" *** equation start
890 . if "\\n(.z"|e" .tm Line \\n(c. -- Nested .EQ request
899 .de EN \" *** equation end
911 . @q\" \" actual equation output
916 .de @q \" --- equation output
919 .sp \\n(esu \" output rest of preceeding text
920 .if !"\\n(.z"" \!.ne \\n(_Qu
921 .ne \\n(_Qu+\n(.Vu \" keep it on one page
922 .@C 2\" \" .ev 2 may be jumbled from header
924 . in (\\n(.lu+\\n($iu-\\n(dlu)/2u
932 .if \n@>1 .tm --@e: _Q=\\n(_Q _q=\\n(_q nl=\\n(nl |p=\\*(|p
936 . sp (\\n(_Qu-\\n(.vu)/2u
942 .sp \\n(esu+\\n(.Lv-1v
949 .de TS \" *** table start
952 .fi \" drop into fill mode for text boxes
955 . di |h \" save header part
959 .ch @f -(\\n(_bu+1v) \" set pseudo-trap for bottom line
960 .if \\n(.p-\\n(_b-1v<=\\n(nl \
961 . ch @f \\n(nlu+\n(.Vu
963 .de TH \" *** end header part of table
973 .|h\" \" put in the initial header
978 .de TE \" *** table end
980 .ch @f -\\n(_bu \" reset pseudo-trap
981 .if \\n(.p-\\n(_b<=\\n(nl \
982 . ch @f \\n(nlu+\n(.Vu
984 .sp \\n(bsu+\\n(.Lv-1v
992 .de ][ \" *** refer output
993 .if \\$1>5 .tm Bad arg to []
999 .if !"\\*([A"" \\*([A,
1000 .if !"\\*([T"" \\f2\\*([T\\f1\c
1001 .if !"\\*([T"" .if !"\\*([O"" ,\ \"
1002 .ie !"\\*([O"" \\*([O
1003 .el .if !"\\*([T"" \&.
1004 .if !"\\*([D"" \\*([D.
1008 .de [1 \" --- journal article
1012 .if !"\\*([T"" \\*(lq\\*([T,\\*(rq
1013 .if "\\*([V"" \\f2\\*([J\\f1,
1014 .if !"\\*([V"" \\f2\\*([J\\f1
1015 .if !"\\*([V"" \\f3\\*([V\\f1\c
1016 .if !"\\*([N"" (\\*([N)\c
1019 . ie \\n([P>0 \ pp.\&
1023 .if !"\\*([I"" .if "\\*([R"" \\*([I,
1025 .if !"\\*([O"" \\*([O
1031 \\*([A, \\f2\\*([T,\\f1
1033 .if !"\\*([C"" , \\*([C\c
1035 .if !"\\*([G"" Gov't. ordering no. \\*([G
1036 .if !"\\*([O"" \\*([O
1039 .de [3 \" --- article in book
1042 \\*([A, \\*(lq\\*([T,\\*(rq
1043 .if !"\\*([P"" pp. \\*([P
1044 in \\f2\\*([B\\f1, \c
1045 .if !"\\*([E"" ed. \\*([E, \c
1046 .if !"\\*([I"" \\*([I\c
1047 .if !"\\*([C"" , \\*([C\c
1049 .if !"\\*([O"" \\*([O
1052 .de [4 \" --- report
1055 \\*([A, \\*(lq\\*([T,\\*(rq
1057 .if !"\\*([G"" \& (\\*([G)\c
1058 .if !"\\*([I"" , \\*([I\c
1059 .if !"\\*([C"" , \\*([C\c
1061 .if !"\\*([O"" \\*([O
1064 .de [5 \" --- tm style
1067 \\*([A, \\f2\\*([T\\f1,
1069 .el Bell Laboratories internal memorandum (\\*([D).
1081 .rm [V [P [A [T [N [C [B [O [R [I [E [D
1085 . ds [. \s-2\v'-.4m'\f1
1086 . ds .] \v'.4m'\s+2\fP
1096 .de IS \" *** start ideal picture
1104 .de IE \" *** end ideal picture
1111 .de PS \" *** start picture: $1=height, $2=width in units or inches
1114 .in (u;\\n(.l-\\n(g7>?0/2)
1119 .de PE \" *** end picture
1128 .de GS \" *** start gremlin picture
1129 .nr g7 (\\n(.lu-\\n(g1u)/2u
1130 .if "\\$1"L" .nr g7 \\n(.iu
1131 .if "\\$1"R" .nr g7 \\n(.lu-\\n(g1u
1138 .de GE \" *** end gremlin picture
1142 .de GF \" *** finish gremlin picture; stay at top
1147 .\" *** FONT AIDS ***
1148 .de sz \" *** set point size and vertical spacing
1151 .vs \\n(.sp*\\n($vu/100u \" default vs at pointsize + 20%
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 @V \" --- possibly set $V from $R
1157 .if (1i>=240u)&(1p<=\\n($R)&(\\n($R<=4p) .nr $V \\n($R00/1p
1159 .de @E \" --- store in _F argument to \f for restoring font
1164 . ie \\n(.f<100&\n(.g \
1170 .de r \" *** enter roman font
1173 .if \\n(.$ \&\\$1\f\\*(_F\\$2
1175 .de i \" *** enter italic
1178 .if \\n(.$ \&\\$1\f\\*(_F\\$2
1180 .de b \" *** enter boldface
1183 .if \\n(.$ \&\\$1\f\\*(_F\\$2
1185 .de rb \" *** enter real boldface
1188 .if \\n(.$ \&\\$1\f\\*(_F\\$2
1190 .de bi \" *** enter bold italic
1193 .if \\n(.$ \&\\$1\f\\*(_F\\$2
1195 .de u \" *** enter underlined word
1196 \&\\$1\l'|0\(ul'\\$2
1198 .\" a better version of u
1201 \Z'\\$1'\v'.25m'\D'l \w'\\$1'u 0'\v'-.25m'\\$2
1203 .de q \" *** enter quoted word
1204 \&\\*(lq\\$1\\*(rq\\$2
1206 .de bx \" *** enter boxed word
1207 \k~\(br\|\\$1\|\(br\l'|\\n~u\(rn'\l'|\\n~u\(ul'\^\\$2
1209 .de sm \" *** print in smaller font
1212 .de @F \" --- change font (0 -> no change)
1218 .\" *** FOOTNOTING ***
1219 .de (f \" *** begin footnote
1221 .if "\\n(.z"|f" .tm Line \\n(c. -- Invalid footnote nesting
1229 . xl \\n($lu-\\n(fuu
1232 . vs \\n(.sp*\\n($Vu/100u
1235 . nr _b +1v \" allow space for $s
1239 . if \\n(.p-\\n(_b-\\n(_0-\\n(.h-1v-\\n(fs<0 \
1241 . da\" \" won't fit on page at all
1246 .\" next five lines could be dropped if headers had their own environment
1247 . in 0 \" reset everything from .bc
1248 . xl \\n($lu-\\n(fuu
1251 . vs \\n(.sp*\\n($Vu/100u
1262 . if \n@>2 .tm << (f $f=\\n($f
1268 . xl \\n($lu-\\n(fuu
1271 . vs \\n(.sp*\\n($Vu/100u
1277 .de @N \" --- set no fill mode in the top-level diversion
1281 .de )f \" *** end footnote
1286 . ds * \\*{\\n($f\\*}\k*
1291 . if \\n(_w<\\n(dl \
1292 . nr _w \\n(dl \" compute maximum fn width
1295 . if \\n(.p-\\n(_b<=\\n(nl \
1296 . ch @f \\n(nlu+\n(.Vu
1309 . nr ff 1 \" footnote font: Times Roman
1312 . nr fp 8 \" footnote pointsize
1313 .de $s \" $$$ footnote separator
1316 .\" *** DELAYED TEXT ***
1317 .de (d \" *** begin delayed text
1321 .de )d \" *** end delayed text
1327 .de pd \" *** print delayed text
1333 .\" *** INDEXES (TABLE OF CONTENTS) ***
1336 .de (x \" *** begin index entry
1337 .if \n@>4 .tm >> (x, .z=\\n(.z
1347 .de @0 \" --- finish (x if no current diversion
1352 .de @1 \" --- finish (x if current diversion
1353 .if "\\n(_x"z" .nr _x 0
1356 .de )x \" *** end index entry
1357 .if \n@>4 .tm >> )x, .z=\\n(.z
1366 . if \w"\\$2">(\\n(.l-\\n(.i-\\n(.k) \
1368 \\\\a\\\\t\\$2\\*(|x
1381 .de xp \" *** print the index
1385 .vs \\n(.sp*\\n($Vu/100u
1391 .xl -(\\n(xuu+\w'...'u)
1402 .ta \\n(.lu-\\n(xuuR \\n(.luR
1408 .de +c \" *** begin chapter
1409 .ep\" \" force out footnotes
1412 . bp \" force out a table or more footnote
1422 .in \\n($iu \" reset the indent
1429 .de ++ \" *** declare chapter type
1432 . nr _0 1 \" chapter
1434 . nr _0 11 \" renumbered chapter
1436 . nr _0 2 \" appendix
1438 . nr _0 12 \" renumbered appendix
1440 . nr _0 3 \" preliminary material
1442 . nr _0 4 \" bibliographic material
1444 . nr _0 5 \" abstract
1446 . tm Line \\n(c. -- Bad mode to .++
1454 .if (\\n(_0=3):(\\n(_0=5) \
1455 . pn 1 \" must do before .ep
1456 .if !\\n(_0=\\n(_M .if \\n(_M=3 \
1457 . pn 1 \" must do before .ep
1458 .ep\" \" end page for correct page number types
1480 .de $c \" $$$ print chapter title
1486 .ie \\n(_M=1 CHAPTER\ \ \\n(ch
1487 .el .if \\n(_M=2 APPENDIX\ \ \\n(ch
1488 .if \w"\\$1" .sp 3-\\n(.L
1490 .if (\\n(_M<3):(\w"\\$1") \
1496 . $C Chapter \\n(ch "\\$1"
1498 . $C Appendix \\n(ch "\\$1"
1500 .de tp \" *** title page
1508 .if \n(mo=1 .ds mo January
1509 .if \n(mo=2 .ds mo February
1510 .if \n(mo=3 .ds mo March
1511 .if \n(mo=4 .ds mo April
1512 .if \n(mo=5 .ds mo May
1513 .if \n(mo=6 .ds mo June
1514 .if \n(mo=7 .ds mo July
1515 .if \n(mo=8 .ds mo August
1516 .if \n(mo=9 .ds mo September
1517 .if \n(mo=10 .ds mo October
1518 .if \n(mo=11 .ds mo November
1519 .if \n(mo=12 .ds mo December
1520 .if \n(dw=1 .ds dw Sunday
1521 .if \n(dw=2 .ds dw Monday
1522 .if \n(dw=3 .ds dw Tuesday
1523 .if \n(dw=4 .ds dw Wednesday
1524 .if \n(dw=5 .ds dw Thursday
1525 .if \n(dw=6 .ds dw Friday
1526 .if \n(dw=7 .ds dw Saturday
1530 .ds td \*(mo \n(dy, \n(y4
1531 .\" *** PARAMETRIC INITIALIZATIONS ***
1533 .nr $v \n(.v00+\n(.sp-1/\n(.sp \" vs as percentage of ps for .sz request
1534 .nr $V \n($v \" same for displays & footnotes
1535 .nr hm 4v \" header margin
1536 .nr tm 7v \" top margin
1537 .nr bm 6v \" bottom margin
1538 .nr fm 3v \" footer margin
1539 .nr tf 3 \" title font: (real) Times Bold
1540 .nr tp 10 \" title point size
1542 .nr bi 4m \" indent for blocks
1543 .nr pi 5n \" indent for paragraphs
1544 .nr pf 1 \" normal text font
1545 .nr pp 10 \" normal text point size
1546 .nr qi 4n \" indent for quotes
1547 .nr qp -1 \" down one point
1548 .nr ii 5n \" indent for .ip's and .np's
1549 .nr $m 1 \" max number of columns
1550 .nr $s 4n \" column separation
1551 .nr sf 3 \" section font -- Times Bold
1552 .nr sp 10 \" section title pointsize
1553 .nr ss 12p \" section prespacing
1554 .nr si 0 \" section indent
1555 .\" *** OTHER INITIALIZATION ***
1556 .\" GNU pic sets this register to 1, to indicate that \x should not be used.
1558 .ds { \v'-0.4m'\x'\\n(0x=0*-0.2m'\s-3
1560 .\" for compatibility with traditional -me
1561 .\" (the first will work only in compatibility mode)
1564 .ds < \v'0.4m'\x'\\n(0x=0*0.2m'\s-3
1567 .\" Avoid warnings from groff -ww.
1584 .@R po\" \" simulated page offset
1585 .@R $0\" \" section depth
1586 .@R $i\" \" paragraph base indent
1587 .@R $p\" \" numbered paragraph number
1588 .@R $r\" \" ratio of vs to ps (may override $v)
1589 .@R $R\" \" same for displays (may override $V)
1590 .@R df\" \" display font: same as surrounding text
1591 .@R so\" \" additional section title offset
1592 .@R fu\" \" footnote undent
1593 .@R bt\" \" block keep threshold
1594 .@R *\" \" has \** been referenced?
1595 .@R ?a\" \" pending floating keep at page top?
1596 .@R ?b\" \" pending floating keep at page bottom?
1597 .@R ?C\" \" at chapter header?
1598 .@R ?e\" \" in equation?
1599 .@R ?H\" \" suppress headers and footers next page?
1600 .@R ?I\" \" has the header trap been sprung?
1601 .@R ?n\" \" n1 mode?
1602 .@R ?o\" \" footnote overflow?
1603 .@R ?R\" \" renumbered chapter?
1604 .@R ?s\" \" skip next page?
1605 .@R ?T\" \" inside .TS H?
1606 .@R ?W\" \" wide floating keep at page bottom?
1607 .@R ?w\" \" wide floating keep at page top?
1612 .if \n(ps<\n(.V .nr ps \n(.V
1613 .nr bs \n(ps \" block pre/post spacing
1614 .nr qs \n(ps \" quote pre/post spacing
1615 .nr zs 1v \" float-block pre/postspacing
1616 .nr xs 0.2v \" index prespacing
1617 .nr xu 0.5i \" index undent
1618 .nr fs 0.2v \" footnote prespacing
1619 .nr es 0.5v \" equation pre/postspacing
1620 .if \n(es<\n(.V .nr es \n(.V
1621 .wh 0 @h \" set header
1622 .nr $l \n(.lu \" line length
1623 .nr _L \n(.lu \" line length of page
1624 .nr $c 1 \" current column number
1625 .nr $f 1 1 \" footnote number
1626 .ds * \*{1\*}\k*\" \" footnote "name"
1627 .nr $d 1 1 \" delayed text number
1628 .ds # [1]\k#\" \" delayed text "name"
1629 .nr _M 1 \" chapter mode is chapter
1630 .ds lq \(lq\" \" left quote
1631 .ds rq \(rq\" \" right quote
1633 .\" *** FOREIGN LETTERS AND SPECIAL CHARACTERS ***
1634 .ds #h ((1u-(\\\\n(.fu%2u))*0.13m)
1637 .ds ' \k_\h'-(\\n(.wu*8/10-\*(#h)'\(aa\h'|\\n_u'
1638 .ds ` \k_\h'-(\\n(.wu*7/10-\*(#h)'\(ga\h'|\\n_u'
1640 .ds : \k_\h'-(\\n(.wu*8/10-\*(#h+0.1m)'\v'-\*(#v'\z.\h'0.2m'.\h'|\\n_u'\v'\*(#v'
1641 .\" \" circumflex and tilde
1642 .ds ^ \k_\h'-(\\n(.wu-\*(#h-0.05m)'^\h'|\\n_u'
1643 .ds ~ \k_\h'-(\\n(.wu-\*(#h-0.05m)'~\h'|\\n_u'
1644 .\" \" cedilla and czech
1645 .ds , \k_\h'-(\\n(.wu)',\h'|\\n_u'
1646 .ds v \k_\h'-(\\n(.wu*9/10-\*(#h)'\v'-\*(#v'\s-4v\s0\v'\*(#v'\h'|\\n_u'
1647 .\" \" Norwegian A or angstrom
1648 .ds o \k_\h'-(\\n(.wu+\w'\(de'u-\*(#h)/2u'\v'-0.4n'\z\(de\v'0.4n'\h'|\\n_u'
1649 .\" \" there exists, for all
1650 .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'
1651 .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'
1656 .tm The \\$1 macro has been removed from this version of the -me macros.