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
75 .de @D \" --- determine display type (Indent, Left, Center)
91 .de @z \" --- end macro
92 .if \n@>1 .tm >> @z, .z=\\n(.z ?a=\\n(?a
95 . tm Line \\n(c. -- Unclosed block, footnote, or other diversion (\\n(.z)
100 . bp \" force out final table
102 .ds @b\" \" don't start another page
106 .\" *** STANDARD HEADERS AND FOOTERS ***
107 .ie \n(.g .ds $* \\\\$*
108 .el .ds $* \\\\$1 \\\\$2 \\\\$3 \\\\$4 \\\\$5 \\\\$6 \\\\$7 \\\\$8 \\\\$9
109 .de he \" *** define header
121 .de eh \" *** define even header
127 .de oh \" *** define odd header
133 .de fo \" *** define footer
145 .de ef \" *** define even foot
151 .de of \" *** define odd footer
157 .de ep \" *** end page (must always be followed by a .bp)
165 .\" *** INTERNAL HEADER AND FOOTER MACROS ***
167 .if \n@>1 .tm >> @h %=\\n% ?a=\\n(?a ?b=\\n(?b ?w=\\n(?w
168 .if (\\n(.i+\\n(.o)>=\\n(.l \
169 . tm Line \\n(c. -- Offset + indent exceeds line length
170 .\" initialize a pile of junk
171 .nr ?h \\n(?H \" transfer "next page" to "this page"
179 .nr _w 0 \" reset max footnote width
180 .nr ?W 0 \" no wide floats this page (yet)
182 .\" begin actual header stuff
186 . sp |\\n(hmu \" move to header position
187 .@t $h\" \" output header title
190 .sp |\\n(tmu \" move to top of text
192 .mk _k \" for columned output
193 .if \\n(?n .nm 1 \" restore line numbering if n1 mode
194 .nr $c 1 \" set first column
195 .if \n@>4 .tm -- @h >> .ns nl=\\n(nl %=\\n% _k=\\n(_k tm=\\n(tm
203 . @n\" \" begin the column
206 .de @n \" --- new column or page
207 .if \n@>3 .tm >> @n nl=\\n(nl %=\\n% ?f=\\n(?f ?o=\\n(?o
210 .if (\\n(_w<=\\n($l)&(\\n(?W=0) \
212 . nr _b (\\n(ppp*\\n($vu)/200u \" compute fudge factor (must be < 1P)
213 . if \\n(_bu>((\\n(bmu-\\n(fmu-((\\n(tpp*\\n($vu)/100u))/2u) \
214 . nr _b (\\n(ppp*\\n($vu)/100u-\n(.Vu
220 .nr _b +(\\n(ppp*\\n($vu)/100u \" add 1 paragraph v in case of sweep past
221 .if \n@>2 .tm @n .p=\\n(.p bm=\\n(bm _b=\\n(_b _B=\\n(_B
222 .nr ?f 0 \" reset footnote flag
225 . (f _\" \" reprocess footnotes which run off page
237 . |h\" \" output the table header
240 . mk #T \" for tbl commands
243 .if (\\n(?a)&((\\n($c<2):(\\n(?w=0)) \
245 . nr ?a 0 \" output floating keep
248 . mk _k \" don't overstrike wide keeps
252 .$H\" \" special column header macro
256 .if \n@>1 .tm >> @f %=\\n% nl=\\n(nl ?a=\\n(?a ?b=\\n(?b ?f=\\n(?f
257 .if \n@>2 .nr VL \\n(.pu-\\n(nlu
258 .if \n@>2 .tm @f bm=\\n(bm _B=\\n(_B _b=\\n(_b .p-nl=\\n(VL
262 . nr T. 1 \" for tbl commands (to output bottom line)
263 . T# 1\" \" output the sides and bottom lines
271 . @k |b\" \" output bottom of page tables
274 . @o\" \" output footnote if present
276 . @c\" \" handle new column
282 .de @o \" --- output footnote
286 .if \n@>2 .tm @o last printed text = \\n(nl placing @r trap at -\\n(_B
290 .if \n@>2 .tm @o triggered @r (?o) = \\n(?o
293 . di \" just in case triggered @r
305 .de @c \" --- new column
306 .if \n@>2 .tm >> @c %=\\n%
313 .de @e \" --- end page
317 .sp |\\n(.pu-\\n(fmu-((\\n(tpp*\\n($vu)/100u) \" move to footer position
318 .@t $f\" \" output footer title
322 .de @t \" --- output header or footer title
325 . sz \\n(tp\" \" set header/footer type fonts, etc.
327 . lt \\n(_Lu \" make title span entire page
333 .de $h \" $$$ print header
337 . if e .ds |z "\\*(|0
338 . if o .ds |z "\\*(|1
340 .if !\(ts\\*(|z\(ts\(ts \
344 .de $f \" $$$ print footer
348 . if e .ds |z "\\*(|0
349 . if o .ds |z "\\*(|1
351 .if \(ts\\*(|z\(ts\(ts \
353 . if e .ds |z "\\*(|2
354 . if o .ds |z "\\*(|3
356 .if !\(ts\\*(|z\(ts\(ts \
360 .de @r \" --- reprocess overflow footnotes
361 .if \n@>3 .tm >> @r .z=\\n(.z ?f=\\n(?f ?a=\\n(?a ?b=\\n(?b _b=\\n(_b
362 .di |o \" save overflow footnote
367 .\" *** COMMANDS WITH VARIANT DEFINITIONS ***
368 .rn bp @b \" --- begin page
369 .de bp \" *** begin new page (overrides columns)
370 .nr $c \\n($m \" force new page, not new column
378 . @h\" \" 'spring' the header trap
381 .wh 0 @h \" reset header
383 .rn ll xl \" *** special line length (local)
384 .de ll \" *** line length (global to environments)
388 .if (\\n($m<=1):(\\n($l>\\n(_L) \
391 .rn po @O \" --- local page offset
392 .de po \" *** page offset
396 .\" Redefine the fam request to set the family in
397 .\" environment 2 as well as the current environment.
399 .do rn fam @fam \" --- set family in current environment
400 .do de fam \" *** set font family in ev 2 and current ev
406 .\" *** MISCELLANEOUS ROFF COMMANDS ***
407 .de hx \" *** suppress headers and footers next page
410 .de ix \" *** indent, no break
413 .de bl \" *** contiguous blank lines
419 .de n1 \" *** line numbering 1
424 .de n2 \" *** line numbering 2
431 .de pa \" *** new page
434 .de ro \" *** roman page numbers
437 .de ar \" *** arabic page numbers
440 .de m1 \" *** position one space
443 .nr tm +\\n(hmu-\\n(_0u
446 .de m2 \" *** position two space
447 .nr tm \\n(hmu+\\n(tpp+\\$1v
449 .de m3 \" *** position three space
450 .nr bm \\n(fmu+\\n(tpp+\\$1v
452 .de m4 \" *** position four space
455 .nr bm +\\n(fmu-\\n(_0u
457 .de sk \" *** leave a blank page (next page)
459 . tm Line \\n(c. -- I cannot skip multiple pages
462 .\" *** MISCELLANEOUS USER SUPPORT COMMANDS ***
464 .de re \" *** reset tabs (TROFF defines 15 stops default)
469 .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
471 .de ba \" *** set base indent
475 . nr $i \\n(siu*\\n($0u
477 .de hl \" *** draw horizontal line
479 .ie \n(.g .do nr _I \\n[.in]
484 .\" *** PARAGRAPHING ***
485 .de pp \" *** paragraph
488 .de lp \" *** left aligned paragraph
494 .de ip \" *** indented paragraph w/ optional tag
495 .if (\\n(ii>0)&(\\n(ii<1n) \
512 . ie \\w"\\*(|j">=\\n(_0 \
517 . el \\*(|j\h'|\\n(_0u'\c
522 .de np \" *** numbered paragraph
523 .\" use string comparison in case user has changed format of $p
525 . nr $p 0 \" reset number after .bu
526 .nr $p +1 \" increment paragraph number
529 \0(\\n($p)\h'|\w'\0(000)\0'u'\c
531 .de bu \" *** bulleted paragraph
533 .\" use string comparison in case user has changed format of $p
535 . ns \" don't space between .bu paragraphs
536 .nr $p 0-1 \" mark "bulleted paragraph" mode
541 .de @p \" --- initialize for paragraph
542 .if "\\n(.z"|e" .tm Line \\n(c. -- Unmatched continued equation
554 .\" *** SECTION HEADINGS ***
555 .de sh \" *** section heading
557 .if (\\n(si>0)&(\\n(si<1n) \
560 .@d "\\$1" +1 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
564 . $p "\\*(|n" "\\*($n" \\n($0
565 . $0 "\\*(|n" "\\*($n" \\n($0
568 .nr $p 0 1 \" reset .np count
570 .de @d \" --- change section depth
573 .if \\n($0&(\\n(.$>1) \
580 . if (\\n(.$>=3) .if !"\\$3"-" \
590 . if (\\n(.$>=4) .if !"\\$4"-" \
600 . if (\\n(.$>=5) .if !"\\$5"-" \
610 . if (\\n(.$>=6) .if !"\\$6"-" \
620 . if (\\n(.$>=7) .if !"\\$7"-" \
630 . if (\\n(.$>=8) .if !"\\$8"-" \
637 .de sx \" *** heading up, no increment (2.1.1 -> 2.1)
642 .if \\n(.$ .nr _0 \\$1
646 .nr $p 0 1 \" reset .np count
648 .de uh \" *** unnumbered section heading
652 .de $p \" $$$ print section heading
653 .if (\\n(si>0)&(\\n(.$>2) \
658 . sp \\n(ssu \" one of them is non-null
659 . ne \\n(.Lv+\\n(.Vu+\\n(psu+((\\n(spp*\\n($vu*\\n(.Lu)/100u)
660 . \" exdent if \\$3 > 0
662 . ti -(\\n(siu-\\n(sou)
669 . if \w"\\$2">0 \\$2.
670 . if \w"\\$1">0 \\$1\f1\ \ \&
677 .\" *** COLUMNNED OUTPUT ***
678 .de 2c \" *** double columned output
681 . 1c\" \" revert to 1c if already 2c
687 . nr $s \\$1n \" param 1: column seperation
688 .nr $l (\\n(.l-((\\n($m-1)*\\n($s))/\\n($m
693 .de 1c \" *** single columned output
697 .ll \\n(_Lu \" return to normal output
701 .de bc \" *** begin column
704 .\" *** FLOATING TABLES AND NONFLOATING BLOCKS ***
705 .de (z \" *** begin floating keep
706 .if \n@>4 .tm >> (z, .z=\n(.z
710 .de )z \" *** end floating keep
711 .if \n@>4 .tm >> )z, .z=\n(.z
714 .if \n@>4 .tm -- )z << @), .z=\n(.z
717 . nr dn +(\\n(ppp*\\n($vu)/200u+\\n(zsu
718 .nr dl -\n(.H \" fudge factor necessary to make it work
719 .ie ((\\n(dn+\n(.V)>=\\n(.t):(\\n(?a):((\\n(dl>\\n($l)&(\\n($c>1)) \
722 . if (\\n(dl>\\n($l)&(\\n($m>1) \
723 . nr ?w 1 \" mark wider than one column (top)
729 . if (\\n(dl>\\n($l)&(\\n($m>1) \
730 . nr ?W 1 \" mark wider than one column (bottom)
732 . \" avoid moving @f back past the current position
733 . if \\n(.p-\\n(nl-\n(.V<\\n(_b \
734 . nr _b \\n(.p-\\n(nl-\n(.V
738 .da \\*(|x \" copy to save macro
742 .if \n@>4 .tm -- )z >> \\*(|x
743 \!.if \\\\n(nl>(\\\\n(tm+2v) .ne \\n(dnu-\\n(zsu
744 .|k\" \" and the body
746 .if \n@>4 .tm -- )z << \\*(|x, .z=\\n(.z
748 .rm |k\" \" remove the temp macro
754 .if \n@>4 .tm << )z, .z=\\n(.z
756 .de @k \" --- output floating keep
757 .if \n@>4 .tm >> @k, $1=\\$1, .z=\\n(.z
769 .de (t \" XXX temp ref to (z
772 .de )t \" XXX temp ref to )t
775 .de (b \" *** begin block
781 .de )b \" *** end block
784 .if (\\n(bt=0):(\\n(.t<\\n(bt) \
785 . ne \\n(dnu \" make it all on one page
795 .sp \\n(bsu+\\n(.Lv-1v
797 .de @( \" --- begin keep
798 .if !"\\n(.z"" .tm Line \\n(c. -- Invalid nested keep \\n(.z
803 .de @M \" --- set modes for display
808 .vs \\n(.sp*\\n($Vu/100u
811 . fi \" set fill mode if "F" parameter
822 .de @) \" --- end keep
824 .if !"\\n(.z"|k" .tm Line \\n(c. -- Close of a keep which has never been opened
830 .de (c \" *** begin block centered text
831 .if "\\n(.z"|c" .tm Line \\n(c. -- Nested .(c requests
834 .de )c \" *** end block centered text
835 .if !"\\n(.z"|c" .tm Line \\n(c. -- Unmatched .)c
836 .br \" force out final line
838 .if \n@>4 .tm >> .)c .l=\\n(.l .i=\\n(.i $i=\\n($i dl=\\n(dl
841 .in (\\n(.lu-\\n(.iu-\\n(dlu)/2u
842 .if \n@>4 .tm -- .)c << .in .l=\\n(.l .i=\\n(.i dl=\\n(dl
851 .\" *** BLOCK QUOTES (OR WHATEVER) AND LISTS ***
852 .de (q \" *** begin block quote
861 .de )q \" *** end block quote
864 .sp \\n(qsu+\\n(.Lv-1v
867 .de (l \" *** begin list
873 .de )l \" *** end list
876 .sp \\n(bsu+\\n(.Lv-1v
879 .\" *** PREPROCESSOR SUPPORT ***
883 .de EQ \" *** equation start
887 . if "\\n(.z"|e" .tm Line \\n(c. -- Nested .EQ request
896 .de EN \" *** equation end
908 . @q\" \" actual equation output
913 .de @q \" --- equation output
916 .sp \\n(esu \" output rest of preceeding text
917 .if !"\\n(.z"" \!.ne \\n(_Qu
918 .ne \\n(_Qu+\n(.Vu \" keep it on one page
919 .@C 2\" \" .ev 2 may be jumbled from header
921 . in (\\n(.lu+\\n($iu-\\n(dlu)/2u
929 .if \n@>1 .tm --@e: _Q=\\n(_Q _q=\\n(_q nl=\\n(nl |p=\\*(|p
933 . sp (\\n(_Qu-\\n(.vu)/2u
939 .sp \\n(esu+\\n(.Lv-1v
946 .de TS \" *** table start
949 .fi \" drop into fill mode for text boxes
952 . di |h \" save header part
956 .ch @f -(\\n(_bu+1v) \" set pseudo-trap for bottom line
957 .if \\n(.p-\\n(_b-1v<=\\n(nl \
958 . ch @f \\n(nlu+\n(.Vu
960 .de TH \" *** end header part of table
970 .|h\" \" put in the initial header
975 .de TE \" *** table end
977 .ch @f -\\n(_bu \" reset pseudo-trap
978 .if \\n(.p-\\n(_b<=\\n(nl \
979 . ch @f \\n(nlu+\n(.Vu
981 .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 (u;\\n(.l-\\n(g7>?0/2)
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. -- Invalid 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.