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.
50 .de @R \" --- initialize number register to 0, if undefined
54 .\" --- check whether grohtml needs end of title/heading
55 .de @html_check_need_title
56 .do if (\\n[need_eo_tl] == 1) \
61 .do if (\\n[need_tl] == 1) \
67 .do if \\n[need_eo_h]>0 .do DEVTAG-EO-H
75 . do als check_need_title @html_check_need_title
77 . do als check_need_title @check_need_title
83 .de @S \" --- initialize string/macro to empty, if undefined
84 .if !d\\$1 .ds \\$1 \" empty
87 .@R @\" \" debugging level
90 .\" *** INTERNAL GP MACROS ***
93 .de @C \" --- change ev's, taking info with us
118 .de @D \" --- determine display type (Indent, Left, Center)
137 .de @z \" --- end macro
138 .if \n@>1 .tm >> @z, .z=\\n(.z ?a=\\n(?a
141 . tm Line \\n(c. -- Unclosed block, footnote, or other diversion (\\n(.z)
146 . bp \" force out final table
148 .ds @b\" \" don't start another page
154 .\" *** STANDARD HEADERS AND FOOTERS ***
157 .ie \n(.g .ds $* \\\\$*
158 .el .ds $* \\\\$1 \\\\$2 \\\\$3 \\\\$4 \\\\$5 \\\\$6 \\\\$7 \\\\$8 \\\\$9
160 .de he \" *** define header
173 .de eh \" *** define even header
180 .de oh \" *** define odd header
187 .de fo \" *** define footer
200 .de ef \" *** define even foot
207 .de of \" *** define odd footer
214 .de ep \" *** end page (must always be followed by a .bp)
224 .\" *** INTERNAL HEADER AND FOOTER MACROS ***
228 .if \n@>1 .tm >> @h %=\\n% ?a=\\n(?a ?b=\\n(?b ?w=\\n(?w
229 .if (\\n(.i+\\n(.o)>=\\n(.l \
230 . tm Line \\n(c. -- Offset + indent exceeds line length
231 .\" initialize a pile of junk
232 .nr ?h \\n(?H \" transfer "next page" to "this page"
240 .nr _w 0 \" reset max footnote width
241 .nr ?W 0 \" no wide floats this page (yet)
243 .\" begin actual header stuff
248 . sp |\\n(hmu \" move to header position
249 .@t $h\" \" output header title
253 . sp |\\n(tmu \" move to top of text
255 .mk _k \" for columned output
256 .if \\n(?n .nm 1 \" restore line numbering if n1 mode
257 .nr $c 1 \" set first column
258 .if \n@>4 .tm -- @h >> .ns nl=\\n(nl %=\\n% _k=\\n(_k tm=\\n(tm
266 . @n\" \" begin the column
270 .de @n \" --- new column or page
271 .if \n@>3 .tm >> @n nl=\\n(nl %=\\n% ?f=\\n(?f ?o=\\n(?o
274 .if (\\n(_w<=\\n($l)&(\\n(?W=0) \
276 . nr _b (\\n(ppp*\\n($vu)/200u \" compute fudge factor (must be < 1P)
277 . if \\n(_bu>((\\n(bmu-\\n(fmu-((\\n(tpp*\\n($vu)/100u))/2u) \
278 . nr _b (\\n(ppp*\\n($vu)/100u-\n(.Vu
284 .nr _b +(\\n(ppp*\\n($vu)/100u \" add 1 paragraph v in case of sweep past
285 .if \n@>2 .tm @n .p=\\n(.p bm=\\n(bm _b=\\n(_b _B=\\n(_B
286 .nr ?f 0 \" reset footnote flag
289 . (f _\" \" reprocess footnotes which run off page
301 . |h\" \" output the table header
304 . mk #T \" for tbl commands
307 .if (\\n(?a)&((\\n($c<2):(\\n(?w=0)) \
309 . nr ?a 0 \" output floating keep
312 . mk _k \" don't overstrike wide keeps
316 .$H\" \" special column header macro
321 .if \n@>1 .tm >> @f %=\\n% nl=\\n(nl ?a=\\n(?a ?b=\\n(?b ?f=\\n(?f
322 .if \n@>2 .nr VL \\n(.pu-\\n(nlu
323 .if \n@>2 .tm @f bm=\\n(bm _B=\\n(_B _b=\\n(_b .p-nl=\\n(VL
327 . nr T. 1 \" for tbl commands (to output bottom line)
328 . T# 1\" \" output the sides and bottom lines
336 . @k |b\" \" output bottom of page tables
339 . @o\" \" output footnote if present
341 . @c\" \" handle new column
348 .de @o \" --- output footnote
352 .if \n@>2 .tm @o last printed text = \\n(nl placing @r trap at -\\n(_B
356 .if \n@>2 .tm @o triggered @r (?o) = \\n(?o
359 . di \" just in case triggered @r
372 .de @c \" --- new column
373 .if \n@>2 .tm >> @c %=\\n%
381 .de @e \" --- end page
385 .sp |\\n(.pu-\\n(fmu-((\\n(tpp*\\n($vu)/100u) \" move to footer position
386 .@t $f\" \" output footer title
391 .de @t \" --- output header or footer title
394 . sz \\n(tp\" \" set header/footer type fonts, etc.
396 . lt \\n(_Lu \" make title span entire page
403 .de $h \" $$$ print header
407 . if e .ds |z "\\*(|0
408 . if o .ds |z "\\*(|1
410 .if !\(ts\\*(|z\(ts\(ts \
415 .de $f \" $$$ print footer
419 . if e .ds |z "\\*(|0
420 . if o .ds |z "\\*(|1
422 .if \(ts\\*(|z\(ts\(ts \
424 . if e .ds |z "\\*(|2
425 . if o .ds |z "\\*(|3
427 .if !\(ts\\*(|z\(ts\(ts \
432 .de @r \" --- reprocess overflow footnotes
433 .if \n@>3 .tm >> @r .z=\\n(.z ?f=\\n(?f ?a=\\n(?a ?b=\\n(?b _b=\\n(_b
434 .di |o \" save overflow footnote
441 .\" *** COMMANDS WITH VARIANT DEFINITIONS ***
444 .if !'\*(.T'html' .rn bp @b \" --- begin page
446 .de bp \" *** begin new page (overrides columns)
447 .nr $c \\n($m \" force new page, not new column
455 . @h\" \" 'spring' the header trap
458 .wh 0 @h \" reset header
461 .rn ll xl \" *** special line length (local)
462 .de ll \" *** line length (global to environments)
466 .if (\\n($m<=1):(\\n($l>\\n(_L) \
470 .rn po @O \" --- local page offset
472 .de po \" *** page offset
477 .\" Redefine the fam request to set the family in
478 .\" environment 2 as well as the current environment.
480 .do rn fam @fam \" --- set family in current environment
481 .do de fam \" *** set font family in ev 2 and current ev
489 .\" *** MISCELLANEOUS ROFF COMMANDS ***
492 .de hx \" *** suppress headers and footers next page
496 .de ix \" *** indent, no break
500 .de bl \" *** contiguous blank lines
507 .de n1 \" *** line numbering 1
513 .de n2 \" *** line numbering 2
521 .de pa \" *** new page
525 .de ro \" *** roman page numbers
529 .de ar \" *** arabic page numbers
533 .de m1 \" *** position one space
536 .nr tm +\\n(hmu-\\n(_0u
540 .de m2 \" *** position two space
541 .nr tm \\n(hmu+\\n(tpp+\\$1v
544 .de m3 \" *** position three space
545 .nr bm \\n(fmu+\\n(tpp+\\$1v
548 .de m4 \" *** position four space
551 .nr bm +\\n(fmu-\\n(_0u
554 .de sk \" *** leave a blank page (next page)
556 . tm Line \\n(c. -- I cannot skip multiple pages
561 .\" *** MISCELLANEOUS USER SUPPORT COMMANDS ***
565 .de re \" *** reset tabs (TROFF defines 15 stops default)
571 .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
574 .de ba \" *** set base indent
578 . nr $i \\n(siu*\\n($0u
581 .de hl \" *** draw horizontal line
588 .ie \n(.g .do nr _I \\n[.in]
595 .\" *** PARAGRAPHING ***
598 .de pp \" *** paragraph
602 .de lp \" *** left aligned paragraph
609 .de ip \" *** indented paragraph w/ optional tag
610 .if (\\n(ii>0)&(\\n(ii<1n) \
627 . ie \\w"\\*(|j">=\\n(_0 \
631 . do DEVTAG-COL-NEXT 2
646 .de np \" *** numbered paragraph
647 .\" use string comparison in case user has changed format of $p
649 . nr $p 0 \" reset number after .bu
650 .nr $p +1 \" increment paragraph number
653 \0(\\n($p)\h'|\w'\0(000)\0'u'\c
656 .de bu \" *** bulleted paragraph
658 .\" use string comparison in case user has changed format of $p
660 . ns \" don't space between .bu paragraphs
661 .nr $p 0-1 \" mark "bulleted paragraph" mode
667 .de @p \" --- initialize for paragraph
669 .if "\\n(.z"|e" .tm Line \\n(c. -- Unmatched continued equation
683 .\" *** SECTION HEADINGS ***
686 .de sh \" *** section heading
689 .if (\\n(si>0)&(\\n(si<1n) \
691 .if '\*(.T'html' .nr si 0
698 .@d "\\$1" +1 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
702 . $p "\\*(|n" "\\*($n" \\n($0
703 . $0 "\\*(|n" "\\*($n" \\n($0
706 .nr $p 0 1 \" reset .np count
709 .de @d \" --- change section depth
712 .if \\n($0&(\\n(.$>1) \
719 . if (\\n(.$>=3) .if !"\\$3"-" \
729 . if (\\n(.$>=4) .if !"\\$4"-" \
739 . if (\\n(.$>=5) .if !"\\$5"-" \
749 . if (\\n(.$>=6) .if !"\\$6"-" \
759 . if (\\n(.$>=7) .if !"\\$7"-" \
769 . if (\\n(.$>=8) .if !"\\$8"-" \
777 .de sx \" *** heading up, no increment (2.1.1 -> 2.1)
782 .if \\n(.$ .nr _0 \\$1
786 .nr $p 0 1 \" reset .np count
789 .de uh \" *** unnumbered section heading
794 .de $p \" $$$ print section heading
795 .if (\\n(si>0)&(\\n(.$>2) \
800 . sp \\n(ssu \" one of them is non-null
801 . ne \\n(.Lv+\\n(.Vu+\\n(psu+((\\n(spp*\\n($vu*\\n(.Lu)/100u)
802 . \" exdent if \\$3 > 0
804 . ti -(\\n(siu-\\n(sou)
811 . if \w"\\$2">0 \\$2.
812 . if \w"\\$1">0 \\$1\f1\ \ \&
821 .\" *** COLUMNNED OUTPUT ***
824 .de 2c \" *** double columned output
827 . 1c\" \" revert to 1c if already 2c
833 . nr $s \\$1n \" param 1: column seperation
834 .nr $l (\\n(.l-((\\n($m-1)*\\n($s))/\\n($m
840 .de 1c \" *** single columned output
844 .ll \\n(_Lu \" return to normal output
849 .de bc \" *** begin column
854 .\" *** FLOATING TABLES AND NONFLOATING BLOCKS ***
857 .de (z \" *** begin floating keep
858 .if \n@>4 .tm >> (z, .z=\n(.z
863 .de )z \" *** end floating keep
864 .if \n@>4 .tm >> )z, .z=\n(.z
867 .if \n@>4 .tm -- )z << @), .z=\n(.z
870 . nr dn +(\\n(ppp*\\n($vu)/200u+\\n(zsu
871 .nr dl -\n(.H \" fudge factor necessary to make it work
872 .ie ((\\n(dn+\n(.V)>=\\n(.t):(\\n(?a):((\\n(dl>\\n($l)&(\\n($c>1)) \
875 . if (\\n(dl>\\n($l)&(\\n($m>1) \
876 . nr ?w 1 \" mark wider than one column (top)
882 . if (\\n(dl>\\n($l)&(\\n($m>1) \
883 . nr ?W 1 \" mark wider than one column (bottom)
885 . \" avoid moving @f back past the current position
886 . if \\n(.p-\\n(nl-\n(.V<\\n(_b \
887 . nr _b \\n(.p-\\n(nl-\n(.V
891 .da \\*(|x \" copy to save macro
895 .if \n@>4 .tm -- )z >> \\*(|x
896 \!.if \\\\n(nl>(\\\\n(tm+2v) .ne \\n(dnu-\\n(zsu
897 .|k\" \" and the body
899 .if \n@>4 .tm -- )z << \\*(|x, .z=\\n(.z
901 .rm |k\" \" remove the temp macro
907 .if \n@>4 .tm << )z, .z=\\n(.z
910 .de @k \" --- output floating keep
911 .if \n@>4 .tm >> @k, $1=\\$1, .z=\\n(.z
924 .de (t \" XXX temp ref to (z
928 .de )t \" XXX temp ref to )t
932 .de (b \" *** begin block
937 .if '\*(.T'html' .sp \\n(bsu
940 .de )b \" *** end block
943 .if (\\n(bt=0):(\\n(.t<\\n(bt) \
944 . ne \\n(dnu \" make it all on one page
954 .sp \\n(bsu+\\n(.Lv-1v
957 .de @( \" --- begin keep
958 .if !"\\n(.z"" .tm Line \\n(c. -- Invalid nested keep \\n(.z
964 .de @M \" --- set modes for display
969 .vs \\n(.sp*\\n($Vu/100u
972 . fi \" set fill mode if "F" parameter
984 .de @) \" --- end keep
986 .if !"\\n(.z"|k" .tm Line \\n(c. -- Close of a keep which has never been opened
993 .de (c \" *** begin block centered text
994 .if "\\n(.z"|c" .tm Line \\n(c. -- Nested .(c requests
998 .de )c \" *** end block centered text
999 .if !"\\n(.z"|c" .tm Line \\n(c. -- Unmatched .)c
1000 .br \" force out final line
1002 .if \n@>4 .tm >> .)c .l=\\n(.l .i=\\n(.i $i=\\n($i dl=\\n(dl
1005 .in (\\n(.lu-\\n(.iu-\\n(dlu)/2u
1006 .if \n@>4 .tm -- .)c << .in .l=\\n(.l .i=\\n(.i dl=\\n(dl
1017 .\" *** BLOCK QUOTES (OR WHATEVER) AND LISTS ***
1020 .de (q \" *** begin block quote
1030 .de )q \" *** end block quote
1033 .sp \\n(qsu+\\n(.Lv-1v
1037 .de (l \" *** begin list
1042 .if '\*(.T'html' .sp \\n(bsu
1045 .de )l \" *** end list
1048 .sp \\n(bsu+\\n(.Lv-1v
1053 .\" *** PREPROCESSOR SUPPORT ***
1059 .de EQ \" *** equation start
1060 .do if \\n[need_eo_h]>0 .do DEVTAG-EO-H
1066 . if "\\n(.z"|e" .tm Line \\n(c. -- Nested .EQ request
1067 . @D 1 "\\$1" "\\$2"
1076 .de EN \" *** equation end
1089 . @q\" \" actual equation output
1095 .de @q \" --- equation output
1098 .sp \\n(esu \" output rest of preceeding text
1099 .if !"\\n(.z"" \!.ne \\n(_Qu
1100 .ne \\n(_Qu+\n(.Vu \" keep it on one page
1101 .@C 2\" \" .ev 2 may be jumbled from header
1103 . in (\\n(.lu+\\n($iu-\\n(dlu)/2u
1107 . in \\n(biu+\\n($iu
1111 .if \n@>1 .tm --@e: _Q=\\n(_Q _q=\\n(_q nl=\\n(nl |p=\\*(|p
1115 . sp (\\n(_Qu-\\n(.vu)/2u
1120 .sp |\\n(_qu+\\n(_Qu
1121 .sp \\n(esu+\\n(.Lv-1v
1129 .de TS \" *** table start
1133 .fi \" drop into fill mode for text boxes
1136 . di |h \" save header part
1140 .ch @f -(\\n(_bu+1v) \" set pseudo-trap for bottom line
1141 .if \\n(.p-\\n(_b-1v<=\\n(nl \
1142 . ch @f \\n(nlu+\n(.Vu
1145 .de TH \" *** end header part of table
1155 .|h\" \" put in the initial header
1161 .de TE \" *** table end
1163 .ch @f -\\n(_bu \" reset pseudo-trap
1164 .if \\n(.p-\\n(_b<=\\n(nl \
1165 . ch @f \\n(nlu+\n(.Vu
1168 .sp \\n(bsu+\\n(.Lv-1v
1178 .de ][ \" *** refer output
1179 .if \\$1>5 .tm Bad arg to []
1186 .if !"\\*([A"" \\*([A,
1187 .if !"\\*([T"" \\f2\\*([T\\f1\c
1188 .if !"\\*([T"" .if !"\\*([O"" ,\ \"
1189 .ie !"\\*([O"" \\*([O
1190 .el .if !"\\*([T"" \&.
1191 .if !"\\*([D"" \\*([D.
1196 .de [1 \" --- journal article
1200 .if !"\\*([T"" \\*(lq\\*([T,\\*(rq
1201 .if "\\*([V"" \\f2\\*([J\\f1,
1202 .if !"\\*([V"" \\f2\\*([J\\f1
1203 .if !"\\*([V"" \\f3\\*([V\\f1\c
1204 .if !"\\*([N"" (\\*([N)\c
1207 . ie \\n([P>0 \ pp.\&
1211 .if !"\\*([I"" .if "\\*([R"" \\*([I,
1213 .if !"\\*([O"" \\*([O
1220 \\*([A, \\f2\\*([T,\\f1
1222 .if !"\\*([C"" , \\*([C\c
1224 .if !"\\*([G"" Gov't. ordering no. \\*([G
1225 .if !"\\*([O"" \\*([O
1229 .de [3 \" --- article in book
1232 \\*([A, \\*(lq\\*([T,\\*(rq
1233 .if !"\\*([P"" pp. \\*([P
1234 in \\f2\\*([B\\f1, \c
1235 .if !"\\*([E"" ed. \\*([E, \c
1236 .if !"\\*([I"" \\*([I\c
1237 .if !"\\*([C"" , \\*([C\c
1239 .if !"\\*([O"" \\*([O
1243 .de [4 \" --- report
1246 \\*([A, \\*(lq\\*([T,\\*(rq
1248 .if !"\\*([G"" \& (\\*([G)\c
1249 .if !"\\*([I"" , \\*([I\c
1250 .if !"\\*([C"" , \\*([C\c
1252 .if !"\\*([O"" \\*([O
1256 .de [5 \" --- tm style
1259 \\*([A, \\f2\\*([T\\f1,
1261 .el Bell Laboratories internal memorandum (\\*([D).
1276 .rm [V [P [A [T [N [C [B [O [R [I [E [D
1281 . ds [. \s-2\v'-.4m'\f1
1282 . ds .] \v'.4m'\s+2\fP
1293 .de IS \" *** start ideal picture
1303 .de IE \" *** end ideal picture
1311 .de PS \" *** start picture: $1=height, $2=width in units or inches
1315 .in (u;\\n(.l-\\n(g7>?0/2)
1321 .de PE \" *** end picture
1332 .de GS \" *** start gremlin picture
1335 . ie "\\$1"L" .do HTML-IMAGE-LEFT
1336 . el .ie "\\$1"R" .do HTML-IMAGE-RIGHT
1341 . nr g7 (\\n(.lu-\\n(g1u)/2u
1342 . if "\\$1"L" .nr g7 \\n(.iu
1343 . if "\\$1"R" .nr g7 \\n(.lu-\\n(g1u
1352 .de GE \" *** end gremlin picture
1353 .ie '\*(.T'html' .do HTML-IMAGE-END
1361 .de GF \" *** finish gremlin picture; stay at top
1368 .\" *** FONT AIDS ***
1371 .de sz \" *** set point size and vertical spacing
1374 .vs \\n(.sp*\\n($vu/100u \" default vs at pointsize + 20%
1377 .de @v \" --- possibly set $v from $r
1378 .if (1i>=240u)&(1p<=\\n($r)&(\\n($r<=4p) .nr $v \\n($r00/1p
1381 .de @V \" --- possibly set $V from $R
1382 .if (1i>=240u)&(1p<=\\n($R)&(\\n($R<=4p) .nr $V \\n($R00/1p
1385 .de @E \" --- store in _F argument to \f for restoring font
1390 . ie \\n(.f<100&\n(.g \
1397 .de r \" *** enter roman font
1398 .do check_need_title
1401 .if \\n(.$ \&\\$1\f\\*(_F\\$2
1402 .do check_need_title
1405 .de i \" *** enter italic
1406 .do check_need_title
1409 .if \\n(.$ \&\\$1\f\\*(_F\\$2
1410 .do check_need_title
1413 .de b \" *** enter boldface
1414 .do check_need_title
1417 .if \\n(.$ \&\\$1\f\\*(_F\\$2
1418 .do check_need_title
1421 .de rb \" *** enter real boldface
1422 .do check_need_title
1425 .if \\n(.$ \&\\$1\f\\*(_F\\$2
1426 .do check_need_title
1429 .de bi \" *** enter bold italic
1430 .do check_need_title
1433 .if \\n(.$ \&\\$1\f\\*(_F\\$2
1434 .do check_need_title
1437 .de u \" *** enter underlined word
1438 \&\\$1\l'|0\(ul'\\$2
1441 .\" a better version of u
1444 \Z'\\$1'\v'.25m'\D'l \w'\\$1'u 0'\v'-.25m'\\$2
1447 .de q \" *** enter quoted word
1448 \&\\*(lq\\$1\\*(rq\\$2
1451 .de bx \" *** enter boxed word
1452 .ie '\*(.T'html' \\$1\\$2
1453 .el \k~\(br\|\\$1\|\(br\l'|\\n~u\(rn'\l'|\\n~u\(ul'\^\\$2
1456 .de sm \" *** print in smaller font
1460 .de @F \" --- change font (0 -> no change)
1468 .\" *** FOOTNOTING ***
1471 .de (f \" *** begin footnote
1473 .if "\\n(.z"|f" .tm Line \\n(c. -- Invalid footnote nesting
1481 . xl \\n($lu-\\n(fuu
1484 . vs \\n(.sp*\\n($Vu/100u
1487 . nr _b +1v \" allow space for $s
1491 . if \\n(.p-\\n(_b-\\n(_0-\\n(.h-1v-\\n(fs<0 \
1493 . da\" \" won't fit on page at all
1498 .\" next five lines could be dropped if headers had their own environment
1499 . in 0 \" reset everything from .bc
1500 . xl \\n($lu-\\n(fuu
1503 . vs \\n(.sp*\\n($Vu/100u
1514 . if \n@>2 .tm << (f $f=\\n($f
1520 . xl \\n($lu-\\n(fuu
1523 . vs \\n(.sp*\\n($Vu/100u
1530 .de @N \" --- set no fill mode in the top-level diversion
1535 .de )f \" *** end footnote
1540 . ds * \\*{\\n($f\\*}\k*
1545 . if \\n(_w<\\n(dl \
1546 . nr _w \\n(dl \" compute maximum fn width
1549 . if \\n(.p-\\n(_b<=\\n(nl \
1550 . ch @f \\n(nlu+\n(.Vu
1564 . nr ff 1 \" footnote font: Times Roman
1567 . nr fp 8 \" footnote pointsize
1569 .de $s \" $$$ footnote separator
1574 .\" *** DELAYED TEXT ***
1577 .de (d \" *** begin delayed text
1582 .de )d \" *** end delayed text
1589 .de pd \" *** print delayed text
1597 .\" *** INDEXES (TABLE OF CONTENTS) ***
1604 .de (x \" *** begin index entry
1605 .if \n@>4 .tm >> (x, .z=\\n(.z
1616 .de @0 \" --- finish (x if no current diversion
1622 .de @1 \" --- finish (x if current diversion
1623 .if "\\n(_x"z" .nr _x 0
1627 .de )x \" *** end index entry
1628 .if \n@>4 .tm >> )x, .z=\\n(.z
1637 . if \w"\\$2">(\\n(.l-\\n(.i-\\n(.k) \
1639 \\\\a\\\\t\\$2\\*(|x
1653 .de xp \" *** print the index
1657 .vs \\n(.sp*\\n($Vu/100u
1663 .xl -(\\n(xuu+\w'...'u)
1674 .ta \\n(.lu-\\n(xuuR \\n(.luR
1682 .\" *** HTML VERSIONS OF .x(, .x), AND .xp ***
1685 .de (x-html \" --- create TAG and divert text
1694 .de )x-html \" --- end diversion
1699 .de xp-html \" --- create list of links
1705 .do while \\n[_xx]<=\\n[_xn] \
1708 . do unformat |x\\n[_xx]
1716 . do asciify xp-html-div
1718 . do as xp-html-as #
1719 . do as xp-html-as _x\\n[_xx]
1722 . do URL \\*[xp-html-as] "\\*[xp-html-div]
1742 .\" *** CHAPTERS AND TITLES ***
1745 .de +c \" *** begin chapter
1746 .ep\" \" force out footnotes
1749 . bp \" force out a table or more footnote
1759 .in \\n($iu \" reset the indent
1767 .de ++ \" *** declare chapter type
1770 . nr _0 1 \" chapter
1772 . nr _0 11 \" renumbered chapter
1774 . nr _0 2 \" appendix
1776 . nr _0 12 \" renumbered appendix
1778 . nr _0 3 \" preliminary material
1780 . nr _0 4 \" bibliographic material
1782 . nr _0 5 \" abstract
1784 . tm Line \\n(c. -- Bad mode to .++
1792 .if (\\n(_0=3):(\\n(_0=5) \
1793 . pn 1 \" must do before .ep
1794 .if !\\n(_0=\\n(_M .if \\n(_M=3 \
1795 . pn 1 \" must do before .ep
1796 .ep\" \" end page for correct page number types
1819 .de $c \" $$$ print chapter title
1825 .ie \\n(_M=1 CHAPTER\ \ \\n(ch
1826 .el .if \\n(_M=2 APPENDIX\ \ \\n(ch
1827 .if \w"\\$1" .sp 3-\\n(.L
1829 .if (\\n(_M<3):(\w"\\$1") \
1835 . $C Chapter \\n(ch "\\$1"
1837 . $C Appendix \\n(ch "\\$1"
1840 .de tp \" *** title page
1849 .if \n(mo=1 .ds mo January
1850 .if \n(mo=2 .ds mo February
1851 .if \n(mo=3 .ds mo March
1852 .if \n(mo=4 .ds mo April
1853 .if \n(mo=5 .ds mo May
1854 .if \n(mo=6 .ds mo June
1855 .if \n(mo=7 .ds mo July
1856 .if \n(mo=8 .ds mo August
1857 .if \n(mo=9 .ds mo September
1858 .if \n(mo=10 .ds mo October
1859 .if \n(mo=11 .ds mo November
1860 .if \n(mo=12 .ds mo December
1861 .if \n(dw=1 .ds dw Sunday
1862 .if \n(dw=2 .ds dw Monday
1863 .if \n(dw=3 .ds dw Tuesday
1864 .if \n(dw=4 .ds dw Wednesday
1865 .if \n(dw=5 .ds dw Thursday
1866 .if \n(dw=6 .ds dw Friday
1867 .if \n(dw=7 .ds dw Saturday
1871 .ds td \*(mo \n(dy, \n(y4
1874 .\" *** PARAMETRIC INITIALIZATIONS ***
1878 .nr $v \n(.v00+\n(.sp-1/\n(.sp \" vs as percentage of ps for .sz request
1879 .nr $V \n($v \" same for displays & footnotes
1880 .nr hm 4v \" header margin
1881 .nr tm 7v \" top margin
1882 .nr bm 6v \" bottom margin
1883 .nr fm 3v \" footer margin
1884 .nr tf 3 \" title font: (real) Times Bold
1885 .nr tp 10 \" title point size
1887 .nr bi 4m \" indent for blocks
1888 .nr pi 5n \" indent for paragraphs
1889 .nr pf 1 \" normal text font
1890 .nr pp 10 \" normal text point size
1891 .nr qi 4n \" indent for quotes
1892 .nr qp -1 \" down one point
1893 .nr ii 5n \" indent for .ip's and .np's
1894 .nr $m 1 \" max number of columns
1895 .nr $s 4n \" column separation
1896 .nr sf 3 \" section font -- Times Bold
1897 .nr sp 10 \" section title pointsize
1898 .nr ss 12p \" section prespacing
1899 .nr si 0 \" section indent
1902 .\" *** OTHER INITIALIZATION ***
1905 .\" GNU pic sets this register to 1, to indicate that \x should not be used.
1907 .ds { \v'-0.4m'\x'\\n(0x=0*-0.2m'\s-3
1909 .\" for compatibility with traditional -me
1910 .\" (the first will work only in compatibility mode)
1913 .ds < \v'0.4m'\x'\\n(0x=0*0.2m'\s-3
1916 .\" Avoid warnings from groff -ww.
1934 .@R po\" \" simulated page offset
1935 .@R $0\" \" section depth
1936 .@R $i\" \" paragraph base indent
1937 .@R $p\" \" numbered paragraph number
1938 .@R $r\" \" ratio of vs to ps (may override $v)
1939 .@R $R\" \" same for displays (may override $V)
1940 .@R df\" \" display font: same as surrounding text
1941 .@R so\" \" additional section title offset
1942 .@R fu\" \" footnote undent
1943 .@R bt\" \" block keep threshold
1944 .@R *\" \" has \** been referenced?
1945 .@R ?a\" \" pending floating keep at page top?
1946 .@R ?b\" \" pending floating keep at page bottom?
1947 .@R ?C\" \" at chapter header?
1948 .@R ?e\" \" in equation?
1949 .@R ?H\" \" suppress headers and footers next page?
1950 .@R ?I\" \" has the header trap been sprung?
1951 .@R ?n\" \" n1 mode?
1952 .@R ?o\" \" footnote overflow?
1953 .@R ?R\" \" renumbered chapter?
1954 .@R ?s\" \" skip next page?
1955 .@R ?T\" \" inside .TS H?
1956 .@R ?W\" \" wide floating keep at page bottom?
1957 .@R ?w\" \" wide floating keep at page top?
1963 .if \n(ps<\n(.V .nr ps \n(.V
1964 .nr bs \n(ps \" block pre/post spacing
1965 .nr qs \n(ps \" quote pre/post spacing
1966 .nr zs 1v \" float-block pre/postspacing
1967 .nr xs 0.2v \" index prespacing
1968 .nr xu 0.5i \" index undent
1969 .nr fs 0.2v \" footnote prespacing
1970 .nr es 0.5v \" equation pre/postspacing
1971 .if \n(es<\n(.V .nr es \n(.V
1972 .wh 0 @h \" set header
1973 .nr $l \n(.lu \" line length
1974 .nr _L \n(.lu \" line length of page
1975 .nr $c 1 \" current column number
1976 .nr $f 1 1 \" footnote number
1977 .ds * \*{1\*}\k*\" \" footnote "name"
1978 .nr $d 1 1 \" delayed text number
1979 .ds # [1]\k#\" \" delayed text "name"
1980 .nr _M 1 \" chapter mode is chapter
1981 .ds lq \(lq\" \" left quote
1982 .ds rq \(rq\" \" right quote
1986 .\" *** FOREIGN LETTERS AND SPECIAL CHARACTERS ***
1989 .ds #h ((1u-(\\\\n(.fu%2u))*0.13m)
1993 .ds ' \k_\h'-(\\n(.wu*8/10-\*(#h)'\(aa\h'|\\n_u'
1994 .ds ` \k_\h'-(\\n(.wu*7/10-\*(#h)'\(ga\h'|\\n_u'
1997 .ds : \k_\h'-(\\n(.wu*8/10-\*(#h+0.1m)'\v'-\*(#v'\z.\h'0.2m'.\h'|\\n_u'\v'\*(#v'
1999 .\" \" circumflex and tilde
2000 .ds ^ \k_\h'-(\\n(.wu-\*(#h-0.05m)'^\h'|\\n_u'
2001 .ds ~ \k_\h'-(\\n(.wu-\*(#h-0.05m)'~\h'|\\n_u'
2003 .\" \" cedilla and czech
2004 .ds , \k_\h'-(\\n(.wu)',\h'|\\n_u'
2005 .ds v \k_\h'-(\\n(.wu*9/10-\*(#h)'\v'-\*(#v'\s-4v\s0\v'\*(#v'\h'|\\n_u'
2007 .\" \" Norwegian A or angstrom
2008 .ds o \k_\h'-(\\n(.wu+\w'\(de'u-\*(#h)/2u'\v'-0.4n'\z\(de\v'0.4n'\h'|\\n_u'
2010 .\" \" there exists, for all
2011 .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'
2012 .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'
2018 .tm The \\$1 macro has been removed from this version of the -me macros.