8 date 90.04.05.15.20.23; author sources; state Exp;
13 date 90.03.28.11.11.58; author sources; state Exp;
18 date 90.03.27.12.55.07; author sources; state Exp;
32 @% UCI Dissertation Style for AmSTeX.
35 % Tim Morgan with many suggestions, bug fixes, etc, from Marshall Rose
36 % Based originally on Michael Spivak's AMSPPT.STY.
38 % When edits are made to this file, the version number should be incremented.
40 \let\fmtversion=\version % These two control sequences are defined
41 \def\fmtname{dissertation} % in plain.tex, so we do it here too.
43 % Assumes the following hidden definitions from plain.tex:
44 % \z@@ is defined from plain.tex as 0pt (and magically can
45 % be used as the integer constant 0 also).
46 % \p@@ is the same, but 1pt
53 % And the following scratch register definitions:
54 % \dimen@@ is \dimendef'd to be \dimen0
55 % \skip@@ is \skipdef'd to be \skip0
56 % \count@@ is \count255
58 \catcode`\@@=11 % So we can use a special character
61 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
62 % PARAMETERS DIFFERENT THAN IN PLAIN %
63 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
65 % These are words which TeX doesn't hyphenate perfectly.
66 % Unfortunately, the plural forms must be included also.
67 \hyphenation{com-put-er com-mun ap-pen-dix cart-wheel data-base Dijk-stra}
68 \hyphenation{in-fra-struc-ture man-u-script mi-cro-fiche para-mil-i-tary}
69 \hyphenation{post-am-ble pre-am-ble sub-scrib-er wave-guide sub-scrib-ers}
70 \hyphenation{com-put-ers cart-wheels data-bases in-fra-struc-tures}
71 \hyphenation{man-u-scripts mi-cro-fiches post-am-bles pre-am-bles}
72 \hyphenation{buf-fer buf-fers des-ig-na-ted par-a-graph par-a-graphs}
73 \hyphenation{key-stroke key-strokes usu-al-ly}
76 \def\normal@@topskip{0.48cm}
77 \topskip=\normal@@topskip % For correct page positioning, do NOT
78 \hoffset=0.5in % change any of these values!!!
83 \normallineskiplimit=\p@@ % Min. dist. btw. lines.
84 \parindent=1cm % Normal indentation.
85 \hfuzz=0.115\p@@ % So we hear fewer complaints. Good up to
86 \vfuzz=0.115\p@@ % 300 dpi.
88 \pretolerance=200 % At 12pt, these margins are kind of narrow
89 \tolerance=300 % so we have to be more tolerant.
90 \clubpenalty=\@@M % Never allow these.
92 \newlinechar=`\^^J % For writing output to tty.
93 \uchyph=\z@@ % Don't take any chances.
94 \brokenpenalty=\@@M % Never hyphenate last line on a page.
95 \newcount\defaultinterlinepenalty % This probably won't make any
96 \defaultinterlinepenalty=\thr@@@@ % difference, so why not??
97 \interlinepenalty=\defaultinterlinepenalty
100 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
101 % PARAMETERS DIFFERENT from AmSTeX %
102 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
104 \TagsOnRight % Set tags like a sane person does
107 %%%%%%%%%%%%%%%%%%%%%%%%
108 % EXTRA FONTS NEEDED %
109 %%%%%%%%%%%%%%%%%%%%%%%%
112 \olddigitsfalse % Allow use of amcscod10 for citations
115 \oktell{Old Digits Mode}%
118 \font\sixrm=cmr6 \font\sixbf=cmbx6
119 \font\sixi=cmmi6 \skewchar\sixi='177
120 \font\sixsy=cmsy6 \skewchar\sixsy='60
122 \font\eightrm=cmr8 \font\eightsl=cmsl8 \font\eightit=cmti8
123 \font\eightsy=cmsy8 \skewchar\eightsy='60
124 \skewchar\eightsy='60 \font\eightbf=cmbx8
125 \font\eightex=cmex10 at 8\p@@
126 \font\eighti=cmmi8 \skewchar\eighti='177
128 \font\ninerm=cmr9 \font\nineit=cmti9
129 \font\ninei=cmmi9 \skewchar\ninei='177
130 \font\ninesy=cmsy9 \skewchar\ninesy='60
131 \font\ninesl=cmsl9 \font\ninebf=cmbx9
133 \font\twelvecsc=cmcsc10 scaled \magstep1
135 \font\eightcsc=cmcsc10 at 8\p@@
136 \font\elevencsc=cmcsc10 scaled \magstephalf
137 \font\ninecsc=cmcsc10 at 9\p@@
139 \let\tencscod=\tencsc
140 \let\eightcscod=\eightcsc
142 \font\eightsf=cmss10 at 8\p@@
144 \font\twelvesf=cmss10 at 12\p@@
146 \font\twelvett=cmtt10 scaled \magstep1
147 \font\eighttt=cmtt10 at 8\p@@ % \tentt is predefined in plain.tex
149 \font\twelvebti=cmbti at 12\p@@
151 \font\eightbti=cmbti at 8\p@@
153 \font\twelveex=cmex10 scaled \magstep1 \font\twelverm=cmr10 scaled \magstep1
154 \font\twelvesl=cmsl10 scaled \magstep1 \font\twelvebf=cmbx10 scaled \magstep1
155 \font\twelvei=cmmi10 scaled \magstep1 \skewchar\twelvei='177
156 \font\twelvesy=cmsy10 scaled \magstep1 \skewchar\twelvesy='60
157 \font\twelveit=cmti10 scaled \magstep1
159 \font\twelvechap@@font=cmssbx10 at 14\p@@
160 \font\twelvesec@@font=cmss10 at 13\p@@
161 \font\twelvesubsec@@font=cmssi10 scaled \magstep1
163 \font\tenchap@@font=cmssbx10 scaled \magstep1
164 \font\tensec@@font=cmssbx10 scaled \magstephalf
165 \font\tensubsec@@font=cmssi10
167 \font\eightchap@@font=cmssbx10
168 \font\eightsec@@font=cmss10 at 9\p@@
169 \font\eightsubsec@@font=cmssqi8
173 \def\curfont{\ifcase\font@@no\rm\or\it\or\sl\or\bf\or\tt\or\csc\or\bti\or\sf
174 \else\errmessage{Internal font confusion}\fi}
176 %%%%%%%%%%%%%%%%%%%%%
178 %%%%%%%%%%%%%%%%%%%%%
180 \newskip\normalabovedisplayskip
181 \newskip\normalbelowdisplayskip
182 \newskip\normalabovedisplayshortskip
183 \newskip\normalbelowdisplayshortskip
184 \newdimen\normalparskip \normalparskip=22.5\p@@
185 \newdimen\parstretch \parstretch=8\p@@
187 \newif\ifsinglespacing % Tells if we are currently in single space mode
188 \newif\ifhalfspacing % Special version of singlespacing, a little bigger.
190 % Actually tell TeX what spacing is wanted
192 \baselineskip=\normalbaselineskip
193 \abovedisplayskip=\normalabovedisplayskip
194 \belowdisplayskip=\normalbelowdisplayskip
195 \abovedisplayshortskip=\normalabovedisplayshortskip
196 \belowdisplayshortskip=\normalbelowdisplayshortskip
197 % Compute \parskip for even paragraph spacing at all pt sizes
198 \dimen@@=\normalparskip
199 \advance\dimen@@ by -\normalbaselineskip
200 \parskip=\dimen@@ plus\parstretch
203 % Go from double to single spacing
205 \normalbaselineskip=0.64\normalbaselineskip
206 \normalabovedisplayskip=0.64\normalabovedisplayskip
207 \normalbelowdisplayskip=0.64\normalbelowdisplayskip
208 \normalabovedisplayshortskip=0.64\normalabovedisplayshortskip
209 \normalbelowdisplayshortskip=0.64\normalbelowdisplayshortskip
212 % Set halfspacing baseline etc starting from singlespacing mode
213 \def\sethalfspacing{%
214 \normalbaselineskip=1.28125\normalbaselineskip
215 \abovedisplayskip=1.28125\abovedisplayskip
216 \belowdisplayskip=1.28125\belowdisplayskip
217 \abovedisplayshortskip=1.28125\abovedisplayshortskip
218 \belowdisplayshortskip=1.28125\belowdisplayshortskip
221 % Go to single spacing if we're not there already
223 \normalspacing \reducespacing
224 \halfspacingfalse \singlespacingtrue
228 % Go to 1-1/2 spacing.
230 \normalspacing \reducespacing \sethalfspacing
231 \singlespacingtrue \halfspacingtrue
235 % Go to normal, doublespacing mode
238 \singlespacingfalse \halfspacingfalse
242 % Make sure we're doing the spacing we're supposed to be.
247 \ifhalfspacing \sethalfspacing \fi
253 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
254 % FOUR DIFFERENT POINT SIZES %
255 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
258 \def\big@@@@AmS{10.2\p@@}%
259 \def\Big@@@@AmS{13.8\p@@}%
260 \def\bigg@@@@AmS{17.4\p@@}%
261 \def\Bigg@@@@AmS{21.0\p@@}%
262 \let\smallertype=\tenpoint
263 \let\curtype=\twelvepoint
264 \def\biggertype{\errmessage{No larger point size available}}%
266 \normalbaselineskip=22.8\p@@
267 \normalabovedisplayskip=14.5\p@@ plus 3\p@@ minus 9\p@@
268 \normalbelowdisplayskip=14.5\p@@ plus 3\p@@ minus 9\p@@
269 \normalabovedisplayshortskip=\z@@ plus 4\p@@
270 \normalbelowdisplayshortskip=9\p@@ plus 4\p@@ minus 5\p@@
272 \def\rm{\font@@no=0\fam\z@@\twelverm}%
273 \def\it{\font@@no=1\fam\itfam\twelveit}%
274 \def\sl{\font@@no=2\fam\slfam\twelvesl}%
275 \def\bf{\font@@no=3\fam\bffam\twelvebf}%
276 \def\tt{\font@@no=4\fam\ttfam\twelvett \spaceskip.5em plus.25em
278 \def\csc{\font@@no=5\twelvecsc}%
279 \def\bti{\font@@no=6\twelvebti}%
280 \def\sf{\font@@no=7\twelvesf}%
283 \let\cite@@font=\tencscod
285 \let\cite@@font=\elevencsc
287 \textfont\z@@=\twelverm \scriptfont\z@@=\ninerm \scriptscriptfont\z@@=\sixrm
288 \textfont\@@ne=\twelvei \scriptfont\@@ne=\ninei \scriptscriptfont\@@ne=\sixi
289 \textfont\tw@@=\twelvesy \scriptfont\tw@@=\ninesy \scriptscriptfont\tw@@=\sixsy
290 \textfont\thr@@@@=\twelveex \scriptfont\thr@@@@=\twelveex
291 \scriptscriptfont\thr@@@@=\twelveex
292 \textfont\itfam=\twelveit
293 \textfont\slfam=\twelvesl
294 \textfont\ttfam=\twelvett
295 \textfont\bffam=\twelvebf \scriptfont\bffam=\ninebf
296 \scriptscriptfont\bffam=\sixbf
297 \let\chap@@font=\twelvechap@@font
298 \let\sec@@font=\twelvesec@@font
299 \let\subsec@@font=\twelvesubsec@@font
300 \let\subsubsec@@font=\twelvebf
301 \def\oldstyle{\fam1\twelvei}%
304 \ifundefined{everypointsize}\else\everypointsize{twelve}{12}\fi
308 \def\big@@@@AmS{8.5\p@@}%
309 \def\Big@@@@AmS{11.5\p@@}%
310 \def\bigg@@@@AmS{14.5\p@@}%
311 \def\Bigg@@@@AmS{17.5\p@@}%
312 \let\smallertype=\eightpoint
313 \let\curtype=\tenpoint
314 \let\biggertype=\twelvepoint
316 \normalbaselineskip=18.9\p@@
317 \normalabovedisplayskip=12\p@@ plus 3\p@@ minus 9\p@@
318 \normalbelowdisplayskip=12\p@@ plus 3\p@@ minus 9\p@@
319 \normalabovedisplayshortskip=\z@@ plus 3\p@@
320 \normalbelowdisplayshortskip=7\p@@ plus 3\p@@ minus 4\p@@
322 \def\rm{\font@@no=0\fam\z@@\tenrm}%
323 \def\it{\font@@no=1\fam\itfam\tenit}%
324 \def\sl{\font@@no=2\fam\slfam\tensl}%
325 \def\bf{\font@@no=3\fam\bffam\tenbf}%
326 \def\tt{\font@@no=4\fam\ttfam\tentt \spaceskip.5em plus.25em
328 \def\csc{\font@@no=5\tencsc}
329 \def\bti{\font@@no=6\tenbti}%
330 \def\sf{\font@@no=7\tensf}%
333 \let\cite@@font=\eightcscod
335 \let\cite@@font=\ninecsc
337 \textfont\z@@=\tenrm \scriptfont\z@@=\sevenrm \scriptscriptfont\z@@=\fiverm
338 \textfont\@@ne=\teni \scriptfont\@@ne=\seveni \scriptscriptfont\@@ne=\fivei
339 \textfont\tw@@=\tensy \scriptfont\tw@@=\sevensy \scriptscriptfont\tw@@=\fivesy
340 \textfont\thr@@@@=\tenex \scriptfont\thr@@@@=\tenex
341 \scriptscriptfont\thr@@@@=\tenex
342 \textfont\itfam=\tenit
343 \textfont\slfam=\tensl
344 \textfont\ttfam=\tentt
345 \textfont\bffam=\tenbf \scriptfont\bffam=\sevenbf
346 \scriptscriptfont\bffam=\fivebf
347 \let\chap@@font=\tenchap@@font
348 \let\sec@@font=\tensec@@font
349 \let\subsec@@font=\tensubsec@@font
350 \let\subsubsec@@font=\tenbf
351 \def\oldstyle{\fam1\teni}%
354 \ifundefined{everypointsize}\else\everypointsize{ten}{10}\fi
358 \def\big@@@@AmS{6.8\p@@}%
359 \def\Big@@@@AmS{9.2\p@@}%
360 \def\bigg@@@@AmS{11.6\p@@}%
361 \def\Bigg@@@@AmS{14.0\p@@}%
362 \def\smallertype{\errmessage{No smaller point size available}}%
363 \let\curtype=\eightpoint
364 \let\biggertype=\tenpoint
366 \normalbaselineskip=15\p@@
367 \normalabovedisplayskip=10\p@@ plus 2.4\p@@ minus 7.2\p@@
368 \normalbelowdisplayskip=10\p@@ plus 2.4\p@@ minus 7.2\p@@
369 \normalabovedisplayshortskip=\z@@ plus 2.4\p@@
370 \normalbelowdisplayshortskip=55.6\p@@ plus 2.4\p@@ minus 3.2\p@@
372 \def\rm{\font@@no=0\fam\z@@\eightrm}%
373 \def\it{\font@@no=1\fam\itfam\eightit}%
374 \def\sl{\font@@no=2\fam\slfam\eightsl}%
375 \def\bf{\font@@no=3\fam\bffam\eightbf}%
376 \def\tt{\font@@no=4\fam\ttfam\eighttt \spaceskip.5em plus.25em
378 \def\csc{\font@@no=5\eightcsc}%
379 \def\bti{\font@@no=6\eightbti}%
380 \def\sf{\font@@no=7\eightsf}%
382 \def\cite@@font{\errmessage{You may not do citations in 8 point}}
383 \textfont\z@@=\eightrm \scriptfont\z@@=\sixrm \scriptscriptfont\z@@=\fiverm
384 \textfont\@@ne=\eighti \scriptfont\@@ne=\sixi \scriptscriptfont\@@ne=\fivei
385 \textfont\tw@@=\eightsy \scriptfont\tw@@=\sixsy \scriptscriptfont\tw@@=\fivesy
386 \textfont\thr@@@@=\eightex \scriptfont\thr@@@@=\eightex
387 \scriptscriptfont\thr@@@@=\eightex
388 \textfont\itfam=\eightit
389 \textfont\slfam=\eightsl
390 \textfont\ttfam=\eighttt
391 \textfont\bffam=\eightbf \scriptfont\bffam=\sixbf
392 \scriptscriptfont\bffam=\fivebf
393 \let\chap@@font=\eightchap@@font
394 \let\sec@@font=\eightsec@@font
395 \let\subsec@@font=\eightsubsec@@font
396 \let\subsubsec@@font=\eightbf
397 \def\oldstyle{\fam1\eighti}%
400 \ifundefined{everypointsize}\else\everypointsize{eight}{10}\fi
404 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
405 % TABLE of CONTENTS Macros %
406 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
408 % This set of macros allows you to build a table of contents for a document
409 % automatically in TeX. There are only three control sequences which you
410 % will need to use. The first is \inicont, which initializes the macros.
411 % This package works by writing the appropriate lines into a file called
412 % \jobname.toc in your account. This file is read by \printcontents or
413 % by \printcont in PRINT-PRELIM.TEX.
415 \newwrite\cont@@file % Get a free channel to write to
416 \newif\ifcont@@closed
417 \cont@@closedtrue % Haven't opened contents file yet
421 \fig@@closedtrue % Or the list of figures file
423 \tab@@closedtrue % Or the tables file
425 \def\contitle{\jobname.toc} % Default name of contents file
426 \def\figtitle{\jobname.lof} % ditto for figures file
427 \def\tabtitle{\jobname.lot} % ditto for tables file
429 % Make sure the contents file is open before writing to it
432 \immediate\openout\cont@@file=\contitle
438 % This control sequence adds its argument to the table of contents.
443 \write\cont@@file{\string\Z{#1}{\the\pageno}}%
447 % This control sequence is the same as \content except that the first
448 % box written will have two leading spaces to indent it.
453 \write\cont@@file{\string\Z{\string\hskip \parindent{}#1}{\the\pageno}}%
456 % And the same thing for sub-sections
457 \def\subsubcontent#1{%
460 \write\cont@@file{\string\Z{\string\hskip 2\parindent{}#1}{\the\pageno}}%
463 % And the same thing for sub-sub-sections
464 \def\subsubsubcontent#1{%
467 \write\cont@@file{\string\Z{\string\hskip 3\parindent{}#1}{\the\pageno}}%
470 % Simple table-of-contents printer for \articlestyle.
471 % For dissertations, use the one in print-prelim.tex.
472 % Use this macro as the last thing in your report, since it makes
473 % the page numbers be in romannumerals at the bottom of the page.
475 \closeout \cont@@file
476 \null\vfill\supereject % Close output, end last page
477 \twelvepoint\rm % Make sure we're in normal mode
478 \pageno=\m@@ne % Contents get roman numerals.
479 \plain@@page@@numbers % Put page #s at bottom only
480 \oktell{Table of Contents}
481 \null \vskip .8in minus\baselineskip
482 \centerline{\chap@@font Contents}
483 \vskip \tw@@\baselineskip
485 \begingroup % Temporarily change \baselineskip to avoid
486 % underfull \vbox's during output errors.
487 \baselineskip=\@@ne\baselineskip plus .05\baselineskip
488 \def\Z##1##2{\line{\ignorespaces##1\leaders
489 \hbox to.7em{.\hfil}\hfil\hbox to2em{\hss##2}}}
492 \input\contitle \relax
493 \endgroup % Also undoes the \catcode change
497 %%%%%%%%%%%%%%%%%%%%%%%%
498 % NUMBERED FOOTNOTES %
499 %%%%%%%%%%%%%%%%%%%%%%%%
501 % First, modify \vfootnote from Plain to use smallertype and singlespace
503 \insert\footins\bgroup\tenpoint\singlespace
504 \interlinepenalty\interfootnotelinepenalty
505 \splittopskip\ht\strutbox % top baseline for broken footnotes
506 \splitmaxdepth\dp\strutbox \floatingpenalty\@@MM
507 \leftskip\z@@skip \rightskip\z@@skip \spaceskip\z@@skip \xspaceskip\z@@skip
509 \textindent{#1}\footstrut\futurelet\next\fo@@t
512 % Allocate a counter for the numbered footnotes
513 \newcount\note@@count \note@@count=\@@ne
516 \unskip\footnote{$^{\number\note@@count}$}{#1}%
517 \global\advance\note@@count by\@@ne
520 % Same except that trailing period or comma is ``tucked'' under
521 % the note mark. \ntucknote provides auto numbering.
522 \def\ntucknote#1#2{\nfootnote{#1}\llap{#2}}
523 \def\tucknote#1#2#3{\footnote{#1}{#2}\llap{#3}}
530 % Insert a discretionary hyphen. For use in restricted
531 % horizontal mode, as in the bibliography.
532 \def\hyphenbreak{\discretionary{-}{}{-}}
534 % Check if a macro name is currently undefined (from The TeXbook)
535 \def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax}
537 % Terminal input and output routines and auxilary stuff
538 \newwrite\undef@@out@@chan % Allocate a channel for the tty
539 \def\tell#1{{\let\\=\space\immediate\write\undef@@out@@chan{#1}}}
540 \def\ask#1{\read-16 to #1} % Read from tty w/o prompt
542 % Sanitize a string before \write'ing it.
543 % Call with \unexpanded{op}{msg}
544 % Modified from version in The TeXbook, originally by Todd Allen
545 \long\def\unexpanded#1#2{%
547 {\aftergroup\finwrite\aftergroup{\sanitize@@uci#2\endsanity@@uci}}%
549 \def\sanitize@@uci{\futurelet\next@@uci\sanswitch@@uci}
550 \def\sanswitch@@uci{\ifx\next@@uci\endsanity@@uci
551 \else\ifx\next@@uci\\\aftergroup\space\let\next@@uci=\eat@@uci
552 \else\ifcat\noexpand\next@@uci\space\aftergroup\space\let\next@@uci=\eat@@uci
553 \else\ifcat\noexpand\next@@uci\bgroup\aftergroup{\let\next@@uci=\eat@@uci
554 \else\ifcat\noexpand\next@@uci\egroup\aftergroup}\let\next@@uci=\eat@@uci
555 \else\let\next@@uci=\copytoken@@uci\fi\fi\fi\fi\fi \next@@uci
557 \def\eat@@uci{\afterassignment\sanitize@@uci \let\next@@uci= }
558 \long\def\copytoken@@uci#1{%
559 \ifcat\noexpand#1\relax\aftergroup\noexpand
560 \else\ifcat\noexpand#1\noexpand~\aftergroup\noexpand
563 \aftergroup#1\sanitize@@uci
565 \def\endsanity@@uci\endsanity@@uci{}
567 % Now use the sanity stuff to make a sane tell command. This macro
568 % actually takes one argument, but since it's the last for \unexpanded,
569 % we avoid scanning it twice by not picking it up here.
570 \def\sanetell{\unexpanded{\immediate\write\undef@@out@@chan}}
572 % Produce verbatim listings of various sorts
574 \def\uncatcodespecials{\def\do##1{\catcode`##1=12 } \dospecials}
576 \par \tt \spaceskip=\z@@ % Want fixed tt spacing now
577 \obeylines \uncatcodespecials \obeyspaces \verbatimdefs
580 % This macro turns on verbatim mode until ?endverbatim is seen.
582 \begingroup \setupverbatim
583 \parskip=\z@@ plus .05\baselineskip \parindent=\z@@
584 \catcode`\ =13 \catcode`\^^M=13 \catcode`\?=\z@@
587 {\catcode`\^^M=13{\catcode`\ =13\gdef\verbatimdefs{\def^^M{\ \par}\let =\ }}
588 \gdef\verbatimgobble#1^^M{}%
591 % This defines ?endverbatim to end the group which begins with \verbatim
592 \let\endverbatim=\endgroup
594 % Input a file in verbatim mode. Sometimes useful for including
595 % real-life examples into a paper.
597 \begingroup\setupverbatim
598 \parskip=\z@@ plus .05\baselineskip \parindent=\z@@
602 % This is the same as the above, but it adds line numbers to each
603 % line of the file printed. \lineno@@uci has the obvious use.
604 \newcount\lineno@@uci
607 \begingroup\setupverbatim
608 \parskip=\z@@ plus .05\baselineskip \parindent=20\p@@
609 \everypar{\advance\lineno@@uci by\@@ne \llap{\the\lineno@@uci\ \ }}%
614 % Draw a little qed symbol (black box)
615 \def\qed{\hbox{\hskip\p@@ \vrule width4\p@@ height6\p@@ depth1.5\p@@ \hskip\p@@}}
617 % Conditions -- from AmSppt
620 \let\runin=\runin@@AmStrue
621 \newdimen\cond@@dimen
622 \newdimen\condindent % Amount each nested condition is indented
623 \condindent=.5in % Default indentation amount
625 % This is used in \conditions
626 \def\firstcon@@AmS#1:{%
628 {\rm\ignorespaces#1\unskip}\ignorespaces
632 \ifdim\lastskip<\smallskipamount
633 \removelastskip \penalty55 \smallskip
639 % Do one item of the conditions. This is really \\ in disguise.
642 \hbox to \cond@@dimen{\hfil\rm\ignorespaces#1\unskip\quad}%
644 \hangindent\cond@@dimen\ignorespaces
647 \cond@@dimen=\z@@ % Value for outermost block
648 % Do the main stuff for \conditions.
653 \advance\cond@@dimen by\condindent
657 % Exit special stuff for \conditions.
659 \par\smallbreak\endgroup
660 \ifdim\cond@@dimen>\z@@ \cond@@item \fi % If ending an inner condition
663 % Automatically numbered items
664 \newcount\item@@count
665 \newdimen\item@@dimen \item@@dimen=\z@@
669 \advance \parindent by\item@@dimen
670 \ifnum\item@@dimen>\z@@
671 \edef\item@@prefix{\item@@prefix\number\item@@count.}
675 \item@@count=\z@@ \singlespace \interlinepenalty=200
677 \def\enditems{\par\endgroup}
678 \def\nitem{\advance\item@@count by\@@ne \item{\item@@prefix\number\item@@count.}}
680 % Turn back on the \+ construct of plain TeX.
681 \def\tabalign{\us@@true\m@@ketabbox}
682 \outer\def\+{\tabalign}
684 % Fix AmSTeX's definition used in its definition of ~ (tie).
685 \def\s@@AmS{\penalty\@@M\ifx\tok@@AmS\Space@@AmS\else\ \fi}
687 % And make \/ work the way it does in plain.tex
690 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
691 % PAGE CONTROL and OBJECT MANIPULATION %
692 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
694 % This definition doesn't blow up if you're in vertical mode already
695 \def\pagebreak{\ifhmode\vadjust{\break}\else\break\relax}
697 % This definition clears out all previous inserts etc to
698 % guarantee that the following stuff is at the top of a page.
699 \def\clearpage{\vfill\supereject}
701 % This macro keeps the stuff in the argument on the same page, leaving
702 % blank space on this page if necessary
703 \def\keep{\par\setbox\z@@=\vbox\bgroup}
707 \advance\dimen@@ by\dp\z@@
708 \vskip\z@@ plus\dimen@@
710 \vskip\z@@ plus-\dimen@@
723 % List macros from the TeXbook
725 \toksdef\ta=\z@@ \toksdef\tb=\tw@@
728 % usage: \newlist\list
729 \def\newlist#1{\let#1=\empty}
731 % usage: \append{item}\to\list
732 \def\append#1\to#2{\ta={\\{#1}}\tb=\expandafter{#2}\edef#2{\the\tb\the\ta}}
733 \def\gappend#1\to#2{\ta={\\{#1}}\tb=\expandafter{#2}\xdef#2{\the\tb\the\ta}}
735 % usage: \cardinality\list\to\counter
736 \def\cardinality#1\to#2{#2=\z@@ \long\def\\##1{\advance#2 by\@@ne }#1}
738 % usage: \ifismember{item}\of\list ... \else ... \fi
739 \def\ifismember#1\of#2{%
744 \ifx\next@@uci\given@@uci \result@@ucitrue\fi
750 % usage: \ifwasmember{item}\of\list ... \else ... \fi
751 % side effect: removes {item} from \list if present
752 \def\ifwasmember#1\of#2{%
758 \ifx\next@@uci\given@@uci
761 \append ##1\to\ref@@mtr
769 % Append #1 to list #2 if #1 is not already in #2
770 \def\addtolist#1\to#2{%
776 % Same thing, but do it \global'ly
777 \def\gaddtolist#1\to#2{%
785 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
786 % STUFF for BIBLIOGRAPHY and APPENDICES %
787 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
789 % Bibliography Package:
790 % Original version by Michal Spivak
791 % Updated for JACM format and automated by Tim Morgan
792 % Final cleanup, and much-improved automation, by Marshall Rose
793 % Additional work and IEEE support by TM.
795 % Simple appendix entry builder
800 \ifodd\pageno \else \null\vfill\eject\fi
804 \setbox\z@@=\hbox{#1}%
806 \content{Appendix #1: #2}%
807 \oktell{Appendix #1: #2}%
808 \def\title{Appendix #1\\#2}%
810 \content{Appendix: #2}%
811 \oktell{Appendix: #2}%
812 \def\title{Appendix\\#2}%
814 \let\\=\cr \tabskip=\z@@ \chap@@font
815 \halign to\hsize{\centerline{\ignorespaces##\unskip}\cr\title\cr}%
818 \vskip 1.0in minus 0.15in
823 % We keep a running list, \ref@@set, which is
824 % all the things which were \cite'd throughout the paper, with
825 % only one entry for each different key.
827 % There are three versions of each of the citation
829 % 1. The \def'd version is the normal one used throughout the paper.
830 % 2. Within a figure, table, etc,'s caption, because of the use of
831 % \def and \edef, a special version which just produces the
832 % citation without the \gaddtolist command is used. These
833 % definitions are predefined, and are \let to be \cite etc with
834 % \no@@cites, for speed.
836 % When the user requests a citation with key, we first look it up
837 % in a translation table called \key@@table, organized as a list of
838 % <key, printed-key> pairs, to see if it really should be
839 % printed differently. The user can specify this translation table using
840 % the \printkey command. If a key is not in the table, it is printed
843 % We keep the dimension \key@@size as the largest printed key so far.
844 % This value can then be used to print the keys in the bibliography
845 % optimally, rather than just trying to guess. Each time we print a
846 % (in \use@@key), we see if it's longer than \key@@size, and if so then
847 % we set \key@@size = its width.
849 \key@@size=\z@@ % Init. value so \key@@size is made as small as possible
851 % Invisible citation. usage: \icite{key}
853 \gaddtolist#1\to\ref@@set
856 % Management of \key@@table stuff. This table is formatted as
857 % \\{real-key}{printed-key}...
860 % Add a pair of items to the list. This should be done before any
861 % citations are made, for obvious reasons.
862 % #1=real key (the one you use in the paper and bibliography)
863 % #2=the key that gets printed in the output
866 \tb=\expandafter{\key@@table}%
867 \xdef\key@@table{\the\tb\the\ta}%
870 % Print a key, looking it up in the table. #1 is \whatever which
871 % expands to the key used by the user. The definition of \\ here
872 % makes use of the format of the \key@@table, so that the table is
873 % actually EXECUTED, hence making lookup relatively fast.
874 \newif\if@@not@@printed@@
876 \@@not@@printed@@true
881 \@@not@@printed@@false
882 \setbox\z@@=\hbox{[##2]\enspace}%
883 \ifdim\wd\z@@>\key@@size \global\key@@size=\wd\z@@ \fi
890 \setbox\z@@=\hbox{\cite@@font[\ignorespaces#1\unskip]\enspace}%
891 \ifdim\wd\z@@>\key@@size \global\key@@size=\wd\z@@ \fi
896 % This macro moves forward until it hits \end, skipping spaces.
897 % Each time it hits a comma, or when it hits and \end, it
898 % adds whatever has been collected so far (in \@@total) to
899 % \ref@@set and to the output list. It is assumed that \@@total
900 % has been set to \empty before this routine is called (this is done
901 % by \@@@@cite, below).
904 \expandafter\gaddtolist\@@total\to\ref@@set
906 \let\@@next=\relax % Exit loop after this time
908 \if#1,% % We have a complete key now.
909 \expandafter\gaddtolist\@@total\to\ref@@set
910 \use@@key\@@total,\space
911 \global\let\@@total=\empty
913 \xdef\@@total{\@@total#1}% Add new char to total
915 \let\@@next=\@@icite % Continue looping until done
920 % Initialize and call \@@icite. Used in \cite, \citep, \citepp
921 \def\@@@@cite#1{\global\let\@@total=\empty\@@icite#1\end}
923 % usage: \cite{key [, key...]}
925 {\cite@@font[\@@@@cite{#1}]}%
928 % usage: \citep{key}{page}
930 {\cite@@font[\@@@@cite{#1}, \hbox{\rm p \ignorespaces#2\unskip}]}%
933 % usage: \citepp{key}{pages}
935 {\cite@@font[\@@@@cite{#1}, \hbox{\rm pp \ignorespaces#2\unskip}]}%
938 % These three definitions are used in \no@@cites, below. They
939 % don't handle extraneous spaces as well as the normal
940 % definition, but they should be sufficient for most people.
941 \def\i@@cite#1{{\cite@@font[\noexpand\noexpand\noexpand\@@@@cite{#1}]}}
943 \def\i@@citep#1#2{{\cite@@font[\noexpand\noexpand\noexpand\@@@@cite{#1},\space
944 \hbox{\noexpand\noexpand\noexpand\rm p \ignorespaces#2\unskip}]}%
947 \def\i@@citepp#1#2{{\cite@@font[\noexpand\noexpand\noexpand\@@@@cite{#1},\space
948 \hbox{\noexpand\noexpand\noexpand\rm pp \ignorespaces#2\unskip}]}%
951 % Turn off adding citations to \ref@@set. This is needed when
952 % using \cite etc inside a caption for tables, figures, etc.
953 % \no@@cites is undone by exiting an enclosing group.
955 \let\citepp=\i@@citepp
960 %%%%%%%%%%%%%%%%%%%%%%
961 % References Section %
962 %%%%%%%%%%%%%%%%%%%%%%
964 % The basic strategy is as follows. We read the bib. file, which is
965 % assumed to be in sorted order of keys/author names. Each
966 % entry is of the form \ref{key}. We see if that key is in the table
967 % \ref@@set, which is a table of all the keys we've \cite'd. If the key
968 % isn't in the list, we print it in parens and go on to the next entry.
969 % Otherwise, we print the key in square brackets, and format the
970 % bibliography entry according to the format (JACM or IEEE). We print a
971 % warning if the key is in the \ref@@seen list. We add the key to
972 % the \ref@@seen list. The key is removed from the \ref@@set list if it
973 % was there. At the end of the references (\endreferences), we check
974 % if there are any keys left in \ref@@set. If so, the bib. file was
975 % deficient, and we print a warning message (it should probably be a
976 % fatal error message).
979 \newif\ifinclude@@annos % Should annotations be printed?
980 \include@@annosfalse % By default, no
981 \def\annotate{% % ``official'' command
983 \oktell{Annotating bibliography}%
986 \newif\ifin@@anno % True while doing an annotation
989 \def\refi@@AmS{F} % This starts as False
991 % Begin an annotation -- must be in vertical mode. Just gather
992 % text into box0 for use by \endanno. We do a couple of consistency
993 % checks at the beginning.
996 \message{You forgot the \noexpand\endref command!}
997 \message{I've inserted one for you.}
1001 \errmessage{No \noexpand\ref command before first \noexpand\anno}
1005 \setbox\z@@=\vbox\bgroup
1008 % End of an annotation. Decide if it should be typeset or skipped.
1010 \egroup % End the group for box0
1011 \in@@annofalse % No longer doing an annotation
1012 \if T\refed@@uci % If previous reference was used,
1013 \ifinclude@@annos {% And if we're producing an annotated bib.,
1015 \interlinepenalty=\defaultinterlinepenalty
1016 \unvbox\z@@ % Then include annotation as normal paragraph(s)
1022 \global\newlist\ref@@set % list of all references cited
1023 \global\newlist\ref@@seen % list of all references defined
1025 \def\reftitle{References} % Default title for bibliography
1027 % usage: \references (begin the References section)
1029 \vfill\supereject % Begin new page, clear out everything
1030 \ifoddpages % Make sure start on even page.
1031 \ifodd\pageno \relax \else \null\vfill\eject \fi
1033 \begingroup % Following changes are local to bib.
1035 \twelvepoint % Get good appearance
1037 \no@@cites % \cite's just produce [key]
1038 \parskip=0.6\baselineskip plus5\p@@ minus4\p@@
1039 \tolerance=5000 % Must be extremely tolerant!
1041 \interlinepenalty=400 % To discourage breaking a reference
1042 % across page boundaries
1043 \uchyph=\@@ne % Needed to try hyphenating title words
1044 \sfcode`.=\@@m % Like \frenchspacing, but only for
1047 % Now we output the title and so forth.
1048 \centerline{\csc \reftitle}%
1051 \content\reftitle % Tell user and TOC.
1053 \pageno@@foot % Put page # in special place
1055 % Special definitions within reference mode
1060 % usage: \endreferences (end the References section)
1061 \def\endreferences{%
1062 \par % Make sure last printed reference is finished up.
1063 \cardinality\ref@@set\to\count@@
1067 \message{Warning: \number\count@@\space undefined citations: \ref@@set}
1069 \message{Warning: One undefined citation: \ref@@set}
1072 \endgroup % End of \references group
1076 % References Database
1079 \newbox\bybox@@AmS \newbox\bysamebox@@AmS
1080 \newbox\paperbox@@AmS \newbox\paperinfobox@@AmS
1081 \newbox\jourbox@@AmS \newbox\jourinfobox@@AmS
1082 \newbox\volbox@@AmS \newbox\issuebox@@AmS
1083 \newbox\monbox@@AmS \newbox\yrbox@@AmS
1084 \newbox\pagesbox@@AmS \newbox\editorbox@@AmS
1085 \newbox\bookbox@@AmS \newbox\bookinfobox@@AmS
1086 \newbox\publbox@@AmS \newbox\publaddrbox@@AmS
1087 \newbox\finalinfobox@@AmS\newbox\wastebox@@uci
1088 \newbox\talkbox@@AmS \newbox\keybox@@AmS
1089 \newbox\editorsbox@@AmS
1091 \def\using@@IEEE{F} % By default, not using IEEE format
1093 % reset a \keyword to the ``not used'' condition
1094 \def\refset@@AmS#1{%
1095 \expandafter\gdef\csname is\expandafter\eat@@AmS
1096 \string#1@@AmS\endcsname{F}\expandafter
1097 \setbox\csname\expandafter\eat@@AmS\string#1box@@AmS\endcsname=\null
1102 \refset@@AmS\key \refset@@AmS\finalinfo
1103 \refset@@AmS\by \gdef\isbysame@@AmS{F}%
1104 \refset@@AmS\paper \refset@@AmS\paperinfo
1105 \refset@@AmS\jour \refset@@AmS\jourinfo
1106 \refset@@AmS\vol \refset@@AmS\issue
1107 \refset@@AmS\mon \refset@@AmS\yr
1108 \refset@@AmS\pages \gdef\ispage@@AmS{F}%
1109 \refset@@AmS\book \refset@@AmS\bookinfo
1110 \refset@@AmS\publ \refset@@AmS\publaddr
1111 \refset@@AmS\editor \refset@@AmS\talk
1112 \refset@@AmS\editors
1113 \gdef\istoappear@@AmS{F}%
1114 \gdef\isinbook@@AmS{F}%
1119 % usage: \ref{citation} \keywords arguments ... \endref. We make sure
1120 % we aren't still doing an \anno first.
1123 \message{You forgot an \noexpand\endanno command,}
1124 \message{but I forgive you this time.}
1128 \ifwasmember#1\of\ref@@set
1135 \ifismember#1\of\ref@@seen
1136 \sanetell{multiply defined: [#1]}%
1138 \append#1\to\ref@@seen
1141 \def\\{\egroup\endref@@AmS\gdef\refi@@AmS{F}\ref@@AmS}%
1144 \key \if T\refed@@uci
1146 \fi\egroup\setbox\wastebox@@uci=\hbox\bgroup\ignorespaces
1149 % End of a reference.
1151 % Note that \endref@@AmS is \let to be whichever \endref@@xxx command
1152 % is being used; default is \endref@@JACM for JACM format.
1154 % If we printed the reference, \endref@@AmS will
1155 % have set \bysamebox@@AmS to be a box containing a box
1156 % containing a rule and a period. This is unboxed if a subsequent
1157 % reference which gets printed uses \bysame. Otherwise, we here
1158 % save the \by field (if given) so that if a subsequent reference
1159 % using \bysame gets used, we'll know who the author was, even though
1160 % the reference which gave the author(s) wasn't printed. Tricky, huh?
1162 \egroup\gdef\refl@@AmS{T}%
1167 \setbox\bysamebox@@AmS=\box\bybox@@AmS
1173 % define a \keyword. #1=keyword, #2=font to use, or {}
1174 \def\refdef@@AmS#1#2{%
1178 \csname is\expandafter\eat@@AmS\string#1@@AmS\endcsname{T}%
1180 \csname\expandafter\eat@@AmS\string#1box@@AmS\endcsname
1181 =\hbox\bgroup#2\ignorespaces
1185 % define the keywords
1187 \refdef@@AmS\by\by@@font \refdef@@AmS\paper{}
1188 \refdef@@AmS\paperinfo{} \refdef@@AmS\jour\book@@font
1189 \refdef@@AmS\vol\book@@font \refdef@@AmS\issue{}
1190 \refdef@@AmS\mon{} \refdef@@AmS\yr{}
1191 \refdef@@AmS\pages{} \refdef@@AmS\talk{}
1192 \refdef@@AmS\book\book@@font \refdef@@AmS\bookinfo{}
1193 \refdef@@AmS\publ{} \refdef@@AmS\publaddr{}
1194 \refdef@@AmS\finalinfo{} \refdef@@AmS\editor{}
1195 \refdef@@AmS\jourinfo{} \refdef@@AmS\key\cite@@font
1196 \refdef@@AmS\editors{}
1198 % These don't fit the normal pattern.
1199 \def\bysame{\egroup\gdef\isbysame@@AmS{T}\bgroup}
1200 \def\page{\egroup\gdef\ispage@@AmS{T}\setbox\pagesbox@@AmS=\hbox\bgroup
1202 \def\toappear{\egroup\gdef\istoappear@@AmS{T}\bgroup}
1203 \def\inbook{\egroup\gdef\isinbook@@AmS{T}\setbox\bookbox@@AmS=\hbox\bgroup
1204 \book@@font\ignorespaces
1207 % This is the font we normally print book and journal titles in, but we
1208 % use \twelveit for IEEE format.
1209 \let\book@@font=\twelvesl
1211 % Similarly, this is the font to use for the author's name(s).
1212 % Optionally, the user can ask for the cite font instead (this is
1213 % not necessarily related to use of the IEEE format).
1214 \let\by@@font=\twelverm
1216 % As an option, the user can have the author's name(s) in caps-small-caps.
1218 \let\by@@font=\elevencsc
1219 \oktell{Authors in CSC mode}%
1222 % Define some aliases for some of the above, for user convenience.
1231 \let\ieee@@editors=\editors % Save it in case we use IEEE format
1232 \let\editors=\editor % If using default JACM format
1236 % Helpers to \endref@@AmS, which speed things up a lot, and/or
1237 % make the code more compact.
1238 \def\a@@comma{, } % Used in next routine. Predefined for speed of \let.
1239 \def\setpunct@@AmS{\let\prepunct@@AmS=\a@@comma}
1240 \def\ppunbox@@AmS#1{\prepunct@@AmS\unhbox#1\unskip}
1243 % Actually do some typesetting (finally). As mentioned above,
1244 % \endref@@AmS is called to print a reference if we want it. It
1245 % is \let to be either \endref@@JACM or \endref@@IEEE (or possibly
1246 % some other format in the future) depending on the desired
1249 % For some reason, the ~'s don't see to tie things, so some
1250 % \hbox's were introduced.
1252 % There is unfortunately a lot of common code between the
1253 % different formats. Here are some sections which were easy to
1255 \def\endref@@startup{%
1256 % Test to see if there is anything in the wastebox
1257 \setbox\wastebox@@uci=\hbox{\unhbox\wastebox@@uci\unskip}%
1258 \ifdim\wd\wastebox@@uci>\z@@
1259 \errmessage{Keyword omitted after \noexpand\ref}%
1261 \let\prepunct@@AmS=\empty
1263 \noindent \hangafter=\@@ne
1266 % This is the text printed for the JACM format for papers
1267 % appearing in a book.
1268 \def\appearing@@in{Appearing in }
1270 % Common code at the end of \endref@@JACM and \endref@@IEEE.
1271 % The argument is the date routine to use.
1272 \def\endref@@finishup#1{%
1274 \dimen@@=\wd\talkbox@@AmS
1276 \ppunbox@@AmS\talkbox@@AmS\setpunct@@AmS
1280 \ppunbox@@AmS\bookbox@@AmS \setpunct@@AmS
1284 \prepunct@@AmS\appearing@@in\unhbox\bookbox@@AmS\unskip \setpunct@@AmS
1285 \editor@@ref \gdef\isbook@@AmS{T}%
1287 \if T\isbookinfo@@AmS
1288 \ppunbox@@AmS\bookinfobox@@AmS\setpunct@@AmS
1291 \if T\ispubladdr@@AmS
1292 \ppunbox@@AmS\publaddrbox@@AmS
1293 \if T\ispubl@@AmS \def\prepunct@@AmS{: }\else\setpunct@@AmS\fi
1296 \ppunbox@@AmS\publbox@@AmS\setpunct@@AmS
1300 \ppunbox@@AmS\publbox@@AmS\setpunct@@AmS
1302 \if T\ispubladdr@@AmS
1303 \ppunbox@@AmS\publaddrbox@@AmS\setpunct@@AmS
1308 \prepunct@@AmS Vol.~\unhbox\volbox@@AmS\unskip\setpunct@@AmS
1311 \ppunbox@@AmS\yrbox@@AmS\setpunct@@AmS
1313 \if T\istoappear@@AmS
1314 \ (to appear)\setpunct@@AmS
1317 \prepunct@@AmS pp.~\unhbox\pagesbox@@AmS\unskip\setpunct@@AmS
1320 \prepunct@@AmS p.~\unhbox\pagesbox@@AmS\unskip\setpunct@@AmS
1324 #1% This is the date routine to use.
1326 \if T\isfinalinfo@@AmS
1327 \period\unhbox\finalinfobox@@AmS
1335 % Print editor(s) if and as appropriate.
1339 \ppunbox@@AmS\editorbox@@AmS, Ed.\setpunct@@AmS
1341 \if T\iseditors@@AmS
1342 \ppunbox@@AmS\editorsbox@@AmS, Eds.\setpunct@@AmS
1346 \ppunbox@@AmS\editorbox@@AmS\ (ed.)\setpunct@@AmS
1351 % This routine prints the date in the JACM format
1356 \unhbox\monbox@@AmS\unskip,
1358 \unhbox\yrbox@@AmS\unskip)\setpunct@@AmS
1361 \ppunbox@@AmS\monbox@@AmS\setpunct@@AmS
1366 % This prints the date in the IEEE format.
1371 \unhbox\monbox@@AmS\unskip\a@@comma
1373 \unhbox\yrbox@@AmS\unskip\setpunct@@AmS
1376 \ppunbox@@AmS\monbox@@AmS\setpunct@@AmS
1382 % This version produces JACM format references.
1386 \hbox to \key@@size{\cite@@font [\unhbox\keybox@@AmS\unskip]\hfil}%
1387 \hangindent=\key@@size
1389 \unhcopy\bybox@@AmS\unskip
1390 \def\prepunct@@AmS{\hskip7\p@@ plus5\p@@\relax}%
1391 \setbox\z@@=\hbox{\unhbox\bybox@@AmS\unskip}%
1392 \dimen@@=\wd\z@@ % We want \dimen0=max(\wd0, 2in)
1393 \ifdim\dimen@@>2in \dimen@@=2in \fi
1394 \setbox\bysamebox@@AmS=\hbox{\hbox to\dimen@@{\leaders\hrule\hfill.}}%
1397 \unhcopy\bysamebox@@AmS\unskip
1398 \def\prepunct@@AmS{\hskip7\p@@ plus5\p@@\relax}%
1403 \ppunbox@@AmS\paperbox@@AmS\def\prepunct@@AmS{. }%
1405 \if T\ispaperinfo@@AmS
1406 \ppunbox@@AmS\paperinfobox@@AmS\def\prepunct@@AmS{. }%
1409 \ppunbox@@AmS\jourbox@@AmS\setpunct@@AmS
1411 \if T\isjourinfo@@AmS
1412 \ppunbox@@AmS\jourinfobox@@AmS\setpunct@@AmS
1415 \ \unhbox\volbox@@AmS\unskip
1418 \ppunbox@@AmS\issuebox@@AmS\setpunct@@AmS
1421 \if T\istoappear@@AmS
1422 \ (to appear)\setpunct@@AmS
1425 \ppunbox@@AmS\pagesbox@@AmS\setpunct@@AmS
1428 \prepunct@@AmS p.~\unhbox\pagesbox@@AmS\unskip\setpunct@@AmS
1431 \endref@@finishup\date@@JACM
1435 % This version produces IEEE format references.
1439 \hbox to \key@@size{\cite@@font [\unhbox\keybox@@AmS\unskip]\hfil}%
1440 \hangindent=\key@@size
1441 \if T\isby@@AmS \unhcopy\bybox@@AmS\unskip\setpunct@@AmS
1442 \setbox\z@@=\hbox{\unhbox\bybox@@AmS\unskip}%
1443 \dimen@@=\wd\z@@ % We want \dimen0=max(\wd0, 2in)
1444 \ifdim\dimen@@>2in \dimen@@=2in \fi
1445 \setbox\bysamebox@@AmS=\hbox{\hbox to\dimen@@{\leaders\hrule\hfill}}%
1448 \unhcopy\bysamebox@@AmS\unskip\setpunct@@AmS
1453 \prepunct@@AmS``\unhbox\paperbox@@AmS\unskip,''
1454 \let\prepunct@@AmS=\empty
1456 \if T\ispaperinfo@@AmS
1457 \ppunbox@@AmS\paperinfobox@@AmS\def\prepunct@@AmS{, }%
1460 \ppunbox@@AmS\jourbox@@AmS\setpunct@@AmS
1462 \if T\isjourinfo@@AmS
1463 \ppunbox@@AmS\jourinfobox@@AmS\setpunct@@AmS
1466 \prepunct@@AmS vol.~\unhbox\volbox@@AmS\unskip\setpunct@@AmS
1469 \prepunct@@AmS no.~\unhbox\issuebox@@AmS\unskip\setpunct@@AmS
1471 \if T\istoappear@@AmS
1472 \ (to appear)\setpunct@@AmS
1475 \prepunct@@AmS pp.~\unhbox\pagesbox@@AmS\unskip\setpunct@@AmS
1478 \prepunct@@AmS p.~\unhbox\pagesbox@@AmS\unskip\setpunct@@AmS
1480 \if T\ispubladdr@@AmS
1481 \ppunbox@@AmS\publaddrbox@@AmS
1482 \if T\ispubl@@AmS \def\prepunct@@AmS{: }\else\setpunct@@AmS\fi
1485 \ppunbox@@AmS\publbox@@AmS\setpunct@@AmS
1487 \let\ispubl@@AmS=F\let\ispubladdr@@AmS=F% For finishup routine
1490 \endref@@finishup\date@@IEEE
1494 % By default, we use JACM format references
1495 \let\endref@@AmS=\endref@@JACM
1497 % But it's possible to get the other format
1499 \gdef\using@@IEEE{T}% Now we're using IEEE format.
1500 \let\editors=\ieee@@editors
1501 \let\endref@@AmS=\endref@@IEEE
1502 \refdef@@AmS\vol{}% Vol not printed in slanted any more.
1503 \global\let\appearing@@in=\empty % Don't say that in IEEE format.
1505 \let\book@@font=\twelveit % Book and journal titles in this font.
1506 \oktell{IEEE Bibliography Style}%
1512 \newwrite\dump@@file
1514 \catcode`\{=12 \catcode`\}=12 \catcode`\%=12 \catcode`\[=1 \catcode`\]=2
1517 \def\ref@@comment[%]
1518 \catcode`\{=1 \catcode`\}=2 \catcode`\%=14 \catcode`\[=12 \catcode`\]=12
1524 \tell{Dumping \reftitle\space to refdump.tex}%
1525 \immediate\openout\dump@@file=refdump
1526 \immediate\write\dump@@file{%
1527 \noexpand\catcode`\noexpand\@@=11 ^^J%
1528 \noexpand\let\noexpand\content=\noexpand\eat@@AmS^^J%
1529 \noexpand\pageno=\the\pageno^^J%
1530 \noexpand\def\noexpand\ref@@set\ref@@open\ref@@comment
1532 \def\\##1{\immediate\write\dump@@file{ \noexpand\\{##1}\ref@@comment}}%
1534 \immediate\write\dump@@file{%
1537 \immediate\closeout\dump@@file
1542 %%%%%%%%%%%%%%%%%%%%
1544 %%%%%%%%%%%%%%%%%%%%
1546 % Control for informational messages. Default is \verbose mode.
1548 \let\verbose=\tell@@alltrue
1549 \let\quiet=\tell@@allfalse
1551 \def\oktell#1{\iftell@@all\tell{#1}\fi}
1552 \def\okmessage#1{\iftell@@all\message{#1}\fi}
1554 % Chapter macro parameters
1556 \chapterno=\z@@ % Number of current chapter
1557 \newif\ifnumber@@chapters
1558 \number@@chapterstrue % By default, number the chapters
1559 \def\nochapternumbers{%
1560 \number@@chaptersfalse
1561 \oktell{No Chapter Numbers mode}%
1564 % Same thing for sections, subsections, etc
1565 \newcount\sectno \sectno=\@@ne
1566 \newcount\subsectno \subsectno=\@@ne
1567 \newcount\subsubsectno \subsubsectno=\@@ne
1568 \newif\ifnumber@@sections
1569 \def\numbersections{%
1570 \number@@sectionstrue
1571 \oktell{Section Numbers mode}%
1575 %%%%%%%%%%%%%%%%%%%%%%%%%%%
1576 % OUTPUT CONTROL MACROS %
1577 %%%%%%%%%%%%%%%%%%%%%%%%%%%
1580 % Center, left justify, right justify -- avoid exceeding margins
1581 \def\centerline#1{\line{\hfill#1\hfill}}
1582 \def\leftline#1{\line{#1\hfill}}
1583 \def\rightline#1{\line{\hfill#1}}
1584 \def\threepart#1#2#3{\line{\hskip\leftskip\rlap{#1}\hfill#2\hfill
1585 \llap{#3}\hskip\rightskip}}
1587 % End of the main body of the document
1590 % Summary Information
1591 \outer\def\showsummary{%
1593 \def\note##1##2##3##4{%
1595 \advance\count@@ by##3
1597 \message{No ##2s##4}\or
1598 \message{1 ##2##4}\else
1599 \message{\the\count@@\space ##2s##4}\fi
1601 \note\fignumber{figure}{-1}{,}%
1602 \note\tablenumber{table}{-1}{,}%
1603 \note\note@@count{footnote}{-1}{,}%
1604 \cardinality\ref@@set\to\count@@
1605 \note\count@@{citation}{0}{.}%
1610 % Real version of ragged right margins
1612 \rightskip=\z@@ plus 2em
1613 \oktell{Raggedright mode}%
1616 % Disallow hyphenation -- a very dangerous thing
1618 \hyphenpenalty=\@@M\tolerance=500\pretolerance=\@@M
1619 \oktell{Nohyphens mode}%
1622 % Allow capitalized words to be hyphenated
1625 \oktell{Hyphenating all words}%
1628 % Handle a long quotation in a standard way
1629 \def\bigquote#1\endbigquote{%
1631 \vskip \baselineskip \vskip -\parskip
1632 { \advance\rightskip by30\p@@
1633 \advance\leftskip by30\p@@
1637 \noindent\llap{``}\ignorespaces#1\unskip''\par
1638 }% End of singlespacing and special indentation
1639 \vskip \baselineskip \vskip -\parskip
1643 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1644 % CHAPTERS, SECTIONS, FIGURES, TABLES %
1645 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1647 % What to do at the beginning of a chapter
1648 \def\chapter#1\endchapter{
1649 \chapter@@base #1\endchapter
1650 \oktell{Chapter \number\chapterno: #1}
1651 \content{Chapter \number\chapterno: #1}
1655 % This boolean controls whether chapters are made to start only on
1659 \def\twosided{% This is the ``official'' command
1661 \oktell{Twosided mode}%
1664 % The guts of the \chapter command. \chapter==\chapter@@base when
1666 \def\chapter@@base#1\endchapter{
1668 \clearpage % Clean up from prev chapter
1669 \ifoddpages % Make sure start on even page.
1670 \ifodd\pageno \relax \else \null\vfill\eject \fi
1672 \pageno@@foot % Page #ing special for chap pages
1673 \advance\chapterno by\@@ne
1675 \centerline{\chap@@font CHAPTER \number\chapterno}% Do heading
1680 {\let\\=\cr \tabskip=\z@@ \chap@@font % Center the chapter title
1681 \halign to\hsize{\centerline{\ignorespaces##\unskip}\cr#1\cr}
1683 \nobreak % Shouldn't happen anyway
1684 \vskip 1.0in minus 0.15in
1687 % What to do at the beginning of a section
1688 \outer\def\section{\dosection}
1690 \skip@@=\lastskip % \par resets \lastskip, apparently
1692 % This junk trys to provide consistent spacing
1693 \dimen@@=\baselineskip
1694 \ifdim\skip@@<\dimen@@
1698 \vskip \dimen@@ plus .5\baselineskip
1701 \advance\sectno by\@@ne
1704 \leftline{\sec@@font\number\sectno. #1}
1706 \leftline{\sec@@font#1}
1709 \sanetell{ Section: #1}
1711 \vskip \z@@ plus .15\baselineskip
1715 % And for sub-sections
1716 \outer\def\subsection{\dosubsection}
1717 \def\dosubsection#1{%
1720 \dimen@@=.6\baselineskip
1721 \ifdim\skip@@<\dimen@@
1725 \vskip \dimen@@ plus .3\baselineskip
1728 \advance\subsectno by\@@ne
1730 \leftline{\subsec@@font\number\sectno.\number\subsectno. #1}
1732 \leftline{\subsec@@font#1}
1735 \sanetell{ \\Subsection: #1}
1737 \vskip \z@@ plus .1\baselineskip
1741 % And for sub-sub-sections
1742 \outer\def\subsubsection{\dosubsubsection}
1743 \def\dosubsubsection#1{%
1746 \dimen@@=.5\baselineskip
1747 \ifdim\skip@@<\dimen@@
1751 \vskip \dimen@@ plus .3\baselineskip
1754 \advance\subsubsectno by\@@ne
1755 \leftline{\subsubsec@@font\number\sectno.\number\subsectno
1756 .\number\subsubsectno. #1}
1758 \leftline{\subsubsec@@font#1}
1760 \subsubsubcontent{#1}
1761 \sanetell{ \\\\Subsubsection: #1}
1766 % This is an alternate definition for plain TeX's \@@ins,
1767 % omitting the \par. It is for use during \figure etc. Reason:
1768 % If you use \figure right after \section, it would otherwise
1769 % become a legal place for a page break.
1770 \def\@@ins@@uci{\begingroup\setbox\z@@\vbox\bgroup}
1772 % This is \endinsert from plain.tex, but \midinsert's are not converted
1773 % to \topinsert's, since that can lead to figures getting out of order.
1774 % This can lead to excessive blank space at the bottom of the page, but
1775 % that's life. Makes use of \keep...\endkeep type stuff.
1776 \def\endinsert{\egroup % finish the \vbox
1777 \if@@mid \dimen@@\ht\z@@ \advance\dimen@@\dp\z@@
1778 \advance\dimen@@12\p@@
1779 \vskip\z@@ plus\dimen@@
1781 \vskip\z@@ plus-\dimen@@
1782 \bigskip\box\z@@\bigbreak
1783 \else\insert\topins{\penalty100 % floating insertion
1784 \splittopskip\z@@skip
1785 \splitmaxdepth\maxdimen \floatingpenalty\z@@
1786 \ifp@@ge \dimen@@\dp\z@@
1787 \vbox to\vsize{\unvbox\z@@\kern-\dimen@@}% depth is zero
1788 \else \box\z@@\nobreak\bigskip\fi}\fi\endgroup}
1791 % This macro provides rudamentary support for figures. The
1792 % argument to \figure is the name of the file containing the tpic (or whatever)
1793 % output. The second argument is the caption for the picture.
1794 % As usual, TeX's delayed paging and midinserting causes expansion-timing
1795 % problems which have to be kludged around.
1796 \newif\iftopfigs \topfigstrue
1799 \oktell{Midfigs mode}%
1802 % Counters for figures/diagrams/examples and tables
1803 \newcount\fignumber \fignumber=\@@ne
1804 \newcount\tablenumber \tablenumber=\@@ne
1806 % Helper for \figure, \example, and \diagram. Define \lastfigure and
1807 % \this@@insert, increment the figure number for next time, and make sure
1808 % the figures list file is open for writing.
1809 % #1=the caption, to be written to the figures list file
1810 \def\advance@@figno#1{%
1811 \xdef\lastfigure{\the\fignumber}% Remember the current figure number
1812 \begingroup\no@@cites
1814 \xdef\this@@insert{\write\noexpand\fig@@file{\noexpand\noexpand
1815 \noexpand\listfig{\lastfigure}{#1}%
1816 {\noexpand\number\noexpand\pageno}%
1820 \global\advance\fignumber by\@@ne
1821 \iffig@@closed % Open figures file if not already
1822 \immediate\openout\fig@@file=\figtitle
1823 \global\fig@@closedfalse
1827 % Bump the table number after defining \lasttable. Prepare \this@@insert.
1828 % Define \table@@caption.
1829 \def\advance@@tablenumber#1{%
1830 \xdef\lasttable{\the\tablenumber}% Remember the current figure number
1831 \begingroup \no@@cites \let\\=\space
1832 \xdef\this@@insert{\write\noexpand\tab@@file{\noexpand\noexpand
1833 \noexpand\listfig{\lasttable}{#1}%
1834 {\noexpand\number\noexpand\pageno}%
1838 \global\advance\tablenumber by\@@ne
1839 \gdef\table@@caption{#1}%
1842 \newif\ifpage@@figs \page@@figsfalse
1844 % Special mode to put figures/diagrams/examples on separate pages
1846 \oktell{Page Figures mode}%
1850 % Usage: \figure{filename}{caption with \\'s}
1852 \begingroup % Hide anything that crazy user does!
1853 \advance@@figno{#2}%
1854 % Now do mid or top insert as appropriate
1855 \let\@@ins=\@@ins@@uci
1857 \shipout\vbox to\vsize\bgroup
1858 {\smallertype\rm\input #1\relax\centerline{\box\graph}}%
1860 \centerline{Figure \lastfigure}\this@@insert
1862 \else \iftopfigs \topinsert \else \midinsert \fi
1864 \vskip .5\baselineskip
1865 {\smallertype\rm\input #1\relax\centerline{\box\graph}}%
1866 \vskip .5\baselineskip plus .5\baselineskip
1867 \centerline{\twelvebf Figure \lastfigure}%
1869 \let\\=\cr \tabskip=\z@@
1870 \halign to\hsize{\centerline{\ignorespaces##\unskip}\cr#2\cr}%
1879 % Allow user to specify arbitrary diagrams. The arguments are:
1880 % #1=name of the file containing the commands to form the diagram,
1881 % #2=caption for the figure, possibly containing \\'s.
1884 \advance@@figno{#2}%
1885 % Do mid or top insert as appropriate
1886 \let\@@ins=\@@ins@@uci
1888 \shipout\vbox to\vsize\bgroup
1889 {\smallertype\rm\input #1\relax}%
1891 \centerline{\twelverm Figure \lastfigure}\this@@insert
1893 \else \iftopfigs \topinsert \else \midinsert \fi
1895 \vskip .5\baselineskip
1896 {\smallertype\rm\input #1\relax}%
1897 \vskip .5\baselineskip plus .5\baselineskip
1898 \centerline{\twelvebf Figure \lastfigure}%
1900 \let\\=\cr \tabskip=\z@@
1901 \halign to \hsize{\centerline{\ignorespaces##\unskip}\cr#2\cr}%
1910 % Allow user to include verbatim examples from files. The arguments are:
1911 % #1=name of the file containing the text of the example,
1912 % #2=caption for the figure, possibly containing \\'s.
1915 \advance@@figno{#2}%
1916 % Do mid or top insert as appropriate
1917 \let\@@ins=\@@ins@@uci
1919 \shipout\vbox to\vsize\bgroup
1920 \vbox{\smallertype\singlespace\verbfile{#1}}%
1922 \centerline{\twelverm Figure \lastfigure}\this@@insert
1924 \else \iftopfigs \topinsert \else \midinsert \fi
1926 \vskip .5\baselineskip
1927 \vbox{\smallertype\singlespace\verbfile{#1}}%
1928 \vskip .5\baselineskip plus .5\baselineskip
1929 \centerline{\twelvebf Figure \lastfigure}%
1931 \let\\=\cr \tabskip=\z@@
1932 \halign to \hsize{\centerline{\ignorespaces##\unskip}\cr#2\cr}%
1941 % Similar thing for tables
1942 % usage: \table{caption} ...text... \endtable
1944 \begingroup % Hide user zingers
1945 \advance@@tablenumber{#1}%
1946 \setbox\z@@=\vbox\bgroup
1950 % End of the table body specification.
1952 \egroup % End the definition of \box0.
1953 % Now do top or mid insert
1954 \let\@@ins=\@@ins@@uci
1955 \iftab@@closed % Open output file if necessary
1956 \immediate\openout\tab@@file=\tabtitle
1957 \global\tab@@closedfalse
1960 \shipout\vbox to\vsize\bgroup
1963 \centerline{\twelverm Table \lasttable}\this@@insert
1965 \else \iftopfigs \topinsert \else \midinsert \fi
1967 \vskip .5\baselineskip
1968 \box\z@@ % Insert the material here.
1969 \vskip .5\baselineskip plus .5\baselineskip
1970 \centerline{\twelvebf Table \lasttable}%
1972 \let\\=\cr \tabskip=\z@@
1973 \halign to\hsize{\centerline{\ignorespaces##\unskip}\cr\table@@caption
1983 % End of the table body specification for a full-page table.
1985 \egroup % End the definition of \box0.
1986 % Now do top or mid insert
1987 \let\@@ins=\@@ins@@uci
1988 \iftab@@closed % Open output file if necessary
1989 \immediate\openout\tab@@file=\tabtitle
1990 \global\tab@@closedfalse
1993 \shipout\vbox to\vsize\bgroup
1996 \centerline{\twelverm Table \lasttable}\this@@insert
2000 \vskip .5\baselineskip
2001 \box\z@@ % Insert the material here.
2002 \vskip .5\baselineskip plus .5\baselineskip
2003 \centerline{\twelvebf Table \lasttable}%
2005 \let\\=\cr \tabskip=\z@@
2006 \halign to\hsize{\centerline{\ignorespaces##\unskip}\cr\table@@caption
2015 % Environment for report generation -- use only at the beginning!
2016 % Since sections are the biggest division, the table of contents
2017 % stuff is redefined, and chapter numbering is turned off so that
2018 % \chapter can be used for the first-page title. The title page
2019 % gets no page number (page # 0). The user can get to the
2020 % normal chapter font as \titlefont, and the section font as
2024 \let\subsubsubcontent=\subsubcontent
2025 \let\subsubcontent=\subcontent
2026 \let\subcontent=\content
2027 \let\chapter=\chapter@@base
2029 \let\titlefont=\chap@@font
2030 \let\authorfont=\sec@@font
2031 \oktell{Articlestyle mode}%
2035 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2036 % PAGE NUMBERING and OUTPUT ROUTINES %
2037 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2039 % This macro produces a blank, numbered page of output
2040 \def\blankpage{\pageinsert \null\vfill \endinsert}
2042 % This defintion of \folio differs from Plain's in that (a) page
2043 % numbers are printed in 12pt, and (b) roman numeral ones are
2044 % printed in italics. It makes use of a trick, that
2045 % \romannumeral0 produces no output, which we need for title
2046 % pages and things, so we make their page numbers be 0.
2047 \def\folio{\ifnum\pageno>\z@@
2048 {\twelverm\number\pageno}\else
2049 {\twelveit\romannumeral-\pageno}\fi
2052 % Permanent definitions of macros which get switched in and out
2053 % with \let's. Do not change any of these !!!
2054 \def\uci@@headpage{\hfill\folio}
2055 \def\uci@@footpage{\hfill\folio\hfill}
2056 \headline={\uci@@headline}
2057 \footline={\uci@@footline}
2059 % If this is used as the footline, it causes a page number to be
2060 % printed, but with the side-effect of making the headline blank
2061 % and the footline a page number again. This is used on pages
2062 % like the first of a chapter.
2065 \global\let\uci@@footline=\hfil
2066 \global\let\uci@@headline=\uci@@headpage
2069 % This macro causes the page number to be at the bottom of the current
2070 % page, and after it has been used there once, it moves to the
2071 % top right of each page. It also sets \dimen\topins=0pt so that
2072 % any material \topinsert'd on these pages will get carried over
2073 % to subsequent pages.
2076 \let\uci@@headline=\hfil
2077 \let\uci@@footline=\no@@foot
2080 % Executing this causes page numbers to be at the bottom only, as
2081 % with the plain TeX format.
2082 \def\plain@@page@@numbers{%
2083 \let\uci@@headline=\hfil % Initial values similar to plain's
2084 \let\uci@@footline=\uci@@footpage
2087 % Change plain's \makeheadline and \makefootline to position page
2088 % numbers as required.
2090 \vbox to\z@@{\vskip-22.65\p@@
2091 \line{\vbox to8.5\p@@{}\the\headline}\vss}\nointerlineskip
2093 \def\makefootline{\baselineskip=1.6cm\line{\the\footline}}
2095 % Define an output routine which will restore \dimen\topins
2096 % after \chapter, \references, etc, title pages, which have
2098 \def\dissoutput{\shipout\vbox{\makeheadline\pagebody\makefootline}%
2099 \advancepageno \global\dimen\topins=\vsize
2100 \ifnum\outputpenalty>-\@@MM \else\dosupereject\fi
2102 \let\output@@AmS=\dissoutput
2103 \dimen\topins=\vsize % Don't insert more than will fit on one page
2105 % Output Routines: We adjust the \raggedbottom command of plain
2106 % TeX so that the extra space is no more than 1in, and so that
2107 % the space is put above footnotes instead of below. NOTE: Since
2108 % we put a \vfil below the page contents, the topskip glue will
2109 % never actually be stretched. Its stretchability is just to
2110 % let TeX know about the raggedness in computing when to make a
2111 % page break. Since it's 1in, the \vfil will never be stretched to
2112 % more than that amount.
2114 \def\raggedbottom{\topskip=\normal@@topskip plus1in \r@@ggedbottomtrue
2115 \oktell{Ragged bottom mode}}
2116 \def\normalbottom{\topskip=\normal@@topskip\r@@ggedbottomfalse
2117 \oktell{Normal bottom mode}}
2120 \ifvoid\topins\else\unvbox\topins\fi
2121 \dimen@@=\dp\@@cclv \unvbox\@@cclv % open up \box255
2122 \ifr@@ggedbottom \kern-\dimen@@ \vfil\fi
2123 \ifvoid\footins \else % footnote info is present
2131 %%%%%%%%%%%%%%%%%%%%
2133 %%%%%%%%%%%%%%%%%%%%
2135 \font@@no=0 % Default font=\rm,
2136 \twelvepoint % point size,
2137 \doublespace % and spacing
2138 \plain@@page@@numbers % Page nos like plain's
2140 % Note that normally in AmSTeX, the @@ character may not be used.
2141 % But in the dissertation style, @@ may be used as a normal character,
2142 % As it can in plain TeX.
2145 % Eat any further \documentstyle commands
2146 \def\documentstyle#1{}
2148 % This prints out our welcome message, and it computes the time
2149 % and date string once per run, which saves time if they're used
2150 % more than once. Since \catcode`@@=12 at the time this is
2151 % executed, it can't contain any @@-type macros.
2170 \fi\space\the\day, \the\year
2176 \multiply\count0by60
2177 \advance\count1by-\count0
2179 \ifnum\count2>12 \advance\count2by-12\fi
2182 \ifnum\count2=0 \advance\count2by12\fi
2186 \ifnum\count2<10 0\fi \the\count2:%
2187 \ifnum\count1<10 0\fi \the\count1
2191 \tell{AmSTeX Dissertation Style, version \version}%
2194 \edef\temp@@uci{\the\everyjob}
2215 \font\sixrm=amr6 \font\sixbf=ambx6
2216 \font\sixi=ammi6 \skewchar\sixi='177
2217 \font\sixsy=amsy6 \skewchar\sixsy='60
2220 \font\eightrm=amr8 \font\eightsl=amsl8 \font\eightit=amti8
2221 \font\eightsy=amsy8 \skewchar\eightsy='60
2222 \skewchar\eightsy='60 \font\eightbf=ambx8
2223 \font\eightex=amex10 at 8\p@@
2224 \font\eighti=ammi8 \skewchar\eighti='177
2227 \font\ninerm=amr9 \font\nineit=amti9
2228 \font\ninei=ammi9 \skewchar\ninei='177
2229 \font\ninesy=amsy9 \skewchar\ninesy='60
2230 \font\ninesl=amsl9 \font\ninebf=ambx9
2233 \font\twelvecsc=amcsc10 scaled \magstep1
2234 \font\tencsc=amcsc10
2235 \font\eightcsc=amcsc10 at 8\p@@
2236 \font\elevencsc=amcsc10 scaled \magstephalf
2237 \font\ninecsc=amcsc10 at 9\p@@
2240 \font\tencscod=amcscod10
2241 \font\eightcscod=amcscod10 at 8\p@@
2244 \font\eightsf=amss10 at 8\p@@
2246 \font\twelvesf=amss10 at 12\p@@
2249 \font\twelvett=amtt10 scaled \magstep1
2250 \font\eighttt=amtt10 at 8\p@@ % \tentt is predefined in plain.tex
2253 \font\twelveex=amex10 scaled \magstep1 \font\twelverm=amr10 scaled \magstep1
2254 \font\twelvesl=amsl10 scaled \magstep1 \font\twelvebf=ambx10 scaled \magstep1
2255 \font\twelvei=ammi10 scaled \magstep1 \skewchar\twelvei='177
2256 \font\twelvesy=amsy10 scaled \magstep1 \skewchar\twelvesy='60
2257 \font\twelveit=amti10 scaled \magstep1
2260 \font\twelvechap@@font=amssbx10 at 14\p@@
2261 \font\twelvesec@@font=amss10 at 13\p@@
2262 \font\twelvesubsec@@font=amssi10 scaled \magstep1
2265 \font\tenchap@@font=amssbx10 scaled \magstep1
2266 \font\tensec@@font=amssbx10 scaled \magstephalf
2267 \font\tensubsec@@font=amssi10
2270 \font\eightchap@@font=amssbx10
2271 \font\eightsec@@font=amss10 at 9\p@@
2272 \font\eightsubsec@@font=amssqi8