\catcode`\{=1 \catcode`\}=2 \catcode`\$=3 \catcode`\&=4 \catcode`\#=6 \catcode`\^=7 \catcode`\^^K=7 \catcode`\_=8 \catcode`\^^A=8 \catcode`\^^J=9 \catcode`\^^I=10 \catcode`\%=14 \catcode`\@=13 \def@{\penalty10000 \ } \def\space{ } {\catcode`\^^M=13 \gdef\obeylines{\catcode`\^^M=13 \let^^M=\par} % NB \let! \global\let^^M=\par} % this is in case ^^M appears in a \write {\catcode`\ =13 \gdef\obeyspaces{\catcode`\ =13\relax}\global\let =\space} \message{preloading codes,} % We had to define the \catcodes above right away, even before this comment % or the message line, which has the { and } characters. Using the forms % `\{ etc. instead of `{ allows us to read in this file even if those % characters had been catcoded before. (If we just want to read in PLAIN % once, then % is the only character that has to be treated this way.) % Here is a list of the characters that have been specially catcoded: \def\specials{\ \\ \{ \} \$ \& \# \^ \^^K \← \^^A \^^J \^^I \% \@ \^^L \endlist} \catcode`\^^L=13 \outer\def^^L{\par} % form-feed is "\outer" % We make parentheses act like letters, temporarily, to avoid conflict % with user-defined control sequences in certain cases. \catcode`(=11 \catcode`)=11 % So far I haven't used this, but I probably will... e.g., \def\(foo){...} \sfcode`)=0 \sfcode`'=0 \sfcode`"=0 \sfcode`]=0 \def\frenchspace{\sfcode`.=1000 \sfcode`?=1000 \sfcode`!=1000 \sfcode`:=1000 \sfcode`;=1000 \sfcode`,=1000 } \def\nonfrenchspace{\sfcode`.=3000 \sfcode`?=3000 \sfcode`!=3000 \sfcode`:=2000 \sfcode`;=1500 \sfcode`,=1250 } \mathcode`^^@="2201 % \cdot \mathcode`^^A="3223 % \downarrow \mathcode`^^B="010B % \alpha \mathcode`^^C="010C % \beta \mathcode`^^D="225E % \land \mathcode`^^E="023A % \lnot \mathcode`^^F="010F % \epsilon \mathcode`^^G="0119 % \lambda \mathcode`^^H="0115 % \pi \mathcode`\^^I="010D % \gamma \mathcode`\^^J="010E % \delta \mathcode`\^^K="3222 % \uparrow \mathcode`\^^L="2206 % \pm \mathcode`\^^M="2208 % \oplus \mathcode`^^N="0231 % \infty \mathcode`^^O="0125 % \partial \mathcode`^^P="321A % \subset \mathcode`^^Q="321B % \supset \mathcode`^^R="225C % \cap \mathcode`^^S="225B % \cup \mathcode`^^T="0238 % \forall \mathcode`^^U="0239 % \exists \mathcode`^^V="220A % \otimes \mathcode`^^W="3224 % \doublearrow \mathcode`^^X="3220 % \leftarrow \mathcode`^^Y="3221 % \rightarrow \mathcode`^^Z="321C % \ne \mathcode`^^[="2277 % \diamond \mathcode`^^\="3214 % \le \mathcode`^^]="3215 % \ge \mathcode`^^^="3211 % \equiv \mathcode`^^_="225F % \lor !!!make sure this is an underscore!!!---ARK \mathcode` ="0234 % \emptyset \mathcode`!="5021 \mathcode`"="8000 {\catcode`"=13 \gdef"{^{\prime\prime}}} \mathcode`#="0271 \mathcode`$="027F \mathcode`\%="0025 \mathcode`&="0026 \mathcode`'="8000 {\catcode`'=13 \gdef'{^\prime}} \mathcode`(="4028 \mathcode`)="5029 \mathcode`*="2203 % \ast \mathcode`+="202B \mathcode`,="602C \mathcode`-="2200 \mathcode`.="002E \mathcode`/="002F \mathcode`0="0030 \mathcode`1="0031 \mathcode`2="0032 \mathcode`3="0033 \mathcode`4="0034 \mathcode`5="0035 \mathcode`6="0036 \mathcode`7="0037 \mathcode`8="0038 \mathcode`9="0039 \mathcode`:="303A \mathcode`;="603B \mathcode`<="303C \mathcode`=="303D \mathcode`>="303E \mathcode`?="503F \mathcode`@="027C % \@ \mathcode`[="405B \mathcode`\\="0204 % \backslash \mathcode`]="505D \mathcode`^="000F \mathcode`←="0235 \mathcode``="4060 \mathcode`{="4266 \mathcode`|="026A \mathcode`}="5267 \mathcode`~="3218 % \sim \mathcode`\^^?="027B % \P \delcode`.=0 \delcode`(="028300 \delcode`)="029301 \delcode`[="05B302 \delcode`]="05D303 \delcode`<="26830A \delcode`>="26930B \delcode`|="26A30C \delcode`/="02F30E % N.B. { and } should not get delcodes (it would mess up parameter groups) % Assign initial values to TeX's primitives \message{primitives,} \def\maxdimen{16383.99999pt} % the largest legal % All of TeX's primitives that can be assigned a value are listed here. Those % that are left uninitialized are preceded by a % sign. \def\normalbaselines{\lineskip 1pt \baselineskip 12pt \lineskiplimit 0pt } \parskip 0pt plus 1pt \abovedisplayskip 12pt plus 3pt minus 9pt \belowdisplayskip 12pt plus 3pt minus 9pt \abovedisplayshortskip 0pt plus 3pt \belowdisplayshortskip 7pt plus 3pt minus 4pt % \leftskip % \rightskip \topskip 10pt \splittopskip 10pt % \tabskip % \spaceskip % \xspaceskip \parfillskip 0pt plus 1fil \thinmuskip 3mu \medmuskip 4mu plus 2mu minus 4mu \thickmuskip 5mu plus 5mu % \everypar \pretolerance 100 \tolerance 200 % Initialized by TeX to 10000, but we change it \linepenalty 10 \hyphenpenalty 50 \exhyphenpenalty 50 \clubpenalty 150 \widowpenalty 150 \displaywidowpenalty 50 \brokenpenalty 100 \binoppenalty 700 \relpenalty 500 \predisplaypenalty 10000 % \postdisplaypenalty % \interlinepenalty \doublehyphendemerits 10000 \finalhyphendemerits 1000 \adjdemerits 10000 % \mag % Initialized by TeX to 1000 \delimiterfactor 901 \looseness 0 % \time % Initialized by TeX to now % \day % ditto % \month % ditto % \year % ditto \showboxbreadth 5 \showboxdepth 3 \hbadness 1000 \vbadness 1000 % \pausing % \tracingonline % \tracingmacros % \tracingstats % \tracingoutput \tracinglostchars 1 % \tracingcommands % \tracingparagraphs % \tracingpages \def\tracingall{\tracingonline1\tracingcommands2\tracingstats2\tracingpages1 \tracingoutput1\tracinglostchars1\tracingmacros1\tracingparagraphs1 \tracingrestores1 \showboxbreadth99999\showboxdepth99999\errorstopmode} % for online debugging \uchyph 1 % \outputpenalty % \maxdeadcycles % Initialized by TeX to 25 % \hangafter % \floatingpenalty \parindent 20pt % \mathsurround \varunit 1pt % \lineskiplimit \hsize 6.5in \vsize 8.9in \maxdepth 2pt \splitmaxdepth \maxdimen \boxmaxdepth \maxdimen \hfuzz 0.1pt \vfuzz 0.1pt \delimitershortfall 5pt \nulldelimiterspace 1.2pt \scriptspace 0.5pt \overfullrule 5pt % Here are macros for the automatic allocation of \count, \box, \dimen, % \skip, and \muskip registers, \read and \write file numbers, \fam codes, % and \insert numbers in TeX82. % % When a register is used only temporarily, it need not be allocated since % grouping can be used, making the value previously in the register return % after the close of the group. The main use of these macros is for % registers that are defined by one macro and used by others, possibly at % different nesting levels. All such registers should be defined through % these macros; otherwise conflicts may occur, especially when two or more % more macro packages are being used at once. % % The following counters are reserved: % 0 to 9 page numbering % 10 count allocation % 11 box allocation % 12 dimen allocation % 13 skip allocation % 14 muskip allocation % 15 read file allocation % 16 write file allocation % 17 math family allocation % 18 insert allocation % New counters are allocated starting with 19, 20, etc. Other registers are % allocated starting with 10. This leaves 0 through 9 for the user to play % with safely, except that counts 0 to 9 are considered to be the page and % subpage numbers (since they are displayed during output). In this scheme, % \count 10 always contains the number of the highest-numbered counter that % has been allocated, \count 11 the highest-numbered box, etc. % Inserts are given numbers 254, 253, etc., since they require a \count, % \box, \dimen, and \skip all with the same number; \count 19 contains the % lowest-numbered insert that has been allocated. Of course, \box255 is % reserved for \output; \count255, \dimen255, and \skip255 can be used freely. \setcount10=18 % for \count registers \setcount11=9 % for \box registers \setcount12=9 % for \dimen registers \setcount13=9 % for \skip registers \setcount14=9 % for \muskip registers \setcount15=-1 % for input streams \setcount16=-1 % for output streams \setcount17=3 % for math families \setcount18=255 % for insertions % Now, we define \newcount, \newbox, etc. so that you can say \newcount\foo % and \foo will be defined (with \chardef) to be the number of the next counter. \def\newcount{\allocate0\count \count18.} \def\newbox{\allocate1\box \count18.} \def\newdimen{\allocate2\dimen \count18.} \def\newskip{\allocate3\skip \count18.} \def\newmuskip{\allocate4\muskip 256.} \def\newread{\allocate5\read 16.} \def\newwrite{\allocate6\write 16.} \def\newfam{\allocate7\fam 16.} \def\allocate#1#2#3.#4{\global\advcount1#1 by 1 \checkoverflow{1#1}{#3}#2 \global\chardef#4=\count1#1 } \def\newinsert#1{\global\advcount18 by -1 \checkoverflow{10}{\count18}\count \checkoverflow{11}{\count18}\box \checkoverflow{12}{\count18}\dimen \checkoverflow{13}{\count18}\skip \global\chardef#1=\count18 } \def\checkoverflow#1#2#3{\ifnum\count#1<#2 \else\errmessage{No more room: can't allocate a new #3} \fi} % Here's an example of allocation. \newskip\smallskipregister \setskip\smallskipregister=3pt plus 1pt minus 1pt \edef\smallskip{\vskip\skip\smallskipregister} \newskip\medskipregister \setskip\medskipregister=6pt plus 2pt minus 2pt \edef\medskip{\vskip\skip\medskipregister} \newskip\bigskipregister \setskip\bigskipregister=12pt plus 4pt minus 4pt \edef\bigskip{\vskip\skip\bigskipregister} % And here's a different sort of allocation. % For example, \newswitch{foo} creates \footrue, \foofalse, and \iffoo \def\newswitch#1{\expandafter\let\csname if#1\endcsname\relax \tokens{\iftrue}% \expandafter\edef\csname#1true\endcsname {\let\csname if#1\endcsname=\the\tokens}% \tokens{\iffalse}% \expandafter\edef\csname#1false\endcsname {\let\csname if#1\endcsname=\the\tokens}} % Here are macros to "simulate" some of the TeX80 primitives: \message{macros,} \def\thinspace{\kern .16667em } \def\negthinspace{\kern-.16667em } \def\enspace{\kern.5em } \def\enskip{\hskip.5em\relax} \def\quad{\hskip1em\relax} % note, \kern didn't work in my poetry example \def\qquad{\hskip2em\relax} \def\linebreak{\newname\break} %\def\pagebreak{\vadjust{\break}} % no longer supported \def\break{\penalty-10000 } \def\nobreak{\penalty 10000 } \def\allowbreak{\penalty 0 } \def\removelastskip{\ifdim\the\lastskip=0pt\else\vskip\minusthe\lastskip\fi} \def\smallbreak{\par\ifdim\the\lastskip<\the\skip\smallskipregister \removelastskip\penalty-50\smallskip\fi} \def\medbreak{\par\ifdim\the\lastskip<\the\skip\medskipregister \removelastskip\penalty-100\medskip\fi} \def\bigbreak{\par\ifdim\the\lastskip<\the\skip\bigskipregister \removelastskip\penalty-200\bigskip\fi} \def\filbreak{\vfil\penalty-200\vfilneg} \def\goodbreak{\par\penalty-500 } \def\eject{\par\break} \def\supereject{\par\penalty-20000 } \def\bye{\vfill\supereject\end} \def\slash{/\discretionary{}{}{}} \def\*{\discretionary{\edef\next{\the\textfont2}\next\char2}{}{}} \def\lmoustache{\delimiter"340 } % top from (, bottom from ) \def\rmoustache{\delimiter"341 } % top from ), bottom from ( \def\lgroup{\delimiter"33A } % extensible parentheses with sharper tips \def\rgroup{\delimiter"33B } \def\arrowvert{\delimiter"33C } % arrow without arrowheads \def\Arrowvert{\delimiter"33D } % double arrow without arrowheads \def\bracevert{\delimiter"33E } % the vertical bar that extends braces \mathchardef\colon"003A \mathchardef\coprod"1360 \mathchardef\join"1357 \mathchardef\meet"1356 \mathchardef\munion"1355 \mathchardef\inter"1354 \mathchardef\union"1353 \mathchardef\intop"1352 \def\int{\intop\nolimits} \mathchardef\prod"1351 \mathchardef\sum"1350 \mathchardef\oprod"134E \mathchardef\osum"134C \mathchardef\odotprod"134A \mathchardef\ointop"1348 \def\oint{\ointop\nolimits} \mathchardef\squnion"1346 \mathchardef\sqsubseteq"3276 \mathchardef\land"225E \let\wedge=\land \mathchardef\lor"225F \let\vee=\lor \mathchardef\cap"225C \mathchardef\cup"225B \mathchardef\ddagger"227A \mathchardef\dagger"2279 \mathchardef\sqcap"2275 \mathchardef\sqcup"2274 \mathchardef\smallint"1273 \mathchardef\nabla"0272 \mathchardef\lnot"023A \let\neg=\lnot \def\dright{\newname{]\!]}} \def\dleft{\newname{[\![}} \mathchardef\parallel"326B \def\relvv{\newname\parallel} \def\rightvv{\newname{\right\|}} \def\leftvv{\newname{\left\|}} \def\|{\delimiter"026B30D } \let\Vert=\| \mathchardef\mid"326A \def\relv{\newname\mid} \def\rightv{\newname{\right|}} \def\leftv{\newname{\left|}} \def\vert{\delimiter"026A30C } \mathchardef\dashv"3261 \mathchardef\vdash"3260 \mathchardef\uplus"225D \def\Zscr{\newname{{\cal Z}}} \def\Yscr{\newname{{\cal Y}}} \def\Xscr{\newname{{\cal X}}} \def\Wscr{\newname{{\cal W}}} \def\Vscr{\newname{{\cal V}}} \def\Uscr{\newname{{\cal U}}} \def\Tscr{\newname{{\cal T}}} \def\Sscr{\newname{{\cal S}}} \def\Rscr{\newname{{\cal R}}} \def\Qscr{\newname{{\cal Q}}} \def\Pscr{\newname{{\cal P}}} \def\Oscr{\newname{{\cal O}}} \def\Nscr{\newname{{\cal N}}} \def\Mscr{\newname{{\cal M}}} \def\Lscr{\newname{{\cal L}}} \def\Kscr{\newname{{\cal K}}} \def\Jscr{\newname{{\cal J}}} \def\Iscr{\newname{{\cal I}}} \def\Hscr{\newname{{\cal H}}} \def\Gscr{\newname{{\cal G}}} \def\Fscr{\newname{{\cal F}}} \def\Escr{\newname{{\cal E}}} \def\Dscr{\newname{{\cal D}}} \def\Cscr{\newname{{\cal C}}} \def\Bscr{\newname{{\cal B}}} \def\Ascr{\newname{{\cal A}}} \mathchardef\not"3240 \mathchardef\amalg"223F \mathchardef\top"023E \mathchardef\Im"023D \def\imag{\newname\Im} \mathchardef\forall"0238 \mathchardef\exists"0239 \mathchardef\Re"023C \def\real{\newname\Re} \mathchardef\aleph"023B \mathchardef\angle"0236 \mathchardef\emptyset"0234 \mathchardef\notin"3233 \mathchardef\in"3232 \mathchardef\infty"0231 \mathchardef\prime"0230 \mathchardef\mapstochar"322F \def\mapsto{\mapstochar\rightarrow} \mathchardef\rsh"222E \mathchardef\lsh"222D \mathchardef\sim"3218 \mathchardef\simeq"3227 \def\makecong#1#2{\lower.5pt\vbox{\baselineskip0pt\lineskip-.5pt \halign{$#1\hfil##\hfil$\crcr~\crcr=\crcr}}} \def\cong{\mathrel{\mathpalette\makecong{}}} % congruence sign \def\surd{{\mathchar"1270}} \mathchardef\gg"3226 \def\grgr{\newname\gg} \mathchardef\ll"3225 \def\lsls{\newname\ll} \def\uparrow{\delimiter"3222378 } \def\downarrow{\delimiter"3223379 } \def\updownarrow{\delimiter"326C33F } \mathchardef\leftrightarrow"3224 \mathchardef\leftarrow"3220 \mathchardef\rightarrow"3221 \let\to=\rightarrow \def\joinrel{\mathrel{\mkern-3mu}} \def\relbar{\mathrel{\smash-}} \def\Relbar{\mathrel=} \def\Longrightarrow{\Relbar\joinrel\Rightarrow} \def\longrightarrow{\relbar\joinrel\rightarrow} \def\longleftarrow{\leftarrow\joinrel\relbar} \def\Longleftarrow{\Leftarrow\joinrel\Relbar} \def\longmapsto{\mapstochar\mathrel{\mkern-.5mu}\longrightarrow} % \longmapsto has been modified for shorter minus sign not yet in fonts (4/1/83) \def\longleftrightarrow{\leftarrow\joinrel\rightarrow} \def\Longleftrightarrow{\Leftarrow\joinrel\Rightarrow} \def\iff{\;\Longleftrightarrow\;} \def\Uparrow{\delimiter"322A37E } \def\Downarrow{\delimiter"322B37F } \def\Updownarrow{\delimiter"326D377 } \mathchardef\Leftrightarrow"322C \mathchardef\Leftarrow"3228 \mathchardef\Rightarrow"3229 \mathchardef\neq"321C \let\ne=\neq \mathchardef\leq"3214 \let\le=\leq \mathchardef\geq"3215 \let\ge=\geq \mathchardef\succ"321F \mathchardef\prec"321E \mathchardef\doteq"321D \mathchardef\approx"3219 \mathchardef\succeq"3217 \mathchardef\preceq"3216 \mathchardef\supset"321B \mathchardef\subset"321A \mathchardef\supseteq"3213 \mathchardef\subseteq"3212 \mathchardef\bot"0210 \mathchardef\perp"3210 \mathchardef\diamond"2277 \mathchardef\bullet"220F \mathchardef\interc"220E \mathchardef\div"220D \mathchardef\odot"220C \mathchardef\odiv"220B \mathchardef\otimes"220A \mathchardef\ominus"2209 \mathchardef\oplus"2208 \mathchardef\mp"2207 \mathchardef\pm"2206 \mathchardef\circ"2205 \def\backslash{\delimiter"020430F } % for double coset G\rslash H \def\rslash{\newname\setminus} \mathchardef\setminus"2204 % for set difference A\setminus B \mathchardef\cdot"2201 \mathchardef\ast"2203 \mathchardef\times"2202 \mathchardef\varepsilon"122 % this character isn't in the font yet! \mathchardef\varpi"17F \mathchardef\vartheta"17E \mathchardef\varphi"17D \mathchardef\omega"17C \mathchardef\psi"17B \mathchardef\jmath"140 \def\jit{\newname\jmath} \mathchardef\partial"125 \def\hbar{\rlap{\raise1ex\hbox{\sl\hskip.05em\char'31}}h} \mathchardef\wp"124 \mathchardef\ell"123 \def\lscr{\newname\ell} \mathchardef\imath"120 \def\iit{\newname\imath} \mathchardef\chi"11F \mathchardef\phi"11E \mathchardef\upsilon"11D \mathchardef\tau"11C \mathchardef\sigma"11B \mathchardef\rho"11A \mathchardef\pi"119 \mathchardef\xi"118 \mathchardef\nu"117 \mathchardef\mu"116 \mathchardef\lambda"115 \mathchardef\kappa"114 \mathchardef\iota"113 \mathchardef\theta"112 \mathchardef\eta"111 \mathchardef\zeta"110 \mathchardef\epsilon"10F \mathchardef\delta"10E \mathchardef\gamma"10D \mathchardef\beta"10C \mathchardef\alpha"10B \mathchardef\Omega"700A \mathchardef\Psi"7009 \mathchardef\Phi"7008 \mathchardef\Upsilon"7007 \mathchardef\Sigma"7006 \mathchardef\Pi"7005 \mathchardef\Xi"7004 \mathchardef\Lambda"7003 \mathchardef\Theta"7002 \mathchardef\Delta"7001 \mathchardef\Gamma"7000 \def\rangle{\delimiter"526930B } \def\langle{\delimiter"426830A } \def\}{\delimiter"5267309 } \let\rbrace=\} \def\{{\delimiter"4266308 } \let\lbrace=\{ \def\rceil{\delimiter"5265307 } \def\lceil{\delimiter"4264306 } \def\rfloor{\delimiter"5263305 } \def\lfloor{\delimiter"4262304 } \def\rbrack{\delimiter"505D303 } \def\lbrack{\delimiter"405B302 } \chardef\O='100 \chardef\o='40 \chardef\OE='37 \chardef\AE='36 \chardef\oe='35 \chardef\ae='34 \chardef\ss='33 \newskip\hidewidthregister \setskip\hidewidthregister=-1000pt plus 1fill \def\hidewidth{\hskip\skip\hidewidthregister} \def\.#1{\vbox{\baselineskip0pt\lineskip.25ex \halign{##\crcr\hidewidth.\hidewidth\crcr#1\crcr}}} \def\d#1{\vtop{\baselineskip0pt\lineskip.25ex \halign{##\crcr#1\crcr\hidewidth.\hidewidth\crcr}}} \def\b#1{\vtop{\baselineskip0pt\lineskip.25ex \halign{##\crcr#1\crcr\hidewidth \vbox to .2ex{\hbox{\char'22}\vss}\hidewidth\crcr}}} \def\aa{\accent'27 a} \def\AA{\rlap{\raise.25ex\hbox{\char'27}}A} \def\c#1{\setbox0\hbox{#1}\ifdim1ht0=1ex\accent'30 #1% \else\hbox to 1wd0{\hss\char'30\hss#1}\fi} \def\l{\accent'31 l} % will replace by \char'31 in new font, it will kern with l \def\L{\rlap{\raise.56ex\hbox{\char'31}}L} % again, kerning will eventually work \def\t#1{{\accent'32 #1}} \def\H#1{{\accent'26 #1}} \def\'#1{{\accent'16 #1}} \def\`#1{{\accent'15 #1}} \def\"#1{{\accent'23 #1}} \def\ddot{\mathaccent"7013 } \def\~#1{{\accent'24 #1}} \def\tilde{\mathaccent"7014 } \def\widetilde{\mathaccent"365 } \def\=#1{{\accent'22 #1}} \def\bar{\mathaccent"7012 } \def\u#1{{\accent'21 #1}} \def\breve{\mathaccent"7011 } \let\^^S=\u \def\v#1{{\accent'20 #1}} \def\check{\mathaccent"7010 } \let\^^_=\v % make sure this is ^^_ \def\^#1{{\accent'17 #1}} \def\hat{\mathaccent"700F } \let\^^D=\^ \def\widehat{\mathaccent"362 } \def\vec{\mathaccent"7015 } \def\dot#1{{\mathop{#1}\limits^{\vbox to-1.4pt{\kern-1pt\hbox{\tenrm.}\vss}}}} \def\skew#1#2#3{{#2{#3\mkern#1mu}\mkern-#1mu}{}} \chardef\j='14 \chardef\i='13 \def\,{\mskip\the\thinmuskip} \def\>{\mskip\the\medmuskip} \def\;{\mskip\the\thickmuskip} \def\^^]{\newname{\nonscript\,}} \def\!{\mskip\minusthe\thinmuskip} \def\<{\newname{\mskip\minusthe\medmuskip}} \def\?{\newname{\mskip\minusthe\thickmuskip}} \def\^^\{\newname{\nonscript\mskip\minusthe\thinmuskip}} \let\comb=\atopwithdelims \def\sqrt{\radical"270370 } \def\^^M{\ } % control = control \def\^^I{\ } % same for % Here are other macros \def\newname#1{\tokens{#1}% \def\warning{In TeX82, please call this operation \the\tokens}% \errmessage{\warning}#1} \def\goingaway#1#2{\errmessage{Warning: \string#1 won't exist any more in May (there's something better)}#2} \let\endgraf=\par \let\endline=\cr \def\lq{`} \def\rq{'} \let\lb={ \let\rb=} \let\sp=^ \let\sb=← \chardef\%=`\% \chardef\&=`\& % \#, \@, and \$ will be similar to \% and \& in the forthcoming am fonts; % meanwhile, we don't have \#, \@, and \$ in bold, slanted, or text italic \def\mathhexbox#1{\relax\ifvmode\indent\fi\hbox{$\mathsurround0pt\mathchar"#1$}} \def\#{\mathhexbox{271}} \def\@{\mathhexbox{27C}} \def\${\mathhexbox{27F}} \def\←{\kern.06em\vbox{\hrule width.3em}} % underline in identifiers \def\sterling{\mathhexbox{27E}} \def\copyright{\mathhexbox{27D}} \def\P{\mathhexbox{27B}} \def\ddag{\mathhexbox{27A}} \def\dag{\mathhexbox{279}} \def\section{\mathhexbox{278}} % \def\lft#1{{#1}\hfill} the old \lft, \ctr, \rt aren't recommended for TeX82 % \def\ctr#1{\hfill{#1}\hfill} % \def\rt#1{\hfill{#1}} \def\line{\hbox to\the\hsize} \def\leftline#1{\line{#1\hss}}\def\ljustline{\newname\leftline} \def\rightline#1{\line{\hss#1}}\def\rjustline{\newname\rightline} \def\centerline#1{\line{\hss#1\hss}}\def\ctrline{\newname\centerline} \newcount\mscount \def\multispan#1{\omit\setcount\mscount=#1 \finmultispan} \def\finmultispan{\ifnum\count\mscount=1 \let\next\relax \else\def\next{\span\omit\advcount\mscount by-1 \finmultispan}\fi \next} \def\log{\mathop{\rm log}\nolimits} \def\lg{\mathop{\rm lg}\nolimits} \def\ln{\mathop{\rm ln}\nolimits} \def\lim{\mathop{\rm lim}} \def\limsup{\mathop{\rm lim\,sup}} \def\liminf{\mathop{\rm lim\,inf}} \def\sin{\mathop{\rm sin}\nolimits} \def\arcsin{\mathop{\rm arcsin}\nolimits} \def\sinh{\mathop{\rm sinh}\nolimits} \def\cos{\mathop{\rm cos}\nolimits} \def\arccos{\mathop{\rm arccos}\nolimits} \def\cosh{\mathop{\rm cosh}\nolimits} \def\tan{\mathop{\rm tan}\nolimits} \def\arctan{\mathop{\rm arctan}\nolimits} \def\tanh{\mathop{\rm tanh}\nolimits} \def\cot{\mathop{\rm cot}\nolimits} \def\coth{\mathop{\rm coth}\nolimits} \def\sec{\mathop{\rm sec}\nolimits} \def\csc{\mathop{\rm csc}\nolimits} \def\max{\mathop{\rm max}} \def\min{\mathop{\rm min}} \def\sup{\mathop{\rm sup}} \def\inf{\mathop{\rm inf}} \def\arg{\mathop{\rm arg}\nolimits} \def\ker{\mathop{\rm ker}\nolimits} \def\dim{\mathop{\rm dim}\nolimits} \def\hom{\mathop{\rm hom}\nolimits} \def\det{\mathop{\rm det}} \def\exp{\mathop{\rm exp}\nolimits} \def\Pr{\mathop{\rm Pr}} \def\gcd{\mathop{\rm gcd}} \def\deg{\mathop{\rm deg}\nolimits} \def\choose{\atopwithdelims ()} \def\brack{\atopwithdelims []} \def\brace{\atopwithdelims \{\}} \def\leftset{\newname{\{\,}} \def\rightset{\newname{\,\}}} \def\bmod{\mskip\minusthe\medmuskip\mskip5mu \mathbin{\rm mod}\penalty900\mskip\minusthe\medmuskip\mskip5mu} \def\modop{\newname\bmod} \def\pmod#1{\allowbreak\mkern18mu({\rm mod}\,\,#1)} \def\mod{\newname\pmod} \mathchardef\equiv="3211 \def\eqv{\newname\equiv} \def\neqv{\newname{\not\equiv}} \mathchardef\colon="603A % colon as a punctuation mark % the "dots" macros make use of TeX's math spacing rules. \def\dots{\relax\ifmmode\ldots\else$\ldots\,$\fi} \mathchardef\ldotp="602E % ldot as a punctuation mark \mathchardef\cdotp="6201 % cdot as a punctuation mark \def\ldots{\mathinner{\ldotp\ldotp\ldotp}} \def\cdots{\mathinner{\cdotp\cdotp\cdotp}} \def\ldotss{\goingaway\ldotss{\ldots{}}} \def\cdotss{\goingaway\cdotss{\cdots{}}} \def\ldotsm{\newname\ldots} \def\vdots{\vbox{\baselineskip 4pt\vskip 6pt\hbox{.}\hbox{.}\hbox{.}}} \def\ddots{\mathinner{\mskip1mu\raise7pt\vbox{\kern7pt\hbox{.}}\mskip2mu \raise4pt\hbox{.}\mskip2mu\raise1pt\hbox{.}\mskip1mu}} \def\hrulefill{\leaders\hrule\hfill} \def\dotfill{\leaders\hbox{$\mkern1.5mu.\mkern1.5mu$}\hfill} \def\rightarrowfill{${-}\mkern-6mu \cleaders\hbox{$\mkern-2mu{-}\mkern-2mu$}\hfill\mkern-6mu{\to}$} \def\overarrow#1{\vbox{\halign{##\crcr \rightarrowfill\crcr\noalign{\kern-1pt\nointerlineskip} $\hfil\displaystyle{#1}\hfil$\crcr}}} \mathchardef\braceld="37A \mathchardef\bracerd="37B \mathchardef\bracelu="37C \mathchardef\braceru="37D \def\downbracefill{$\braceld\leaders\vrule\hfill\braceru \bracelu\leaders\vrule\hfill\bracerd$} \def\upbracefill{$\bracelu\leaders\vrule\hfill\bracerd \braceld\leaders\vrule\hfill\braceru$} \def\overbrace#1{\mathop{\vbox{\halign{##\crcr\noalign{\kern3pt} \downbracefill\crcr\noalign{\kern3pt\nointerlineskip} $\hfil\displaystyle{#1}\hfil$\crcr}}}} \def\underbrace#1{\mathop{\vtop{\halign{##\crcr $\hfil\displaystyle{#1}\hfil$\crcr\noalign{\kern3pt\nointerlineskip} \upbracefill\crcr\noalign{\kern3pt}}}}} \def\cases#1{\left\{\,\vcenter{\normalbaselines \halign{$##\hfil$&\quad##\hfil\crcr#1\crcr}}\right.} \def\matrix#1{\,\vcenter{\normalbaselines \halign{\hfil$##$\hfil&&\quad\hfil$##$\hfil\crcr \mathstrut\crcr\noalign{\kern\minusthe\baselineskip} #1\crcr\mathstrut\crcr\noalign{\kern\minusthe\baselineskip}}}\,} \def\pmatrix#1{\left (\matrix{#1}\right )} \def\bordermatrix#1{{\setbox0=\hbox{\tenex B} % extender for big left ( \setbox1=\vbox{\def\cr{\crcr\noalign{\kern2pt\global\let\cr=\endline}} \halign{$##$\hfil\kern2pt\kern1wd0&\thinspace\hfil$##$\hfil& &\quad\hfil$##$\hfil\crcr \omit\strut\hfil\crcr\noalign{\kern\minusthe\baselineskip} #1\crcr\omit\strut\cr}} \setbox2=\vbox{\unvcopy1\global\setbox3=\lastbox} % \box3=bottom row \setbox2=\hbox{\unhbox3\unskip\global\setbox3=\lastbox} % \box3=first col \setbox2=\hbox{$\kern1wd3\kern-1wd0\left (\kern-1wd3 \global\setbox3=\vbox{\box3\kern2pt} % \box3=height of top border \vcenter{\kern-1ht3\unvbox1\kern\minusthe\baselineskip}\,\right )$} \;\vbox{\kern1ht3\box2}}} \def\eqalign#1{\,\vcenter{\openup{3pt}\mathsurround=0pt \halign{\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil \crcr#1\crcr}}\,} \newskip\centering \setskip\centering=0pt plus 1000pt minus 1000pt \def\eqalignno#1{\openup{3pt}\mathsurround=0pt \tabskip\skip\centering \halign to\the\displaywidth{\hfil$\displaystyle{##}$\tabskip 0pt &$\displaystyle{{}##}$\hfil\tabskip\skip\centering &\llap{$##$}\tabskip 0pt\crcr\noalign{\vskip\minusthe\lineskiplimit} #1\crcr}} \def\leqalignno#1{\openup{3pt}\mathsurround=0pt \tabskip\skip\centering \halign to\the\displaywidth{\hfil$\displaystyle{##}$\tabskip 0pt &$\displaystyle{{}##}$\hfil\tabskip\skip\centering &\kern\minusthe\displaywidth\rlap{$##$}\tabskip\the\displaywidth\crcr \noalign{\vskip\minusthe\lineskiplimit}#1\crcr}} \def\openup#1{\setskip0=\the\lineskip \advskip0 by#1 \lineskip=\skip0 \setskip0=\the\baselineskip \advskip0 by#1 \baselineskip=\skip0 \setdimen0=\the\lineskiplimit \advdimen0 by#1 \lineskiplimit=\dimen0 } \def\displaylines#1{\openup{3pt} \halign{\hbox to\the\displaywidth{$\hfil\displaystyle##\hfil$}\crcr \noalign{\vskip\minusthe\lineskiplimit}#1\crcr}} \def\cpile#1{\goingaway\cpile{\vcenter{\halign{\hfill$## $\hfill\cr#1}}}} \def\lpile#1{\goingaway\lpile{\vcenter{\halign{$## $\hfill\cr#1}}}} \def\rpile#1{\goingaway\rpile{\vcenter{\halign{\hfill$## $\cr#1}}}} \def\null{\hbox{}} \def\empty{} \def\twoline#1#2#3{\goingaway\twoline{\vbox{ \hbox to \the\displaywidth{$\quad\displaystyle{#1}$\hfill} \vskip#2\hbox to \the\displaywidth{\hfill$\displaystyle{#3}\quad$}}}} \def\chop to#1pt#2{\goingaway\chop {{\setbox0\hbox{$\displaystyle{#2}$}\hbox{\lower#1pt\null \vbox to 1ht0{\box0\vss}}}}} % pretends that #2 is #1pt deep \def\spose#1{\newname\rlap{#1}} \def\rlap#1{\hbox to 0pt{#1\hss}} \def\llap#1{\hbox to 0pt{\hss#1}} \def\underbox#1{$\setbox\()=\hbox{#1}\underline{\vbox to 1ht\(){\box\()\vss}}$} \def\nointerlineskip{\prevdepth-1000pt } \def\offinterlineskip{\baselineskip=-1000pt \lineskip=0pt \lineskiplimit=\maxdimen} \def\topspace{\hrule height0pt\vskip} % e.g. "\topspace 1in" puts an inch of space at the top of a page \def\hang{\hangindent\the\parindent} \def\textindent#1{\noindent\hbox to\the\parindent{\hss#1\enspace}\ignorespaces} \def\item#1{\par\hang\textindent{#1}} \def\itemitem#1{\par\noindent \setdimen0=\the\parindent \hangindent2dm0 \hbox to2dm0{\hss#1\enspace}\ignorespaces} \def\narrower{\setskip0=\the\leftskip \advskip0 by 20pt \leftskip=\skip0 \setskip0=\the\rightskip \advskip0 by 20pt \rightskip=\skip0 } \def\biglp{\newname{\bigl (}} \def\bigglp{\newname{\biggl (}} \def\biggglp{\newname{\Biggl (}} \def\bigrp{\newname{\bigr )}} \def\biggrp{\newname{\biggr )}} \def\bigggrp{\newname{\Biggr )}} \def\bigl{\mathopen\big} \def\bigm{\mathrel\big} \def\bigr{\mathclose\big} \def\Bigl{\mathopen\Big} \def\Bigm{\mathrel\Big} \def\Bigr{\mathclose\Big} \def\biggl{\mathopen\bigg} \def\biggm{\mathrel\bigg} \def\biggr{\mathclose\bigg} \def\Biggl{\mathopen\Bigg} \def\Biggm{\mathrel\Bigg} \def\Biggr{\mathclose\Bigg} \def\big#1{{\hbox{$\left#1\vbox to8.5pt{}\right.\shutoffspace$}}} \def\Big#1{{\hbox{$\left#1\vbox to11.5pt{}\right.\shutoffspace$}}} \def\bigg#1{{\hbox{$\left#1\vbox to14.5pt{}\right.\shutoffspace$}}} \def\Bigg#1{{\hbox{$\left#1\vbox to17.5pt{}\right.\shutoffspace$}}} \def\shutoffspace{\nulldelimiterspace0pt \mathsurround0pt } \def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125em X} \def\raggedright{\rightskip 0pt plus 2em \spaceskip .3333em \xspaceskip .5em} \def\ttraggedright{\rightskip 0pt plus 2em} % for use with \tt only \newbox\rootbox \def\root#1\of{\setbox\rootbox=\hbox{$\scriptscriptstyle{#1}$} \mathpalette\finishroot} \def\mathpalette#1#2{\mathchoice{#1\displaystyle{#2}} {#1\textstyle{#2}}{#1\scriptstyle{#2}}{#1\scriptscriptstyle{#2}}} \def\finishroot#1#2{\setbox0=\hbox{$#1\sqrt{#2}$} \setdimen0=.6ht0 \advdimen0 by-.6dp0 \mskip4mu \raise1dm0\copy\rootbox \mskip-9mu \box0} \newswitch{vph} \newswitch{hph} \def\vphantom{\vphtrue\hphfalse\phant} \def\hphantom{\vphfalse\hphtrue\phant} \def\phantom{\vphtrue\hphtrue\phant} \def\phant{\ifmmode\def\next{\mathpalette\mathphant} \else\let\next\makephant\fi\next} \def\makephant#1{\setbox0=\hbox{#1}\finphant} \def\mathphant#1#2{\setbox0=\hbox{$#1{#2}$}\finphant} \def\finphant{\hbox{\ifvph\vrule height1ht0 depth1dp0 width0pt\fi% \ifhph\kern1wd0\fi}} \def\smash{\relax % \relax, in case this comes first in \halign \ifmmode\def\next{\mathpalette\mathsmash}\else\let\next\makesmash \fi\next} \def\makesmash#1{\setbox0=\hbox{#1}\finsmash} \def\mathsmash#1#2{\setbox0=\hbox{$#1{#2}$}\finsmash} \def\finsmash{\vbox to 0pt{\kern-1ht0\box0\vss}} \def\loop#1\repeat{\def\body{#1}\iterate} \def\iterate{\body\let\next=\iterate\else\let\next=\relax\fi\next} \let\repeat=\fi % this makes \loop...\if...\repeat skippable % the following macros for tabs indicate a new style that I'll % put into the rest of plain.tex some day (it uses TeX more efficiently) \chardef\()=0 \chardef\(i)=1 \chardef\(ii)=2 \chardef\(z)=255 \newswitch{usebox} \newswitch{cr} \newbox\tabs \newbox\tabsyet \newbox\tabsdone \def\settabs{\setbox\tabs=\null \futurelet\next\settab(a)} \def\settab(a){\ifx\next\+\let\next\settab(b)\else\let\next\settab(c)\fi\next} \def\settab(b)\+{\useboxfalse\(maketabbox)} \def\+{\useboxtrue\(maketabbox)} \def\settab(c)#1\columns{\setcount\(z)=#1 \setdimen\()=\the\hsize \loop\ifnum\count\(z)>0 \(anothercol)\repeat} \def\(anothercol){\setdimen\(ii)=\dimen\() \divdimen\(ii) by\count\(z) \setbox\tabs=\hbox{\hbox to \dimen\(ii){}\unhbox\tabs}% \advdimen\() by-\dimen\(ii) \advcount\(z) by-\(i)} \def\(maketabbox)#1\cr{\global\setbox\tabsyet=\copy\tabs \global\setbox\tabsdone=\null \tabskip=0pt \setbox\()=\vbox{\crfalse \tabskip=0pt \halign{&\tabbox(a)##\tabbox(b)\crcr #1\crtrue\crcr}}% \setbox\tabs=\hbox{\unhbox\tabsyet\unhbox\tabsdone}% \ifusebox\unvbox\()\lastbox\fi} \def\cleartabs{\global\setbox\tabsyet=\null\setbox\tabs=\null} \def\tabbox(a){\setbox\()=\hbox\lb} \def\tabbox(b){\ifcr\rb % now \box\() holds the column \else\hss\rb \global\setbox\tabsyet=\hbox{\unhbox\tabsyet \global\setbox\(i)=\lastbox}% now \box(i) holds its size \ifvoid\(i)\global\setbox\(i)=\hbox to 1wd\(){}% \else\setbox\()=\hbox to1wd\(i){\unhbox\()}\fi \global\setbox\tabsdone=\hbox{\box\(i)\unhbox\tabsdone}\fi \box\()} \outer\def\proclaim #1. #2\par{\medbreak \noindent{\bf#1.\enspace}{\sl#2}\par \ifdim\the\lastskip<\the\skip\medskipregister \removelastskip\penalty55\medskip\fi} % Definitions for preloaded fonts % (Fonts assigned to \preloaded are not part of "plain TeX", % but they are preloaded so that other format packages can use them. % For example, if another set of macros says "\font\ninerm=cmr9", % TeX will not have to reload the font metric information for cmr9.) \message{fonts,} %\font\tenrm=cmr10 %\font\preloaded=cmr9 %\font\preloaded=cmr8 %\font\sevenrm=cmr7 %\font\preloaded=cmr6 %\font\fiverm=cmr5 %\font\preloaded=amr10 % %\font\teni=cmi10 % math italic %\font\preloaded=cmi9 %\font\preloaded=cmi8 %\font\seveni=cmi7 %\font\preloaded=cmi6 %\font\fivei=cmi5 % %\font\tensy=amsy10 % math symbols %\font\preloaded=amsy9 %\font\preloaded=amsy8 %\font\sevensy=amsy7 %\font\preloaded=amsy6 %\font\fivesy=amsy5 % %\font\tenex=amathx % math extension % %\font\preloaded=cmss10 % sans serif %\font\preloaded=cmss9 %\font\preloaded=cmss8 % %\font\preloaded=cmsss % slanted sans serif %\font\preloaded=cmsss9 %\font\preloaded=cmsss8 %\font\preloaded=amsss8 % %\font\tenbf=cmb10 % boldface extended %\font\preloaded=cmb9 %\font\preloaded=cmb8 %\font\sevenbf=cmb7 %\font\preloaded=cmb6 %\font\fivebf=cmb5 %\font\preloaded=ambx10 % %\font\tentt=cmtt % typewriter %\font\preloaded=cmtt9 %\font\preloaded=cmtt8 %\font\preloaded=amtt % %\font\preloaded=cmst % slanted typewriter % %\font\tensl=cms10 % slanted roman %\font\preloaded=cms9 %\font\preloaded=cms8 % %\font\tenit=cmti10 % text italic %\font\preloaded=cmti9 %\font\preloaded=cmti8 %\font\preloaded=cmti7 % %\message{more fonts,} %\font\preloaded=cmu10 % unslanted text italic % %\font\preloaded=cmbti % bold text italic %\font\preloaded=cmbsy % bold math symbols % %\font\preloaded=cmcsc % caps and small caps %\font\preloaded=cmcsc9 % %\font\preloaded=cmssb % sans serif bold %\font\preloaded=cmss9b %\font\preloaded=cmss8b %\font\preloaded=amssb %\font\preloaded=amssb at 13pt % %\font\preloaded=cmr7 at 21pt % for titles %\font\preloaded=cmtt at 15pt %\font\preloaded=cmr7 at 14pt % %\font\preloaded=manfnt % METAFONT logo and dragon curve and special symbols %\font\preloaded=cmdunh % Dunhill style % %\let\preloaded=\undefined % preloaded fonts should be declared anew % %\let\mainfont=\tenrm % %\def\rm{\fam0\tenrm} %\textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm %\textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei %\def\mit{\fam1 } %\textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy %\def\cal{\fam2 } %\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex %\newfam\itfam \def\it{\fam\itfam\tenit} % \it is family 4 %\textfont\itfam=\tenit %\newfam\slfam \def\sl{\fam\slfam\tensl} % \sl is family 5 %\textfont\slfam=\tensl %\newfam\bffam \def\bf{\fam\bffam\tenbf} % \bf is family 6 %\textfont\bffam=\tenbf \scriptfont\bffam=\sevenbf %\scriptscriptfont\bffam=\fivebf %\newfam\ttfam \def\tt{\fam\ttfam\tentt} % \tt is family 7 %\textfont\ttfam=\tentt \newbox\strutbox \setbox\strutbox=\hbox{\vrule height8.5pt depth3.5pt width0pt} \def\strut{\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi} % the next few lines are temporary; new fonts will make them obsolete %\newbox\mathstrutbox %\setbox\mathstrutbox=\hbox{\vrule height7.5pt depth2.5pt width0pt} %\newbox\scriptstrutbox %\setbox\scriptstrutbox=\hbox{\vrule height5.25pt depth1.75pt width0pt} %\newbox\scriptscriptstrutbox %\setbox\scriptscriptstrutbox=\hbox{\vrule height3.75pt depth1.25pt width0pt} %\def\mathstrut{\mathchoice{\copy\mathstrutbox}{\copy\mathstrutbox}% % {\copy\scriptstrutbox}{\copy\scriptscriptstrutbox}} \def\mathstrut{\vphantom (} % Definitions related to output (see OUTPUT.TXT[tex,dek]) \message{output routines,} %\newswitch{raggedbottom} \raggedbottomfalse %\def\raggedbottom{\topskip 10pt plus 5pc \raggedbottomtrue} %\def\pagenumber{{\tenrm % \ifnum\count0<0 \romannumeral-\count0 \else\number\count0 \fi}} %\let\headline=\hfil % headline is normally blank %\def\footline{\hss\pagenumber\hss} % footline is normally a centered page number %\def\nopagenumbers{\let\footline=\hfil} % blank out the footline \setcount0=1 % first page is number 1 %\def\bumppagenumber{\ifnum\count0<0\global\advcount0 by-1 % \else\global\advcount0 by 1 \fi} % increase |pagenumber| %\newinsert\footins %\def\footnote#1#2{\ifhmode\ifinner\footerr % \else{% OK, we're in unrestricted horizontal mode % \edef\sf{\the\spacefactor}% carry space factor past #1 % #1\vfootnote{#1}{#2}\spacefactor=\sf}\fi % \else\footerr\fi} %\def\footerr{\errmessage{Please use `\string\footnote' only % within a paragraph}} %\def\vfootnote#1#2{\insert\footins{\interlinepenalty100 % \splittopskip=8.5pt % broken footnotes will have top baseline like this % \splitmaxdepth=3.5pt \floatingpenalty=20000 % \textindent{#1}\footstrut#2\strut}} %\def\footstrut{\vbox to\the\splittopskip{}} %\setskip\footins=\skip\bigskipregister % space added when footnote is present %\setcount\footins=1000 % footnote magnification factor (1 to 1) %\setdimen\footins=8in % maximum footnotes per page % %\newinsert\topins %\def\topinsert{\begininsert T} %\def\midinsert{\begininsert M} %\def\pageinsert{\begininsert P} %\setskip\topins=0pt % no space added when a topinsert is present %\setcount\topins=1000 % magnification factor (1 to 1) %\setdimen\topins=\maxdimen % no limit per page %\def\begininsert#1{\par\begingroup\let\instype=#1\setbox0=\vbox\lb} %\def\endinsert{\rb % finish the \vbox % \if\instype M % \midinsert % \setdimen0=1ht0 \advdimen0 by 1dp0 \advdimen0 by 12pt % \advdimen0 by\the\pagetotal % \ifdim\dimen0>\the\pagegoal\let\instype=T\fi\fi % \if\instype M % midinsert % \bigskip\box0\bigbreak % \else\insert\topins{\penalty100 % floating insertion % \splittopskip=0pt % \if\instype P % \pageinsert % \setdimen0=1dp0 % \vbox to\the\vsize{\unvbox0\kern-1dm0} % depth is zero % \else \box0\nobreak\bigskip\fi}\fi\endgroup} % %\output{\normaloutput} %\def\normaloutput{\shipout\vbox{\boxmaxdepth=\the\maxdepth % \vbox to 0pt{\vskip-22.5pt % \line{\strut\headline}\vss} % \nointerlineskip % \vbox to\the\vsize{\pagecontents} % \baselineskip24pt % \line{\footline}} % \bumppagenumber % \ifnum\the\outputpenalty>-20000 \else\dosupereject\fi} %%\def\dosupereject{\global\output{\superoutput}\line{}\nobreak\vfill\supereject} %\def\dosupereject{\ifnum\the\insertpenalties>0 % something is being held over % \vbox to\minusthe\topskip{\line{}\vss}\vfill\supereject\fi} %\def\superoutput{\ifvoid\topins\ifvoid\footins % \setbox0=\box255 \global\output{\normaloutput} \deadcycles=0 % \else\normaloutput\fi\else\normaloutput\fi} % %\def\pagecontents{\ifvoid\topins\else\unvbox\topins\fi % \unvbox255 % \ifvoid\footins\else % footnote info is present % \vskip\skip\footins \vskip-3pt % \hrule width 2truein \vskip 2.6pt % the \hrule is .4pt high % \unvbox\footins\fi % \ifraggedbottom\vfill\fi} % Hyphenation, and initial values for standard layout \message{hyphenation} \input hyphen \def\showhyphens#1{\setbox0=\vbox{\parfillskip0pt\hsize10000pt\tenrm \pretolerance-1\tolerance-1\hbadness0\showboxdepth0\ #1}} \def\magnify#1{\mag=#1\hsize=6.5truein\vsize=8.9truein \setdimen\footins=8truein} \normalbaselines%\rm % select roman font \nonfrenchspace % punctuation affects the spacing \catcode`(=12 \catcode`)=12 % parentheses are no longer letters \def\format{lplain}\def\version{0.97} % identifies the current format \input lfonts \input latex