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.
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
. -- Illegal 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
987 .de ][ \" *** refer output
988 .if \\$1>5 .tm Bad arg to []
994 .if !"\\*([A"" \\*([A,
995 .if !"\\*([T"" \\f2\\*([T\\f1\c
996 .if !"\\*([T"" .if !"\\*([O"" ,\
997 .ie !"\\*([O"" \\*([O
998 .el .if !"\\*([T"" \&.
999 .if !"\\*([D"" \\*([D.
1003 .de [1 \" --- journal article
1007 .if !"\\*([T"" \\*(lq\\*([T,\\*(rq
1008 .if "\\*([V"" \\f2\\*([J\\f1,
1009 .if !"\\*([V"" \\f2\\*([J\\f1
1010 .if !"\\*([V"" \\f3\\*([V\\f1\c
1011 .if !"\\*([N"" (\\*([N)\c
1014 . ie \\n([P>0 \ pp.\&
1018 .if !"\\*([I"" .if "\\*([R"" \\*([I,
1020 .if !"\\*([O"" \\*([O
1026 \\*([A, \\f2\\*([T,\\f1
1028 .if !"\\*([C"" , \\*([C\c
1030 .if !"\\*([G"" Gov't
. ordering no
. \\
*([G
1031 .if !"\\*([O"" \\*([O
1034 .de [3 \" --- article in book
1037 \\
*([A
, \\
*(lq\\
*([T
,\\
*(rq
1038 .if !"\\*([P"" pp. \\*([P
1039 in \\f2\\*([B\\f1, \c
1040 .if !"\\
*([E
"" ed
. \\
*([E
, \c
1041 .if !"\\*([I"" \\*([I\c
1042 .if !"\\
*([C
"" , \\
*([C\c
1044 .if !"\\*([O"" \\*([O
1047 .de [4 \" --- report
1050 \\
*([A
, \\
*(lq\\
*([T
,\\
*(rq
1052 .if !"\\*([G"" \& (\\*([G)\c
1053 .if !"\\
*([I
"" , \\
*([I\c
1054 .if !"\\*([C"" , \\*([C\c
1056 .if !"\\
*([O
"" \\
*([O
1059 .de
[5 \
" --- tm style
1062 \\*([A, \\f2\\*([T\\f1,
1064 .el Bell Laboratories internal memorandum (\\*([D).
1076 .rm [V [P [A [T [N [C [B [O [R [I [E [D
1080 . ds [. \s-2\v'-.4m'\f1
1081 . ds .] \v'.4m'\s+2\fP
1091 .de IS \" *** start ideal picture
1099 .de IE \
" *** end ideal picture
1106 .de PS \
" *** start picture: $1=height, $2=width in units or inches
1109 .in (\\n(.lu-\\n(g7u)/2u
1114 .de PE \" *** end picture
1123 .de GS \" *** start gremlin picture
1124 .nr
g7 (\\
n(.lu
-\\
n(g1u
)/2u
1125 .if "\\$1"L
" .nr g7 \\n(.iu
1126 .if "\\$
1"R" .nr g7 \\
n(.lu
-\\
n(g1u
1133 .de GE \
" *** end gremlin picture
1137 .de GF \" *** finish gremlin picture
; stay at top
1142 .\
" *** FONT AIDS ***
1143 .de sz \" *** set point size
and vertical spacing
1146 .vs \\
n(.sp
*\\
n($vu
/100u \
" default vs at pointsize + 20%
1148 .de @v \" --- possibly set $v from $r
1149 .if (1i
>=240u)&(1p
<=\\
n($r
)&(\\
n($r
<=4p
) .nr $v \\
n($r00
/1p
1151 .de @V \
" --- possibly set $V from $R
1152 .if (1i>=240u)&(1p<=\\n($R)&(\\n($R<=4p) .nr $V \\n($R00/1p
1154 .de @E \" --- store in _F argument to \f for restoring font
1159 . ie \\
n(.f
<100&\
n(.g \
1165 .de r \
" *** enter roman font
1168 .if \\n(.$ \&\\$1\f\\*(_F\\$2
1170 .de i \" *** enter italic
1173 .if \\
n(.$ \
&\\$
1\f\\
*(_F\\$
2
1175 .de b \
" *** enter boldface
1178 .if \\n(.$ \&\\$1\f\\*(_F\\$2
1180 .de rb \" *** enter
real boldface
1183 .if \\
n(.$ \
&\\$
1\f\\
*(_F\\$
2
1185 .de bi \
" *** enter bold italic
1188 .if \\n(.$ \&\\$1\f\\*(_F\\$2
1190 .de u \" *** enter underlined word
1191 \
&\\$
1\l
'|0\(ul'\\$
2
1193 .\
" a better version of u
1196 \Z'\\$1'\v'.25m'\D'l \w'\\$1'u 0'\v'-.25m'\\$2
1198 .de q \" *** enter quoted word
1199 \
&\\
*(lq\\$
1\\
*(rq\\$
2
1201 .de bx \
" *** enter boxed word
1202 \k~\(br\|\\$1\|\(br\l'|\\n~u\(rn'\l'|\\n~u\(ul'\^\\$2
1204 .de sm \" *** print in smaller font
1207 .de @F \
" --- change font (0 -> no change)
1213 .\" *** FOOTNOTING
***
1214 .de (f \
" *** begin footnote
1216 .if "\\
n(.z
"|f" .tm Line \\
n(c
. -- Illegal footnote nesting
1224 . xl \\n($lu-\\n(fuu
1227 . vs \\n(.sp*\\n($Vu/100u
1230 . nr _b +1v \" allow space for $s
1234 . if \\
n(.p
-\\
n(_b
-\\
n(_0
-\\
n(.h
-1v
-\\
n(fs
<0 \
1236 . da\
" \" won
't fit on page at all
1241 .\" next five lines could be dropped if headers had their own environment
1242 . in 0 \" reset everything from .bc
1243 . xl \\n($lu-\\n(fuu
1246 . vs \\n(.sp*\\n($Vu/100u
1257 . if \n@>2 .tm << (f $f=\\n($f
1263 . xl \\n($lu-\\n(fuu
1266 . vs \\n(.sp*\\n($Vu/100u
1272 .de @N \" --- set no fill mode in the top-level diversion
1276 .de )f \" *** end footnote
1281 . ds * \\*{\\n($f\\*}\k*
1286 . if \\n(_w<\\n(dl \
1287 . nr _w \\n(dl \" compute maximum fn width
1290 . if \\n(.p-\\n(_b<=\\n(nl \
1291 . ch @f \\n(nlu+\n(.Vu
1304 . nr ff 1 \" footnote font: Times Roman
1307 . nr fp 8 \" footnote pointsize
1308 .de $s \" $$$ footnote separator
1311 .\" *** DELAYED TEXT ***
1312 .de (d \" *** begin delayed text
1316 .de )d \" *** end delayed text
1322 .de pd \" *** print delayed text
1328 .\" *** INDEXES (TABLE OF CONTENTS) ***
1331 .de (x \" *** begin index entry
1332 .if \n@>4 .tm >> (x, .z=\\n(.z
1342 .de @0 \" --- finish (x if no current diversion
1347 .de @1 \" --- finish (x if current diversion
1348 .if "\\n(_x"z" .nr _x 0
1351 .de )x \" *** end index entry
1352 .if \n@>4 .tm >> )x, .z=\\n(.z
1361 . if \w"\\$2">(\\n(.l-\\n(.i-\\n(.k) \
1363 \\\\a\\\\t\\$2\\*(|x
1376 .de xp \" *** print the index
1380 .vs \\n(.sp*\\n($Vu/100u
1386 .xl -(\\n(xuu+\w'...'u)
1397 .ta \\n(.lu-\\n(xuuR \\n(.luR
1403 .de +c \" *** begin chapter
1404 .ep \" force out footnotes
1407 . bp \" force out a table or more footnote
1417 .in \\n($iu \" reset the indent
1424 .de ++ \" *** declare chapter type
1427 . nr _0 1 \" chapter
1429 . nr _0 11 \" renumbered chapter
1431 . nr _0 2 \" appendix
1433 . nr _0 12 \" renumbered appendix
1435 . nr _0 3 \" preliminary material
1437 . nr _0 4 \" bibliographic material
1439 . nr _0 5 \" abstract
1441 . tm Line \\n(c. -- Bad mode to .++
1449 .if (\\n(_0=3):(\\n(_0=5) \
1450 . pn 1 \" must do before .ep
1451 .if !\\n(_0=\\n(_M .if \\n(_M=3 \
1452 . pn 1 \" must do before .ep
1453 .ep \" end page for correct page number types
1475 .de $c \" $$$ print chapter title
1481 .ie \\n(_M=1 CHAPTER\ \ \\n(ch
1482 .el .if \\n(_M=2 APPENDIX\ \ \\n(ch
1483 .if \w"\\$1" .sp 3-\\n(.L
1485 .if (\\n(_M<3):(\w"\\$1") \
1491 . $C Chapter \\n(ch "\\$1"
1493 . $C Appendix \\n(ch "\\$1"
1495 .de tp \" *** title page
1503 .if \n(mo=1 .ds mo January
1504 .if \n(mo=2 .ds mo February
1505 .if \n(mo=3 .ds mo March
1506 .if \n(mo=4 .ds mo April
1507 .if \n(mo=5 .ds mo May
1508 .if \n(mo=6 .ds mo June
1509 .if \n(mo=7 .ds mo July
1510 .if \n(mo=8 .ds mo August
1511 .if \n(mo=9 .ds mo September
1512 .if \n(mo=10 .ds mo October
1513 .if \n(mo=11 .ds mo November
1514 .if \n(mo=12 .ds mo December
1515 .if \n(dw=1 .ds dw Sunday
1516 .if \n(dw=2 .ds dw Monday
1517 .if \n(dw=3 .ds dw Tuesday
1518 .if \n(dw=4 .ds dw Wednesday
1519 .if \n(dw=5 .ds dw Thursday
1520 .if \n(dw=6 .ds dw Friday
1521 .if \n(dw=7 .ds dw Saturday
1525 .ds td \*(mo \n(dy, \n(y4
1526 .\" *** PARAMETRIC INITIALIZATIONS ***
1528 .nr $v \n(.v00+\n(.sp-1/\n(.sp \" vs as percentage of ps for .sz request
1529 .nr $V \n($v \" same for displays & footnotes
1530 .nr hm 4v \" header margin
1531 .nr tm 7v \" top margin
1532 .nr bm 6v \" bottom margin
1533 .nr fm 3v \" footer margin
1534 .nr tf 3 \" title font: (real) Times Bold
1535 .nr tp 10 \" title point size
1537 .nr bi 4m \" indent for blocks
1538 .nr pi 5n \" indent for paragraphs
1539 .nr pf 1 \" normal text font
1540 .nr pp 10 \" normal text point size
1541 .nr qi 4n \" indent for quotes
1542 .nr qp -1 \" down one point
1543 .nr ii 5n \" indent for .ip's
and .np
's
1544 .nr $m 1 \" max number of columns
1545 .nr $s 4n \" column separation
1546 .nr sf 3 \" section font -- Times Bold
1547 .nr sp 10 \" section title pointsize
1548 .nr ss 12p \" section prespacing
1549 .nr si 0 \" section indent
1550 .\" *** OTHER INITIALIZATION ***
1551 .\" GNU pic sets this register to 1, to indicate that \x should not be used.
1553 .ds { \v'-0.4m
'\x'\\
n(0x
=0*-0.2m
'\s-3
1555 .\" for compatibility with traditional -me
1556 .\" (the first will work only in compatibility mode)
1559 .ds < \v'0.4m
'\x'\\
n(0x
=0*0.2m
'\s-3
1562 .\" Avoid warnings from groff -ww.
1579 .@R po\" \" simulated page offset
1580 .@R $0\" \" section depth
1581 .@R $i\" \" paragraph base indent
1582 .@R $p\" \" numbered paragraph number
1583 .@R $r\" \" ratio of vs to ps (may override $v)
1584 .@R $R\" \" same for displays (may override $V)
1585 .@R df\" \" display font: same as surrounding text
1586 .@R so\" \" additional section title offset
1587 .@R fu\" \" footnote undent
1588 .@R bt\" \" block keep threshold
1589 .@R *\" \" has \** been referenced?
1590 .@R ?a\" \" pending floating keep at page top?
1591 .@R ?b\" \" pending floating keep at page bottom?
1592 .@R ?C\" \" at chapter header?
1593 .@R ?e\" \" in equation?
1594 .@R ?H\" \" suppress headers and footers next page?
1595 .@R ?I\" \" has the header trap been sprung?
1596 .@R ?n\" \" n1 mode?
1597 .@R ?o\" \" footnote overflow?
1598 .@R ?R\" \" renumbered chapter?
1599 .@R ?s\" \" skip next page?
1600 .@R ?T\" \" inside .TS H?
1601 .@R ?W\" \" wide floating keep at page bottom?
1602 .@R ?w\" \" wide floating keep at page top?
1607 .if \n(ps<\n(.V .nr ps \n(.V
1608 .nr bs \n(ps \" block pre/post spacing
1609 .nr qs \n(ps \" quote pre/post spacing
1610 .nr zs 1v \" float-block pre/postspacing
1611 .nr xs 0.2v \" index prespacing
1612 .nr xu 0.5i \" index undent
1613 .nr fs 0.2v \" footnote prespacing
1614 .nr es 0.5v \" equation pre/postspacing
1615 .if \n(es<\n(.V .nr es \n(.V
1616 .wh 0 @h \" set header
1617 .nr $l \n(.lu \" line length
1618 .nr _L \n(.lu \" line length of page
1619 .nr $c 1 \" current column number
1620 .nr $f 1 1 \" footnote number
1621 .ds * \*{1\*}\k*\" \" footnote "name"
1622 .nr $d 1 1 \" delayed text number
1623 .ds # [1]\k#\" \" delayed text "name"
1624 .nr _M 1 \" chapter mode is chapter
1625 .ds lq \(lq\" \" left quote
1626 .ds rq \(rq\" \" right quote
1628 .\" *** FOREIGN LETTERS AND SPECIAL CHARACTERS ***
1629 .ds #h ((1u-(\\\\n(.fu%2u))*0.13m)
1632 .ds ' \k_\h
'-(\\n(.wu*8/10-\*(#h)'\
(aa\h
'|\\n_u'
1633 .ds ` \k_\h
'-(\\n(.wu*7/10-\*(#h)'\
(ga\h
'|\\n_u'
1635 .ds
: \k_\h
'-(\\n(.wu*8/10-\*(#h+0.1m)'\v
'-\*(#v'\z
.\h
'0.2m'.\h
'|\\n_u'\v
'\*(#v'
1636 .\
" \" circumflex
and tilde
1637 .ds ^ \k_\h
'-(\\n(.wu-\*(#h-0.05m)'^\h
'|\\n_u'
1638 .ds ~ \k_\h
'-(\\n(.wu-\*(#h-0.05m)'~\h
'|\\n_u'
1639 .\
" \" cedilla
and czech
1640 .ds
, \k_\h
'-(\\n(.wu)',\h
'|\\n_u'
1641 .ds v \k_\h
'-(\\n(.wu*9/10-\*(#h)'\v
'-\*(#v'\s
-4v\s0\v
'\*(#v'\h
'|\\n_u'
1642 .\
" \" Norwegian A
or angstrom
1643 .ds o \k_\h
'-(\\n(.wu+\w'\
(de
'u-\*(#h)/2u'\v
'-0.4n'\z\
(de\v
'0.4n'\h
'|\\n_u'
1644 .\
" \" there exists
, for
all
1645 .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'
1646 .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'
1651 .tm The \\$
1 macro has been removed
from this version of the
-me macros
.