diff options
Diffstat (limited to 'macros/lamstex/inputs')
49 files changed, 16378 insertions, 0 deletions
diff --git a/macros/lamstex/inputs/acompat.tex b/macros/lamstex/inputs/acompat.tex new file mode 100644 index 0000000000..9ac20a9e98 --- /dev/null +++ b/macros/lamstex/inputs/acompat.tex @@ -0,0 +1,233 @@ +% ACOMPAT.TEX VERSION 2.0 +% COPYRIGHT (C) 1991 BY THE TEXPLORATORS CORPORATION +% ALL RIGHTS RESERVED + +% THIS FILE SHOULD NOT BE CHANGED IN ANY WAY. + +%% This file allows certain modifications that might be desired +%% if an old AmS-TeX file has to be run through LamS-TeX. + +%% First of all +%% +%% \manualtags +%% +%% causes \tag to revert to its AmS-TeX usage: instead of +%% simply typing +%% +%% $$ x=y \tag $$ +%% +%% and expecting LamS-TeX to supply the \tag number automatically, +%% one would type an explicit \tag like +%% +%% $$ x=y \tag 3 $$ +%% +%% which would give the tag (3) [the formatting of the tag +%% number can still be changed with \newstyle\tag]. +%% +%% It is possible to specify \manualtags within a group if +%% only part of a paper uses the AmS-TeX conventions. + +%% Similarly, the command +%% +%% \amstexCDs +%% +%% makes \CD act exactly as in AmS-TeX, with no &'s, and +%% with @>>> and @<<< for horizontal arrows, @ AAA and @ VVV for +%% vertical arrows, @. for an `empty arrow', @= for a horizontal +%% long equal sign, and @| or @\vert for a vertical long equal sign. +%% Moreover, @))) and @((( can be used for @>>> and @<<< --- an +%% addition made in version 2.0 of AmS-TeX. +%% +%% \amstexCDs can also be used within a group, in case some \CD's +%% are in the AmS-TeX format, while others are in LamS-TeX format. + + +%% By the way, once this file has been \input, @>>> and @<<< +%% can even be used in math mode, outside of commutative diagrams, +%% just as in AmS-TeX, giving the same result as LamS-TeX's +%% \East and \West. [But you can't use the alternatives @((( and @))) +%% this way.] + + +%% Although \amstexCDs allows \CD's from an old AmS-TeX file to +%% be used with LamS-TeX, note that these rectangular \CD's will +%% not look the same as those produced by LamS-TeX. However, +%% there is also \OCD...\endOCD (`old \CD'), which gives exactly the +%% same diagrams as ordinary LamS-TeX diagrams, but which requires +%% only rather modest amounts of editing. For example, instead of +%% +%% \amstexCDs +%% $$ +%% \CD +%% G @)\alpha)\beta) H @= K @>\alpha>\beta > L\\ +%% @VfVgV @AfAgA @| @. \\ +%% G' @(\alpha(\beta( H' @. K' @<\alpha<\beta< L' +%% \endCD +%% $$ +%% +%% you can type +%% +%% $$ +%% \OCD +%% G @VfVgV @)\alpha)\beta) H @= K @>\alpha>\beta > L\\ +%% % +%% G' @(\alpha(\beta( H' @AfAgA @. K' @| @<\alpha<\beta< L' +%% \endOCD +%% $$ +%% +%% and get a commutative diagram that looks exactly like those normally +%% produced by LamS-TeX. +%% +%% The changes that have to be made are covered by the following rules: +%% +%% (1) The `rows' with vertical arrows are eliminated. +%% (2) Vertical arrows should instead be placed after the vertex at +%% which they start. In other words, @VVV arrows should be placed +%% after the vertex above, and @AAA arrows should be placed after +%% the vertex below; a vertical long equal sign, @| or @\vert, is +%% to be treated like @AAA (i.e., it is thought of as pointing +%% upwards). +%% (3) These vertical arrows always go BEFORE any horizontal arrow +%% at the vertex. +%% (4) Horizontal `empty arrows' are retained, but vertical ones +%% are eliminated. +%% +%% Note that \OCD...\endOCD will give \tsize labels, the default for +%% commutative diagrams in LamS-TeX, but if \amstexCD's is specified, +%% then \CD...\endCD gives \ssize labels, the default in AmS-TeX. +%% If you want \OCD...\endOCD to give \ssize labels, type +%% \ssizeCDlabels\OCD ... \endOCD. + + +%% In LamS-TeX, \endCD is actually part of the `syntax' for \CD, not +%% an independent control sequence. So if you tried +%% +%% \define\cd{\CD} +%% \define\endcd{\endCD} +%% +%% then \cd...\endcd would not work. However, you could +%% +%% \define\cd#1\endcd{\CD#1\endCD} +%% +%% and then you could use \cd...\endcd instead of \CD...\endCD. +%% The same holds for \OCD...\endOCD. So you could, for example, +%% +%% \define\ocd#1\endocd{\ssizeCDlabels\OCD#1\endOCD} +%% +%% and then use \ocd...\endocd to have \ssizeCDlabels automatically. +%% (You could even +%% +%% \predefine\OCDoriginal{\OCD} +%% \redefine\OCD#1\endOCD{\ssizeCDlabels\OCDoriginal#1\endOCD} +%% +%% if you wanted to use \OCD...\endOCD and have \ssizeCDlabels +%% automatically.) + + +\catcode`\@=11 +\let\alloc@\alloc@ +\def\manualtags{\def\maketag@@@@##1\maketag@{\hbox{\tag@S{\tag@F + \ignorespaces##1\unskip}}}} +\let\CD@\CD +\atdef@>#1>#2>{\ampersand@ + \setboxz@h{$\m@th\ssize\;{#1}\;\;$}% + \setbox\tw@\hbox{$\m@th\ssize\;{#2}\;\;$}% + \setbox4=\hbox{$\m@th#2$}% + \ifCD@\global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi + \ifdim\wdz@>\bigaw@\global\bigaw@\wdz@\fi + \ifdim\wd\tw@>\bigaw@\global\bigaw@\wd\tw@\fi + \ifCD@\hskip.5em\fi + \ifdim\wd4 >\z@ + \mathrel{\mathop{\hbox to\bigaw@{\rightarrowfill}}\limits^{#1}_{#2}}% + \else\mathrel{\mathop{\hbox to\bigaw@{\rightarrowfill}}\limits^{#1}}\fi + \ifCD@\hskip.5em\fi + \ampersand@}% +\atdef@<#1<#2<{\ampersand@\setboxz@h{$\m@th\ssize\;\;{#1}\;$}% + \setbox\tw@\hbox{$\m@th\ssize\;\;{#2}\;$}\setbox4=\hbox{$\m@th#2$}% + \ifCD@\global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi + \ifdim\wdz@>\bigaw@\global\bigaw@\wdz@\fi + \ifdim\wd\tw@>\bigaw@\global\bigaw@\wd\tw@\fi + \ifCD@\hskip.5em\fi + \ifdim\wd4 >\z@ + \mathrel{\mathop{\hbox to\bigaw@{\leftarrowfill}}\limits^{#1}_{#2}}\else + \mathrel{\mathop{\hbox to\bigaw@{\leftarrowfill}}\limits^{#1}}\fi + \ifCD@\hskip.5em\fi\ampersand@} +\let\ampersand@\relax +\newdimen\minCDaw@ +\minCDaw@2.5pc +\def\minCDarrowwidth#1{\RIfMIfI@\onlydmatherr@\minCDarrowwidth + \else\minCDaw@#1\relax\fi\else\onlydmatherr@\minCDarrowwidth\fi} +\newdimen\bigaw@ +\newif\ifCD@ +\def\amstexCDs{% + \atdef@ A##1A##2A{\llap{$\m@th\vcenter{\hbox + {$\ssize##1$}}$}\Big\uparrow\rlap{$\m@th\vcenter{\hbox{$\ssize##2$}}$}&&}% + \atdef@ V##1V##2V{\llap{$\m@th\vcenter{\hbox{$\ssize##1$}}$}% + \Big\downarrow\rlap{$\m@th\vcenter{\hbox{$\ssize##2$}}$}&&}% + \atdef@={&\hskip.5em\mathrel + {\vbox{\hrule width\minCDaw@\vskip3\ex@\hrule width + \minCDaw@}}\hskip.5em&}% + \atdef@|{\Big\Vert&&}% + \atdef@\vert{\Big\Vert&&}% + \def\pretend##1\haswidth##2{\setboxz@h{$\m@th\scriptstyle{##2}$}\hbox + to\wdz@{\hfill$\m@th\scriptstyle{##1}$\hfill}}% + \atdef@.{&&}% + \atdef@)##1)##2){\ampersand@ + \setboxz@h{$\m@th\ssize\;{##1}\;\;$}% + \setbox\tw@\hbox{$\m@th\ssize\;{##2}\;\;$}% + \setbox4=\hbox{$\m@th##2$}% + \ifCD@ + \global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi + \ifdim\wdz@>\bigaw@\global\bigaw@\wdz@\fi + \ifdim\wd\tw@>\bigaw@\global\bigaw@\wd\tw@\fi + \ifCD@\hskip.5em\fi + \ifdim\wd4 >\z@ + \mathrel{\mathop{\hbox to\bigaw@{\rightarrowfill}}\limits^{##1}_{##2}}% + \else\mathrel{\mathop{\hbox to\bigaw@{\rightarrowfill}}\limits^{##1}}\fi + \ifCD@\hskip.5em\fi + \ampersand@}% + \atdef@(##1(##2({\ampersand@\setboxz@h{$\m@th\ssize\;\;{##1}\;$}% + \setbox\tw@\hbox{$\m@th\ssize\;\;{##2}\;$}\setbox4=\hbox{$\m@th##2$}% + \ifCD@\global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi + \ifdim\wdz@>\bigaw@\global\bigaw@\wdz@\fi + \ifdim\wd\tw@>\bigaw@\global\bigaw@\wd\tw@\fi + \ifCD@\hskip.5em\fi + \ifdim\wd4 >\z@ + \mathrel{\mathop{\hbox to\bigaw@{\leftarrowfill}}\limits^{##1}_{##2}}\else + \mathrel{\mathop{\hbox to\bigaw@{\leftarrowfill}}\limits^{##1}}\fi + \ifCD@\hskip.5em\fi\ampersand@}% + \def\CD{\bgroup + \vspace@\relax\iffalse{\fi\let\ampersand@&\iffalse}\fi + \CD@true\vcenter\bgroup\Let@\tabskip\z@skip\baselineskip20\ex@ + \lineskip3\ex@\lineskiplimit3\ex@\halign\bgroup + &\hfill$\m@th####$\hfill\crcr} + \def\endCD{\crcr\egroup\egroup\egroup}% +} +\def\OCD{\bgroup + \DN@{\let\leftparens@}\expandafter\next@\csname\string @(\endcsname + \atdef@.{&}% + \atdef@)##1)##2){\options@true\begingroup\optioncodes@ + \L@{##1}\l@{##2}\leftparens@1,0)&}% + \atdef@>##1>##2>{\options@true\begingroup\optioncodes@ + \L@{##1}\l@{##2}\leftparens@1,0)&}% + \atdef@(##1(##2({\options@true\begingroup\optioncodes@ + \L@{##1}\l@{##2}\zero@ h\one@ e\leftparens@1,0)&}% + \atdef@<##1<##2<{\options@true\begingroup\optioncodes@ + \L@{##1}\l@{##2}\zero@ h\one@ e\leftparens@1,0)&}% + \atdef@ A##1A##2A{\options@true\begingroup\optioncodes@ + \L@{##1}\l@{##2}\leftparens@0,1)}% + \atdef@ V##1V##2V{\options@true\begingroup\optioncodes@ + \L@{##1}\l@{##2}\leftparens@0,-1)}% + \atdef@={\options@true\begingroup\optioncodes@ + \a@=\leftparens@1,0)&}% + \atdef@|{\options@true\begingroup\optioncodes@ + \a@=\leftparens@0,1)}% + \atdef@\vert{\options@true\begingroup\optioncodes@ + \a@=\leftparens@0,1)}% + \def\next@##1\endOCD{\CD@##1\endCD\egroup}% + \next@} +\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne + \ch@ck#1#4#2\allocationnumber=\count1#1 + \global#3#5=\allocationnumber + \wlog{\string#5=\string#2\the\allocationnumber}} +\catcode`\@=\active diff --git a/macros/lamstex/inputs/alignat.tex b/macros/lamstex/inputs/alignat.tex new file mode 100644 index 0000000000..4e23304c68 --- /dev/null +++ b/macros/lamstex/inputs/alignat.tex @@ -0,0 +1,103 @@ +\catcode`\@=11 +\def\alignedat#1{\null\,\vcenter\bgroup\doat@{#1}\vspace@\Let@ + \ifinany@\else\openup\jot\fi\ialign\bgroup\span\preamble@@\crcr} +\def\doat@#1{\toks@{\hfil\strut@$\m@th + \displaystyle{\the\hashtoks@}$&$\m@th\displaystyle + {{}\the\hashtoks@}$\hfil}% + \atcount@#1\relax\advance\atcount@\m@ne + \loop\ifnum\atcount@>\z@\toks@=\expandafter{\the\toks@&\hfil$\m@th + \displaystyle{\the\hashtoks@}$&$\m@th + \displaystyle{{}\the\hashtoks@}$\hfil}\advance\atcount@\m@ne\repeat + \edef\preamble@{\the\toks@}\edef\preamble@@{\preamble@}} +\let\endalignedat\endaligned +\def\alignat{\RIfMIfI@\DN@{\onlydmatherr@\alignat}\else + \DN@{\csname alignat \endcsname}\fi\else + \DN@{\onlydmatherr@\alignat}\fi\next@} +\expandafter\def\csname alignat \endcsname#1#2\endalignat + {\inany@true\xat@false + \def\tag{\global\tag@true + \count@#1\relax\multiply\count@\tw@\advance\count@\m@ne + \gdef\tag@{&}% + \loop\ifnum\count@>\and@\xdef\tag@{&\omit\tag@}% + \advance\count@\m@ne\repeat + \tag@\relax}% + \vspace@\allowdisplaybreak@\displaybreak@\intertext@ + \displ@y@\measuring@true\tag@CC\tag@C + \setbox\savealignat@\hbox{\noset@\unlabel@$\m@th\displaystyle\Let@ + \attag@{#1}\vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}% + \measuring@false + \Let@\attag@{#1}\tag@C\tag@CC + \tabskip\centering@\halign to\displaywidth + {\span\preamble@@\crcr#2\crcr\black@{\wd\savealignat@}}} +\Invalid@\endalignat +\def\xalignat{\RIfMIfI@ + \DN@{\onlydmatherr@\xalignat}\else + \DN@{\csname xalignat \endcsname}\fi\else + \DN@{\onlydmatherr@\xalignat}\fi\next@} +\expandafter\def\csname xalignat \endcsname#1#2\endxalignat + {\inany@true\xat@true + \def\tag{\global\tag@true + \count@#1\relax\multiply\count@\tw@\advance\count@\m@ne + \gdef\tag@{&}% + \loop\ifnum\count@>\and@\xdef\tag@{&\omit\tag@}% + \advance\count@\m@ne\repeat + \tag@\relax}% + \vspace@\allowdisplaybreak@\displaybreak@\intertext@ + \displ@y@\measuring@true\tag@CC\tag@C + \setbox\savealignat@\hbox{\noset@\unlabel@$\m@th\displaystyle\Let@ + \attag@{#1}\vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}% + \measuring@false\Let@\attag@{#1}\tag@C\tag@CC + \tabskip\centering@\halign to\displaywidth + {\span\preamble@@\crcr#2\crcr\black@{\wd\savealignat@}}} +\def\attag@#1{\let\Maketag@\maketag@\let\TAG@\Tag@ + \let\Prepost@\prepost@\let\Reprepost@\reprepost@ + \let\Tag@\relax\let\maketag@\relax + \let\prepost@\relax\let\reprepost@\relax + \ifmeasuring@ + \def\llap@##1{\setboxz@h{##1}\hbox to\tw@\wdz@{}}% + \def\rlap@##1{\setboxz@h{##1}\hbox to\tw@\wdz@{}}% + \else\let\llap@\llap\let\rlap@\rlap\fi + \toks@{\hfil\strut@ + $\m@th\displaystyle{\@lign\the\hashtoks@\prepost@}$% + \tabskip\z@skip\global\advance\and@\@ne& + $\m@th\displaystyle{{}\@lign\the\hashtoks@\prepost@}$\hfil + \ifxat@\tabskip\centering@\fi\global\advance\and@\@ne}% + \iftagsleft@ + \toks@@{\tabskip\centering@&\Tag@\kern-\displaywidth + \rlap@{\@lign\reprepost@\maketag@\the\hashtoks@\maketag@}% + \global\advance\and@\@ne\tabskip\displaywidth}\else + \toks@@{\tabskip\centering@&\Tag@\llap@{\@lign\reprepost@\maketag@ + \the\hashtoks@\maketag@}\global\advance\and@\@ne\tabskip\z@skip}\fi + \atcount@#1\relax\advance\atcount@\m@ne + \loop\ifnum\atcount@>\z@ + \toks@\expandafter{\the\toks@&\hfil$\m@th\displaystyle{\@lign + \the\hashtoks@\prepost@}$\global\advance\and@\@ne + \tabskip\z@skip + &$\m@th\displaystyle{{}\@lign\the\hashtoks@\prepost@}$\hfil\ifxat@ + \tabskip\centering@\fi\global\advance\and@\@ne}\advance\atcount@\m@ne + \repeat + \edef\preamble@{\the\toks@\the\toks@@}% + \edef\preamble@@{\preamble@}% + \let\maketag@\Maketag@\let\Tag@\TAG@ + \let\prepost@\Prepost@\let\reprepost@\Reprepost@} +\Invalid@\endxalignat +\def\xxalignat{\RIfMIfI@ + \DN@{\onlydmatherr@\xxalignat}\else\DN@{\csname xxalignat + \endcsname}\fi\else + \DN@{\onlydmatherr@\xxalignat}\fi\next@} +\expandafter\def\csname xxalignat \endcsname#1#2\endxxalignat{\inany@true + \vspace@\allowdisplaybreak@\displaybreak@\intertext@ + \displ@y\setbox\savealignat@\hbox{$\m@th\displaystyle\Let@ + \xxattag@{#1}\vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}% + \Let@\xxattag@{#1}\tabskip\z@skip\halign to\displaywidth + {\span\preamble@@\crcr#2\crcr\black@{\wd\savealignat@}}} +\def\xxattag@#1{\toks@{\tabskip\z@skip\hfil\strut@ + $\m@th\displaystyle{\the\hashtoks@}$&% + $\m@th\displaystyle{{}\the\hashtoks@}$\hfil\tabskip\centering@&}% + \atcount@#1\relax\advance\atcount@\m@ne\loop\ifnum\atcount@>\z@ + \toks@=\expandafter{\the\toks@&\hfil$\m@th\displaystyle{\the\hashtoks@}$% + \tabskip\z@skip&$\m@th\displaystyle{{}\the\hashtoks@}$\hfil + \tabskip\centering@}\advance\atcount@\m@ne\repeat + \edef\preamble@{\the\toks@\tabskip\z@skip}\edef\preamble@@{\preamble@}} +\Invalid@\endxxalignat +\catcode`\@=\active diff --git a/macros/lamstex/inputs/alignat.tox b/macros/lamstex/inputs/alignat.tox new file mode 100644 index 0000000000..461a80d5c2 --- /dev/null +++ b/macros/lamstex/inputs/alignat.tox @@ -0,0 +1,10 @@ +\catcode`\@=11 +\let\alignedat\undefined\let\doat@\relax\let\endalignedat\undefined +\let\alignat\undefined\expandafter\let\csname alignat \endcsname\relax +\let\endalignat\undefined\let\xalignat\undefined +\expandafter\let\csname xalignat \endcsname\relax\let\attag@\relax +\let\endxalignat\undefined\let\xxalignat\undefined +\expandafter\let\csname xxalignat \endcsname\relax\let\xxattag@\relax +\let\endxxalignat\undefined +\catcode`\@=\active + diff --git a/macros/lamstex/inputs/amstexl.tex b/macros/lamstex/inputs/amstexl.tex new file mode 100644 index 0000000000..c02d151179 --- /dev/null +++ b/macros/lamstex/inputs/amstexl.tex @@ -0,0 +1,1387 @@ +% AMSTEXL.TEX VERSION 2.0 +% Copyright (C) 1990, 1991 American Mathematical Society +% All rights reserved. +\catcode`\@=11 +\ifx\amstexloaded@\relax\catcode`\@=\active + \endinput\else\let\amstexloaded@\relax\fi +\def\W@{\immediate\write\sixt@@n} +\def\CR@{\W@{}\W@{AmS-TeX - Version 2.0L\space\space[LamS-TeX subset]}\W@{} +\W@{COPYRIGHT 1985, 1990 - AMERICAN MATHEMATICAL SOCIETY} +\W@{Use of this macro package is not restricted provided} +\W@{each use is acknowledged upon publication.}\W@{}} +\CR@ +\everyjob{\CR@} +\toksdef\toks@@=2 +\long\def\rightappend@#1\to#2{\toks@{\\{#1}}\toks@@\expandafter{#2}% + \xdef#2{\the\toks@@\the\toks@}\toks@{}\toks@@{}} +\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne + \ch@ck#1#4#2\allocationnumber=\count1#1 + \global#3#5=\allocationnumber} +\newcount\count@@ +\newcount\count@@@ +\def\FN@{\futurelet\next} +\def\DN@{\def\next@} +\def\DNii@{\def\nextii@} +\def\RIfM@{\relax\ifmmode} +\def\RIfMIfI@{\relax\ifmmode\ifinner} +\def\setboxz@h{\setbox\z@\hbox} +\def\wdz@{\wd\z@} +\def\boxz@{\box\z@} +\def\height{height} +\def\width{width} +\def\depth{depth} +\def\iterate{\body\expandafter\iterate\else\fi} +\newlinechar=`\^^J +\newhelp\defaulthelp@{Sorry, I already gave what help I could...^^J +Maybe you should try asking a human?^^J +An error might have occurred before I noticed any problems.^^J +``If all else fails, read the instructions.''} +\def\eat@#1{} +\def\space@.{\futurelet\space@\relax} +\space@. % +\newhelp\athelp@ +{Only certain combinations beginning with @ make sense to me.^^J +Perhaps you wanted \string\@ for a printed @?^^J +I've ignored the character or group after @.} +\def\atdef@#1{\expandafter\def\csname #1@at\endcsname} +\newhelp\defahelp@{If you typed \string\define\space cs instead of +\string\define\string\cs\space^^J +I've substituted an inaccessible control sequence so that your^^J +definition will be completed without mixing me up too badly.^^J +If you typed \string\define{\string\cs} the inaccessible control sequence^^J +was defined to be \string\cs, and the rest of your^^J +definition appears as input.} +\newhelp\defbhelp@{I've ignored your definition, because it might^^J +conflict with other uses that are important to me.} +\def\define{\FN@\define@} +\def\define@{\ifcat\noexpand\next\relax + \expandafter\define@@\else\errhelp\defahelp@ + \err@{\noexpand\define must be followed by a control + sequence}\expandafter\def\expandafter\nextii@\fi} +\def\undefined@@@@@@@@@@{} +\def\preloaded@@@@@@@@@@{} +\def\next@@@@@@@@@@{} +\def\define@@#1{\ifx#1\relax\errhelp\defbhelp@ + \err@{\noexpand#1is already defined}\DN@{\DNii@}\else + \expandafter\ifx\csname\expandafter\eat@\string + #1@@@@@@@@@@\endcsname\undefined@@@@@@@@@@\errhelp\defbhelp@ + \err@{\noexpand#1can't be defined}\DN@{\DNii@}\else + \expandafter\ifx\csname\expandafter\eat@\string#1\endcsname\relax + \global\let#1\undefined\DN@{\def#1}\else\errhelp\defbhelp@ + \err@{\noexpand#1is already defined}\DN@{\DNii@}\fi + \fi\fi\next@} +\let\redefine\def +\def\predefine#1#2{\let#1#2} +\def\undefine#1{\let#1\undefined} +\def\tie{\unskip\nobreak\ } +\let\graveaccent\` +\let\acuteaccent\' +\let\tildeaccent\~ +\let\hataccent\^ +\let\underscore\_ +\let\B\= +\let\D\. +\let\ic@\/ +\def\/{\unskip\ic@} +\def\textfonti{\the\textfont\@ne} +\def\t#1#2{{\edef\next@{\the\font}\textfonti\accent"7F \next@#1#2}} +\def~{\unskip\nobreak\ \ignorespaces} +\def\.{.\spacefactor\@m} +\atdef@;{\leavevmode\null;} +\atdef@:{\leavevmode\null:} +\atdef@?{\leavevmode\null?} +\def\@{\char64 } +\atdef@-{\leavevmode + \DN@{\ifx\next-\DN@-{\FN@\nextii@}\else + \DN@{\leavevmode\hbox{-}}\fi\next@}% + \DNii@{\ifx\next-\DN@-{\leavevmode\hbox{---}}\else + \DN@{\leavevmode\hbox{--}}\fi\next@}% + \FN@\next@} +\def\srdr@{\kern.16667em} +\def\drsr@{\kern.02778em} +\def\sldl@{\kern.02778em} +\def\dlsl@{\kern.16667em} +\def\textfontii{\the\textfont\tw@} +\def\lbrace@{\delimiter"4266308 } +\def\rbrace@{\delimiter"5267309 } +\def\{{\RIfM@\lbrace@\else{\textfontii f}\spacefactor\@m\fi} +\def\}{\RIfM@\rbrace@\else + \let\@sf\empty\ifhmode\edef\@sf{\spacefactor\the\spacefactor}\fi + {\textfontii g}\@sf\relax\fi} +\let\lbrace\{ +\let\rbrace\} +\def\AmSTeX{{\textfontii A}\kern-.1667em\lower.5ex\hbox + {\textfontii M}\kern-.125em{\textfontii S}-\TeX} +\def\vmodeerr@#1{\Err@{\noexpand#1not allowed between paragraphs}} +\def\mathmodeerr@#1{\Err@{\noexpand#1not allowed in math mode}} +\def\slash{\unskip/\penalty\exhyphenpenalty} +\newskip\saveskip@ +\def\dmatherr@#1{\Err@{\noexpand#1not allowed in display math mode}} +\def\nondmatherr@#1{\Err@{\noexpand#1not allowed in non-display math + mode}} +\def\onlydmatherr@#1{\Err@{\noexpand#1allowed only in display math mode}} +\def\nonmatherr@#1{\Err@{\noexpand#1allowed only in math mode}} +\def\mathbreak{\RIfMIfI@\break\else + \dmatherr@\mathbreak\fi\else\nonmatherr@\mathbreak\fi} +\def\nomathbreak{\RIfMIfI@\nobreak\else + \dmatherr@\nomathbreak\fi\else\nonmatherr@\nomathbreak\fi} +\def\allowmathbreak{\RIfMIfI@\allowbreak\else + \dmatherr@\allowmathbreak\fi\else\nonmatherr@\allowmathbreak\fi} +\def\pagebreak{\RIfM@ + \ifinner\nondmatherr@\pagebreak\else\postdisplaypenalty-\@M\fi + \else\ifvmode\removelastskip\break\else\vadjust{\break}\fi\fi} +\def\nopagebreak{\RIfM@ + \ifinner\nondmatherr@\nopagebreak\else\postdisplaypenalty\@M\fi + \else\ifvmode\nobreak\else\vadjust{\nobreak}\fi\fi} +\def\nonvmodeerr@#1{\Err@{\noexpand#1not allowed within a paragraph + or in math}} +\def\vnonvmode@#1#2{\DNii@{\ifx\next\par\DN@{#1}\else + \DN@{#2}\fi\next@}% + \ifvmode\DN@{#1}\else + \DN@{\FN@\nextii@}\fi\next@} +\def\newpage{\vnonvmode@{\vfill\break}{\nonvmodeerr@\newpage}} +\def\smallpagebreak{\vnonvmode@\smallbreak{\nonvmodeerr@\smallpagebreak}} +\def\medpagebreak{\vnonvmode@\medbreak{\nonvmodeerr@\medpagebreak}} +\def\bigpagebreak{\vnonvmode@\bigbreak{\nonvmodeerr@\bigpagebreak}} +\def\NoBlackBoxes{\global\overfullrule\z@} +\def\BlackBoxes{\global\overfullrule5\p@} +\def\Invalid@#1{\def#1{\Err@{\Invalid@@\string#1}}} +\def\Invalid@@{Invalid use of } +\def\newcodes@{\catcode`\\=12 \catcode`\{=12 \catcode`\}=12 \catcode`\#=12 + \catcode`\%=12\relax} +\def\oldcodes@{\catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\#=6 + \catcode`\%=14\relax} +\def\comment{\newcodes@\endlinechar=10 \comment@} +{\lccode`\0=`\\ +\lowercase{\gdef\comment@#1^^J{\comment@@#10endcomment\comment@@@}% +\gdef\comment@@#10endcomment{\FN@\comment@@@}% +\gdef\comment@@@#1\comment@@@{\ifx\next\comment@@@\let\next@\comment@ + \else\def\next@{\oldcodes@\endlinechar=`\^^M\relax}% + \fi\next@}}} +\def\pr@m@s{\ifx'\next\DN@##1{\prim@s}\else\let\next@\egroup\fi\next@} +\def\prime{{\null\prime@\null}} +\mathchardef\prime@="0230 +\let\dsize\displaystyle +\let\tsize\textstyle +\let\ssize\scriptstyle +\let\sssize\scriptscriptstyle +\def\,{\RIfM@\mskip\thinmuskip\relax\else\kern.16667em\fi} +\def\!{\RIfM@\mskip-\thinmuskip\relax\else\kern-.16667em\fi} +\let\thinspace\, +\let\negthinspace\! +\def\medspace{\RIfM@\mskip\medmuskip\relax\else\kern.222222em\fi} +\def\negmedspace{\RIfM@\mskip-\medmuskip\relax\else\kern-.222222em\fi} +\def\thickspace{\RIfM@\mskip\thickmuskip\relax\else\kern.27777em\fi} +\let\;\thickspace +\def\negthickspace{\RIfM@\mskip-\thickmuskip\relax\else + \kern-.27777em\fi} +\atdef@,{\RIfM@\mskip.1\thinmuskip\else\leavevmode\null,\fi} +\atdef@!{\RIfM@\mskip-.1\thinmuskip\else\leavevmode\null!\fi} +\atdef@.{\leavevmode.\spacefactor3000 } +\def\and{\DOTSB\;\mathchar"3026 \;} +\def\implies{\DOTSB\;\Longrightarrow\;} +\def\impliedby{\DOTSB\;\Longleftarrow\;} +\def\frac#1#2{{#1\over#2}} +\def\dfrac#1#2{{\displaystyle{#1\over#2}}} +\def\tfrac#1#2{{\textstyle{#1\over#2}}} +\newdimen\ex@ +\ex@.2326ex +\Invalid@\thickness +\def\thickfrac{\DN@{\ifx\next\thickness\let\next@\nextii@\else + \DN@{\nextii@\thickness1}\fi\next@}% + \DNii@\thickness##1##2##3{{##2\above##1\ex@##3}}% + \FN@\next@} +\def\fracwithdelims#1#2#3#4{{#3\overwithdelims#1#2#4}} +\def\thickfracwithdelims#1#2{\def\ldelim@{#1}\def\rdelim@{#2}% + \DN@{\ifx\next\thickness\let\next@\nextii@\else + \DN@{\nextii@\thickness1}\fi\next@}% + \DNii@\thickness##1##2##3{{##2\abovewithdelims + \ldelim@\rdelim@##1\ex@##3}}% + \FN@\next@} +\def\binom#1#2{{#1\choose#2}} +\def\dbinom#1#2{{\displaystyle{#1\choose#2}}} +\def\tbinom#1#2{{\textstyle{#1\choose#2}}} +\def\:{\nobreak\hskip.1111em\mathpunct{}\nonscript\mkern-\thinmuskip{:}\hskip + .3333emplus.0555em\relax} +\def\snug{\unskip\kern-\mathsurround} +\def\topsmash{\top@true\bot@false\smash@} +\def\botsmash{\top@false\bot@true\smash@} +\newif\iftop@ +\newif\ifbot@ +\def\smash{\top@true\bot@true\smash@} +\def\smash@{\RIfM@\expandafter\mathpalette\expandafter\mathsm@sh\else + \expandafter\makesm@sh\fi} +\def\finsm@sh{\iftop@\ht\z@\z@\fi\ifbot@\dp\z@\z@\fi\leavevmode\boxz@} +\def\LimitsOnSums{\global\let\slimits@\displaylimits} +\def\NoLimitsOnSums{\global\let\slimits@\nolimits} +\LimitsOnSums +\mathchardef\coprod@="1360 \def\coprod{\DOTSB\coprod@\slimits@} +\mathchardef\bigvee@="1357 \def\bigvee{\DOTSB\bigvee@\slimits@} +\mathchardef\bigwedge@="1356 \def\bigwedge{\DOTSB\bigwedge@\slimits@} +\mathchardef\biguplus@="1355 \def\biguplus{\DOTSB\biguplus@\slimits@} +\mathchardef\bigcap@="1354 \def\bigcap{\DOTSB\bigcap@\slimits@} +\mathchardef\bigcup@="1353 \def\bigcup{\DOTSB\bigcup@\slimits@} +\mathchardef\prod@="1351 \def\prod{\DOTSB\prod@\slimits@} +\mathchardef\sum@="1350 \def\sum{\DOTSB\sum@\slimits@} +\mathchardef\bigotimes@="134E \def\bigotimes{\DOTSB\bigotimes@\slimits@} +\mathchardef\bigoplus@="134C \def\bigoplus{\DOTSB\bigoplus@\slimits@} +\mathchardef\bigodot@="134A \def\bigodot{\DOTSB\bigodot@\slimits@} +\mathchardef\bigsqcup@="1346 \def\bigsqcup{\DOTSB\bigsqcup@\slimits@} +\def\LimitsOnInts{\global\let\ilimits@\displaylimits} +\def\NoLimitsOnInts{\global\let\ilimits@\nolimits} +\NoLimitsOnInts +\def\int{\DOTSI\intop\ilimits@} +\def\oint{\DOTSI\ointop\ilimits@} +\def\intic@{\mathchoice{\hskip.5em}{\hskip.4em}{\hskip.4em}{\hskip.4em}} +\def\negintic@{\mathchoice + {\hskip-.5em}{\hskip-.4em}{\hskip-.4em}{\hskip-.4em}} +\def\intkern@{\mathchoice{\!\!\!}{\!\!}{\!\!}{\!\!}} +\def\intdots@{\mathchoice{\plaincdots@} + {{\cdotp}\mkern1.5mu{\cdotp}\mkern1.5mu{\cdotp}} + {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}} + {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}} +\newcount\intno@ +\def\iint{\DOTSI\intno@\tw@\FN@\ints@} +\def\iiint{\DOTSI\intno@\thr@@\FN@\ints@} +\def\iiiint{\DOTSI\intno@4 \FN@\ints@} +\def\idotsint{\DOTSI\intno@\z@\FN@\ints@} +\def\ints@{\findlimits@\ints@@} +\newif\iflimtoken@ +\newif\iflimits@ +\def\findlimits@{\limtoken@true\ifx\next\limits\limits@true + \else\ifx\next\nolimits\limits@false\else + \limtoken@false\ifx\ilimits@\nolimits\limits@false\else + \ifinner\limits@false\else\limits@true\fi\fi\fi\fi} +\def\multint@{\int\ifnum\intno@=\z@\intdots@ + \else\intkern@\fi + \ifnum\intno@>\tw@\int\intkern@\fi + \ifnum\intno@>\thr@@\int\intkern@\fi + \int} +\def\multintlimits@{\intop\ifnum\intno@=\z@\intdots@\else\intkern@\fi + \ifnum\intno@>\tw@\intop\intkern@\fi + \ifnum\intno@>\thr@@\intop\intkern@\fi\intop} +\def\ints@@{\iflimtoken@ + \def\ints@@@{\iflimits@\negintic@\mathop{\intic@\multintlimits@}\limits + \else\multint@\nolimits\fi + \eat@} + \else + \def\ints@@@{\iflimits@\negintic@ + \mathop{\intic@\multintlimits@}\limits\else + \multint@\nolimits\fi}\fi\ints@@@} +\def\LimitsOnNames{\global\let\nlimits@\displaylimits} +\def\NoLimitsOnNames{\global\let\nlimits@\nolimits@} +\LimitsOnNames +\def\nolimits@{\DN@{\ifx\next\limits\DN@\limits{\nolimits}\else + \let\next@\nolimits\fi\next@}% + \FN@\next@} +\def\newmcodes@{\mathcode`\'="0027 \mathcode`\*="002A \mathcode`\.="613A + \mathcode`\-="002D \mathcode`\/="002F \mathcode`\:="603A } +\def\operatorname#1{\mathop{\newmcodes@\kern\z@\fam\z@#1}\nolimits@} +\def\operatornamewithlimits#1{\mathop{\newmcodes@\kern\z@\fam\z@#1}\nlimits@} +\def\qopname@#1{\mathop{\fam\z@#1}\nolimits@} +\def\qopnamewl@#1{\mathop{\fam\z@#1}\nlimits@} +\def\arccos{\qopname@{arccos}} +\def\arcsin{\qopname@{arcsin}} +\def\arctan{\qopname@{arctan}} +\def\arg{\qopname@{arg}} +\def\cos{\qopname@{cos}} +\def\cosh{\qopname@{cosh}} +\def\cot{\qopname@{cot}} +\def\coth{\qopname@{coth}} +\def\csc{\qopname@{csc}} +\def\deg{\qopname@{deg}} +\def\det{\qopnamewl@{det}} +\def\dim{\qopname@{dim}} +\def\exp{\qopname@{exp}} +\def\gcd{\qopnamewl@{gcd}} +\def\hom{\qopname@{hom}} +\def\inf{\qopnamewl@{inf}} +\def\injlim{\qopnamewl@{inj\,lim}} +\def\ker{\qopname@{ker}} +\def\lg{\qopname@{lg}} +\def\lim{\qopnamewl@{lim}} +\def\liminf{\qopnamewl@{lim\,inf}} +\def\limsup{\qopnamewl@{lim\,sup}} +\def\ln{\qopname@{ln}} +\def\log{\qopname@{log}} +\def\max{\qopnamewl@{max}} +\def\min{\qopnamewl@{min}} +\def\Pr{\qopnamewl@{Pr}} +\def\projlim{\qopnamewl@{proj\,lim}} +\def\sec{\qopname@{sec}} +\def\sin{\qopname@{sin}} +\def\sinh{\qopname@{sinh}} +\def\sup{\qopnamewl@{sup}} +\def\tan{\qopname@{tan}} +\def\tanh{\qopname@{tanh}} +\def\varinjlim{\mathop{\vtop{\ialign{##\crcr + \hfil\rm lim\hfil\crcr\noalign{\nointerlineskip}\rightarrowfill\crcr + \noalign{\nointerlineskip\kern-\ex@}\crcr}}}} +\def\varprojlim{\mathop{\vtop{\ialign{##\crcr + \hfil\rm lim\hfil\crcr\noalign{\nointerlineskip}\leftarrowfill\crcr + \noalign{\nointerlineskip\kern-\ex@}\crcr}}}} +\def\varliminf{\mathop{\underline{\vrule\height\z@\depth.2ex\width\z@ + \hbox{\rm lim}}}} +\def\varlimsup{\mathop{\overline{\hbox{\rm lim}}}} +\newdimen\buffer@ +\buffer@\fontdimen13 \tenex +\newdimen\buffer +\buffer\buffer@ +\def\ChangeBuffer#1{\fontdimen13 \tenex#1\relax + \global\buffer\fontdimen13 \tenex} +\def\ResetBuffer{\fontdimen13 \tenex\buffer@\global\buffer\buffer@} +\def\shave#1{\mathop{\hbox{$\m@th\fontdimen13 \tenex\z@ + \displaystyle{#1}$}}\fontdimen13 \tenex\buffer} +\def\topshave#1{\mathop{\topsmash{\displaystyle{#1}}\vphantom{\shave{#1}}}} +\def\botshave#1{\mathop{\botsmash{\displaystyle{#1}}\vphantom{\shave{#1}}}} +\Invalid@\\ +\def\Let@{\relax\iffalse{\fi\let\\\cr\iffalse}\fi} +\Invalid@\vspace +\def\vspace@{\def\vspace##1{\crcr\noalign{\vskip##1\relax}}} +\def\multilimits@{\bgroup\vspace@\Let@ + \baselineskip\fontdimen10 \scriptfont\tw@ + \advance\baselineskip\fontdimen12 \scriptfont\tw@ + \lineskip\thr@@\fontdimen8 \scriptfont\thr@@ + \lineskiplimit\lineskip + \vbox\bgroup\ialign\bgroup\hfil$\m@th\scriptstyle{##}$\hfil\crcr} +\def\Sb{_\multilimits@} +\def\endSb{\crcr\egroup\egroup\egroup} +\def\Sp{^\multilimits@} +\let\endSp\endSb +\def\spreadlines#1{\RIfMIfI@\onlydmatherr@\spreadlines\else + \openup#1\relax\fi\else\onlydmatherr@\spreadlines\fi} +\def\Mathstrut@{\copy\Mathstrutbox@} +\newbox\Mathstrutbox@ +\setbox\Mathstrutbox@\null +\setbox\z@\hbox{$\m@th($} +\ht\Mathstrutbox@\ht\z@ +\dp\Mathstrutbox@\dp\z@ +\newdimen\spreadmlines@ +\def\spreadmatrixlines#1{\RIfMIfI@ + \onlydmatherr@\spreadmatrixlines\else + \spreadmlines@#1\relax\fi\else\onlydmatherr@\spreadmatrixlines\fi} +\def\matrix{\null\,\vcenter\bgroup\Let@\vspace@ + \normalbaselines\openup\spreadmlines@\ialign + \bgroup\hfil$\m@th##$\hfil&&\quad\hfil$\m@th##$\hfil\crcr + \Mathstrut@\crcr\noalign{\kern-\baselineskip}} +\def\endmatrix{\crcr\Mathstrut@\crcr\noalign{\kern-\baselineskip}\egroup + \egroup\,} +\def\format{\crcr\egroup\iffalse{\fi\ifnum`}=0 \fi\format@} +\newtoks\hashtoks@ +\hashtoks@{#} +\def\format@#1\\{\def\preamble@{#1}% + \def\l{$\m@th\the\hashtoks@$\hfil}% + \def\c{\hfil$\m@th\the\hashtoks@$\hfil}% + \def\r{\hfil$\m@th\the\hashtoks@$}% + \edef\Preamble@{\preamble@}\ifnum`{=0 \fi\iffalse}\fi + \ialign\bgroup\span\Preamble@\crcr} +\def\smallmatrix{\null\,\vcenter\bgroup\vspace@\Let@ + \baselineskip9\ex@\lineskip\ex@ + \ialign\bgroup\hfil$\m@th\scriptstyle{##}$\hfil&&\thickspace\hfil + $\m@th\scriptstyle{##}$\hfil\crcr} +\def\endsmallmatrix{\crcr\egroup\egroup\,} +\def\pmatrix{\left(\matrix} +\def\endpmatrix{\endmatrix\right)} +\def\bmatrix{\left[\matrix} +\def\endbmatrix{\endmatrix\right]} +\def\vmatrix{\left|\matrix} +\def\endvmatrix{\endmatrix\right|} +\def\Vmatrix{\left\|\matrix} +\def\endVmatrix{\endmatrix\right\|} +\def\hdots{\mathinner{\ldotp\ldotp\ldotp}} +\newmuskip\dotsspace@ +\dotsspace@1.5mu +\def\strip@#1 {#1} +\def\spacehdots#1\for#2{\multispan{#2}\xleaders + \hbox{$\m@th\mkern\strip@#1 \dotsspace@.\mkern\strip@#1 \dotsspace@$}\hfill} +\def\hdotsfor#1{\spacehdots\@ne\for{#1}} +\def\multispan@#1{\omit\mscount#1\unskip\loop\ifnum\mscount>\@ne\sp@n\repeat} +\def\spaceinnerhdots#1\for#2\after#3{\multispan@{\strip@#2 }#3\xleaders + \hbox{$\m@th\mkern\strip@#1 \dotsspace@.\mkern\strip@#1 \dotsspace@$}\hfill} +\def\innerhdotsfor#1\after#2{\spaceinnerhdots\@ne\for#1\after{#2}} +\def\cases{\bgroup\spreadmlines@\jot\left\{\,\matrix\format\l&\quad\l\\} +\def\endcases{\endmatrix\right.\egroup} +\newif\ifinany@ +\newif\ifinalign@ +\newif\ifingather@ +\def\strut@{\copy\strutbox@} +\newbox\strutbox@ +\setbox\strutbox@\hbox{\vrule\height8\p@\depth3\p@\width\z@} +\def\topaligned{\null\,\vtop\aligned@} +\def\botaligned{\null\,\vbox\aligned@} +\def\aligned{\null\,\vcenter\aligned@} +\def\aligned@{\bgroup\vspace@\Let@ + \ifinany@\else\openup\jot\fi\ialign + \bgroup\hfil\strut@$\m@th\displaystyle{##}$& + $\m@th\displaystyle{{}##}$\hfil\crcr} +\def\endaligned{\crcr\egroup\egroup} +\let\endtopaligned\endaligned +\let\endbotaligned\endaligned +\def\alignedat#1{\null\,\vcenter\bgroup\doat@{#1}\vspace@\Let@ + \ifinany@\else\openup\jot\fi\ialign\bgroup\span\preamble@@\crcr} +\newcount\atcount@ +\def\doat@#1{\toks@{\hfil\strut@$\m@th + \displaystyle{\the\hashtoks@}$&$\m@th\displaystyle + {{}\the\hashtoks@}$\hfil}% + \atcount@#1\relax\advance\atcount@\m@ne + \loop\ifnum\atcount@>\z@\toks@=\expandafter{\the\toks@&\hfil$\m@th + \displaystyle{\the\hashtoks@}$&$\m@th + \displaystyle{{}\the\hashtoks@}$\hfil}\advance\atcount@\m@ne\repeat + \edef\preamble@{\the\toks@}\edef\preamble@@{\preamble@}} +\let\endalignedat\endaligned +\def\gathered{\null\,\vcenter\bgroup\vspace@\Let@ + \ifinany@\else\openup\jot\fi\ialign + \bgroup\hfil\strut@$\m@th\displaystyle{##}$\hfil\crcr} +\def\endgathered{\crcr\egroup\egroup} +\newif\iftagsleft@ +\def\TagsOnLeft{\global\tagsleft@true} +\def\TagsOnRight{\global\tagsleft@false} +\TagsOnLeft +\newif\ifmathtags@ +\def\TagsAsMath{\global\mathtags@true} +\def\TagsAsText{\global\mathtags@false} +\TagsAsText +\def\tag#1$${\iftagsleft@\leqno\else\eqno\fi\maketag@#1\maketag@$$} +\interdisplaylinepenalty\@M +\def\allowdisplaybreaks{\RIfMIfI@ + \onlydmatherr@\allowdisplaybreaks\else + \interdisplaylinepenalty\z@\fi\else\onlydmatherr@\allowdisplaybreaks\fi} +\Invalid@\allowdisplaybreak +\Invalid@\displaybreak +\Invalid@\intertext +\def\allowdisplaybreak@{\def\allowdisplaybreak{\crcr\noalign{\allowbreak}}} +\def\displaybreak@{\def\displaybreak{\crcr\noalign{\break}}} +\def\intertext@{\def\intertext##1{\crcr\noalign{\vskip\belowdisplayskip + \vbox{\normalbaselines\noindent##1}\vskip\abovedisplayskip}}} +\newskip\centering@ +\centering@\z@ plus\@m\p@ +\def\align{\relax\ifingather@\DN@{\csname align (in + \expandafter\eat@\string\\gather)\endcsname}\else + \ifmmode\ifinner\DN@{\onlydmatherr@\align}\else + \let\next@\align@\fi + \else\DN@{\onlydmatherr@\align}\fi\fi\next@} +\newhelp\andhelp@ +{An extra & here is so disastrous that you should probably exit^^J +and fix things up.} +\newif\iftag@ +\newcount\and@ +\def\Tag@{\iftag@\else\errhelp\andhelp@\err@{Extra & on this line}\fi} +\newdimen\lwidth@ +\newdimen\rwidth@ +\newdimen\maxlwidth@ +\newdimen\maxrwidth@ +\newdimen\totwidth@ +\def\displ@y@{\global\dt@ptrue\openup\jot + \everycr{\noalign{\global\tag@false\global\and@\z@\ifdt@p\global\dt@pfalse + \vskip-\lineskiplimit\vskip\normallineskiplimit\else + \penalty\interdisplaylinepenalty\fi}}} +\def\black@#1{\noalign{\ifdim#1>\displaywidth + \dimen@\prevdepth\nointerlineskip + \vskip-\ht\strutbox@\vskip-\dp\strutbox@ + \vbox{\noindent\hbox to#1{\strut@\hfill}}% + \prevdepth\dimen@ + \fi}} +\newdimen\lineht@ +\expandafter\def\csname align (in \expandafter\eat@\string\\gather)\endcsname + #1\endalign{\vcenter{\align@#1\endalign}} +\Invalid@\endalign +\newif\ifxat@ +\def\alignat{\RIfMIfI@\DN@{\onlydmatherr@\alignat}\else + \DN@{\csname alignat \endcsname}\fi\else + \DN@{\onlydmatherr@\alignat}\fi\next@} +\newif\ifmeasuring@ +\newbox\savealignat@ +\Invalid@\endalignat +\def\xalignat{\RIfMIfI@ + \DN@{\onlydmatherr@\xalignat}\else + \DN@{\csname xalignat \endcsname}\fi\else + \DN@{\onlydmatherr@\xalignat}\fi\next@} +\Invalid@\endxalignat +\def\xxalignat{\RIfMIfI@ + \DN@{\onlydmatherr@\xxalignat}\else\DN@{\csname xxalignat + \endcsname}\fi\else + \DN@{\onlydmatherr@\xxalignat}\fi\next@} +\expandafter\def\csname xxalignat \endcsname#1#2\endxxalignat{\inany@true + \vspace@\allowdisplaybreak@\displaybreak@\intertext@ + \displ@y\setbox\savealignat@\hbox{$\m@th\displaystyle\Let@ + \xxattag@{#1}\vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}% + \Let@\xxattag@{#1}\tabskip\z@skip\halign to\displaywidth + {\span\preamble@@\crcr#2\crcr\black@{\wd\savealignat@}}} +\def\xxattag@#1{\toks@{\tabskip\z@skip\hfil\strut@ + $\m@th\displaystyle{\the\hashtoks@}$&% + $\m@th\displaystyle{{}\the\hashtoks@}$\hfil\tabskip\centering@&}% + \atcount@#1\relax\advance\atcount@\m@ne\loop\ifnum\atcount@>\z@ + \toks@=\expandafter{\the\toks@&\hfil$\m@th\displaystyle{\the\hashtoks@}$% + \tabskip\z@skip&$\m@th\displaystyle{{}\the\hashtoks@}$\hfil + \tabskip\centering@}\advance\atcount@\m@ne\repeat + \edef\preamble@{\the\toks@\tabskip\z@skip}\edef\preamble@@{\preamble@}} +\Invalid@\endxxalignat +\newdimen\gwidth@ +\newdimen\gmaxwidth@ +\def\gmeasure@#1\endgather{\global\gwidth@\z@\global\gmaxwidth@\z@ + \setbox\z@\vbox{\Let@ + \halign{\setboxz@h{$\m@th\displaystyle{##}$}\global\gwidth@\wdz@ + \ifdim\gwidth@>\gmaxwidth@\global\gmaxwidth@\gwidth@\fi + &\eat@{##}\crcr#1\crcr}}} +\expandafter\def\csname gather \space\endcsname#1\endgather + {\gmeasure@#1\endgather\tabskip\centering@ + \halign to\displaywidth{\hfil\strut@\setboxz@h{$\m@th\displaystyle{##}$}% + \global\gwidth@\wdz@\boxz@\hfil& + \setboxz@h{\strut@{\maketag@##\maketag@}}% + \dimen@\displaywidth\advance\dimen@-\gwidth@ + \ifdim\dimen@>\tw@\wdz@\llap{\boxz@}\else + \llap{\vtop{\normalbaselines\null\boxz@}}\fi + \tabskip\z@skip\crcr#1\crcr\black@\gmaxwidth@}} +\newdimen\glineht@ +\expandafter\def\csname gather \endcsname#1\endgather{\gmeasure@#1\endgather + \ifdim\gmaxwidth@>\displaywidth\let\gdisplaywidth@\gmaxwidth@\else + \let\gdisplaywidth@\displaywidth\fi\tabskip\centering@\halign to\displaywidth + {\hfil\strut@\setboxz@h{$\m@th\displaystyle{##}$}% + \global\gwidth@\wdz@\global\glineht@\ht\z@\boxz@\hfil&\kern-\gdisplaywidth@ + \setboxz@h{\strut@{\maketag@##\maketag@}}% + \dimen@\displaywidth\advance\dimen@-\gwidth@ + \ifdim\dimen@>\tw@\wdz@\rlap{\boxz@}\else + \rlap{\vbox{\normalbaselines\boxz@\vbox to\glineht@{}}}\fi + \tabskip\gdisplaywidth@\crcr#1\crcr\black@\gmaxwidth@}} +\newif\ifctagsplit@ +\def\CenteredTagsOnSplits{\global\ctagsplit@true} +\def\TopOrBottomTagsOnSplits{\global\ctagsplit@false} +\TopOrBottomTagsOnSplits +\def\split{\relax\ifinany@\let\next@\insplit@\else + \ifmmode\ifinner\def\next@{\onlydmatherr@\split}\else + \let\next@\outsplit@\fi\else + \def\next@{\onlydmatherr@\split}\fi\fi\next@} +\def\insplit@{\global\setbox9=\vbox\bgroup\vspace@\Let@\ialign\bgroup + \hfil\strut@$\m@th\displaystyle{##}$&$\m@th\displaystyle{{}##}$\hfill\crcr} +\def\endsplit{\crcr\egroup\egroup\iftagsleft@\expandafter\lendsplit@\else + \expandafter\rendsplit@\fi} +\def\rendsplit@{\global\setbox\@ne\vbox + {\unvcopy9 \global\setbox\thr@@\lastbox\unskip}% + \setboxz@h{\unhcopy\thr@@\unskip\global\setbox\thr@@\lastbox + \unskip\global\setbox5=\lastbox}% + \global\setbox7=\hbox{\unhbox\thr@@\unskip}% + \ifinalign@\ifctagsplit@ + \gdef\split@{\hbox to\wd5 {}& + \vcenter{\vbox{\moveleft\wd5 \box9}}}% + \else\gdef\split@{&\vbox{\moveleft\wd5 \box\@ne}\crcr + \box5 &\box7}\fi + \else + \ifctagsplit@\gdef\split@{\vcenter{\box9}}\else + \gdef\split@{\box\@ne\crcr\hbox{\box\thr@@\box7}}\fi + \fi + \split@} +\def\lendsplit@{\global\setbox\@ne\vtop{\unvcopy9}% + \setbox\z@\vbox{\unvcopy9 \global\setbox\thr@@\lastbox}% + \setboxz@h{\unhcopy\thr@@\unskip\setbox\z@\lastbox + \unskip\global\setbox\thr@@\lastbox}% + \ifinalign@\ifctagsplit@ + \gdef\split@{\hbox to\wd\thr@@{}& + \vcenter{\vbox{\moveleft\wd\thr@@\box\@ne}}}% + \else + \gdef\split@{\hbox to\wd\thr@@{}&\vbox{\moveleft\wd\thr@@\box\@ne}}\fi + \else + \ifctagsplit@\gdef\split@{\vcenter{\box\@ne}}\else + \gdef\split@{\box\@ne}\fi + \fi\split@} +\def\outsplit@#1$${\align\insplit@#1\endalign$$} +\newdimen\multlinegap@ +\multlinegap@1em +\newdimen\multlinetaggap@ +\multlinetaggap@1em +\def\MultlineGap#1{\global\multlinegap@#1\relax} +\def\multlinegap#1{\RIfMIfI@\onlydmatherr@\multlinegap\else + \multlinegap@#1\relax\fi\else\onlydmatherr@\multlinegap\fi} +\def\nomultlinegap{\multlinegap{\z@}} +\def\multline{\RIfMIfI@ + \DN@{\onlydmatherr@\multline}\else + \DN@{\multline@}\fi\else + \DN@{\onlydmatherr@\multline}\fi\next@} +\newif\iftagin@ +\def\multline@#1$${\inany@true\vspace@\allowdisplaybreak@\displaybreak@ + \tagin@{#1}\iftagsleft@\DN@{\multline@l#1$$}\else + \DN@{\multline@r#1$$}\fi\next@} +\newdimen\mwidth@ +\def\rmmeasure@#1\endmultline{% + \def\shoveleft##1{##1}\def\shoveright##1{##1}% + \setbox\z@\vbox{\Let@\halign{\setboxz@h + {$\m@th\@lign\displaystyle{}##$}\global\mwidth@\wdz@ + \crcr#1\crcr}}} +\newdimen\mlineht@ +\newif\ifzerocr@ +\newif\ifonecr@ +\def\lmmeasure@#1\endmultline{\global\zerocr@true\global\onecr@false + \everycr{\noalign{\ifonecr@\global\onecr@false\fi + \ifzerocr@\global\zerocr@false\global\onecr@true\fi}}% + \def\shoveleft##1{##1}\def\shoveright##1{##1}% + \setbox\z@\vbox{\Let@\halign{\setboxz@h + {$\m@th\@lign\displaystyle{}##$}\ifonecr@\global\mwidth@\wdz@ + \global\mlineht@\ht\z@\fi\crcr#1\crcr}}} +\newbox\mtagbox@ +\newdimen\ltwidth@ +\newdimen\rtwidth@ +\def\multline@l#1$${\iftagin@\DN@{\lmultline@@#1$$}\else + \DN@{\setbox\mtagbox@\null\ltwidth@\z@\rtwidth@\z@ + \lmultline@@@#1$$}\fi\next@} +\def\lmultline@@#1\endmultline\tag#2$${% + \setbox\mtagbox@\hbox{\maketag@#2\maketag@}% + \lmmeasure@#1\endmultline\dimen@\mwidth@\advance\dimen@\wd\mtagbox@ + \advance\dimen@\multlinetaggap@ + \ifdim\dimen@>\displaywidth\ltwidth@\z@\else\ltwidth@\wd\mtagbox@\fi + \lmultline@@@#1\endmultline$$} +\def\lmultline@@@{\displ@y + \def\shoveright##1{##1\hfilneg\hskip\multlinegap@}% + \def\shoveleft##1{\setboxz@h{$\m@th\displaystyle{}##1$}% + \setbox\tw@\hbox{$\m@th\displaystyle##1$}% + \hfilneg + \iftagin@ + \ifdim\ltwidth@>\z@\hskip\ltwidth@\hskip\multlinetaggap@\fi + \else\hskip\multlinegap@\fi\hskip.5\wd\tw@\hskip-.5\wdz@##1}% + \halign\bgroup\Let@\hbox to\displaywidth + {\strut@$\m@th\displaystyle\hfil{}##\hfil$}\crcr + \hfilneg + \iftagin@ + \ifdim\ltwidth@>\z@ + \box\mtagbox@\hskip\multlinetaggap@ + \else + \rlap{\vbox{\normalbaselines\hbox{\strut@\box\mtagbox@}% + \vbox to\mlineht@{}}}\fi + \else\hskip\multlinegap@\fi} +\def\multline@r#1$${\iftagin@\DN@{\rmultline@@#1$$}\else + \DN@{\setbox\mtagbox@\null\ltwidth@\z@\rtwidth@\z@ + \rmultline@@@#1$$}\fi\next@} +\def\rmultline@@#1\endmultline\tag#2$${\ltwidth@\z@ + \setbox\mtagbox@\hbox{\maketag@#2\maketag@}% + \rmmeasure@#1\endmultline\dimen@\mwidth@\advance\dimen@\wd\mtagbox@ + \advance\dimen@\multlinetaggap@ + \ifdim\dimen@>\displaywidth\rtwidth@\z@\else\rtwidth@\wd\mtagbox@\fi + \rmultline@@@#1\endmultline$$} +\def\rmultline@@@{\displ@y + \def\shoveright##1{##1\hfilneg\iftagin@\ifdim\rtwidth@>\z@ + \hskip\rtwidth@\hskip\multlinetaggap@\fi\else\hskip\multlinegap@\fi}% + \def\shoveleft##1{\setboxz@h{$\m@th\displaystyle{}##1$}% + \setbox\tw@\hbox{$\m@th\displaystyle##1$}% + \hfilneg\hskip\multlinegap@\hskip.5\wd\tw@\hskip-.5\wdz@##1}% + \halign\bgroup\Let@\hbox to\displaywidth + {\strut@$\m@th\displaystyle\hfil{}##\hfil$}\crcr + \hfilneg\hskip\multlinegap@} +\def\endmultline{\iftagsleft@\expandafter\lendmultline@\else + \expandafter\rendmultline@\fi} +\def\lendmultline@{\hfilneg\hskip\multlinegap@\crcr\egroup} +\def\rendmultline@{\iftagin@ + \ifdim\rtwidth@>\z@ + \hskip\multlinetaggap@\box\mtagbox@ + \else\llap{\vtop{\normalbaselines\null\hbox{\strut@\box\mtagbox@}}}\fi + \else\hskip\multlinegap@\fi + \hfilneg\crcr\egroup} +\def\bmod{\mskip-\medmuskip\mkern5mu\mathbin{\fam\z@ mod}\penalty900 + \mkern5mu\mskip-\medmuskip} +\def\pmod#1{\allowbreak\ifinner\mkern8mu\else\mkern18mu\fi + ({\fam\z@ mod}\,\,#1)} +\def\pod#1{\allowbreak\ifinner\mkern8mu\else\mkern18mu\fi(#1)} +\def\mod#1{\allowbreak\ifinner\mkern12mu\else\mkern18mu\fi{\fam\z@ mod}\,\,#1} +\newcount\cfraccount@ +\def\cfrac{\bgroup\bgroup\global\advance\cfraccount@\@ne\strut + \iffalse{\fi\def\\{\over\displaystyle}\iffalse}\fi} +\def\lcfrac{\bgroup\bgroup\global\advance\cfraccount@\@ne\strut + \iffalse{\fi\def\\{\hfill\over\displaystyle}\iffalse}\fi} +\def\rcfrac{\bgroup\bgroup\global\advance\cfraccount@\@ne\strut\hfill + \iffalse{\fi\def\\{\over\displaystyle}\iffalse}\fi} +\def\endcfrac{\gloop@\ifnum\cfraccount@>\z@\global\advance\cfraccount@\m@ne + \egroup\hskip-\nulldelimiterspace\egroup\repeat} +\def\binrel@#1{\setboxz@h{\thinmuskip0mu + \medmuskip\m@ne mu\thickmuskip\@ne mu$#1\m@th$}% + \setbox\tw@\hbox{\thinmuskip0mu\medmuskip\m@ne mu\thickmuskip + \@ne mu${}#1{}\m@th$}% + \setbox\tw@\hbox{\hskip\wd\tw@\hskip-\wdz@}} +\def\overset#1\to#2{\binrel@{#2}\ifdim\wd\tw@<\z@ + \mathbin{\mathop{\kern\z@#2}\limits^{#1}}\else\ifdim\wd\tw@>\z@ + \mathrel{\mathop{\kern\z@#2}\limits^{#1}}\else + {\mathop{\kern\z@#2}\limits^{#1}}{}\fi\fi} +\def\underset#1\to#2{\binrel@{#2}\ifdim\wd\tw@<\z@ + \mathbin{\mathop{\kern\z@#2}\limits_{#1}}\else\ifdim\wd\tw@>\z@ + \mathrel{\mathop{\kern\z@#2}\limits_{#1}}\else + {\mathop{\kern\z@#2}\limits_{#1}}{}\fi\fi} +\def\oversetbrace#1\to#2{\overbrace{#2}^{#1}} +\def\undersetbrace#1\to#2{\underbrace{#2}_{#1}} +\def\sideset#1\and#2\to#3{% + \setboxz@h{$\dsize{\vphantom{#3}}#1{#3}\m@th$}% + \setbox\tw@\hbox{$\dsize{#3}#2\m@th$}% + \hskip\wdz@\hskip-\wd\tw@\mathop{\hskip\wd\tw@\hskip-\wdz@ + {\vphantom{#3}}#1{#3}#2}} +\def\rightarrowfill@#1{$#1\m@th\mathord-\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\mathord-\mkern-2mu$}\hfill + \mkern-6mu\mathord\rightarrow$} +\def\leftarrowfill@#1{$#1\m@th\mathord\leftarrow\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\mathord-\mkern-2mu$}\hfill\mkern-6mu\mathord-$} +\def\leftrightarrowfill@#1{$#1\m@th\mathord\leftarrow\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\mathord-\mkern-2mu$}\hfill + \mkern-6mu\mathord\rightarrow$} +\def\overrightarrow{\mathpalette\overrightarrow@} +\def\overrightarrow@#1#2{\vbox{\ialign{##\crcr\rightarrowfill@#1\crcr + \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#1#2\hfil$\crcr}}} +\let\overarrow\overrightarrow +\def\overleftarrow{\mathpalette\overleftarrow@} +\def\overleftarrow@#1#2{\vbox{\ialign{##\crcr\leftarrowfill@#1\crcr + \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#1#2\hfil$\crcr}}} +\def\overleftrightarrow{\mathpalette\overleftrightarrow@} +\def\overleftrightarrow@#1#2{\vbox{\ialign{##\crcr\leftrightarrowfill@#1\crcr + \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#1#2\hfil$\crcr}}} +\def\underrightarrow{\mathpalette\underrightarrow@} +\def\underrightarrow@#1#2{\vtop{\ialign{##\crcr$\m@th\hfil#1#2\hfil$\crcr + \noalign{\nointerlineskip}\rightarrowfill@#1\crcr}}} +\let\underarrow\underrightarrow +\def\underleftarrow{\mathpalette\underleftarrow@} +\def\underleftarrow@#1#2{\vtop{\ialign{##\crcr$\m@th\hfil#1#2\hfil$\crcr + \noalign{\nointerlineskip}\leftarrowfill@#1\crcr}}} +\def\underleftrightarrow{\mathpalette\underleftrightarrow@} +\def\underleftrightarrow@#1#2{\vtop{\ialign{##\crcr$\m@th\hfil#1#2\hfil$\crcr + \noalign{\nointerlineskip}\leftrightarrowfill@#1\crcr}}} +\let\DOTSI\relax +\let\DOTSB\relax +\let\DOTSX\relax +\newif\ifmath@ +{\uccode`7=`\\ \uccode`8=`m \uccode`9=`a \uccode`0=`t \uccode`!=`h + \uppercase{\gdef\math@#1#2#3#4#5#6\math@{\global\math@false\ifx 7#1\ifx 8#2% + \ifx 9#3\ifx 0#4\ifx !#5\xdef\meaning@{#6}\global\math@true\fi\fi\fi\fi\fi}}} +\newif\ifmathch@ +{\uccode`7=`c \uccode`8=`h \uccode`9=`\" + \uppercase{\gdef\mathch@#1#2#3#4#5#6\mathch@{\global\mathch@false + \ifx 7#1\ifx 8#2\ifx 9#5\global\mathch@true\xdef\meaning@{9#6}\fi\fi\fi}}} +\newcount\classnum@ +\def\getmathch@#1.#2\getmathch@{\classnum@#1 \divide\classnum@4096 + \ifcase\number\classnum@\or\or\gdef\thedots@{\dotsb@}\or + \gdef\thedots@{\dotsb@}\fi} +\newif\ifmathbin@ +{\uccode`4=`b \uccode`5=`i \uccode`6=`n + \uppercase{\gdef\mathbin@#1#2#3{% + \DNii@##1\mathbin@{\ifx\space@\next\global\mathbin@true\fi}% + \global\mathbin@false\DN@##1\mathbin@{}% + \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}} +\newif\ifmathrel@ +{\uccode`4=`r \uccode`5=`e \uccode`6=`l + \uppercase{\gdef\mathrel@#1#2#3{% + \DNii@##1\mathrel@{\ifx\space@\next\global\mathrel@true\fi}% + \global\mathrel@false\DN@##1\mathrel@{}% + \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}} +\newif\ifmacro@ +{\uccode`5=`m \uccode`6=`a \uccode`7=`c + \uppercase{\gdef\macro@#1#2#3#4\macro@{\global\macro@false + \ifx 5#1\ifx 6#2\ifx 7#3\global\macro@true + \xdef\meaning@{\macro@@#4\macro@@}\fi\fi\fi}}} +\def\macro@@#1->#2\macro@@{#2} +\newif\ifDOTS@ +\newcount\DOTSCASE@ +{\uccode`6=`\\ \uccode`7=`D \uccode`8=`O \uccode`9=`T \uccode`0=`S + \uppercase{\gdef\DOTS@#1#2#3#4#5{\global\DOTS@false\DN@##1\DOTS@{}% + \ifx 6#1\ifx 7#2\ifx 8#3\ifx 9#4\ifx 0#5\let\next@\DOTS@@\fi\fi\fi\fi\fi + \next@}}} +{\uccode`3=`B \uccode`4=`I \uccode`5=`X + \uppercase{\gdef\DOTS@@#1{% + \DNii@##1\DOTS@{\ifx\space@\next\global\DOTS@true\fi}% + \DN@{\FN@\nextii@}% + \ifx 3#1\global\DOTSCASE@\z@\else + \ifx 4#1\global\DOTSCASE@\@ne\else + \ifx 5#1\global\DOTSCASE@\tw@\else\DN@##1\DOTS@{}% + \fi\fi\fi\next@}}} +\newif\ifnot@ +{\uccode`5=`\\ \uccode`6=`n \uccode`7=`o \uccode`8=`t + \uppercase{\gdef\not@#1#2#3#4{% + \DNii@##1\not@{\ifx\space@\next\global\not@true\fi}% + \global\not@false\DN@##1\not@{}% + \ifx 5#1\ifx 6#2\ifx 7#3\ifx 8#4\DN@{\FN@\nextii@}\fi\fi\fi + \fi\next@}}} +\newif\ifkeybin@ +\def\dots{\RIfM@\expandafter\mdots@\else\expandafter\tdots@\fi} +\def\mdots@{\FN@\mdots@@} +\def\mdots@@{\gdef\thedots@{\dotso@}% + \ifx\next\boldkey\gdef\thedots@\boldkey{\boldkeydots@}\else + \ifx\next\boldsymbol\gdef\thedots@\boldsymbol{\boldsymboldots@}\else + \ifx,\next\gdef\thedots@{\dotsc}% + \else\ifx\not\next\gdef\thedots@{\dotsb@}% + \else\keybin@ + \ifkeybin@\gdef\thedots@{\dotsb@}% + \else\xdef\meaning@{\meaning\next..........}\xdef\meaning@@{\meaning@}% + \expandafter\math@\meaning@\math@ + \ifmath@ + \expandafter\mathch@\meaning@\mathch@ + \ifmathch@\expandafter\getmathch@\meaning@\getmathch@\fi + \else\expandafter\macro@\meaning@@\macro@ + \ifmacro@ + \expandafter\not@\meaning@\not@\ifnot@\gdef\thedots@{\dotsb@}% + \else\expandafter\DOTS@\meaning@\DOTS@ + \ifDOTS@ + \ifcase\number\DOTSCASE@\gdef\thedots@{\dotsb@}% + \or\gdef\thedots@{\dotsi}\else\fi + \else\expandafter\math@\meaning@\math@ + \ifmath@\expandafter\mathbin@\meaning@\mathbin@ + \ifmathbin@\gdef\thedots@{\dotsb@}% + \else\expandafter\mathrel@\meaning@\mathrel@ + \ifmathrel@\gdef\thedots@{\dotsb@}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \thedots@} +\def\plainldots@{\mathinner{\ldotp\ldotp\ldotp}} +\def\plaincdots@{\mathinner{\cdotp\cdotp\cdotp}} +\def\dotsi{\!\plaincdots@} +\let\dotsb@\plaincdots@ +\newif\ifextra@ +\newif\ifrightdelim@ +\def\rightdelim@{\global\rightdelim@true + \ifx\next)\else + \ifx\next]\else + \ifx\next\rbrack\else + \ifx\next\}\else + \ifx\next\rbrace\else + \ifx\next\rangle\else + \ifx\next\rceil\else + \ifx\next\rfloor\else + \ifx\next\rgroup\else + \ifx\next\rmoustache\else + \ifx\next\right\else + \ifx\next\bigr\else + \ifx\next\biggr\else + \ifx\next\Bigr\else + \ifx\next\Biggr\else\global\rightdelim@false + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\extra@{% + \global\extra@false\rightdelim@\ifrightdelim@\global\extra@true + \else\ifx\next$\global\extra@true + \else\xdef\meaning@{\meaning\next..........}% + \expandafter\macro@\meaning@\macro@\ifmacro@ + \expandafter\DOTS@\meaning@\DOTS@ + \ifDOTS@ + \ifnum\DOTSCASE@=\tw@\global\extra@true + \fi\fi\fi\fi\fi} +\newif\ifbold@ +\def\dotso@{% + \ifbold@ + \let\next\delayed@ + \DNii@{\extra@\plainldots@\ifextra@\,\fi}% + \else + \DNii@{\DN@{\extra@\plainldots@\ifextra@\,\fi}\FN@\next@}% + \fi + \nextii@} +\def\ldots{\DN@{\extrap@\plainldots@}% + \FN@\next@} +\def\cdots{\DN@{\extrap@\plaincdots@}% + \FN@\next@} +\let\dotso\ldots +\let\dotsb\cdots +\let\dotsm\dotsb +\def\cdot{\mathchar"2201 } +\def\longrightarrow{\DOTSB\relbar\joinrel\rightarrow} +\def\Longrightarrow{\DOTSB\Relbar\joinrel\Rightarrow} +\def\longleftarrow{\DOTSB\leftarrow\joinrel\relbar} +\def\Longleftarrow{\DOTSB\Leftarrow\joinrel\Relbar} +\def\longleftrightarrow{\DOTSB\leftarrow\joinrel\rightarrow} +\def\Longleftrightarrow{\DOTSB\Leftarrow\joinrel\Rightarrow} +\def\mapsto{\DOTSB\mapstochar\rightarrow} +\def\longmapsto{\DOTSB\mapstochar\longrightarrow} +\def\hookrightarrow{\DOTSB\lhook\joinrel\rightarrow} +\def\hookleftarrow{\DOTSB\leftarrow\joinrel\rhook} +\def\doteq{\DOTSB\buildrel\textstyle.\over=} +\def\iff{\DOTSB\;\Longleftrightarrow\;} +\def\dddot#1{{\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@ + \hbox{\rm...}\vss}}}} +\def\ddddot#1{{\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@ + \hbox{\rm....}\vss}}}} +\def\sphat{^{\mathchoice{}{}% + {\,\,\botsmash{\hbox{\lower4\ex@\hbox{$\m@th\widehat{\null}$}}}}% + {\,\botsmash{\hbox{\lower3\ex@\hbox{$\m@th\hat{\null}$}}}}}} +\def\spcheck{^\vee} +\def\sptilde{^\sim} +\def\spacute{^{\!\botsmash{\hbox{\lower\@ne ex\hbox{\'{}}}}}} +\def\spgrave{^{\mathchoice{}{}{}{\!}% + \botsmash{\hbox{\lower\@ne ex\hbox{\`{}}}}}} +\def\spdot{^{\hbox{\raise\ex@\hbox{\rm.}}}} +\def\spddot{^{\hbox{\raise\ex@\hbox{\rm..}}}} +\def\spdddot{^{\hbox{\raise\ex@\hbox{\rm...}}}} +\def\spddddot{^{\hbox{\raise\ex@\hbox{\rm....}}}} +\def\spbreve{^{\!\botsmash{\hbox{\lower4\ex@\hbox{\u{}}}}}} +\def\spbar{^-} +\def\spvec{^\rightarrow} +\def\textonlyfont@#1#2{\def#1{\RIfM@ + \Err@{Use \noexpand#1only in text}\else#2\fi}} +\textonlyfont@\rm\tenrm +\textonlyfont@\it\tenit +\textonlyfont@\sl\tensl +\textonlyfont@\bf\tenbf +\def\oldnos#1{\RIfM@{\mathcode`\,="013B \fam\@ne#1}\else + \leavevmode\hbox{$\m@th\mathcode`\,="013B \fam\@ne#1$}\fi} +\def\text{\RIfM@\expandafter\text@\else\expandafter\text@@\fi} +\def\text@@#1{\leavevmode\hbox{#1}} +\def\mathhexbox@#1#2#3{\text{$\m@th\mathchar"#1#2#3$}} +\def\dag{{\mathhexbox@279}} +\def\ddag{{\mathhexbox@27A}} +\def\S{{\mathhexbox@278}} +\def\P{{\mathhexbox@27B}} +\newif\iffirstchoice@ +\firstchoice@true +\def\text@#1{\mathchoice + {\hbox{\everymath{\displaystyle}\def\textfonti{\the\textfont\@ne}% + \def\textfontii{\the\textfont\tw@}\textdef@@ T#1}} + {\hbox{\firstchoice@false + \everymath{\textstyle}\def\textfonti{\the\textfont\@ne}% + \def\textfontii{\the\textfont\tw@}\textdef@@ T#1}} + {\hbox{\firstchoice@false + \everymath{\scriptstyle}\def\textfonti{\the\scriptfont\@ne}% + \def\textfontii{\the\scriptfont\tw@}\textdef@@ S\rm#1}} + {\hbox{\firstchoice@false + \everymath{\scriptscriptstyle}\def\textfonti + {\the\scriptscriptfont\@ne}% + \def\textfontii{\the\scriptscriptfont\tw@}\textdef@@ s\rm#1}}} +\def\textdef@@#1{\textdef@#1\rm\textdef@#1\bf\textdef@#1\sl\textdef@#1\it} +\def\rmfam{0} +\def\textdef@#1#2{% + \DN@{\csname\expandafter\eat@\string#2fam\endcsname}% + \if S#1\edef#2{\the\scriptfont\next@\relax}% + \else\if s#1\edef#2{\the\scriptscriptfont\next@\relax}% + \else\edef#2{\the\textfont\next@\relax}\fi\fi} +\scriptfont\itfam\tenit \scriptscriptfont\itfam\tenit +\scriptfont\slfam\tensl \scriptscriptfont\slfam\tensl +\newif\iftopfolded@ +\newif\ifbotfolded@ +\def\topfoldedtext{\topfolded@true\botfolded@false\foldedtext@} +\def\botfoldedtext{\botfolded@true\topfolded@false\foldedtext@} +\def\foldedtext{\topfolded@false\botfolded@false\foldedtext@} +\Invalid@\foldedwidth +\def\foldedtext@{% + \DN@{\ifx\next\foldedwidth\let\next@\nextii@\else + \DN@{\nextii@\foldedwidth{.3\hsize}}\fi\next@}% + \DNii@\foldedwidth##1##2{\setbox\z@\vbox + {\normalbaselines\hsize##1\relax + \tolerance1600 \noindent\ignorespaces##2}\ifbotfolded@\boxz@\else + \iftopfolded@\vtop{\unvbox\z@}\else\vcenter{\boxz@}\fi\fi}% + \FN@\next@} +\def\bold{\RIfM@\expandafter\bold@\else + \expandafter\nonmatherr@\expandafter\bold\fi} +\def\bold@#1{{\bold@@{#1}}} +\def\bold@@#1{\fam\bffam\relax#1} +\def\slanted{\RIfM@\expandafter\slanted@\else + \expandafter\nonmatherr@\expandafter\slanted\fi} +\def\slanted@#1{{\slanted@@{#1}}} +\def\slanted@@#1{\fam\slfam\relax#1} +\def\rom{\RIfM@\expandafter\rom@\else + \expandafter\nonmatherr@\expandafter\rom\fi} +\def\rom@#1{{\rom@@{#1}}} +\def\rom@@#1{\fam\rmfam\relax#1} +\def\italic{\RIfM@\expandafter\italic@\else + \expandafter\nonmatherr@\expandafter\italic\fi} +\def\italic@#1{{\italic@@{#1}}} +\def\italic@@#1{\fam\itfam\relax#1} +\def\Cal{\RIfM@\expandafter\Cal@\else + \expandafter\nonmatherr@\expandafter\Cal\fi} +\def\Cal@#1{{\Cal@@{#1}}} +\def\Cal@@#1{\noaccents@\fam\tw@#1} +\mathchardef\Gamma="0000 +\mathchardef\Delta="0001 +\mathchardef\Theta="0002 +\mathchardef\Lambda="0003 +\mathchardef\Xi="0004 +\mathchardef\Pi="0005 +\mathchardef\Sigma="0006 +\mathchardef\Upsilon="0007 +\mathchardef\Phi="0008 +\mathchardef\Psi="0009 +\mathchardef\Omega="000A +\mathchardef\varGamma="0100 +\mathchardef\varDelta="0101 +\mathchardef\varTheta="0102 +\mathchardef\varLambda="0103 +\mathchardef\varXi="0104 +\mathchardef\varPi="0105 +\mathchardef\varSigma="0106 +\mathchardef\varUpsilon="0107 +\mathchardef\varPhi="0108 +\mathchardef\varPsi="0109 +\mathchardef\varOmega="010A +\newif\ifmsamloaded@ +\newif\ifmsbmloaded@ +\newif\ifeufmloaded@ +\let\alloc@@\alloc@ +\def\hexnumber@#1{\ifcase#1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or + 9\or A\or B\or C\or D\or E\or F\fi} +\edef\bffam@{\hexnumber@\bffam} +\def\loadmsam{\msamloaded@true + \font@\tenmsa=msam10 + \font@\sevenmsa=msam7 + \font@\fivemsa=msam5 + \alloc@@8\fam\chardef\sixt@@n\msafam + \textfont\msafam=\tenmsa + \scriptfont\msafam=\sevenmsa + \scriptscriptfont\msafam=\fivemsa + \edef\msafam@{\hexnumber@\msafam}% + \mathchardef\dabar@"0\msafam@39 + \def\dashrightarrow{\mathrel{\dabar@\dabar@\mathchar"0\msafam@4B}}% + \def\dashleftarrow{\mathrel{\mathchar"0\msafam@4C\dabar@\dabar@}}% + \let\dasharrow\dashrightarrow + \def\ulcorner{\delimiter"4\msafam@70\msafam@70 } + \def\urcorner{\delimiter"5\msafam@71\msafam@71 } + \def\llcorner{\delimiter"4\msafam@78\msafam@78 } + \def\lrcorner{\delimiter"5\msafam@79\msafam@79 } + \def\yen{{\mathhexbox@\msafam@55 }} + \def\checkmark{{\mathhexbox@\msafam@58 }} + \def\circledR{{\mathhexbox@\msafam@72 }} + \def\maltese{{\mathhexbox@\msafam@7A }}} +\def\loadmsbm{\msbmloaded@true + \font@\tenmsb=msbm10 + \font@\sevenmsb=msbm7 + \font@\fivemsb=msbm5 + \alloc@@8\fam\chardef\sixt@@n\msbfam + \textfont\msbfam=\tenmsb + \scriptfont\msbfam=\sevenmsb + \scriptscriptfont\msbfam=\fivemsb + \edef\msbfam@{\hexnumber@\msbfam}} +\def\widehat#1{\ifmsbmloaded@ + \setboxz@h{$\m@th#1$}\ifdim\wdz@>\tw@ em\mathaccent"0\msbfam@5B{#1}\else + \mathaccent"0362{#1}\fi + \else\mathaccent"0362{#1}\fi} +\def\widetilde#1{\ifmsbmloaded@ + \setboxz@h{$\m@th#1$}\ifdim\wdz@>\tw@ em\mathaccent"0\msbfam@5D{#1}\else + \mathaccent"0365{#1}\fi + \else\mathaccent"0365{#1}\fi} +\def\newsymbol#1#2#3#4#5{\define#1{}\let\next@\relax + \ifnum#2=\@ne\ifmsamloaded@\let\next@\msafam@\fi\else + \ifnum#2=\tw@\ifmsbmloaded@\let\next@\msbfam@\fi\fi\fi + \ifx\next@\relax + \ifnum#2>\tw@\Err@{\Invalid@@\string\newsymbol}\else + \ifnum#2=\@ne\Err@{You must first \string\loadmsam}\else + \Err@{You must first \string\loadmsbm}\fi\fi + \else + \mathchardef#1="#3\next@#4#5 + \fi} +\def\UseAMSsymbols{\input amssym.tex\relax} +\def\Bbb{\RIfM@\expandafter\Bbb@\else + \expandafter\nonmatherr@\expandafter\Bbb\fi} +\def\Bbb@#1{{\Bbb@@{#1}}} +\def\Bbb@@#1{\noaccents@\fam\msbfam\relax#1} +\def\loadeufm{\eufmloaded@true + \font@\teneufm=eufm10 + \font@\seveneufm=eufm7 + \font@\fiveeufm=eufm5 + \alloc@@8\fam\chardef\sixt@@n\eufmfam + \textfont\eufmfam=\teneufm + \scriptfont\eufmfam=\seveneufm + \scriptscriptfont\eufmfam=\fiveeufm} +\def\frak{\RIfM@\expandafter\frak@\else + \expandafter\nonmatherr@\expandafter\frak\fi} +\def\frak@#1{{\frak@@{#1}}} +\def\frak@@#1{\fam\eufmfam\relax#1} +\let\goth\frak +\newif\ifcmmibloaded@ +\newif\ifcmbsyloaded@ +\def\loadbold{\cmmibloaded@true\cmbsyloaded@true + \font@\tencmmib=cmmib10 \skewchar\tencmmib='177 + \font@\sevencmmib=cmmib7 \skewchar\sevencmmib='177 + \font@\fivecmmib=cmmib5 \skewchar\fivecmmib='177 + \alloc@@8\fam\chardef\sixt@@n\cmmibfam + \textfont\cmmibfam=\tencmmib + \scriptfont\cmmibfam=\sevencmmib + \scriptscriptfont\cmmibfam=\fivecmmib + \edef\cmmibfam@{\hexnumber@\cmmibfam}% + \font@\tencmbsy=cmbsy10 \skewchar\tencmbsy='60 + \font@\sevencmbsy=cmbsy7 \skewchar\sevencmbsy='60 + \font@\fivecmbsy=cmbsy5 \skewchar\fivecmbsy='60 + \alloc@@8\fam\chardef\sixt@@n\cmbsyfam + \textfont\cmbsyfam=\tencmbsy + \scriptfont\cmbsyfam=\sevencmbsy + \scriptscriptfont\cmbsyfam=\fivecmbsy + \edef\cmbsyfam@{\hexnumber@\cmbsyfam}} +\def\mathchari@#1#2#3{\ifcmmibloaded@\mathchar"#1\cmmibfam@#2#3 \else + \Err@{First bold symbol font not loaded}\fi} +\def\mathcharii@#1#2#3{\ifcmbsyloaded@\mathchar"#1\cmbsyfam@#2#3 \else + \Err@{Second bold symbol font not loaded}\fi} +\def\boldsymbol#1{% + \DN@{\Err@{You can't use \noexpand\boldsymbol with \string#1}#1}% + \ifcat\noexpand#1A% + \let\next@\relax + \ifcmmibloaded@{\fam\cmmibfam#1}\else\Err@{First bold symbol + font not loaded}\fi + \else + \xdef\meaning@{\meaning#1.........}% + \expandafter\math@\meaning@\math@ + \ifmath@ + \expandafter\mathch@\meaning@\mathch@ + \ifmathch@ + \expandafter\boldsymbol@@\meaning@\boldsymbol@@ + \fi + \else + \expandafter\macro@\meaning@\macro@ + \expandafter\delim@\meaning@\delim@ + \ifdelim@ + \expandafter\delim@@\meaning@\delim@@ + \else + \boldsymbol@{#1}% + \fi + \fi + \fi + \next@} +\def\mathhexboxii@#1#2{\ifcmbsyloaded@\mathhexbox@{\cmbsyfam@}{#1}{#2}\else + \Err@{Second bold symbol font not loaded}\fi} +\def\boldsymbol@#1{\let\next@\relax\let\next=#1% + \ifx\next\cdot\mathcharii@201 \else + \ifx\next\prime{{\null\mathcharii@030 \null}}\else + \ifx\next\lbrack\mathchar"4\bffam@5B \else + \ifx\next\rbrack\mathchar"5\bffam@5D \else + \ifx\next\{\mathcharii@466 \else + \ifx\next\lbrace\mathcharii@466 \else + \ifx\next\}\mathcharii@567 \else + \ifx\next\rbrace\mathcharii@567 \else + \ifx\next\surd{{\mathcharii@170}}\else + \ifx\next\S{{\mathhexboxii@78}}\else + \ifx\next\P{{\mathhexboxii@7B}}\else + \ifx\next\dag{{\mathhexboxii@79}}\else + \ifx\next\ddag{{\mathhexboxii@7A}}\else + \DN@{\Err@{You can't use \noexpand\boldsymbol with \string#1}#1}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\boldsymbol@@#1.#2\boldsymbol@@{\classnum@#1 \count@@@\classnum@ + \divide\classnum@4096 \count@\classnum@ + \multiply\count@4096 \advance\count@@@-\count@ \count@@\count@@@ + \divide\count@@@\@cclvi \count@\count@@ + \multiply\count@@@\@cclvi \advance\count@@-\count@@@ + \divide\count@@@\@cclvi + \multiply\classnum@4096 \advance\classnum@\count@@ + \ifnum\count@@@=\z@ + \count@"\bffam@ \multiply\count@\@cclvi + \advance\classnum@\count@ + \DN@{\mathchar\number\classnum@}% + \else + \ifnum\count@@@=\@ne + \ifcmmibloaded@ + \count@"\cmmibfam@ \multiply\count@\@cclvi + \advance\classnum@\count@ + \DN@{\mathchar\number\classnum@}% + \else\DN@{\Err@{First bold symbol font not loaded}}\fi + \else + \ifnum\count@@@=\tw@ + \ifcmbsyloaded@ + \count@"\cmbsyfam@ \multiply\count@\@cclvi + \advance\classnum@\count@ + \DN@{\mathchar\number\classnum@}% + \else\DN@{\Err@{Second bold symbol font not loaded}}\fi + \fi + \fi +\fi} +\newif\ifdelim@ +\newcount\delimcount@ +{\uccode`6=`\\ \uccode`7=`d \uccode`8=`e \uccode`9=`l + \uppercase{\gdef\delim@#1#2#3#4#5\delim@ + {\delim@false\ifx 6#1\ifx 7#2\ifx 8#3\ifx 9#4\delim@true + \xdef\meaning@{#5}\fi\fi\fi\fi}}} +\def\delim@@#1"#2#3#4#5#6\delim@@{\if#32% +\let\next@\relax + \ifcmbsyloaded@ + \mathcharii@#2#4#5 \else\Err@{Second bold family not loaded}\fi\fi} +\def\vert{\delimiter"026A30C } +\def\Vert{\delimiter"026B30D } +\let\|\Vert +\def\backslash{\delimiter"026E30F } +\def\boldkeydots@#1{\bold@true\let\next=#1\let\delayed@=#1\mdots@@ + \boldkey#1\bold@false} +\def\boldsymboldots@#1{\bold@true\let\next=#1\let\delayed@=#1\mdots@@ + \boldsymbol#1\bold@false} + +%\newif\ifeufbloaded@ +%\def\loadeufb{\eufbloaded@true +% \font@\teneufb=eufb10 +% \font@\seveneufb=eufb7 +% \font@\fiveeufb=eufb5 +% \alloc@@8\fam\chardef\sixt@@n\eufbfam +% \textfont\eufbfam=\teneufb +% \scriptfont\eufbfam=\seveneufb +% \scriptscriptfont\eufbfam=\fiveeufb +% \edef\eufbfam@{\hexnumber@\eufbfam}} + +%\newif\ifeusmloaded@ +%\def\loadeusm{\eusmloaded@true +% \font@\teneusm=eusm10 +% \font@\seveneusm=eusm7 +% \font@\fiveeusm=eusm5 +% \alloc@@8\fam\chardef\sixt@@n\eusmfam +% \textfont\eusmfam=\teneusm +% \scriptfont\eusmfam=\seveneusm +% \scriptscriptfont\eusmfam=\fiveeusm +% \edef\eusmfam@{\hexnumber@\eusmfam}} + +%\newif\ifeusbloaded@ +%\def\loadeusb{\eusbloaded@true +% \font@\teneusb=eusb10 +% \font@\seveneusb=eusb7 +% \font@\fiveeusb=eusb5 +% \alloc@@8\fam\chardef\sixt@@n\eusbfam +% \textfont\eusbfam=\teneusb +% \scriptfont\eusbfam=\seveneusb +% \scriptscriptfont\eusbfam=\fiveeusb +% \edef\eusbfam@{\hexnumber@\eusbfam}} + +%\newif\ifeurmloaded@ +%\def\loadeurm{\eurmloaded@true +% \font@\teneurm=eurm10 +% \font@\seveneurm=eurm7 +% \font@\fiveeurm=eurm5 +% \alloc@@8\fam\chardef\sixt@@n\eurmfam +% \textfont\eurmfam=\teneurm +% \scriptfont\eurmfam=\seveneurm +% \scriptscriptfont\eurmfam=\fiveeurm +% \edef\eurmfam@{\hexnumber@\eurmfam}} + +%\newif\ifeurbloaded@ +%\def\loadeurb{\eurbloaded@true +% \font@\teneurb=eurb10 +% \font@\seveneurb=eurb7 +% \font@\fiveeurb=eurb5 +% \alloc@@8\fam\chardef\sixt@@n\eurbfam +% \textfont\eurbfam=\teneurb +% \scriptfont\eurbfam=\seveneurb +% \scriptscriptfont\eurbfam=\fiveeurb +% \edef\eurbfam@{\hexnumber@\eurbfam}} + +\def\accentclass@{7} +\def\noaccents@{\def\accentclass@{0}} +\def\makeacc@#1#2{\def#1{\mathaccent"\accentclass@#2 }} +\makeacc@\hat{05E} +\makeacc@\check{014} +\makeacc@\tilde{07E} +\makeacc@\acute{013} +\makeacc@\grave{012} +\makeacc@\dot{05F} +\makeacc@\ddot{07F} +\makeacc@\breve{015} +\makeacc@\bar{016} +\def\vec{\mathaccent"017E } +\newcount\skewcharcount@ +\newcount\familycount@ +\def\theskewchar@{\global\familycount@\@ne + \global\skewcharcount@\the\skewchar\textfont\@ne + \ifnum\fam>\m@ne\ifnum\fam<16 + \global\familycount@\the\fam\relax + \global\skewcharcount@\the\skewchar\textfont\the\fam\relax\fi\fi + \ifnum\skewcharcount@>\m@ne + \ifnum\skewcharcount@<128 + \global\multiply\familycount@256 + \global\advance\skewcharcount@\familycount@ + \global\advance\skewcharcount@28672 + \mathchar\skewcharcount@\else + \global\skewcharcount@\m@ne\fi\else + \global\skewcharcount@\m@ne\fi} +\newcount\pointcount@ +\def\getpoints@#1.#2\getpoints@{\pointcount@#1 } +\newdimen\accentdimen@ +\newcount\accentmu@ +\def\dimentomu@{\global\multiply\accentdimen@ 100 + \expandafter\getpoints@\the\accentdimen@\getpoints@ + \multiply\pointcount@18 + \divide\pointcount@\@m + \global\accentmu@\pointcount@} +\def\Makeacc@#1#2{\def#1{\RIfM@\DN@{\mathaccent@ + {"\accentclass@#2 }}\else\DN@{\nonmatherr@{#1}}\fi\next@}} +\def\unbracefonts@{\let\Cal@\Cal@@\let\rom@\rom@@\let\bold@\bold@@ + \let\slanted@\slanted@@} +\def\mathaccent@#1#2{\ifnum\fam=\m@ne\xdef\thefam@{1}\else + \xdef\thefam@{\the\fam}\fi + \global\accentdimen@\z@ + \setboxz@h{\unbracefonts@$\m@th\fam\thefam@\relax#2$}% + \ifdim\accentdimen@=\z@\DN@{\mathaccent#1{#2}}% + \setbox\tw@\hbox{\unbracefonts@$\m@th\fam\thefam@\relax#2\theskewchar@$}% + \setbox4=\hbox{$\m@th\ifnum\skewcharcount@=\m@ne\else + \mathchar\skewcharcount@\fi$}% + \global\accentdimen@\wd\tw@\global\advance\accentdimen@-\wdz@ + \global\advance\accentdimen@-\wd4 + \global\multiply\accentdimen@\tw@ + \dimentomu@\global\advance\accentmu@\@ne + \else\DN@{{\mathaccent#1{#2\mkern\accentmu@ mu}% + \mkern-\accentmu@ mu}{}}\fi + \next@} +\Makeacc@\Hat{05E} +\Makeacc@\Check{014} +\Makeacc@\Tilde{07E} +\Makeacc@\Acute{013} +\Makeacc@\Grave{012} +\Makeacc@\Dot{05F} +\Makeacc@\Ddot{07F} +\Makeacc@\Breve{015} +\Makeacc@\Bar{016} +\def\Vec{\RIfM@\DN@{\mathaccent@{"017E }}\else + \DN@{\nonmatherr@\Vec}\fi\next@} +\def\sqrt#1{\radical"270370 {#1}} +\let\underline@\underline +\let\overline@\overline +\def\underline#1{\underline@{#1}} +\def\overline#1{\overline@{#1}} +\Invalid@\leftroot +\Invalid@\uproot +\newcount\uproot@ +\newcount\leftroot@ +\def\plainroot@#1\of#2{\setbox\rootbox\hbox{$\m@th\scriptscriptstyle{#1}$}% + \mathchoice{\r@@t\displaystyle{#2}}{\r@@t\textstyle{#2}} + {\r@@t\scriptstyle{#2}}{\r@@t\scriptscriptstyle{#2}}\egroup} +\def\r@@t#1#2{\setboxz@h{$\m@th#1\sqrt{#2}$}% + \dimen@\ht\z@\advance\dimen@-\dp\z@ + \setbox\tw@\hbox{$\m@th#1\mskip\uproot@ mu$}\advance\dimen@ by1.667\wd\tw@ + \mkern-\leftroot@ mu\mkern5mu\raise.6\dimen@\copy\rootbox + \mkern-10mu\mkern\leftroot@ mu\boxz@} +\def\boxed#1{\setboxz@h{$\m@th\displaystyle{#1}$}\dimen@.4\ex@ + \advance\dimen@3\ex@\advance\dimen@\dp\z@ + \hbox{\lower\dimen@\hbox{% + \vbox{\hrule\height.4\ex@ + \hbox{\vrule\width.4\ex@\hskip3\ex@\vbox{\vskip3\ex@\boxz@\vskip3\ex@}% + \hskip3\ex@\vrule\width.4\ex@}\hrule\height.4\ex@}% + }}} +\newdimen\minaw@ +\minaw@11.11128\ex@ +\def\pmb{\RIfM@\expandafter\mathpalette\expandafter\pmb@\else + \expandafter\pmb@@\fi} +\def\pmb@@#1{\leavevmode\setboxz@h{#1}\kern-.025em\copy\z@\kern-\wdz@ + \kern-.05em\copy\z@\kern-\wdz@\kern-.025em\raise.0433em\boxz@} +\def\binrel@@#1{\ifdim\wd\tw@<\z@\mathbin{#1}\else\ifdim\wd\tw@>\z@ + \mathrel{#1}\else{#1}\fi\fi} +\newdimen\pmbraise@ +\def\pmb@#1#2{\setbox4=\hbox{$\m@th#1{#2}$}% + \setbox6=\hbox{$\m@th#1\mkern.7794mu$}\pmbraise@\wd6 + \binrel@{#2}\binrel@@{\mkern-.45mu\copy4 \kern-\wd4 + \mkern-.9mu\copy4 \kern-\wd4 \mkern-.45mu\raise\pmbraise@\box4}} +\font\dummyft@=dummy +\fontdimen1 \dummyft@=\z@ +\fontdimen2 \dummyft@=\z@ +\fontdimen3 \dummyft@=\z@ +\fontdimen4 \dummyft@=\z@ +\fontdimen5 \dummyft@=\z@ +\fontdimen6 \dummyft@=\z@ +\fontdimen7 \dummyft@=\z@ +\fontdimen8 \dummyft@=\z@ +\fontdimen9 \dummyft@=\z@ +\fontdimen10 \dummyft@=\z@ +\fontdimen11 \dummyft@=\z@ +\fontdimen12 \dummyft@=\z@ +\fontdimen13 \dummyft@=\z@ +\fontdimen14 \dummyft@=\z@ +\fontdimen15 \dummyft@=\z@ +\fontdimen16 \dummyft@=\z@ +\fontdimen17 \dummyft@=\z@ +\fontdimen18 \dummyft@=\z@ +\fontdimen19 \dummyft@=\z@ +\fontdimen20 \dummyft@=\z@ +\fontdimen21 \dummyft@=\z@ +\fontdimen22 \dummyft@=\z@ +\def\dodummy@{{\def\\##1{\global\let##1\dummyft@}\fontlist@}} +\def\nopages@{\output={\setbox\z@\box255 \deadcycles\z@}% + \alloc@@5\toks\toksdef\@cclvi\output} +\let\galleys\nopages@ +\newif\ifsyntax@ +\newcount\countxviii@ +\def\syntax{\syntax@true\dodummy@\countxviii@\count18 + \loop\ifnum\countxviii@>\m@ne\textfont\countxviii@=\dummyft@ + \scriptfont\countxviii@=\dummyft@\scriptscriptfont\countxviii@=\dummyft@ + \advance\countxviii@\m@ne\repeat + \dummyft@\tracinglostchars\z@\nopages@\frenchspacing\hbadness\@M} +\def\S@{S } \def\G@{G } \def\P@{P } +\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne + \ch@ck#1#4#2\allocationnumber=\count1#1 + \global#3#5=\allocationnumber + \wlog{\string#5=\string#2\the\allocationnumber}} +\let\proclaim\undefined +\let\=\undefined +\let\>\undefined +\let\cal\undefined +\let\mit\undefined +\let\oldstyle\undefined +\catcode`\@=\active diff --git a/macros/lamstex/inputs/anynum.tex b/macros/lamstex/inputs/anynum.tex new file mode 100644 index 0000000000..82af80f3f7 --- /dev/null +++ b/macros/lamstex/inputs/anynum.tex @@ -0,0 +1,58 @@ +\catcode`\@=11 +\def\newcounter#1{\define#1{}% + \edef\next@{\def\noexpand#1{\futurelet\noexpand\next + \csname\exstring@#1@Z\endcsname}}\next@ + \edef\next@{\def\csname\exstring@#1@Z\endcsname + {\global\advance\csname\exstring@#1@C\endcsname\@ne + {\csname\exstring@#1@F\endcsname\csname\exstring@#1@S\endcsname + {\csname\exstring@#1@P\endcsname\csname\exstring@#1@N\endcsname + {\noexpand\number\csname\exstring@#1@C\endcsname}% + \csname\exstring@#1@Q\endcsname}}% + \noexpand\ifx\noexpand\next\noexpand\label + \def\noexpand\next@\noexpand\label########1{{\noexpand\noexpands@ + \xdef\noexpand\Thelabel@{\csname\exstring@#1@N\endcsname + {\noexpand\number\csname\exstring@#1@C\endcsname}}% + \xdef\noexpand\Thelabel@@@{\noexpand\number + \csname\exstring@#1@C\endcsname}% + \xdef\noexpand\Thelabel@@{\csname\exstring@#1@S\endcsname + {\csname\exstring@#1@P\endcsname + \csname\exstring@#1@N\endcsname + {\noexpand\number\csname\exstring@#1@C\endcsname}% + \csname\exstring@#1@Q\endcsname}}% + \xdef\noexpand\Thelabel@@@@{\csname\exstring@#1@P\endcsname + \csname\exstring@#1@N\endcsname + {\noexpand\number\csname\exstring@#1@C\endcsname}% + \csname\exstring@#1@Q\endcsname}}% + {\noexpand\locallabel@\noexpand\label{########1}}}% + \noexpand\else\let\noexpand\next@\relax\noexpand\fi\noexpand\next@}}\next@ + \expandafter\newcount@\csname\exstring@#1@C\endcsname + \expandafter\let\csname\exstring@#1@N\endcsname\arabic + \expandafter\def\csname\exstring@#1@S\endcsname##1{##1\/}% + \expandafter\let\csname\exstring@#1@P\endcsname\empty + \expandafter\let\csname\exstring@#1@Q\endcsname\empty + \expandafter\def\csname\exstring@#1@F\endcsname{\rm}% + } +\def\usecounter#1#2{\expandafter\ifx\csname\exstring@#1@Z\endcsname + \relax\Err@{\noexpand#1not created with \string\newcounter}\fi + \expandafter\let\csname\exstring@#1@@Z\endcsname\relax + \expandafter\let\csname\exstring@#1@@Z@\endcsname\relax + \edef\next@{\def\noexpand#2{\futurelet\noexpand\next + \csname\exstring@#1@@Z\endcsname}}\next@ + \edef\next@{\def\csname\exstring@#1@@Z\endcsname{\noexpand\ifx + \noexpand\next\noexpand\label\def\noexpand\next@\noexpand\label + ########1{\csname\exstring@#1@@Z@\endcsname + {\noexpand#1\noexpand\label{########1}}\noexpand\FNSSP@}% + \noexpand\else\noexpand\ifx\noexpand\next + \noexpand"\def\noexpand\next@\noexpand"########1\noexpand"% + {\csname\exstring@#1@@Z@\endcsname{{\expandafter\noexpand + \csname\exstring@#1@F\endcsname + \let\noexpand\pre\expandafter\noexpand\csname\exstring@#1@P\endcsname + \let\noexpand\post\expandafter\noexpand\csname\exstring@#1@Q\endcsname + \let\noexpand\style\expandafter\noexpand\csname\exstring@#1@S\endcsname + \let\noexpand\numstyle\expandafter\noexpand\csname\exstring@#1@N\endcsname + ########1}}\noexpand\FNSSP@}\noexpand\else + \def\noexpand\next@{\csname\exstring@#1@@Z@\endcsname{\noexpand#1}% + \noexpand\FNSSP@}% + \noexpand\fi\noexpand\fi\noexpand\next@}}\next@ + \expandafter\def\csname\exstring@#1@@Z@\endcsname} +\catcode`\@=\active diff --git a/macros/lamstex/inputs/anynum.tox b/macros/lamstex/inputs/anynum.tox new file mode 100644 index 0000000000..36822cd996 --- /dev/null +++ b/macros/lamstex/inputs/anynum.tox @@ -0,0 +1,3 @@ +\catcode`\@=11 +\let\newcounter\undefined\let\usecounter\undefined +\catcode`\@=\active diff --git a/macros/lamstex/inputs/bib.tex b/macros/lamstex/inputs/bib.tex new file mode 100644 index 0000000000..f6cf400d5d --- /dev/null +++ b/macros/lamstex/inputs/bib.tex @@ -0,0 +1,193 @@ +\catcode`\@=11 +\def\makebib@W{Bibliography} +\def\makebib{\begingroup\rm\bigbreak\centerline{\smc\makebib@W}% + \nobreak\medskip + \sfcode`\.=\@m\everypar{}\parindent\z@ + \def\nopunct{\nopunct@true}\def\nospace{\nospace@true}% + \nopunct@false\nospace@false + \def\lkerns@{\null\kern\m@ne sp\kern\@ne sp}% + \def\nkerns@{\null\kern-\tw@ sp\kern\tw@ sp}% +} +\let\endmakebib\endgroup +\def\noprepunct{\noprepunct@true} +\def\noprespace{\noprespace@true} +\def\noquotes{\noquotes@true} +\def\setbibinfo@#1{\edef\next@{\ifnopunct@1\else0\fi + \ifnospace@1\else0\fi\ifnoprepunct@1\else0\fi\ifnoprespace@1\else0\fi + \ifnoquotes@1\else0\fi}% + \DNii@{00000}% + \ifx\next@\nextii@\else\xdef\bibinfo@{\bibinfo@\the#1,\next@}% + \fi} +\def\getbibinfo@#1{\ifx\bibinfo@\empty + \let\next@0\let\nextii@0\let\nextiii@0\let\nextiv@0\let\nextv@0\else + \edef\next@{\def + \noexpand\next@####1\the#1,####2####3####4####5####6####7\noexpand\next@ + {\let\noexpand\next@####2\let\noexpand\nextii@####3% + \let\noexpand\nextiii@####4\let\noexpand\nextiv@####5% + \let\noexpand\nextv@####6}% + \noexpand\next@\bibinfo@\the#1,00000\noexpand\next@}\next@ + \fi} +\def\bookinquotes{\bookinquotes@true} +\def\paperinquotes{\paperinquotes@true} +\def\ininbook{\ininbook@true} +\def\closequotes@{\ifopenquotes@''\openquotes@false\fi} +\def\bib{\global\let\bibinfo@\empty\global\let\translinfo@\relax\beginbib@true + \begingroup\noindent@ + \hangindent\bibindent@\hangafter\@ne\bib@} +\def\v@id#1{\setbox#1\box\voidb@x} +\def\bib@{\v@id\nobox@\v@id\keybox@\v@id\bybox@\v@id\paperbox@ + \v@id\paperinfobox@\v@id\jourbox@\v@id\volbox@\v@id\issuebox@ + \v@id\yrbox@\v@id\pgbox@\v@id\ppbox@\v@id\bookbox@\v@id\inbookbox@ + \v@id\bookinfobox@\v@id\publbox@\v@id\publaddrbox@\v@id\edbox@ + \v@id\edsbox@\v@id\langbox@\v@id\translbox@\v@id\finalinfobox@ + \bgroup} +\def\Setnonemptybox@#1#2{\unskip\setbibinfo@#1\egroup#2% + \def\aftergroup@{\ifdim\wd#1=\z@\setbox#1\box\voidb@x\fi}% + \setbox#1\vbox\bgroup\aftergroup\aftergroup@\hsize\maxdimen\leftskip\z@ + \rightskip\z@\hbadness\@M\hfuzz\maxdimen\noindent} +\def\setnonemptybox@#1{\Setnonemptybox@#1\relax} +\def\no{\setnonemptybox@\nobox@} +\def\key{\setnonemptybox@\keybox@\bf} +\def\by{\setnonemptybox@\bybox@} +\def\bysame{\setnonemptybox@\bybox@\leaders\hrule\hskip3em\null} +\def\paper{\setnonemptybox@\paperbox@ + \ifpaperinquotes@\getbibinfo@\paperbox@ + \if\nextv@1\else``\fi\else\it\fi} +\def\paperinfo{\setnonemptybox@\paperinfobox@} +\def\jour{\Setnonemptybox@\jourbox@\prevjour@true} +\def\vol{\setnonemptybox@\volbox@\bf} +\def\issue{\setnonemptybox@\issuebox@} +\def\yr{\setnonemptybox@\yrbox@} +\def\toappear{\noprepunct\finalinfo(to appear)} +\def\pg{\setnonemptybox@\pgbox@} +\def\pp{\setnonemptybox@\ppbox@} +\def\book{\Setnonemptybox@\bookbox@\prevbook@true + \ifbookinquotes@\getbibinfo@\bookbox@ + \if\nextv@1\else``\fi\else\it\fi} +\def\inbook{\Setnonemptybox@\inbookbox@\prevbook@true + \ifininbook@ in \fi\ifbookinquotes@\getbibinfo@\inbookbox@ + \if\nextv@1\else``\fi\fi} +\def\bookinfo{\setnonemptybox@\bookinfobox@} +\def\publ{\setnonemptybox@\publbox@} +\def\publaddr{\setnonemptybox@\publaddrbox@} +\def\ed{\setnonemptybox@\edbox@} +\def\eds{\setnonemptybox@\edsbox@} +\def\lang{\setnonemptybox@\langbox@} +\def\finalinfo{\setnonemptybox@\finalinfobox@} +\def\getbox@#1{\setbox\z@\vbox{\vskip-\@M\p@ + \unvbox#1% + \setboxzl@ + \global\setbox\@ne\hbox{\unhbox\z@\unskip\unskip\unpenalty}% + \ifdim\lastskip=-\@M\p@\else + \loop\ifdim\lastskip=-\@M\p@ + \else\unskip\unpenalty\setboxzl@ + \global\setbox\@ne\hbox{\unhbox\z@\unhbox\@ne}% + \repeat\fi}% + \unhbox\@ne} +\def\adjustpunct@#1{\count@\lastkern + \ifnum\count@=\z@#1\closequotes@\else + \ifnum\count@>\tw@#1\closequotes@\else + \ifnum\count@<-\tw@#1\closequotes@\else + \unkern\unkern\setboxzl@ + \skip@\lastskip\unskip + \count@@\lastpenalty\unpenalty + \ifnum\count@=\tw@\unskip\setboxzl@\fi + \ifdim\skip@=\z@\else\hskip\skip@\fi + #1\closequotes@ + \ifnum\count@=\tw@\null\hfill\fi + \penalty\count@@ + \fi\fi\fi} +\def\prepunct@#1#2{\getbibinfo@#2% + \ifnopunct@ + \else + \if\nextiii@0\adjustpunct@#1\fi + \fi + \closequotes@ + \ifnospace@ + \else + \if\nextiv@0\space\else\fi + \fi + \nopunct@false\nospace@false + \if\next@1\nopunct@true\fi + \if\nextii@1\nospace@true\fi} +\def\ppunbox@#1#2{\prepunct@{#1}#2% + \getbox@#2} +\def\endbib@{% + \ifbeginbib@ + \ifvoid\nobox@ + \ifvoid\keybox@\else\hbox to\bibindent@{[\getbox@\keybox@]\hss}\fi + \else\hbox to\bibindent@{\hss\getbox@\nobox@. }\fi + \ifvoid\bybox@\else\getbox@\bybox@\fi + \else + \nopunct@true + \ifvoid\bybox@\else\ppunbox@\relax\bybox@\fi + \fi + \ifvoid\translbox@\else\ppunbox@,\translbox@\fi + \ifvoid\paperbox@\else\ppunbox@,\paperbox@\ifpaperinquotes@ + \if\nextv@1\else\openquotes@true\fi\fi + \fi + \ifvoid\paperinfobox@\else\ppunbox@,\paperinfobox@\fi + \test@false + \ifvoid\jourbox@\else\test@true\ppunbox@,\jourbox@\fi + \ifprevjour@\test@true\fi + \iftest@ + \ifvoid\volbox@\else\ppunbox@\relax\volbox@\fi + \ifvoid\issuebox@ + \else\prepunct@\relax\issuebox@ no.~\getbox@\issuebox@\fi + \ifvoid\yrbox@\else\prepunct@\relax\yrbox@(\getbox@\yrbox@)\fi + \ifvoid\ppbox@\else\ppunbox@,\ppbox@\fi + \ifvoid\pgbox@\else\prepunct@,\pgbox@ p.~\getbox@\pgbox@\fi + \fi + \test@false + \ifvoid\bookbox@\else\test@true\ppunbox@,\bookbox@\ifbookinquotes@ + \if\nextv@1\else\openquotes@true\fi\fi\fi + \ifvoid\inbookbox@\else\test@true\ppunbox@,\inbookbox@\ifbookinquotes@ + \if\nextv@1\else\openquotes@true\fi\fi\fi + \ifprevbook@\test@true\fi + \iftest@ + \ifvoid\edbox@\else\prepunct@\relax\edbox@(\getbox@\edbox@, ed.)\fi + \ifvoid\edsbox@\else\prepunct@\relax\edsbox@(\getbox@\edsbox@, eds.)\fi + \ifvoid\bookinfobox@\else\ppunbox@,\bookinfobox@\fi + \ifvoid\publbox@\else\ppunbox@,\publbox@\fi + \ifvoid\publaddrbox@\else\ppunbox@,\publaddrbox@\fi + \ifvoid\yrbox@\else\ppunbox@,\yrbox@\fi + \ifvoid\ppbox@\else\prepunct@,\ppbox@ pp.~\getbox@\ppbox@\fi + \ifvoid\pgbox@\else\prepunct@,\pgbox@ p.~\getbox@\pgbox@\fi + \fi + \ifvoid\finalinfobox@ + \ifendbib@ + \ifnopunct@\else.\closequotes@\fi + \else + \ifvoid\langbox@\else\space(\getbox@\langbox@)\fi + \/\semicolon@\closequotes@ + \fi + \else + \ifendbib@ + \ppunbox@{.\spacefactor3000\relax}\finalinfobox@ + \ifnopunct@\else.\fi + \else + \ppunbox@,\finalinfobox@\/\semicolon@\fi + \fi + \ifvoid\langbox@\else\space(\getbox@\langbox@)\fi +} +\def\endbib{\unskip\egroup\endbib@true\endbib@\par\endgroup} +\def\morebib{\unskip\egroup + \endbib@false\endbib@ + \global\let\bibinfo@\empty\beginbib@false + \bib@} +\def\anotherbib{\unskip\egroup + \endbib@false\endbib@ + \global\let\bibinfo@\empty\beginbib@false + \prevjour@false\prevbook@false\bib@} +\def\transl{\unskip + \xdef\translinfo@{\the\translbox@,\ifnopunct@1\else0\fi + \ifnospace@1\else0\fi\ifnoprepunct@1\else0\fi\ifnoprespace@1\else0\fi0}% + \egroup\endbib@false\endbib@ + \global\let\bibinfo@\translinfo@\beginbib@false + \bib@ + \egroup + \def\aftergroup@{\ifdim\wd\translbox@=\z@\setbox\translbox@\box\voidb@x\fi}% + \setbox\translbox@\vbox\bgroup\aftergroup\aftergroup@ + \hsize\maxdimen\leftskip\z@\rightskip\z@\hbadness\@M\hfuzz\maxdimen + \noindent} +\catcode`\@=\active diff --git a/macros/lamstex/inputs/bib.tox b/macros/lamstex/inputs/bib.tox new file mode 100644 index 0000000000..765f2d197f --- /dev/null +++ b/macros/lamstex/inputs/bib.tox @@ -0,0 +1,17 @@ +\catcode`\@=11 +\let\makebib\undefined\let\makebib@W\relax\let\endmakebib\undefined +\let\noprepunct\undefined\let\noprespace\undefined\let\noquotes\undefined +\let\setbibinfo@\relax\let\getbibinfo@\relax\let\bookinquotes\undefined +\let\paperinquotes\undefined\let\ininbook\undefined\let\closequotes@\relax +\let\bib\undefined\let\v@id\relax\let\bib@\relax\let\Setnonemptybox@\relax +\let\setnonemptybox@\relax\let\no\undefined\let\key\undefined +\let\by\undefined\let\bysame\undefined\let\paper\undefined +\let\paperinfo\undefined\let\jour\undefined\let\vol\undefined +\let\issue\undefined\let\yr\undefined\let\toappear\undefined +\let\pg\undefined\let\pp\undefined\let\book\undefined\let\inbook\undefined +\let\bookinfo\undefined\let\publ\undefined\let\publaddr\undefined +\let\ed\undefined\let\eds\undefined\let\lang\undefined\let\finalinfo\undefined +\let\getbox@\relax\let\adjustpunct@\relax\let\prepunct@\relax +\let\ppunbox@\relax\let\endbib@\relax\let\endbib\undefined +\let\morebib\undefined\let\anotherbib\undefined\let\transl\undefined +\catcode`\@=\active diff --git a/macros/lamstex/inputs/bibtex.tex b/macros/lamstex/inputs/bibtex.tex new file mode 100644 index 0000000000..52a9af0174 --- /dev/null +++ b/macros/lamstex/inputs/bibtex.tex @@ -0,0 +1,59 @@ +% BIBTEX.TEX VERSION 2.0 +% COPYRIGHT (C) 1991 BY THE TEXPLORATORS CORPORATION +% ALL RIGHTS RESERVED + +% THIS FILE SHOULD NOT BE CHANGED IN ANY WAY. + +%\input cd.tox +%\input islands.tox +%\input bib.tox +%\input alignat.tox +%\input lists.tox +%\input cardord.tox +%\input anynum.tox +%\input dblacc.tox +%\input literal.tox +\catcode`\@=11 +\let\alloc@\alloc@@ +\def\args@#1{\count@\@ne\toks@{}\loop + \edef\next@{\toks@{\the\toks@########\number\count@}}% + \next@\ifnum\count@<#1 \advance\count@\@ne\repeat} +\def\newcommand#1{\def\nextiv@{#1}% + \def\nextii@[##1]{\args@{##1}% + \edef\next@{\noexpand\define\expandafter\noexpand\nextiv@\the\toks@}% + \next@}% + \def\nextiii@{\edef\next@{\noexpand\define + \expandafter\noexpand\nextiv@}\next@}% + \def\next@{\ifx\next[\expandafter\nextii@\else\expandafter\nextiii@\fi}% + \futurelet\next\next@} +\def\em{\ifdim\fontdimen\@ne\the\font>\z@\rm\else\it\fi} +\def\mbox{\leavevmode\hbox} +\newcount\bibitemcount@ +\newdimen\bibindent@ +\def\bibitem{% + \def\nextii@[##1]##2{\bibitem@{##1}{##2}}% + \def\nextiii@##1{\global\advance\bibitemcount@\@ne + \bibitem@{\number\bibitemcount@}{##1}}% + \def\next@{\ifx\next[\expandafter\nextii@\else + \expandafter\nextiii@\fi}% + \futurelet\next\next@}% +\def\bibitem@#1#2{{\def\thelabel@{#1}% + \let\thelabel@@\empty\let\thelabel@@@\empty\let\thelabel@@@@\empty + \label{#2}}% + \par + \hangafter\@ne\hangindent\bibindent@ + \noindent@\hbox to\bibindent@{#1\hfil}% + \ignorespaces} +\def\begin#1#2{% + \def\next@{#1}\def\nextii@{thebibliography}% + \ifx\next@\nextii@ + \beginthebibliography@{#2}% + \else\Err@{I can't deal with \string\begin{#1}}\fi} +\def\end#1{\def\next@{#1}\def\nextii@{thebibliography}% + \ifx\next@\nextii@\else\Err@{I can deal with \string\end{#1}}\fi} +\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne + \ch@ck#1#4#2% + \allocationnumber=\count1#1% + \global#3#5=\allocationnumber + \wlog{\string#5=\string#2\the\allocationnumber}} +\catcode`\@=\active
\ No newline at end of file diff --git a/macros/lamstex/inputs/book.st b/macros/lamstex/inputs/book.st new file mode 100644 index 0000000000..26e1e6a8d3 --- /dev/null +++ b/macros/lamstex/inputs/book.st @@ -0,0 +1,505 @@ +% BOOK.ST VERSION 2.0 +% COPYRIGHT (C) 1989, 1990, 1991 BY THE TEXPLORATORS CORPORATION +% ALL RIGHTS RESERVED + +% IF THIS FILE IS MODIFIED IN ANY WAY, IT SHOULD BE GIVEN A DIFFERENT NAME ! + +\catcode`\@=11 +\ifx\bookst@\relax\catcode`\@=\active\endinput\else\let\bookst@\relax\fi +\let\alloc@\alloc@@ + +\vbadness=10000 + +\hsize=29pc +\vsize=40pc +\normallineskiplimit=1pt +\parindent=10pt +\advance\hoffset 42pt +\advance\voffset 90pt + +\def\makeheadline{\hbox{\botsmash{\line{\vbox to8.5pt{}\the\headline}}}% + \nointerlineskip\vskip20pt} +\def\makefootline{\baselineskip=2.5pc\relax\line{\the\footline}} + +\let\title\undefined +\let\author\undefined +\let\affil\undefined +\let\endaffil\undefined +\let\date\undefined +\let\makebib\undefined + +\font@\ninerm=cmr9 +\font@\eightrm=cmr8 +\font@\sixrm=cmr6 +\font@\eighti=cmmi8 \skewchar\eighti='177 +\font@\sixi=cmmi6 \skewchar\sixi='177 +\font@\ninesy=cmsy9 \skewchar\ninesy='60 +\font@\eightsy=cmsy8 \skewchar\eightsy='60 +\font@\sixsy=cmsy6 \skewchar\sixsy='60 +\font@\eightbf=cmbx8 +\font@\sixbf=cmbx6 +\font@\eightit=cmti8 +\font@\eightsl=cmsl8 +\font@\eighttt=cmtt8 + +\ifmsamloaded@ + \font@\eightmsa=msam8 + \font@\sixmsa=msam6 +\fi + +\ifmsbmloaded@ + \font@\eightmsb=msbm8 + \font@\sixmsb=msbm6 +\fi + +\ifeufmloaded@ + \font@\eighteufm=eufm8 + \font@\sixeufm=eufm6 +\fi + +\ifcmmibloaded@ + \font@\eightcmmib=cmmib8 \skewchar\eightcmmib='177 + \font@\sixcmmib=cmmib6 \skewchar\sixcmmib='177 +\fi + +\ifcmbsyloaded@ + \font@\eightcmbsy=cmbsy8 \skewchar\eightcmbsy='60 + \font@\sixcmbsy=cmbsy6 \skewchar\sixcmbsy='60 +\fi + +\newskip\ttglue@ + +\def\tenpoint{\def\pointsize@{10}% + \normalbaselineskip12\p@ + \abovedisplayskip12\p@ plus3\p@ minus9\p@ + \belowdisplayskip12\p@ plus3\p@ minus9\p@ + \abovedisplayshortskip\z@ plus3\p@ + \belowdisplayshortskip7\p@ plus3\p@ minus4\p@ + \textonlyfont@\rm\tenrm + \textonlyfont@\it\tenit + \textonlyfont@\sl\tensl + \textonlyfont@\bf\tenbf + \ifsyntax@\def\big##1{{\hbox{$\left##1\right.$}}}\else + \let\big\tenbig@ + \textfont\z@\tenrm \scriptfont\z@\sevenrm \scriptscriptfont\z@\fiverm + \textfont\@ne\teni \scriptfont\@ne\seveni \scriptscriptfont\@ne\fivei + \textfont\tw@\tensy \scriptfont\tw@\sevensy \scriptscriptfont\tw@\fivesy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \textfont\itfam\tenit + \textfont\slfam\tensl + \textfont\bffam\tenbf \scriptfont\bffam\sevenbf + \scriptscriptfont\bffam\fivebf + \ifmsamloaded@ + \textfont\msafam\tenmsa \scriptfont\msafam\sevenmsa + \scriptscriptfont\msafam\fivemsa + \fi + \ifmsbmloaded@ + \textfont\msbfam\tenmsb \scriptfont\msbfam\sevenmsb + \scriptscriptfont\msbfam\fivemsb + \fi + \ifeufmloaded@ + \textfont\eufmfam\teneufm \scriptfont\eufmfam\seveneufm + \scriptscriptfont\eufmfam\fiveeufm + \fi + \ifcmmibloaded@ + \textfont\cmmibfam\tencmmib \scriptfont\cmmibfam\sevencmmib + \scriptscriptfont\cmmibfam\fivecmmib + \fi + \ifcmbsyloaded@ + \textfont\cmbsyfam\tencmbsy \scriptfont\cmbsyfam\sevencmbsy + \scriptscriptfont\cmbsyfam\fivecmbsy + \fi + \fi + \let\tt\tentt + \tt\ttglue@.5emminus.15em + \setbox\strutbox\hbox{\vrule\height8.5\p@\depth3.5\p@\width\z@}% + \setbox\strutbox@\hbox{\vrule\height8\p@\depth3\p@\width\z@}% + \ex@.2326ex\normalbaselines\ifmmode\else\rm\fi} + +\def\tenbig@#1{{\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}} + +\tenpoint + +\def\eightpoint{\def\pointsize@{8}% + \normalbaselineskip10\p@ + \abovedisplayskip10\p@ plus2.4\p@ minus7.2\p@ + \belowdisplayskip10\p@ plus2.4\p@ minus7.2\p@ + \abovedisplayshortskip\z@ plus2.4\p@ + \belowdisplayshortskip5.6\p@ plus2.4\p@ minus3.2\p@ + \textonlyfont@\rm\eightrm + \textonlyfont@\it\eightit + \textonlyfont@\sl\eightsl + \textonlyfont@\bf\eightbf + \ifsyntax@\def\big##1{{\hbox{$\left##1\right.$}}}\else + \let\big\eightbig@ + \textfont\z@\eightrm \scriptfont\z@\sixrm \scriptscriptfont\z@\fiverm + \textfont\@ne\eighti \scriptfont\@ne\sixi \scriptscriptfont\@ne\fivei + \textfont\tw@\eightsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\fivesy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \textfont\itfam\eightit + \textfont\slfam\eightsl + \textfont\bffam\eightbf \scriptfont\bffam\sixbf + \scriptscriptfont\bffam\fivebf + \ifmsamloaded@ + \textfont\msafam\eightmsa \scriptfont\msafam\sixmsa + \scriptscriptfont\msafam\fivemsa + \fi + \ifmsbmloaded@ + \textfont\msbfam\eightmsb \scriptfont\msbfam\sixmsb + \scriptscriptfont\msbfam\fivemsb + \fi + \ifeufmloaded@ + \textfont\eufmfam\eighteufm \scriptfont\eufmfam\sixeufm + \scriptscriptfont\eufmfam\fiveeufm + \fi + \ifcmmibloaded@ + \textfont\cmmibfam\eightcmmib \scriptfont\cmmibfam\sixcmmib + \scriptscriptfont\cmmibfam\fivecmmib + \fi + \ifcmbsyloaded@ + \textfont\cmbsyfam\eightcmbsy \scriptfont\cmbsyfam\sixcmbsy + \scriptscriptfont\cmbsyfam\fivecmbsy + \fi + \fi + \let\tt\eighttt + \tt\ttglue@.4emminus.12em + \setbox\strutbox\hbox{\vrule\height7\p@\depth3\p@\width\z@}% + \setbox\strutbox@\hbox{\vrule\height6.5\p@\depth2.5\p@\width\z@}% + \ex@.2326ex\normalbaselines\ifmmode\else\rm\fi} + +\def\eightbig@#1{{\hbox{$\textfont\z@\ninerm\textfont\tw@\ninesy + \left#1\vbox to6.5\p@{}\right.\n@space$}}} + +{\catcode` =\active +\gdef\litcodes@@{\def {\allowbreak\hskip\ttglue@}}} + +\def\LamSTeX{L\kern-.4em\raise.3ex\hbox{$\ssize\Cal A$}% + \DN@{10}\ifx\next@\pointsize@\kern-.25em\else\kern-.3em\fi + \lower.4ex\hbox{\DN@{10}\ifx\next@\pointsize@\eightsy\else\sixsy\fi M}% + \kern-.1em{$\Cal S$}-\TeX} + +\def\windex@{\ifindexing@ + \expandafter\unmacro@\meaning\stari@\unmacro@ + \edef\macdef@{\string"\macdef@\string"}% + \edef\next@{\write\ndx@{\macdef@}}\next@ + \write\ndx@{{\number\pageno}{\page@N}{\page@P}{\page@Q}}% + \fi + \ifindexproofing@ + \ifx\stariii@\empty\else + \expandafter\unmacro@\meaning\stariii@\unmacro@\fi + \insert\margin@{\hbox{\eightpoint + \vrule\height7\p@\depth3\p@\width\z@\starii@ + \ifx\stariii@\empty\else\tt\macdef@\fi}}\fi} + +\newcount\toclevel@ +\toclevel@=3 +\def\toclevel#1{\toclevel@#1\relax} + +\def\HLtoc@{% + \iftoc@ + \ifnum\toclevel@<\@ne\else + {\noexpands@\let\style\relax + \edef\next@{\write\toc@{% + \noexpand\noexpand\expandafter\noexpand\HLname@ + {\expandafter\noexpand\csname HL@W\HLlevel@\endcsname}{\QorThelabel@@@@}}}% + \next@}% + \expandafter\unmacro@\meaning\entry@\unmacro@ + \Sixtoc@ + \write\toc@{\noexpand\Page{\number\pageno}{\page@N}% + {\page@P}{\page@Q}^^J}% + \fi + \fi} + +\def\hltoc@{% + \iftoc@ + \ifnum\hllevel@<\toclevel@ + {\noexpands@\let\style\relax + \edef\next@{\write\toc@{% + \ifnopunct@\noexpand\noexpand\noexpand\nopunct\fi + \ifnospace@\noexpand\noexpand\noexpand\nospace\fi + \noexpand\noexpand\expandafter\noexpand\hlname@ + {\expandafter\noexpand\csname hl@W\hllevel@\endcsname}{\QorThelabel@@@@}}}% + \next@}% + \expandafter\unmacro@\meaning\entry@\unmacro@ + \Sixtoc@ + \write\toc@{\noexpand\Page{\number\pageno}{\page@N}% + {\page@P}{\page@Q}^^J}% + \fi + \fi} + +\newif\ifflush@ +\def\FlushedFigs{\global\flush@true} +\def\NoFlushedFigs{\global\flush@false} + +\newif\ifSflush@ + +\def\flush@{\par\vfill\break\null\kern-\topskip\nobreak + \global\Sflush@true\vfill + \supereject} + + +\font\BF=cmbx10 scaled \magstep3 + +\expandafter\newcount\csname HL@C0\endcsname +\csname HL@C0\endcsname\z@ +\expandafter\def\csname HL@S0\endcsname#1{#1\/} +\expandafter\let\csname HL@N0\endcsname\Roman +\expandafter\let\csname HL@P0\endcsname\empty +\expandafter\let\csname HL@Q0\endcsname\empty +\expandafter\def\csname HL@F0\endcsname{\BF} +\expandafter\def\csname HL@W0\endcsname{Part} + +\def\notocwrite@#1#2#3{\iftoc@\test@true\else\test@false\fi + \toc@false#1{#2}#3\iftest@\toc@true\fi} + +\notocwrite@\NameHL0\part + +\newif\ifpart@ + +\expandafter\def\csname HL@0\endcsname#1\endHL{\flush@ + \global\part@true + \ifodd\pageno\else\advancepageno\fi + {\locallabel@ + \global\setbox\@ne\vbox{\Let@\baselineskip21\p@ + \halign{\BF\ignorespaces##\unskip\hfil\cr + \test@false + \expandafter\ifx\csname HL@W0\endcsname\empty + \ifx\thelabel@@\empty\global\let\Next@ T\fi\fi + \ifx\Next@ T% + \else + \expandafter\ifx\csname HL@W0\endcsname\empty\else + \def\next@{\let\nextii@}\expandafter\next@\csname HL@W0\endcsname + \uppercase\expandafter{\nextii@}\space\space\fi + {\HL@@F\thelabel@@}\fi\cr + \noalign{\ifx\Next@ T\vskip-\baselineskip\else\vskip30pt\fi}% + \uppercase{\ignorespaces#1}\crcr}}}% + \def\aftertoc@{\vfill\break\advancepageno\global\part@false}% + \hrule\height\z@\mark{}\vskip1.25in\unvbox\@ne} + +\notocwrite@\NameHL1\chapter +\newword\chapter{Chapter} +\newif\iffirstchapterpage@ +\newif\ifinsection@ + +\newif\ifrunningchapter@ +\newtoks\runningchaptertoks@ +\def\runningchapter#1{\global\runningchapter@true\runningchaptertoks@{#1}} + +\let\thechapter@\relax + +\expandafter\def\csname HL@1\endcsname#1\endHL{\flush@\global\insection@false + \ifrunningchapter@\else\runningchaptertoks@{#1}\fi + \global\runningchapter@false + {\noexpands@ + \xdef\thechapter@{\ifx\Thepref@\empty\else\Thepref@\null. \fi + \the\runningchaptertoks@}}% + \global\firstchapterpage@true + {\locallabel@ + \global\setbox\@ne\vbox{\Let@\tabskip\hss@ + \halign to\hsize{\bf\hfil\ignorespaces##\unskip\hfil\cr + \expandafter\ifx\csname HL@W1\endcsname\empty\else + \csname HL@W1\endcsname\space\fi + {\HL@@F\ifx\thelabel@@\empty\else\thelabel@@\space\fi}% + \ignorespaces#1\crcr}}% + }% + \unvbox\@ne\mark{}\nobreak\vskip\baselineskip + %\firstparflush@ +} + +\def\firstflush@{\parindent\z@ + \everypar{\global\parindent10\p@\global\everypar{}}} + +\footline={\ifpart@\hfil + \else + \iffirstchapterpage@\hfil\ninerm\page@S{\page@P\page@N{\number\page@C}% + \page@Q}\hfil\fi + \global\firstchapterpage@false + \fi} + +\def\advancedimtopins@{% + \iffirstchapterpage@ + \else + \advance\dimen@\dimen\topins + \global\dimen\topins\dimen@ + \fi} + + +\newif\ifblankpage@ +\newbox\topinsbox@ +\newcount\endpenalty@ +\endpenalty@=-'10000000000 + +\def\plainoutput{% + \test@false + \ifflush@\test@true + \else\ifSflush@\global\Sflush@false + \ifnum\insertpenalties=\z@\test@true\fi + \fi\fi + \iftest@ + \test@false + \ifvoid\footins + \ifvoid\topins\test@true\else\ifdim\ht\topins=\z@\test@true\fi\fi + \fi + \iftest@ + \setbox\z@\vbox{\unvcopy\@cclv\unskip\unpenalty\unkern + \global\setbox\@ne\lastbox\unskip}% + \ifdim\ht\z@=\z@\ifdim\ht\@ne=\z@\global\advance\pageno\m@ne + \global\blankpage@true\fi\fi + \fi + \fi + \specialsplit@false\ifvoid\topins\else\ifdim\ht\topins=\z@ + \specialsplit@true\advance\minpagesize-\skip\topins\fi\fi + \fliptopins@ + \ifblankpage@\setbox\outbox@\pagebody\else + \setbox\outbox@\vbox{\makeheadline\pagebody\makefootline}\fi + {\noexpands@\let\style\relax + \ifblankpage@ + \ifnum\outputpenalty=\endpenalty@ + \shipout\vbox{\hrule\width\p@\height\z@\box\topins}% + \fi + \global\blankpage@false + \else + \shipout@\box\outbox@\fi}% + \advancepageno + \resetdimtopins@ + \ifvoid\@cclv\else\unvbox\@cclv\penalty\outputpenalty\fi + \ifnum\outputpenalty>-\@MM\else\dosupereject\fi} + +\def\blankpage{\null\null\vfill\break} + +\def\appendices{% + \NameHL1\appendix + \Reset\appendix1% + \newnumstyle\appendix\Alph + \newword\appendix{Appendix}% +} + +\notocwrite@\Namehl1\section +\newstyle\section#1{#1\null.} + +\newif\ifrunningsection@ +\newtoks\runningsectiontoks@ +\def\runningsection#1{\global\runningsection@true\runningsectiontoks@{#1}} + +\expandafter\def\csname hl@1\endcsname#1{\global\insection@true + \medbreak + \ifrunningsection@\else\runningsectiontoks@{#1}\fi + \global\runningsection@false + \noindent@@ + {\noexpands@ + \edef\next@{\toks@{\ifx\Thepref@\empty\else\Thepref@\null. \fi + \the\runningsectiontoks@}}\next@ + \mark{\the\toks@}}% + {\locallabel@ + {\hl@@F\ifx\thelabel@@\empty\else\thelabel@@\space\fi}\bf + \ignorespaces#1\unskip\punct@{\null.}}% + \par\nobreak\smallskip} + +\def\BotOrChap@#1\BotOrChap@{\DN@{#1}\ifx\next@\empty + \thechapter@\else\ignorespaces#1\unskip\fi} + +\headline={\unlabel@\noset@ + \def\\{\unskip\space\ignorespaces}% + \ifpart@\hfil\else\iffirstchapterpage@\hfil\else + \ifodd\pageno + \hfil + \smc\expandafter\BotOrChap@\botmark\BotOrChap@ + \hfil + \llap{\tenpoint\folio}% + \else + \rlap{\tenpoint\folio}% + \hfil\smc\thechapter@ + \hfil + \fi + \fi\fi} + +\expandafter\newcount\csname hl@C2\endcsname +\csname hl@C2\endcsname\z@ +\expandafter\def\csname hl@S2\endcsname#1{#1\null.} +\expandafter\let\csname hl@N2\endcsname\arabic +\expandafter\def\csname hl@P2\endcsname{} +\expandafter\def\csname hl@Q2\endcsname{} +\expandafter\def\csname hl@F2\endcsname{\bf} +\expandafter\let\csname hl@W2\endcsname\empty + +\notocwrite@\Namehl2\subsection + +\expandafter\def\csname hl@2\endcsname#1{% + \ifinsection@ + \smallbreak + \noindent@@ + {\locallabel@ + {\hl@@F\ifx\thelabel@@\empty\else\thelabel@@\space\fi}\bf + \ignorespaces#1\unskip\punct@{\null.}\addspace@\enspace}% + \else + \Err@{\string\subsection\space not in a \string\section}% + \fi} + +\expandafter\newcount\csname hl@C3\endcsname +\csname hl@C3\endcsname\z@ +\expandafter\def\csname hl@S3\endcsname#1{#1} +\expandafter\let\csname hl@N3\endcsname\arabic +\expandafter\let\csname hl@P3\endcsname\empty +\expandafter\let\csname hl@Q3\endcsname\empty +\expandafter\let\csname hl@F3\endcsname\empty +\expandafter\let\csname hl@W3\endcsname\empty + +\notocwrite@\Namehl3\topic + +\expandafter\def\csname hl@3\endcsname#1{% + \smallbreak + \noindent@@ + {\locallabel@ + \bf\ignorespaces#1\unskip\punct@{\null.}\addspace@\enspace}} + +\expandafter\newcount\csname hl@C4\endcsname +\csname hl@C4\endcsname\z@ +\expandafter\def\csname hl@S4\endcsname#1{#1} +\expandafter\let\csname hl@N4\endcsname\arabic +\expandafter\let\csname hl@P4\endcsname\empty +\expandafter\let\csname hl@Q4\endcsname\empty +\expandafter\let\csname hl@F4\endcsname\empty +\expandafter\let\csname hl@W4\endcsname\empty + +\notocwrite@\Namehl4\subtopic + +\expandafter\def\csname hl@4\endcsname#1{% + \smallbreak + {\locallabel@\bf\ignorespaces#1\unskip + \punct@{\null.}\addspace@\enspace}} + +\expandafter\def\csname HL@I1\endcsname{\Reset\hl11% + \Reset\tag1\Reset\claim1\Reset\Figure1\Reset\Table1% + \ifx\pref\empty\newpre\section{}\def\tag@P{}\def\claim@P{}\def\island@P{}% + \else + \newpre\section{\pref.}\edef\tag@P{\pref.}\edef\claim@P{\pref.}% + \edef\island@P{\pref.}% + \fi +} +\expandafter\def\csname hl@I1\endcsname{\Reset\hl21% + \newpre\hl2{\ifx\pref\empty\else\pref.\fi}} +\expandafter\def\csname hl@I2\endcsname{\Reset\hl31} +\expandafter\def\csname hl@I3\endcsname{\Reset\hl41} + +\def\vfootnote@#1{\insert\footins + \bgroup + \floatingpenalty\@MM\interlinepenalty\interfootnotelinepenalty + \leftskip\z@\rightskip\z@\spaceskip\z@\xspaceskip\z@ + \eightpoint + \splittopskip\ht\strutbox\splitmaxdepth\dp\strutbox + \locallabel@\noindent@@{\foottext@F#1}\,\modifyfootnote@ + \strut\FN@\fo@t} + +\def\UseBibTeX{\immediate\openout\auxwrite@=\jobname.aux + \let\cite\BTcite@ + \def\nocite##1{\immediate\write\auxwrite@{\string\citation{##1}}}% + \def\bibliographystyle##1{\immediate\write\auxwrite@{\string + \bibstyle{##1}}}% + \def\bibliography##1{\immediate\write\auxwrite@{\string\bibdata{##1}}}} + +\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne + \ch@ck#1#4#2\allocationnumber=\count1#1 + \global#3#5=\allocationnumber + \wlog{\string#5=\string#2\the\allocationnumber}} + +\catcode`\@=13 diff --git a/macros/lamstex/inputs/book.stb b/macros/lamstex/inputs/book.stb new file mode 100644 index 0000000000..ccce9b3c3b --- /dev/null +++ b/macros/lamstex/inputs/book.stb @@ -0,0 +1,560 @@ +% BOOK.STB VERSION 2.0 +% COPYRIGHT (C) 1989, 1990, 1991 BY THE TEXPLORATORS CORPORATION +% ALL RIGHTS RESERVED + +% IF THIS FILE IS MODIFIED IN ANY WAY, IT SHOULD BE GIVEN A DIFFERENT NAME ! + +\catcode`\@=11 +\let\alloc@\alloc@@ + +\hsize=29pc +\advance\hoffset 42pt +\vsize=40pc +\advance\voffset 90pt +\normallineskiplimit=1pt +\parindent=10pt + +\font@\ninerm=cmr9 +\font@\eightrm=cmr8 +\font@\sixrm=cmr6 +\font@\eighti=cmmi8 \skewchar\eighti='177 +\font@\sixi=cmmi6 \skewchar\sixi='177 +\font@\ninesy=cmsy9 \skewchar\ninesy='60 +\font@\eightsy=cmsy8 \skewchar\eightsy='60 +\font@\sixsy=cmsy6 \skewchar\sixsy='60 +\font@\eightbf=cmbx8 +\font@\sixbf=cmbx6 +\font@\eightit=cmti8 +\font@\eightsl=cmsl8 +\font@\eighttt=cmtt8 + +\ifmsamloaded@ + \font@\eightmsa=msam8 + \font@\sixmsa=msam6 +\fi + +\ifmsbmloaded@ + \font@\eightmsb=msbm8 + \font@\sixmsb=msbm6 +\fi + +\ifeufmloaded@ + \font@\eighteufm=eufm8 + \font@\sixeufm=eufm6 +\fi + +\ifcmmibloaded@ + \font@\eightcmmib=cmmib8 \skewchar\eightcmmib='177 + \font@\sixcmmib=cmmib6 \skewchar\sixcmmib='177 +\fi + +\ifcmbsyloaded@ + \font@\eightcmbsy=cmbsy8 \skewchar\eightcmbsy='60 + \font@\sixcmbsy=cmbsy6 \skewchar\sixcmbsy='60 +\fi + +\newskip\ttglue@ + +\def\tenpoint{\def\pointsize@{10}% + \normalbaselineskip12\p@ + \abovedisplayskip12\p@ plus3\p@ minus9\p@ + \belowdisplayskip12\p@ plus3\p@ minus9\p@ + \abovedisplayshortskip\z@ plus3\p@ + \belowdisplayshortskip7\p@ plus3\p@ minus4\p@ + \textonlyfont@\rm\tenrm + \textonlyfont@\it\tenit + \textonlyfont@\sl\tensl + \textonlyfont@\bf\tenbf + \ifsyntax@\def\big##1{{\hbox{$\left##1\right.$}}}\else + \let\big\tenbig@ + \textfont\z@\tenrm \scriptfont\z@\sevenrm \scriptscriptfont\z@\fiverm + \textfont\@ne\teni \scriptfont\@ne\seveni \scriptscriptfont\@ne\fivei + \textfont\tw@\tensy \scriptfont\tw@\sevensy \scriptscriptfont\tw@\fivesy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \textfont\itfam\tenit + \textfont\slfam\tensl + \textfont\bffam\tenbf \scriptfont\bffam\sevenbf + \scriptscriptfont\bffam\fivebf + \ifmsamloaded@ + \textfont\msafam=\tenmsa \scriptfont\msafam=\sevenmsa + \scriptscriptfont\msafam=\fivemsa + \fi + \ifmsbmloaded@ + \textfont\msbfam=\tenmsb \scriptfont\msbfam=\sevenmsb + \scriptscriptfont\msbfam=\fivemsb + \fi + \ifeufmloaded@ + \textfont\eufmfam=\teneufm \scriptfont\eufmfam=\seveneufm + \scriptscriptfont\eufmfam=\fiveeufm + \fi + \ifcmmibloaded@ + \textfont\cmmibfam=\tencmmib \scriptfont\cmmibfam=\sevencmmib + \scriptscriptfont\cmmibfam=\fivecmmib + \fi + \ifcmbsyloaded@ + \textfont\cmbsyfam=\tencmbsy \scriptfont\cmbsyfam=\sevencmbsy + \scriptscriptfont\cmbsyfam=\fivecmbsy + \fi + \fi + \let\tt\tentt + \tt\ttglue@=.5em minus .15em\relax + \setbox\strutbox\hbox{\vrule\height8.5\p@\depth3.5\p@\width\z@}% + \setbox\strutbox@\hbox{\vrule\height8\p@\depth3\p@\width\z@}% + \ex@=.2326ex\normalbaselines\ifmmode\else\rm\fi} + +\def\tenbig@#1{{\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}} + +\tenpoint + +\def\eightpoint{\def\pointsize@{8}% + \normalbaselineskip10\p@ + \abovedisplayskip10\p@ plus2.4\p@ minus7.2\p@ + \belowdisplayskip10\p@ plus2.4\p@ minus7.2\p@ + \abovedisplayshortskip\z@ plus2.4\p@ + \belowdisplayshortskip5.6\p@ plus2.4\p@ minus3.2\p@ + \textonlyfont@\rm\eightrm + \textonlyfont@\it\eightit + \textonlyfont@\sl\eightsl + \textonlyfont@\bf\eightbf + \ifsyntax@\def\big##1{{\hbox{$\left##1\right.$}}}\else + \let\big\eightbig@ + \textfont\z@\eightrm \scriptfont\z@\sixrm \scriptscriptfont\z@\fiverm + \textfont\@ne\eighti \scriptfont\@ne\sixi \scriptscriptfont\@ne\fivei + \textfont\tw@\eightsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\fivesy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \textfont\itfam\eightit + \textfont\slfam\eightsl + \textfont\bffam\eightbf \scriptfont\bffam\sixbf + \scriptscriptfont\bffam\fivebf + \ifmsamloaded@ + \textfont\msafam=\eightmsa \scriptfont\msafam=\sixmsa + \scriptscriptfont\msafam=\fivemsa + \fi + \ifmsbmloaded@ + \textfont\msbfam=\eightmsb \scriptfont\msbfam=\sixmsb + \scriptscriptfont\msbfam=\fivemsb + \fi + \ifeufmloaded@ + \textfont\eufmfam=\eighteufm \scriptfont\eufmfam=\sixeufm + \scriptscriptfont\eufmfam=\fiveeufm + \fi + \ifcmmibloaded@ + \textfont\cmmibfam=\eightcmmib \scriptfont\cmmibfam=\sixcmmib + \scriptscriptfont\cmmibfam=\fivecmmib + \fi + \ifcmbsyloaded@ + \textfont\cmbsyfam=\eightcmbsy \scriptfont\cmbsyfam=\sixcmbsy + \scriptscriptfont\cmbsyfam=\fivecmbsy + \fi + \fi + \let\tt\eighttt + \tt\ttglue@=.4em minus .12em + \setbox\strutbox\hbox{\vrule\height7\p@\depth3\p@\width\z@}% + \setbox\strutbox@\hbox{\vrule\height6.5\p@\depth2.5\p@\width\z@}% + \ex@=.2326ex\normalbaselines\ifmmode\else\rm\fi} + +\def\eightbig@#1{{\hbox{$\textfont\z@\ninerm\textfont\tw@\ninesy + \left#1\vbox to6.5\p@{}\right.\n@space$}}} + +{\catcode` =\active +\gdef\litcodes@@{\def {\penalty\z@\hskip\ttglue@}}} + +\def\LamSTeX{L\kern-.4em\raise.3ex\hbox{$\ssize\Cal A$}% + \DN@{10}\ifx\next@\pointsize@\kern-.25em\else\kern-.3em\fi + \lower.4ex\hbox{\if\pointsize@ t\eightsy\else\sixsy\fi M}% + \kern-.1em{$\Cal S$}-\TeX} + +\def\adjustpunct@#1{\count@\lastkern + \ifnum\count@=\z@#1\else + \ifnum\count@>\tw@#1\else + \ifnum\count@<-\tw@#1\else + \unkern\unkern\setboxzl@ + \skip@\lastskip\unskip + \count@@\lastpenalty\unpenalty + \ifnum\count@=\tw@\unskip\setboxzl@\fi + \ifdim\skip@=\z@\else\hskip\skip@\fi + #1% + \ifnum\count@=\tw@\null\hfill\fi + \penalty\count@@ + \fi\fi\fi} +\def\ignorepars@{\FNSS@\ignorepars@@} +\def\ignorepars@@{\ifx\next\par\DN@\par{\FN@\ignorepars@@}\else + \let\next@\relax\fi\next@} +\newcount\ctype@ +\newcount\Ctype@ +\newif\ifleftcolbreak@ +\def\cbreak@#1#2{\ifcase\ctype@#1\or\nobreak#2\else + \global\leftcolbreak@true + \ifdim\pagetotal>\pageheight@\global\leftcolbreak@false\fi + \global\Ctype@\ctype@\break\fi\ctype@\z@} +\newif\ifletter@ +\newtoks\marktoks@i +\newtoks\marktoks@ii +\newtoks\marktoks@iii +\newtoks\marktoks@iv +\newtoks\marktoks@v +\newif\ifentry@ +\newcount\dii@ +\def\Topage@#1#2{\DN@{#2}\ifx\next@\frompage@{\pagecs@{\frompage@}}% + \else{\pagecs@{{\frompage@}\hbox{--}#2}}\fi\egroup\ignorepars@} +\newdimen\pageheight@ +\pageheight@\vsize +\newdimen\doublepageheight@ +\doublepageheight@2\pageheight@ +\advance\doublepageheight@1pc +\newdimen\pagewidth@ +\pagewidth@\hsize +\def\makeheadline{% + \hbox{\botsmash{\hbox to\pagewidth@{\vbox to8.5pt{}\the\headline}}}% + \nointerlineskip\vskip26pt} +\def\makefootline{\baselineskip=2.5pc\relax + \hbox to \pagewidth@{\the\footline}} +\newif\iffirstindexpage@ +\def\makeindex@W{Index} +\font\Bf=cmbx10 scaled \magstep1 +\def\combinecolumns@{% + \setbox\outbox@\vbox{\makeheadline + \vbox to\pageheight@{\boxmaxdepth\maxdepth + \iffirstindexpage@ + \vbox to30\p@{% + \hbox to\pagewidth@{\hfil\Bf\uppercase\expandafter{\makeindex@W}\hfil}% + \vfil}% + \nointerlineskip + \fi + \wd\z@\hsize\wd\tw@\hsize + \setboxz@h to\pagewidth@{\box\z@\kern1pc\box\tw@}% + \dimen@\dp\z@\box\z@\kern-\dimen@\vfill}% + \makefootline}% + {\noexpands@\let\style=\relax + \shipout@\box\outbox@ + }% + \global\vsize\doublepageheight@ + \global\firstindexpage@false + \advancepageno} +\newdimen\prevcoldepth@ +\def\doublecolumns@{% + \dimen@\pageheight@\iffirstindexpage@\advance\dimen@-30\p@\fi + \ifleftcolbreak@ + \global\leftcolbreak@false + \vbox to\dimen@{\dimen@\dp\@cclv\unvbox\@cclv + \ifnum\Ctype@=\thr@@\kern-\dimen@\vfill\fi}% + \allowbreak + \else + \splittopskip\topskip\splitmaxdepth\maxdepth + \setbox\z@\vsplit\@cclv to\dimen@ + \ifnum\Ctype@=\z@\global\Ctype@\@ne\fi + \ifcase\Ctype@\or + \setbox\tw@\vsplit\@cclv to\dimen@\global\prevcoldepth@\dp\tw@ + \else + \global\prevcoldepth@\dp\@cclv + \setbox\tw@\vbox to\dimen@{\unvbox\@cclv + \ifnum\Ctype@=\thr@@\kern-\prevcoldepth@\vfill\fi}% + \fi + \combinecolumns@ + \ifcase\Ctype@\or + \expandafter\continue@\splitbotmark{}\relax\relax\relax\relax + \relax\relax\continue@ + \else\expandafter\continue@\botmark{}\relax\relax\relax\relax + \relax\relax\continue@ + \fi + \ifvoid\@cclv\else\unvbox\@cclv\penalty\outputpenalty\fi + \fi + \global\Ctype@\z@} +\def\continue@#1#2#3#4#5#6#7#8\continue@{\def\next@{#1}\ifx\next@\empty + \else + \noindent@#3 ({\it continued\/})\par + \ifnum#1>\@ne\noindent@\enspace(#4 {\it continued\/})\par\fi + \ifnum#1>\tw@\noindent@\enspace(#5 {\it continued\/})\par\fi + \ifnum#1>\thr@@\noindent@\enspace(#6 {\it continued\/})\par\fi + \ifnum#1>4 \noindent@\enspace(#7 {\it continued\/})\par\fi + \ifvoid\@cclv + \global\advance\prevcoldepth@-\prevdepth\kern\prevcoldepth@ + \else + \skip@\baselineskip\advance\skip@\parskip + \advance\skip@-\topskip\advance\skip@-\prevdepth + \vskip\skip@ + \fi + \fi} +\newif\ifshortlastcolumn@ +\def\balancecolumns@{\setbox\z@\vbox{\unvbox\@cclv\unskip}% + \dimen@\ht\z@\advance\dimen@\topskip\advance\dimen@-\baselineskip + \divide\dimen@\tw@ + \splittopskip\topskip + \global\dimen@i\dimen@ + {\vbadness\@M + \loop + \global\setbox\thr@@\copy\z@ + \global\setbox\@ne\vsplit\thr@@ to\dimen@i + \ifdim\ht\thr@@>\dimen@i\global\advance\dimen@i\p@ + \repeat}% + \setbox\z@\vbox to\dimen@i{\unvbox\@ne}% + \setbox\tw@\vbox to\dimen@i{\dimen@\dp\thr@@\unvbox\thr@@ + \ifshortlastcolumn@\kern-\dimen@\vfill\fi}% + \combinecolumns@} + +\newif\ifspecialpage@ + +\let\heading + +\def\makebib{\par\vfill\break + \global\specialpage@true + \gdef\headline@{\makebib@W}% + \begingroup + \eightpoint\sfcode`\.=\@m\everypar{}\parindent\z@ + \def\nopunct{\nopunct@true}\def\nospace{\nospace@true}% + \nopunct@false\nospace@false + \def\lkerns@{\null\kern\m@ne sp\kern\@ne sp}% + \def\nkerns@{\null\kern-\tw@ sp\kern\tw@ sp}% + \hbox to\pagewidth@{\hfil\Bf\uppercase\expandafter{\makebib@W}\hfil}% + \iftoc@ + \expandafter\unmacro@\meaning\makebib@W\unmacro@ + {\noexpands@ + \edef\next@{\write\toc@{\noexpand\noexpand\noexpand\makebib + {\macdef@}}}\next@}% + \write\toc@{\noexpand\Page{\number\pageno}{\page@N}{\page@P}{\page@Q}^^J}% + \fi + \nobreak\bigskip} + +\def\bibliography@W{Bibliography} + +\def\bibliography{\checkmainfile@ + \immediate\openin\bbl@=\mainfile@.bbl + \ifeof\bbl@ + \W@{No .bbl file}% + \else + \immediate\closein\bbl@ + \begingroup\input bibtex \input\mainfile@.bbl \endgroup + \fi}% + +\def\beginthebibliography@#1{\par\vfill\break + \global\specialpage@true\gdef\headline@{\makebib@W}% + \eightpoint\setboxz@h{#1\ }\bibindent@\wdz@ + \sfcode`\.=\@m\everypar{}\parindent\z@ + \hbox to\pagewidth@{\hfil\Bf\uppercase\expandafter{\bibliography@W}\hfil}% + \iftoc@ + \expandafter\unmacro@\meaning\makebib@W\unmacro@ + {\noexpands@ + \edef\next@{\write\toc@{\noexpand\noexpand\noexpand\bibliography + {\macdef@}}}\next@}% + \write\toc@{\noexpand\Page{\number\pageno}{\page@N}{\page@P}{\page@Q}^^J}% + \fi + \nobreak\bigskip} + +\def\makeindex{\checkmainfile@\par\vfill\break + \iftoc@ + \expandafter\unmacro@\meaning\makeindex@W\unmacro@ + {\noexpands@ + \edef\next@{\write\toc@{\noexpand\noexpand\noexpand\makeindex + {\macdef@}}}\next@}% + \write\toc@{\noexpand\Page{\number\pageno}{\page@N}{\page@P}{\page@Q}^^J}% + \fi + \global\specialpage@true + \global\firstindexpage@true + \gdef\headline@{\makeindex@W}% + \begingroup + \let\asterisk*% + \def\lkerns@{\null\kern\m@ne sp\kern\@ne sp} + \def\nkerns@{\null\kern-\tw@ sp\kern\tw@ sp} + \def\nocolumnbreak{\ctype@\@ne} + \def\columnbreak{\ctype@\tw@} + \def\newcolumn{\ctype@\thr@@} + \def\LETTER##1{\par + \mark{}% + \cbreak@{\penalty-200 \bigskip}\bigskip + \letter@true\centerline{\bf##1}\nobreak\medskip}% + \def\Entry##1##2##3##4##5##6##7{\par\entry@true + \marktoks@i{##3}\marktoks@ii{##4}\marktoks@iii{##5}% + \marktoks@iv{##6}\marktoks@v{##7}% + \ifcase##1% + \or + \ifletter@\else\mark{}\fi + \cbreak@\relax\relax + \noindent@ + \mark{10{\the\marktoks@i}}% + \hangafter\@ne\hangindent.5em{##3}% + \or + \ifcase##2% + \ifletter@\else\mark{}\fi + \cbreak@\relax\relax + \noindent@ + \mark{20{\the\marktoks@i}{\the\marktoks@ii}}% + \hangafter\@ne\hangindent.5em{##3}\par\nobreak + \noindent@\hangafter\@ne\hangindent1.5em\quad{##4}% + \or + \mark{10{\the\marktoks@i}}% + \cbreak@\relax\relax + \noindent@ + \mark{21{\the\marktoks@i}{\the\marktoks@ii}}% + \hangafter\@ne\hangindent1.5em\quad{##4}% + \fi + \or + \ifcase##2% + \ifletter@\else\mark{}\fi + \cbreak@\relax\relax + \noindent@ + \mark{30{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}}% + \hangafter\@ne\hangindent.5em{##3}\par\nobreak + \noindent@\hangafter\@ne\hangindent1.5em\quad{##4}\par\nobreak + \noindent@\hangafter\@ne\hangindent2.5em\qquad{##5}% + \or + \mark{10{\the\marktoks@i}}% + \cbreak@\relax\relax + \noindent@ + \mark{31{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}}% + \hangafter\@ne\hangindent1.5em\quad{##4}\par\nobreak + \noindent@\hangafter\@ne\hangindent2.5em\qquad{##5}% + \or + \mark{2\number\dii@{\the\marktoks@i}{\the\marktoks@ii}}% + \cbreak@\relax\relax + \noindent@ + \mark{32{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}}% + \hangafter\@ne\hangindent2.5em\qquad{##5}% + \fi + \or + \ifcase##2% + \ifletter@\else\mark{}\fi + \cbreak@\relax\relax + \noindent@ + \mark{40{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}% + {\the\marktoks@iv}}% + \hangafter\@ne\hangindent.5em{##3}\par\nobreak + \noindent@\hangafter\@ne\hangindent1.5em\quad{##4}\par\nobreak + \noindent@\hangafter\@ne\hangindent2.5em\qquad{##5}\par\nobreak + \noindent@\hangafter\@ne\hangindent3.5em\qquad\quad{##6}% + \or + \mark{10{\the\marktoks@i}}% + \cbreak@\relax\relax + \noindent@ + \mark{41{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}% + {\the\marktoks@iv}}% + \noindent@\hangafter\@ne\hangindent1.5em\quad{##4}\par\nobreak + \noindent@\hangafter\@ne\hangindent2.5em\qquad{##5}\par\nobreak + \noindent@\hangafter\@ne\hangindent3.5em\qquad\quad{##6}% + \or + \mark{2\number\dii@{\the\marktoks@i}{\the\marktoks@ii}}% + \cbreak@\relax\relax + \noindent@ + \mark{42{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}% + {\the\marktoks@iv}}% + \noindent@\hangafter\@ne\hangindent2.5em\qquad{##5}\par\nobreak + \noindent@\hangafter\@ne\hangindent3.5em\qquad\quad{##6}% + \or + \mark{3\number\dii@{\the\marktoks@i}{\the\marktoks@ii}% + {\the\marktoks@iii}}% + \cbreak@\relax\relax + \noindent@ + \mark{43{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}% + {\the\marktoks@iv}}% + \hangafter\@ne\hangindent3.5em\qquad\quad{##6}% + \fi + \or + \ifcase##2% + \ifletter@\else\mark{}\fi + \cbreak@\relax\relax + \noindent@ + \mark{50{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}% + {\the\marktoks@iv}{\the\marktoks@v}}% + \hangafter\@ne\hangindent.5em{##3}\par\nobreak + \noindent@\hangafter\@ne\hangindent1.5em\quad{##4}\par\nobreak + \noindent@\hangafter\@ne\hangindent2.5em\qquad{##5}\par\nobreak + \noindent@\hangafter\@ne\hangindent3.5em\qquad\quad{##6}\par\nobreak + \noindent@\hangafter\@ne\hangindent4.5em\qquad\qquad{##7}% + \or + \mark{10{\the\marktoks@i}}% + \cbreak@\relax\relax + \noindent@ + \mark{51{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}% + {\the\marktoks@iv}{\the\marktoks@v}}% + \hangafter\@ne\hangindent1.5em\quad{##4}\par\nobreak + \noindent@\hangafter\@ne\hangindent2.5em\qquad{##5}\par\nobreak + \noindent@\hangafter\@ne\hangindent3.5em\qquad\quad{##6}\par\nobreak + \noindent@\hangafter\@ne\hangindent4.5em\qquad\qquad{##7}% + \or + \mark{2\number\dii@{\the\marktoks@i}{\the\marktoks@ii}}% + \cbreak@\relax\relax + \noindent@ + \mark{52{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}% + {\the\marktoks@iv}{\the\marktoks@v}}% + \hangafter\@ne\hangindent2.5em\qquad{##5}\par\nobreak + \noindent@\hangafter\@ne\hangindent3.5em\qquad\quad{##6}\par\nobreak + \noindent@\hangafter\@ne\hangindent4.5em\qquad\qquad{##7}% + \or + \mark{3\number\dii@{\the\marktoks@i}{\the\marktoks@ii}% + {\the\marktoks@iii}}% + \cbreak@\relax\relax + \noindent@ + \mark{53{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}% + {\the\marktoks@iv}{\the\marktoks@v}}% + \hangafter\@ne\hangindent3.5em\qquad\quad{##6}\par\nobreak + \noindent@\hangafter\@ne\hangindent4.5em\qquad\qquad{##7}% + \or + \mark{4\number\dii@{\the\marktoks@i}{\the\marktoks@ii}% + {\the\marktoks@iii}{\the\marktoks@iv}}% + \cbreak@\relax\relax + \noindent@ + \mark{54{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}% + {\the\marktoks@iv}{\the\marktoks@v}}% + \hangafter\@ne\hangindent4.5em\qquad\qquad{##7}% + \fi + \fi + \dii@##2\relax + \letter@false + \ignorepars@}% + \def\Page##1{\ifentry@\adjustpunct@,\enspace\else\adjustpunct@, \fi + \entry@false{##1}\ignorepars@}% + \def\Pagespan##1{\ifentry@\adjustpunct@,\enspace\else\adjustpunct@, \fi + \entry@false\def\frompage@{##1}{##1}\ignorepars@}% + \def\Topage##1{\DN@{##1}\ifx\next@\frompage@ + \else\hbox{--}{##1}\fi\ignorepars@}% + \def\PageSpan##1##2{\ifentry@\adjustpunct@,\enspace\else\adjustpunct@, \fi + \entry@false\def\pagecs@{##1}\def\frompage@{##2}% + \bgroup\let\Topage\Topage@\ignorepars@}% + \def\Xref##1{\ifentry@\else + \def\See####1{\adjustpunct@\semicolon@\space + {\it see~also\/}~####1}{##1}\fi\ignorepars@}% + \def\Morexref##1{\ifentry@\else + \def\See####1{\adjustpunct@, ####1}{##1}\fi\ignorepars@}% + \def\Entryxref##1##2##3##4##5##6##7##8{% + \Entry{##1}{##2}{##3}{##4}{##5}{##6}{##7}% + \def\See####1{\adjustpunct@, {\it see\/}~####1}{##8}\ignorepars@}% + \def\shortlastcolumn{\shortlastcolumn@true} + \hsize14pc + \global\vsize\doublepageheight@ + \maxdepth\maxdimen + \global\firstindexpage@true + \global\advance\vsize-60\p@ + \everypar{}\parindent\z@ + \eightpoint + \rightskip\z@ plus3em \spaceskip.3333em \xspaceskip.5em + \output{\doublecolumns@}% + \input\mainfile@.xdx + \mark{}% + \output{\balancecolumns@}\vfil\break\endgroup + \global\vsize\pageheight@} + +\footline={\ifspecialpage@\hfil\ninerm\page@S{\page@P\page@N{\number\page@C}% + \page@Q}\hfil\fi + \global\specialpage@false} + +\headline={\unlabel@\noset@\def\\{\unskip\space\ignorespaces}% + \ifspecialpage@\hfil + \else + \ifodd\pageno + \hfil + \smc\headline@ + \hfil + \llap{\tenpoint\folio}% + \else + \rlap{\tenpoint\folio}% + \hfil + \smc\headline@ + \hfil + \fi + \fi} + +\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne + \ch@ck#1#4#2\allocationnumber=\count1#1 + \global#3#5=\allocationnumber + \wlog{\string#5=\string#2\the\allocationnumber}} + +\catcode`\@=\active diff --git a/macros/lamstex/inputs/book.stf b/macros/lamstex/inputs/book.stf new file mode 100644 index 0000000000..c5ff2bd72b --- /dev/null +++ b/macros/lamstex/inputs/book.stf @@ -0,0 +1,360 @@ +% BOOK.STF VERSION 2.0 +% COPYRIGHT (C) 1989, 1990, 1991 BY THE TEXPLORATORS CORPORATION +% ALL RIGHTS RESERVED + +% IF THIS FILE IS MODIFIED IN ANY WAY, IT SHOULD BE GIVEN A DIFFERENT NAME ! + +\catcode`\@=11 +\let\alloc@\alloc@@ + +\hsize=29pc +\vsize=40pc +\normallineskiplimit=1pt +\parindent=10pt +\advance\hoffset 42pt +\advance\voffset 90pt + +\def\makeheadline{\hbox{\botsmash{\line{\vbox to8.5pt{}\the\headline}}}% + \nointerlineskip\vskip26pt} +\def\makefootline{\baselineskip=2.5pc\relax\line{\the\footline}} + +\newnumstyle\page\roman + +\font@\ninerm=cmr9 +\font@\eightrm=cmr8 +\font@\sixrm=cmr6 +\font@\eighti=cmmi8 \skewchar\eighti='177 +\font@\sixi=cmmi6 \skewchar\sixi='177 +\font@\ninesy=cmsy9 \skewchar\ninesy='60 +\font@\eightsy=cmsy8 \skewchar\eightsy='60 +\font@\sixsy=cmsy6 \skewchar\sixsy='60 +\font@\eightbf=cmbx8 +\font@\sixbf=cmbx6 +\font@\eightit=cmti8 +\font@\eightsl=cmsl8 +\font@\eighttt=cmtt8 + +\ifmsamloaded@ + \font@\eightmsa=msam8 + \font@\sixmsa=msam6 +\fi + +\ifmsbmloaded@ + \font@\eightmsb=msbm8 + \font@\sixmsb=msbm6 +\fi + +\ifeufmloaded@ + \font@\eighteufm=eufm8 + \font@\sixeufm=eufm6 +\fi + +\ifcmmibloaded@ + \font@\eightcmmib=cmmib8 \skewchar\eightcmmib='177 + \font@\sixcmmib=cmmib6 \skewchar\sixcmmib='177 +\fi + +\ifcmbsyloaded@ + \font@\eightcmbsy=cmbsy8 \skewchar\eightcmbsy='60 + \font@\sixcmbsy=cmbsy6 \skewchar\sixcmbsy='60 +\fi + +\newskip\ttglue@ + +\def\tenpoint{\def\pointsize@{10}% + \normalbaselineskip12\p@ + \abovedisplayskip12\p@ plus3\p@ minus9\p@ + \belowdisplayskip12\p@ plus3\p@ minus9\p@ + \abovedisplayshortskip\z@ plus3\p@ + \belowdisplayshortskip7\p@ plus3\p@ minus4\p@ + \textonlyfont@\rm\tenrm + \textonlyfont@\it\tenit + \textonlyfont@\sl\tensl + \textonlyfont@\bf\tenbf + \ifsyntax@\def\big##1{{\hbox{$\left##1\right.$}}}\else + \let\big\tenbig@ + \textfont\z@\tenrm \scriptfont\z@\sevenrm \scriptscriptfont\z@\fiverm + \textfont\@ne\teni \scriptfont\@ne\seveni \scriptscriptfont\@ne\fivei + \textfont\tw@\tensy \scriptfont\tw@\sevensy \scriptscriptfont\tw@\fivesy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \textfont\itfam\tenit + \textfont\slfam\tensl + \textfont\bffam\tenbf \scriptfont\bffam\sevenbf + \scriptscriptfont\bffam\fivebf + \ifmsamloaded@ + \textfont\msafam\tenmsa \scriptfont\msafam\sevenmsa + \scriptscriptfont\msafam\fivemsa + \fi + \ifmsbmloaded@ + \textfont\msbfam\tenmsb \scriptfont\msbfam\sevenmsb + \scriptscriptfont\msbfam\fivemsb + \fi + \ifeufmloaded@ + \textfont\eufmfam\teneufm \scriptfont\eufmfam\seveneufm + \scriptscriptfont\eufmfam\fiveeufm + \fi + \ifcmmibloaded@ + \textfont\cmmibfam\tencmmib \scriptfont\cmmibfam\sevencmmib + \scriptscriptfont\cmmibfam\fivecmmib + \fi + \ifcmbsyloaded@ + \textfont\cmbsyfam\tencmbsy \scriptfont\cmbsyfam\sevencmbsy + \scriptscriptfont\cmbsyfam\fivecmbsy + \fi + \fi + \let\tt\tentt + \tt\ttglue@.5emminus.15em + \setbox\strutbox\hbox{\vrule\height8.5\p@\depth3.5\p@\width\z@}% + \setbox\strutbox@\hbox{\vrule\height8\p@\depth3\p@\width\z@}% + \ex@.2326ex\normalbaselines\ifmmode\else\rm\fi} + +\def\tenbig@#1{{\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}} + +\tenpoint + +\def\eightpoint{\def\pointsize@{8}% + \normalbaselineskip10\p@ + \abovedisplayskip10\p@ plus2.4\p@ minus7.2\p@ + \belowdisplayskip10\p@ plus2.4\p@ minus7.2\p@ + \abovedisplayshortskip\z@ plus2.4\p@ + \belowdisplayshortskip5.6\p@ plus2.4\p@ minus3.2\p@ + \textonlyfont@\rm\eightrm + \textonlyfont@\it\eightit + \textonlyfont@\sl\eightsl + \textonlyfont@\bf\eightbf + \ifsyntax@\def\big##1{{\hbox{$\left##1\right.$}}}\else + \let\big\eightbig@ + \textfont\z@\eightrm \scriptfont\z@\sixrm \scriptscriptfont\z@\fiverm + \textfont\@ne\eighti \scriptfont\@ne\sixi \scriptscriptfont\@ne\fivei + \textfont\tw@\eightsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\fivesy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \textfont\itfam\eightit + \textfont\slfam\eightsl + \textfont\bffam\eightbf \scriptfont\bffam\sixbf + \scriptscriptfont\bffam\fivebf + \ifmsamloaded@ + \textfont\msafam\eightmsa \scriptfont\msafam\sixmsa + \scriptscriptfont\msafam\fivemsa + \fi + \ifmsbmloaded@ + \textfont\msbfam\eightmsb \scriptfont\msbfam\sixmsb + \scriptscriptfont\msbfam\fivemsb + \fi + \ifeufmloaded@ + \textfont\eufmfam\eighteufm \scriptfont\eufmfam\sixeufm + \scriptscriptfont\eufmfam\fiveeufm + \fi + \ifcmmibloaded@ + \textfont\cmmibfam\eightcmmib \scriptfont\cmmibfam\sixcmmib + \scriptscriptfont\cmmibfam\fivecmmib + \fi + \ifcmbsyloaded@ + \textfont\cmbsyfam\eightcmbsy \scriptfont\cmbsyfam\sixcmbsy + \scriptscriptfont\cmbsyfam\fivecmbsy + \fi + \fi + \let\tt\eighttt + \tt\ttglue@.4emminus.12em + \setbox\strutbox\hbox{\vrule\height7\p@\depth3\p@\width\z@}% + \setbox\strutbox@\hbox{\vrule\height6.5\p@\depth2.5\p@\width\z@}% + \ex@.2326ex\normalbaselines\ifmmode\else\rm\fi} + +\def\eightbig@#1{{\hbox{$\textfont\z@\ninerm\textfont\tw@\ninesy + \left#1\vbox to6.5\p@{}\right.\n@space$}}} + +{\catcode` =\active +\gdef\litcodes@@{\def {\penalty\z@\hskip\ttglue@}}} + +\def\LamSTeX{L\kern-.4em\raise.3ex\hbox{$\ssize\Cal A$}% + \DN@{10}\ifx\next@\pointsize@\kern-.25em\else\kern-.3em\fi + \lower.4ex\hbox{\DN@{10}\ifx\next@\pointsize@\eightsy\else\sixsy\fi M}% + \kern-.1em{$\Cal S$}-\TeX} + +\font\Bf=cmbx10 scaled \magstep1 +\font\BF=cmbx10 scaled \magstep3 + +\newif\ifspecialpage@ + +\let\headline@\relax + +\def\makepiece#1{\par\vfill\break + \global\specialpage@true + \gdef\headline@{\ignorespaces#1\unskip}% + \centerline{\BF\uppercase{\ignorespaces#1\unskip}}% + \vskip30\p@ plus10\p@ minus 10\p@} + +\def\dotleaders{\leaders\hbox to10pt{\rm\hfil.\hfil}\hfil}% +\def\Page@#1#2#3#4{\hbox{\rm#3#2{#1}#4\unskip}}% +\long\def\widerthanhsize@#1#2#3#4{\test@true + \setbox\z@\vbox{\hsize\maxdimen + \rm\noindent@#1#2#3#4\par\setboxzl@}% + \ifdim\wdz@=\z@\setboxz@h{\rm#1#2#3#4}\ifdim\wdz@>\hsize\else + \test@false\fi\fi}% +\long\def\setentry@#1#2#3#4{% + \widerthanhsize@{#1}{#2}{#3}{#4}% + \iftest@ + \longentry@{#1}{#2}{#3}{#4}% + \else + \hbox to\hsize{\rm\strut#1#2#3#4\strut}% + \fi}% +\def\endstrut{\lower\dp\strutbox\vbox to\dp\strutbox{}} +\newdimen\thehang@ +\long\def\longentry@#1#2#3#4{\setboxz@h{#1}% + \thehang@\wdz@\advance\thehang@10\p@ + \setboxz@h{#4}% + \setbox\z@\vbox{\advance\hsize-\wdz@\advance\hsize-20\p@ + \normalbaselines + \hangafter\@ne\hangindent\thehang@ + \vskip-\parskip + \noindent@\rm\vbox to\ht\strutbox{}\hbox{#1}#2\vphantom{#3#4}\endstrut}% + \setbox\z@\vbox{\unvbox\z@ + \setboxzl@ + \hbox to\hsize{\kern\thehang@\unhbox\z@\unskip\unskip#3#4\endstrut}% + }% + \unvbox\z@}% +\newif\ifemptynumber@ +\def\Style@{\emptynumber@false\FN@\Style@@}% +\def\Style@@{\ifx\next"\expandafter\Style@@@\else\expandafter\Style@@@@\fi}% +\def\Style@@@@#1\Style@{\style{#1}}% +\def\Style@@@"#1"\Style@{\DN@{#1}\ifx\next@\empty\emptynumber@true + \else#1\fi}% + +\expandafter\def\csname HL@S0\endcsname#1{#1\/} +\expandafter\def\csname HL@S1\endcsname#1{#1\null.} +\expandafter\def\csname hl@S1\endcsname#1{#1\null.} +\expandafter\def\csname hl@S2\endcsname#1{#1\null.} +\expandafter\def\csname hl@S3\endcsname#1{#1\/} +\expandafter\def\csname hl@S4\endcsname#1{#1\/} + +\def\maketoc@W{Contents} + +\newif\ifbib@ + +\def\maketoc{\checkmainfile@\par\vfill\break + \begingroup + \unlabel@\noset@\let\nopunct\relax\let\nospace\relax\let\overlong\relax + \everypar{}\parindent\z@\lineskiplimit\z@ + \def\HL##1##2##3##4\Page##5##6##7##8{\def\HLlevel@{##1}% + \ifnum\HLlevel@=\z@ + \bigbreak\bigskip + \begingroup + \def\\{\unskip\space\ignorespaces}% + \setentry@{\Bf\def\next@{##2}\ifx\next@\empty\else\uppercase{##2} \fi + \let\style\HL@@S\hbox to35pt{\Style@##3\Style@\hss}\ifemptynumber@ + \nobreak\hskip-35pt\fi\uppercase{\ignorespaces##4\unskip}}{}\hfil{}% + \endgroup + \nobreak\smallskip + \else + \ifnum\HLlevel@=\@ne + \bigbreak + \begingroup + \def\\{\unskip\space\ignorespaces}% + \setentry@{\bf\def\next@{##2}\ifx\next@\empty\else##2 \fi + \let\style\HL@@S\Style@##3\Style@ + \ifemptynumber@\else\space\fi}% + {\bf\ignorespaces##4\unskip}\dotleaders{\Page@{##5}{##6}{##7}{##8}}% + \endgroup + \penalty500 \smallskip + \else + \Err@{\string\HL##1 not defined in this style}% + \fi\fi}% + \def\hl##1##2##3##4\Page##5##6##7##8{\def\hllevel@{##1}% + \ifnum\hllevel@<\thr@@ + \setentry@{\rm\kern10\p@\let\style\hl@@S\Style@##3\Style@ + \ifemptynumber@\else\space\fi}% + {\rm\ignorespaces##4\unskip}\dotleaders{\Page@{##5}{##6}{##7}{##8}}% + \vskip\parskip + \else + \ifnum\hllevel@<5 + \setentry@{}{\kern\hllevel@ em\quad + \rm\ignorespaces##4\unskip}\dotleaders{\Page@{##5}{##6}{##7}{##8}}% + \vskip\parskip + \else + \Err@{\string\hl##1 not defined in this style}% + \fi\fi}% + \def\NameHL##1##2{\def##2####1####2####3\Page{% + \HL{##1}{####1}{####2}####3\Page}}% + \def\Namehl##1##2{\def##2####1####2####3\Page{% + \hl{##1}{####1}{####2}####3\Page}}% + \NameHL0\part + \NameHL1\chapter \Namehl1\section \Namehl2\subsection \Namehl3\topic + \Namehl4\subtopic + \def\makebib##1\Page##2##3##4##5{\bigbreak\bigskip\bigskip + \setentry@{\Bf##1}{}{\dotleaders}{\Page@{##2}{##3}{##4}{##5}}% + \bib@true}% + \let\bibliography\makebib + \def\makeindex##1\Page##2##3##4##5{\ifbib@\bigskip\else + \bigbreak\bigskip\bigskip\fi + \setentry@{\Bf##1}{}{\dotleaders}{\Page@{##2}{##3}{##4}{##5}}}% + \global\specialpage@true + \gdef\headline@{\maketoc@W}% + \centerline{\BF\uppercase\expandafter{\maketoc@W}}% + \vskip30\p@ plus 10\p@ minus 10\p@ + \input\mainfile@.toc + \endgroup} + + + + +\def\makelistFigures{\makelist\c{F}List of Figures\endmakelist} +\def\makelistTables{\makelist\c{T}List of Tables\endmakelist} + +\def\makelist\c#1#2\endmakelist{\checkmainfile@ + \par\vfill\break + \begingroup + \unlabel@\noset@\let\nopunct\relax\let\nospace\relax\let\overlong\relax + \lineskiplimit\z@ + \def\listclass@{#1}% + \def\island{\FN@\island@}% + \def\island@{\ifx\next\at@\expandafter\island@@\else + \expandafter\island@@@\fi}% + \def\island@@\at@##1\c##2##3##4##5\Page##6##7##8##9{% + \def\islandtype@{##1}% + \def\next@{##2}% + \ifx\next@\listclass@ + \setentry@{\rm##3 \let\style\island@@@S\Style@##4\Style@ + \ifemptynumber@\else\space\fi}% + {\rm\ignorespaces##5\unskip}\dotleaders{\Page@{##6}{##7}{##8}{##9}}% + \vskip\parskip + \fi}% + \def\island@@@\c##1##2##3##4\Page##5##6##7##8{% + \island@@\at@\island\c{##1}{##2}{##3}##4\Page{##5}{##6}{##7}{##8}}% + \def\newisland##1\c##2##3{\def##1####1####2\Page####3####4####5####6{% + \island\at@##1\c{##2}{##3}{####1}####2\Page{####3}{####4}{####5}{####6}}}% + \newisland\Figure\c{F}{Figure}% + \newisland\Table\c{T}{Table}% + \global\specialpage@true + \gdef\headline@{\ignorespaces#2\unskip}% + \vbox{\Let@\tabskip\centering@\halign to\hsize + {\BF\baselineskip22pt\hfil\ignorespaces##\unskip\hfil\cr + \uppercase{\ignorespaces#2\unskip}\crcr}}% + \vskip30\p@ plus10\p@ minus10\p@ + \input\mainfile@.tic + \endgroup} + +\footline={\ifspecialpage@\hfil\ninerm\page@S{\page@P\page@N{\number\page@C}% + \page@Q}\hfil\fi + \global\specialpage@false} + +\headline={\unlabel@\noset@\def\\{\unskip\space\ignorespaces}% + \ifspecialpage@\hfil + \else + \ifodd\pageno + \hfil + \smc\headline@ + \hfil + \llap{\tenpoint\folio}% + \else + \rlap{\tenpoint\folio}% + \hfil + \smc\headline@ + \hfil + \fi + \fi} + +\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne + \ch@ck#1#4#2\allocationnumber=\count1#1 + \global#3#5=\allocationnumber + \wlog{\string#5=\string#2\the\allocationnumber}} + +\catcode`\@=\active diff --git a/macros/lamstex/inputs/book.stt b/macros/lamstex/inputs/book.stt new file mode 100644 index 0000000000..129b85af0a --- /dev/null +++ b/macros/lamstex/inputs/book.stt @@ -0,0 +1,162 @@ +\catcode`\@=11 +\let\alloc@\alloc@@ + +\hsize=29pc +\vsize=40pc +\normallineskiplimit=1pt +\parindent=10pt + +\font\ninerm=cmr9 +\font\eightrm=cmr8 +\font\sixrm=cmr6 +\font\eighti=cmmi8 \skewchar\eighti='177 +\font\sixi=cmmi6 \skewchar\sixi='177 +\font\ninesy=cmsy9 \skewchar\ninesy='60 +\font\eightsy=cmsy8 \skewchar\eightsy='60 +\font\sixsy=cmsy6 \skewchar\sixsy='60 +\font\eightbf=cmbx8 +\font\sixbf=cmbx6 +\font\eightit=cmti8 +\font\eightsl=cmsl8 +\font\eighttt=cmtt8 + +\ifmsamloaded@ + \font\eightmsa=msam8 + \font\sixmsa=msam6 +\fi + +\ifmsbmloaded@ + \font\eightmsb=msbm8 + \font\sixmsb=msbm6 +\fi + +\ifeufmloaded@ + \font\eighteufm=eufm8 + \font\sixeufm=eufm6 +\fi + +\ifcmmibloaded@ + \font\eightcmmib=cmmib8 \skewchar\eightcmmib='177 + \font\sixcmmib=cmmib6 \skewchar\sixcmmib='177 +\fi + +\ifcmbsyloaded@ + \font\eightcmbsy=cmbsy8 \skewchar\eightcmbsy='60 + \font\sixcmbsy=cmbsy6 \skewchar\sixcmbsy='60 +\fi + +\newskip\ttglue@ + +\def\tenpoint{\def\pointsize@{10}% + \normalbaselineskip12\p@ + \abovedisplayskip12\p@ plus3\p@ minus9\p@ + \belowdisplayskip12\p@ plus3\p@ minus9\p@ + \abovedisplayshortskip\z@ plus3\p@ + \belowdisplayshortskip7\p@ plus3\p@ minus4\p@ + \textonlyfont@\rm\tenrm + \textonlyfont@\it\tenit + \textonlyfont@\sl\tensl + \textonlyfont@\bf\tenbf + \let\big\tenbig@ + \textfont\z@\tenrm \scriptfont\z@\sevenrm \scriptscriptfont\z@\fiverm + \textfont\@ne\teni \scriptfont\@ne\seveni \scriptscriptfont\@ne\fivei + \textfont\tw@\tensy \scriptfont\tw@\sevensy \scriptscriptfont\tw@\fivesy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \textfont\itfam\tenit + \textfont\slfam\tensl + \textfont\bffam\tenbf \scriptfont\bffam\sevenbf + \scriptscriptfont\bffam\fivebf + \ifmsamloaded@ + \textfont\msafam=\tenmsa \scriptfont\msafam=\sevenmsa + \scriptscriptfont\msafam=\fivemsa + \fi + \ifmsbmloaded@ + \textfont\msbfam=\tenmsb \scriptfont\msbfam=\sevenmsb + \scriptscriptfont\msbfam=\fivemsb + \fi + \ifeufmloaded@ + \textfont\eufmfam=\teneufm \scriptfont\eufmfam=\seveneufm + \scriptscriptfont\eufmfam=\fiveeufm + \fi + \ifcmmibloaded@ + \textfont\cmmibfam=\tencmmib \scriptfont\cmmibfam=\sevencmmib + \scriptscriptfont\cmmibfam=\fivecmmib + \fi + \ifcmbsyloaded@ + \textfont\cmbsyfam=\tencmbsy \scriptfont\cmbsyfam=\sevencmbsy + \scriptscriptfont\cmbsyfam=\fivecmbsy + \fi + \let\tt\tentt + \tt\ttglue@=.5emminus.15em + \setbox\strutbox\hbox{\vrule\height8.5\p@\depth3.5\p@\width\z@}% + \setbox\strutbox@\hbox{\vrule\height8\p@\depth3\p@\width\z@}% + \ex@.2326ex\normalbaselines\ifmmode\else\rm\fi} + +\def\tenbig@#1{{\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}} + +\def\eightpoint{\def\pointsize@{8}% + \normalbaselineskip10\p@ + \abovedisplayskip10\p@ plus2.4\p@ minus7.2\p@ + \belowdisplayskip10\p@ plus2.4\p@ minus7.2\p@ + \abovedisplayshortskip\z@ plus2.4\p@ + \belowdisplayshortskip5.6\p@ plus2.4\p@ minus3.2\p@ + \textonlyfont@\rm\eightrm + \textonlyfont@\it\eightit + \textonlyfont@\sl\eightsl + \textonlyfont@\bf\eightbf + \let\big\eightbig@ + \textfont\z@\eightrm \scriptfont\z@\sixrm \scriptscriptfont\z@\fiverm + \textfont\@ne\eighti \scriptfont\@ne\sixi \scriptscriptfont\@ne\fivei + \textfont\tw@\eightsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\fivesy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \textfont\itfam\eightit + \textfont\slfam\eightsl + \textfont\bffam\eightbf \scriptfont\bffam\sixbf + \scriptscriptfont\bffam\fivebf + \ifmsamloaded@ + \textfont\msafam=\eightmsa \scriptfont\msafam=\sixmsa + \scriptscriptfont\msafam=\fivemsa + \fi + \ifmsbmloaded@ + \textfont\msbfam=\eightmsb \scriptfont\msbfam=\sixmsb + \scriptscriptfont\msbfam=\fivemsb + \fi + \ifeufmloaded@ + \textfont\eufmfam=\eighteufm \scriptfont\eufmfam=\sixeufm + \scriptscriptfont\eufmfam=\fiveeufm + \fi + \ifcmmibloaded@ + \textfont\cmmibfam=\eightcmmib \scriptfont\cmmibfam=\sixcmmib + \scriptscriptfont\cmmibfam=\fivecmmib + \fi + \ifcmbsyloaded@ + \textfont\cmbsyfam=\eightcmbsy \scriptfont\cmbsyfam=\sixcmbsy + \scriptscriptfont\cmbsyfam=\fivecmbsy + \fi + \let\tt\eighttt + \tt\ttglue@.4emminus.12em + \setbox\strutbox\hbox{\vrule\height7\p@\depth3\p@\width\z@}% + \setbox\strutbox@\hbox{\vrule\height6.5\p@\depth2.5\p@\width\z@}% + \ex@=.2326ex\normalbaselines\ifmmode\else\rm\fi} + +\def\eightbig@#1{{\hbox{$\textfont\z@\ninerm\textfont\tw@\ninesy + \left#1\vbox to6.5\p@{}\right.\n@space$}}} + +{\catcode` =\active +\gdef\litcodes@@{\def {\penalty\z@\hskip\ttglue@}}} + +\def\LamSTeX{L\kern-.4em\raise.3ex\hbox{$\ssize\Cal A$}% + \DN@{10}\ifx\next@\pointsize@\kern-.25em\else\kern-.3em\fi + \lower.4ex\hbox{\DN@{10}\ifx\next@\pointsize@\eightsy\else\sixsy\fi M}% + \kern-.1em{$\Cal S$}-\TeX} + +\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne + \ch@ck#1#4#2\allocationnumber=\count1#1 + \global#3#5=\allocationnumber + \wlog{\string#5=\string#2\the\allocationnumber}} + +\catcode`\@=13 + +\eightpoint +\def\opentables{\HD(9pt;2pt)} +\def\boxedtables{\HD(+3pt;+2pt)} diff --git a/macros/lamstex/inputs/boxes1.tex b/macros/lamstex/inputs/boxes1.tex new file mode 100644 index 0000000000..5faaffd0bb --- /dev/null +++ b/macros/lamstex/inputs/boxes1.tex @@ -0,0 +1,27 @@ +\input dvipaste + + +\font\bf=cmbx10 +\font\sl=cmsl10 +\font\it=cmti10 +\def\rm{\tenrm} + +\def\rulebox#1#2#3{\hbox{\vrule\kern-.4pt + \vbox to#2{\hrule width#1\vfil\hbox{#3}\vfil\hrule width#1}\kern-.4pt\vrule}} + +\setbox0\rulebox{140pt}{210pt}{\bf ABC\it DEF} +\sendout{\box0} + +\setbox0\rulebox{125pt}{234pt}{\sl GHI\rm J\it K} +\sendout{\box0} + +\setbox0\rulebox{225pt}{117pt}{\it ABC} +\sendout{\box0} + +\setbox0\rulebox{123pt}{234pt}{\vbox{\hrule\hbox{\vrule height 30pt + ABC\vrule}\hrule}} +\sendout{\box0} + + +\end + diff --git a/macros/lamstex/inputs/boxes2.tex b/macros/lamstex/inputs/boxes2.tex new file mode 100644 index 0000000000..f5ed9ded45 --- /dev/null +++ b/macros/lamstex/inputs/boxes2.tex @@ -0,0 +1,19 @@ +\input dvipaste + + +\font\sl=cmsl10 +\font\bf=cmsl10 +\font\it=cmti10 +\def\rm{\tenrm} + +\def\rulebox#1#2#3{\hbox{\vrule\kern-.4pt + \vbox to#2{\hrule width#1\vfil\hbox{#3}\vfil\hrule width#1}\kern-.4pt\vrule}} + + +\setbox0\rulebox{70pt}{140pt}{\bf ABC\it DEF} +\sendout{\box0} + +\setbox0\rulebox{75pt}{135pt}{\sl ZZ} +\sendout{\box0} + +\end
\ No newline at end of file diff --git a/macros/lamstex/inputs/cardord.tex b/macros/lamstex/inputs/cardord.tex new file mode 100644 index 0000000000..469e2ac9ba --- /dev/null +++ b/macros/lamstex/inputs/cardord.tex @@ -0,0 +1,66 @@ +\catcode`\@=11 +\def\cardnine@#1{\ifcase#1\or one\or two\or three\or four\or five\or + six\or seven\or eight\or nine\fi} +\def\cardinal#1{\count@#1\relax + \ifnum\count@>99 \number\count@ + \else + \ifnum\count@=\z@ zero% + \else + \ifnum\count@<\ten@\cardnine@\count@ + \else + \ifnum\count@<20 + \advance\count@-\ten@ + \ifcase\count@ ten\or eleven\or twelve\or thirteen\or fourteen\or + fifteen\or sixteen\or seventeen\or eighteen\or nineteen\fi + \else + \count@@\count@\count@@@\count@@ + \divide\count@\ten@\multiply\count@\ten@ + \advance\count@@@-\count@\divide\count@\ten@ + \ifcase\count@\or\or twenty\or thirty\or forty\or fifty\or sixty\or + seventy\or eighty\or ninety\fi + \ifnum\count@@@=\z@\else-\cardnine@\count@@@\fi + \fi + \fi + \fi + \fi} +\def\ordnine@#1{\ifcase#1\or first\or second\or third\or fourth\or fifth\or + sixth\or seventh\or eighth\or ninth\fi} +\def\ordsuffix@{\count@@@@\count@ + \divide\count@\ten@ + \count@@@\count@\count@@\count@ + \divide\count@@\ten@\multiply\count@@\ten@ + \advance\count@@@-\count@@ + \ifnum\count@@@=\@ne th% + \else + \count@@@\count@@@@ + \count@@\count@@@@ + \divide\count@@\ten@\multiply\count@@\ten@ + \advance\count@@@-\count@@ + \ifcase\count@@@ th\or st\or nd\or rd\else th\fi + \fi} +\def\nordinal#1{\count@#1\relax\number\count@\ordsuffix@} +\def\spordinal#1{\count@#1\relax\number\count@$^{\text{\ordsuffix@}}$} +\def\ordinal#1{\count@#1\relax + \ifnum\count@>99 \number\count@\ordsuffix@ + \else + \ifnum\count@=\z@ zeroth% + \else + \ifnum\count@<\ten@\ordnine@\count@ + \else + \ifnum\count@<20 \advance\count@-\ten@ + \ifcase\count@ tenth\or eleventh\or twelfth\or thirteenth\or + fourteenth\or fifteenth\or sixteenth\or seventeenth\or eighteenth\or + nineteenth\fi + \else + \count@@\count@ + \divide\count@\ten@\multiply\count@\ten@ + \count@@@\count@@\advance\count@@@-\count@ + \divide\count@\ten@ + \ifcase\count@\or\or twent\or thirt\or fort\or fift\or sixt\or sevent\or + eight\or ninet\fi + \ifnum\count@@@=\z@ ieth\else y-\ordnine@\count@@@\fi + \fi + \fi + \fi + \fi} +\catcode`\@=\active diff --git a/macros/lamstex/inputs/cardord.tox b/macros/lamstex/inputs/cardord.tox new file mode 100644 index 0000000000..681eed3e7a --- /dev/null +++ b/macros/lamstex/inputs/cardord.tox @@ -0,0 +1,5 @@ +\catcode`\@=11 +\let\cardnine@\relax\let\cardinal\undefined\let\ordnine@\relax +\let\ordsuffix@\relax\let\nordinal\undefined\let\spordinal\undefined +\let\ordinal\undefined +\catcode`\@=\active diff --git a/macros/lamstex/inputs/cd.tex b/macros/lamstex/inputs/cd.tex new file mode 100644 index 0000000000..f02065c250 --- /dev/null +++ b/macros/lamstex/inputs/cd.tex @@ -0,0 +1,996 @@ +\catcode`\@=11 +\def\Cgaps#1{\RIfM@ + \standardcgap#1\standardcgap\relax\hunit#1\hunit\relax + \else\nonmatherr@\Cgaps\fi} +\def\Rgaps#1{\RIfM@ + \standardrgap#1\standardrgap\relax\vunit#1\vunit\relax + \else\nonmatherr@\Rgaps\fi} +\def\getcgap@#1{\ifcase#1\or\getdim@\z@\else\getdim@\standardcgap\fi} +\def\getrgap@#1{\ifcase#1\getdim@\z@\else\getdim@\standardrgap\fi} +{\catcode`\;=\active + \gdef\cgaps#1{\RIfM@{\ifnum\catcode`\;=\active\def;{\string;}\fi + \xdef\Next@{\noexpand\cgaps@{#1}}}% + \Next@\edef\getcgap@##1{\i@##1\relax\the\toks@}\toks@{}\else + \nonmatherr@\cgaps\fi} + \gdef\rgaps#1{\RIfM@{\ifnum\catcode`\;=\active\def;{\string;}\fi + \xdef\Next@{\noexpand\rgaps@{#1}}}% + \Next@\edef\getrgap@##1{\i@##1\relax\the\toks@}\toks@{}\else + \nonmatherr@\rgaps\fi} +} +\def\Gaps@@{\gaps@@} +\def\cgaps@#1{\toks@{\ifcase\i@\or\getdim@=\z@}% + \gaps@@\standardcgap#1;\gaps@@\gaps@@ + \edef\next@{\the\toks@\noexpand\else\noexpand\getdim@\noexpand\standardcgap + \noexpand\fi}% + \toks@=\expandafter{\next@}} +\def\rgaps@#1{\toks@{\ifcase\i@\getdim@=\z@}% + \gaps@@\standardrgap#1;\gaps@@\gaps@@ + \edef\next@{\the\toks@\noexpand\else\noexpand\getdim@\noexpand\standardrgap + \noexpand\fi}% + \toks@=\expandafter{\next@}} +\def\gaps@@#1#2;#3{\mgaps@#1#2\mgaps@ + \edef\next@{\the\toks@\noexpand\or\noexpand\getdim@ + \noexpand#1\the\mgapstoks@@}% + \toks@\expandafter{\next@}% + \DN@{#3}% + \ifx\next@\Gaps@@\def\next@##1\gaps@@{}\else + \def\next@{\gaps@@#1#3}\fi\next@} +\def\mgaps@#1{\let\mgapsnext@#1\FNSS@\mgaps@@} +\def\mgaps@@{\ifx\next\w\expandafter\mgaps@@@\else + \expandafter\mgaps@@@@\fi} +\def\mgaps@@@@#1\mgaps@{\getdim@\mgapsnext@\getdim@#1\getdim@ + \edef\next@{\noexpand\getdim@\the\getdim@}% + \mgapstoks@@\expandafter{\next@}} +\def\mgaps@@@\w#1#2\mgaps@{\mgaps@@@@#2\mgaps@ + \setbox\ZER@\hbox{$\m@th\hskip15\p@\tsize@#1$}% + \dimen@\wd\ZER@ + \ifdim\dimen@>\getdim@\getdim@\dimen@\fi + \edef\next@{\noexpand\getdim@\the\getdim@}% + \mgapstoks@@\expandafter{\next@}} +\def\changewidth#1#2{\setbox\ZER@{$\m@th#2}% + \hbox to\wd\ZER@{\hss$\m@th#1$\hss}} +\def\ARROW@{\ifx\next)\let\next@\OPTIONS@\else + \DN@{\csname\string @(\endcsname}\fi\next@} +\def\OPTIONS@){\ifoptions@\let\next@\relax\else + \DN@{\global\options@true\begingroup\optioncodes@}\fi\next@} +\expandafter\def\csname\string @(\endcsname #1,#2){% + \ifoptions@\expandafter\endgroup\fi + \N@false\E@false\H@false\V@false\Hshort@false + \ifnum#1>\z@\E@true\fi + \ifnum#1=\z@\V@true\global\tX@false\global\tY@false\global\a@false\fi + \ifnum#2>\z@\N@true\fi + \ifnum#2=\z@\H@true\global\tX@false\global\tY@false\global\a@false + \ifshort@\Hshort@true\fi\fi + \NESW@false + \ifN@\ifE@\NESW@true\fi\else\ifE@\else\NESW@true\fi\fi + \arrow@{#1}{#2}% + \global\options@false + \global\scount@\z@\global\tcount@\z@\global\arrcount@\z@ + \global\s@false\global\sxdimen@\z@\global\sydimen@\z@ + \global\tX@false\global\tXdimen@i\z@\global\tXdimen@ii\z@ + \global\tY@false\global\tYdimen@i\z@\global\tYdimen@ii\z@ + \global\a@false\global\exacount@\z@ + \global\x@false\global\xdimen@\z@ + \global\X@false\global\Xdimen@\z@ + \global\y@false\global\ydimen@\z@ + \global\Y@false\global\Ydimen@\z@ + \global\p@false\global\pdimen@\z@ + \global\label@ifalse\global\label@iifalse + \global\dl@ifalse\global\ldimen@i\z@ + \global\dl@iifalse\global\ldimen@ii\z@ + \global\short@false\global\unshort@false} +\def\zero@#1{\ifnum\scount@=\z@ + \if#1e\global\scount@\m@ne\else + \if#1t\global\scount@\tw@\else + \if#1h\global\scount@\thr@@\else + \if#1'\global\scount@6 \else + \if#1`\global\scount@7 \else + \if#1(\global\scount@8 \else + \if#1)\global\scount@9 \else + \if#1s\global\scount@12 \else + \if#1H\global\scount@13 \else + \Err@{\Invalid@@ option \string\0}\fi\fi\fi\fi\fi\fi\fi\fi\fi + \fi} +\def\one@#1{\ifnum\tcount@=\z@ + \if#1e\global\tcount@\m@ne\else + \if#1h\global\tcount@\tw@\else + \if#1t\global\tcount@\thr@@\else + \if#1'\global\tcount@4 \else + \if#1`\global\tcount@5 \else + \if#1(\global\tcount@\ten@ \else + \if#1)\global\tcount@11 \else + \if#1s\global\tcount@12 \else + \if#1H\global\tcount@13 \else + \Err@{\Invalid@@ option \string\1}\fi\fi\fi\fi\fi\fi\fi\fi\fi + \fi} +\def\a@#1{\ifnum\arrcount@=\z@ + \if#10\global\arrcount@\m@ne\else + \if#1+\global\arrcount@\@ne\else + \if#1-\global\arrcount@\tw@\else + \if#1=\global\arrcount@\thr@@\else + \Err@{\Invalid@@ option \string\a}\fi\fi\fi\fi + \fi} +\def\ds@{\ifnum\catcode`\;=\active\expandafter\dsA@\else + \expandafter\dsO@\fi} +\def\dsO@(#1;#2){\ds@@{#1}{#2}} +\def\ds@@#1#2{\ifs@\else + \global\s@true + \global\sxdimen@\hunit\global\sxdimen@#1\sxdimen@\relax + \global\sydimen@\vunit\global\sydimen@#2\sydimen@\relax + \fi} +\def\dtX@{\ifnum\catcode`\;=\active\expandafter\dtXA@\else + \expandafter\dtXO@\fi} +\def\dtXO@(#1;#2){\dtX@@{#1}{#2}} +\def\dtX@@#1#2{\iftX@\else + \global\tX@true + \global\tXdimen@i\hunit\global\tXdimen@i#1\tXdimen@i\relax + \global\tXdimen@ii\vunit\global\tXdimen@ii#2\tXdimen@ii\relax + \fi} +\def\dtY@{\ifnum\catcode`\;=\active\expandafter\dtYA@\else + \expandafter\dtYO@\fi} +\def\dtYO@(#1;#2){\dtY@@{#1}{#2}} +\def\dtY@@#1#2{\iftY@\else + \global\tY@true + \global\tYdimen@i\hunit\global\tYdimen@i#1\tYdimen@i\relax + \global\tYdimen@ii\vunit\global\tYdimen@ii#2\tYdimen@ii\relax + \fi} +{\catcode`\;=\active + \gdef\dsA@(#1;#2){\ds@@{#1}{#2}} + \gdef\dtXA@(#1;#2){\dtX@@{#1}{#2}} + \gdef\dtYA@(#1;#2){\dtY@@{#1}{#2}} +} +\def\da@#1{\ifa@\else\global\a@true\global\exacount@#1\relax\fi} +\def\dx@#1{\ifx@\else + \global\x@true + \global\xdimen@\hunit\global\xdimen@#1\xdimen@\relax + \fi} +\def\dX@#1{\ifX@\else + \global\X@true + \global\Xdimen@\hunit\global\Xdimen@#1\Xdimen@\relax + \fi} +\def\dy@#1{\ify@\else + \global\y@true + \global\ydimen@\vunit\global\ydimen@#1\ydimen@\relax + \fi} +\def\dY@#1{\ifY@\else + \global\Y@true + \global\Ydimen@\vunit\global\Ydimen@#1\Ydimen@\relax + \fi} +\def\p@@#1{\ifp@\else + \global\p@true + \global\pdimen@\hunit\global\divide\pdimen@\tw@ + \global\pdimen@#1\pdimen@\relax + \fi} +\def\L@#1{\iflabel@i\else + \global\label@itrue\gdef\label@i{#1}% + \fi} +\def\l@#1{\iflabel@ii\else + \global\label@iitrue\gdef\label@ii{#1}% + \fi} +\def\dL@#1{\ifdl@i\else + \global\dl@itrue\global\ldimen@i\hunit\global\ldimen@i#1\ldimen@i\relax + \fi} +\def\dl@#1{\ifdl@ii\else + \global\dl@iitrue\global\ldimen@ii\hunit\global\ldimen@ii#1\ldimen@ii\relax + \fi} +\def\s@{\ifunshort@\else\global\short@true\fi} +\def\uns@{\ifshort@\else\global\unshort@true\global\short@false\fi} +\def\optioncodes@{\let\0\zero@\let\1\one@\let\a\a@\let\ds\ds@\let\dtX\dtX@ + \let\dtY\dtY@\let\da\da@\let\dx\dx@\let\dX\dX@\let\dY\dY@\let\dy\dy@ + \let\p\p@@\let\L\L@\let\l\l@\let\dL\dL@\let\dl\dl@\let\s\s@\let\uns\uns@} +\def\slopes@{\\161\\152\\143\\134\\255\\126\\357\\238\\349\\45{10}\\56{11}% + \\11{12}\\65{13}\\54{14}\\43{15}\\32{16}\\53{17}\\21{18}\\52{19}\\31{20}% + \\41{21}\\51{22}\\61{23}} +\def\slope@{{\slope@i\secondy@\advance\slope@i-\firsty@ + \ifN@\else\multiply\slope@i\m@ne\fi + \slope@ii\secondx@\advance\slope@ii-\firstx@ + \ifE@\else\multiply\slope@ii\m@ne\fi + \ifdim\slope@ii<\z@ + \global\tan@i6 \global\tan@ii\@ne\global\angcount@23 + \else + \dimen@\slope@i\multiply\dimen@6 + \ifdim\dimen@<\slope@ii + \global\tan@i\@ne\global\tan@ii6 \global\angcount@\@ne + \else + \dimen@\slope@ii\multiply\dimen@6 + \ifdim\dimen@<\slope@i + \global\tan@i6 \global\tan@ii\@ne\global\angcount@23 + \else + \global\tan@ip\z@\global\tan@iip\@ne + \def\\##1##2##3{\global\angcount@##3\relax + \slope@ip\slope@i\slope@iip\slope@ii + \multiply\slope@iip##1\relax\multiply\slope@ip##2\relax + \ifdim\slope@iip<\slope@ip + \global\tan@ip##1\relax\global\tan@iip##2\relax + \else + \global\tan@i##1\relax\global\tan@ii##2\relax + \def\\####1####2####3{}% + \fi}% + \slopes@ + \slope@i\secondy@\advance\slope@i-\firsty@ + \ifN@\else\multiply\slope@i\m@ne\fi + \multiply\slope@i\tan@ii\multiply\slope@i\tan@iip\multiply\slope@i\tw@ + \count@\tan@i\multiply\count@\tan@iip + \extracount@\tan@ip\multiply\extracount@\tan@ii + \advance\count@\extracount@ + \slope@ii\secondx@\advance\slope@ii-\firstx@ + \ifE@\else\multiply\slope@ii\m@ne\fi + \multiply\slope@ii\count@ + \ifdim\slope@i<\slope@ii + \global\tan@i\tan@ip\global\tan@ii\tan@iip + \global\advance\angcount@\m@ne + \fi + \fi + \fi + \fi}% +} +\def\slope@a#1{{\def\\##1##2##3{\ifnum##3=#1\global\tan@i##1\relax + \global\tan@ii##2\relax\fi}\slopes@}} +\def\dotoks@i{% + \global\widthtoks@\expandafter{\the\widthtoks@\else\getdim@\z@\fi}% + \global\heighttoks@\expandafter{\the\heighttoks@\else\getdim@\z@\fi}% + \global\depthtoks@\expandafter{\the\depthtoks@\else\getdim@\z@\fi}} +\def\dotoks@ii{% + \global\widthtoks@{\ifcase\j@}% + \global\heighttoks@{\ifcase\j@}% + \global\depthtoks@{\ifcase\j@}} +\def\preCD@#1\endCD{\setbox\ZER@ + \vbox{% + \def\arrow@##1##2{{}}% + \global\rowcount@\m@ne\global\colcount@\z@\global\Colcount@\z@ + \global\firstCDcr@true\toks@{}% + \global\widthtoks@{\ifcase\j@}% + \global\Widthtoks@{\ifcase\i@}% + \global\heighttoks@{\ifcase\j@}% + \global\Heighttoks@{\ifcase\i@}% + \global\depthtoks@{\ifcase\j@}% + \global\Depthtoks@{\ifcase\i@}% + \global\Rowheighttoks@{\ifcase\i@}% + \global\Rowdepthtoks@{\ifcase\i@}% + \Let@ + \everycr{% + \noalign{% + \global\advance\rowcount@\@ne + \ifnum\colcount@<\Colcount@ + \else + \global\Colcount@\colcount@\global\maxcolrow@\rowcount@ + \fi + \global\colcount@\z@ + \iffirstCDcr@ + \global\firstCDcr@false + \else + \edef\next@{\the\Rowheighttoks@\noexpand\or\noexpand\getdim@\the\rowht@}% + \global\Rowheighttoks@\expandafter{\next@}% + \edef\next@{\the\Rowdepthtoks@\noexpand\or\noexpand\getdim@\the\rowdp@}% + \global\Rowdepthtoks@\expandafter{\next@}% + \global\rowht@\z@\global\rowdp@\z@ + \dotoks@i + \edef\next@{\the\Widthtoks@\noexpand\or\the\widthtoks@}% + \global\Widthtoks@\expandafter{\next@}% + \edef\next@{\the\Heighttoks@\noexpand\or\the\heighttoks@}% + \global\Heighttoks@\expandafter{\next@}% + \edef\next@{\the\Depthtoks@\noexpand\or\the\depthtoks@}% + \global\Depthtoks@\expandafter{\next@}% + \dotoks@ii + \fi}}% + \tabskip\z@ + \halign{&\setbox\ZER@\hbox{\vrule\height\ten@\p@\width\z@\depth\z@ %1 + $\m@th\displaystyle{##}$}\copy\ZER@ + \ifdim\ht\ZER@>\rowht@\global\rowht@\ht\ZER@\fi + \ifdim\dp\ZER@>\rowdp@\global\rowdp@\dp\ZER@\fi + \global\advance\colcount@\@ne + \edef\next@{\the\widthtoks@\noexpand\or\noexpand\getdim@\the\wd\ZER@}% + \global\widthtoks@\expandafter{\next@}% + \edef\next@{\the\heighttoks@\noexpand\or\noexpand\getdim@\the\ht\ZER@}% + \global\heighttoks@\expandafter{\next@}% + \edef\next@{\the\depthtoks@\noexpand\or\noexpand\getdim@\the\dp\ZER@}% + \global\depthtoks@\expandafter{\next@}% + \cr#1\crcr}}% + \Rowcount@\rowcount@ + \global\Widthtoks@\expandafter{\the\Widthtoks@\fi\relax}% + \edef\Width@##1##2{\i@##1\relax\j@##2\relax\the\Widthtoks@}% + \global\Heighttoks@\expandafter{\the\Heighttoks@\fi\relax}% + \edef\Height@##1##2{\i@##1\relax\j@##2\relax\the\Heighttoks@}% + \global\Depthtoks@\expandafter{\the\Depthtoks@\fi\relax}% + \edef\Depth@##1##2{\i@##1\relax\j@##2\relax\the\Depthtoks@}% + \edef\next@{\the\Rowheighttoks@\noexpand\fi\relax}% + \global\Rowheighttoks@\expandafter{\next@}% + \edef\Rowheight@##1{\i@##1\relax\the\Rowheighttoks@}% + \edef\next@{\the\Rowdepthtoks@\noexpand\fi\relax}% + \global\Rowdepthtoks@\expandafter{\next@}% + \edef\Rowdepth@##1{\i@##1\relax\the\Rowdepthtoks@}% + \global\colwidthtoks@{\fi}% + \setbox\ZER@\vbox{% + \unvbox\ZER@ + \count@\rowcount@ + \loop + \unskip\unpenalty + \setbox\ZER@\lastbox + \ifnum\count@>\maxcolrow@\advance\count@\m@ne + \repeat + \hbox{% + \unhbox\ZER@ + \count@\z@ + \loop + \unskip + \setbox\ZER@\lastbox + \edef\next@{\noexpand\or\noexpand\getdim@\the\wd\ZER@\the\colwidthtoks@}% + \global\colwidthtoks@\expandafter{\next@}% + \advance\count@\@ne + \ifnum\count@<\Colcount@ + \repeat}}% + \edef\next@{\noexpand\ifcase\noexpand\i@\the\colwidthtoks@}% + \global\colwidthtoks@\expandafter{\next@}% + \edef\Colwidth@##1{\i@##1\relax\the\colwidthtoks@}% + \global\colwidthtoks@{}\global\Rowheighttoks@{}\global\Rowdepthtoks@{}% + \global\widthtoks@{}\global\Widthtoks@{}\global\heighttoks@{}% + \global\Heighttoks@{}\global\depthtoks@{}\global\Depthtoks@{}% +} +\def\outside@{\Err@{This arrow points outside the \string\CD}} +\def\arrow@#1#2{\global\xoff@#1\relax\global\yoff@#2\relax + \count@\rowcount@\advance\count@-\yoff@ + \ifnum\count@<\@ne\outside@\else\ifnum\count@>\Rowcount@\outside@\fi\fi + \count@\colcount@\advance\count@\xoff@ + \ifnum\count@<\@ne\outside@\else\ifnum\count@>\Colcount@\outside@\fi\fi + \tcolcount@\colcount@\advance\tcolcount@\xoff@ + \Width@\rowcount@\colcount@\divide\getdim@\tw@\tocenter@-\getdim@ + \ifdim\getdim@=\z@ + \firstx@\z@\firsty@\mathaxis@\svertex@true + \else + \svertex@false + \ifHshort@ + \Colwidth@\colcount@\divide\getdim@\tw@ + \ifE@ \firstx@\getdim@ \else \firstx@-\getdim@ \fi + \else + \ifE@ \firstx@\getdim@ \else \firstx@-\getdim@ \fi + \fi + \ifE@ + \ifH@ \advance\firstx@\thr@@\p@ \else \advance\firstx@-\thr@@\p@ \fi %2 + \else + \ifH@ \advance\firstx@-\thr@@\p@ \else \advance\firstx@\thr@@\p@ \fi %3 + \fi + \ifN@ + \Height@\rowcount@\colcount@ \firsty@\getdim@ %4 + \ifV@ \advance\firsty@\thr@@\p@ \fi %5 + \else + \ifV@ + \Depth@\rowcount@\colcount@ \firsty@-\getdim@ %6 + \advance\firsty@-\thr@@\p@ %7 + \else + \firsty@\z@ %8 + \fi + \fi + \fi + \ifV@ + \else + \Colwidth@\colcount@\divide\getdim@\tw@ + \ifE@\secondx@\getdim@\else\secondx@-\getdim@\fi + \ifE@\else\getcgap@\colcount@\advance\secondx@-\getdim@\fi + \endcount@\colcount@\advance\endcount@\xoff@ + \count@\colcount@ + \ifE@ + \advance\count@\@ne + \loop + \ifnum\count@<\endcount@ + \Colwidth@\count@\advance\secondx@\getdim@ + \getcgap@\count@\advance\secondx@\getdim@ + \advance\count@\@ne + \repeat + \else + \advance\count@\m@ne + \loop + \ifnum\count@>\endcount@ + \Colwidth@\count@\advance\secondx@-\getdim@ + \getcgap@\count@\advance\secondx@-\getdim@ + \advance\count@\m@ne + \repeat + \fi + \Colwidth@\count@\divide\getdim@\tw@ + \ifHshort@ + \else + \ifE@\advance\secondx@\getdim@\else\advance\secondx@-\getdim@\fi + \fi + \ifE@\getcgap@\count@\advance\secondx@\getdim@\fi + \rcount@\rowcount@\advance\rcount@-\yoff@ + \Width@\rcount@\count@\divide\getdim@\tw@ + \tvertex@false + \ifH@\ifdim\getdim@=\z@\tvertex@true\Hshort@false\fi\fi + \ifHshort@ + \else + \ifE@\advance\secondx@-\getdim@\else\advance\secondx@\getdim@\fi + \fi + \iftvertex@ + \advance\secondx@.4\p@ + \else + \ifE@\advance\secondx@-\thr@@\p@\else\advance\secondx@\thr@@\p@\fi %9 + \fi + \fi + \ifH@ + \else + \ifN@ + \Rowheight@\rowcount@\secondy@\getdim@ + \else + \Rowdepth@\rowcount@\secondy@-\getdim@ + \getrgap@\rowcount@\advance\secondy@-\getdim@ + \fi + \endcount@\rowcount@\advance\endcount@-\yoff@ + \count@\rowcount@ + \ifN@ + \advance\count@\m@ne + \loop + \ifnum\count@>\endcount@ + \Rowheight@\count@\advance\secondy@\getdim@ + \Rowdepth@\count@\advance\secondy@\getdim@ + \getrgap@\count@\advance\secondy@\getdim@ + \advance\count@\m@ne + \repeat + \else + \advance\count@\@ne + \loop + \ifnum\count@<\endcount@ + \Rowheight@\count@\advance\secondy@-\getdim@ + \Rowdepth@\count@\advance\secondy@-\getdim@ + \getrgap@\count@\advance\secondy@-\getdim@ + \advance\count@\@ne + \repeat + \fi + \tvertex@false + \ifV@\Width@\count@\colcount@\ifdim\getdim@=\z@\tvertex@true\fi\fi + \ifN@ + \getrgap@\count@\advance\secondy@\getdim@ + \Rowdepth@\count@\advance\secondy@\getdim@ + \iftvertex@ + \advance\secondy@\mathaxis@ + \else + \Depth@\count@\tcolcount@\advance\secondy@-\getdim@ + \advance\secondy@-\thr@@\p@ %10 + \fi + \else + \Rowheight@\count@\advance\secondy@-\getdim@ + \iftvertex@ + \advance\secondy@\mathaxis@ + \else + \Height@\count@\tcolcount@\advance\secondy@\getdim@ + \advance\secondy@\thr@@\p@ %11 + \fi + \fi + \fi + \ifV@\else\advance\firstx@\sxdimen@\fi + \ifH@\else\advance\firsty@\sydimen@\fi + \iftX@ + \advance\secondy@\tXdimen@ii + \advance\secondx@\tXdimen@i + \slope@ + \else + \iftY@ + \advance\secondy@\tYdimen@ii + \advance\secondx@\tYdimen@i + \slope@ + \secondy@\secondx@\advance\secondy@-\firstx@ + \ifNESW@\else\multiply\secondy@\m@ne\fi + \multiply\secondy@\tan@i\divide\secondy@\tan@ii\advance\secondy@\firsty@ + \else + \ifa@ + \slope@ + \ifNESW@\global\advance\angcount@\exacount@\else + \global\advance\angcount@-\exacount@\fi + \ifnum\angcount@>23 \global\angcount@23 \fi + \ifnum\angcount@<\@ne\global\angcount@\@ne\fi + \slope@a\angcount@ + \ifY@ + \advance\secondy@\Ydimen@ + \else + \ifX@ + \advance\secondx@\Xdimen@ + \dimen@\secondx@\advance\dimen@-\firstx@ + \ifNESW@\else\multiply\dimen@\m@ne\fi + \multiply\dimen@\tan@i\divide\dimen@\tan@ii + \advance\dimen@\firsty@\secondy@\dimen@ + \fi + \fi + \else + \ifH@\else\ifV@\else\slope@\fi\fi + \fi + \fi + \fi + \ifH@\else\ifV@\else\ifsvertex@\else + \dimen@6\p@\multiply\dimen@\tan@ii + \count@\tan@i\advance\count@\tan@ii\divide\dimen@\count@ + \ifE@\advance\firstx@\dimen@\else\advance\firstx@-\dimen@\fi + \multiply\dimen@\tan@i\divide\dimen@\tan@ii + \ifN@\advance\firsty@\dimen@\else\advance\firsty@-\dimen@\fi + \fi\fi\fi + \ifp@ + \ifH@\else\ifV@\else + \getcos@\pdimen@\advance\firsty@\dimen@\advance\secondy@\dimen@ + \ifNESW@\advance\firstx@-\dimen@ii\else\advance\firstx@\dimen@ii\fi + \fi\fi + \fi + \ifH@\else\ifV@\else + \ifnum\tan@i>\tan@ii + \charht@\ten@\p@\charwd@\ten@\p@ + \multiply\charwd@\tan@ii\divide\charwd@\tan@i + \else + \charwd@\ten@\p@\charht@\ten@\p@ + \divide\charht@\tan@ii\multiply\charht@\tan@i + \fi + \ifnum\tcount@=\thr@@ + \ifN@\advance\secondy@-.3\charht@\else\advance\secondy@.3\charht@\fi + \fi + \ifnum\scount@=\tw@ + \ifE@\advance\firstx@.3\charht@\else\advance\firstx@-.3\charht@\fi + \fi + \ifnum\tcount@=12 + \ifN@\advance\secondy@-\charht@\else\advance\secondy@\charht@\fi + \fi + \iftY@ + \else + \ifa@ + \ifX@ + \else + \secondx@\secondy@\advance\secondx@-\firsty@ + \ifNESW@\else\multiply\secondx@\m@ne\fi + \multiply\secondx@\tan@ii\divide\secondx@\tan@i + \advance\secondx@\firstx@ + \fi + \fi + \fi + \fi\fi + \ifH@\harrow@\else\ifV@\varrow@\else\arrow@@\fi\fi} +\def\harrow@b{\ifE@\hskip\tocenter@\hskip\firstx@\fi} +\def\harrow@bb{\ifE@\hskip\xdimen@\else\hskip\Xdimen@\fi} +\def\harrow@e{\ifE@\else\hskip-\firstx@\hskip-\tocenter@\fi} +\def\harrow@ee{\ifE@\hskip-\Xdimen@\else\hskip-\xdimen@\fi} +\def\harrow@{\dimen@\secondx@\advance\dimen@-\firstx@ + \ifE@\let\next@\rlap\else\multiply\dimen@\m@ne\let\next@\llap\fi + \next@{% + \harrow@b + \smash{\raise\pdimen@\hbox to\dimen@ + {\harrow@bb\arrow@ii + \ifnum\arrcount@=\m@ne\else\ifnum\arrcount@=\thr@@\else + \ifE@ + \ifnum\scount@=\m@ne + \else + \ifcase\scount@\or\or\char118 \or\char117 \or\or\or\char119 \or + \char120 \or\char121 \or\char122 \or\or\or\arrow@i\char125 \or + \char117 \hskip\thr@@\p@\char117 \hskip-\thr@@\p@\fi + \fi + \else + \ifnum\tcount@=\m@ne + \else + \ifcase\tcount@\char117 \or\or\char117 \or\char118 \or\char119 \or + \char120 \or\or\or\or\or\char121 \or\char122 \or\arrow@i\char125 + \or\char117 \hskip\thr@@\p@\char117 \hskip-\thr@@\p@\fi + \fi + \fi + \fi\fi + \dimen@\mathaxis@\advance\dimen@.2\p@ + \dimen@ii\mathaxis@\advance\dimen@ii-.2\p@ + \ifnum\arrcount@=\m@ne + \let\leads@\null + \else + \ifcase\arrcount@ + \def\leads@{\hrule\height\dimen@\depth-\dimen@ii}\or + \def\leads@{\hrule\height\dimen@\depth-\dimen@ii}\or + \def\leads@{\hbox to\ten@\p@{% + \leaders\hrule\height\dimen@\depth-\dimen@ii\hfil + \hfil + \leaders\hrule\height\dimen@\depth-\dimen@ii\hskip\z@ plus2fil\relax + \hfil + \leaders\hrule\height\dimen@\depth-\dimen@ii\hfil}}\or + \def\leads@{\hbox{\hbox to\ten@\p@{\dimen@\mathaxis@\advance\dimen@1.2\p@ + \dimen@ii\dimen@\advance\dimen@ii-.4\p@ + \leaders\hrule\height\dimen@\depth-\dimen@ii\hfil}% + \kern-\ten@\p@ + \hbox to\ten@\p@{\dimen@\mathaxis@\advance\dimen@-1.2\p@ + \dimen@ii\dimen@\advance\dimen@ii-.4\p@ + \leaders\hrule\height\dimen@\depth-\dimen@ii\hfil}}}\fi + \fi + \cleaders\leads@\hfil + \ifnum\arrcount@=\m@ne\else\ifnum\arrcount@=\thr@@\else + \arrow@i + \ifE@ + \ifnum\tcount@=\m@ne + \else + \ifcase\tcount@\char119 \or\or\char119 \or\char120 \or\char121 \or + \char122 \or \or\or\or\or\char123 \or\char124 \or + \char125 \or\char119 \hskip-\thr@@\p@\char119 \hskip\thr@@\p@\fi + \fi + \else + \ifcase\scount@\or\or\char120 \or\char119 \or\or\or\char121 \or\char122 + \or\char123 \or\char124 \or\or\or\char125 \or + \char119 \hskip-\thr@@\p@\char119 \hskip\thr@@\p@\fi + \fi + \fi\fi + \harrow@ee}}% + \harrow@e}% + \iflabel@i + \dimen@ii\z@\setbox\ZER@\hbox{$\m@th\tsize@@\label@i$}% + \ifnum\arrcount@=\m@ne + \else + \advance\dimen@ii\mathaxis@ + \advance\dimen@ii\dp\ZER@\advance\dimen@ii\tw@\p@ + \ifnum\arrcount@=\thr@@\advance\dimen@ii\tw@\p@\fi + \fi + \advance\dimen@ii\pdimen@ + \next@{\harrow@b\smash{\raise\dimen@ii\hbox to\dimen@ + {\harrow@bb\hskip\tw@\ldimen@i\hfil\box\ZER@\hfil\harrow@ee}}\harrow@e}% + \fi + \iflabel@ii + \ifnum\arrcount@=\m@ne + \else + \setbox\ZER@\hbox{$\m@th\tsize@\label@ii$}% + \dimen@ii-\ht\ZER@\advance\dimen@ii-\tw@\p@ + \ifnum\arrcount@=\thr@@\advance\dimen@ii-\tw@\p@\fi + \advance\dimen@ii\mathaxis@\advance\dimen@ii\pdimen@ + \next@{\harrow@b\smash{\raise\dimen@ii\hbox to\dimen@ + {\harrow@bb\hskip\tw@\ldimen@ii\hfil\box\ZER@\hfil\harrow@ee}}\harrow@e}% + \fi + \fi} +\let\tsize@\tsize +\def\tsizeCDlabels{\let\tsize@\tsize} +\def\ssizeCDlabels{\let\tsize@\ssize} +\def\tsize@@{\ifnum\arrcount@=\m@ne\else\tsize@\fi} +\def\varrow@{\dimen@\secondy@\advance\dimen@-\firsty@ + \ifN@\else\multiply\dimen@\m@ne\fi + \setbox\ZER@\vbox to\dimen@ + {\ifN@\vskip-\Ydimen@\else\vskip\ydimen@\fi + \ifnum\arrcount@=\m@ne\else\ifnum\arrcount@=\thr@@\else + \hbox{\arrow@iii + \ifN@ + \ifnum\tcount@=\m@ne + \else + \ifcase\tcount@\char117 \or\or\char117 \or\char118 \or\char119 \or + \char120 \or\or\or\or\or\char121 \or\char122 \or\char123 \or + \vbox{\hbox{\char117}\nointerlineskip\vskip\thr@@\p@ + \hbox{\char117}\vskip-\thr@@\p@}\fi + \fi + \else + \ifcase\scount@\or\or\char118 \or\char117 \or\or\or\char119 \or + \char120 \or\char121 \or\char122 \or\or\or\char123 \or + \vbox{\hbox{\char117}\nointerlineskip\vskip\thr@@\p@ + \hbox{\char117}\vskip-\thr@@\p@}\fi + \fi}% + \nointerlineskip + \fi\fi + \ifnum\arrcount@=\m@ne + \let\leads@\null + \else + \ifcase\arrcount@\let\leads@\vrule\or\let\leads@\vrule\or + \def\leads@{\vbox to\ten@\p@{% + \hrule\height1.67\p@\depth\z@\width.4\p@ + \vfil + \hrule\height3.33\p@\depth\z@\width.4\p@ + \vfil + \hrule\height1.67\p@\depth\z@\width.4\p@}}\or + \def\leads@{\hbox{\vrule\height\p@\hskip\tw@\p@\vrule}}\fi + \fi + \cleaders\leads@\vfill\nointerlineskip + \ifnum\arrcount@=\m@ne\else\ifnum\arrcount@=\thr@@\else + \hbox{\arrow@iv + \ifN@ + \ifcase\scount@\or\or\char118 \or\char117 \or\or\or\char119 \or + \char120 \or\char121 \or\char122 \or\or\or\arrow@iii\char123 \or + \vbox{\hbox{\char117}\nointerlineskip\vskip-\thr@@\p@ + \hbox{\char117}\vskip\thr@@\p@}\fi + \else + \ifnum\tcount@=\m@ne + \else + \ifcase\tcount@\char117 \or\or\char117 \or\char118 \or\char119 \or + \char120 \or\or\or\or\or\char121 \or\char122 \or\arrow@iii\char123 \or + \vbox{\hbox{\char117}\nointerlineskip\vskip-\thr@@\p@ + \hbox{\char117}\vskip\thr@@\p@}\fi + \fi + \fi}% + \fi\fi + \ifN@\vskip\ydimen@\else\vskip-\Ydimen@\fi}% + \ifN@ + \dimen@ii\firsty@ + \else + \dimen@ii-\firsty@\advance\dimen@ii\ht\ZER@\multiply\dimen@ii\m@ne + \fi + \rlap{\smash{\hskip\tocenter@\hskip\pdimen@\raise\dimen@ii\box\ZER@}}% + \iflabel@i + \setbox\ZER@\vbox to\dimen@{\vfil + \hbox{$\m@th\tsize@@\label@i$}\vskip\tw@\ldimen@i\vfil}% + \rlap{\smash{\hskip\tocenter@\hskip\pdimen@ + \ifnum\arrcount@=\m@ne\let\next@\relax\else\let\next@\llap\fi + \next@{\raise\dimen@ii\hbox{\ifnum\arrcount@=\m@ne\hskip-.5\wd\ZER@\fi + \box\ZER@\ifnum\arrcount@=\m@ne\else\hskip\tw@\p@\fi}}}}% + \fi + \iflabel@ii + \ifnum\arrcount@=\m@ne + \else + \setbox\ZER@\vbox to\dimen@{\vfil + \hbox{$\m@th\tsize@\label@ii$}\vskip\tw@\ldimen@ii\vfil}% + \rlap{\smash{\hskip\tocenter@\hskip\pdimen@ + \rlap{\raise\dimen@ii\hbox{\ifnum\arrcount@=\thr@@\hskip4.5\p@\else + \hskip2.5\p@\fi\box\ZER@}}}}% + \fi + \fi +} +\def\getcos@#1{% + \ifnum\tan@i<\tan@ii + \dimen@#1% + \ifnum\slcount@<8 \count@9 \else \ifnum\slcount@<12 \count@8 \else + \count@7 \fi\fi + \multiply\dimen@\count@\divide\dimen@\ten@ + \dimen@ii\dimen@\multiply\dimen@ii\tan@i\divide\dimen@ii\tan@ii + \else + \dimen@ii#1% + \count@-\slcount@\advance\count@24 + \ifnum\count@<8 \count@9 \else \ifnum\count@<12 \count@8 + \else\count@7 \fi\fi + \multiply\dimen@ii\count@\divide\dimen@ii\ten@ + \dimen@\dimen@ii\multiply\dimen@\tan@ii\divide\dimen@\tan@i + \fi} +\def\Nnext@{\ifN@\let\next@\raise\else\let\next@\lower\fi} +\def\arrow@@{\slcount@\angcount@ + \ifNESW@ + \ifnum\angcount@<\ten@ + \let\arrowfont@\arrow@i\global\advance\angcount@\m@ne + \global\multiply\angcount@13 + \else + \ifnum\angcount@<19 + \let\arrowfont@\arrow@ii\global\advance\angcount@-\ten@ + \global\multiply\angcount@13 + \else + \let\arrowfont@\arrow@iii\global\advance\angcount@-19 + \global\multiply\angcount@13 + \fi\fi + \Tcount@\angcount@ + \else + \ifnum\angcount@<5 + \let\arrowfont@\arrow@iii\global\advance\angcount@\m@ne + \global\multiply\angcount@13 \global\advance\angcount@65 + \else + \ifnum\angcount@<14 + \let\arrowfont@\arrow@iv\global\advance\angcount@-5 + \global\multiply\angcount@13 + \else + \ifnum\angcount@<23 + \let\arrowfont@\arrow@v\global\advance\angcount@-14 + \global\multiply\angcount@13 + \else + \let\arrowfont@\arrow@i\global\angcount@117 + \fi\fi\fi + \ifnum\angcount@=117 \Tcount@115 \else\Tcount@\angcount@\fi + \fi + \Scount@\Tcount@ + \ifE@ + \ifnum\tcount@=\z@\advance\Tcount@\tw@\else\ifnum\tcount@=13 + \advance\Tcount@\tw@\else\advance\Tcount@\tcount@\fi\fi + \ifnum\scount@=\z@\else\ifnum\scount@=13 \advance\Scount@\thr@@\else + \advance\Scount@\scount@\fi\fi + \else + \ifcase\tcount@\advance\Tcount@\thr@@\or\or\advance\Tcount@\thr@@\or + \advance\Tcount@\tw@\or\advance\Tcount@6 \or\advance\Tcount@7 + \or\or\or\or\or\advance\Tcount@8 \or\advance\Tcount@9 \or + \advance\Tcount@12 \or\advance\Tcount@\thr@@\fi + \ifcase\scount@\or\or\advance\Scount@\thr@@\or\advance\Scount@\tw@\or + \or\or\advance\Scount@4 \or\advance\Scount@5 \or\advance\Scount@\ten@ + \or\advance\Scount@11 \or\or\or\advance\Scount@12 \or\advance + \Scount@\tw@\fi + \fi + \ifcase\arrcount@\or\or\global\advance\angcount@\@ne\else\fi + \ifN@\shifted@\firsty@\else\shifted@-\firsty@\fi + \ifE@\else\advance\shifted@\charht@\fi + \goal@\secondy@\advance\goal@-\firsty@ + \ifN@\else\multiply\goal@\m@ne\fi + \setbox\shaft@\hbox{\arrowfont@\char\angcount@}% + \ifnum\arrcount@=\thr@@ + \getcos@{1.5\p@}% + \setbox\shaft@\hbox to\wd\shaft@{\arrowfont@ + \rlap{\hskip\dimen@ii + \smash{\ifNESW@\let\next@\lower\else\let\next@\raise\fi + \next@\dimen@\hbox{\arrowfont@\char\angcount@}}}% + \rlap{\hskip-\dimen@ii + \smash{\ifNESW@\let\next@\raise\else\let\next@\lower\fi + \next@\dimen@\hbox{\arrowfont@\char\angcount@}}}\hfil}% + \fi + \rlap{\smash{\hskip\tocenter@\hskip\firstx@ + \ifnum\arrcount@=\m@ne + \else + \ifnum\arrcount@=\thr@@ + \else + \ifnum\scount@=\m@ne + \else + \ifnum\scount@=\z@ + \else + \setbox\ZER@\hbox{\ifnum\angcount@=117 \arrow@v\else\arrowfont@\fi + \char\Scount@}% + \ifNESW@ + \ifnum\scount@=\tw@ + \dimen@\shifted@\advance\dimen@-\charht@ + \ifN@\hskip-\wd\ZER@\fi + \Nnext@ + \next@\dimen@\copy\ZER@ + \ifN@\else\hskip-\wd\ZER@\fi + \else + \Nnext@ + \ifN@\else\hskip-\wd\ZER@\fi + \next@\shifted@\copy\ZER@ + \ifN@\hskip-\wd\ZER@\fi + \fi + \ifnum\scount@=12 + \advance\shifted@\charht@\advance\goal@-\charht@ + \ifN@\hskip\wd\ZER@\else\hskip-\wd\ZER@\fi + \fi + \ifnum\scount@=13 + \getcos@{\thr@@\p@}% + \ifN@\hskip\dimen@\else\hskip-\wd\ZER@\hskip-\dimen@\fi + \adjust@\shifted@\advance\adjust@\dimen@ii + \Nnext@ + \next@\adjust@\copy\ZER@ + \ifN@\hskip-\dimen@\hskip-\wd\ZER@\else\hskip\dimen@\fi + \fi + \else + \ifN@\hskip-\wd\ZER@\fi + \ifnum\scount@=\tw@ + \ifN@\hskip\wd\ZER@\else\hskip-\wd\ZER@\fi + \dimen@\shifted@\advance\dimen@-\charht@ + \Nnext@ + \next@\dimen@\copy\ZER@ + \ifN@\hskip-\wd\ZER@\fi + \else + \Nnext@ + \next@\shifted@\copy\ZER@ + \ifN@\else\hskip-\wd\ZER@\fi + \fi + \ifnum\scount@=12 + \advance\shifted@\charht@\advance\goal@-\charht@ + \ifN@\hskip-\wd\ZER@\else\hskip\wd\ZER@\fi + \fi + \ifnum\scount@=13 + \getcos@{\thr@@\p@}% + \ifN@\hskip-\wd\ZER@\hskip-\dimen@\else\hskip\dimen@\fi + \adjust@\shifted@\advance\adjust@\dimen@ii + \Nnext@ + \next@\adjust@\copy\ZER@ + \ifN@\hskip\dimen@\else\hskip-\dimen@\hskip-\wd\ZER@\fi + \fi + \fi + \fi\fi\fi\fi + \ifnum\arrcount@=\m@ne + \else + \loop + \ifdim\goal@>\charht@ + \ifE@\else\hskip-\charwd@\fi + \Nnext@ + \next@\shifted@\copy\shaft@ + \ifE@\else\hskip-\charwd@\fi + \advance\shifted@\charht@\advance\goal@-\charht@ + \repeat + \ifdim\goal@>\z@ + \dimen@\charht@\advance\dimen@-\goal@ + \divide\dimen@\tan@i\multiply\dimen@\tan@ii + \ifE@\hskip-\dimen@\else\hskip-\charwd@\hskip\dimen@\fi + \adjust@\shifted@\advance\adjust@-\charht@\advance\adjust@\goal@ + \Nnext@ + \next@\adjust@\copy\shaft@ + \ifE@\else\hskip-\charwd@\fi + \else + \adjust@\shifted@\advance\adjust@-\charht@ + \fi + \fi + \ifnum\arrcount@=\m@ne + \else + \ifnum\arrcount@=\thr@@ + \else + \ifnum\tcount@=\m@ne + \else + \setbox\ZER@ + \hbox{\ifnum\angcount@=117 \arrow@v\else\arrowfont@\fi\char\Tcount@}% + \ifnum\tcount@=\thr@@ + \advance\adjust@\charht@ + \ifE@\else\ifN@\hskip-\charwd@\else\hskip-\wd\ZER@\fi\fi + \else + \ifnum\tcount@=12 + \advance\adjust@\charht@ + \ifE@\else\ifN@\hskip-\charwd@\else\hskip-\wd\ZER@\fi\fi + \else + \ifE@\hskip-\wd\ZER@\fi + \fi\fi + \Nnext@ + \next@\adjust@\copy\ZER@ + \ifnum\tcount@=13 + \hskip-\wd\ZER@ + \getcos@{\thr@@\p@}% + \ifE@\hskip-\dimen@\else\hskip\dimen@\fi + \advance\adjust@-\dimen@ii + \Nnext@ + \next@\adjust@\box\ZER@ + \fi + \fi\fi\fi}}% + \iflabel@i + \rlap{\hskip\tocenter@ + \dimen@\firstx@\advance\dimen@\secondx@\divide\dimen@\tw@ + \advance\dimen@\ldimen@i + \dimen@ii\firsty@\advance\dimen@ii\secondy@\divide\dimen@ii\tw@ + \global\multiply\ldimen@i\tan@i\global\divide\ldimen@i\tan@ii + \ifNESW@\advance\dimen@ii\ldimen@i\else\advance\dimen@ii-\ldimen@i\fi + \setbox\ZER@\hbox{\ifNESW@\else\ifnum\arrcount@=\thr@@\hskip4\p@\else + \hskip\tw@\p@\fi\fi + $\m@th\tsize@@\label@i$\ifNESW@\ifnum\arrcount@=\thr@@\hskip4\p@\else + \hskip\tw@\p@\fi\fi}% + \ifnum\arrcount@=\m@ne + \ifNESW@\advance\dimen@.5\wd\ZER@\advance\dimen@\p@\else + \advance\dimen@-.5\wd\ZER@\advance\dimen@-\p@\fi + \advance\dimen@ii-.5\ht\ZER@ + \else + \advance\dimen@ii\dp\ZER@ + \ifnum\slcount@<6 \advance\dimen@ii\tw@\p@\fi + \fi + \hskip\dimen@ + \ifNESW@\let\next@\llap\else\let\next@\rlap\fi + \next@{\smash{\raise\dimen@ii\box\ZER@}}}% + \fi + \iflabel@ii + \ifnum\arrcount@=\m@ne + \else + \rlap{\hskip\tocenter@ + \dimen@\firstx@\advance\dimen@\secondx@\divide\dimen@\tw@ + \ifNESW@\advance\dimen@\ldimen@ii\else\advance\dimen@-\ldimen@ii\fi + \dimen@ii\firsty@\advance\dimen@ii\secondy@\divide\dimen@ii\tw@ + \global\multiply\ldimen@ii\tan@i\global\divide\ldimen@ii\tan@ii + \advance\dimen@ii\ldimen@ii + \setbox\ZER@\hbox{\ifNESW@\ifnum\arrcount@=\thr@@\hskip4\p@\else + \hskip\tw@\p@\fi\fi + $\m@th\tsize@\label@ii$\ifNESW@\else\ifnum\arrcount@=\thr@@\hskip4\p@ + \else\hskip\tw@\p@\fi\fi}% + \advance\dimen@ii-\ht\ZER@ + \ifnum\slcount@<9 \advance\dimen@ii-\thr@@\p@\fi + \ifNESW@\let\next@\rlap\else\let\next@\llap\fi + \hskip\dimen@\next@{\smash{\raise\dimen@ii\box\ZER@}}}% + \fi + \fi +} +\def\outCD@#1{\def#1{\Err@{\noexpand#1must not be used within \string\CD}}} +\def\preCDspace#1{\RIfMIfI@ + \onlydmatherr@\preCDspace\else\advance\preCDskip@#1\relax\fi\else + \onlydmatherr@\preCDspace\fi} +\def\postCDspace#1{\RIfMIfI@ + \onlydmatherr@\postCDspace\else\advance\postCDskip@#1\relax\fi\else + \onlydmatherr@\postCDspace\fi} +\def\predisplayspace#1{\RIfMIfI@ + \onlydmatherr@\predisplayspace\else + \advance\abovedisplayskip#1\relax + \advance\abovedisplayshortskip#1\relax\fi + \else\onlydmatherr@\preCDspace\fi} +\def\postdisplayspace#1{\RIfMIfI@ + \onlydmatherr@\postdisplayspace\else + \advance\belowdisplayskip#1\relax + \advance\belowdisplayshortskip#1\relax\fi + \else\onlydmatherr@\postdisplayspace\fi} +\def\PreCDSpace#1{\global\preCDskip@#1\relax} +\def\PostCDSpace#1{\global\postCDskip@#1\relax} +\def\CD#1\endCD{% + \outCD@\cgaps\outCD@\rgaps\outCD@\Cgaps\outCD@\Rgaps + \preCD@#1\endCD + \advance\abovedisplayskip\preCDskip@ + \advance\abovedisplayshortskip\preCDskip@ + \advance\belowdisplayskip\postCDskip@ + \advance\belowdisplayshortskip\postCDskip@ + \vcenter{\offinterlineskip + \vskip\preCDskip@\Let@\global\colcount@\@ne\global\rowcount@\z@ + \everycr{% + \noalign{% + \ifnum\rowcount@=\Rowcount@ + \else + \getrgap@\rowcount@\vskip\getdim@ + \global\advance\rowcount@\@ne\global\colcount@\@ne + \fi}}% + \tabskip\z@ + \halign{&\global\xoff@\z@\global\yoff@\z@ + \getcgap@\colcount@\hskip\getdim@ + \hfil\vrule\height\ten@\p@\width\z@\depth\z@ + $\m@th\displaystyle{##}$\hfil + \global\advance\colcount@\@ne\cr + #1\crcr}\vskip\postCDskip@}% + \preCDskip@\z@\postCDskip@\z@ + \def\getcgap@##1{\ifcase##1\or\getdim@\z@\else\getdim@\standardcgap\fi}% + \def\getrgap@##1{\ifcase##1\getdim@\z@\else\getdim@\standardrgap\fi}% + \let\Width@\relax\let\Height@\relax\let\Depth@\relax\let\Rowheight@\relax + \let\Rowdepth@\relax\let\Colwidth@\relax +} +\catcode`\@=\active diff --git a/macros/lamstex/inputs/cd.tox b/macros/lamstex/inputs/cd.tox new file mode 100644 index 0000000000..9fe6cba1b4 --- /dev/null +++ b/macros/lamstex/inputs/cd.tox @@ -0,0 +1,23 @@ +\catcode`\@=11 +\let\Cgaps\undefined\let\Rgaps\undefined\let\getcgap@\relax\let\getrgap@\relax +\let\cgaps\undefined\let\rgaps\undefined\let\Gaps@@\relax\let\cgaps@\relax +\let\rgaps@\relax\let\gaps@@\relax\let\mgaps@\relax\let\mgaps@@\relax +\let\mgaps@@@\relax\let\mgaps@@@@\relax\let\changewidth\undefined +\let\ARROW@\relax\let\OPTIONS@\relax +\expandafter\let\csname\string @(\endcsname\relax +\let\zero@\relax\let\one@\relax\let\a@\relax\let\ds@\relax\let\dsA@\relax +\let\dsO@\relax\let\ds@@\relax\let\dtX@\relax\let\dtXA@\relax\let\dtXO@\relax +\let\dtX@@\relax\let\dtY@\relax\let\dtYA@\relax\let\dtYO@\relax +\let\dtY@@\relax\let\da@\relax\let\dx@\relax\let\dX@\relax\let\dy@\relax +\let\dY@\relax\let\p@@\relax\let\L@\relax\let\l@\relax\let\dL@\relax +\let\dl@\relax\let\s@\relax\let\uns@\relax\let\optioncodes@\relax +\let\slopes@\relax\let\slope@\relax\let\slope@a\relax\let\dotoks@i\relax +\let\dotoks@ii\relax\let\preCD@\relax\let\outside@\relax\let\arrow@\relax +\let\harrow@b\relax\let\harrow@bb\relax\let\harrow@e\relax +\let\harrow@ee\relax\let\harrow@\relax\let\tsize@\relax +\let\tsizeCDlabels\undefined\let\ssizeCDlabels\undefined\let\tsize@@\relax +\let\varrow@\relax\let\getcos@\relax\let\Nnext@\relax\let\arrow@@\relax +\let\outCD@\relax\let\preCDspace\undefined\let\postCDspace\undefined +\let\predisplayspace\undefined\let\postdisplayspace\undefined +\let\PreCDSpace\undefined\let\PostCDSpace\undefined\let\CD\undefined +\catcode`\@=\active diff --git a/macros/lamstex/inputs/dblacc.tex b/macros/lamstex/inputs/dblacc.tex new file mode 100644 index 0000000000..82341597ef --- /dev/null +++ b/macros/lamstex/inputs/dblacc.tex @@ -0,0 +1,55 @@ +\catcode`\@=11 +\def\theskewchar@{\global\familycount@\@ne + \global\skewcharcount@\the\skewchar\textfont\@ne + \ifnum\fam>\m@ne\ifnum\fam<16 + \global\familycount@\the\fam\relax + \global\skewcharcount@\the\skewchar\textfont\the\fam\relax\fi\fi + \ifnum\skewcharcount@>\m@ne + \ifnum\skewcharcount@<128 + \global\multiply\familycount@256 + \global\advance\skewcharcount@\familycount@ + \global\advance\skewcharcount@28672 + \mathchar\skewcharcount@\else + \global\skewcharcount@\m@ne\fi\else + \global\skewcharcount@\m@ne\fi} +\def\getpoints@#1.#2\getpoints@{\pointcount@#1 } +\def\dimentomu@{\global\multiply\accentdimen@ 100 + \expandafter\getpoints@\the\accentdimen@\getpoints@ + \multiply\pointcount@18 + \divide\pointcount@\@m + \global\accentmu@\pointcount@} +\def\Makeacc@#1#2{\def#1{\RIfM@\DN@{\mathaccent@ + {"\accentclass@#2 }}\else\DN@{\nonmatherr@{#1}}\fi\next@}} +\def\unbracefonts@{\let\Cal@\Cal@@\let\rom@\rom@@\let\bold@\bold@@ + \let\slanted@\slanted@@} +\def\mathaccent@#1#2{\ifnum\fam=\m@ne\xdef\thefam@{1}\else + \xdef\thefam@{\the\fam}\fi + \global\accentdimen@\z@ + \setboxz@h{\unbracefonts@$\m@th\fam\thefam@\relax#2$}% + \ifdim\accentdimen@=\z@\DN@{\mathaccent#1{#2}}% + \setbox\tw@\hbox{\unbracefonts@$\m@th\fam\thefam@\relax#2\theskewchar@$}% + \setbox4=\hbox{$\m@th\ifnum\skewcharcount@=\m@ne\else + \mathchar\skewcharcount@\fi$}% + \global\accentdimen@\wd\tw@\global\advance\accentdimen@-\wdz@ + \global\advance\accentdimen@-\wd4 + \global\multiply\accentdimen@\tw@ + \dimentomu@\global\advance\accentmu@\@ne + \else\DN@{{\mathaccent#1{#2\mkern\accentmu@ mu}% + \mkern-\accentmu@ mu}{}}\fi + \next@} +\Makeacc@\Hat{05E} +\Makeacc@\Check{014} +\Makeacc@\Tilde{07E} +\Makeacc@\Acute{013} +\Makeacc@\Grave{012} +\Makeacc@\Dot{05F} +\Makeacc@\Ddot{07F} +\Makeacc@\Breve{015} +\Makeacc@\Bar{016} +\def\Vec{\RIfM@\DN@{\mathaccent@{"017E }}\else + \DN@{\nonmatherr@\Vec}\fi\next@} +\def\newbox@{\alloc@@4\box\chardef\insc@unt} +\def\accentedsymbol#1#2{\expandafter\newbox@\csname\exstring@#1@box\endcsname + \setbox\csname\exstring@#1@box\endcsname\hbox{$\m@th#2$}% + \define#1{\copy\csname\exstring@#1@box\endcsname{}}} +\catcode`\@=\active diff --git a/macros/lamstex/inputs/dblacc.tox b/macros/lamstex/inputs/dblacc.tox new file mode 100644 index 0000000000..6db899c9ed --- /dev/null +++ b/macros/lamstex/inputs/dblacc.tox @@ -0,0 +1,8 @@ +\catcode`\@=11 +\let\theskewchar@\relax\let\getpoints@\relax\let\dimentomu@\relax +\let\Makeacc@\relax\let\unbracefonts@\relax\let\mathaccent@\relax +\let\Hat\undefined\let\Check\undefined\let\Tilde\undefined\let\Acute\undefined +\let\Grave\undefined\let\Dot\undefined\let\Ddot\undefined\let\Breve\undefined +\let\Bar\undefined\let\Vec\undefined\let\newbox@\relax +\let\accentedsymbol\undefined +\catcode`\@=\active diff --git a/macros/lamstex/inputs/dvipaste.tex b/macros/lamstex/inputs/dvipaste.tex new file mode 100644 index 0000000000..465f9cd473 --- /dev/null +++ b/macros/lamstex/inputs/dvipaste.tex @@ -0,0 +1,331 @@ +% Copyright (C) The TeXplorators Corporation 1989 + +% This is DVIPASTE.TEX, to be used with DVIPASTE.EXE, which is +% Copyright (C) The TeXplorators Corporation 1989. + +% First we want to have a control sequence that stands for the current +% category code of @, so that we can restore this category code at the end, +% after temporarily making @ a letter (PLAIN makes @ category 12, but +% AmS-TeX, for example, makes @ category 13). Using \csname CCC@\endcsname, +% we can even let this control sequence be called \CCC@, before actually +% making @ a letter, except that this won't work when @ has category +% code 13, so instead we have to use the \uccode and \uppercase trick. + +{\uccode`\Z=`\@ + \uppercase{\expandafter\xdef\csname CCCZ\endcsname{\the\catcode`\@}} +} + +% Now we make @ a letter. + +\catcode`\@=11 + + +% \eat@ gobbles a token; it is the same as in AmS-TeX. + +\def\eat@#1{} + + +% We need to know if a \sendout or \paste has already occurred. The +% following are made true once the respective condition has occurred. + +\newif\ifsendout@ +\newif\ifpaste@ + + +% We need to allocate places for writing or reading the .dat file. + +\newwrite\writedata@ +\newread\readdata@ + + +% The definition of \sendout has the following features (%1, %2, etc. +% refer to lines so marked within the definition of \sendout): + +%1 If \paste has occurred, we won't allow a \sendout to occur, because +% these shouldn't both occur in the same file; in fact, files having +% \sendout's will redefine the \output routine. + +% In the \errmessage, we can't say \string\sendout, because \sendout is +% outer. So we use \expandafter\eat@\string\\ to get the \, and then +% spell out sendout. + +%2 If a \paste hasn't occurred, we see if a previous \sendout has occurred, +% and if it hasn't, we do the following: + +%3 Open the .dat file for writing. + +%4 Declare \t@nrm to use for the name of the file and the page number +% in the footline (it is possible that no font with the necessary +% characters in it has been used in the file); the declaration is made +% \global, just in case \sendout was used in a group, though it really +% shouldn't be. + +%5 Set \topskip to 0pt. + +%6 Change the \output routine, to simply \shipout the current page, +% followed by a line 2pc below with the name of the file, and the +% page number. + +%7 We also want to redefine \bye, to close out the .dat file. We can't +% put \gdef\bye within the definition of \sendout, since \bye is outer, +% but we can say \expandafter\gdef\csname bye\endcsname ! + +%8 And we make \ifsendout@ true. + +%9 In any case (i.e., whether or not a previous \sendout has occurred), +% we now put #1 in \box0, so that we can refer to its height, depth and +% width (usually #1 will be a \box, but we don't know which one). + +%10 Then we write this data to the .dat file; each \space will expand to a +% space (PLAIN has \def\space{ }). + +%11 We start the page with an invisible \hrule (so that the next \vskip +% won't disappear). + +%12 We move down to the bottom of the page. + +%13 We emit a special, which tells where the .dvi instructions for +% printing \box0 begin. + +%14 We set the dimensions of \box0 to 0pt. + +%15 We start an unindented paragraph with \box0. + +%16 Then we emit another special, which tells where the .dvi instructions +% for printing \box0 end. + +%17 Finally, we put in a smashed (and tiny) \vrule. Since this \vrule +% has to occur exactly at the same position where the \noindent began, +% the .dvi instructions for printing \box0 will bring us right back to +% the position we started at. + +%18 Then we \eject, so that the \output routine will simply print \box0 on +% a separate page. + +\outer\def\sendout#1{% + \ifpaste@ %1 + \errmessage{\expandafter\eat@\string\\sendout and + \string\paste\space not allowed in same file + (\string\paste\space has already appeared)}% + \else %2 + \ifsendout@ + \else + \immediate\openout\writedata@=\jobname.dat %3 + \global\font\t@nrm=cmr10 %4 + \global\topskip\z@ %5 + \global\output{\shipout\vbox{\vbox to\vsize{\unvbox255 }% %6 + \baselineskip2pc + \line{\hfil\t@nrm File [\jobname], \#\number\pageno\hfil}}% + \global\advance\pageno\@ne}% + \expandafter\gdef\csname bye\endcsname %7 + {\immediate\closeout\writedata@\par\vfill\supereject\end}% + \global\sendout@true %8 + \fi + \setbox\z@\hbox{#1}% %9 + \immediate\write\writedata@ + {\the\ht\z@\space\the\dp\z@\space\the\wd\z@}% %10 + \hrule height\z@ %11 + \vskip\vsize %12 + \special{beginpaste:}% %13 + \ht\z@=\z@\dp\z@=\z@\wd\z@=\z@ %14 + \noindent\box\z@ %15 + \special{endpaste:}% %16 + \smash{\vrule height1sp width1sp depth\z@}% %17 + \eject %18 + \fi} + + +% The scratch tokens \toks@@ are already used in AmS-TeX. + +\toksdef\toks@@=2 + + +% \rightappend@ is from The TeXbook, page 378. + +\long\def\rightappend@#1\to#2{\toks@{\\{#1}}% + \toks@@=\expandafter{#2}\xdef#2{\the\toks@@\the\toks@}} + + +% \ifreading@ will be true while still reading the data file; it is simply +% the opposite of \ifeof, but we need an \if... with these reversed values, +% to use within a \loop. + +\newif\ifreading@ + + +% The last line of the data file will produce a \par, so we need to have +% something to test against \par. + +\def\Par@{\par} + + +% The definition of \paste has the following features: + +%1 If \sendout has occurred, we won't allow a \paste to occur. + +%2 If a \paste hasn't occurred, we do the following: + +%3 We make \ifpaste@ true. + +%4 When we read in a data file `file'.dat, we will record all the data +% in a control sequence \`file'@dat. This will be a list macro, as in +% The TeXbook, page 378. + +% To see whether we have read in the data file yet, we just see whether +% this control sequence, as specified by \csname, is \relax. + +%5 If not, we haven't read the file yet, so we immediately open it for +% reading. + +%6 We use \ifeof to test whether the file really exists. + +%7 Assuming the file does exist, we do the following. + +%8 We are going to temporarily store the data in the control sequence +% \next@, and at the end \let\`file'@dat=\next@. We do this because it +% is rather awkward to continually refer to the control sequence +% \`file'@dat, which can only be named using \csname. We begin by +% setting \next@ to be empty. + +%9 We set \ifreading@ to be true (it will be false when we get to the +% end of the data file). + +%10 We read using a \loop. + +%11 The \loop needs a test that is true if we are going to keep reading, +% so we set \ifreading@ false when \ifeof gives true. + +%12 If we are still reading the file, we read a line to \next@ii. + +%13 The file has a \par at the end, so \ifx\next@ii\Par@ is true when we +% are at the last line. + +%14 If that is not the case, then we want to add the data in \next@ii to +% \next@. We need \expandafter\rightappend@; otherwise we would just +% get \next@ii in the token list, rather than the values it now has. + +%15 And we just keep doing that until the file is all read. + +%16 Then we close the file. + +%17 And then we want to \global\let\`file'@dat=\next@. We need to expand +% the \csname...\endcsname after a \global\let, which requires the +% triple \expandafter trick of The TeXbook, page 374. + +%18 In any case (i.e., whether or not we first had to read in the data +% file), we now want to apply the \getdata@ construction, defined +% below, to \`file'@dat and the second argument #2 of \paste. This +% also requires an \expandafter. + +%19 \ifgetdata@ will be true if #2 is actually the number of a line in +% the data file. + +%20 In this case, the three pieces of data will be stored in \data@ht, +% \data@dp, and \data@wd, and we will want to put in a box of that +% height, depth and width. The easiest way is to lower a box of that +% height+depth by the depth, so we first set \dimen@ to that sum. + +%21 We make an \hbox containing the special, and then the empty box with +% the desired dimensions. NOTE: It is important to put the \special +% in the \hbox, in case this empty box turns out to be the first +% thing on the page. For some reason, \tex\ doesn't position such +% an empty box at the right place, although it does position anything +% that will actually appear on the page in the right place; a box +% with a \special in it is NOT treated as an empty box in this process. + +%22 If #2 is not the number of a line in the data file, we just give an +% error message ``No data for File [<data file>], #[<value of #2>]'' +% In order to have # appear in the error message, rather than ##, we +% temporarily make # the \lccode of Z, put Z where we want the # to +% appear, and then \lowercase the \errmessage. However, we want to +% have uppercase N and F in this message, so we have to also set +% the \lccode of N to N, and of F to F. + + +\def\paste#1#2{% + \ifsendout@ %1 + \errmessage{\string\paste\space and + \expandafter\eat@\string\\sendout not allowed in same file + (\expandafter\eat@\string\\sendout has already appeared)}% + \else %2 + \global\paste@true %3 + \expandafter\ifx\csname #1@dat\endcsname\relax %4 + \immediate\openin\readdata@=#1.dat %5 + \ifeof\readdata@\errmessage{No file #1.dat}% %6 + \else %7 + \def\next@{}% %8 + \reading@true %9 + \loop %10 + \ifeof\readdata@\reading@false\fi %11 + \ifreading@ %12 + \read\readdata@ to\next@ii + \ifx\next@ii\Par@\else %13 + \expandafter\rightappend@\next@ii\to\next@\fi %14 + \repeat %15 + \immediate\closein\readdata@ %16 + \expandafter\expandafter\expandafter\global\expandafter + \let\csname#1@dat\endcsname\next@ %17 + \fi + \fi + \expandafter\getdata@\csname#1@dat\endcsname{#2}% %18 + \ifgetdata@ %19 + \dimen@=\data@ht\advance\dimen@\data@dp %20 + \hbox{\special{dvipaste: #1 #2}% %21 + \lower\data@dp\vbox to\dimen@{\hbox to\data@wd{\hfil}\vfil}}% + \else %22 + {\lccode`\Z=`\#\lccode`\N=`\N\lccode`\F=`\F% + \lowercase{\errmessage{No data for File [#1], Z#2}}}% + \fi + \fi} + + +% \data@ht, \data@dp, and \data@wd are registers in which \getdata@ will +% store the data gotten. + +\newdimen\data@ht +\newdimen\data@dp +\newdimen\data@wd + + +% We also use a flag \ifgetdata@ to tell whether there was data on the line +% requested. + +\newif\ifgetdata@ + + +% Argument #1 for \getdata@ is a list macro, and #2 a number. + +%1 We start by setting the counter \count@ to 0, and \ifgetdata@ to +% false. + +%2 We temporarily (i.e., within a group), define \\ to: (a) advance +% \count@ by 1 (so that \count@ is k when we are looking at the kth +% thing on the list); (b) if \count@=#2 (we are at the element of the +% lists specified by #2), set \ifgetdata@ true (so it is true only if +% there are at least #2 pieces of data); (c) and then use \getdata@@ to +% get the data out of this piece. + +%3 And then we apply this \\ to the list. + + +\def\getdata@#1#2{\count@\z@\getdata@false %1 + {\def\\##1{\advance\count@\@ne\ifnum\count@=#2\relax\global\getdata@true + \getdata@@##1\getdata@@\fi %2 + }#1}} %3 + + +% The elements of the list macro will be of the form + +% [...]pt [...]pt [...]pt + +% with a space after the first and second pt, so we just have \getdata@ +% delimit its first two arguments with spaces. + + +\def\getdata@@#1 #2 #3\getdata@@{% + \global\data@ht=#1\relax\global\data@dp=#2\relax\global\data@wd=#3\relax} + + +% Finally, we return @ to its old \catcode. + +\catcode`\@\CCC@ diff --git a/macros/lamstex/inputs/inst.tex b/macros/lamstex/inputs/inst.tex new file mode 100644 index 0000000000..e1b7bbd76b --- /dev/null +++ b/macros/lamstex/inputs/inst.tex @@ -0,0 +1,484 @@ +\input amstexl +\input lamstex + +\docstyle{paper} + +\fancyfootnotes +\RefWarnings +\litdelimiter* +\litbackslash" + +%%%%%%%%%%%%%%%%%%%%% Special stuff for this document %%%%%%%%%%%%%%%%%%%%% + +%% Material before title (\pretitle): + +\font\bigbf=cmbx10 scaled\magstep5 +\redefine\pretitle{\centerline{\bigbf READ ME FIRST!}\vskip5pt} + +%% Put headings on pages: + +\headline={\ifnum\pageno=1 \hfil + \else + \tenpoint + \leaders\hrule height.6pt\hfil\ % + \LamSTeX\ \bf INSTALLATION MANUAL% + \rm\ \leaders\hrule height.6pt \hfil + \fi} + +%% LaTeX logo: + +\define\LaTeX{L\kern-.35em\raise.4ex\hbox{\sevenrm A}\kern-.15em\TeX} + +%% TeXtures logo: + +\define\TeXtures{\TeX {\smc tures}} + +%% BibTeX logo: + +\def\BibTeX{B{\eightrm IB}\kern-.1em\TeX} + +%% For special `Mac' paragraphs + +\define\Mac{% + \medbreak\noindent + \vtop{\offinterlineskip + \vbox{\hrule + \hbox{\vrule + \hskip1.5pt + \vbox{\vskip1.5pt + \hrule height 7pt width11pt depth0pt + \vskip2pt + \hbox{\hskip4pt + \vrule height.25pt depth.25pt width4pt + \vrule height.7pt depth.7pt width 3pt}% + \vskip3pt}% + \hskip1.5pt\vrule}% + \hrule}% + \vskip-.4pt + \hbox to14.8pt{\hfil + \vbox{\hrule + \hbox to12pt{\vrule height2pt\hfil \vrule}% + \hrule}% + \hfil}% + }\hskip5pt\relax} + +\define\endMac{\medbreak} + +%% \ character, when literal mode can't be used: + +\define\bs{\char'134 } + +% Prevent the hyphenation re-ally: + +\hyphenation{real-ly} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\document + +\title \rm\LamSTeX\\ INSTALLATION\\ MANUAL\endtitle + +\author The \TeX plorators Corporation\endauthor + +\abstract +This installation manual explains how to install \LamSTeX\ on MS-DOS machines +or on the Macintosh. + +This manual was itself produced with the \lit*paper* style. +Appendix~\ref{repro} explains how to use \LamSTeX@, together with some of the +text files supplied, to reproduce this manual. +\endabstract + +\date\today + +\thanks{Acknowledgements: + +As always, my most sincere thanks go to Don Knuth, who made it all possible. + +Thanks to all those who tried out \LamSTeX\ in its early stages, and to +Mike Downes and Barbara Beeton, for the interfacing with \AmSTeX. + +Special thanks to Blue Sky Research, and Doug Henderson in particular, for +efforts beyond the call of duty, or even of reason.} + +\keywords{\LamSTeX} +\subjclass{Typesetting} +\address{3701 W. Alabama, Suite 450-273. Houston, TX 77027 (U.S.A.)} + +\maketitle + +%\maketoc +\tocfile +\toclevel 1 + +\heading Introduction\endheading + +The main Manual for \LamSTeX\ is {\it\LamSTeX@, The Synthesis}, together with +the \LamSTeX\ Version~\lit*2.0* Supplement, which notes various changes for +the latest version. The most important changes are covered in sections~ 2.1, +4.1, 4.2, 5.1, and~ 5.2 of the Supplement. Chapters~9 and ~10 of the +Supplement explain about the \lit*paper* and \lit*book* style (mentioned +below), and Chapter~13 explains about partitioned matrices, a new feature of +\LamSTeX@. + +\heading Cautions, Requirements, and Prerequisites\endheading + +In addition to the \lit*.log* and \lit*.dvi* files that \TeX\ normally +writes, \LamSTeX\ also writes files with the extensions \lit*.lax*, +\lit*.ndx*, and \lit*.toc*. Files with the extension \lit*.aux*, +\lit*.xdx*, and \lit*.bbl* may also be produced. + +This naturally means that you should avoid these extensions for files that +you make yourself, and it also means that your operating system must allow +numerous files to be open at once; in MS-DOS systems your \lit*config.sys* +file should set the values \lit*FILES=20* and \lit*BUFFERS=16*, or higher. + +To run \LamSTeX\ you will need an implementation of \TeX\ that allows the +maximum main memory size (\lit*65534* words); it must also allow at least +\lit*3000* control sequence names (as well as enough room for the +additional fonts that come with \LamSTeX). + +In addition to macro packages, \LamSTeX\ also involves some programs. As +explained below, MS-DOS or Macintosh versions are supplied, as well as the +C~source code, for compilation on other machines. + +The \LamSTeX~Manual assumes that you already know about, and are using, \TeX\ +(the basic reference here is [1], though you might well be using a more +elementary introduction); for the installation, you will also need to have at +least some idea of where your implementation of \TeX\ keeps various types of +files. A little familiarity with \AmSTeX\ is also assumed, the official +reference being [3]. You do not need to know \LaTeX\ (described in [2]), +except that you won't understand the name `\LamSTeX' unless you know that +\LaTeX\ exists also. + +\heading Installation\endheading + +\LamSTeX\ consists of several macro packages to be used along with \TeX@, +a couple of programs to process various parts of the output, and 5~new +fonts, for producing commutative diagrams (see Part~II of the Manual, +{\it\LamSTeX@, The Synthesis}). + +Since different implementations of \TeX\ keep files in different places, +it is not possible to provide an installation program to place all the +\LamSTeX\ files in the proper place; you will have to do that yourself, +although there are some aids for installing the fonts properly. + +\section{Macro packages} You might want to make a special directory for +the \LamSTeX\ macro files, or you might want to put them in a directory +where your implementation of \TeX\ normally looks for input files. + +As explained in the Manual, \LamSTeX\ must always be used with +\AmSTeX@, and in particular, with the file \lit*amstexl.tex*. + +The files \lit*lamstex.tex* and \lit*lasmtbl.tex* are the main macro packages +for \LamSTeX@, while \lit*lamstex.stf*, \lit*lamstex.stb*, and +\lit*lamstex.stt* are subsidiary files used when producing tables of +contents, indexes and tables. + +The file \lit*ptmatrix.tex* is used for partitioned matrices, as mentioned +above. The file \lit*bibtex.tex* is needed when interfacing with \BibTeX\ +(as explained in Chapter~7 of the Supplement). The file \lit*lithl.tex* has a +very specialized use, explained in Chapter~11 of the Supplement, and the +files \lit*pcompat.tex* and \lit*acompat.tex* are also quite specialized, +allowing compatibility with files originally produced with \lit*plain* \TeX@, +and \AmSTeX@, respectively; the use of these files is described at the +beginning of the files themselves. + +Eleven pairs of files, \lit*alignat.tex*, \lit*alignat.tox*, \dots, +\lit*varref.tex*, \lit*varref.tox*, come next; their function is described +in Chapter~14 of the Manual. + +Next come ``style files''. As the Manual explains, \LamSTeX\ % automatically +comes with a default style, which is easy to use while you are still learning +about \text{\LamSTeX}@. There are also two ``generic'' \LamSTeX\ styles---for +papers and books---which comprise the files \lit*paper."1"1"1* and +\lit*book."1"1"1*. (Eventually, many specialized style files should also be +available for \LamSTeX.) As mentioned in the Introduction, the \lit*paper* +and \lit*book* styles are described in Chapters~9 and~10 of the Supplement; +since most features of these styles are extensions of those for the default +style, you should be familiar with the default style, explained in the +Manual, before trying to learn about the specialized styles. + +[Both the \lit*paper* and \lit*book* styles use 8~point type for various +constructions, and they both have the control sequence \lit*\LamSTeX* for +printing the `\text{\LamSTeX}' logo, which uses the Computer Modern symbol +font \lit*cmsy8*, normally loaded only for 8~point type. The file +\lit*lamslogo.tex* allows you to print the \LamSTeX\ logo even in the default +style: Type `\lit*\input lamslogo*' at the beginning of your file; this will +load \lit*cmsy8* if necessary, and then define the \lit*\LamSTeX* control +sequence.] + +There is also a specialized \lit*letter.st* for letters; to find out about +it, \TeX\ the file \lit*letter.tex*, and print it out. (The letter uses the +\lit*\LamSTeX* logo control sequence, so you will need to have the +\lit*cmsy8* font available. If you don't have this font, simply delete the +line \lit*\input lamslogo* from the file, and replace the occurrences of +\lit*{\LamSTeX}* with something you can print, for example, `\lit*LAMSTEX*'.) + +\section{Programs\label{programs}} The \LamSTeX\ programs \lit*index* and +\lit*dvipaste* are used to process some of \LamSTeX's output: \lit*index* +turns the compact index files produced by \LamSTeX\ into sorted, extended, +files that can then be used to actually print an index (Chapter~13 of the +Manual), while \lit*dvipaste* is needed to implement \LamSTeX's approach to +tables (see Chapter~17). These programs should be installed in the proper +place for them to work on the files that are produced by \LamSTeX@. For +MS-DOS there are executable files \lit*index.exe* and +\lit*dvipaste.exe*. + +\Mac +For +the Macintosh version of \LamSTeX\ there are \lit*dvipaste* and \lit*index* +applications. As explained in the Manual, \lit*dvipaste* combines +\lit*.dvi* files. If you are using \TeXtures, which normally doesn't +create \lit*.dvi* files, you will first have to use the \TeXtures\ DVItool +accessory, choosing `Export DVI' to create the \lit*.dvi* files that are +going to be combined; after using \lit*dvipaste* to create a (newly named) +\lit*.dvi* file, you will have to use the DVItool accessory again, +choosing `Import DVI' to convert this \lit*.dvi* file into a \TeXtures\ % +document. (Sigh.) \endMac + +If you have neither an MS-DOS machine nor a Macintosh, the necessary programs +can be compiled from the C~source code files \lit*dvipaste.c* and +\lit*index.c*. + +\section{Fonts} Installation of \LamSTeX's fonts for commutative diagrams +is more complicated. + +\subsection{The {\tt.tfm} files} Even if you aren't going to use +commutative diagrams, you will at least need the \lit*.tfm* files +\lit*lams1.tfm*, \dots, \lit*lams5.tfm*, since the \lit*lamstex.tex* macro +package uses them, and you will also need the \lit*dummy.tfm* file that is +used by \AmSTeX@. +\footnote{This font isn't all that important, but the \AmSTeX\ macro file +does load it; only the metrics for this font are needed, since it is used +only for ``syntax checking'', where no output is produced.} These \lit*.tfm* +files should simply be placed wherever your implementation of \TeX\ expects +to find \lit*.tfm* files. + +\Mac +For versions of \TeX\ on the +Macintosh that do not use ordinary \lit*.tfm* and \lit*.pk* files, + there are `\lit*lamsmetrics*' and `\lit*lamsfonts*' +suitcases for \TeXtures. Just copy these suitcases into the \TeXtures\ % +`\lit*TeX fonts*' folder, and you will be done. The suitcases contain the +necessary font metrics, as well as the fonts for printing on the LaserWriter +or viewing with \TeXtures---these fonts are supplied at the standard +magnification, as well as the magnifications \lit*\magstephalf*, +\lit*\magstep1*, and \lit*\magstep2*. + +In addition, there is a `\lit*dummy*' suitcase for the \lit*dummy* font used +in \AmSTeX@, which should also be transferred to the `\lit*TeX fonts*' +folder. + + +\subsection{The {\tt.pk} files} Installation of \lit*.pk* files is much +more complicated, not only because every implementation of \TeX\ seems to +arrange things differently, but also because different \lit*.pk* files are +required for different printers. The +\lit*.pk* files are kept in separate directories (or folders)---\lit*300*, +\lit*240*, \lit*180*, and \lit*118*---where \lit*300* is for 300~dot/inch +printers, \lit*240* for 240~dot/inch printers, \lit*180* for 180~dot/inch +printers, and \lit*118* for ``printing'' on the screen (viewing) with +ArborText's~\lit*preview*. + +\smallskip +The first thing to do is to change to the subdirectory where you want to +place the standard size (unmagnified) \lit*.pk* files. The name of this +subdirectory probably ends with something like that shown in the table +below: \pagelabel{startpage} +\bigskip +\centerline{\paste{insttbls}1} +\bigskip +\flushpar (If you are lucky, you might have an implementation of \TeX\ +that follows a more logical arrangement, like using \lit*\300\m1000* for +the unmagnified fonts for 300~dot/inch printers, \lit*\240\m1000* for the +unmagnified fonts for 240~dot/inch printers, etc.) + +Each of the directories \lit*300*, \dots, +\lit*118*, has subdirectories \lit*0*, \lit*h*, \lit*1*, and \lit*2*, +where the subdirectory \lit*0* contains the unmagnified fonts for that +resolution. The five files {\it in subdirectory~\lit*0* of the appropriate +directory\/} should be copied to the hard disk, {\it +assuming that you are in the proper subdirectory of the hard disk}. + +For MS-DOS systems, there are batch files, \lit*300.bat*, \lit*240.bat*, +\lit*180.bat*, and \lit*118.bat*, to do this. {\it Assuming that you are +in the proper subdirectory of the hard disk}, and that the diskette +containing the fonts is in drive \lit*a:*, you can simply type + + + +\list +\item \lit*a:300* for 300 dot/inch printers; +\item \lit*a:240* for 240 dot/inch printers; +\item \lit*a:180* for 180 dot/inch printers; +\item \lit*a:118* for 118 dot/inch previewing. +\endlist +If, for some reason, the diskette has to be placed in the \lit*b:* drive, +then in the batch files all occurrences of \lit*a:* will have to be +changed to \lit*b:*. + +\smallskip + +The Manual was actually printed with somewhat preliminary versions of +these special fonts, and at certain places in the Manual, for example, on +page~139, it can be seen that different portions of horizontal arrows do +not align quite properly. The arrow fonts that come with \LamSTeX\ have +corrected these deficiencies. + +Nevertheless, at 300 dot/inch, or even lower resolution, it is inevitable +that there will be some jaggedness in the arrows---which are constructed +by juxtaposing smaller pieces---as in the diagram below: +$$ +\cgaps{1;.5} +\CD +A @(1,0) @(0,-1) @(1,-1) & B @()\0t@(0,-1) @(1,0) @(1,-1)& C@(0,-1)\\ +D @(1,0) @(1,1) & E @(1,1) @(1,0)& F +\endCD +$$ + +By the way, this diagram has no inherent interest, except that it happens +to use characters from all five of these fonts, so printing this manual +yourself, as described in Appendix~\ref{repro}, provides a check that the +fonts have been installed correctly. + +\Mac +If you have a Macintosh Plus or SE@, things will be even worse when you +view such diagrams. Because of a QuickDraw bug in the ROM@, horizontal +and vertical arrows usually won't have the proper heads; however, the +printed version will still be correct. +\endMac + +\topic{Magnified fonts} You now have all the \lit*.pk* files necessary for +printing (or previewing) unmagnified documents. But in case you want to +apply magnification to some documents, all the \lit*.pk* files are also +supplied at magnifications of \lit*\magstephalf*, \lit*\magstep1*, and +\lit*\magstep2*. + +\subtopic{Fonts for {\tt\bs magstephalf}} To install all the \lit*.pk* +files used for magnification by\linebreak \lit*\magstephalf*, you must +first change to the subdirectory where the magnified files are supposed to +go. The name of this subdirectory probably ends with something like that +shown in the table below +\bigskip +\centerline{\paste{insttbls}2} +\nopagebreak +\bigskip +\flushpar(or, more logically, with something like \lit*\m1095*.) + +Now you should copy the files in subdirectory~\lit*h* of the appropriate +directory on the diskette to this directory of the hard disk. For MS-DOS +systems, you can simply type +\list +\item \lit*a:300-h* for 300 dot/inch printers; +\item \lit*a:240-h* for 240 dot/inch printers; +\item \lit*a:180-h* for 180 dot/inch printers; +\item \lit*a:118-h* for 118 dot/inch previewing. +\endlist + +\subtopic{Fonts for {\tt\bs magstep1}} The \lit*.pk* files for +magnification by \lit*\magstep1* are installed similarly, in a +subdirectory whose name probably ends with something like that shown in +the table below +\bigskip +\centerline{\paste{insttbls}3} +\nopagebreak +\bigskip +\flushpar (or, more logically, with something like \lit*\m1200*). + +In this case, you should copy the files in subdirectory~\lit*1* of the +appropriate directory on the diskette to this subdirectory of the hard +disk. For MS-DOS systems, you can simply type \lit*a:300-1* or +\lit*a:240-1* or \lit*a:180-1* or \lit*a:118-1*. + +\subtopic{Fonts for {\tt\bs magstep2}} Finally, the \lit*.pk* files for +magnification by \lit*\magstep2* can be installed in the same way, in a +subdirectory whose name probably ends with something like that shown in +the table below \pagelabel{endpage} +\bigskip +\centerline{\paste{insttbls}4} +\nopagebreak +\bigskip +\flushpar (or, more logically, with something like \lit*\m1440*). + +In this case, you should copy the files in subdirectory~\lit*2* of the +appropriate directory on the diskette to this subdirectory of the hard +disk. For MS-DOS systems, you can simply type \lit*a:300-2* or +\lit*a:240-2* or \lit*a:180-2* or \lit*a:118-2*. + +\section{Sources} The final set of files are source-code for programs and +fonts. In addition to the \lit*dvipaste.c* and \lit*index.c* source code, +discussed in section~\ref{programs}, there are the MetaFont source files +\lit*lams1.mf*, \dots, \lit*lams5.mf*, from which these fonts can be +produced at any size and resolution. + +Although the \lit*dvipaste* program was written specifically for +\LamSTeX@, it can actually be used for numerous general \TeX\ purposes, in +conjunction with an extra macro package \lit*dvipaste.tex*. The file +\lit*dvipaste.doc* describes such usage, which is further illustrated by +the files \lit*boxes1.tex*, \lit*boxes2.tex*, and \lit*join.tex*. (None of +these files are really part of \LamSTeX.) + + +\appendices +\appendix Reproduction\label{repro}\endappendix + +The files \lit*insttbls.tex* and \lit*inst.tex* may be used to reproduce +this manual (with the current date). This provides a good test that +\LamSTeX\ is safely installed, since it uses so many \LamSTeX\ features, +but for this very reason you might want to wait until you are more +familiar with \LamSTeX\ before making the attempt. + +Once you're ready, here's the recipe: +\list \advance\litindent30pt + +\item First \TeX\ the file \lit*insttbls.tex*. (If you've already made a +\LamSTeX\ format file, {\it do not\/} use it for this file [see page~179 +of the Manual], just \TeX\ the file directly.) This will produce a +\lit*insttbls.dvi* file that you may or may not want to print, and a file +\lit*insttbls.dat*, both needed in the sequel. + +\item Now \TeX\ the file \lit*inst.tex*. (If you've made a \LamSTeX\ +format file, you can use it for this file---the first two lines of the +file will essentially be ignored.) Ignore \lit*Warning* + messages. A \lit*inst.toc* file will be produced, along with the +\lit*inst.dvi* file (which isn't any good yet, since the Contents don't +appear). + +\item Now use your text editor to remove the \lit*%* sign before the line +\lit*\maketoc* (you wouldn't want this line there the first time, because +\TeX\ would complain that it couldn't find the \lit*inst.toc* file), and +\TeX\ the file \lit*inst.tex* once again. This time no \lit*Warning* + messages should appear. + +{\newpost\list1{$'$} \Offset\list10 +\item The new \lit*.dvi* file now has the Contents, but the page numbers +aren't correct, because inclusion of this Contents has moved some sections +to the next page. So you have to \TeX\ the file once again. +} + +\item Finally, use the \lit*dvipaste* program, +\Lit* +dvipaste inst +* +to produce a new \lit*inst.dvi* file. (With \TeXtures, you must first use +the DVItool accessory to produce the \lit*inst.dvi* and \lit*insttbls.dvi* +files, then use \lit*dvipaste*, and then use DVItool once again to create +a new \TeXtures\ document.) + +\endlist + +Once the ingredients are properly mixed, place in a moderate laser printer +for 10--20 seconds per page, allow to cool for a few seconds, and enjoy. +Makes 1~copy. + +\makebib +\bib \no1 \by Knuth, Donald E. \book The \TeX book \publ + Addison-Wesley Publishing Company, Inc\endbib +\bib \no2 \by Lamport, Leslie \book \LaTeX@: A Document Preparation + System \publ Addison-Wesley Publishing Company, Inc\endbib +\bib \no3 \by Spivak, M.D., Ph.D. \book The Joy of \TeX \publ + American Mathematical Society\endbib +\endmakebib + +\enddocument diff --git a/macros/lamstex/inputs/insttbls.tex b/macros/lamstex/inputs/insttbls.tex new file mode 100644 index 0000000000..2aa2d9cdfb --- /dev/null +++ b/macros/lamstex/inputs/insttbls.tex @@ -0,0 +1,71 @@ +\input lamstbl + +\tbldocstyle{paper} + +\document + +\opentables + +\define\bs{\char'134 } + +\table +\tss\rt3{\g(15pt)\c\g(15pt)&}\g(15pt)\c\g(15pt)\\ +\=300 dot/inch\+printers\= & \=240 dot/inch\+printers\= & + \=180 dot/inch\+printers\= & \=118 dot/inch\+viewing\=\\ +\vs(3pt) +\hls *&*&*&*\\ +\vs(3pt) +\cf{\tt} +...\bs dpi300 & ...\bs dpi240 & ...\bs dpi180 & ...\bs dpi118\\ +\cf{\rm} +or&or&or\\ +\cf{\tt} +...\bs pxl1500 & ...\bs pxl1200 & ...\bs pxl900 +\endtable + +\table +\tss\rt3{\g(15pt)\c\g(15pt)&}\g(15pt)\c\g(15pt)\\ +\=300 dot/inch\+printers\= & \=240 dot/inch\+printers\= & + \=180 dot/inch\+printers\= & \=118 dot/inch\+viewing\=\\ +\vs(3pt) +\hls *&*&*&*\\ +\vs(3pt) +\cf{\tt} +...\bs dpi329 & ...\bs dpi263 & ...\bs dpi197 & ...\bs dpi129\\ +\cf{\rm} +or&or&or\\ +\cf{\tt} +...\bs pxl1643 & ...\bs pxl1315 & ...\bs pxl986 +\endtable + +\table +\tss\rt3{\g(15pt)\c\g(15pt)&}\g(15pt)\c\g(15pt)\\ +\=300 dot/inch\+printers\= & \=240 dot/inch\+printers\= & + \=180 dot/inch\+printers\= & \=118 dot/inch\+viewing\=\\ +\vs(3pt) +\hls *&*&*&*\\ +\vs(3pt) +\cf{\tt} +...\bs dpi360 & ...\bs dpi288 & ...\bs dpi216 & ...\bs dpi142\\ +\cf{\rm} +or&or&or\\ +\cf{\tt} +...\bs pxl1800 & ...\bs pxl1440 & ...\bs pxl1080 +\endtable + +\table +\tss\rt3{\g(15pt)\c\g(15pt)&}\g(15pt)\c\g(15pt)\\ +\=300 dot/inch\+printers\= & \=240 dot/inch\+printers\= & + \=180 dot/inch\+printers\= & \=118 dot/inch\+viewing\=\\ +\vs(3pt) +\hls *&*&*&*\\ +\vs(3pt) +\cf{\tt} +...\bs dpi432 & ...\bs dpi346 & ...\bs dpi259 & ...\bs dpi170\\ +\cf{\rm} +or&or&or\\ +\cf{\tt} +...\bs pxl2160 & ...\bs pxl1728 & ...\bs pxl1296 +\endtable + +\enddocument diff --git a/macros/lamstex/inputs/islands.tex b/macros/lamstex/inputs/islands.tex new file mode 100644 index 0000000000..f23b835640 --- /dev/null +++ b/macros/lamstex/inputs/islands.tex @@ -0,0 +1,579 @@ +\catcode`\@=11 +\def\Figureproofing{\figproofing@true} +\def\noFigureproofing{\figproofing@false} +\def\Hbyw#1{\global\Hby@true\hbyw\vsize{#1}} +\def\hbyw#1#2{% + \hbox{% + \ifHby@ + \else + \iffigproofing@ + \setbox\z@\vbox{\hrule\width5\p@}\ht\z@\z@ + \vbox to#1{\hrule\height5\p@\width.4\p@\vfil\hrule\height5\p@\width.4\p@}% + \kern-.4\p@\rlap{\copy\z@}\raise#1\hbox{\rlap{\copy\z@}}% + \fi + \fi + \vbox to#1{\hbox to#2{}\vfil}% + \ifHby@ + \else + \iffigproofing@ + \vbox to#1{\hrule\height5\p@\width.4\p@\vfil\hrule\height5\p@\width.4\p@}% + \kern-.4\p@\llap{\copy\z@}\raise#1\hbox{\llap{\boxz@}}% + \fi + \fi}} +\def\island@@@P{\csname\exxx@\islandtype@ @P\endcsname} +\def\island@@@Q{\csname\exxx@\islandtype@ @Q\endcsname} +\def\island@@@S{\csname\exxx@\islandtype@ @S\endcsname} +\def\island@@@N{\csname\exxx@\islandtype@ @N\endcsname} +\def\island@@@F{\csname\exxx@\islandtype@ @F\endcsname} +\def\island@@@C{\csname island@C\islandclass@\endcsname} +\def\island{% + \ifplace@ + \DN@{\let\islandclass@\empty\def\islandtype@{\island}\FN@\island@}% + \else + \long\DN@##1\endisland{\Err@{\noexpand\island must be used after some + type of \string\...place}}% + \fi + \next@} +\def\island@{\ifx\next\c\let\next@\island@c\else + \DN@{\FN@\island@@}\fi\next@} +\def\island@@{\ifcat\bgroup\noexpand\next\let\next@\island@@@\else + \DN@{\Err@{\noexpand\island must be followed by a {prefix} for + \string\caption's}}\fi\next@} +\def\island@@@#1{\def\captionprefix@{#1}\captioncount@\z@ + \global\setbox\islandbox@\vbox\bgroup} +\def\island@c\c#1{% + \ifplace@ + \DN@{\def\islandclass@{#1}% + \expandafter\ifx\csname island@C#1\endcsname\relax + \expandafter\newcount@\csname island@C#1\endcsname + \global\csname island@C#1\endcsname\z@\fi + \FNSS@\island@c@}% + \else + \DN@{\edef\next@{\long\def\noexpand\next@########1\expandafter\noexpand + \csname end\exxx@\islandtype@\endcsname{\noexpand\Err@{\noexpand\noexpand + \expandafter\noexpand + \islandtype@ must be used after some type of \noexpand\string + \noexpand\...place}}}\next@\next@}% + \fi + \next@} +\def\island@c@{% + \ifcat\bgroup\noexpand\next + \let\next@\island@c@@ + \else + \DN@{\Err@{\noexpand\island\string\c{\expandafter\string\islandclass@} must + be followed by a {prefix} for \string\caption's}}% + \fi\next@} +\def\island@c@@#1{\def\captionprefix@{#1}% + \captioncount@\z@\global\setbox\islandbox@\vbox\bgroup} +\def\caption{% + \ifnum\captioncount@=\z@ + \ifnopunct@ + \DN@{\egroup\nopunct@true}% + \else + \let\next@\egroup + \fi + \else + \let\next@\relax + \fi + \next@ + \advance\captioncount@\@ne + \FN@\caption@} +\def\caption@{\ifx\next"\expandafter\caption@q\else\expandafter\caption@@\fi} +\def\caption@q"#1"{\quoted@true + {\noexpands@ + \let\pre\island@@@P\let\post\island@@@Q + \let\style\island@@@S\let\numstyle\island@@@N + \Qlabel@{#1}\let\style\relax\xdef\Qlabel@@@@{#1}}% + \finishcaption@} +\def\caption@@{\quoted@false + \global\advance\island@@@C\@ne + {\noexpands@ + \xdef\Thelabel@@@{\number\island@@@C}% + \xdefThelabel@\island@@@N + \xdef\Thelabel@@@@{\island@@@P\Thelabel@\island@@@Q}% + \xdefThelabel@@\island@@@S + \xdef\Thepref@{\Thelabel@@@@}}% + \finishcaption@} +\long\def\widerthanisland@#1#2#3{\test@true\setbox\z@\vbox{\hsize\maxdimen + \noindent@@\captionformat@{#1}{#2}{#3}\par\setboxzl@}% + \ifdim\wdz@=\z@ + \global\setbox\captionbox@\hbox{\noset@\unlabel@ + \captionformat@{#1}{#2}{#3}}% + \ifdim\wd\captionbox@>\wd\islandbox@\else\test@false\fi + \fi} +\long\def\captionformat@@#1#2#3{\widerthanisland@{#1}{#2}{#3}% + \iftest@ + \global\setbox\captionbox@\vbox{\hsize\wd\islandbox@ + \vskip-\parskip\noindent@@\noset@\unlabel@ + \captionformat@{#1}{#2}{#3}\par}% + \else + \global\setbox\captionbox@ + \hbox to\wd\islandbox@{\hfil\box\captionbox@\hfil}% + \fi} +\long\def\finishcaption@#1{\def\entry@{#1}% + {\locallabel@ + \captionformat@@ + {\expandafter\ignorespaces\captionprefix@\unskip}% + {\ifx\thelabel@@\empty\unskip\else\thelabel@@\fi}% + {\ignorespaces#1\unskip}% + \ifnum\captioncount@=\@ne + \global\setbox\islandbox@\vbox{\ticwrite@\vbox{\box\islandbox@}}% + \global\setbox\Captionbox@\vbox{\box\captionbox@}% + \else + \global\setbox\islandbox@\vbox{\unvbox\islandbox@\setboxzl@ + \ticwrite@\boxz@}% + \global\setbox\Captionbox@\vbox{\unvbox\Captionbox@ + \smallskip\box\captionbox@}% + \fi}% + \nopunct@false\nospace@false} +\def\Sixtic@{\ifx\macdef@\empty\else + \DN@##1##2\next@{\def\macdef@{##1##2}}% + \expandafter\next@\macdef@\next@ + \edef\next@ + {\noexpand\six@\tic@\macdef@ + \space\space\space\space\space\space\space\space\space\space\space\space + \noexpand\six@}% + \next@\let\macdef@\relax\fi} +\def\ticwrite@{% + \iftoc@ + {\noexpands@\let\style\relax + \DN@{\island}% + \edef\next@{\write\tic@{% + \ifnopunct@\noexpand\noexpand\noexpand\nopunct\fi + \ifx\islandtype@\next@\noexpand\noexpand\noexpand\island + \noexpand\string\noexpand\c{\islandclass@}{\captionprefix@}% + {\QorThelabel@@@@}\else\noexpand\noexpand\expandafter\noexpand + \islandtype@{\QorThelabel@@@@}}\fi}% + \next@}% + \expandafter\unmacro@\meaning\entry@\unmacro@ + \Sixtic@ + \write\tic@{\noexpand\Page{\number\pageno}{\page@N}{\page@P}{\page@Q}^^J}% + \fi} +\def\Htrim@#1{% + \ifHby@ + \dimen@\vsize + \ifnum\captioncount@=\z@ + \else + \advance\dimen@-\ht\Captionbox@ + \advance\dimen@-#1% + \fi + \global\Hby@false + \dimen@ii\wd\islandbox@ + \global\setbox\islandbox@\vbox + {\unvbox\islandbox@\setboxzl@ + \vbox to\z@{\vss\boxz@}\nointerlineskip\hbyw\dimen@\dimen@ii}% + \global\Hby@true + \fi} +\def\iclasstest@#1{\DN@{#1}\ifx\next@\islandclass@ + \test@true\else\test@false\fi} +\def\endisland{\ifnum\captioncount@=\z@\expandafter\egroup\fi + \ifdata@ + \else + \iclasstest@{T}% + \iftest@ + {\rm\global\skipi@-\dp\strutbox}\global\advance\skipi@\bigskipamount + \Htrim@\skipi@ + \global\setbox\islandbox@\vbox + {\ifnum\captioncount@=\z@\else + \box\Captionbox@ + \nointerlineskip + \vskip\skipi@\fi + \box\islandbox@}% + \else + {\rm\global\skipi@\dp\strutbox}\global\advance\skipi@\medskipamount + \Htrim@\skipi@ + \global\setbox\islandbox@\vbox + {\box\islandbox@ + \ifnum\captioncount@=\z@\else + \nointerlineskip + \vskip\skipi@ + \box\Captionbox@ + \fi}% + \fi + \ifHby@ + \else + \dimen@\ht\islandbox@\advance\dimen@\dp\islandbox@ + \ifdim\dimen@>\vsize + \DN@{\island}% + \Err@{% + \ifx\islandtype@\next@\noexpand\island\else + \expandafter\noexpand\islandtype@\fi + \ifnum\captioncount@=\z@\else + with \noexpand\caption\fi + is larger than page}% + \ht\islandbox@=\vsize + \fi + \fi + \fi + \global\Hby@false\island@true} +\def\newisland#1\c#2#3{\define#1{}% + \iftoc@\immediate\write\tic@{\noexpand\newisland\noexpand#1% + \string\c{#2}{#3}^^J}\fi + \expandafter\def\csname\exstring@#1@S\endcsname{\island@S}% + \expandafter\def\csname\exstring@#1@N\endcsname{\island@N}% + \expandafter\def\csname\exstring@#1@P\endcsname{\island@P}% + \expandafter\def\csname\exstring@#1@Q\endcsname{\island@Q}% + \expandafter\def\csname\exstring@#1@F\endcsname{\island@F}% + \expandafter\def\csname end\exstring@#1\endcsname{\endisland}% + \expandafter + \ifx\csname island@C#2\endcsname\relax + \expandafter\newcount@\csname island@C#2\endcsname + \global\csname island@C#2\endcsname\z@ + \fi + \edef\next@{\noexpand\expandafter\noexpand\let\noexpand + \csname\exstring@#1@C\noexpand\endcsname + \csname island@C#2\endcsname}% + \next@ + \def#1{\def\islandtype@{#1}\island@c\c{#2}{#3}}} +\newisland\Figure\c{F}{Figure} +\newisland\Table\c{T}{Table} +\long\def\islandpairdata#1#2{{\data@true + \place@true + #1% + \global\setbox\islandboxi\box\islandbox@ + \global\setbox\captionboxi\box\Captionbox@ + #2% + \global\setbox\islandboxii\box\islandbox@ + \global\setbox\captionboxii\box\Captionbox@ + }} +\long\def\islandpairbox#1#2{\islandpairdata{#1}{#2}% + \dimen@\ht\captionboxi + \ifdim\ht\captionboxii>\dimen@\dimen@\ht\captionboxii\fi + \ifdim\dimen@>\z@ + \ifdim\ht\captionboxi<\dimen@ + \global\setbox\captionboxi\vbox to\dimen@{\unvbox\captionboxi\vfil}\fi + \ifdim\ht\captionboxii<\dimen@ + \global\setbox\captionboxii\vbox to\dimen@{\unvbox\captionboxii\vfil}\fi + \fi + \global\setbox\islandbox@\vbox + {\hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil}% + \ifdim\dimen@>\z@\nointerlineskip + {\rm\global\skipi@\dp\strutbox}\global\advance\skipi@\medskipamount + \vskip\skipi@ + \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil}\fi}} +\long\def\islandpairboxa#1#2{\islandpairdata{#1}{#2}% + \dimen@\ht\captionboxi + \ifdim\ht\captionboxii>\dimen@\dimen@\ht\captionboxii\fi + \ifdim\dimen@>\z@ + \ifdim\ht\captionboxi<\dimen@ + \global\setbox\captionboxi\vbox to\dimen@{\vfil\unvbox\captionboxi}\fi + \ifdim\ht\captionboxii<\dimen@ + \global\setbox\captionboxii\vbox to\dimen@{\vfil\unvbox\captionboxii}\fi + \fi + \dimen@ii\ht\islandboxi + \ifdim\ht\islandboxii>\dimen@ii \dimen@ii\ht\islandboxii\fi + \ifdim\dimen@ii>\z@ + \ifdim\ht\islandboxi<\dimen@ii + \global\setbox\islandboxi\vbox to\dimen@ii{\box\islandboxi\vfil}\fi + \ifdim\ht\islandboxii<\dimen@ii + \global\setbox\islandboxii\vbox to\dimen@ii{\box\islandboxii\vfil}\fi + \fi + \global\setbox\islandbox@\vbox{\ifdim\dimen@>\z@ + \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil}% + \nointerlineskip{\rm\global\skipi@-\dp\strutbox}% + \global\advance\skipi@\bigskipamount\vskip\skipi@\fi + \hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil}}} +\long\def\islandtripledata#1#2#3{{\data@true\place@true + #1% + \global\setbox\islandboxi\box\islandbox@ + \global\setbox\captionboxi\box\Captionbox@ + #2% + \global\setbox\islandboxii\box\islandbox@ + \global\setbox\captionboxii\box\Captionbox@ + #3% + \global\setbox\islandboxiii\box\islandbox@ + \global\setbox\captionboxiii\box\Captionbox@ + }} +\long\def\islandtriplebox#1#2#3{\islandtripledata{#1}{#2}{#3}% + \dimen@\ht\captionboxi + \ifdim\ht\captionboxii>\dimen@ \dimen@\ht\captionboxii\fi + \ifdim\ht\captionboxiii>\dimen@ \dimen@\ht\captionboxiii\fi + \ifdim\dimen@>\z@ + \ifdim\ht\captionboxi<\dimen@ + \global\setbox\captionboxi\vbox to\dimen@{\unvbox\captionboxi\vfil}\fi + \ifdim\ht\captionboxii<\dimen@ + \global\setbox\captionboxii\vbox to\dimen@{\unvbox\captionboxii\vfil}\fi + \ifdim\ht\captionboxiii<\dimen@ + \global\setbox\captionboxiii\vbox to\dimen@{\unvbox\captionboxiii\vfil}\fi + \fi + \global\setbox\islandbox@\vbox + {\hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil + \box\islandboxiii\hfil}% + \ifdim\dimen@>\z@\nointerlineskip + {\rm\global\skipi@\dp\strutbox}\global\advance\skipi@\medskipamount + \vskip\skipi@ + \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil + \box\captionboxiii\hfil}\fi}} +\def\islandtripleboxa#1#2#3{\islandtripledata{#1}{#2}{#3}% + \dimen@\ht\captionboxi + \ifdim\ht\captionboxii>\dimen@ \dimen@\ht\captionboxii\fi + \ifdim\ht\captionboxiii>\dimen@ \dimen@\ht\captionboxiii\fi + \ifdim\dimen@>\z@ + \ifdim\ht\captionboxi<\dimen@ + \global\setbox\captionboxi\vbox to\dimen@{\vfil\unvbox\captionboxi}\fi + \ifdim\ht\captionboxii<\dimen@ + \global\setbox\captionboxii\vbox to\dimen@{\vfil\unvbox\captionboxii}\fi + \ifdim\ht\captionboxiii<\dimen@ + \global\setbox\captionboxiii\vbox to\dimen@{\vfil\unvbox\captionboxiii}\fi + \fi + \dimen@ii\ht\islandboxi + \ifdim\ht\islandboxii>\dimen@ii \dimen@ii\ht\islandboxii\fi + \ifdim\ht\islandboxiii>\dimen@ii \dimen@ii\ht\islandboxiii\fi + \ifdim\dimen@ii>\z@ + \ifdim\ht\islandboxi<\dimen@ii + \global\setbox\islandboxi\vbox to\dimen@ii{\box\islandboxi\vfil}\fi + \ifdim\ht\islandboxii<\dimen@ii + \global\setbox\islandboxii\vbox to\dimen@ii{\box\islandboxii\vfil}\fi + \ifdim\ht\islandboxiii<\dimen@ii + \global\setbox\islandboxiii\vbox to\dimen@ii{\box\islandboxiii\vfil}\fi + \fi + \global\setbox\islandbox@\vbox + {\ifdim\dimen@>\z@ + \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil + \box\captionboxiii\hfil}% + \nointerlineskip{\rm\global\skipi@-\dp\strutbox}% + \global\advance\skipi@\bigskipamount\vskip\skipi@\fi + \hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil + \box\islandboxiii\hfil}}} +\def\Figurepair#1\and#2\endFigurepair{\island@true + \islandpairbox{\Figure#1\endFigure}{\Figure#2\endFigure}} +\def\Figuretriple#1\and#2\and#3\endFiguretriple{\island@true + \islandtriplebox{\Figure#1\endFigure}{\Figure#2\endFigure}% + {\Figure#3\endFigure}} +\def\Tablepair#1\and#2\endTablepair{\island@true + \islandpairboxa{\Table#1\endTable}{\Table#2\endTable}} +\def\Tabletriple#1\and#2\and#3\endTabletriple{\island@true + \islandtripleboxa{\Table#1\endTable}{\Table#2\endTable}% + {\Table#3\endTable}} +\def\place#1{\place@true\island@false + #1% + \ifisland@ + \box\islandbox@ + \else + \Err@{Whoa ... there's no \string\Figure, \string\Table, + etc., here}% + \fi + \place@false} +\def\storedim@{\global\setbox\topinsdims@ + \vbox{\hbox to\dimen@{}\unvbox\topinsdims@}} +\def\advancedimtopins@{% + \ifnum\pageno=\@ne + \else + \advance\dimen@\dimen\topins + \global\dimen\topins\dimen@ + \fi} +\def\Par{\par\global\csname Parprev1\endcsname\prevdepth + \global\Parcount@\@ne + \global\Par@true\global\let\Parlist@\empty + \global\setbox\Parbox@\vbox\bgroup\break} +\def\place@#1#2{% + \ifisland@ + \ifhmode + \ifPar@ + \ifnum\Parcount@>5 + \Err@{Only 5 \string\place's allowed per + \string\Par...\noexpand\endPar paragraph}% + \else + \expandafter\expandafter\expandafter + \global\expandafter\setbox + \csname Parfigbox\number\Parcount@\endcsname\box\islandbox@ + \global\advance\Parcount@\@ne + \xdef\Parlist@{\Parlist@#1}% + \fi + \else + \vadjust{#2}% + \fi + \else + #2% + \fi + \else + \Err@{Whoa ... there's no \string\Figure, + \string\Table, etc., here}% + \fi + \place@false} +\long\def\Aplace#1{\prevanish@ + \place@true\island@false + #1% + \place@ a\Aplace@ + \postvanish@} +\long\def\AAplace#1{\prevanish@\place@true\island@false + #1% + \place@ A\AAplace@ + \postvanish@} +\def\AAplace@{\AA@true\Aplace@\AA@false} +\def\Aplace@{\allowbreak + \dimen@=\ht\islandbox@ + \advance\dimen@\abovebotfigskip + \ht\islandbox@\dimen@ + \advance\dimen@\dp\islandbox@ + \storedim@ + \ifAA@ + \xdef\AAlist@{\AAlist@1}% + \advancedimtopins@ + \else + \xdef\AAlist@{\AAlist@0}% + \ifnum\topinscount@>\@ne\else\advancedimtopins@\fi + \fi + \insert\topins{\penalty\z@\splittopskip\z@\floatingpenalty\z@ + \box\islandbox@}% + \global\advance\topinscount@\@ne} +\long\def\Bplace#1{\prevanish@\place@true\island@false + #1% + \place@ b\Bplace@ + \postvanish@} +\def\Bplace@{\allowbreak + \ifnum\topinscount@=\z@ + \setbox\z@\vbox{\vbox to-\belowtopfigskip{}}% + \dimen@-\skip\topins + \ht\z@\dimen@ + \storedim@ + \advancedimtopins@ + \insert\topins{\boxz@}% + \global\advance\topinscount@\@ne + \xdef\AAlist@{\AAlist@0}% + \fi + \dimen@\ht\islandbox@ + \advance\dimen@\abovebotfigskip + \ht\islandbox@\dimen@ + \advance\dimen@\dp\islandbox@ + \storedim@ + \xdef\AAlist@{\AAlist@0}% + \ifnum\topinscount@>\@ne\else\advancedimtopins@\fi + \insert\topins{\penalty\z@\splittopskip\z@ + \floatingpenalty\z@ + \box\islandbox@}% + \global\advance\topinscount@\@ne} +\def\Place@#1#2{% + \ifisland@ + \ifhmode + \ifPar@ + \ifnum\Parcount@>5 + \Err@{Only 5 \string\place's allowed per + \string\Par...\noexpand\endPar paragraph}% + \else + \expandafter\expandafter\expandafter\global\expandafter\setbox + \csname Parfigbox\number\Parcount@\endcsname\box\islandbox@ + \global\advance\Parcount@\@ne + \xdef\Parlist@{\Parlist@#1}% + \vadjust{\break}% + \fi + \else + \Err@{\noexpand#2allowed only in a \string\Par...\noexpand\endPar + paragraph}% + \fi + \else + #2% + \fi + \else + \Err@{Who ... there's no \string\Figure, \string\Table, + etc., here}% + \fi + \place@false} +\long\def\Cplace#1{\prevanish@\place@true\island@false + #1% + \Place@ c\Cplace@ + \postvanish@} +\def\Cplace@{\allowbreak + \ifnum\topinscount@>\z@\else + \global\C@true\global\Cdim@\pagetotal\fi + \Aplace@} +\long\def\Mplace#1{\prevanish@\place@true\island@false + #1% + \Place@ m\Mplace@ + \postvanish@} +\long\def\MXplace#1{\prevanish@\place@true\island@false + #1% + \Place@ M\MXplace@ + \postvanish@} +\def\MXplace@{\MX@true\Mplace@\MX@false} +\def\Mplace@{\allowbreak + \dimen@\ht\islandbox@\advance\dimen@\dp\islandbox@ + \ifdim\pagetotal=\z@\else + \ifdim\lastskip<\abovebotfigskip\advance\dimen@\abovebotfigskip + \advance\dimen@-\lastskip\fi + \fi + \advance\dimen@\pagetotal + \ifdim\dimen@>\pagegoal + \Aplace@ + \else + \nointerlineskip + \ifdim\lastskip<\abovebotfigskip\removelastskip\vskip\abovebotfigskip\fi + \setbox\z@\vbox{\unvbox\islandbox@ + \breakisland@}% + \printisland@ + \ifnum\topinscount@=\z@ + \setbox\z@\vbox{\vbox to-\belowtopfigskip{}}% + \dimen@-\skip\topins + \ht\z@\dimen@ + \storedim@ + \advancedimtopins@ + \insert\topins{\boxz@}% + \global\advance\topinscount@\@ne + \xdef\AAlist@{\AAlist@0}% + \fi + \ifMX@ + \ifnum\topinscount@=\@ne + \setbox\z@\vbox{\vbox to-\abovebotfigskip{}}% + \ht\z@\z@ + \dimen@\z@ + \storedim@ + \advancedimtopins@ + \insert\topins{\boxz@}% + \global\advance\topinscount@\@ne + \xdef\AAlist@{\AAlist@0}% + \fi + \fi + \nointerlineskip + \vskip\belowtopfigskip + \fi} +\def\endPar{\egroup + \count@\@ne + {\vbadness\@M\vfuzz\maxdimen\splitmaxdepth\maxdimen\splittopskip\ht\strutbox + \setbox\z@\vsplit\Parbox@ to\ht\Parbox@ + \loop + \ifnum\count@<\Parcount@ + \expandafter\expandafter\expandafter\global\expandafter\setbox + \csname Parbox\number\count@\endcsname\vsplit\Parbox@ to\ht\Parbox@ + \count@@\count@\advance\count@@\@ne + \global\csname Parprev\number\count@@\endcsname + \dp\csname Parbox\number\count@\endcsname + \advance\count@\@ne + \repeat}% + \vskip\parskip + \count@\@ne + \def\nextv@##1##2\nextv@{\DN@{##1}\gdef\Parlist@{##2}}% + \loop + \ifnum\count@<\Parcount@ + \dimen@\csname Parprev\number\count@\endcsname + \advance\dimen@\ht\strutbox + \ifdim\dimen@<\baselineskip + \advance\dimen@-\baselineskip\vskip-\dimen@ + \else + \vskip\lineskip + \fi + \unvbox\csname Parbox\number\count@\endcsname + \global\setbox\islandbox@\box\csname Parfigbox\number\count@\endcsname + \expandafter\nextv@\Parlist@\nextv@ + \if a\next@\Aplace@\else + \if A\next@\AAplace@\else + \if b\next@\Bplace@\else + \if c\next@\Cplace@\else + \if m\next@\Mplace@\else + \if M\next@\MXplace@\fi\fi\fi\fi\fi\fi + \advance\count@\@ne + \repeat + \global\Par@false + \ifvoid\Parbox@ + \prevdepth\csname Parprev\number\count@\endcsname + \else + \dimen@\csname Parprev\number\count@\endcsname\advance\dimen@\ht\strutbox + \ifdim\dimen@<\baselineskip + \advance\dimen@-\baselineskip\vskip-\dimen@ + \else + \vskip\lineskip + \fi + \dimen@\dp\Parbox@ + \unvbox\Parbox@ + \prevdepth\dimen@ + \fi} +\catcode`\@=\active diff --git a/macros/lamstex/inputs/islands.tox b/macros/lamstex/inputs/islands.tox new file mode 100644 index 0000000000..08d7668481 --- /dev/null +++ b/macros/lamstex/inputs/islands.tox @@ -0,0 +1,24 @@ +\catcode`\@=11 +\let\Figureproofing\undefined\let\noFigureproofing\undefined +\let\Hbyw\undefined\let\hbyw\undefined\let\island@@@P\undefined +\let\island@@@Q\undefined\let\island@@@S\undefined\let\island@@@N\undefined +\let\island@@@F\undefined\let\island@@@C\undefined\let\island\undefined +\let\island@\relax\let\island@@\relax\let\island@@@\relax\let\island@c\relax +\let\island@c@\relax\let\island@c@@\relax\let\caption\undefined +\let\caption@\relax\let\caption@q\relax\let\caption@@\relax +\let\widerthanisland@\relax\let\captionformat@@\relax +\let\finishcaption@\relax\let\Sixtic@\relax\let\ticwrite@\relax +\let\Htrim@\relax\let\iclasstest@\relax\let\endisland\undefined +\let\newisland\undefined\let\Figure\undefined\let\endFigure\undefined +\let\Table\undefined\let\endTable\undefined\let\islandpairdata\undefined +\let\islandpairbox\undefined\let\islandparboxa\undefined +\let\islandtripledata\undefined\let\islandtriplebox\undefined +\let\islandtripleboxa\undefined\let\Figurepair\undefined +\let\Figuretriple\undefined\let\Tablepair\undefined\let\Tabletriple\undefined +\let\place\undefined\let\storedim@\relax\let\advancedimtopins@\relax +\let\Par\undefined\let\place@\relax\let\Aplace\undefined\let\AAplace\undefined +\let\AAplace@\relax\let\Aplace@\relax\let\Bplace\undefined\let\Bplace@\relax +\let\Place@\relax\let\Cplace\undefined\let\Cplace@\relax\let\Mplace\undefined +\let\MXplace\undefined\let\MXplace@\relax\let\Mplace@\relax +\let\endPar\undefined +\catcode`\@=\active diff --git a/macros/lamstex/inputs/join.tex b/macros/lamstex/inputs/join.tex new file mode 100644 index 0000000000..0801ee07e3 --- /dev/null +++ b/macros/lamstex/inputs/join.tex @@ -0,0 +1,37 @@ +\input dvipaste + +\font\it=cmti10 +\def\rm{\tenrm} + +Here is some text that we have before the joined boxes. Now we will have the +boxes joined by a line segment: + +\hbox{\paste{boxes1}1% + \vrule height 30pt depth-29pt width1in + \paste{boxes2}2} +And this is the text that we have after it. + +Here is just a lot of stuff \it that we will continue to put in italics, +for the rest of the file, in fact. + +\vfil\eject + + +This is some more text. + + +\hbox{\paste{boxes1}4% + \vrule height 30pt depth-29pt width1in + \paste{boxes2}1} +And this is the text that we have after it. + +\vfil\eject + +\rm Now we are back to roman type. + +\hbox{\paste{boxes1}3% + \vrule height 30pt depth-29pt width1in + \paste{boxes1}4} +And this is the text that we have after it. + +\bye
\ No newline at end of file diff --git a/macros/lamstex/inputs/lamslogo.tex b/macros/lamstex/inputs/lamslogo.tex new file mode 100644 index 0000000000..e3b730aa9e --- /dev/null +++ b/macros/lamstex/inputs/lamslogo.tex @@ -0,0 +1,6 @@ +\catcode`\@=11 +\ifx\eightsy\undefined + \font@\eightsy=cmsy8 \skewchar\eightsy='60 \fi +\def\LamSTeX{L\kern-.4em\raise.3ex\hbox{$\ssize\Cal A$}\kern-.25em + \lower.4ex\hbox{\eightsy M}\kern-.1em{$\Cal S$}-\TeX} +\catcode`\@=\active
\ No newline at end of file diff --git a/macros/lamstex/inputs/lamstbl.tex b/macros/lamstex/inputs/lamstbl.tex new file mode 100644 index 0000000000..9e319b8732 --- /dev/null +++ b/macros/lamstex/inputs/lamstbl.tex @@ -0,0 +1,2937 @@ +% LAMSTBL.TEX VERSION 2.0 +% COPYRIGHT (C) 1989, 1990, 1991 BY THE TEXPLORATORS CORPORATION +% ALL RIGHTS RESERVED + +% ABSOLUTELY NO CHANGES SHOULD BE MADE TO THIS FILE. + +\catcode`\@=11 +\ifx\amstexloaded@\relax + \W@{! lamstbls.tex cannot be used with amstex.tex}\let\relax\end\fi\relax +\toksdef\toks@@=2 +\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne + \ch@ck#1#4#2\allocationnumber=\count1#1 + \global#3#5=\allocationnumber} +\newcount\count@@ +\newcount\count@@@ +\def\FN@{\futurelet\next} +\def\DN@{\def\next@} +\def\DNii@{\def\nextii@} +\def\RIfM@{\relax\ifmmode} +\def\RIfMIfI@{\relax\ifmmode\ifinner} +\def\setboxz@h{\setbox\z@\hbox} +\def\wdz@{\wd\z@} +\def\boxz@{\box\z@} +\def\height{height} +\def\width{width} +\def\depth{depth} +\def\iterate{\body\expandafter\iterate\else\fi} +\newlinechar=`\^^J +\newhelp\defaulthelp@{Sorry, I already gave what help I could...^^J +Maybe you should try asking a human?^^J +An error might have occurred before I noticed any problems.^^J +``If all else fails, read the instructions.''} +\def\eat@#1{} +\def\space@.{\futurelet\space@\relax} +\space@. % +\newhelp\athelp@ +{Only certain combinations beginning with @ make sense to me.^^J +Perhaps you wanted \string\@\space for a printed @?^^J +I've ignored the character or group after @.} +\def\atdef@#1{\expandafter\def\csname\string#1@at\endcsname} +\newhelp\defahelp@{If you typed \string\define\space cs instead of +\string\define\string\cs\space^^J +I've substituted an inaccessible control sequence so that your^^J +definition will be completed without mixing me up too badly.^^J +If you typed \string\define{\string\cs} the inaccessible control sequence^^J +was defined to be \string\cs, and the rest of your^^J +definition appears as input.} +\newhelp\defbhelp@{I've ignored your definition, because it might^^J +conflict with other uses that are important to me.} +\def\define@{\FN@\define@@} +\def\err@#1{\errmessage{LamS-TeX error: #1}} +\def\define@@{\ifcat\noexpand\next\relax + \expandafter\define@@@\else\errhelp\defahelp@ + \err@{\noexpand\define must be followed by a control + sequence}\expandafter\def\expandafter\nextii@\fi} +\def\undefined@@@@@@@@@@{} +\def\preloaded@@@@@@@@@@{} +\def\next@@@@@@@@@@{} +\def\define@@@#1{\ifx#1\relax\errhelp\defbhelp@ + \err@{\noexpand#1is already defined}\DN@{\DNii@}\else + \expandafter\ifx\csname\expandafter\eat@\string + #1@@@@@@@@@@\endcsname\undefined@@@@@@@@@@\errhelp\defbhelp@ + \err@{\noexpand#1can't be defined}\DN@{\DNii@}\else + \expandafter\ifx\csname\expandafter\eat@\string#1\endcsname\relax + \global\let#1\undefined\DN@{\def#1}\else\errhelp\defbhelp@ + \err@{\noexpand#1is already defined}\DN@{\DNii@}\fi + \fi\fi\next@} +\def\undefine#1{\let#1\undefined} +\def\WT@#1{\expandafter\let\csname\expandafter\eat@\string#1 \endcsname=#1% + \xdef\next@{\def\noexpand#1{\noexpand\NX@\expandafter\noexpand + \csname\expandafter\eat@\string#1 \endcsname}}% + \next@} +\def\predefine#1{\def\tdf@{#1}\afterassignment\wtdef@\let\tdf@@} +\def\redefine#1{\def\tdf@{#1}\afterassignment\wtdef@\def\tdf@@} +\def\define#1{\define@#1{}\redefine#1} +\def\wtdef@{\expandafter\let\tdf@\tdf@@\expandafter\WT@\tdf@} +\def\tie{\unskip\nobreak\ } +\let\graveaccent\` +\let\acuteaccent\' +\let\tildeaccent\~ +\let\hataccent\^ +\let\underscore\_ +\let\B\= +\let\D\. +\let\ic@\/ +\def\/{\unskip\ic@} +\def\textfonti{\the\textfont\@ne} +\def\t#1#2{{\edef\next@{\the\font}\textfonti\accent"7F \next@#1#2}} +\def~{\unskip\nobreak\ \ignorespaces} +\def\.{.\spacefactor\@m} +\atdef@;{\leavevmode\null;} +\atdef@:{\leavevmode\null:} +\atdef@?{\leavevmode\null?} +\def\@{\char64 } +\atdef@-{\leavevmode + \DN@{\ifx\next-\DN@-{\FN@\nextii@}\else + \DN@{\leavevmode\hbox{-}}\fi\next@}% + \DNii@{\ifx\next-\DN@-{\leavevmode\hbox{---}}\else + \DN@{\leavevmode\hbox{--}}\fi\next@}% + \FN@\next@} +\def\srdr@{\kern.16667em} +\def\drsr@{\kern.02778em} +\def\sldl@{\kern.02778em} +\def\dlsl@{\kern.16667em} +\def\textfontii{\the\textfont\tw@} +\def\lbrace@{\delimiter"4266308 } +\def\rbrace@{\delimiter"5267309 } +\def\{{\RIfM@\lbrace@\else{\textfontii f}\spacefactor\@m\fi} +\def\}{\RIfM@\rbrace@\else + \let\@sf\empty\ifhmode\edef\@sf{\spacefactor\the\spacefactor}\fi + {\textfontii g}\@sf\relax\fi} +\let\lbrace\{ +\let\rbrace\} +\def\AmSTeX{{\textfontii A}\kern-.1667em\lower.5ex\hbox + {\textfontii M}\kern-.125em{\textfontii S}-\TeX} +\def\vmodeerr@#1{\Err@{\noexpand#1not allowed between paragraphs}} +\def\mathmodeerr@#1{\Err@{\noexpand#1not allowed in math mode}} +\def\slash{\unskip/\penalty\exhyphenpenalty} +\newskip\saveskip@ +\def\dmatherr@#1{\Err@{\noexpand#1not allowed in display math mode}} +\def\nondmatherr@#1{\Err@{\noexpand#1not allowed in non-display math + mode}} +\def\onlydmatherr@#1{\Err@{\noexpand#1allowed only in display math mode}} +\def\nonmatherr@#1{\Err@{\noexpand#1allowed only in math mode}} +\define\mathbreak{\RIfMIfI@\break\else + \dmatherr@\mathbreak\fi\else\nonmatherr@\mathbreak\fi} +\define\nomathbreak{\RIfMIfI@\nobreak\else + \dmatherr@\nomathbreak\fi\else\nonmatherr@\nomathbreak\fi} +\define\allowmathbreak{\RIfMIfI@\allowbreak\else + \dmatherr@\allowmathbreak\fi\else\nonmatherr@\allowmathbreak\fi} +\def\nonvmodeerr@#1{\Err@{\noexpand#1not allowed within a paragraph + or in math}} +\def\vnonvmode@#1#2{\DNii@{\ifx\next\par\DN@{#1}\else + \DN@{#2}\fi\next@}% + \ifvmode\DN@{#1}\else + \DN@{\FN@\nextii@}\fi\next@} +\def\smallpagebreak{\vnonvmode@\smallbreak{\nonvmodeerr@\smallpagebreak}} +\def\medpagebreak{\vnonvmode@\medbreak{\nonvmodeerr@\medpagebreak}} +\def\bigpagebreak{\vnonvmode@\bigbreak{\nonvmodeerr@\bigpagebreak}} +\def\NoBlackBoxes{\global\overfullrule\z@} +\def\BlackBoxes{\global\overfullrule5\p@} +\def\Invalid@#1{\def#1{\Err@{\Invalid@@\string#1}}} +\def\Invalid@@{Invalid use of } +\def\newcodes@{\catcode`\\=12 \catcode`\{=12 \catcode`\}=12 \catcode`\#=12 + \catcode`\%=12\relax} +\def\oldcodes@{\catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\#=6 + \catcode`\%=14\relax} +\def\comment{\newcodes@\endlinechar=10 \comment@} +{\lccode`\0=`\\ +\lowercase{\gdef\comment@#1^^J{\comment@@#10endcomment\comment@@@}% +\gdef\comment@@#10endcomment{\FN@\comment@@@}% +\gdef\comment@@@#1\comment@@@{\ifx\next\comment@@@\let\next@\comment@ + \else\def\next@{\oldcodes@\endlinechar=`\^^M\relax}% + \fi\next@}}} +\def\pr@m@s{\ifx'\next\DN@##1{\prim@s}\else\let\next@\egroup\fi\next@} +\def\prime{{\null\prime@\null}} +\mathchardef\prime@="0230 +\let\dsize\displaystyle +\let\tsize\textstyle +\let\ssize\scriptstyle +\let\sssize\scriptscriptstyle +\def\,{\RIfM@\mskip\thinmuskip\relax\else\kern.16667em\fi} +\def\!{\RIfM@\mskip-\thinmuskip\relax\else\kern-.16667em\fi} +\let\thinspace\, +\let\negthinspace\! +\def\medspace{\RIfM@\mskip\medmuskip\relax\else\kern.222222em\fi} +\def\negmedspace{\RIfM@\mskip-\medmuskip\relax\else\kern-.222222em\fi} +\def\thickspace{\RIfM@\mskip\thickmuskip\relax\else\kern.27777em\fi} +\let\;\thickspace +\def\negthickspace{\RIfM@\mskip-\thickmuskip\relax\else + \kern-.27777em\fi} +\atdef@,{\RIfM@\mskip.1\thinmuskip\else\leavevmode\null,\fi} +\atdef@!{\RIfM@\mskip-.1\thinmuskip\else\leavevmode\null!\fi} +\atdef@.{\leavevmode.\spacefactor3000 } +\def\and{\DOTSB\;\mathchar"3026 \;} +\def\implies{\DOTSB\;\Longrightarrow\;} +\def\impliedby{\DOTSB\;\Longleftarrow\;} +\def\frac#1#2{{#1\over#2}} +\def\dfrac#1#2{{\displaystyle{#1\over#2}}} +\def\tfrac#1#2{{\textstyle{#1\over#2}}} +\newdimen\ex@ +\ex@.2326ex +\Invalid@\thickness +\def\thickfrac{\DN@{\ifx\next\thickness\let\next@\nextii@\else + \DN@{\nextii@\thickness1}\fi\next@}% + \DNii@\thickness##1##2##3{{##2\above##1\ex@##3}}% + \FN@\next@} +\def\fracwithdelims#1#2#3#4{{#3\overwithdelims#1#2#4}} +\def\thickfracwithdelims#1#2{\def\ldelim@{#1}\def\rdelim@{#2}% + \DN@{\ifx\next\thickness\let\next@\nextii@\else + \DN@{\nextii@\thickness1}\fi\next@}% + \DNii@\thickness##1##2##3{{##2\abovewithdelims + \ldelim@\rdelim@##1\ex@##3}}% + \FN@\next@} +\def\binom#1#2{{#1\choose#2}} +\def\dbinom#1#2{{\displaystyle{#1\choose#2}}} +\def\tbinom#1#2{{\textstyle{#1\choose#2}}} +\def\:{\nobreak\hskip.1111em\mathpunct{}\nonscript\mkern-\thinmuskip{:}\hskip + .3333emplus.0555em\relax} +\def\snug{\unskip\kern-\mathsurround} +\define\topsmash{\top@true\bot@false\smash@} +\define\botsmash{\top@false\bot@true\smash@} +\newif\iftop@ +\newif\ifbot@ +\undefine\smash +\define\smash{\top@true\bot@true\smash@} +\def\smash@{\RIfM@\expandafter\mathpalette\expandafter\mathsm@sh\else + \expandafter\makesm@sh\fi} +\def\finsm@sh{\iftop@\ht\z@\z@\fi\ifbot@\dp\z@\z@\fi\leavevmode\boxz@} +\def\LimitsOnSums{\global\let\slimits@\displaylimits} +\def\NoLimitsOnSums{\global\let\slimits@\nolimits} +\LimitsOnSums +\mathchardef\coprod@="1360 \def\coprod{\DOTSB\coprod@\slimits@} +\mathchardef\bigvee@="1357 \def\bigvee{\DOTSB\bigvee@\slimits@} +\mathchardef\bigwedge@="1356 \def\bigwedge{\DOTSB\bigwedge@\slimits@} +\mathchardef\biguplus@="1355 \def\biguplus{\DOTSB\biguplus@\slimits@} +\mathchardef\bigcap@="1354 \def\bigcap{\DOTSB\bigcap@\slimits@} +\mathchardef\bigcup@="1353 \def\bigcup{\DOTSB\bigcup@\slimits@} +\mathchardef\prod@="1351 \def\prod{\DOTSB\prod@\slimits@} +\mathchardef\sum@="1350 \def\sum{\DOTSB\sum@\slimits@} +\mathchardef\bigotimes@="134E \def\bigotimes{\DOTSB\bigotimes@\slimits@} +\mathchardef\bigoplus@="134C \def\bigoplus{\DOTSB\bigoplus@\slimits@} +\mathchardef\bigodot@="134A \def\bigodot{\DOTSB\bigodot@\slimits@} +\mathchardef\bigsqcup@="1346 \def\bigsqcup{\DOTSB\bigsqcup@\slimits@} +\def\LimitsOnInts{\global\let\ilimits@\displaylimits} +\def\NoLimitsOnInts{\global\let\ilimits@\nolimits} +\NoLimitsOnInts +\def\int{\DOTSI\intop\ilimits@} +\def\oint{\DOTSI\ointop\ilimits@} +\def\intic@{\mathchoice{\hskip.5em}{\hskip.4em}{\hskip.4em}{\hskip.4em}} +\def\negintic@{\mathchoice + {\hskip-.5em}{\hskip-.4em}{\hskip-.4em}{\hskip-.4em}} +\def\intkern@{\mathchoice{\!\!\!}{\!\!}{\!\!}{\!\!}} +\def\intdots@{\mathchoice{\plaincdots@} + {{\cdotp}\mkern1.5mu{\cdotp}\mkern1.5mu{\cdotp}} + {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}} + {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}} +\newcount\intno@ +\def\iint{\DOTSI\intno@\tw@\FN@\ints@} +\def\iiint{\DOTSI\intno@\thr@@\FN@\ints@} +\def\iiiint{\DOTSI\intno@4 \FN@\ints@} +\def\idotsint{\DOTSI\intno@\z@\FN@\ints@} +\def\ints@{\findlimits@\ints@@} +\newif\iflimtoken@ +\newif\iflimits@ +\def\findlimits@{\limtoken@true\ifx\next\limits\limits@true + \else\ifx\next\nolimits\limits@false\else + \limtoken@false\ifx\ilimits@\nolimits\limits@false\else + \ifinner\limits@false\else\limits@true\fi\fi\fi\fi} +\def\multint@{\int\ifnum\intno@=\z@\intdots@ + \else\intkern@\fi + \ifnum\intno@>\tw@\int\intkern@\fi + \ifnum\intno@>\thr@@\int\intkern@\fi + \int} +\def\multintlimits@{\intop\ifnum\intno@=\z@\intdots@\else\intkern@\fi + \ifnum\intno@>\tw@\intop\intkern@\fi + \ifnum\intno@>\thr@@\intop\intkern@\fi\intop} +\def\ints@@{\iflimtoken@ + \def\ints@@@{\iflimits@\negintic@\mathop{\intic@\multintlimits@}\limits + \else\multint@\nolimits\fi + \eat@} + \else + \def\ints@@@{\iflimits@\negintic@ + \mathop{\intic@\multintlimits@}\limits\else + \multint@\nolimits\fi}\fi\ints@@@} +\def\LimitsOnNames{\global\let\nlimits@\displaylimits} +\def\NoLimitsOnNames{\global\let\nlimits@\nolimits@} +\LimitsOnNames +\def\nolimits@{\DN@{\ifx\next\limits\DN@\limits{\nolimits}\else + \let\next@\nolimits\fi\next@}% + \FN@\next@} +\def\newmcodes@{\mathcode39="0027 \mathcode42="002A \mathcode46="613A + \mathcode45="002D \mathcode47="002F \mathcode58="603A } +\def\operatorname#1{\mathop{\newmcodes@\kern\z@\fam\z@#1}\nolimits@} +\def\operatornamewithlimits#1{\mathop{\newmcodes@\kern\z@\fam\z@#1}\nlimits@} +\def\qopname@#1{\mathop{\fam\z@#1}\nolimits@} +\def\qopnamewl@#1{\mathop{\fam\z@#1}\nlimits@} +\def\arccos{\qopname@{arccos}} +\def\arcsin{\qopname@{arcsin}} +\def\arctan{\qopname@{arctan}} +\def\arg{\qopname@{arg}} +\def\cos{\qopname@{cos}} +\def\cosh{\qopname@{cosh}} +\def\cot{\qopname@{cot}} +\def\coth{\qopname@{coth}} +\def\csc{\qopname@{csc}} +\def\deg{\qopname@{deg}} +\def\det{\qopnamewl@{det}} +\def\dim{\qopname@{dim}} +\def\exp{\qopname@{exp}} +\def\gcd{\qopnamewl@{gcd}} +\def\hom{\qopname@{hom}} +\def\inf{\qopnamewl@{inf}} +\def\injlim{\qopnamewl@{inj\,lim}} +\def\ker{\qopname@{ker}} +\def\lg{\qopname@{lg}} +\def\lim{\qopnamewl@{lim}} +\def\liminf{\qopnamewl@{lim\,inf}} +\def\limsup{\qopnamewl@{lim\,sup}} +\def\ln{\qopname@{ln}} +\def\log{\qopname@{log}} +\def\max{\qopnamewl@{max}} +\def\min{\qopnamewl@{min}} +\def\Pr{\qopnamewl@{Pr}} +\def\projlim{\qopnamewl@{proj\,lim}} +\def\sec{\qopname@{sec}} +\def\sin{\qopname@{sin}} +\def\sinh{\qopname@{sinh}} +\def\sup{\qopnamewl@{sup}} +\def\tan{\qopname@{tan}} +\def\tanh{\qopname@{tanh}} +\define\varinjlim{\mathop{\vtop{\ialign{##\crcr + \hfil\rm lim\hfil\crcr\noalign{\nointerlineskip}\rightarrowfill\crcr + \noalign{\nointerlineskip\kern-\ex@}\crcr}}}} +\define\varprojlim{\mathop{\vtop{\ialign{##\crcr + \hfil\rm lim\hfil\crcr\noalign{\nointerlineskip}\leftarrowfill\crcr + \noalign{\nointerlineskip\kern-\ex@}\crcr}}}} +\def\varliminf{\mathop{\underline{\vrule\height\z@\depth.2ex\width\z@ + \hbox{\rm lim}}}} +\def\varlimsup{\mathop{\overline{\hbox{\rm lim}}}} +\newdimen\buffer@ +\buffer@\fontdimen13 \tenex +\newdimen\buffer +\buffer\buffer@ +\def\ChangeBuffer#1{\fontdimen13 \tenex#1\relax + \global\buffer\fontdimen13 \tenex} +\def\ResetBuffer{\fontdimen13 \tenex\buffer@\global\buffer\buffer@} +\def\shave#1{\mathop{\hbox{$\m@th\fontdimen13 \tenex\z@ + \displaystyle{#1}$}}\fontdimen13 \tenex\buffer} +\def\topshave#1{\mathop{\topsmash{\displaystyle{#1}}\vphantom{\shave{#1}}}} +\def\botshave#1{\mathop{\botsmash{\displaystyle{#1}}\vphantom{\shave{#1}}}} +\Invalid@\\ +\def\Let@{\relax\iffalse{\fi\let\\\cr\iffalse}\fi} +\Invalid@\vspace +\def\vspace@{\def\vspace##1{\crcr\noalign{\vskip##1\relax}}} +\def\multilimits@{\bgroup\vspace@\Let@ + \baselineskip\fontdimen10 \scriptfont\tw@ + \advance\baselineskip\fontdimen12 \scriptfont\tw@ + \lineskip\thr@@\fontdimen8 \scriptfont\thr@@ + \lineskiplimit\lineskip + \vbox\bgroup\ialign\bgroup\hfil$\m@th\scriptstyle{##}$\hfil\crcr} +\def\Sb{_\multilimits@} +\def\endSb{\crcr\egroup\egroup\egroup} +\def\Sp{^\multilimits@} +\let\endSp\endSb +\def\spreadlines#1{\RIfMIfI@\onlydmatherr@\spreadlines\else + \openup#1\relax\fi\else\onlydmatherr@\spreadlines\fi} +\def\Mathstrut@{\copy\Mathstrutbox@} +\newbox\Mathstrutbox@ +\setbox\Mathstrutbox@\null +\setbox\z@\hbox{$\m@th($} +\ht\Mathstrutbox@\ht\z@ +\dp\Mathstrutbox@\dp\z@ +\newdimen\spreadmlines@ +\def\spreadmatrixlines#1{\RIfMIfI@ + \onlydmatherr@\spreadmatrixlines\else + \spreadmlines@#1\relax\fi\else\onlydmatherr@\spreadmatrixlines\fi} +\def\matrix{\null\,\vcenter\bgroup\Let@\vspace@ + \normalbaselines\openup\spreadmlines@\ialign + \bgroup\hfil$\m@th##$\hfil&&\quad\hfil$\m@th##$\hfil\crcr + \Mathstrut@\crcr\noalign{\kern-\baselineskip}} +\def\endmatrix{\crcr\Mathstrut@\crcr\noalign{\kern-\baselineskip}\egroup + \egroup\,} +\def\format{\crcr\egroup\iffalse{\fi\ifnum`}=0 \fi\format@} +\newtoks\hashtoks@ +\hashtoks@{#} +\def\format@#1\\{\def\preamble@{#1}% + \def\l{$\m@th\the\hashtoks@$\hfil}% + \def\c{\hfil$\m@th\the\hashtoks@$\hfil}% + \def\r{\hfil$\m@th\the\hashtoks@$}% + \edef\Preamble@{\preamble@}\ifnum`{=0 \fi\iffalse}\fi + \ialign\bgroup\span\Preamble@\crcr} +\def\smallmatrix{\null\,\vcenter\bgroup\vspace@\Let@ + \baselineskip9\ex@\lineskip\ex@ + \ialign\bgroup\hfil$\m@th\scriptstyle{##}$\hfil&&\thickspace\hfil + $\m@th\scriptstyle{##}$\hfil\crcr} +\def\endsmallmatrix{\crcr\egroup\egroup\,} +\def\pmatrix{\left(\matrix} +\def\endpmatrix{\endmatrix\right)} +\def\bmatrix{\left[\matrix} +\def\endbmatrix{\endmatrix\right]} +\def\vmatrix{\left|\matrix} +\def\endvmatrix{\endmatrix\right|} +\def\Vmatrix{\left\|\matrix} +\def\endVmatrix{\endmatrix\right\|} +\def\hdots{\mathinner{\ldotp\ldotp\ldotp}} +\newmuskip\dotsspace@ +\dotsspace@1.5mu +\def\strip@#1 {#1} +\def\spacehdots#1\for#2{\multispan{#2}\xleaders + \hbox{$\m@th\mkern\strip@#1 \dotsspace@.\mkern\strip@#1 \dotsspace@$}\hfill} +\def\hdotsfor#1{\spacehdots\@ne\for{#1}} +\def\multispan@#1{\omit\mscount#1\unskip\loop\ifnum\mscount>\@ne\sp@n\repeat} +\def\spaceinnerhdots#1\for#2\after#3{\multispan@{\strip@#2 }#3\xleaders + \hbox{$\m@th\mkern\strip@#1 \dotsspace@.\mkern\strip@#1 \dotsspace@$}\hfill} +\def\innerhdotsfor#1\after#2{\spaceinnerhdots\@ne\for#1\after{#2}} +\def\cases{\bgroup\spreadmlines@\jot\left\{\,\matrix\format\l&\quad\l\\} +\def\endcases{\endmatrix\right.\egroup} +\def\strut@{\copy\strutbox@} +\newbox\strutbox@ +\setbox\strutbox@\hbox{\vrule\height8\p@\depth3\p@\width\z@} +\def\topaligned{\null\,\vtop\aligned@} +\def\botaligned{\null\,\vbox\aligned@} +\def\aligned{\null\,\vcenter\aligned@} +\def\aligned@{\bgroup\vspace@\Let@ + \openup\jot\ialign + \bgroup\hfil\strut@$\m@th\displaystyle{##}$& + $\m@th\displaystyle{{}##}$\hfil\crcr} +\def\endaligned{\crcr\egroup\egroup} +\let\endtopaligned\endaligned +\let\endbotaligned\endaligned +\def\alignedat#1{\null\,\vcenter\bgroup\doat@{#1}\vspace@\Let@ + \openup\jot\ialign\bgroup\span\preamble@@\crcr} +\newcount\atcount@ +\def\doat@#1{\toks@{\hfil\strut@$\m@th + \displaystyle{\the\hashtoks@}$&$\m@th\displaystyle + {{}\the\hashtoks@}$\hfil}% + \atcount@#1\relax\advance\atcount@\m@ne + \loop\ifnum\atcount@>\z@\toks@=\expandafter{\the\toks@&\hfil$\m@th + \displaystyle{\the\hashtoks@}$&$\m@th + \displaystyle{{}\the\hashtoks@}$\hfil}\advance\atcount@\m@ne\repeat + \edef\preamble@{\the\toks@}\edef\preamble@@{\preamble@}} +\let\endalignedat\endaligned +\def\gathered{\null\,\vcenter\bgroup\vspace@\Let@ + \openup\jot\ialign + \bgroup\hfil\strut@$\m@th\displaystyle{##}$\hfil\crcr} +\def\endgathered{\crcr\egroup\egroup} +\def\bmod{\mskip-\medmuskip\mkern5mu\mathbin{\fam\z@ mod}\penalty900 + \mkern5mu\mskip-\medmuskip} +\def\pmod#1{\allowbreak\ifinner\mkern8mu\else\mkern18mu\fi + ({\fam\z@ mod}\,\,#1)} +\def\pod#1{\allowbreak\ifinner\mkern8mu\else\mkern18mu\fi(#1)} +\def\mod#1{\allowbreak\ifinner\mkern12mu\else\mkern18mu\fi{\fam\z@ mod}\,\,#1} +\newcount\cfraccount@ +\def\cfrac{\bgroup\bgroup\advance\cfraccount@\@ne\strut + \iffalse{\fi\def\\{\over\displaystyle}\iffalse}\fi} +\def\lcfrac{\bgroup\bgroup\advance\cfraccount@\@ne\strut + \iffalse{\fi\def\\{\hfill\over\displaystyle}\iffalse}\fi} +\def\rcfrac{\bgroup\bgroup\advance\cfraccount@\@ne\strut\hfill + \iffalse{\fi\def\\{\over\displaystyle}\iffalse}\fi} +\def\endcfrac{\gloop@\ifnum\cfraccount@>\z@\global\advance\cfraccount@\m@ne + \egroup\hskip-\nulldelimiterspace\egroup\repeat} +\def\binrel@#1{\setboxz@h{\thinmuskip0mu + \medmuskip\m@ne mu\thickmuskip\@ne mu$#1\m@th$}% + \setbox\tw@\hbox{\thinmuskip0mu\medmuskip\m@ne mu\thickmuskip + \@ne mu${}#1{}\m@th$}% + \setbox\tw@\hbox{\hskip\wd\tw@\hskip-\wdz@}} +\def\overset#1\to#2{\binrel@{#2}\ifdim\wd\tw@<\z@ + \mathbin{\mathop{\kern\z@#2}\limits^{#1}}\else\ifdim\wd\tw@>\z@ + \mathrel{\mathop{\kern\z@#2}\limits^{#1}}\else + {\mathop{\kern\z@#2}\limits^{#1}}{}\fi\fi} +\def\underset#1\to#2{\binrel@{#2}\ifdim\wd\tw@<\z@ + \mathbin{\mathop{\kern\z@#2}\limits_{#1}}\else\ifdim\wd\tw@>\z@ + \mathrel{\mathop{\kern\z@#2}\limits_{#1}}\else + {\mathop{\kern\z@#2}\limits_{#1}}{}\fi\fi} +\def\oversetbrace#1\to#2{\overbrace{#2}^{#1}} +\def\undersetbrace#1\to#2{\underbrace{#2}_{#1}} +\def\sideset#1\and#2\to#3{% + \setboxz@h{$\dsize{\vphantom{#3}}#1{#3}\m@th$}% + \setbox\tw@\hbox{$\dsize{#3}#2\m@th$}% + \hskip\wdz@\hskip-\wd\tw@\mathop{\hskip\wd\tw@\hskip-\wdz@ + {\vphantom{#3}}#1{#3}#2}} +\def\rightarrowfill@#1{$#1\m@th\mathord-\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\mathord-\mkern-2mu$}\hfill + \mkern-6mu\mathord\rightarrow$} +\def\leftarrowfill@#1{$#1\m@th\mathord\leftarrow\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\mathord-\mkern-2mu$}\hfill\mkern-6mu\mathord-$} +\def\leftrightarrowfill@#1{$#1\m@th\mathord\leftarrow\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\mathord-\mkern-2mu$}\hfill + \mkern-6mu\mathord\rightarrow$} +\def\overrightarrow{\mathpalette\overrightarrow@} +\def\overrightarrow@#1#2{\vbox{\ialign{##\crcr\rightarrowfill@#1\crcr + \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#1#2\hfil$\crcr}}} +\let\overarrow\overrightarrow +\def\overleftarrow{\mathpalette\overleftarrow@} +\def\overleftarrow@#1#2{\vbox{\ialign{##\crcr\leftarrowfill@#1\crcr + \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#1#2\hfil$\crcr}}} +\def\overleftrightarrow{\mathpalette\overleftrightarrow@} +\def\overleftrightarrow@#1#2{\vbox{\ialign{##\crcr\leftrightarrowfill@#1\crcr + \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#1#2\hfil$\crcr}}} +\def\underrightarrow{\mathpalette\underrightarrow@} +\def\underrightarrow@#1#2{\vtop{\ialign{##\crcr$\m@th\hfil#1#2\hfil$\crcr + \noalign{\nointerlineskip}\rightarrowfill@#1\crcr}}} +\let\underarrow\underrightarrow +\def\underleftarrow{\mathpalette\underleftarrow@} +\def\underleftarrow@#1#2{\vtop{\ialign{##\crcr$\m@th\hfil#1#2\hfil$\crcr + \noalign{\nointerlineskip}\leftarrowfill@#1\crcr}}} +\def\underleftrightarrow{\mathpalette\underleftrightarrow@} +\def\underleftrightarrow@#1#2{\vtop{\ialign{##\crcr$\m@th\hfil#1#2\hfil$\crcr + \noalign{\nointerlineskip}\leftrightarrowfill@#1\crcr}}} +\let\DOTSI\relax +\let\DOTSB\relax +\let\DOTSX\relax +\newif\ifmath@ +{\uccode`7=`\\ \uccode`8=`m \uccode`9=`a \uccode`0=`t \uccode`!=`h + \uppercase{\gdef\math@#1#2#3#4#5#6\math@{\global\math@false\ifx 7#1\ifx 8#2% + \ifx 9#3\ifx 0#4\ifx !#5\xdef\meaning@{#6}\global\math@true\fi\fi\fi\fi\fi}}} +\newif\ifmathch@ +{\uccode`7=`c \uccode`8=`h \uccode`9=`\" + \uppercase{\gdef\mathch@#1#2#3#4#5#6\mathch@{\global\mathch@false + \ifx 7#1\ifx 8#2\ifx 9#5\global\mathch@true\xdef\meaning@{9#6}\fi\fi\fi}}} +\newcount\classnum@ +\def\getmathch@#1.#2\getmathch@{\classnum@#1 \divide\classnum@4096 + \ifcase\number\classnum@\or\or\gdef\thedots@{\dotsb@}\or + \gdef\thedots@{\dotsb@}\fi} +\newif\ifmathbin@ +{\uccode`4=`b \uccode`5=`i \uccode`6=`n + \uppercase{\gdef\mathbin@#1#2#3{% + \DNii@##1\mathbin@{\ifx\space@\next\global\mathbin@true\fi}% + \global\mathbin@false\DN@##1\mathbin@{}% + \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}} +\newif\ifmathrel@ +{\uccode`4=`r \uccode`5=`e \uccode`6=`l + \uppercase{\gdef\mathrel@#1#2#3{% + \DNii@##1\mathrel@{\ifx\space@\next\global\mathrel@true\fi}% + \global\mathrel@false\DN@##1\mathrel@{}% + \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}} +\newif\ifmacro@ +{\uccode`5=`m \uccode`6=`a \uccode`7=`c + \uppercase{\gdef\macro@#1#2#3#4\macro@{\global\macro@false + \ifx 5#1\ifx 6#2\ifx 7#3\global\macro@true + \xdef\meaning@{\macro@@#4\macro@@}\fi\fi\fi}}} +\def\macro@@#1->#2\macro@@{#2} +\newif\ifDOTS@ +\newcount\DOTSCASE@ +{\uccode`6=`\\ \uccode`7=`D \uccode`8=`O \uccode`9=`T \uccode`0=`S + \uppercase{\gdef\DOTS@#1#2#3#4#5{\global\DOTS@false\DN@##1\DOTS@{}% + \ifx 6#1\ifx 7#2\ifx 8#3\ifx 9#4\ifx 0#5\let\next@\DOTS@@\fi\fi\fi\fi\fi + \next@}}} +{\uccode`3=`B \uccode`4=`I \uccode`5=`X + \uppercase{\gdef\DOTS@@#1{% + \DNii@##1\DOTS@{\ifx\space@\next\global\DOTS@true\fi}% + \DN@{\FN@\nextii@}% + \ifx 3#1\global\DOTSCASE@\z@\else + \ifx 4#1\global\DOTSCASE@\@ne\else + \ifx 5#1\global\DOTSCASE@\tw@\else\DN@##1\DOTS@{}% + \fi\fi\fi\next@}}} +\newif\ifnot@ +{\uccode`5=`\\ \uccode`6=`n \uccode`7=`o \uccode`8=`t + \uppercase{\gdef\not@#1#2#3#4{% + \DNii@##1\not@{\ifx\space@\next\global\not@true\fi}% + \global\not@false\DN@##1\not@{}% + \ifx 5#1\ifx 6#2\ifx 7#3\ifx 8#4\DN@{\FN@\nextii@}\fi\fi\fi + \fi\next@}}} +\newif\ifkeybin@ +\def\dots{\RIfM@\expandafter\mdots@\else\expandafter\tdots@\fi} +\def\mdots@{\FN@\mdots@@} +\def\mdots@@{\gdef\thedots@{\dotso@}% + \ifx\next\boldkey\gdef\thedots@\boldkey{\boldkeydots@}\else + \ifx\next\boldsymbol\gdef\thedots@\boldsymbol{\boldsymboldots@}\else + \ifx,\next\gdef\thedots@{\dotsc}% + \else\ifx\not\next\gdef\thedots@{\dotsb@}% + \else\keybin@ + \ifkeybin@\gdef\thedots@{\dotsb@}% + \else\xdef\meaning@{\meaning\next..........}\xdef\meaning@@{\meaning@}% + \expandafter\math@\meaning@\math@ + \ifmath@ + \expandafter\mathch@\meaning@\mathch@ + \ifmathch@\expandafter\getmathch@\meaning@\getmathch@\fi + \else\expandafter\macro@\meaning@@\macro@ + \ifmacro@ + \expandafter\not@\meaning@\not@\ifnot@\gdef\thedots@{\dotsb@}% + \else\expandafter\DOTS@\meaning@\DOTS@ + \ifDOTS@ + \ifcase\number\DOTSCASE@\gdef\thedots@{\dotsb@}% + \or\gdef\thedots@{\dotsi}\else\fi + \else\expandafter\math@\meaning@\math@ + \ifmath@\expandafter\mathbin@\meaning@\mathbin@ + \ifmathbin@\gdef\thedots@{\dotsb@}% + \else\expandafter\mathrel@\meaning@\mathrel@ + \ifmathrel@\gdef\thedots@{\dotsb@}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \thedots@} +\def\plainldots@{\mathinner{\ldotp\ldotp\ldotp}} +\def\plaincdots@{\mathinner{\cdotp\cdotp\cdotp}} +\def\dotsi{\!\plaincdots@} +\let\dotsb@\plaincdots@ +\newif\ifextra@ +\newif\ifrightdelim@ +\def\rightdelim@{\global\rightdelim@true + \ifx\next)\else + \ifx\next]\else + \ifx\next\rbrack\else + \ifx\next\}\else + \ifx\next\rbrace\else + \ifx\next\rangle\else + \ifx\next\rceil\else + \ifx\next\rfloor\else + \ifx\next\rgroup\else + \ifx\next\rmoustache\else + \ifx\next\right\else + \ifx\next\bigr\else + \ifx\next\biggr\else + \ifx\next\Bigr\else + \ifx\next\Biggr\else\global\rightdelim@false + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\extra@{% + \global\extra@false\rightdelim@\ifrightdelim@\global\extra@true + \else\ifx\next$\global\extra@true + \else\xdef\meaning@{\meaning\next..........}% + \expandafter\macro@\meaning@\macro@\ifmacro@ + \expandafter\DOTS@\meaning@\DOTS@ + \ifDOTS@ + \ifnum\DOTSCASE@=\tw@\global\extra@true + \fi\fi\fi\fi\fi} +\newif\ifbold@ +\def\dotso@{% + \ifbold@ + \let\next\delayed@ + \DNii@{\extra@\plainldots@\ifextra@\,\fi}% + \else + \DNii@{\DN@{\extra@\plainldots@\ifextra@\,\fi}\FN@\next@}% + \fi + \nextii@} +\def\ldots{\DN@{\extrap@\plainldots@}% + \FN@\next@} +\def\cdots{\DN@{\extrap@\plaincdots@}% + \FN@\next@} +\let\dotso\ldots +\let\dotsb\cdots +\let\dotsm\dotsb +\def\cdot{\mathchar"2201 } +\def\longrightarrow{\DOTSB\relbar\joinrel\rightarrow} +\def\Longrightarrow{\DOTSB\Relbar\joinrel\Rightarrow} +\def\longleftarrow{\DOTSB\leftarrow\joinrel\relbar} +\def\Longleftarrow{\DOTSB\Leftarrow\joinrel\Relbar} +\def\longleftrightarrow{\DOTSB\leftarrow\joinrel\rightarrow} +\def\Longleftrightarrow{\DOTSB\Leftarrow\joinrel\Rightarrow} +\def\mapsto{\DOTSB\mapstochar\rightarrow} +\def\longmapsto{\DOTSB\mapstochar\longrightarrow} +\def\hookrightarrow{\DOTSB\lhook\joinrel\rightarrow} +\def\hookleftarrow{\DOTSB\leftarrow\joinrel\rhook} +\def\doteq{\DOTSB\buildrel\textstyle.\over=} +\def\iff{\DOTSB\;\Longleftrightarrow\;} +\def\dddot#1{{\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@ + \hbox{\rm...}\vss}}}} +\def\ddddot#1{{\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@ + \hbox{\rm....}\vss}}}} +\def\sphat{^{\mathchoice{}{}% + {\,\,\botsmash{\hbox{\lower4\ex@\hbox{$\m@th\widehat{\null}$}}}}% + {\,\botsmash{\hbox{\lower3\ex@\hbox{$\m@th\hat{\null}$}}}}}} +\def\spcheck{^\vee} +\def\sptilde{^\sim} +\def\spacute{^{\!\botsmash{\hbox{\lower\@ne ex\hbox{\'{}}}}}} +\def\spgrave{^{\mathchoice{}{}{}{\!}% + \botsmash{\hbox{\lower\@ne ex\hbox{\`{}}}}}} +\def\spdot{^{\hbox{\raise\ex@\hbox{\rm.}}}} +\def\spddot{^{\hbox{\raise\ex@\hbox{\rm..}}}} +\def\spdddot{^{\hbox{\raise\ex@\hbox{\rm...}}}} +\def\spddddot{^{\hbox{\raise\ex@\hbox{\rm....}}}} +\def\spbreve{^{\!\botsmash{\hbox{\lower4\ex@\hbox{\u{}}}}}} +\def\spbar{^-} +\def\spvec{^\rightarrow} +\def\textonlyfont@#1#2{\def#1{\RIfM@ + \Err@{Use \noexpand#1only in text}\else#2\fi}} +\textonlyfont@\rm\tenrm +\textonlyfont@\it\tenit +\textonlyfont@\sl\tensl +\textonlyfont@\bf\tenbf +\def\oldnos#1{\RIfM@{\mathcode`\,="013B \fam\@ne#1}\else + \leavevmode\hbox{$\m@th\mathcode`\,="013B \fam\@ne#1$}\fi} +\def\text{\RIfM@\expandafter\text@\else\expandafter\text@@\fi} +\def\text@@#1{\leavevmode\hbox{#1}} +\def\mathhexbox@#1#2#3{\text{$\m@th\mathchar"#1#2#3$}} +\def\dag{{\mathhexbox@279}} +\def\ddag{{\mathhexbox@27A}} +\def\S{{\mathhexbox@278}} +\def\P{{\mathhexbox@27B}} +\newif\iffirstchoice@ +\firstchoice@true +\def\text@#1{\mathchoice + {\hbox{\everymath{\displaystyle}\def\textfonti{\the\textfont\@ne}% + \def\textfontii{\the\textfont\tw@}\textdef@@ T#1}} + {\hbox{\firstchoice@false + \everymath{\textstyle}\def\textfonti{\the\textfont\@ne}% + \def\textfontii{\the\textfont\tw@}\textdef@@ T#1}} + {\hbox{\firstchoice@false + \everymath{\scriptstyle}\def\textfonti{\the\scriptfont\@ne}% + \def\textfontii{\the\scriptfont\tw@}\textdef@@ S\rm#1}} + {\hbox{\firstchoice@false + \everymath{\scriptscriptstyle}\def\textfonti + {\the\scriptscriptfont\@ne}% + \def\textfontii{\the\scriptscriptfont\tw@}\textdef@@ s\rm#1}}} +\def\textdef@@#1{\textdef@#1\rm\textdef@#1\bf\textdef@#1\sl\textdef@#1\it} +\def\rmfam{0} +\def\textdef@#1#2{% + \DN@{\csname\expandafter\eat@\string#2fam\endcsname}% + \if S#1\edef#2{\the\scriptfont\next@\relax}% + \else\if s#1\edef#2{\the\scriptscriptfont\next@\relax}% + \else\edef#2{\the\textfont\next@\relax}\fi\fi} +\scriptfont\itfam\tenit \scriptscriptfont\itfam\tenit +\scriptfont\slfam\tensl \scriptscriptfont\slfam\tensl +\newif\iftopfolded@ +\newif\ifbotfolded@ +\def\topfoldedtext{\topfolded@true\botfolded@false\foldedtext@} +\def\botfoldedtext{\botfolded@true\topfolded@false\foldedtext@} +\def\foldedtext{\topfolded@false\botfolded@false\foldedtext@} +\Invalid@\foldedwidth +\def\foldedtext@{% + \DN@{\ifx\next\foldedwidth\let\next@\nextii@\else + \DN@{\nextii@\foldedwidth{.3\hsize}}\fi\next@}% + \DNii@\foldedwidth##1##2{\setbox\z@\vbox + {\normalbaselines\hsize##1\relax + \tolerance1600 \noindent\ignorespaces##2}\ifbotfolded@\boxz@\else + \iftopfolded@\vtop{\unvbox\z@}\else\vcenter{\boxz@}\fi\fi}% + \FN@\next@} +\def\bold{\RIfM@\expandafter\bold@\else + \expandafter\nonmatherr@\expandafter\bold\fi} +\def\bold@#1{{\bold@@{#1}}} +\def\bold@@#1{\fam\bffam\relax#1} +\def\slanted{\RIfM@\expandafter\slanted@\else + \expandafter\nonmatherr@\expandafter\slanted\fi} +\def\slanted@#1{{\slanted@@{#1}}} +\def\slanted@@#1{\fam\slfam\relax#1} +\def\rom{\RIfM@\expandafter\rom@\else + \expandafter\nonmatherr@\expandafter\rom\fi} +\def\rom@#1{{\rom@@{#1}}} +\def\rom@@#1{\fam\rmfam\relax#1} +\def\italic{\RIfM@\expandafter\italic@\else + \expandafter\nonmatherr@\expandafter\italic\fi} +\def\italic@#1{{\italic@@{#1}}} +\def\italic@@#1{\fam\itfam\relax#1} +\def\Cal{\RIfM@\expandafter\Cal@\else + \expandafter\nonmatherr@\expandafter\Cal\fi} +\def\Cal@#1{{\Cal@@{#1}}} +\def\Cal@@#1{\noaccents@\fam\tw@#1} +\mathchardef\Gamma="0000 +\mathchardef\Delta="0001 +\mathchardef\Theta="0002 +\mathchardef\Lambda="0003 +\mathchardef\Xi="0004 +\mathchardef\Pi="0005 +\mathchardef\Sigma="0006 +\mathchardef\Upsilon="0007 +\mathchardef\Phi="0008 +\mathchardef\Psi="0009 +\mathchardef\Omega="000A +\mathchardef\varGamma="0100 +\mathchardef\varDelta="0101 +\mathchardef\varTheta="0102 +\mathchardef\varLambda="0103 +\mathchardef\varXi="0104 +\mathchardef\varPi="0105 +\mathchardef\varSigma="0106 +\mathchardef\varUpsilon="0107 +\mathchardef\varPhi="0108 +\mathchardef\varPsi="0109 +\mathchardef\varOmega="010A +\newif\ifmsamloaded@ +\newif\ifmsbmloaded@ +\newif\ifeufmloaded@ +\let\alloc@@\alloc@ +\def\hexnumber@#1{\ifcase#1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or + 9\or A\or B\or C\or D\or E\or F\fi} +\edef\bffam@{\hexnumber@\bffam} +\def\loadmsam{\msamloaded@true + \font\tenmsa=msam10 + \font\sevenmsa=msam7 + \font\fivemsa=msam5 + \alloc@@8\fam\chardef\sixt@@n\msafam + \textfont\msafam=\tenmsa + \scriptfont\msafam=\sevenmsa + \scriptscriptfont\msafam=\fivemsa + \edef\msafam@{\hexnumber@\msafam}% + \mathchardef\dabar@"0\msafam@39 + \def\dashrightarrow{\mathrel{\dabar@\dabar@\mathchar"0\msafam@4B}}% + \def\dashleftarrow{\mathrel{\mathchar"0\msafam@4C\dabar@\dabar@}}% + \let\dasharrow\dashrightarrow + \def\ulcorner{\delimiter"4\msafam@70\msafam@70 } + \def\urcorner{\delimiter"5\msafam@71\msafam@71 } + \def\llcorner{\delimiter"4\msafam@78\msafam@78 } + \def\lrcorner{\delimiter"5\msafam@79\msafam@79 } + \def\yen{{\mathhexbox@\msafam@55 }} + \def\checkmark{{\mathhexbox@\msafam@58 }} + \def\circledR{{\mathhexbox@\msafam@72 }} + \def\maltese{{\mathhexbox@\msafam@7A }}} +\def\loadmsbm{\msbmloaded@true + \font\tenmsb=msbm10 + \font\sevenmsb=msbm7 + \font\fivemsb=msbm5 + \alloc@@8\fam\chardef\sixt@@n\msbfam + \textfont\msbfam=\tenmsb + \scriptfont\msbfam=\sevenmsb + \scriptscriptfont\msbfam=\fivemsb + \edef\msbfam@{\hexnumber@\msbfam}} +\def\widehat#1{\ifmsbmloaded@ + \setboxz@h{$\m@th#1$}\ifdim\wdz@>\tw@ em\mathaccent"0\msbfam@5B{#1}\else + \mathaccent"0362{#1}\fi + \else\mathaccent"0362{#1}\fi} +\def\widetilde#1{\ifmsbmloaded@ + \setboxz@h{$\m@th#1$}\ifdim\wdz@>\tw@ em\mathaccent"0\msbfam@5D{#1}\else + \mathaccent"0365{#1}\fi + \else\mathaccent"0365{#1}\fi} +\def\newsymbol#1#2#3#4#5{\define#1{}\let\next@\relax + \ifnum#2=\@ne\ifmsamloaded@\let\next@\msafam@\fi\else + \ifnum#2=\tw@\ifmsbmloaded@\let\next@\msbfam@\fi\fi\fi + \ifx\next@\relax + \ifnum#2>\tw@\Err@{\Invalid@@\string\newsymbol}\else + \ifnum#2=\@ne\Err@{You must first \string\loadmsam}\else + \Err@{You must first \string\loadmsbm}\fi\fi + \else + \mathchardef#1="#3\next@#4#5 + \fi} +\def\UseAMSsymbols{\input amssym.tex\relax} +\def\Bbb{\RIfM@\expandafter\Bbb@\else + \expandafter\nonmatherr@\expandafter\Bbb\fi} +\def\Bbb@#1{{\Bbb@@{#1}}} +\def\Bbb@@#1{\noaccents@\fam\msyfam\relax#1} +\def\loadeufm{\eufmloaded@true + \font\teneufm=eufm10 + \font\seveneufm=eufm7 + \font\fiveeufm=eufm5 + \alloc@@8\fam\chardef\sixt@@n\eufmfam + \textfont\eufmfam=\teneufm + \scriptfont\eufmfam=\seveneufm + \scriptscriptfont\eufmfam=\fiveeufm} +\def\frak{\RIfM@\expandafter\frak@\else + \expandafter\nonmatherr@\expandafter\frak\fi} +\def\frak@#1{{\frak@@{#1}}} +\def\frak@@#1{\fam\eufmfam\relax#1} +\let\goth\frak +\newif\ifcmmibloaded@ +\newif\ifcmbsyloaded@ +\def\loadbold{\cmmibloaded@true\cmbsyloaded@true + \font\tencmmib=cmmib10 + \font\sevencmmib=cmmib7 + \font\fivecmmib=cmmib5 + \alloc@@8\fam\chardef\sixt@@n\cmmibfam + \textfont\cmmibfam=\tencmmib + \scriptfont\cmmibfam=\sevencmmib + \scriptscriptfont\cmmibfam=\fivecmmib + \edef\cmmibfam@{\hexnumber@\cmmibfam}% + \font\tencmbsy=cmbsy10 + \font\sevencmbsy=cmbsy7 + \font\fivecmbsy=cmbsy5 + \alloc@@8\fam\chardef\sixt@@n\cmbsyfam + \textfont\cmbsyfam=\tencmbsy + \scriptfont\cmbsyfam=\sevencmbsy + \scriptscriptfont\cmbsyfam=\fivecmbsy + \edef\cmbsyfam@{\hexnumber@\cmbsyfam}} +\def\mathchari@#1#2#3{\ifcmmibloaded@\mathchar"#1\cmmibfam@#2#3 \else + \Err@{First bold symbol font not loaded}\fi} +\def\mathcharii@#1#2#3{\ifcmbsyloaded@\mathchar"#1\cmbsyfam@#2#3 \else + \Err@{Second bold symbol font not loaded}\fi} +\def\boldsymbol#1{% + \DN@{\Err@{You can't use \string\boldsymbol\space with \string#1}#1}% + \ifcat\noexpand#1A% + \let\next@\relax + \ifcmmibloaded@{\fam\cmmibfam#1}\else\Err@{First bold symbol + font not loaded}\fi + \else + \xdef\meaning@{\meaning#1.........}% + \expandafter\math@\meaning@\math@ + \ifmath@ + \expandafter\mathch@\meaning@\mathch@ + \ifmathch@ + \expandafter\boldsymbol@@\meaning@\boldsymbol@@ + \fi + \else + \expandafter\macro@\meaning@\macro@ + \expandafter\delim@\meaning@\delim@ + \ifdelim@ + \expandafter\delim@@\meaning@\delim@@ + \else + \boldsymbol@{#1}% + \fi + \fi + \fi + \next@} +\def\mathhexboxii@#1#2{\ifcmbsyloaded@\mathhexbox@{\cmbsyfam@}{#1}{#2}\else + \Err@{Second bold symbol font not loaded}\fi} +\def\boldsymbol@#1{\let\next@\relax\let\next#1% + \ifx\next\cdot\mathcharii@201 \else + \ifx\next\prime{{\null\mathcharii@030 \null}}\else + \ifx\next\lbrack\mathchar"4\bffam@5B \else + \ifx\next\rbrack\mathchar"5\bffam@5D \else + \ifx\next\{\mathcharii@466 \else + \ifx\next\lbrace\mathcharii@466 \else + \ifx\next\}\mathcharii@567 \else + \ifx\next\rbrace\mathcharii@567 \else + \ifx\next\surd{{\mathcharii@170}}\else + \ifx\next\S{{\mathhexboxii@78}}\else + \ifx\next\P{{\mathhexboxii@7B}}\else + \ifx\next\dag{{\mathhexboxii@79}}\else + \ifx\next\ddag{{\mathhexboxii@7A}}\else + \DN@{\Err@{You can't use \string\boldsymbol\space with \string#1}#1}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\boldsymbol@@#1.#2\boldsymbol@@{\classnum@#1 \count@@@\classnum@ + \divide\classnum@4096 \count@\classnum@ + \multiply\count@4096 \advance\count@@@-\count@ \count@@\count@@@ + \divide\count@@@\@cclvi \count@\count@@ + \multiply\count@@@\@cclvi \advance\count@@-\count@@@ + \divide\count@@@\@cclvi + \multiply\classnum@4096 \advance\classnum@\count@@ + \ifnum\count@@@=\z@ + \count@"\bffam@ \multiply\count@\@cclvi + \advance\classnum@\count@ + \DN@{\mathchar\number\classnum@}% + \else + \ifnum\count@@@=\@ne + \ifcmmibloaded@ + \count@"\cmmibfam@ \multiply\count@\@cclvi + \advance\classnum@\count@ + \DN@{\mathchar\number\classnum@}% + \else\DN@{\Err@{First bold symbol font not loaded}}\fi + \else + \ifnum\count@@@=\tw@ + \ifcmbsyloaded@ + \count@"\cmbsyfam@ \multiply\count@\@cclvi + \advance\classnum@\count@ + \DN@{\mathchar\number\classnum@}% + \else\DN@{\Err@{Second bold symbol font not loaded}}\fi + \fi + \fi +\fi} +\newif\ifdelim@ +\newcount\delimcount@ +{\uccode`6=`\\ \uccode`7=`d \uccode`8=`e \uccode`9=`l + \uppercase{\gdef\delim@#1#2#3#4#5\delim@ + {\delim@false\ifx 6#1\ifx 7#2\ifx 8#3\ifx 9#4\delim@true + \xdef\meaning@{#5}\fi\fi\fi\fi}}} +\def\delim@@#1"#2#3#4#5#6\delim@@{\if#32% +\let\next@\relax + \ifcmbsyloaded@ + \mathcharii@#2#4#5 \else\Err@{Second bold family not loaded}\fi\fi} +\def\vert{\delimiter"026A30C } +\def\Vert{\delimiter"026B30D } +\let\|\Vert +\def\backslash{\delimiter"026E30F } +\def\boldkeydots@#1{\bold@true\let\next=#1\let\delayed@=#1\mdots@@ + \boldkey#1\bold@false} % = required! +\def\boldsymboldots@#1{\bold@true\let\next#1\let\delayed@#1\mdots@@ + \boldsymbol#1\bold@false} + +%%\newif\ifeufbloaded@ +%%\def\loadeufb{\eufbloaded@true +%% \font\teneufb=eufb10 +%% \font\seveneufb=eufb7 +%% \font\fiveeufb=eufb5 +%% \alloc@@8\fam\chardef\sixt@@n\eufbfam +%% \textfont\eufbfam=\teneufb +%% \scriptfont\eufbfam=\seveneufb +%% \scriptscriptfont\eufbfam=\fiveeufb +%% \edef\eufbfam@{\hexnumber@\eufbfam}} + +%%\newif\ifeusmloaded@ +%%\def\loadeusm{\eusmloaded@true +%% \font\teneusm=eusm10 +%% \font\seveneusm=eusm7 +%% \font\fiveeusm=eusm5 +%% \alloc@@8\fam\chardef\sixt@@n\eusmfam +%% \textfont\eusmfam=\teneusm +%% \scriptfont\eusmfam=\seveneusm +%% \scriptscriptfont\eusmfam=\fiveeusm +%% \edef\eusmfam@{\hexnumber@\eusmfam}} + +%%\newif\ifeusbloaded@ +%%\def\loadeusb{\eusbloaded@true +%% \font\teneusb=eusb10 +%% \font\seveneusb=eusb7 +%% \font\fiveeusb=eusb5 +%% \alloc@@8\fam\chardef\sixt@@n\eusbfam +%% \textfont\eusbfam=\teneusb +%% \scriptfont\eusbfam=\seveneusb +%% \scriptscriptfont\eusbfam=\fiveeusb +%% \edef\eusbfam@{\hexnumber@\eusbfam}} + +%%\newif\ifeurmloaded@ +%%\def\loadeurm{\eurmloaded@true +%% \font\teneurm=eurm10 +%% \font\seveneurm=eurm7 +%% \font\fiveeurm=eurm5 +%% \alloc@@8\fam\chardef\sixt@@n\eurmfam +%% \textfont\eurmfam=\teneurm +%% \scriptfont\eurmfam=\seveneurm +%% \scriptscriptfont\eurmfam=\fiveeurm +%% \edef\eurmfam@{\hexnumber@\eurmfam}} + +%%\newif\ifeurbloaded@ +%%\def\loadeurb{\eurbloaded@true +%% \font\teneurb=eurb10 +%% \font\seveneurb=eurb7 +%% \font\fiveeurb=eurb5 +%% \alloc@@8\fam\chardef\sixt@@n\eurbfam +%% \textfont\eurbfam=\teneurb +%% \scriptfont\eurbfam=\seveneurb +%% \scriptscriptfont\eurbfam=\fiveeurb +%% \edef\eurbfam@{\hexnumber@\eurbfam}} + +\def\accentclass@{7} +\def\noaccents@{\def\accentclass@{0}} +\def\makeacc@#1#2{\def#1{\mathaccent"\accentclass@#2 }} +\makeacc@\hat{05E} +\makeacc@\check{014} +\makeacc@\tilde{07E} +\makeacc@\acute{013} +\makeacc@\grave{012} +\makeacc@\dot{05F} +\makeacc@\ddot{07F} +\makeacc@\breve{015} +\makeacc@\bar{016} +\def\vec{\mathaccent"017E } +\newcount\skewcharcount@ +\newcount\familycount@ +\def\theskewchar@{\familycount@\@ne + \global\skewcharcount@\the\skewchar\textfont\@ne + \ifnum\fam>\m@ne\ifnum\fam<16 + \global\familycount@\the\fam\relax + \global\skewcharcount@\the\skewchar\textfont\the\fam\relax\fi\fi + \ifnum\skewcharcount@>\m@ne + \ifnum\skewcharcount@<128 + \multiply\familycount@256 + \global\advance\skewcharcount@\familycount@ + \global\advance\skewcharcount@28672 + \mathchar\skewcharcount@\else + \global\skewcharcount@\m@ne\fi\else + \global\skewcharcount@\m@ne\fi} +\newcount\pointcount@ +\def\getpoints@#1.#2\getpoints@{\pointcount@#1 } +\newdimen\accentdimen@ +\newcount\accentmu@ +\def\dimentomu@{\multiply\accentdimen@ 100 + \expandafter\getpoints@\the\accentdimen@\getpoints@ + \multiply\pointcount@18 + \divide\pointcount@\@m + \global\accentmu@\pointcount@} +\def\Makeacc@#1#2{\def#1{\RIfM@\DN@{\mathaccent@ + {"\accentclass@#2 }}\else\DN@{\nonmatherr@{#1}}\fi\next@}} +\def\unbracefonts@{\let\Cal@\Cal@@\let\rom@\rom@@\let\bold@\bold@@ + \let\slanted@\slanted@@} +\def\mathaccent@#1#2{\ifnum\fam=\m@ne\xdef\thefam@{1}\else + \xdef\thefam@{\the\fam}\fi + \accentdimen@\z@ + \setboxz@h{\unbracefonts@$\m@th\fam\thefam@\relax#2$}% + \ifdim\accentdimen@=\z@\DN@{\mathaccent#1{#2}}% + \setbox\tw@\hbox{\unbracefonts@$\m@th\fam\thefam@\relax#2\theskewchar@$}% + \setbox4=\hbox{$\m@th\ifnum\skewcharcount@=\m@ne\else + \mathchar\skewcharcount@\fi$}% + \global\accentdimen@\wd\tw@\global\advance\accentdimen@-\wdz@ + \global\advance\accentdimen@-\wd4 + \global\multiply\accentdimen@\tw@ + \dimentomu@\global\advance\accentmu@\@ne + \else\DN@{{\mathaccent#1{#2\mkern\accentmu@ mu}% + \mkern-\accentmu@ mu}{}}\fi + \next@} +\Makeacc@\Hat{05E} +\Makeacc@\Check{014} +\Makeacc@\Tilde{07E} +\Makeacc@\Acute{013} +\Makeacc@\Grave{012} +\Makeacc@\Dot{05F} +\Makeacc@\Ddot{07F} +\Makeacc@\Breve{015} +\Makeacc@\Bar{016} +\def\Vec{\RIfM@\DN@{\mathaccent@{"017E }}\else + \DN@{\nonmatherr@\Vec}\fi\next@} +\def\sqrt#1{\radical"270370 {#1}} +\let\underline@\underline +\let\overline@\overline +\def\underline#1{\underline@{#1}} +\def\overline#1{\overline@{#1}} +\Invalid@\leftroot +\Invalid@\uproot +\newcount\uproot@ +\newcount\leftroot@ +\def\plainroot@#1\of#2{\setbox\rootbox\hbox{$\m@th\scriptscriptstyle{#1}$}% + \mathchoice{\r@@t\displaystyle{#2}}{\r@@t\textstyle{#2}} + {\r@@t\scriptstyle{#2}}{\r@@t\scriptscriptstyle{#2}}\egroup} +\def\r@@t#1#2{\setboxz@h{$\m@th#1\sqrt{#2}$}% + \dimen@\ht\z@\advance\dimen@-\dp\z@ + \setbox\tw@\hbox{$\m@th#1\mskip\uproot@ mu$}\advance\dimen@ by1.667\wd\tw@ + \mkern-\leftroot@ mu\mkern5mu\raise.6\dimen@\copy\rootbox + \mkern-10mu\mkern\leftroot@ mu\boxz@} +\def\boxed#1{\setboxz@h{$\m@th\displaystyle{#1}$}\dimen@.4\ex@ + \advance\dimen@3\ex@\advance\dimen@\dp\z@ + \hbox{\lower\dimen@\hbox{% + \vbox{\hrule\height.4\ex@ + \hbox{\vrule\width.4\ex@\hskip3\ex@\vbox{\vskip3\ex@\boxz@\vskip3\ex@}% + \hskip3\ex@\vrule\width.4\ex@}\hrule\height.4\ex@}% + }}} +\newdimen\minaw@ +\minaw@11.11128\ex@ +\def\pmb{\RIfM@\expandafter\mathpalette\expandafter\pmb@\else + \expandafter\pmb@@\fi} +\def\pmb@@#1{\leavevmode\setboxz@h{#1}\kern-.025em\copy\z@\kern-\wdz@ + \kern-.05em\copy\z@\kern-\wdz@\kern-.025em\raise.0433em\boxz@} +\def\binrel@@#1{\ifdim\wd2<\z@\mathbin{#1}\else\ifdim\wd\tw@>\z@ + \mathrel{#1}\else{#1}\fi\fi} +\newdimen\pmbraise@ +\def\pmb@#1#2{\setbox4=\hbox{$\m@th#1{#2}$}% + \setbox6=\hbox{$\m@th#1\mkern.7794mu$}\pmbraise@\wd6 + \binrel@{#2}\binrel@@{\mkern-.45mu\copy4 \kern-\wd4 + \mkern-.9mu\copy4 \kern-\wd4 \mkern-.45mu\raise\pmbraise@\box4}} +%\loadmsam +%\loadmsbm +%\loadeufm +\let\proclaim\undefined +\Invalid@\= +\let\+\relax +\Invalid@\+ +\let\>\undefined +\let\cal\undefined +\let\mit\undefined +\let\oldstyle\undefined +\def\Err@#1{\errhelp\defaulthelp@\err@{#1}} +{\catcode`\@=\active + \edef\next{\gdef\noexpand@{\futurelet\noexpand\next + \csname at\string@\endcsname}} + \next +} +\def\at@{\ifcat\noexpand\next a\let\next@\at@@\else + \ifcat\noexpand\next0\let\next@\at@@\else + \ifcat\noexpand\next\relax\let\next@\at@@\else + \let\next@\at@@@\fi\fi\fi\next@} +\def\at@@@{\errhelp\athelp@\err@{Invalid use of @}} +\def\at@@#1{\expandafter + \ifx\csname\string#1@at\endcsname\relax\let\next@\at@@@\else + \DN@{\csname\string#1@at\endcsname}\fi\next@} +\let\lkerns@\relax +\def\nolinebreak{\RIfM@\mathmodeerr@\nolinebreak\else + \ifhmode\saveskip@\lastskip\unskip + \nobreak\ifdim\saveskip@>\z@\hskip\saveskip@\fi\lkerns@ + \else\vmodeerr@\nolinebreak\fi\fi} +\def\allowlinebreak{\RIfM@\mathmodeerr@\allowlinebreak\else + \ifhmode\saveskip@\lastskip\unskip + \allowbreak\ifdim\saveskip@>\z@\hskip\saveskip@\fi\lkerns@ + \else\vmodeerr@\allowlinebreak\fi\fi} +\def\linebreak{\RIfM@\mathmodeerr@\linebreak\else + \ifhmode\unskip\unkern\break\lkerns@ + \else\vmodeerr@\linebreak\fi\fi} +\let\nkerns@\relax +\def\newline{\RIfM@\mathmodeerr@\newline\else + \ifhmode\unskip\unkern\null\hfill\break\nkerns@ + \else\vmodeerr@\newline\fi\fi}% +\def\newbox@{\alloc@@4\box\chardef\insc@unt} +\def\accentedsymbol#1#2{\expandafter\newbox@\csname\exstring@#1@box\endcsname + \setbox\csname\exstring@#1@box\endcsname\hbox{$\m@th#2$}% + \define#1{\copy\csname\exstring@#1@box\endcsname{}}} +\def\loop#1\repeat{\def\iterate{#1\relax\expandafter\iterate\fi}% + \iterate\let\iterate\relax} +\def\gloop@#1\repeat{\gdef\body{#1}\iterate} +\def\tdots@{\unskip + \DN@{$\m@th\mathinner{\ldotp\ldotp\ldotp}\, + \ifx\next,\,$\else\ifx\next.\,$\else\ifx\next;\,$\else\ifx\next:\,$\else + \ifx\next?\,$\else\ifx\next!\,$\else$ \fi\fi\fi\fi\fi\fi}% + \ \FN@\next@} +\def\extrap@#1{% + \ifx\next,\DN@{#1\,}\else + \ifx\next;\DN@{#1\,}\else + \ifx\next.\DN@{#1\,}\else\extra@ + \ifextra@\DN@{#1\,}\else + \let\next@#1\fi\fi\fi\fi\next@} +\def\dotsc{\DN@{\ifx\next;\plainldots@\,\else + \ifx\next.\plainldots@\,\else\extra@\plainldots@ + \ifextra@\,\fi\fi\fi}% + \FN@\next@} +\def\keybin@{\keybin@true + \ifx\next+\else\ifx\next=\else\ifx\next<\else\ifx\next>\else\ifx\next-\else + \ifx\next*\else\ifx\next:\else\keybin@false\fi\fi\fi\fi\fi\fi\fi} +\font\tensmc=cmcsc10 +\textonlyfont@\smc\tensmc +\def\boldkey#1{\ifcat\noexpand#1A% + \ifcmmibloaded@{\fam\cmmibfam#1}\else + \Err@{First bold symbol font not loaded}\fi + \else + \ifx#1!\mathchar"5\bffam@21 \else + \ifx#1(\mathchar"4\bffam@28 \else\ifx#1)\mathchar"5\bffam@29 \else + \ifx#1+\mathchar"2\bffam@2B \else\ifx#1:\mathchar"3\bffam@3A \else + \ifx#1;\mathchar"6\bffam@3B \else\ifx#1=\mathchar"3\bffam@3D \else + \ifx#1?\mathchar"5\bffam@3F \else\ifx#1[\mathchar"4\bffam@5B \else + \ifx#1]\mathchar"5\bffam@5D \else + \ifx#1,\mathchari@63B \else + \ifx#1-\mathcharii@200 \else + \ifx#1.\mathchari@03A \else + \ifx#1/\mathchari@03D \else + \ifx#1<\mathchari@33C \else + \ifx#1>\mathchari@33E \else + \ifx#1*\mathcharii@203 \else + \ifx#1|\mathcharii@06A \else + \ifx#10\bold0\else\ifx#11\bold1\else\ifx#12\bold2\else\ifx#13\bold3\else + \ifx#14\bold4\else\ifx#15\bold5\else\ifx#16\bold6\else\ifx#17\bold7\else + \ifx#18\bold8\else\ifx#19\bold9\else + \Err@{\string\boldkey\space can't be used with #1}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\root{% + \DN@{\ifx\next\uproot\let\next@\nextii@\else + \ifx\next\leftroot\let\next@\nextiii@\else + \let\next@\plainroot@\fi\fi\next@}% + \DNii@\uproot##1{\uproot@##1\relax\FNSS@\nextiv@}% + \def\nextiv@{\ifx\next\leftroot\let\next@\nextv@\else + \let\next@\plainroot@\fi\next@}% + \def\nextv@\leftroot##1{\leftroot@##1\relax\plainroot@}% + \def\nextiii@\leftroot##1{\leftroot@##1\relax\FNSS@\nextvi@}% + \def\nextvi@{\ifx\next\uproot\let\next@\nextvii@\else + \let\next@\plainroot@\fi\next@}% + \def\nextvii@\uproot##1{\uproot@##1\relax\plainroot@}% + \bgroup\uproot@\z@\leftroot@\z@ + \FNSS@\next@} +\def\arabic#1{#1} +\def\alph#1{\count@#1\relax\advance\count@96 \ifnum\count@>122 + \Err@{\string\alph\space can't be used for numbers > 26}\else\char\count@\fi} +\def\Alph#1{\count@#1\relax\advance\count@64 \ifnum\count@>90 + \Err@{\string\Alph\space can't be used for numbers > 26}\else\char\count@\fi} +\def\roman#1{\romannumeral#1\relax} +\def\Roman#1{\uppercase\expandafter{\romannumeral#1}} +\def\fnsymbol#1{\count@#1\relax + \count@@\count@ + \advance\count@\m@ne\divide\count@7 + \count@@@\count@\advance\count@@@\@ne + \multiply\count@7 \advance\count@@-\count@ + \count@\count@@@ + {\loop + \ifcase\count@@\or*\or\dag\or\ddag\or\P\or\S\or\text{$\|$}\or\#\fi + \advance\count@\m@ne\ifnum\count@>\z@\repeat}} +\def\cardnine@#1{\ifcase#1\or one\or two\or three\or four\or five\or + six\or seven\or eight\or nine\fi} +\newcount\ten@ +\ten@10 +\def\cardinal#1{\count@#1\relax + \ifnum\count@>99 \number\count@ + \else + \ifnum\count@=\z@ zero% + \else + \ifnum\count@<\ten@\cardnine@\count@ + \else + \ifnum\count@<20 + \advance\count@-\ten@ + \ifcase\count@ ten\or eleven\or twelve\or thirteen\or fourteen\or + fifteen\or sixteen\or seventeen\or eighteen\or nineteen\fi + \else + \count@@\count@\count@@@\count@@ + \divide\count@\ten@\multiply\count@\ten@ + \advance\count@@@-\count@\divide\count@\ten@ + \ifcase\count@\or\or twenty\or thirty\or forty\or fifty\or sixty\or + seventy\or eighty\or ninety\fi + \ifnum\count@@@=\z@\else-\cardnine@\count@@@\fi + \fi + \fi + \fi + \fi} +\def\ordnine@#1{\ifcase#1\or first\or second\or third\or fourth\or fifth\or + sixth\or seventh\or eighth\or ninth\fi} +\newcount\count@@@@ +\def\ordsuffix@{\count@@@@\count@ + \divide\count@\ten@ + \count@@@\count@\count@@\count@ + \divide\count@@\ten@\multiply\count@@\ten@ + \advance\count@@@-\count@@ + \ifnum\count@@@=\@ne th% + \else + \count@@@\count@@@@ + \count@@\count@@@@ + \divide\count@@\ten@\multiply\count@@\ten@ + \advance\count@@@-\count@@ + \ifcase\count@@@ th\or st\or nd\or rd\else th\fi + \fi} +\def\nordinal#1{\count@#1\relax\number\count@\ordsuffix@} +\def\spordinal#1{\count@#1\relax\number\count@$^{\text{\ordsuffix@}}$} +\def\ordinal#1{\count@#1\relax + \ifnum\count@>99 \number\count@\ordsuffix@ + \else + \ifnum\count@=\z@ zeroth% + \else + \ifnum\count@<\ten@\ordnine@\count@ + \else + \ifnum\count@<20 \advance\count@-\ten@ + \ifcase\count@ tenth\or eleventh\or twelfth\or thirteenth\or + fourteenth\or fifteenth\or sixteenth\or seventeenth\or eighteenth\or + nineteenth\fi + \else + \count@@\count@ + \divide\count@\ten@\multiply\count@\ten@ + \count@@@\count@@\advance\count@@@-\count@ + \divide\count@\ten@ + \ifcase\count@\or\or twent\or thirt\or fort\or fift\or sixt\or sevent\or + eight\or ninet\fi + \ifnum\count@@@=\z@ ieth\else y-\ordnine@\count@@@\fi + \fi + \fi + \fi + \fi} +\font\tensmc=cmcsc10 +\textonlyfont@\smc\tensmc +\newtoks\noexpandtoks@ +\noexpandtoks@{\let\arabic\relax\let\alph\relax\let\Alph\relax + \let\roman\relax\let\Roman\relax\let\fnsymbol\relax\let\rm\relax + \let\it\relax\let\bf\relax\let\sl\relax\let\smc\relax + \let\/\relax\let\null\relax} +\def\noexpands@{\the\noexpandtoks@} +\def\Nonexpanding#1{\global\noexpandtoks@ + \expandafter{\the\noexpandtoks@\let#1\relax}} +\Invalid@\label +\Invalid@\pagelabel +\newread\laxread@ +\def\Finit@#1#2\Finit@{\let\nextii@#1\def\nextiii@{#2}} +\catcode`\~=11 +\def\getparts@ @#1~#2~#3~#4~#5~#6{\def\nextiv@{#1}% + \def\nextiii@{#2~#3~#4~#5~}\count@#6\relax} +\newif\ifreferr@ +\referr@true +\def\RefErrors{\global\referr@true} +\def\RefWarnings{\global\referr@false} +\setbox\z@\hbox{\global\count@=`^^30} +\ifnum\count@=48 \let\versionthree@\relax\fi +\def\nolabel@#1#2#3{\expandafter\ifx\csname#2@L\endcsname\relax + \ifreferr@\Err@{No \noexpand\label found for #2}\else + \W@{Warning: No \noexpand\label found for #2.}% + \ifx\versionthree@\relax\W@{l.\number\inputlineno\space ... \string#1{#2}}\fi + \fi#3\else} +\def\csL@#1{{\noexpands@\xdef\Next@{\csname#1@L\endcsname}}} +\define\ref#1{\nolabel@\ref{#1}\relax + \DNii@##1~##2\nextii@{##1}% + \csL@{#1}\expandafter\nextii@\Next@\nextii@\fi} +\define\Ref#1{\nolabel@\Ref{#1}\relax + \DNii@##1~##2~##3\nextii@{##2}% + \csL@{#1}\expandafter\nextii@\Next@\nextii@\fi} +\define\nref#1{\nolabel@\nref{#1}\relax + \DNii@##1~##2~##3~##4\nextii@{##3}% + \csL@{#1}\expandafter\nextii@\Next@\nextii@\fi} +\define\pref#1{\nolabel@\pref{#1}\relax + \DNii@##1~##2~##3~##4~##5\nextii@{##4}% + \csL@{#1}\expandafter\nextii@\Next@\nextii@\fi} +\def\Evaluatenref#1{\nolabel@\Evaluatenref{#1}{\gdef\Nref{-10000 }}% + \DNii@##1~##2~##3~##4\nextii@{\DNii@{##3}}% + \csL@{#1}\expandafter\nextii@\Next@\nextii@ + \xdef\Nref{\nextii@}\fi} +\def\Evaluatepref#1{\nolabel@\Evaluatepref{#1}{\global\let\Pref\empty}% + \DNii@##1~##2~##3~##4~##5\nextii@{\DNii@{##4}}% + \csL@{#1}\expandafter\nextii@\Next@\nextii@ + \xdef\Pref{\nextii@}\fi} +\def\readlax#1{\immediate\openin\laxread@=#1.lax\relax + \ifeof\laxread@\W@{}\W@{File #1.lax not found.}\W@{}\fi + {\endlinechar\m@ne\noexpands@\catcode`\@=11 \catcode`\~=11 + \loop\ifeof\laxread@\else + \read\laxread@ to\nextv@ + \ifx\nextv@\empty + \else + \expandafter\Finit@\nextv@\Finit@ + \ifx\nextii@ F% + \else + \expandafter\getparts@\nextv@ + \expandafter\ifx\csname\nextiv@ @L\endcsname\relax + \edef\next@{\gdef\csname\nextiv@ @L\endcsname + {\nextiii@\ifnum\count@=\@ne0\else2\fi}}% + \next@ + \else + \Err@{Label \nextiv@\space in #1.lax already used}% + \fi + \fi + \fi + \repeat}% + \immediate\closein\laxread@} +\catcode`\~=\active +\def\tbldocstyle#1{\input #1.stt\relax} +\newwrite\writedata@ +\newif\ifshow@ +\pageno\z@ +\def\document{\immediate\openout\writedata@=\jobname.dat + \global\font\t@nrm=cmr10 + \global\topskip\z@ + \global\output{\ifshow@\else\advancepageno\fi + \shipout\vbox{\vbox to\vsize{\unvbox255 }% + \baselineskip2pc + \ifshow@ + \line{\hfil\t@nrm File [\jobname], Subtable \number\count@@\hfil}% + \else + \line{\hfil\t@nrm File [\jobname], \#\number\pageno\hfil}\fi}% + }} +\def\bye{\par\vfill\supereject\end} +\let\enddocument\bye +\def\exstring@{\expandafter\eat@\string} +\def\unpurge#1{\input #1\relax} +\def\purge#1{\input #1.tox\relax} +\def\East#1#2{\setboxz@h{$\m@th\ssize\;{#1}\;\;$}% + \setbox\tw@\hbox{$\m@th\ssize\;{#2}\;\;$}\setbox4=\hbox{$\m@th#2$}% + \dimen@\minaw@ + \ifdim\wdz@>\dimen@\dimen@\wdz@\fi\ifdim\wd\tw@>\dimen@\dimen@\wd\tw@\fi + \ifdim\wd4 >\z@ + \mathrel{\mathop{\hbox to\dimen@{\rightarrowfill}}\limits^{#1}_{#2}}% + \else + \mathrel{\mathop{\hbox to\dimen@{\rightarrowfill}}\limits^{#1}}% + \fi} +\def\West#1#2{\setboxz@h{$\m@th\ssize\;\;{#1}\;$}% + \setbox\tw@\hbox{$\m@th\ssize\;\;{#2}\;$}\setbox4=\hbox{$\m@th#2$}% + \dimen@\minaw@ + \ifdim\wdz@>\dimen@\dimen@\wdz@\fi\ifdim\wd\tw@>\dimen@\dimen@\wd\tw@\fi + \ifdim\wd4 >\z@ + \mathrel{\mathop{\hbox to\dimen@{\leftarrowfill}}\limits^{#1}_{#2}}% + \else + \mathrel{\mathop{\hbox to\dimen@{\leftarrowfill}}\limits^{#1}}% + \fi} +\Invalid@\paste +\newtoks\ET@ +\def\everytable#1{\ET@{#1}} +\def\VTW@{.4\p@} +\def\vtablelines(#1){\def\VTW@{#1}} +\def\HTW@{.4\p@} +\def\htablelines(#1){\def\HTW@{#1}} +\def\Ls@{\z@} +\def\Rs@{\z@} +\def\sides{\def\Ls@{\VTW@}\def\Rs@{\VTW@}} +\def\Sides(#1#2;#3#4){\if#1*\def\Ls@{\VTW@}\else\def\Ls@{#1#2}\fi + \if#3*\def\Rs@{\VTW@}\else\def\Rs@{#3#4}\fi} +\newif\ifTW@ +\newif\ifTWG@ +\newif\ifTWL@ +\def\tablewidth(#1#2){\TW@true\TWG@false\TWL@false\if#1+\TWG@true + \def\TW@{#2}\else\if#1-\TWL@true\def\TW@{#2}\else\def\TW@{#1#2}\fi\fi} +\newbox\LBX@ +\newbox\RBX@ +\def\table{\the\ET@\edef\PRF@{\the\font}\MS@\MNBL@\edef\TF@{\the\font}% + \begingroup\catcode`\&\active\catcode`\"\active\catcode`\|\active + \expandafter\let\csname +\endcsname\relax\csname table \endcsname} +\def\MNBL@{\xdef\NBL@{\lineskip\the\lineskip\baselineskip\the\baselineskip + \lineskiplimit\the\lineskiplimit}} +\expandafter\newbox\csname table0\endcsname +\expandafter\newbox\csname table1\endcsname +\expandafter\newbox\csname table2\endcsname +\expandafter\newbox\csname table3\endcsname +\expandafter\newbox\csname table4\endcsname +\expandafter\newbox\csname table5\endcsname +\expandafter\newbox\csname table6\endcsname +\expandafter\newbox\csname table7\endcsname +\expandafter\newbox\csname table8\endcsname +\expandafter\newbox\csname table9\endcsname +\newif\ifstoring@ +\def\storetable#1{\storing@true\count@#1\relax + \edef\thetable@{\number\count@}\table} +\def\usetable#1{\count@#1\relax\copy\csname table\number\count@\endcsname} +\def\showstored#1{% + \ifvoid\csname table#1\endcsname + \Err@{No table stored in location #1}% + \else + \count@@=#1\relax\DN@{\csname table#1\endcsname}% + \dimen@\ht\next@ \advance\dimen@\dp\next@ + \ifdim\dimen@>\vsize\Err@{Subtable bigger than \string\vsize: height + \the\ht\next@, depth \the\dp\next@}\fi + \count@\pageno \pageno\z@ + \hrule\height\z@\vskip\vsize\noindent\smash{\copy\next@}% + \show@true\eject \pageno\count@ \show@false + \fi} +\def\cleartable#1{\count@#1\relax + \global\setbox\csname table\number\count@\endcsname\box\voidb@x} +\newdimen\FSH +\newdimen\FSD +\newdimen\HT@ +\newdimen\DP@ +\newdimen\EH@ +\newdimen\ED@ +\EH@\z@ +\ED@\z@ +\newif\ifHD@ +\newif\ifEH@ +\newif\ifED@ +\def\HD(#1#2;#3#4){\HD@true + \if#1+\EH@#2\relax\EH@true\else\EH@#1#2\relax\EH@false\fi + \if#3+\ED@#4\relax\ED@true\else\ED@#3#4\relax\ED@false\fi} +\def\MS@{{\setboxz@h{\count@\z@\loop\char\count@\ifnum\count@<127 + \advance\count@\@ne\repeat}% + \global\HT@\ht\z@\global\DP@\dp\z@ + \ifHD@ + \ifEH@\dimen@\HT@\advance\dimen@\EH@\else\dimen@\EH@\fi + \ifED@\dimen@ii\DP@\advance\dimen@ii\ED@\else\dimen@ii\ED@\fi + \else + \dimen@\HT@\dimen@ii\DP@ + \fi + \global\FSH\dimen@ \global\FSD\dimen@ii + \xdef\FS@{\leavevmode\vrule\height\the\dimen@\depth\the\dimen@ii\width\z@}% + \xdef\FS@@{\leavevmode\vrule\height\the\ht\z@\depth\the\dp\z@\width\z@}% + \global\let\FS\FS@}} +\def\showstrutdims{\MS@ + \immediate\write\sixt@@n{Strut height = \the\HT@; strut depth = \the\DP@}} +\newif\ifLG@ +\newcount\CN@ +\newcount\CT@ +\newcount\SCT@ +\newif\ifFS@ +\def\LGL@{} +\def\RGL@{} +\def\LSL@{} +\def\RSL@{} +\let\T@B=& +\newcount\DCC@ +\newcount\DLC@ +\newif\ifNS@ +\newif\ifAD@ +\def\alldq{\AD@true} +\newskip\FT@ +\newskip\LT@ +\def\tss{\Err@{\string\tss\space doesn't follow a \string\table}} +\def\sss{\Err@{\string\sss\space doesn't follow a \string\tss...\string\\}} +{ +\catcode`\&\active \catcode`\|\active \catcode`\"\active +\gdef\pretss@#1{{\let&0\let|0\let\rt0\let\s0\let\g0\let\|0% + \let\p0\let\P0\let\d0\let\$0% + \let\next@0% + \def\l{\l@\next@}\def\c{\c@\next@}\def\r{\r@\next@}% + \def\L{\L@}\def\C{\C@}\def\R{\R@}% + \let\lmath@0\let\cmath@0\let\rmath@0\let\lMath@0\let\cMath@0\let\rMath@0% + \def\lmath{\lmath@\next@}\def\cmath{\cmath@\next@}\def\rmath{\rmath@\next@}% + \def\lMath{\lMath@\next@}\def\cMath{\cMath@\next@}\def\rMath{\rMath@\next@}% + \def~{\s1\ignorespaces}% + \let\LP@0\let\CP@0\let\RP@0% + \let\lP@0\let\cP@0\let\rP@0% + \ifAD@ + \def\l@{\lP@\next@}\def\c@{\cP@\next@}\def\r@{\rP@\next@}% + \def\L@{\LP@}\def\C@{\CP@}\def\R@{\RP@}\def"{}% + \def\"##1{\ifx##1\l\noexpand\l@\next@\else\ifx##1\c\noexpand\c@\next@\else + \ifx##1\r\noexpand\r@\next@\else\ifx##1\L\noexpand\L@\else + \ifx##1\C\noexpand\C@\else\ifx##1\R\noexpand\R@\else##1\fi\fi\fi\fi\fi\fi}% + \else + \let\l@0\let\c@0\let\r@0\let\L@0\let\C@0\let\R@0\def\"{}% + \def"##1{\ifx##1\l\lP@\next@\else\ifx##1\c\cP@\next@\else + \ifx##1\r\rP@\next@\else\ifx##1\L\LP@\else\ifx##1\C\CP@\else\ifx##1\R\RP@ + \else##1\fi\fi\fi\fi\fi\fi}% + \fi + \xdef\PPR@{#1}}} +\expandafter\gdef\csname table \endcsname#1\tss#2\\{\pretss@{#2}% + {\let&0\let|0\let\rt0\let\s0\let\g0\let\|0% + \let\p0\let\P0\let\d0\let\$0% + \let\next@0% + \let\l@0\let\c@0\let\r@0% + \let\L@0\let\C@0\let\R@0% + \let\lmath@0\let\cmath@0\let\rmath@0\let\lMath@0\let\cMath@0\let\rMath@0% + \let\LP@0\let\CP@0\let\RP@0% + \let\lP@0\let\cP@0\let\rP@0% + \gdef\PR@{}% + \expandafter\SC@\PPR@\rt Z% + }% + \gdef\SS@{B}\gdef\LS@{B}\catcode`\"12 + \FN@\dt@} +\gdef\SC@#1\rt{\xdef\PR@{\PR@#1}\FN@\SC@@} +\gdef\SC@@{\ifx\next Z\DNii@ Z{}\else\let\nextii@\SC@@@\fi\nextii@} +\gdef\SC@@@#1#2{\count@#1\relax\loop\ifnum\count@>\z@ + \xdef\PR@{\PR@#2}\advance\count@\m@ne\repeat\SC@} +\catcode`\"12 +\gdef\dt@{\ifx\next\space@\DN@. {\FN@\dt@@}\else + \DN@.{\FN@\dt@@}\fi\next@.} +\gdef\dt@@{\NS@true\ifx\next\sss\expandafter\dt@@@\else + \expandafter\dt@@@@\fi} +\gdef\dt@@@\sss#1\\{% + {\let\t0\let\m0\let\b0% + \if Z#1Z% + \else + \def\t{\global\NS@false\gdef\LS@{T}}% + \def\m{\global\NS@false\gdef\LS@{M}}% + \def\b{\gdef\LS@{B}}% + \setboxz@h{#1}% + \def\t{T}\def\m{M}\def\b{B}\xdef\SS@{#1}% + \fi}% + \dt@@@@} +\gdef\dt@@@@{% + {\DN@{}% + \let\l@\LG@false\let\c@\LG@false\let\r@\LG@false + \let\lP@\LG@false\let\cP@\LG@false\let\rP@\LG@false + \let\lmath@\LG@false\let\cmath@\LG@false\let\rmath@\LG@false + \let\lMath@\LG@false\let\cMath@\LG@false\let\rMath@\LG@false + \def\L@##1{\LG@false}\def\C@##1{\LG@false}\def\R@##1{\LG@false}% + \def\LP@##1{\LG@false}\def\CP@##1{\LG@false}\def\RP@##1{\LG@false}% + \def\p(##1){\LG@false}\def\P(##1)##2{\LG@false}% + \def\d##1{\LG@false}\def\$##1{\LG@false}% + \def&{\LG@true\FS@false\global\LT@\z@\global\advance\CN@\@ne}% + \def\|(##1){\LG@true\FS@false\global\LT@\z@\global\advance\CN@\@ne}% + \def\g(##1){\dimen@##1\relax + \ifLG@\xdef\LGL@{\LGL@ Z\the\CN@"\the\dimen@}\else + \xdef\RGL@{\RGL@ Z\the\CN@"\the\dimen@}\fi}% + \def\s##1{% + \ifLG@ + \ifFS@\global\FT@\z@ plus##1fil minus##1fil\FS@false\fi + \xdef\LSL@{\LSL@ Z\the\CN@"##1}% + \else + \global\LT@\z@ plus##1fil minus##1fil + \xdef\RSL@{\RSL@ Z\the\CN@"##1}% + \fi + \global\advance\SCT@##1\relax}% + \CN@\@ne\LG@true\FS@true\SCT@\z@\FT@\z@\relax\LT@\z@\relax + \setboxz@h{\PR@}% + \global\CT@\CN@ + \def\l@{\LB@{\the\hashtoks@}}\def\c@{\CB@{\the\hashtoks@}}% + \def\r@{\RB@{\the\hashtoks@}}% + \def\lP@{\LBP@{\the\hashtoks@}}\def\cP@{\CBP@{\the\hashtoks@}}% + \def\rP@{\RBP@{\the\hashtoks@}}% + \let\lmath@\l@\let\cmath@\c@\let\rmath@\r@ + \let\lMath@\l@\let\cMath@\c@\let\rMath@\r@ + \def\L@##1{\l@}\def\C@##1{\c@}\def\R@##1{\r@}% + \def\LP@##1{\l@}\def\CP@##1{\c@}\def\RP@##1{\r@}% + \def\p(##1){\PB@{##1}{\the\hashtoks@}}% + \def\P(##1)##2{\PB@{##1}{\the\hashtoks@}}% + \def\d##1{\DB@{\the\hashtoks@}}\def\$##1{\DL@{\the\hashtoks@}}% + \def&{\T@B\csname table \space\space\space\endcsname\the\hashtoks@\T@B}% + \def\|(##1){\T@B\VR@@{##1}\the\hashtoks@\T@B}% + \let\LB@0\let\CB@0\let\RB@0% + \let\LBP@0\let\CBP@0\let\RBP@0% + \let\PB@0% + \let\DB@0\let\DL@0% + \expandafter\let\csname table \space\space\space\endcsname0% + \let\VR@@0% + \let\g0\let\s0% + \xdef\pR@@{\PR@}% + \def\lmath@{\MLB@{\the\hashtoks@}\ignorespaces}% + \def\cmath@{\MCB@{\the\hashtoks@}\ignorespaces}% + \def\rmath@{\MRB@{\the\hashtoks@}\ignorespaces}% + \def\lMath@{\CMLB@{\the\hashtoks@}\ignorespaces}% + \def\cMath@{\CMCB@{\the\hashtoks@}\ignorespaces}% + \def\rMath@{\CMRB@{\the\hashtoks@}\ignorespaces}% + \def\L@##1{\CLB@{##1}{\the\hashtoks@}\ignorespaces}% + \def\C@##1{\CCB@{##1}{\the\hashtoks@}\ignorespaces}% + \def\R@##1{\CRB@{##1}{\the\hashtoks@}\ignorespaces}% + \def\LP@##1{\CLBP@{##1}{\the\hashtoks@}\ignorespaces}% + \def\CP@##1{\CCBP@{##1}{\the\hashtoks@}\ignorespaces}% + \def\RP@##1{\CRBP@{##1}{\the\hashtoks@}\ignorespaces}% + \def\p(##1){\PB@{##1}{\the\hashtoks@}}% + \def\P(##1)##2{\CPB@{##1}{##2}{\the\hashtoks@}}% + \def\d##1{\DBB@{##1}{\the\hashtoks@}}% + \def\$##1{\DLL@{##1}{\the\hashtoks@}}% + \def&{\T@B\csname table \space\space\space\endcsname\the\hashtoks@\T@B}% + \def\|(##1){\T@B\VR@@{##1}\the\hashtoks@\T@B}% + \let\LB@0\let\CB@0\let\RB@0% + \let\PB@0\let\CPB@0% + \let\DBB@0% + \let\DLL@0% + \let\CLB@0\let\CCB@0\let\CRB@0% + \let\CLBP@0\let\CCBP@0\let\CRBP@0% + \let\MLB@0\let\MCB@0\let\MRB@0% + \let\CMLB@0\let\CMCB@0\let\CMRB@0% + \expandafter\let\csname table \space\space\space\endcsname0% + \let\VR@@0% + \let\g0\let\s0% + \xdef\PR@@{\PR@}% + \def&##1##2{% + \ifx##1\s + \T@B\tabskip\z@\noexpand\relax + \csname table \space\space\space\endcsname\the\hashtoks@ + \tabskip\z@ plus##2fil minus##2fil\T@B + \else + \T@B\tabskip\z@\noexpand\relax + \csname table \space\space\space\endcsname\the\hashtoks@\T@B + \ifx##1\L@\L@{##2}\else\ifx##1\C@\C@{##2}\else\ifx##1\R@\R@{##2}\else + \ifx##1\LP@\LP@{##2}\else\ifx##1\CP@\CP@{##2}\else\ifx##1\RP@\RP@{##2}\else + \ifx##1\p\p{##2}\else\ifx##1\P\P{##2}\else\ifx##1\d\d{##2}\else + \ifx##1\$\${##2}\else##1##2\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}% + \def\s##1{\tabskip\z@ plus##1fil minus##1fil\noexpand\relax\noexpand + \ignorespaces}% + \xdef\PR@@@{\PR@\empty}% + }% + \def\g(##1){\hskip##1\relax\ignorespaces}% + \catcode`\&=4 \MC@\DV@\VT@} +} +\expandafter\newdimen\csname c-1l\endcsname +\expandafter\newdimen\csname c-2l\endcsname +\expandafter\newdimen\csname c-3l\endcsname +\expandafter\newdimen\csname c-4l\endcsname +\expandafter\newdimen\csname c-5l\endcsname +\expandafter\newdimen\csname c-6l\endcsname +\expandafter\newdimen\csname c-7l\endcsname +\expandafter\newdimen\csname c-8l\endcsname +\expandafter\newdimen\csname c-9l\endcsname +\expandafter\newdimen\csname c-10l\endcsname +\expandafter\newdimen\csname c-11l\endcsname +\expandafter\newdimen\csname c-12l\endcsname +\expandafter\newdimen\csname c-13l\endcsname +\expandafter\newdimen\csname c-14l\endcsname +\expandafter\newdimen\csname c-15l\endcsname +\expandafter\newdimen\csname c-16l\endcsname +\expandafter\newdimen\csname c-17l\endcsname +\expandafter\newdimen\csname c-18l\endcsname +\expandafter\newdimen\csname c-19l\endcsname +\expandafter\newdimen\csname c-20l\endcsname +\expandafter\newdimen\csname c-1c\endcsname +\expandafter\newdimen\csname c-2c\endcsname +\expandafter\newdimen\csname c-3c\endcsname +\expandafter\newdimen\csname c-4c\endcsname +\expandafter\newdimen\csname c-5c\endcsname +\expandafter\newdimen\csname c-6c\endcsname +\expandafter\newdimen\csname c-7c\endcsname +\expandafter\newdimen\csname c-8c\endcsname +\expandafter\newdimen\csname c-9c\endcsname +\expandafter\newdimen\csname c-10c\endcsname +\expandafter\newdimen\csname c-11c\endcsname +\expandafter\newdimen\csname c-12c\endcsname +\expandafter\newdimen\csname c-13c\endcsname +\expandafter\newdimen\csname c-14c\endcsname +\expandafter\newdimen\csname c-15c\endcsname +\expandafter\newdimen\csname c-16c\endcsname +\expandafter\newdimen\csname c-17c\endcsname +\expandafter\newdimen\csname c-18c\endcsname +\expandafter\newdimen\csname c-19c\endcsname +\expandafter\newdimen\csname c-20c\endcsname +\expandafter\newdimen\csname c-1r\endcsname +\expandafter\newdimen\csname c-2r\endcsname +\expandafter\newdimen\csname c-3r\endcsname +\expandafter\newdimen\csname c-4r\endcsname +\expandafter\newdimen\csname c-5r\endcsname +\expandafter\newdimen\csname c-6r\endcsname +\expandafter\newdimen\csname c-7r\endcsname +\expandafter\newdimen\csname c-8r\endcsname +\expandafter\newdimen\csname c-9r\endcsname +\expandafter\newdimen\csname c-10r\endcsname +\expandafter\newdimen\csname c-11r\endcsname +\expandafter\newdimen\csname c-12r\endcsname +\expandafter\newdimen\csname c-13r\endcsname +\expandafter\newdimen\csname c-14r\endcsname +\expandafter\newdimen\csname c-15r\endcsname +\expandafter\newdimen\csname c-16r\endcsname +\expandafter\newdimen\csname c-17r\endcsname +\expandafter\newdimen\csname c-18r\endcsname +\expandafter\newdimen\csname c-19r\endcsname +\expandafter\newdimen\csname c-20r\endcsname +\def\MC@{% + \ifnum\CT@>20 + \count@\@cclv \advance\count@-\count11 + \divide\count@\thr@@ \advance\count@20 + \ifnum\count@<\CT@ + \Err@{You can't have more than \number\count@\space columns}% + \else + \mscount\CT@ + \loop\ifnum\mscount>20 + \advance\count11by\@ne\ch@ck1\insc@unt\dimen\allocationnumber=\count11 + \expandafter\dimendef\csname c-\number\mscount l\endcsname + =\allocationnumber + \advance\count11by\@ne\ch@ck1\insc@unt\dimen\allocationnumber=\count11 + \expandafter\dimendef\csname c-\number\mscount c\endcsname + =\allocationnumber + \advance\count11by\@ne\ch@ck1\insc@unt\dimen\allocationnumber=\count11 + \expandafter\dimendef\csname c-\number\mscount r\endcsname + =\allocationnumber + \advance\mscount\m@ne\repeat + \fi + \fi} +{ +\catcode`\|\active +\gdef\DV@{\toks@{}\toks@@{}\mscount\CT@ + \loop\ifnum\mscount>\@ne + \toks@=\expandafter{\the\toks@|\omit}\toks@@=\expandafter{\the\toks@@|}% + \advance\mscount\m@ne\repeat + \xdef\VV@{\the\toks@}\xdef\VV@@{\the\toks@@}% + \mscount\CT@ + \loop\ifnum\mscount>\z@ + \global\csname c-\number\mscount l\endcsname\z@ + \global\csname c-\number\mscount c\endcsname\z@ + \global\csname c-\number\mscount r\endcsname\z@ + \advance\mscount\m@ne\repeat} +} +\Invalid@\endtable +\let\NX@\relax +\def\VT@{\begingroup\let\NX@\noexpand + \noexpand\catcode`\|\active\catcode`\&\active\csname table \space\endcsname} +\newif\ifNM@ +\newif\ifNY@ +\newif\ifNZ@ +\newif\ifSL@ +\def\@@@#1\@@#2#3\@@@{\ifx\@@@@#2\else\global\SL@true\fi} + +{\catcode`\@=\active \uccode`\Z=`\@ + \uppercase{\expandafter\gdef\csname ATZ\endcsname{\let@\relax}}} + +{ +\catcode`\&\active \catcode`\|\active +\expandafter\gdef\csname table \space\endcsname#1\endtable{% + \global\NM@true\global\NY@true\global\NZ@true\global\SL@false + \let\TF@0\let\\0\let\hd0% + \let\l0\let\c0\let\r0\let\+0\let\=0% + \let\ex@@0\let\exa@0\let\exb@0% + \let\hls@0\let\hl@0% + \let\hL@0\let\vs@0\let\body0\let\iterate0% + \def\cf##1{\cf@{##1}}\let\cf@0\let\fam0% + \let\usetable0\let\VTW@@0\let~0\AT@\let\PRX@0\let\PX@0% + \let\$0\let\(0\let\)0% + {\let\@@0\def\t{\@@}\def\m{\@@}\def\b{\@@}\def\yy{\@@}\def\vZ{\@@}% + \let\vs0\let\vz0\let\xx0\let\hlyy0\let\hLyy0% + \let\ex0\let\exa0\let\exb0\let\hl0\let\hls0\let\exs0\let\NS0\let\hL0% + \let&0\let|0\def\|{}% + \expandafter\xdef\csname table \space\space\endcsname{#1}% + \xdef\next@{#1}\expandafter\@@@\next@\@@\@@@@\@@@ + }% + \def\t{\global\NM@false\t@}\def\m{\global\NM@false\m@}% + \def\b{\global\NM@false\b@}% + \let\t@0\let\m@0\let\b@0\let\NM@false0% + \def\vs(##1){\noalign{\vs@{##1}}}% + \def\vz{\noalign{\vz@}}% + \def\vZ{\noalign{\global\NZ@false}\vZ@}\let\vZ@0\let\NZ@false0\let\vz@0% + \def\hd{\NX@\hd@}% + \def\xx{\noexpand\omit\global\X@true\xx@}\let\xx@0\let\X@true0% + \def\yy{\global\NY@false\yy@}\let\yy@0\let\NY@false0% + \def\hl{\noalign{\hrule\height\HTW@\hl@}}% + \def\hL(##1){\noalign{\hrule\height##1\hL@{##1}}}% + \def\hlyy{\noalign{\global\NY@false}\hlyy@}\let\hlyy@0% + \def\hLyy{\noalign{\global\NY@false}\hLyy@}\let\hLyy@0% + \def\hls##1\\{\hls@##1\cr\PX@}% + \def\ex(##1){\ex@@{##1}\omit\vrule\height##1\width\z@\VV@\\}% + \def\exs(##1)##2\\{\PRX@{##1}\omit\vrule\height##1\width\z@##2\cr\PX@}% + \def\exa{\noalign{\global\NY@false}\exa@}% + \def\exb{\noalign{\global\NY@false}\exb@}% + \def\NS##1\\{\NS@##1\cr\NS@@}\let\NS@0\let\NS@@0% + \def&{\T@B\omit\T@B}\def|{\T@B ZZZ\T@B}\def\|(##1){\T@B Y\VP@##1;;)\T@B}% + \expandafter\xdef\csname table \space\space\endcsname{#1\crcr\ex(\z@)}% + \xdef\VT@@@@{#1}% + \xdef\VT@@@@@{\VV@@}% + \endgroup\DT@} +} +\expandafter\def\csname table \space\space\space\endcsname#1#2#3{% + \if#1Z\hskip-\VTW@\vrule\width\VTW@\else + \let\VTW@@\VTW@\hskip-#2\vrule\width#2\vrule\width#3\hskip-#3\fi} +\def\VR@@#1#2#3#4{\if#2Z\hskip-#1\vrule\width#1\else + \def\VTW@@{#1}\hskip-#3\vrule\width#3\vrule\width#4\hskip-#4\fi} +\def\VP@#1#2){\if#1*\VP@@#1#2)\else\VP@@@#1#2)\fi} +\def\VP@@#1;#2#3){\if#2*{\VTW@@}{\VTW@@}\else\VP@@@@#2#3)\fi} +\def\VP@@@@#1;#2){\if Z#1Z{\VTW@@}{\z@}\else{\VTW@@}{#1}\fi} +\def\VP@@@#1;#2#3){\if#2*{#1}{\VTW@@}\else{#1}{\VP@@@@@#2#3)}\fi} +\def\VP@@@@@#1;#2){\if Z#1Z\z@\else#1\fi} +{ +\lccode`\7=`\p \lccode`\8=`\t +\lowercase{\gdef\FD@#1{\DN@##178##2\next@{\edef\FD@@{##1}\xdef#1{##2}}% + \expandafter\next@#1\next@}} +} +\newif\ifl@ +\newif\ifc@ +\newif\ifr@ +\newif\ift@ +\newif\ifm@ +\newif\ifb@ +\newif\ifX@ +\newif\ifY@ +\newif\ifE@ +\newif\ifH@ +\newcount\RN@ +\newif\ifR@ +\newdimen\EW@ +\def\HLS@{} +\def\DLS@{} +\newif\ifOP@ +\newif\ifS@ +\newif\ifNH@ +\newif\ifSP@ +\newif\ifSC@ +\def\showsecondpass{\SP@true} +\def\noshowsecondpass{\SP@false} +\def\showcolwidths{\SC@true} +\def\noshowcolwidths{\SC@false} +\newif\ifTMS@ +\newbox\tablebox@ +\def\IT@{"} +\newif\ifnote@ +\newif\iffnote@ +\def\DT@{\FN@\DT@@} +\Invalid@\note +\Invalid@\fnote +\def\DT@@{\global\note@false\global\fnote@false + \ifx\next\note\global\note@true\else\ifx\next\fnote\global\fnote@true\fi\fi + \DT@@@} +\def\DT@@@{{% + \let\RUH@\RH@\edef\SSC@{\SS@}% + \everycr{\noalign{\RUH@\GS@ + \if T\TSS@\global\TMS@true\else\if M\TSS@\global\TMS@true\else + \global\TMS@false\fi\fi + \ifE@\else\ifH@\else + \global\advance\RN@\@ne\fi\fi + \global\E@false\global\H@false + \global\CN@\@ne}}% + \S@true\NH@true + \let\CFG@\relax\let\LCFG@\relax\let\RCFG@\relax + \let\LFG@\relax\let\LLFG@\relax + \let\RFG@\relax\let\RRFG@\relax + \def\s##1{\ignorespaces}% + \let\CWD@\CWD@@\let\LWD@\LWD@@\let\RWD@\RWD@@ + \def\l{\global\l@true}% + \def\c{\hfill\global\c@true}% + \def\r{\hfill\global\r@true}% + \def\t@{\global\t@true}% + \def\m@{\global\m@true}% + \def\b@{\global\b@true}% + \RN@\z@\R@false + \ifTW@ + \ifTWG@\DN@{\halign spread\TW@}\else\ifTWL@ + \DN@{\halign spread-\TW@}\else\DN@{\halign to\TW@}\fi\fi + \else + \DN@{\halign}% + \fi + \global\setbox\@ne\vbox{\EW@\z@\offinterlineskip + \let\=\relax\let\\\cr\tabskip\z@\tabskip\FT@\next@ + {\span\PR@@@\tabskip\z@\tabskip\LT@\cr\csname table \space\space\endcsname + \crcr}}% + {\def\LB@##1{\LFG@@\global\advance\CN@\@ne}% + \def\CB@##1{\CFG@@\global\advance\CN@\@ne}% + \def\RB@##1{\RFG@@\global\advance\CN@\@ne}% + \def\PB@##1##2{\global\advance\CN@\@ne}% + \def\DB@##1{\RFG@@\global\advance\CN@\@ne}% + \def\DL@##1{\RFG@@\global\advance\CN@\@ne}% + \let\LBP@\LB@\let\CBP@\CB@\let\RBP@\RB@ + \setbox\z@\vbox{\EW@\z@\let\\\cr\halign{\span\pR@@\cr\VT@@@@@\cr}}% + }% + \dimen@\z@\setbox\z@\vbox{\unvcopy\@ne\unpenalty + \setbox\z@\lastbox\unskip\unpenalty\setbox\z@ + \hbox{\unhbox\z@\count@\CT@\multiply\count@\tw@\advance\count@\m@ne + \def\CWS@{.}\loop\unskip\setbox\z@\lastbox\ifSC@\ifnum\count@=\@ne + \xdef\CWS@{\the\wdz@\CWS@}\else + \ifodd\count@\xdef\CWS@{; \the\wdz@\CWS@}\fi\fi\fi + \global\advance\dimen@\wdz@\ifnum\count@>\z@ + \advance\count@\m@ne\repeat}}% + \ifSC@ + \immediate\write\sixt@@n{}% + {\lccode`\Z=`\#\lccode`\C=`\C + \count@\pageno\advance\count@\@ne + \lowercase{\message{Column widths of table Z\number\count@: \CWS@}}}% + \immediate\write\sixt@@n{}% + \fi + \xdef\IT@{\IT@"}% + \OP@false\ifNZ@\ifNS@\ifNM@\ifNY@\ifS@\ifNH@\OP@true\else + \ifTW@\else\OP@true\fi\fi\fi\fi\fi\fi\fi + \ifOP@ + \global\setbox\tablebox@\hbox{\boxz@\hbox to\Rs@{}\hbox to\Ls@{}}% + \else + \ifSP@\immediate\write\sixt@@n{Second pass for + Table \string"\TN@\string"}% + \fi + \setbox\@ne\null + \PRF@\edef\TF@{\the\font}\MS@\RN@\z@ + \ifTW@ + \ifnum\SCT@=\z@ + \Err@{You don't have any stretch in this table}\EW@\z@ + \else + \ifTWG@\EW@\TW@\else\ifTWL@\EW@-\TW@\else + \EW@\TW@\advance\EW@-\dimen@\fi\fi + \divide\EW@\SCT@ + \fi + \else + \EW@\z@ + \fi + \def\s##1{\hbox to##1\EW@{}\ignorespaces}% + \FD@\HLS@\FD@\DLS@ + \R@true\let\CFG@\CFG@@\let\LCFG@\LCFG@@\let\RCFG@\RCFG@@ + \let\LFG@\LFG@@\let\LLFG@\LLFG@@\let\RFG@\RFG@@\let\RRFG@\RRFG@@ + \let\CWD@\relax\let\LWD@\relax\let\RWD@\relax\let\RUH@\UH@ + \edef\SS@{\SSC@}% + \let\=\relax + \global\setbox\tablebox@\hbox{% + \vbox{\offinterlineskip\let\\\cr\halign{\tabskip\z@\span\PR@@\tabskip\z@\cr + \VT@@@@\crcr}}\hbox to\Rs@{}\hbox to\Ls@{}}% + \fi}% + \setboxz@h{\unhbox\tablebox@\global\setbox\LBX@\lastbox + \global\setbox\RBX@\lastbox}% + \dimen@\ht\z@ \dimen@ii\dp\z@ + \global\setbox\tablebox@\hbox{\vrule\height\dimen@\depth\dimen@ii + \width\wd\LBX@\hskip-\wd\LBX@ + \boxz@\hskip-\wd\RBX@\vrule\height\dimen@\depth\dimen@ii\width\wd\RBX@}% + \global\TW@false\global\AD@false + \gdef\TW@{\z@}\gdef\Ls@{\z@}\gdef\Rs@{\z@}\gdef\HLS@{}% + \gdef\DLS@{}\gdef\LGL@{}\gdef\RGL@{}\gdef\LSL@{}\gdef\RSL@{}% + \gdef\PR@{}\gdef\SS@{}\gdef\pR@@{}\gdef\PR@@{}\gdef\PR@@@{}\gdef\VV@{}% + \gdef\VV@@{}% + \expandafter\gdef\csname table \space\space\endcsname{}% + \gdef\VT@@@@{}\gdef\VT@@@@@{}% + \gdef\XHL@{}\gdef\XXL@{}\gdef\XXHL@{}\endgroup + \ifstoring@ + \DN@{\global\setbox\csname table\thetable@\endcsname\box\tablebox@ + \global\storing@false}% + \else + \ifnote@\let\next@\donote@\else\iffnote@\let\next@\dofnote@\else + \let\next@\writeit@\fi\fi + \fi\next@} +\newbox\notebox@ +\newbox\newnotebox@ +\newif\iffirstnote@ +\newif\iffirstfnote@ +\firstnote@true +\firstfnote@true +\long\def\noteformat@#1{\global\setbox\newnotebox@ + \vbox{\hsize=\wd\tablebox@\null\noindent\rm #1\par\null}} +\long\def\noteformat@@#1{\noteformat@{\ignorespaces#1\unskip}% + \iffirstnote@ + \global\setbox\notebox@\box\newnotebox@ + \else + \global\setbox\notebox@ + \vbox{\box\notebox@\nointerlineskip\vskip-\baselineskip + \box\newnotebox@}\fi + \firstnote@false} +\long\def\donote@\note#1{\noteformat@@{#1}\FN@\morenote@} +\long\def\dofnote@\fnote#1{\fnoteformat@@{#1}\FN@\morenote@} +\let\fnoteformat@\noteformat@ +\long\def\fnoteformat@@#1{\fnoteformat@{\ignorespaces#1\unskip}% + \iffirstnote@ + \firstnote@false + \iffirstfnote@ + \global\setbox\notebox@\box\newnotebox@ + \else + \global\setbox\notebox@\vbox{\box\notebox@\nointerlineskip + \vskip-\baselineskip\box\newnotebox@}% + \fi + \else + \global\setbox\notebox@\vbox{\box\notebox@\nointerlineskip + \iffirstfnote@\smallskip\fi + \vskip-\baselineskip\box\newnotebox@}% + \fi + \firstfnote@false} +\def\morenote@{\ifx\next\space@\DN@. {\FN@\morenote@}\else + \ifx\next\note\DN@.{\donote@}\else\ifx\next\fnote + \DN@.{\dofnote@}\else\DN@.{\writeit@}\fi\fi\fi\next@.} +\def\writeit@{\global\firstnote@true\global\firstfnote@true + \dimen@\dp\tablebox@ + \setbox\tablebox@\hbox{\vbox{\box\tablebox@ + \ifvoid\notebox@ + \else + \nointerlineskip\smallskip + \MS@ + \ifdim\dimen@<\FSD\dimen@ii\FSD\advance\dimen@ii-\dimen@\vskip\dimen@ii\fi + \box\notebox@\vskip-\baselineskip\fi}}% + \immediate\write\writedata@ + {\the\ht\tablebox@\space\the\dp\tablebox@\space\the\wd\tablebox@}% + \dimen@\ht\tablebox@ \advance\dimen@\dp\tablebox@ + \ifdim\dimen@>\vsize\Err@{Table bigger than \string\vsize; height + \the\ht\tablebox@, depth \the\dp\tablebox@}\fi + \hrule\height\z@ + \vskip\vsize + \special{beginpaste:}% + \ht\tablebox@=\z@\dp\tablebox@=\z@\wd\tablebox@=\z@ + \noindent\box\tablebox@ + \special{endpaste:}% + \smash{\vrule\height1sp\width1sp\depth\z@} +\eject} +\newbox\TBX@ +\def\es@{\crcr\egroup\egroup\let\FS@\relax} +\def\ls@{\let\=\es@\vbox\bgroup\NBL@\let\+\cr\everycr{}\halign + \bgroup\ignorespaces##\unskip\FS@@\hfil\cr} +\def\cs@{\let\=\es@\vbox\bgroup\NBL@\let\+\cr\everycr{}\halign + \bgroup\hfil\ignorespaces##\unskip\FS@@\hfil\cr} +\def\rs@{\let\=\es@\vbox\bgroup\NBL@\let\+\cr\everycr{}\halign + \bgroup\hfil\ignorespaces##\unskip\FS@@\cr} +\def\FG@{\hskip\SSL@\EW@\hskip-\SSLL@\EW@} +\def\CLB@#1#2{% + \if&% + \else + \let\=\ls@\l@false\c@false\r@false\Y@false + \ifX@\FG@\hskip\SLG@\hskip-\SLLG@\global\X@false\SL@true\fi + \ifSL@ + \t@false\m@false\b@false\setbox\TBX@\hbox{\TF@#1\ignorespaces#2\unskip + \FS@}\def\UPT@{L}\UP@ + \else + \ifTMS@ + \t@false\m@false\b@false + \setbox\TBX@\hbox{\TF@#1\ignorespaces#2\unskip\FS@}\def\UPT@{L}\UP@ + \else + \TF@#1\ignorespaces#2\unskip\FS@ + \fi + \fi + \hfil + \ifc@\hfill\fi + \fi + \global\advance\CN@\@ne} +\def\LB@#1{\CLB@{}{#1}} +\def\MLB@#1{% + \if&% + \else + \ifX@ + \CB@{\TF@#1}\global\X@false + \else + \let\=\ls@\l@false\c@false\r@false\Y@false + \ifSL@ + \t@false\m@false\b@false\setbox\TBX@\hbox{$#1$\FS@}\def\UPT@{L}\UP@ + \else + \ifTMS@ + \t@false\m@false\b@false\setbox\TBX@\hbox{$#1$\FS@}\def\UPT@{L}\UP@ + \else + $#1$\FS@ + \fi + \fi + \hfil + \ifc@\hfill\fi + \fi + \fi + \global\advance\CN@\@ne} +\def\CMLB@#1{% + \if&% + \else + \ifX@ + \CB@{\TF@#1}\global\X@false + \else + \let\=\ls@\l@false\c@false\r@false\Y@false + \ifSL@ + \t@false\m@false\b@false\setbox\TBX@\hbox{$\displaystyle{#1}$\FS@}% + \def\UPT@{L}\UP@ + \else + \ifTMS@ + \t@false\m@false\b@false\setbox\TBX@\hbox{$\displaystyle{#1}$\FS@}% + \def\UPT@{L}\UP@ + \else + $\displaystyle{#1}$\FS@ + \fi + \fi + \hfil + \ifc@\hfill\fi + \fi + \fi + \global\advance\CN@\@ne} +\def\CLBP@#1#2{% + \if&% + \else + \let\=\ls@\l@false\c@false\r@false\Y@false\t@false\m@false\b@false + \setbox\TBX@\hbox{\TF@#1\ignorespaces#2\unskip\FS@}\LFG@\LLFG@\LWD@ + \ifX@\FG@\hskip\SLG@\hskip-\SLLG@\global\X@false\fi + \def\UPT@{L}\UP@ + \hfil + \ifc@\hfill\fi + \fi + \global\advance\CN@\@ne} +\def\LBP@#1{\CLBP@{}{#1}} +\let\CLB@@\CLB@ +\let\CLBP@@\CLBP@ +\let\MLB@@\MLB@ +\let\CMLB@@\CMLB@ +\def\CCB@#1#2{% + \if&% + \else + \let\=\cs@\l@false\c@false\r@false\Y@false + \hfil + \ifX@\FG@\hskip\SLG@\hskip-\SLLG@\global\X@false\SL@true\fi + \ifSL@ + \t@false\m@false\b@false\setbox\TBX@\hbox{\TF@#1\ignorespaces#2\unskip + \FS@}\def\UPT@{C}\UP@ + \else + \ifTMS@\t@false\m@false\b@false + \setbox\TBX@\hbox{\TF@#1\ignorespaces#2\unskip\FS@}\def\UPT@{C}\UP@ + \else + \TF@#1\ignorespaces#2\unskip\FS@ + \fi + \fi + \hfil + \ifl@\hfill\fi + \ifc@\hfill\fi + \fi + \global\advance\CN@\@ne} +\def\CB@#1{\CCB@{}{#1}} +\def\MCB@#1{% + \if&% + \else + \ifX@ + \CB@{\TF@#1}\global\X@false + \else + \let\=\cs@\l@false\c@false\r@false\Y@false\hfil + \ifSL@ + \t@false\m@false\b@false\setbox\TBX@\hbox{$#1$\FS@}\def\UPT@{C}\UP@ + \else + \ifTMS@ + \t@false\m@false\b@false\setbox\TBX@\hbox{$#1$\FS@}\def\UPT@{C}\UP@ + \else + $#1$\FS@ + \fi + \fi + \hfil + \ifl@\hfill\fi + \ifc@\hfill\fi + \fi + \fi + \global\advance\CN@\@ne} +\def\CMCB@#1{% + \if&% + \else + \ifX@ + \CB@{\TF@#1}\global\X@false + \else + \let\=\cs@\l@false\c@false\r@false\Y@false\hfil + \ifSL@ + \t@false\m@false\b@false\setbox\TBX@\hbox{$\displaystyle{#1}$\FS@}% + \def\UPT@{C}\UP@ + \else + \ifTMS@ + \t@false\m@false\b@false + \setbox\TBX@\hbox{$\displaystyle{#1}$\FS@}\def\UPT@{C}\UP@ + \else + $\displaystyle{#1}$\FS@ + \fi + \fi + \hfil + \ifl@\hfill\fi + \ifc@\hfill\fi + \fi + \fi + \global\advance\CN@\@ne} +\def\CCBP@#1#2{% + \if&% + \else + \let\=\cs@\l@false\c@false\r@false\Y@false\t@false\m@false\b@false + \setbox\TBX@\hbox{\TF@#1\ignorespaces#2\unskip\FS@}\CFG@\hfil\LCFG@\CWD@ + \ifX@\FG@\hskip\SLG@\hskip-\SLLG@\fi + \def\UPT@{C}\UP@\RCFG@ + \ifX@\global\X@false\fi + \hfil + \ifl@\hfill\fi + \ifc@\hfill\fi + \fi + \global\advance\CN@\@ne} +\def\CBP@#1{\CCBP@{}{#1}} +\let\CCB@@\CCB@ +\let\CCBP@@\CCBP@ +\let\MCB@@\MCB@ +\let\CMCB@@\CMCB@ +\def\CRB@#1#2{% + \if&% + \else + \let\=\rs@\l@false\c@false\r@false\Y@false\hfil + \ifX@\FG@\hskip\SLG@\hskip-\SLLG@\global\X@false\SL@true\fi + \ifSL@ + \t@false\m@false\b@false\setbox\TBX@\hbox{\TF@#1\ignorespaces#2\unskip + \FS@}\def\UPT@{R}\UP@ + \else + \ifTMS@ + \t@false\m@false\b@false + \setbox\TBX@\hbox{\TF@#1\ignorespaces#2\unskip\FS@}% + \ifc@\hfill\fi + \def\UPT@{R}\UP@ + \else + \TF@#1\ignorespaces#2\unskip\FS@ + \fi + \fi + \ifc@\hfill\fi + \ifl@\hfill\fi + \fi + \global\advance\CN@\@ne} +\def\RB@#1{\CRB@{}{#1}} +\def\MRB@#1{% + \if&% + \else + \ifX@ + \CB@{\TF@#1}\global\X@false + \else + \let\=\rs@\l@false\c@false\r@false\Y@false\hfil + \ifSL@ + \t@false\m@false\b@false\setbox\TBX@\hbox{$#1$\FS@}\def\UPT@{R}\UP@ + \else + \ifTMS@ + \t@false\m@false\b@false\setbox\TBX@\hbox{$#1$\FS@}% + \ifc@\hfill\fi + \def\UPT@{R}\UP@ + \else + $#1$\FS@ + \fi + \fi + \ifc@\hfill\fi + \ifl@\hfill\fi + \fi + \fi + \global\advance\CN@\@ne} +\def\CMRB@#1{% + \if&% + \else + \ifX@ + \CB@{\TF@#1}\global\X@false + \else + \let\=\rs@\l@false\c@false\r@false\Y@false\hfil + \ifSL@ + \t@false\m@false\b@false\setbox\TBX@\hbox{$\displaystyle{#1}$\FS@}% + \def\UPT@{R}\UP@ + \else + \ifTMS@ + \t@false\m@false\b@false\setbox\TBX@\hbox{$\displaystyle{#1}$\FS@}% + \ifc@\hfill\fi + \def\UPT@{R}\UP@ + \else + $\displaystyle{#1}$\FS@ + \fi + \fi + \ifc@\hfill\fi + \ifl@\hfill\fi + \fi + \fi + \global\advance\CN@\@ne} +\def\RBP@#1{\CRBP@{}{#1}} +\def\CRBP@#1#2{% + \if&% + \else + \let\=\rs@\l@false\c@false\r@false\Y@false\t@false\m@false\b@false + \setbox\TBX@\hbox{\TF@#1\ignorespaces#2\unskip\FS@}% + \RFG@\hfil + \ifX@\FG@\hskip\SLG@\hskip-\SLLG@\fi + \RWD@\def\UPT@{R}\UP@\RRFG@ + \ifX@\global\X@false\fi + \ifc@\hfill\fi + \ifl@\hfill\fi + \fi + \global\advance\CN@\@ne} +\let\CRB@@\CRB@ +\let\CRBP@@\CRBP@ +\let\MRB@@\MRB@ +\let\CMRB@@\CMRB@ +\def\UP@{% + \ifR@ + \ifY@ + \ift@\def\CSS@{T}\else\ifm@\def\CSS@{M}\else\def\CSS@{B}\fi\fi + \let\HLS@@\HLS@ \let\DLS@@\DLS@ + \dimen@\TRHT@ \advance\dimen@\TRDP@ + \AX@ + \count@\YC@ + \loop + \ifnum\count@>\@ne \FD@\HLS@@ \advance\dimen@\FD@@\p@ + \FD@\DLS@@ + \ifnum\count@=\tw@ \FLD@\FD@@\p@ \else \advance\dimen@\FD@@\p@ \fi + \advance\count@\m@ne\repeat + \if\UPT@ P\else\ifc@\hfill\fi\if\UPT@ L\ifr@\hfill\fi\fi\fi + \vbox to\TRHT@{% + \vbox to\dimen@{% + \if B\CSS@\vfill\fi + \if M\CSS@\vskip\FLD@\vfill\fi + \box\TBX@ + \if M\CSS@\vfill\fi + \if T\CSS@\vfill\fi + }\vss}% + \else + \ift@\def\CSS@{T}\else\ifm@\def\CSS@{M}\else\ifb@\def\CSS@{B}\else + \if\TSS@ T\def\CSS@{T}\else\if\TSS@ M\def\CSS@{M}\else\def\CSS@{B}\fi\fi + \fi\fi\fi + \ifdim\TRHT@>\ht\TBX@ + \if\UPT@ P\else\ifc@\hfill\fi\if\UPT@ L\ifr@\hfill\fi\fi\fi + \vbox to\TRHT@{% + \if B\CSS@\vfill\fi + \if M\CSS@\vfill\fi + \if M\CSS@\dp\TBX@\z@\fi + \box\TBX@ + \if M\CSS@\vfill\fi + \if T\CSS@\vfill\fi}% + \else + \if\UPT@ P\let\next@\box\else\let\next@\unhbox\fi + \next@\TBX@ + \fi + \fi + \else + \ifY@ + \else + \ifdim\ht\TBX@>\RHT@ \global\RHT@\ht\TBX@ \fi + \ifdim\dp\TBX@>\RDP@ \global\RDP@\dp\TBX@ \fi + \fi + \if\UPT@ P\let\next@\box\else\let\next@\unhbox\fi + \next@\TBX@ + \fi} +\def\DBB@#1#2{\DB@{\global\DCC@#1\relax#2}} +\let\DBB@@\DBB@ +\def\DB@#1{% + \if&% + \else + \l@false\c@false\r@false\Y@false\t@false\m@false\b@false + \setbox\TBX@\hbox{\TF@\ignorespaces#1\unskip\FS@}% + \ifl@\else\ifc@\else\ifr@\else\setbox\TBX@\hbox{\TF@\DC@{#1}\FS@}\fi\fi\fi + \RFG@ + \hfil + \ifX@\FG@\hskip\SLG@\hskip-\SLLG@\fi + \RWD@\def\UPT@{R}\UP@\RRFG@ + \ifX@\global\X@false\fi + \ifc@\hfill\fi + \ifl@\hfill\fi + \fi + \global\advance\CN@\@ne} +\def\S@#1#2 #3\S@{#1#2} +\def\DC@#1{\expandafter\DC@@\S@#1 \S@..\DC@@} +\def\DC@@#1.#2.#3\DC@@{#1\setboxz@h{.}\dimen@\wdz@ + \setboxz@h{0}\advance\dimen@\DCC@\wdz@ + \hbox to\dimen@{\if Z#3Z\else.\fi#2\hss}} +\newif\ifD@ +\newif\ifLP@ +\let\(\relax +\let\)\relax +\def\DLL@#1#2{\DL@{\global\DLC@#1\relax#2}} +\let\DLL@@\DLL@ +\def\DL@#1{% + \if&% + \else + \l@false\c@false\r@false\Y@false\t@false\m@false\b@false\D@false\LP@false + \def\${\global\D@true\char'044\relax}% + \def\({\global\LP@true}% + \def\){\rlap)}% + \setbox\TBX@\hbox{\TF@\ignorespaces#1\unskip\FS@}% + \ifl@\else\ifc@\else\ifr@\else\setbox\TBX@\hbox{\TF@\DLA@{#1}\FS@}\fi\fi\fi + \RFG@ + \hfil + \ifX@\FG@\hskip\SLG@\hskip-\SLLG@\fi + \RWD@\def\UPT@{R}\UP@\RRFG@\ifX@\global\X@false\fi + \ifc@\hfill\fi + \ifl@\hfill\fi + \fi + \global\advance\CN@\@ne} +\newdimen\DLG@ +\DLG@=1em +\def\dollarspace(#1){\DLG@#1\relax} +\def\DLA@#1{\def\){\rlap)}\def\({}\let\$\relax\DLA@@#1..\DLA@@} +\newbox\DGB@ +\newbox\PRB@ +\def\DLA@@#1.#2.#3\DLA@@{\setbox\DGB@\hbox{0}\setbox\PRB@\hbox{.}% + \setbox\tw@\hbox{,}% + \dimen@\DLC@\wd\DGB@ + \count@\DLC@ \advance\count@\m@ne \divide\count@\thr@@ + \advance\dimen@\count@\wd\tw@ + \ifD@\char'044 \fi + \kern\DLG@ + \ifLP@ \ifD@\setboxz@h{(}\kern-\wdz@\fi (\fi + \hbox to\dimen@{\hfill#1}% + \if Z#3Z\kern\tw@\wd\DGB@\kern\wd\PRB@\else.\fi + #2\unskip} +\def\dollar{\char'044 } +\def\PB@#1#2{\CPB@{#1}{}{#2}} +\def\CPB@#1#2#3{% + \if&% + \else + \ifX@ + \CB@{\TF@#3}\global\X@false + \else + \l@false\c@false\r@false + \setbox\TBX@\vbox{\TF@\NBL@\parskip\z@\edef\indent{\hskip\the\parindent}% + \parindent\z@\parfillskip\z@ plus1fil\relax\hsize#1\relax + \FS@@#2\ignorespaces#3\unskip\FS@@ + \ifc@\hfill\null\fi}% + \def\UPT@{P}\UP@ + \fi + \fi} +\let\PB@@\PB@ +\let\CPB@@\CPB@ +\newdimen\RHT@ +\newdimen\RDP@ +\newdimen\TRHT@ +\newdimen\TRDP@ +\newdimen\PRHT@ +\newdimen\PRDP@ +\newdimen\FRHT@ +\newcount\YC@ +\newdimen\FLD@ +\def\AX@{% + {\ifx\XHL@\empty + \else + \advance\YC@\RN@ + \DN@##1,##2"##3{\ifnum##1>\RN@\ifnum##1<\YC@ + \global\advance\dimen@##2\relax\fi\fi + \ifnum##3=\m@ne\let\nextii@\relax\else\DNii@{\next@##3}\fi + \nextii@}% + \expandafter\next@\XHL@\m@ne + \fi + }} +\def\RH@{% + \ifH@ + \dimen@\RHT@ \advance\dimen@\RDP@ + \xdef\XHL@{\XHL@\the\RN@,\the\dimen@"}% + \else\ifE@\else + \xdef\HLS@{\HLS@\the\RHT@}\xdef\DLS@{\DLS@\the\RDP@}% + \fi\fi + \global\RHT@\z@\global\RDP@\z@} +\def\UH@{% + \ifnum\RN@=\tw@ \global\FRHT@\FSH \fi + \ifH@\else\ifE@\else + \global\PRHT@\TRHT@ \global\PRDP@\TRDP@ + \ifx\HLS@\empty \else \FD@\HLS@ \global\TRHT@\FD@@\p@ \fi + \ifx\DLS@\empty \else \FD@\DLS@ \global\TRDP@\FD@@\p@ \fi + \fi\fi} +\def\CWD@@{% + \ifX@\else + \ifl@ + \ifdim\wd\TBX@>\csname c-\number\CN@ l\endcsname + \global\csname c-\number\CN@ l\endcsname\wd\TBX@\fi + \else\ifr@ + \ifdim\wd\TBX@>\csname c-\number\CN@ r\endcsname + \global\csname c-\number\CN@ r\endcsname\wd\TBX@\fi + \else + \ifdim\wd\TBX@>\csname c-\number\CN@ c\endcsname + \global\csname c-\number\CN@ c\endcsname\wd\TBX@\fi + \fi\fi + \fi} +\def\LWD@@{% + \ifX@\else + \ifr@ + \ifdim\wd\TBX@>\csname c-\number\CN@ r\endcsname + \global\csname c-\number\CN@ r\endcsname\wd\TBX@\fi + \else\ifc@ + \ifdim\wd\TBX@>\csname c-\number\CN@ c\endcsname + \global\csname c-\number\CN@ c\endcsname\wd\TBX@\fi + \else + \ifdim\wd\TBX@>\csname c-\number\CN@ l\endcsname + \global\csname c-\number\CN@ l\endcsname\wd\TBX@\fi + \fi\fi + \fi} +\def\RWD@@{% + \ifX@\else + \ifl@ + \ifdim\wd\TBX@>\csname c-\number\CN@ l\endcsname + \global\csname c-\number\CN@ l\endcsname\wd\TBX@\fi + \else\ifc@ + \ifdim\wd\TBX@>\csname c-\number\CN@ c\endcsname + \global\csname c-\number\CN@ c\endcsname\wd\TBX@\fi + \else + \ifdim\wd\TBX@>\csname c-\number\CN@ r\endcsname + \global\csname c-\number\CN@ r\endcsname\wd\TBX@\fi + \fi\fi + \fi} +\newif\ifLX@ +\newif\ifCX@ +\newif\ifRX@ +\newdimen\FGD@ +\def\CFG@@{% + \ifdim \csname c-\number\CN@ l\endcsname > \csname c-\number\CN@ c\endcsname + \ifdim \csname c-\number\CN@ l\endcsname > \csname c-\number\CN@ r\endcsname + \DN@{\global\S@false\LX@true}% + \FGD@ \csname c-\number\CN@ l\endcsname + \advance\FGD@ -\csname c-\number\CN@ c\endcsname + \else + \DN@{\global\S@false\RX@true}% + \FGD@ \csname c-\number\CN@ r\endcsname + \advance\FGD@ -\csname c-\number\CN@ c\endcsname + \fi + \else + \ifdim \csname c-\number\CN@ r\endcsname > \csname c-\number\CN@ c\endcsname + \DN@{\global\S@false\RX@true}% + \FGD@ \csname c-\number\CN@ r\endcsname + \advance\FGD@ -\csname c-\number\CN@ c\endcsname + \else + \DN@{\CX@true}% + \fi + \fi + \next@} +\def\LCFG@@{% + \ifX@\else\ifRX@ + \ifl@\else\ifr@\else\hskip\FGD@\fi\fi + \fi\fi} +\def\RCFG@@{% + \ifX@\else\ifLX@ + \ifr@\else\ifl@\else\hskip\FGD@\fi\fi + \fi\fi} +\def\LFG@@{% + \ifdim\csname c-\number\CN@ c\endcsname > \csname c-\number\CN@ l\endcsname + \ifdim\csname c-\number\CN@ c\endcsname > \csname c-\number\CN@ r\endcsname + \DN@{\global\S@false\CX@true}% + \FGD@ \csname c-\number\CN@ c\endcsname + \advance\FGD@ -\csname c-\number\CN@ l\endcsname + \else + \DN@{\global\S@false\RX@true}% + \FGD@ \csname c-\number\CN@ r\endcsname + \advance\FGD@ -\csname c-\number\CN@ l\endcsname + \fi + \else + \ifdim\csname c-\number\CN@ r\endcsname > \csname c-\number\CN@ l\endcsname + \DN@{\global\S@false\RX@true}% + \FGD@ \csname c-\number\CN@ r\endcsname + \advance\FGD@ -\csname c-\number\CN@ l\endcsname + \else + \DN@{\LX@true}% + \fi + \fi + \next@} +\def\RFG@@{% + \ifdim\csname c-\number\CN@ c\endcsname > \csname c-\number\CN@ r\endcsname + \ifdim\csname c-\number\CN@ c\endcsname > \csname c-\number\CN@ l\endcsname + \DN@{\global\S@false\CX@true}% + \FGD@ \csname c-\number\CN@ c\endcsname + \advance\FGD@ -\csname c-\number\CN@ r\endcsname + \else + \DN@{\global\S@false\LX@true}% + \FGD@ \csname c-\number\CN@ l\endcsname + \advance\FGD@ -\csname c-\number\CN@ r\endcsname + \fi + \else + \ifdim\csname c-\number\CN@ l\endcsname > \csname c-\number\CN@ r\endcsname + \DN@{\global\S@false\LX@true}% + \FGD@ \csname c-\number\CN@ l\endcsname + \advance\FGD@ -\csname c-\number\CN@ r\endcsname + \else + \DN@{\RX@true}% + \fi + \fi + \next@} +\def\LLFG@@{% + \ifX@ + \else + \ifCX@ + \ifr@\else\ifc@\else\hskip.5\FGD@\fi\fi + \fi + \ifRX@ + \ifr@\else\ifc@\else\hskip\FGD@\fi\fi + \fi + \fi} +\def\RRFG@@{% + \ifX@ + \else + \ifCX@ + \ifl@\else\ifc@\else\hskip.5\FGD@\fi\fi + \fi + \ifLX@ + \ifl@\else\ifc@\else\hskip\FGD@\fi\fi + \fi + \fi} +\def\XHL@{} +\def\vs@#1{\vskip#1\relax + \dimen@=#1\relax\xdef\XHL@{\XHL@\the\RN@,\the\dimen@"}} +\def\vz@{\dimen@\FSH \advance\dimen@\FSD \vskip-\dimen@ + \xdef\XHL@{\XHL@\the\RN@,-\the\dimen@"}} +\def\vZ@{\noalign + {\dimen@\PRDP@ \advance\dimen@\TRHT@ + \xdef\XHL@{\XHL@\the\RN@,-\the\dimen@"}\vskip-\dimen@}% + \relax\vrule\depth\PRDP@\height\z@\width\z@\ignorespaces} +\def\cf@#1{\noalign{#1\xdef\TF@{\the\font}\TF@\MS@}}% +\def\hd@(#1#2;#3#4){\relax + \if#1+% + \dimen@#2\relax \advance\dimen@\HT@ + \else + \dimen@#1#2\relax + \fi + \if#3+% + \dimen@ii#4\relax \advance\dimen@ii\DP@ + \else + \dimen@ii#3#4\fi + \vrule\height\dimen@\depth\dimen@ii\width\z@} +\def\hl@{\xdef\XHL@{\XHL@\the\RN@,\HTW@"}} +\def\hL@#1{\dimen@#1\relax\xdef\XHL@{\XHL@\the\RN@,\the\dimen@"}} +\def\hls@{\noalign + {\global\H@true + \gdef\CLB@##1{\DH@}\gdef\CLBP@##1{\DH@}% + \global\let\MLB@\DH@ \global\let\CMLB@\DH@ + \gdef\CCB@##1{\DH@}\gdef\CCBP@##1{\DH@}% + \global\let\MCB@\DH@ \global\let\CMCB@\DH@ + \gdef\CRB@##1{\DH@}\gdef\CRBP@##1{\DH@}% + \global\let\MRB@\DH@ \global\let\CMRB@\DH@ + \gdef\CPB@##1##2{\DH@}\gdef\DBB@##1{\DH@}\gdef\DLL@##1{\DH@}% + }% +} +\def\PX@{\noalign + {\global\let\CLB@\CLB@@ \global\let\CCB@\CCB@@ \global\let\CRB@\CRB@@ + \global\let\CLBP@\CLBP@@ \global\let\CCBP@\CCBP@@ \global\let\CRBP@\CRBP@@ + \global\let\MLB@\MLB@@ \global\let\MCB@\MCB@@ \global\let\MRB@\MRB@@ + \global\let\CMLB@\CMLB@@ \global\let\CMCB@\CMCB@@ \global\let\CMRB@\CMRB@@ + \global\let\CPB@\CPB@@ \global\let\DBB@\DBB@@ \global\let\DLL@\DLL@@ + }% +} +\let\HRH@\HTW@ +\let\HRD@\z@ +\let\LSG@\z@ +\let\RSG@\z@ +\let\LHG@\z@ +\let\RHG@\z@ +\def\DH@#1{\GLG@\GRG@\GSL@\GSR@ + \HP@{#1}% + \HHDU@ + \hskip\LSG@ + \hskip\LHG@ + \leaders\hrule\height\HRH@\depth\HRD@\hfill + \hskip\RHG@ + \hskip\RSG@ + \global\advance\CN@\@ne} +\def\HP@#1{\HP@@#1Y\HP@@} +\def\HP@@#1#2\HP@@{\if#1Y\let\HRH@\z@\else\HP@@@#1#2\HP@@@\fi} +\def\HP@@@#1#2Y\HP@@@{% + \if#1+% + \edef\LHG@{-\the\LG@}\edef\RHG@{-\the\RG@}% + \else\if#1_% + \global\NH@false\edef\LHG@{-\the\LG@}\edef\RHG@{-\the\RG@}% + \dimen@=-\SL@ \EW@ \edef\LSG@{\the\dimen@}% + \dimen@=-\SR@ \EW@ \edef\RSG@{\the\dimen@}% + \else + \HP@@@@#1#2:Y\HP@@@@ + \fi\fi} +\def\HP@@@@#1:#2#3\HP@@@@{\HP@@@@@#1;Y\HP@@@@@\if#2Y\else + \HP@@@@@@#2#3\HP@@@@@@\fi} +\def\HP@@@@@#1#2;#3#4\HP@@@@@{\if#1*\else\def\HRH@{#1#2}\fi + \if#3Y\else\HP@@@@@@@@#3#4\HP@@@@@@@@\fi} +\def\HP@@@@@@@@#1;Y\HP@@@@@@@@{\def\HRD@{#1}} +\def\HP@@@@@@#1#2:Y\HP@@@@@@{% + \if#1+% + \edef\LHG@{-\the\LG@}\edef\RHG@{-\the\RG@}% + \else\if#1_% + \global\NH@false\edef\LHG@{-\the\LG@}\edef\RHG@{-\the\RG@}% + \dimen@=-\SL@ \EW@ \edef\LSG@{\the\dimen@}% + \dimen@=-\SR@ \EW@ \edef\RSG@{\the\dimen@}% + \else + \HP@@@@@@@#1#2;Y\HP@@@@@@@ + \fi\fi} +\def\HP@@@@@@@#1;#2#3\HP@@@@@@@{\HP@@@@@@@@@#1YY\HP@@@@@@@@@ + \if#2Y\else\HP@@@@@@@@@@#2#3\HP@@@@@@@@@@\fi} +\def\HP@@@@@@@@@#1#2Y#3\HP@@@@@@@@@{% + \if#1l% + \dimen@=-\LG@ + \DN@{#2}\ifx\next@\empty\else\ifx\next@\space\else + \advance\dimen@\next@\fi\fi + \edef\LHG@{\the\dimen@}% + \else\if#1L% + \global\NH@false\edef\LHG@{-\the\LG@}% + \dimen@=-\SL@ \EW@ + \DN@{#2}\ifx\next@\empty\else\ifx\next@\space + \else\advance\dimen@\next@\fi\fi + \edef\LSG@{\the\dimen@}% + \else + \HP@@@@@@@@@@@#1#2Y#3\HP@@@@@@@@@@@ + \fi\fi} +\def\HP@@@@@@@@@@@#1Y#2\HP@@@@@@@@@@@{\def\LHG@{#1}} +\def\HP@@@@@@@@@@#1#2;Y\HP@@@@@@@@@@{% + \if#1r% + \dimen@=-\RG@ + \DN@{#2}\ifx\next@\empty\else\ifx\next@\space\else + \advance\dimen@\next@\fi\fi + \edef\RHG@{\the\dimen@}% + \else\if#1R% + \global\NH@false\edef\RHG@{-\the\RG@}% + \dimen@=-\SR@ \EW@ + \DN@{#2}\ifx\next@\empty\else\ifx\next@\space\else + \advance\dimen@\next@\fi\fi + \edef\RSG@{\the\dimen@}% + \else + \def\RHG@{#1#2}% + \fi\fi} +\def\HHDU@{\ifdim\HRH@>\RHT@\global\RHT@\HRH@\fi + \ifdim\HRD@>\RDP@\global\RDP@\HRD@\fi} +\def\GS@{\ifE@\else\ifH@\else\expandafter\GS@@\SS@\GS@@\fi\fi} +\def\TSS@{B} +\def\GS@@#1#2\GS@@{\gdef\TSS@{#1}\if T\LS@\gdef\SS@{#2T}\else + \if M\LS@\gdef\SS@{#2M}\else\gdef\SS@{#2B}\fi\fi} +\newdimen\LG@ +\newdimen\RG@ +\def\GLG@{% + \edef\next@{\def\noexpand\next@####1Z\the\CN@"####2Z####3\noexpand\next@ + {\global\noexpand\LG@\noexpand####2}% + \noexpand\expandafter\noexpand\next@\LGL@ Z\the\CN@"\z@ Z\noexpand\next@}% + \next@} +\def\GRG@{% + \edef\next@{\def\noexpand\next@####1Z\the\CN@"####2Z####3\noexpand\next@ + {\global\noexpand\RG@\noexpand####2}% + \noexpand\expandafter\noexpand\next@\RGL@ Z\the\CN@"\z@ Z\noexpand\next@}% + \next@} +\newcount\SL@ +\newcount\SR@ +\def\GSL@{% + \edef\next@{\def\noexpand\next@####1Z\the\CN@"####2Z####3\noexpand\next@ + {\global\noexpand\SL@####2}% + \noexpand\expandafter\noexpand\next@\LSL@ Z\the\CN@"\z@ Z\noexpand\next@}% + \next@} +\def\GSR@{% + \edef\next@{\def\noexpand\next@####1Z\the\CN@"####2Z####3\noexpand\next@ + {\global\noexpand\SR@####2}% + \noexpand\expandafter\noexpand\next@\RSL@ Z\the\CN@"\z@ Z\noexpand\next@}% + \next@} +\newdimen\SLG@ +\newcount\SSL@ +\newdimen\SLLG@ +\newcount\SSLL@ +\def\ex@@#1{\noalign + {\dimen@=#1\relax \xdef\XHL@{\XHL@\the\RN@,\the\dimen@"}\global\E@true}} +\def\PRX@#1{\noalign + {\dimen@=#1\relax \xdef\XHL@{\XHL@\the\RN@,\the\dimen@"}\global\E@true}} +\def\NS@{\noalign{\global\let\FS@\relax}} +\def\NS@@{\noalign{\global\let\FS@\FS}} +\newdimen\XD@ +\def\XXL@{} +\def\xx@#1{\GLG@\GSL@ \global\SSL@\SL@ \global\SLG@\LG@ + \advance\CN@#1\relax \advance\CN@\m@ne + \GLG@\GSL@ \global\SLLG@\LG@ \global\SSLL@\SL@ + \mscount=#1\relax \multiply\mscount\tw@ \advance\mscount-\tw@ + \loop + \ifnum\mscount>\@ne\sp@n\repeat + \span + {\mscount\CN@ \advance\mscount-#1\relax \advance\mscount\@ne + \advance\CN@\m@ne + \loop \xdef\XXL@{\XXL@"\the\mscount,\the\RN@}% + \ifnum\mscount<\CN@\advance\mscount\@ne\repeat + }% + \FS@\ignorespaces} +{ +\catcode`\|\active +\gdef\exa@(#1){\noalign + {\dimen@#1\relax \xdef\XHL@{\XHL@\the\RN@,\the\dimen@"}% + \count@\@ne \advance\CT@\m@ne + \toks@{\omit\vrule\height#1\width\z@}% + \loop \XX@ + \ifXX@ + \global\toks@=\expandafter{\the\toks@\T@B\omit\T@B\omit}% + \else + \global\toks@=\expandafter{\the\toks@\T@B Z{}{}\T@B\omit}% + \fi + \ifnum\count@<\CT@ \advance\count@\@ne \repeat + \global\E@true + }% + \the\toks@\\} +\gdef\exb@(#1){\noalign + {\dimen@#1\relax \xdef\XHL@{\XHL@\the\RN@,\the\dimen@"}% + \count@\@ne \advance\CT@\m@ne \advance\RN@\m@ne + \toks@{\omit\vrule\height#1\width\z@}% + \loop \XX@ + \ifXX@ + \global\toks@=\expandafter{\the\toks@\T@B\omit\T@B\omit}% + \else + \global\toks@=\expandafter{\the\toks@\T@B Z{}{}\T@B\omit}% + \fi + \ifnum\count@<\CT@\advance\count@\@ne\repeat + \global\E@true + }% + \the\toks@\\} +\gdef\hlyy@{\noalign + {\global\H@true + \gdef\CLB@##1{\DH@}\gdef\CLBP@##1{\DH@}% + \global\let\MLB@\DH@\global\let\CMLB@\DH@ + \gdef\CCB@##1{\DH@}\gdef\CCBP@##1{\DH@}% + \global\let\MCB@\DH@\global\let\CMCB@\DH@ + \gdef\CRB@##1{\DH@}\gdef\CRBP@##1{\DH@}% + \global\let\MRB@\DH@\global\let\CMRB@\DH@ + \gdef\CPB@##1##2{\DH@}\global\let\DBB@\DH@ \global\let\DLL@\DH@ + \count@\@ne \X@ + \ifXX@ \global\toks@{}\else\global\toks@{_}\fi + \count@\tw@ + \loop \X@ + \ifXX@ + \global\toks@=\expandafter{\the\toks@\T@B Z{}{}\T@B}% + \else + \global\toks@=\expandafter{\the\toks@\T@B Z{}{}\T@B_}% + \fi + \ifnum\count@<\CT@\advance\count@\@ne\repeat + }% + \the\toks@\cr\PX@} +\gdef\hLyy@(#1){\noalign + {\global\H@true + \gdef\CLB@##1{\DH@}\gdef\CLBP@##1{\DH@}% + \global\let\MLB@\DH@\global\let\CMLB@\DH@ + \gdef\CCB@##1{\DH@}\gdef\CCBP@##1{\DH@}% + \global\let\MCB@\DH@\global\let\CMCB@\DH@ + \gdef\CRB@##1{\DH@}\gdef\CRBP@##1{\DH@}% + \global\let\MRB@\DH@\global\let\CMRB@\DH@ + \gdef\CPB@##1##2{\DH@}\global\let\DBB@\DH@\global\let\DLL@\DH@ + \count@\@ne \X@ + \ifXX@\global\toks@{}\else\global\toks@{#1:_}\fi + \count@\tw@ + \loop \X@ + \ifXX@ + \global\toks@=\expandafter{\the\toks@\T@B Z{}{}\T@B}% + \else + \global\toks@=\expandafter{\the\toks@\T@B Z{}{}\T@B#1:_}% + \fi + \ifnum\count@<\CT@\advance\count@\@ne\repeat + }% + \the\toks@\cr\PX@} +} +\newif\ifXX@ +\def\XXHL@{} +\def\yy@#1{\global\Y@true\global\YC@#1\relax + {\mscount\RN@ \advance\mscount\@ne + \advance\RN@#1\relax \advance\RN@\m@ne + \loop\xdef\XXHL@{\XXHL@"\the\CN@,\the\mscount}\ifnum\mscount<\RN@ + \advance\mscount\@ne\repeat + }% + \ignorespaces} +\def\X@{\edef\next@{\def\noexpand\next@####1"\the\count@,\the\RN@"####2####3% + \noexpand\next@{\noexpand\ifnum####2=\m@ne\noexpand\global\noexpand\XX@false + \noexpand\else\noexpand\global\noexpand\XX@true\noexpand\fi}% + \noexpand\expandafter\noexpand\next@\XXHL@"\the\count@,\the\RN@"\m@ne + \noexpand\next@}\next@\relax} +\def\XX@{\edef\next@{\def\noexpand\next@####1"\the\count@,\the\RN@"####2####3% + \noexpand\next@{\noexpand\ifnum####2=\m@ne\noexpand\global\noexpand\XX@false + \noexpand\else\noexpand\global\noexpand\XX@true\noexpand\fi}% + \noexpand\expandafter\noexpand\next@\XXL@"\the\count@,\the\RN@"\m@ne + \noexpand\next@}\next@\relax} +\def\tdefine#1{\define@#1{}\tredefine#1} +\def\tredefine#1{\def\tdf@{#1}\catcode`\&\active\catcode`\|\active + \catcode`\"\active\afterassignment\tdef@\def\tdf@@} +\def\tdef@{\expandafter\let\tdf@\tdf@@ + \catcode`\&=4 \catcode`\|=12 \catcode`\"=12 } +\def\colwidth(#1){\hskip#1\null} +\def\dotleads{\Leads{5pt}.} +\def\Leads#1#2{\leaders\hbox to#1{\hfil#2\hfil}\hfill\null} +\predefine\Polishl\l +\predefine\PolishL\L +\predefine\tieaccent\t +\predefine\barunder\b +\predefine\umlaut\" +\predefine\cedilla\c +\predefine\dotunder\d +\WT@\* +\WT@\cong +\WT@\longleftarrow +\WT@\longmapsto +\WT@\longrightarrow +\WT@\mathstrut +\WT@\notin +\WT@\overbrace +\WT@\overleftarrow +\WT@\overrightarrow +\WT@\overleftrightarrow +\WT@\rightleftharpoons +\WT@\underleftarrow +\WT@\underrightarrow +\WT@\underleftrightarrow +\WT@\rightleftharpoons +\WT@\underbrace +\WT@\copyright +\WT@\dots +\WT@\frenchspacing +\WT@\nonfrenchspacing +\WT@\medspace +\WT@\; +\WT@\negmedspace +\WT@\thickspace +\WT@\negthickspace +\WT@\slanted +\WT@\roman +\WT@\italic +\WT@\frak +\WT@\goth +\WT@\Bbb +\WT@\Hat +\WT@\oldnos +\WT@\pmb +\def\vphantom{\relax\v@true\h@false\ph@nt} +\def\hphantom{\relax\v@false\h@true\ph@nt} +\def\phantom{\relax\v@true\h@true\ph@nt} +\WT@\vphantom +\WT@\hphantom +\WT@\phantom +{\catcode`\'=\active \gdef'{\NX@\wit@prime}% + \gdef\wit@prime{^\bgroup\prim@s}} +\WT@\text +\WT@\Cal +\WT@\bold +\WT@\iint +\WT@\iiint +\WT@\iiiint +\WT@\idotsint +\WT@\{ +\WT@\} +\WT@\, +\WT@\! +\WT@\ldots +\WT@\cdots +\WT@\dotsm +\WT@\dotso +\WT@\dotsc +\WT@\Hat +\WT@\Check +\WT@\Tilde +\WT@\Acute +\WT@\Grave +\WT@\Dot +\WT@\Ddot +\WT@\Breve +\WT@\Bar +\WT@\Vec +\WT@\nolimits@ +\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne + \ch@ck#1#4#2\allocationnumber=\count1#1 + \global#3#5=\allocationnumber + \wlog{\string#5=\string#2\the\allocationnumber}} +\catcode`\@=\active + diff --git a/macros/lamstex/inputs/lamstex.stb b/macros/lamstex/inputs/lamstex.stb new file mode 100644 index 0000000000..522d48bde7 --- /dev/null +++ b/macros/lamstex/inputs/lamstex.stb @@ -0,0 +1,317 @@ +% LAMSTEX.STB VERSION 2.0 +% COPYRIGHT (C) 1989, 1990, 1991 BY THE TEXPLORATORS CORPORATION +% ALL RIGHTS RESERVED + +% THIS FILE SHOULD NOT BE CHANGED IN ANY WAY. + +\catcode`\@=11 +\let\alloc@\alloc@@ +\def\adjustpunct@#1{\count@\lastkern + \ifnum\count@=\z@#1\else + \ifnum\count@>\tw@#1\else + \ifnum\count@<-\tw@#1\else + \unkern\unkern\setboxzl@ + \skip@\lastskip\unskip + \count@@\lastpenalty\unpenalty + \ifnum\count@=\tw@\unskip\setboxzl@\fi + \ifdim\skip@=\z@\else\hskip\skip@\fi + #1% + \ifnum\count@=\tw@\null\hfill\fi + \penalty\count@@ + \fi\fi\fi} +\def\ignorepars@{\FNSS@\ignorepars@@} +\def\ignorepars@@{\ifx\next\par\DN@\par{\FN@\ignorepars@@}\else + \let\next@\relax\fi\next@} +\newcount\ctype@ +\newcount\Ctype@ +\newif\ifleftcolbreak@ +\def\cbreak@#1#2{\ifcase\ctype@#1\or\nobreak#2\else + \global\leftcolbreak@true + \ifdim\pagetotal>\pageheight@\global\leftcolbreak@false\fi + \global\Ctype@\ctype@\break\fi\ctype@\z@} +\newif\ifshortlastcolumn@ +\newif\ifletter@ +\newtoks\marktoks@i +\newtoks\marktoks@ii +\newtoks\marktoks@iii +\newtoks\marktoks@iv +\newtoks\marktoks@v +\newif\ifentry@ +\newcount\dii@ +\def\Topage@#1#2{\DN@{#2}\ifx\next@\frompage@\pagecs@{\frompage@}% + \else\pagecs@{\frompage@\hbox{--}#2}\fi\egroup\ignorepars@} +\newdimen\pageheight@ +\pageheight@\vsize +\newdimen\doublepageheight@ +\doublepageheight@2\pageheight@ +\advance\doublepageheight@1pc +\newdimen\pagewidth@ +\pagewidth@\hsize +\def\makeheadline{\vbox to\z@{\vskip-22.5pt\hbox to\pagewidth@ + {\vbox to8.5\p@{}\the\headline}\vss}\nointerlineskip}% +\def\makefootline{\baselineskip24\p@\hbox to\pagewidth@{\the\footline}}% +\newif\iffirstindexpage@ +\def\makeindex{\checkmainfile@\par\vfill\break + \begingroup + \let\asterisk*% + \def\lkerns@{\null\kern\m@ne sp\kern\@ne sp}% + \def\nkerns@{\null\kern-\tw@ sp\kern\tw@ sp}% + \def\nocolumnbreak{\ctype@\@ne}% + \def\columnbreak{\ctype@\tw@}% + \def\newcolumn{\ctype@\thr@@}% + \def\shortlastcolumn{\shortlastcolumn@true}% + \def\LETTER##1{\par + \mark{}% + \cbreak@{\penalty-200 \bigskip}\bigskip + \letter@true\centerline{\bf##1}\nobreak\medskip}% + \def\Entry##1##2##3##4##5##6##7{\par\entry@true + \marktoks@i{##3}\marktoks@ii{##4}\marktoks@iii{##5}% + \marktoks@iv{##6}\marktoks@v{##7}% + \ifcase##1% + \or + \ifletter@\else\mark{}\fi + \cbreak@\relax\relax + \noindent@ + \mark{10{\the\marktoks@i}}% + \hangafter\@ne\hangindent.5em{##3}% + \or + \ifcase##2% + \ifletter@\else\mark{}\fi + \cbreak@\relax\relax + \noindent@ + \mark{20{\the\marktoks@i}{\the\marktoks@ii}}% + \hangafter\@ne\hangindent.5em{##3}\par\nobreak + \noindent@\hangafter\@ne\hangindent1.5em\quad{##4}% + \or + \mark{10{\the\marktoks@i}}% + \cbreak@\relax\relax + \noindent@ + \mark{21{\the\marktoks@i}{\the\marktoks@ii}}% + \hangafter\@ne\hangindent1.5em\quad{##4}% + \fi + \or + \ifcase##2% + \ifletter@\else\mark{}\fi + \cbreak@\relax\relax + \noindent@ + \mark{30{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}}% + \hangafter\@ne\hangindent.5em{##3}\par\nobreak + \noindent@\hangafter\@ne\hangindent1.5em\quad{##4}\par\nobreak + \noindent@\hangafter\@ne\hangindent2.5em\qquad{##5}% + \or + \mark{10{\the\marktoks@i}}% + \cbreak@\relax\relax + \noindent@ + \mark{31{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}}% + \hangafter\@ne\hangindent1.5em\quad{##4}\par\nobreak + \noindent@\hangafter\@ne\hangindent2.5em\qquad{##5}% + \or + \mark{2\number\dii@{\the\marktoks@i}{\the\marktoks@ii}}% + \cbreak@\relax\relax + \noindent@ + \mark{32{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}}% + \hangafter\@ne\hangindent2.5em\qquad{##5}% + \fi + \or + \ifcase##2% + \ifletter@\else\mark{}\fi + \cbreak@\relax\relax + \noindent@ + \mark{40{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}% + {\the\marktoks@iv}}% + \hangafter\@ne\hangindent.5em{##3}\par\nobreak + \noindent@\hangafter\@ne\hangindent1.5em\quad{##4}\par\nobreak + \noindent@\hangafter\@ne\hangindent2.5em\qquad{##5}\par\nobreak + \noindent@\hangafter\@ne\hangindent3.5em\qquad\quad{##6}% + \or + \mark{10{\the\marktoks@i}}% + \cbreak@\relax\relax + \noindent@ + \mark{41{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}% + {\the\marktoks@iv}}% + \noindent@\hangafter\@ne\hangindent1.5em\quad{##4}\par\nobreak + \noindent@\hangafter\@ne\hangindent2.5em\qquad{##5}\par\nobreak + \noindent@\hangafter\@ne\hangindent3.5em\qquad\quad{##6}% + \or + \mark{2\number\dii@{\the\marktoks@i}{\the\marktoks@ii}}% + \cbreak@\relax\relax + \noindent@ + \mark{42{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}% + {\the\marktoks@iv}}% + \noindent@\hangafter\@ne\hangindent2.5em\qquad{##5}\par\nobreak + \noindent@\hangafter\@ne\hangindent3.5em\qquad\quad{##6}% + \or + \mark{3\number\dii@{\the\marktoks@i}{\the\marktoks@ii}% + {\the\marktoks@iii}}% + \cbreak@\relax\relax + \noindent@ + \mark{43{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}% + {\the\marktoks@iv}}% + \hangafter\@ne\hangindent3.5em\qquad\quad{##6}% + \fi + \or + \ifcase##2% + \ifletter@\else\mark{}\fi + \cbreak@\relax\relax + \noindent@ + \mark{50{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}% + {\the\marktoks@iv}{\the\marktoks@v}}% + \hangafter\@ne\hangindent.5em{##3}\par\nobreak + \noindent@\hangafter\@ne\hangindent1.5em\quad{##4}\par\nobreak + \noindent@\hangafter\@ne\hangindent2.5em\qquad{##5}\par\nobreak + \noindent@\hangafter\@ne\hangindent3.5em\qquad\quad{##6}\par\nobreak + \noindent@\hangafter\@ne\hangindent4.5em\qquad\qquad{##7}% + \or + \mark{10{\the\marktoks@i}}% + \cbreak@\relax\relax + \noindent@ + \mark{51{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}% + {\the\marktoks@iv}{\the\marktoks@v}}% + \hangafter\@ne\hangindent1.5em\quad{##4}\par\nobreak + \noindent@\hangafter\@ne\hangindent2.5em\qquad{##5}\par\nobreak + \noindent@\hangafter\@ne\hangindent3.5em\qquad\quad{##6}\par\nobreak + \noindent@\hangafter\@ne\hangindent4.5em\qquad\qquad{##7}% + \or + \mark{2\number\dii@{\the\marktoks@i}{\the\marktoks@ii}}% + \cbreak@\relax\relax + \noindent@ + \mark{52{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}% + {\the\marktoks@iv}{\the\marktoks@v}}% + \hangafter\@ne\hangindent2.5em\qquad{##5}\par\nobreak + \noindent@\hangafter\@ne\hangindent3.5em\qquad\quad{##6}\par\nobreak + \noindent@\hangafter\@ne\hangindent4.5em\qquad\qquad{##7}% + \or + \mark{3\number\dii@{\the\marktoks@i}{\the\marktoks@ii}% + {\the\marktoks@iii}}% + \cbreak@\relax\relax + \noindent@ + \mark{53{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}% + {\the\marktoks@iv}{\the\marktoks@v}}% + \hangafter\@ne\hangindent3.5em\qquad\quad{##6}\par\nobreak + \noindent@\hangafter\@ne\hangindent4.5em\qquad\qquad{##7}% + \or + \mark{4\number\dii@{\the\marktoks@i}{\the\marktoks@ii}% + {\the\marktoks@iii}{\the\marktoks@iv}}% + \cbreak@\relax\relax + \noindent@ + \mark{54{\the\marktoks@i}{\the\marktoks@ii}{\the\marktoks@iii}% + {\the\marktoks@iv}{\the\marktoks@v}}% + \hangafter\@ne\hangindent4.5em\qquad\qquad{##7}% + \fi + \fi + \dii@##2\relax + \letter@false + \ignorepars@}% + \def\Page##1{\ifentry@\adjustpunct@,\enspace\else\adjustpunct@, \fi + \entry@false{##1}\ignorepars@}% + \def\Pagespan##1{\ifentry@\adjustpunct@,\enspace\else\adjustpunct@, \fi + \entry@false\def\frompage@{##1}{##1}\ignorepars@}% + \def\Topage##1{\DN@{##1}\ifx\next@\frompage@ + \else\hbox{--}{##1}\fi\ignorepars@}% + \def\PageSpan##1##2{\ifentry@\adjustpunct@,\enspace\else\adjustpunct@, \fi + \entry@false\def\pagecs@{##1}\def\frompage@{##2}% + \bgroup\let\Topage\Topage@\ignorepars@}% + \def\Xref##1{\ifentry@\else + \def\See####1{\adjustpunct@\semicolon@\space + {\it see~also\/}~####1}{##1}\fi\ignorepars@}% + \def\Morexref##1{\ifentry@\else + \def\See####1{\adjustpunct@, ####1}{##1}\fi\ignorepars@}% + \def\Entryxref##1##2##3##4##5##6##7##8{% + \Entry{##1}{##2}{##3}{##4}{##5}{##6}{##7}% + \def\See####1{\adjustpunct@, {\it see\/}~####1}{##8}\ignorepars@}% + \hsize3in + \global\vsize\doublepageheight@ + \maxdepth\maxdimen + \global\firstindexpage@true + \global\advance\vsize-60\p@ + \everypar{}\parindent\z@ + \rightskip\z@ plus3em \spaceskip.3333em \xspaceskip.5em + \output{\doublecolumns@}% + \input\mainfile@.xdx + \mark{}% + \output{\balancecolumns@}\vfil\break\endgroup + \global\vsize\pageheight@} +\def\makeindex@W{Index} +\def\combinecolumns@{% + \setbox\outbox@\vbox{\makeheadline + \vbox to\pageheight@{\boxmaxdepth\maxdepth + \iffirstindexpage@ + \vbox to30\p@{\vskip10\p@ + \hbox to\pagewidth@{\hfil\bf\uppercase\expandafter{\makeindex@W}\hfil}% + \vfil}% + \nointerlineskip + \fi + \wd\z@\hsize\wd\tw@\hsize + \setboxz@h to\pagewidth@{\box\z@\kern.5in\box\tw@}% + \dimen@\dp\z@\box\z@\kern-\dimen@\vfill}% + \makefootline}% + {\noexpands@\let\style=\relax + \shipout@\box\outbox@ + }% + \global\vsize\doublepageheight@ + \global\firstindexpage@false + \advancepageno} +\newdimen\prevcoldepth@ +\def\doublecolumns@{% + \dimen@\pageheight@\iffirstindexpage@\advance\dimen@-30\p@\fi + \ifleftcolbreak@ + \global\leftcolbreak@false + \vbox to\dimen@{\dimen@\dp\@cclv\unvbox\@cclv + \ifnum\Ctype@=\thr@@\kern-\dimen@\vfill\fi}% + \allowbreak + \else + \splittopskip\topskip\splitmaxdepth\maxdepth + \setbox\z@\vsplit\@cclv to\dimen@ + \ifnum\Ctype@=\z@\global\Ctype@\@ne\fi + \ifcase\Ctype@\or + \setbox\tw@\vsplit\@cclv to\dimen@\global\prevcoldepth@\dp\tw@ + \else + \global\prevcoldepth@\dp\@cclv + \setbox\tw@\vbox to\dimen@{\unvbox\@cclv + \ifnum\Ctype@=\thr@@\kern-\prevcoldepth@\vfill\fi}% + \fi + \combinecolumns@ + \ifcase\Ctype@\or + \expandafter\continue@\splitbotmark{}\relax\relax\relax\relax + \relax\relax\continue@ + \else\expandafter\continue@\botmark{}\relax\relax\relax\relax + \relax\relax\continue@ + \fi + \ifvoid\@cclv\else\unvbox\@cclv\penalty\outputpenalty\fi + \fi + \global\Ctype@\z@} +\def\continue@#1#2#3#4#5#6#7#8\continue@{\def\next@{#1}\ifx\next@\empty + \else + \noindent@#3 ({\it continued\/})\par + \ifnum#1>\@ne\noindent@\enspace(#4 {\it continued\/})\par\fi + \ifnum#1>\tw@\noindent@\enspace(#5 {\it continued\/})\par\fi + \ifnum#1>\thr@@\noindent@\enspace(#6 {\it continued\/})\par\fi + \ifnum#1>4 \noindent@\enspace(#7 {\it continued\/})\par\fi + \ifvoid\@cclv + \global\advance\prevcoldepth@-\prevdepth\kern\prevcoldepth@ + \else + \skip@\baselineskip\advance\skip@\parskip + \advance\skip@-\topskip\advance\skip@-\prevdepth + \vskip\skip@ + \fi + \fi} +\def\balancecolumns@{\setbox\z@\vbox{\unvbox\@cclv\unskip}% + \dimen@\ht\z@\advance\dimen@\topskip\advance\dimen@-\baselineskip + \divide\dimen@\tw@ + \splittopskip\topskip + \global\dimen@i\dimen@ + {\vbadness\@M + \loop + \global\setbox\thr@@\copy\z@ + \global\setbox\@ne\vsplit\thr@@ to\dimen@i + \ifdim\ht\thr@@>\dimen@i\global\advance\dimen@i\p@ + \repeat}% + \setbox\z@\vbox to\dimen@i{\unvbox\@ne}% + \setbox\tw@\vbox to\dimen@i{\dimen@\dp\thr@@\unvbox\thr@@ + \ifshortlastcolumn@\kern-\dimen@\vfill\fi}% + \combinecolumns@} +\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne + \ch@ck#1#4#2\allocationnumber\count1#1 + \global#3#5\allocationnumber + \wlog{\string#5\string#2\the\allocationnumber}} +\catcode`\@=\active diff --git a/macros/lamstex/inputs/lamstex.stf b/macros/lamstex/inputs/lamstex.stf new file mode 100644 index 0000000000..9514ec0524 --- /dev/null +++ b/macros/lamstex/inputs/lamstex.stf @@ -0,0 +1,115 @@ +% LAMSTEX.STF VERSION 2.0 +% COPYRIGHT (C) 1989, 1990, 1991 BY THE TEXPLORATORS CORPORATION +% ALL RIGHTS RESERVED + +% THIS FILE SHOULD NOT BE CHANGED IN ANY WAY. + +\catcode`\@=11 +\let\alloc@\alloc@@ +\def\dotleaders{\leaders\hbox to10pt{\rm\hfil.\hfil}\hfil} +\def\Page@#1#2#3#4{\kern10pt\hbox{\rm#3#2{#1}#4}} +\long\def\widerthanhsize@#1#2#3#4{\test@true + \setbox\z@\vbox{\hsize\maxdimen + \rm\noindent@#1#2#3#4\par\setboxzl@}% + \ifdim\wdz@=\z@\setboxz@h{\rm#1#2#3#4}\ifdim\wdz@>\hsize\else + \test@false\fi\fi} +\long\def\setentry@#1#2#3#4{% + \widerthanhsize@{#1}{#2}{#3}{#4}% + \iftest@ + \longentry@{#1}{#2}{#3}{#4}% + \else + \hbox to\hsize{\rm\strut#1#2#3#4\strut}% + \fi} +\def\endstrut@{\lower\dp\strutbox\vbox to\dp\strutbox{}} +\newdimen\thehang@ +\long\def\longentry@#1#2#3#4{\setboxz@h{#1}% + \thehang@\wdz@\advance\thehang@10\p@ + \setboxz@h{#4}% + \setbox\z@\vbox{\advance\hsize-\wdz@\advance\hsize-20\p@ + \normalbaselines + \hangafter\@ne\hangindent\thehang@ + \vskip-\parskip + \rm\noindent@\vbox to\ht\strutbox{}\hbox{#1}#2\vphantom{#3#4}\endstrut@}% + \setbox\z@\vbox{\unvbox\z@ + \setboxzl@ + \hbox to\hsize{\kern\thehang@\unhbox\z@\unskip\unskip#3#4\endstrut@}% + }% + \unvbox\z@} +\newif\ifemptynumber@ +\def\Style@{\emptynumber@false\FN@\Style@@} +\def\Style@@{\ifx\next"\expandafter\Style@@@\else\expandafter\Style@@@@\fi} +\def\Style@@@@#1\Style@{\style{#1}} +\def\Style@@@"#1"\Style@{\DN@{#1}\ifx\next@\empty\emptynumber@true + \else#1\fi} +\newdimen\digits +\setbox0\hbox{0.00} +\digits=\wd0 +\def\maketoc@W{CONTENTS} +\def\maketoc{\checkmainfile@\par\vfill\break + \begingroup + \noset@\unlabel@\let\nopunct\relax\let\nospace\relax\let\overlong\relax + \everypar{}\parindent\z@\lineskiplimit\z@ + \def\HL##1##2##3##4\Page##5##6##7##8{\def\HLlevel@{##1}% + \ifnum\HLlevel@=\@ne + \bigbreak + \begingroup + \def\\{\unskip\space\ignorespaces}% + \setentry@{\bf\def\next@{##2}\ifx\next@\empty\else##2\space\fi + \let\style\HL@@S\Style@##3\Style@\ifemptynumber@\else\space\fi}% + {\bf\ignorespaces##4\unskip}\dotleaders{\Page@{##5}{##6}{##7}{##8}}% + \endgroup + \nobreak\smallskip + \else + \Err@{\string\HL##1 not defined in this style}% + \fi}% + \def\hl##1##2##3##4\Page##5##6##7##8{\def\hllevel@{##1}% + \ifnum\hllevel@=\@ne + \setentry@{\rm\quad\let\style\hl@@S + \hbox to\digits{\Style@##3\Style@\hfil}\enspace}% + {\rm\ignorespaces##4\unskip}\dotleaders{\Page@{##5}{##6}{##7}{##8}}% + \else + \Err@{\string\hl##1 not defined in this style}% + \fi}% + \def\NameHL##1##2{\def##2####1####2####3\Page + {\HL{##1}{####1}{####2}####3\Page}}% + \def\Namehl##1##2{\def##2####1####2####3\Page + {\hl{##1}{####1}{####2}####3\Page}}% + \centerline{\bf\maketoc@W}% + \vskip30\p@ plus10\p@ minus10\p@ + \input\mainfile@.toc + \endgroup} +\def\makelistFigures{\makelist\c{F}List of Figures\endmakelist} +\def\makelistTables{\makelist\c{T}List of Tables\endmakelist} +\def\makelist\c#1#2\endmakelist{\checkmainfile@ + \par\vfill\break + \begingroup + \noset@\unlabel@\let\nopunct\relax\let\nospace\relax\let\overlong\relax + \everypar{}\parindent\z@\lineskiplimit\z@ + \def\listclass@{#1}% + \def\island{\FN@\island@}% + \def\island@{\ifx\next\at@\expandafter\island@@\else + \expandafter\island@@@\fi}% + \def\island@@\at@##1\c##2##3##4##5\Page##6##7##8##9{% + \def\islandtype@{##1}% + \def\next@{##2}% + \ifx\next@\listclass@ + \setentry@{\rm##3 \let\style\island@@@S\Style@##4\Style@ + \ifemptynumber@\else\space\fi}% + {\rm\ignorespaces##5\unskip}\dotleaders{\Page@{##6}{##7}{##8}{##9}}% + \fi}% + \def\island@@@\c##1##2##3##4\Page##5##6##7##8{% + \island@@\at@\island\c{##1}{##2}{##3}##4\Page{##5}{##6}{##7}{##8}}% + \def\newisland##1\c##2##3{\def##1####1####2\Page####3####4####5####6{% + \island\at@##1\c{##2}{##3}{####1}####2\Page{####3}{####4}{####5}{####6}}}% + \newisland\Figure\c{F}{Figure}% + \newisland\Table\c{T}{Table}% + \vbox{\Let@\tabskip\centering@\halign to\hsize + {\bf\hfil\ignorespaces##\unskip\hfil\cr#2\crcr}}% + \vskip30\p@ plus10\p@ minus10\p@ + \input\mainfile@.tic + \endgroup} +\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne + \ch@ck#1#4#2\allocationnumber=\count1#1 + \global#3#5=\allocationnumber + \wlog{\string#5=\string#2\the\allocationnumber}} +\catcode`\@=\active diff --git a/macros/lamstex/inputs/lamstex.stt b/macros/lamstex/inputs/lamstex.stt new file mode 100644 index 0000000000..da0f4307c5 --- /dev/null +++ b/macros/lamstex/inputs/lamstex.stt @@ -0,0 +1,3 @@ +\def\opentables{\HD(10pt;2pt)} +\def\boxedtables{\HD(+3pt;+1pt)} +\rm
\ No newline at end of file diff --git a/macros/lamstex/inputs/lamstex.tex b/macros/lamstex/inputs/lamstex.tex new file mode 100644 index 0000000000..d9a03fdc2f --- /dev/null +++ b/macros/lamstex/inputs/lamstex.tex @@ -0,0 +1,4314 @@ +% LAMSTEX.TEX VERSION 2.01 +% COPYRIGHT (C) 1989, 1990, 1991 BY THE TEXPLORATORS CORPORATION +% 3701 W. ALABAMA, SUITE 450-273, HOUSTON, TX 77027 +% ALL RIGHTS RESERVED + +% ABSOLUTELY NO CHANGES SHOULD BE MADE TO THIS FILE; +% CHANGES SHOULD BE MADE ONLY IN STYLE FILES. + +\catcode`\@=11 +\ifx\amstexloaded@\relax\else + \errmessage{AmS-TeX must be loaded before LamS-TeX}\fi +\ifx\laxread@\undefined\else\catcode`\@=\active\endinput\fi +\def\err@#1{\errmessage{LamS-TeX error: #1}} +\def^^L{\par} +\let\+\tabalign +\def\newcount{\alloc@0\count\countdef\insc@unt} +\def\newdimen{\alloc@1\dimen\dimendef\insc@unt} +\def\newskip{\alloc@2\skip\skipdef\insc@unt} +\def\newmuskip{\alloc@3\muskip\muskipdef\@cclvi} +\def\newbox{\alloc@4\box\chardef\insc@unt} +\let\newtoks\relax +\def\newhelp#1#2{\newtoks#1#1\expandafter{\csname#2\endcsname}} +\def\newtoks{\alloc@5\toks\toksdef\@cclvi} +\def\newread{\alloc@6\read\chardef\sixt@@n} +\def\newwrite{\alloc@7\write\chardef\sixt@@n} +\def\newfam{\alloc@8\fam\chardef\sixt@@n} +\def\newlanguage{\alloc@9\language\chardef\@cclvi} +\def\newinsert#1{\global\advance\insc@unt by\m@ne + \ch@ck0\insc@unt\count + \ch@ck1\insc@unt\dimen + \ch@ck2\insc@unt\skip + \ch@ck4\insc@unt\box + \allocationnumber=\insc@unt + \global\chardef#1=\allocationnumber + \wlog{\string#1=\string\insert\the\allocationnumber}} +\def\newif#1{\count@\escapechar \escapechar\m@ne + \expandafter\expandafter\expandafter + \edef\@if#1{true}{\let\noexpand#1=\noexpand\iftrue}% + \expandafter\expandafter\expandafter + \edef\@if#1{false}{\let\noexpand#1=\noexpand\iffalse}% + \@if#1{false}\escapechar\count@} +\def\bye{\par\vfill\supereject\end} +\let\beginsection\undefined +\def\Err@#1{\errhelp\defaulthelp@\err@{#1}} +{\catcode`\@=\active + \edef\next{\gdef\noexpand@{\futurelet\noexpand\next + \csname at\string@\endcsname}} + \next +} +\def\at@{\ifcat\noexpand\next a\let\next@\at@@\else + \ifcat\noexpand\next0\let\next@\at@@\else + \ifcat\noexpand\next\relax\let\next@\at@@\else + \let\next@\at@@@\fi\fi\fi\next@} +\def\at@@@{\errhelp\athelp@\err@{Invalid use of @}} +\def\at@@#1{\expandafter + \ifx\csname\string#1@at\endcsname\relax\let\next@\at@@@\else + \DN@{\csname\string#1@at\endcsname}\fi\next@} +\def\atdef@#1{\expandafter\def\csname\string#1@at\endcsname} +\newif\iftest@ +\def\tagin@#1{\tagin@false + \DN@##1\tag##2##3\next@{\test@true\ifx\tagin@##2\test@false\fi}% + \next@#1\tag\tagin@\next@\tagin@false\iftest@\tagin@true\fi} +\let\lkerns@\relax +\def\nolinebreak{\RIfM@\mathmodeerr@\nolinebreak\else + \ifhmode\saveskip@\lastskip\unskip + \nobreak\ifdim\saveskip@>\z@\hskip\saveskip@\fi\lkerns@ + \else\vmodeerr@\nolinebreak\fi\fi} +\def\allowlinebreak{\RIfM@\mathmodeerr@\allowlinebreak\else + \ifhmode\saveskip@\lastskip\unskip + \allowbreak\ifdim\saveskip@>\z@\hskip\saveskip@\fi\lkerns@ + \else\vmodeerr@\allowlinebreak\fi\fi} +\def\linebreak{\RIfM@\mathmodeerr@\linebreak\else + \ifhmode\unskip\unkern\break\lkerns@ + \else\vmodeerr@\linebreak\fi\fi} +\let\nkerns@\relax +\def\newline{\RIfM@\mathmodeerr@\newline\else + \ifhmode\unskip\unkern\null\hfill\break\nkerns@ + \else\vmodeerr@\newline\fi\fi}% +\def\newbox@{\alloc@@4\box\chardef\insc@unt} +\def\newcount@{\alloc@@0\count\countdef\insc@unt} +\def\accentedsymbol#1#2{\expandafter\newbox@\csname\exstring@#1@box\endcsname + \setbox\csname\exstring@#1@box\endcsname\hbox{$\m@th#2$}% + \define#1{\copy\csname\exstring@#1@box\endcsname{}}} +\def\rightadd@#1\to#2{\toks@{\\#1}\toks@@\expandafter{#2}\xdef#2{\the\toks@@ + \the\toks@}\toks@{}\toks@@{}} +\def\fontlist@{\\\tenrm\\\sevenrm\\\fiverm\\\teni\\\seveni\\\fivei + \\\tensy\\\sevensy\\\fivesy\\\tenex\\\tenbf\\\sevenbf\\\fivebf + \\\tensl\\\tenit} +\def\font@#1=#2 {\rightadd@#1\to\fontlist@\font#1=#2 } +\def\ismember@#1#2{\global\let\Next@ F\let\next@= #2% + {\def\\##1{\let\nextii@##1\ifx\nextii@\next@\global\let\Next@ T\fi}#1}% + \test@false\ifx\Next@ T\test@true\fi\let\next@\relax} +\def\FNSS@#1{\let\FNSS@@#1\FN@\FNSS@@@} +\def\FNSS@@@{\ifx\next\space@\def\FNSS@@@@. {\FN@\FNSS@@@}\else + \def\FNSS@@@@.{\FNSS@@}\fi\FNSS@@@@.} +\atdef@"{\unskip + \DN@{\ifx\next`\DN@`{\FN@\nextii@}% + \else\ifx\next\lq\DN@\lq{\FN@\nextii@}% + \else\DN@####1{\FN@\nextiii@}\fi\fi + \next@}% + \DNii@{\ifx\next`\DN@`{\sldl@``}% + \else\ifx\next\lq\DN@\lq{\sldl@``}% + \else\DN@{\dlsl@`}\fi\fi\next@}% + \def\nextiii@{\ifx\next'\DN@'{\srdr@''}% + \else\ifx\next\rq\DN@\rq{\srdr@''}% + \else\DN@{\drsr@'}\fi\fi\next@}% + \FNSS@\next@} +\def\root{% + \DN@{\ifx\next\uproot\let\next@\nextii@\else + \ifx\next\leftroot\let\next@\nextiii@\else + \let\next@\plainroot@\fi\fi\next@}% + \DNii@\uproot##1{\uproot@##1\relax\FNSS@\nextiv@}% + \def\nextiv@{\ifx\next\leftroot\let\next@\nextv@\else + \let\next@\plainroot@\fi\next@}% + \def\nextv@\leftroot##1{\leftroot@##1\relax\plainroot@}% + \def\nextiii@\leftroot##1{\leftroot@##1\relax\FNSS@\nextvi@}% + \def\nextvi@{\ifx\next\uproot\let\next@\nextvii@\else + \let\next@\plainroot@\fi\next@}% + \def\nextvii@\uproot##1{\uproot@##1\relax\plainroot@}% + \bgroup\uproot@\z@\leftroot@\z@ + \FNSS@\next@} +\def\loop#1\repeat{\def\iterate{#1\relax\expandafter\iterate\fi}% + \iterate\let\iterate\relax} +\def\gloop@#1\repeat{\gdef\iterate@{#1\relax\expandafter\iterate@\fi}% + \iterate@\global\let\iterate@\relax} +\def\printoptions{\W@{Do you want S(yntax check), + G(alleys) or P(ages)?^^JType S, G or P, follow by <return>: }\loop + \read\m@ne to\ans@ + \edef\next@{\def\noexpand\Ans@{\ans@}}\uppercase\expandafter{\next@}% + \ifx\Ans@\S@\test@true\syntax\else + \ifx\Ans@\G@\test@true\galleys\else + \ifx\Ans@\P@\test@true\else + \test@false\fi\fi\fi + \iftest@\else\W@{Type S, G or P, follow by <return>: }% + \repeat} +\expandafter\let\csname A@;\endcsname; +\expandafter\let\csname A@:\endcsname: +\expandafter\let\csname A@?\endcsname? +\expandafter\let\csname A@!\endcsname! +\def\APdef#1{\def\next@{\expandafter\let\csname A@\string#1\endcsname#1}% + \afterassignment\next@\def#1} +\let\fextra@\, +\def\tdots@{\unskip + \DN@{$\m@th\mathinner{\ldotp\ldotp\ldotp}\, + \ifx\next,\,$\else\ifx\next.\,$\else + \ifx\next;\,$\else + \expandafter\ifx\csname A@\string;\endcsname\next\fextra@$\else + \ifx\next:\,$\else + \expandafter\ifx\csname A@\string:\endcsname\next\fextra@$\else + \ifx\next?\,$\else + \expandafter\ifx\csname A@\string?\endcsname\next\fextra@$\else + \ifx\next!\,$\else + \expandafter\ifx\csname A@\string!\endcsname\next\fextra@$\else + $ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}% + \ \FN@\next@} +\def\extrap@#1{% + \ifx\next,\DN@{#1\,}\else + \ifx\next;\DN@{#1\,}\else + \expandafter\ifx\csname A@\string;\endcsname\next\DN@{#1\fextra@}\else + \ifx\next.\DN@{#1\,}\else\extra@ + \ifextra@\DN@{#1\,}\else + \let\next@#1\fi\fi\fi\fi\fi\next@} +\def\dotsc{\DN@{\ifx\next;\plainldots@\,\else + \expandafter\ifx\csname A@\string;\endcsname\next\plainldots@\fextra@\else + \ifx\next.\plainldots@\,\else\extra@\plainldots@ + \ifextra@\,\fi\fi\fi\fi}% + \FN@\next@} +\def\keybin@{\keybin@true + \ifx\next+\else\ifx\next=\else\ifx\next<\else\ifx\next>\else\ifx\next-\else + \ifx\next*\else\ifx\next:\else + \expandafter\ifx\csname A@\string;\endcsname\next\else + \keybin@false\fi\fi\fi\fi\fi\fi\fi\fi} +\def\boldkey#1{\ifcat\noexpand#1A% + \ifcmmibloaded@{\fam\cmmibfam#1}\else + \Err@{First bold symbol font not loaded}\fi + \else + \let\next=#1% + \ifx#1!\mathchar"5\bffam@21 \else + \expandafter\ifx\csname A@\string!\endcsname\next\mathchar"5\bffam@21 \else + \ifx#1(\mathchar"4\bffam@28 \else\ifx#1)\mathchar"5\bffam@29 \else + \ifx#1+\mathchar"2\bffam@2B \else\ifx#1:\mathchar"3\bffam@3A \else + \expandafter\ifx\csname A@\string:\endcsname\next\mathchar"3\bffam@3A \else + \ifx#1;\mathchar"6\bffam@3B \else + \expandafter\ifx\csname A@\string;\endcsname\next\mathchar"6\bffam@3B \else + \ifx#1=\mathchar"3\bffam@3D \else + \ifx#1?\mathchar"5\bffam@3F \else + \expandafter\ifx\csname A@\string?\endcsname\next\mathchar"5\bffam@3F \else + \ifx#1[\mathchar"4\bffam@5B \else + \ifx#1]\mathchar"5\bffam@5D \else + \ifx#1,\mathchari@63B \else + \ifx#1-\mathcharii@200 \else + \ifx#1.\mathchari@03A \else + \ifx#1/\mathchari@03D \else + \ifx#1<\mathchari@33C \else + \ifx#1>\mathchari@33E \else + \ifx#1*\mathcharii@203 \else + \ifx#1|\mathcharii@06A \else + \ifx#10\bold0\else\ifx#11\bold1\else\ifx#12\bold2\else\ifx#13\bold3\else + \ifx#14\bold4\else\ifx#15\bold5\else\ifx#16\bold6\else\ifx#17\bold7\else + \ifx#18\bold8\else\ifx#19\bold9\else + \Err@{\noexpand\boldkey can't be used with #1}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\arabic#1{#1} +\def\alph#1{\count@#1\relax\advance\count@96 \ifnum\count@>122 + \Err@{\noexpand\alph invalid for numbers > 26}\else\char\count@\fi} +\def\Alph#1{\count@#1\relax\advance\count@64 \ifnum\count@>90 + \Err@{\noexpand\Alph invalid for numbers > 26}\else\char\count@\fi} +\def\roman#1{\romannumeral#1\relax} +\def\Roman#1{\uppercase\expandafter{\romannumeral#1}} +\def\fnsymbol#1{\count@#1\relax + \count@@\count@ + \advance\count@\m@ne\divide\count@7 + \count@@@\count@\advance\count@@@\@ne + \multiply\count@7 \advance\count@@-\count@ + \count@\count@@@ + {\loop + \ifcase\count@@\or*\or\dag\or\ddag\or\P\or\S\or\text{$\|$}\or\#\fi + \advance\count@\m@ne\ifnum\count@>\z@\repeat}} +\def\cardnine@#1{\ifcase#1\or one\or two\or three\or four\or five\or + six\or seven\or eight\or nine\fi} +\let\alloc@\alloc@@ +\newcount\ten@ +\ten@10 +\def\cardinal#1{\count@#1\relax + \ifnum\count@>99 \number\count@ + \else + \ifnum\count@=\z@ zero% + \else + \ifnum\count@<\ten@\cardnine@\count@ + \else + \ifnum\count@<20 + \advance\count@-\ten@ + \ifcase\count@ ten\or eleven\or twelve\or thirteen\or fourteen\or + fifteen\or sixteen\or seventeen\or eighteen\or nineteen\fi + \else + \count@@\count@\count@@@\count@@ + \divide\count@\ten@\multiply\count@\ten@ + \advance\count@@@-\count@\divide\count@\ten@ + \ifcase\count@\or\or twenty\or thirty\or forty\or fifty\or sixty\or + seventy\or eighty\or ninety\fi + \ifnum\count@@@=\z@\else-\cardnine@\count@@@\fi + \fi + \fi + \fi + \fi} +\def\ordnine@#1{\ifcase#1\or first\or second\or third\or fourth\or fifth\or + sixth\or seventh\or eighth\or ninth\fi} +\newcount\count@@@@ +\def\ordsuffix@{\count@@@@\count@ + \divide\count@\ten@ + \count@@@\count@\count@@\count@ + \divide\count@@\ten@\multiply\count@@\ten@ + \advance\count@@@-\count@@ + \ifnum\count@@@=\@ne th% + \else + \count@@@\count@@@@ + \count@@\count@@@@ + \divide\count@@\ten@\multiply\count@@\ten@ + \advance\count@@@-\count@@ + \ifcase\count@@@ th\or st\or nd\or rd\else th\fi + \fi} +\def\nordinal#1{\count@#1\relax\number\count@\ordsuffix@} +\def\spordinal#1{\count@#1\relax\number\count@$^{\text{\ordsuffix@}}$} +\def\ordinal#1{\count@#1\relax + \ifnum\count@>99 \number\count@\ordsuffix@ + \else + \ifnum\count@=\z@ zeroth% + \else + \ifnum\count@<\ten@\ordnine@\count@ + \else + \ifnum\count@<20 \advance\count@-\ten@ + \ifcase\count@ tenth\or eleventh\or twelfth\or thirteenth\or + fourteenth\or fifteenth\or sixteenth\or seventeenth\or eighteenth\or + nineteenth\fi + \else + \count@@\count@ + \divide\count@\ten@\multiply\count@\ten@ + \count@@@\count@@\advance\count@@@-\count@ + \divide\count@\ten@ + \ifcase\count@\or\or twent\or thirt\or fort\or fift\or sixt\or sevent\or + eight\or ninet\fi + \ifnum\count@@@=\z@ ieth\else y-\ordnine@\count@@@\fi + \fi + \fi + \fi + \fi} +\font@\tensmc=cmcsc10 +\textonlyfont@\smc\tensmc +\newtoks\noexpandtoks@ +\noexpandtoks@{\let\arabic\relax\let\alph\relax\let\Alph\relax + \let\roman\relax\let\Roman\relax\let\fnsymbol\relax\let\rm\relax + \let\it\relax\let\bf\relax\let\sl\relax\let\smc\relax + \let\/\relax\let\null\relax} +\def\noexpands@{\the\noexpandtoks@} +\def\Nonexpanding#1{\global\noexpandtoks@ + \expandafter{\the\noexpandtoks@\let#1\relax}} +\def\prevanish@{\saveskip@\z@\ifhmode\saveskip@\lastskip\unskip\fi} +\def\postvanish@{\ifdim\saveskip@>\z@\hskip\saveskip@\fi\FN@\postvanish@@} +\def\postvanish@@{\DN@.{}% + \ifx\next\space@\ifdim\saveskip@>\z@\DN@. {}\fi\fi\next@.} +\def\invisible#1{\prevanish@\ignorespaces#1\unskip\postvanish@} +\def\vanishlist@{\\\invisible} +\let\noindent@\noindent +\def\noindent{\par\noindent@\FN@\pretendspace@} +\def\pretendspace@{\ismember@\vanishlist@\next + \iftest@\nobreak\hskip-\p@\hskip\p@\fi} +\let\flushpar\noindent +\newtoks\everypartoks@ +\def\noindent@@{\par\everypartoks@\expandafter{\the\everypar}\everypar{}% + \noindent@\everypar\expandafter{\the\everypartoks@}} +\def\page{\Err@{\noexpand\page has no meaning by itself}} +\let\page@C\pageno +\let\page@P\empty +\let\page@Q\empty +\def\page@S#1{#1\/} +\def\page@F{\rm} +\def\page@N{\arabic} % cannot be \let +\newif\ifindexing@ +\def\indexfile{\ifindexing@\else + \alloc@@7\write\chardef\sixt@@n\ndx@ + \immediate\openout\ndx@=\jobname.ndx + \global\indexing@true\fi} +\global\advance\insc@unt\m@ne +\ch@ck0\insc@unt\count +\ch@ck1\insc@unt\dimen +\ch@ck2\insc@unt\skip +\ch@ck4\insc@unt\box +\allocationnumber\insc@unt +\global\chardef\margin@\allocationnumber +\dimen\margin@\maxdimen +\count\margin@\z@ +\skip\margin@\z@ +\newif\ifindexproofing@ +\def\indexproofing{\indexproofing@true} +\def\noindexproofing{\indexproofing@false} +\def\unmacro@#1:#2->#3\unmacro@{\def\macpar@{#2}\def\macdef@{#3}} +\def\starparts@#1{\def\stari@{#1}\def\starii@{#1}\let\stariii@\empty + \test@false + \DN@##1*##2##3\next@{\ifx\starparts@##2\test@false\else\test@true\fi}% + \next@#1*\starparts@\next@ + \iftest@\DN@{\starparts@@#1\starparts@@}\else\let\next@\relax\fi\next@} +\def\starparts@@#1*#2\starparts@@{\def\starii@{#1}\def\stariii@{*#2}} +\def\windex@{\ifindexing@ + \expandafter\unmacro@\meaning\stari@\unmacro@ + \edef\macdef@{\string"\macdef@\string"}% + \edef\next@{\write\ndx@{\macdef@}}\next@ + \write\ndx@{{\number\pageno}{\page@N}{\page@P}{\page@Q}}% + \fi + \ifindexproofing@ + \ifx\stariii@\empty\else + \expandafter\unmacro@\meaning\stariii@\unmacro@\fi + \insert\margin@{\hbox{\rm\vrule\height9\p@\depth2\p@\width\z@\starii@ + \ifx\stariii@\empty\else\tt\macdef@\fi}}\fi} +\catcode`\"=\active +\def"{\FN@\quote@} +\def\quote@{\ifx\next"\expandafter\quote@@\else\expandafter\quote@@@\fi} +\def\quote@@@#1"{\starparts@{#1}\starii@\windex@} +\def\quote@@"#1"{\prevanish@\starparts@{#1}\windex@\FN@\quote@@@@} +\def\quote@@@@{\ifx\next"\DN@"{\postvanish@}\else + \let\next@\postvanish@\fi\next@} +\rightadd@"\to\vanishlist@ +\def\idefine#1{\DN@{#1}\DNii@{\noexpand#1}% + \afterassignment\idefine@\def\nextiii@} +\def\idefine@{\ifindexing@ + \expandafter\let\next@\nextiii@ + \expandafter\unmacro@\meaning\nextiii@\unmacro@ + \immediate\write\ndx@{\noexpand\define\nextii@\macpar@{\macdef@}}\fi} +\def\iabbrev*#1#2{\ifindexing@\toks@{#2}% + \immediate\write\ndx@{\noexpand\abbrev*\noexpand#1{\the\toks@}}\fi} +\newread\laxread@ +\newwrite\laxwrite@ +\let\fnpages@\empty +\def\Finit@#1#2\Finit@{\let\nextii@#1\def\nextiii@{#2}} +\catcode`\~=11 +\def\getparts@ @#1~#2~#3~#4~#5~#6{\def\nextiv@{#1}% + \def\nextiii@{#2~#3~#4~#5~}\count@#6\relax} +\newif\ifdocument@ +\def\document{\ifdocument@\else\global\document@true + \let\fontlist@\empty + \immediate\openin\laxread@=\jobname.lax\relax + {\endlinechar\m@ne\noexpands@\catcode`\@=11 \catcode`\~=11 + \loop\ifeof\laxread@\else + \read\laxread@ to\next@ + \ifx\next@\empty + \else + \expandafter\Finit@\next@\Finit@ + \if\nextii@ F% + \expandafter\rightadd@\nextiii@\to\fnpages@ + \else + \expandafter\getparts@\next@ + \edef\next@{\gdef\csname\nextiv@ @L\endcsname{\nextiii@\number\count@}}% + \next@ + \fi + \fi + \repeat}% + \immediate\closein\laxread@ + \immediate\openout\laxwrite@=\jobname.lax\relax\fi} +\let\thelabel@\relax +\def\thelabels@{\thelabel@ ~\thelabel@@ ~\thelabel@@@ ~\thelabel@@@@ ~} +\def\label#1{\prevanish@ + \ifx\thelabel@\relax + \Err@{There's nothing here to be labelled}% + \else + {\noexpands@ + \expandafter\ifx\csname#1@L\endcsname\relax + \expandafter\xdef\csname#1@L\endcsname{\thelabels@0}% + \immediate\write\laxwrite@{@#1~\thelabels@1}% + \else + \edef\next@{@~\csname#1@L\endcsname}% + \expandafter\getparts@\next@ + \ifodd\count@ + \expandafter\xdef\csname#1@L\endcsname{\thelabels@0}% + \immediate\write\laxwrite@{@#1~\thelabels@1}% + \else + \Err@{Label #1 already used}% + \fi + \fi + }% + \fi + \postvanish@} +\rightadd@\label\to\vanishlist@ +\def\thepages@{\page@N{\number\page@C}~% + \page@S{\page@P\page@N{\number\page@C}\page@Q}~% + \number\page@C ~\page@P\page@N{\number\page@C}\page@Q ~} +\def\pagelabel#1{\prevanish@ + \expandafter\ifx\csname#1@L\endcsname\relax + {\noexpands@ + \expandafter\xdef\csname#1@L\endcsname{\thepages@2}}% + \write\laxwrite@{@#1~\thepages@3}% + \else + {\noexpands@ + \edef\next@{@~\csname#1@L\endcsname}% + \expandafter\getparts@\next@ + \ifodd\count@ + \ifnum\count@=\@ne + \expandafter\xdef\csname#1@L\endcsname{\thelabels@2}% + \fi + \write\laxwrite@{@#1~\thepages@3}% + \else + \Err@{Label #1 already used}% + \fi + }% + \fi + \postvanish@} +\rightadd@\pagelabel\to\vanishlist@ +\newif\ifreferr@ +\referr@true +\def\RefErrors{\global\referr@true} +\def\RefWarnings{\global\referr@false} +\setbox\z@\hbox{\global\count@=`^^30} +\ifnum\count@=48 \let\versionthree@\relax\fi +\def\nolabel@#1#2#3{\expandafter\ifx\csname#2@L\endcsname\relax + \ifreferr@\Err@{No \noexpand\label found for #2}\else + \W@{Warning: No \noexpand\label found for #2.}% + \ifx\versionthree@\relax\W@{l.\number\inputlineno\space ... \string#1{#2}}\fi + \fi#3\else} +\def\csL@#1{{\noexpands@\xdef\Next@{\csname#1@L\endcsname}}} +\def\ref#1{\nolabel@\ref{#1}\relax + \DNii@##1~##2\nextii@{##1}% + \csL@{#1}\expandafter\nextii@\Next@\nextii@\fi} +\def\Ref#1{\nolabel@\Ref{#1}\relax + \DNii@##1~##2~##3\nextii@{##2}% + \csL@{#1}\expandafter\nextii@\Next@\nextii@\fi} +\def\nref#1{\nolabel@\nref{#1}\relax + \DNii@##1~##2~##3~##4\nextii@{##3}% + \csL@{#1}\expandafter\nextii@\Next@\nextii@\fi} +\def\pref#1{\nolabel@\pref{#1}\relax + \DNii@##1~##2~##3~##4~##5\nextii@{##4}% + \csL@{#1}\expandafter\nextii@\Next@\nextii@\fi} +\let\pref@\pref +\def\Evaluatenref#1{\nolabel@\Evaluatenref{#1}{\gdef\Nref{-10000 }}% + \DNii@##1~##2~##3~##4\nextii@{\DNii@{##3}}% + \csL@{#1}\expandafter\nextii@\Next@\nextii@ + \xdef\Nref{\nextii@}\fi} +\def\Evaluatepref#1{\nolabel@\Evaluatepref{#1}{\global\let\Pref\empty}% + \DNii@##1~##2~##3~##4~##5\nextii@{\DNii@{##4}}% + \csL@{#1}\expandafter\nextii@\Next@\nextii@ + \xdef\Pref{\nextii@}\fi} +\def\readlax#1{\immediate\openin\laxread@=#1.lax\relax + \ifeof\laxread@\W@{}\W@{File #1.lax not found.}\W@{}\fi + {\endlinechar\m@ne\noexpands@\catcode`\@=11 \catcode`\~=11 + \loop\ifeof\laxread@\else + \read\laxread@ to\nextv@ + \ifx\nextv@\empty + \else + \expandafter\Finit@\nextv@\Finit@ + \ifx\nextii@ F% + \else + \expandafter\getparts@\nextv@ + \expandafter\ifx\csname\nextiv@ @L\endcsname\relax + \edef\next@{\gdef\csname\nextiv@ @L\endcsname + {\nextiii@\ifnum\count@=\@ne0\else2\fi}}% + \next@ + \else + \Err@{Label \nextiv@\space in #1.lax already used}% + \fi + \fi + \fi + \repeat}% + \immediate\closein\laxread@} +\catcode`\~=\active +\def\docstyle#1{\input #1.st\relax} +\def\predocstyle#1{\input #1.stf\relax} +\def\postdocstyle#1{\input #1.stb\relax} +\def\FNSSP@{\FNSS@\pretendspace@} +\everydisplay{\csname displaymath \endcsname} +\expandafter\def\csname displaymath \endcsname#1$${#1$$\FNSSP@} +\def\locallabel@{\let\thelabel@\Thelabel@\let\thelabel@@\Thelabel@@ + \let\thelabel@@@\Thelabel@@@\let\thelabel@@@@\Thelabel@@@@} +\newcount\tag@C +\tag@C\z@ +\let\tag@P\empty +\let\tag@Q\empty +\def\tag@S#1{{\rm(}{#1\/}{\rm)}} +\let\tag@N\arabic +\def\tag@F{\rm} +\def\maketag@{\FN@\maketag@@} +\def\maketag@@{\ifx\next\relax\DN@\relax{\FN@\maketag@@}\else + \ifx\next"\let\next@\maketag@@@\else + \let\next@\maketag@@@@\fi\fi\next@} +\def\xdefThelabel@#1{\xdef\Thelabel@{#1{\Thelabel@@@}}} +\def\xdefThelabel@@#1{\xdef\Thelabel@@{#1{\Thelabel@@@@}}} +\def\maketag@@@@#1\maketag@{\global\advance\tag@C\@ne + {\noexpands@ + \xdef\Thelabel@@@{\number\tag@C}% + \xdefThelabel@\tag@N + \xdef\Thelabel@@@@{\ifmathtags@$\tag@P\Thelabel@\tag@Q$\else + \tag@P\Thelabel@\tag@Q\fi}% + \xdefThelabel@@\tag@S + }% + \locallabel@ + \hbox{\tag@F\thelabel@@}% + #1} +\def\Qlabel@#1{{\noexpands@\xdef\Thelabel@@{#1}% + \let\style\empty\xdef\Thelabel@@@@{#1}% + \let\pre\empty\let\post\empty\xdef\Thelabel@{#1}% + \let\numstyle\empty\xdef\Thelabel@@@{#1}}} +\def\maketag@@@"#1"#2\maketag@{% + {\let\pre\tag@P\let\post\tag@Q\let\style\tag@S\let\numstyle\tag@N + \hbox{\tag@F#1}% + \noexpands@ + \Qlabel@{#1}% + }% + \locallabel@ + #2} +\def\align@{\inalign@true\inany@true + \vspace@\allowdisplaybreak@\displaybreak@\intertext@ + \def\tag{\global\tag@true\ifnum\and@=\z@ + \DN@{&\omit\global\rwidth@\z@&\relax}\else + \DN@{&\relax}\fi\next@}% + \iftagsleft@\DN@{\csname align \endcsname}\else + \DN@{\csname align \space\endcsname}\fi\next@} +\def\noset@{\def\Offset##1##2{\prevanish@\postvanish@}% + \def\Reset##1##2{\prevanish@\postvanish@}} +\def\measure@#1\endalign{\global\lwidth@\z@\global\rwidth@\z@ + \global\maxlwidth@\z@\global\maxrwidth@\z@ + \global\and@\z@ + \setbox\z@\vbox + {\noset@\everycr{\noalign{\global\tag@false\global\and@\z@}}\Let@ + \halign{\setboxz@h{$\m@th\displaystyle{\@lign##}$}% + \global\lwidth@\wdz@ + \ifdim\lwidth@>\maxlwidth@\global\maxlwidth@\lwidth@\fi + \global\advance\and@\@ne + &\setboxz@h{$\m@th\displaystyle{{}\@lign##}$}\global\rwidth@\wdz@ + \ifdim\rwidth@>\maxrwidth@\global\maxrwidth@\rwidth@\fi + \global\advance\and@\@ne + &\Tag@\eat@{##}\crcr#1\crcr}}% + \totwidth@\maxlwidth@\advance\totwidth@\maxrwidth@} +\def\prepost@{\global\let\tag@P@\tag@P\global\let\tag@Q@\tag@Q} +\def\reprepost@{\let\tag@P\tag@P@\let\tag@Q\tag@Q@} +\expandafter\def\csname align \space\endcsname#1\endalign + {\measure@#1\endalign\global\and@\z@ + \ifingather@\everycr{\noalign{\global\and@\z@}}\else\displ@y@\fi + \Let@\tabskip\centering@ + \halign to\displaywidth + {\hfil\strut@\setboxz@h{$\m@th\displaystyle{\@lign##\prepost@}$}% + \boxz@\global\advance\and@\@ne + \tabskip\z@skip + &\setboxz@h{$\m@th\displaystyle{{}\@lign##\prepost@}$}% + \global\rwidth@\wdz@\boxz@\hfil\global\advance\and@\@ne + \tabskip\centering@ + &\setboxz@h{\@lign\strut@\reprepost@\maketag@##\maketag@}% + \dimen@\displaywidth\advance\dimen@-\totwidth@ + \divide\dimen@\tw@\advance\dimen@\maxrwidth@\advance\dimen@-\rwidth@ + \ifdim\dimen@<\tw@\wdz@\llap{\vtop{\normalbaselines\null\boxz@}}% + \else\llap{\boxz@}\fi + \tabskip\z@skip + \crcr#1\crcr + \black@\totwidth@}} +\expandafter\def\csname align \endcsname#1\endalign{\measure@#1\endalign + \global\and@\z@ + \ifdim\totwidth@>\displaywidth\let\displaywidth@\totwidth@\else + \let\displaywidth@\displaywidth\fi + \ifingather@\everycr{\noalign{\global\and@\z@}}\else\displ@y@\fi + \Let@\tabskip\centering@\halign to\displaywidth + {\hfil\strut@\setboxz@h{$\m@th\displaystyle{\@lign##\prepost@}$}% + \global\lwidth@\wdz@\global\lineht@\ht\z@ + \boxz@\global\advance\and@\@ne + \tabskip\z@skip&\setboxz@h{$\m@th\displaystyle{{}\@lign##\prepost@}$}% + \ifdim\ht\z@>\lineht@\global\lineht@\ht\z@\fi + \boxz@\hfil\global\advance\and@\@ne + \tabskip\centering@&\kern-\displaywidth@ + \setboxz@h{\@lign\strut@\reprepost@\maketag@##\maketag@}% + \dimen@\displaywidth\advance\dimen@-\totwidth@ + \divide\dimen@\tw@\advance\dimen@\maxlwidth@\advance\dimen@-\lwidth@ + \ifdim\dimen@<\tw@\wdz@ + \rlap{\vbox{\normalbaselines\boxz@\vbox to\lineht@{}}}\else + \rlap{\boxz@}\fi + \tabskip\displaywidth@\crcr#1\crcr\black@\totwidth@}} +\def\attag@#1{\let\Maketag@\maketag@\let\TAG@\Tag@ + \let\Prepost@\prepost@\let\Reprepost@\reprepost@ + \let\Tag@\relax\let\maketag@\relax + \let\prepost@\relax\let\reprepost@\relax + \ifmeasuring@ + \def\llap@##1{\setboxz@h{##1}\hbox to\tw@\wdz@{}}% + \def\rlap@##1{\setboxz@h{##1}\hbox to\tw@\wdz@{}}% + \else\let\llap@\llap\let\rlap@\rlap\fi + \toks@{\hfil\strut@ + $\m@th\displaystyle{\@lign\the\hashtoks@\prepost@}$% + \tabskip\z@skip\global\advance\and@\@ne& + $\m@th\displaystyle{{}\@lign\the\hashtoks@\prepost@}$\hfil + \ifxat@\tabskip\centering@\fi\global\advance\and@\@ne}% + \iftagsleft@ + \toks@@{\tabskip\centering@&\Tag@\kern-\displaywidth + \rlap@{\@lign\reprepost@\maketag@\the\hashtoks@\maketag@}% + \global\advance\and@\@ne\tabskip\displaywidth}\else + \toks@@{\tabskip\centering@&\Tag@\llap@{\@lign\reprepost@\maketag@ + \the\hashtoks@\maketag@}\global\advance\and@\@ne\tabskip\z@skip}\fi + \atcount@#1\relax\advance\atcount@\m@ne + \loop\ifnum\atcount@>\z@ + \toks@\expandafter{\the\toks@&\hfil$\m@th\displaystyle{\@lign + \the\hashtoks@\prepost@}$\global\advance\and@\@ne + \tabskip\z@skip + &$\m@th\displaystyle{{}\@lign\the\hashtoks@\prepost@}$\hfil\ifxat@ + \tabskip\centering@\fi\global\advance\and@\@ne}\advance\atcount@\m@ne + \repeat + \edef\preamble@{\the\toks@\the\toks@@}% + \edef\preamble@@{\preamble@}% + \let\maketag@\Maketag@\let\Tag@\TAG@ + \let\prepost@\Prepost@\let\reprepost@\Reprepost@} +\def\unlabel@{\def\label##1{\prevanish@\postvanish@}% + \def\pagelabel##1{\prevanish@\postvanish@}} +\newcount\tag@CC +\expandafter\def\csname alignat \endcsname#1#2\endalignat + {\inany@true\xat@false + \def\tag{\global\tag@true + \count@#1\relax\multiply\count@\tw@\advance\count@\m@ne + \gdef\tag@{&}% + \loop\ifnum\count@>\and@\xdef\tag@{&\omit\tag@}% + \advance\count@\m@ne\repeat + \tag@\relax}% + \vspace@\allowdisplaybreak@\displaybreak@\intertext@ + \displ@y@\measuring@true\tag@CC\tag@C + \setbox\savealignat@\hbox{\noset@\unlabel@$\m@th\displaystyle\Let@ + \attag@{#1}\vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}% + \measuring@false + \Let@\attag@{#1}\tag@C\tag@CC + \tabskip\centering@\halign to\displaywidth + {\span\preamble@@\crcr#2\crcr\black@{\wd\savealignat@}}} +\expandafter\def\csname xalignat \endcsname#1#2\endxalignat + {\inany@true\xat@true + \def\tag{\global\tag@true + \count@#1\relax\multiply\count@\tw@\advance\count@\m@ne + \gdef\tag@{&}% + \loop\ifnum\count@>\and@\xdef\tag@{&\omit\tag@}% + \advance\count@\m@ne\repeat + \tag@\relax}% + \vspace@\allowdisplaybreak@\displaybreak@\intertext@ + \displ@y@\measuring@true\tag@CC\tag@C + \setbox\savealignat@\hbox{\noset@\unlabel@$\m@th\displaystyle\Let@ + \attag@{#1}\vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}% + \measuring@false\Let@\attag@{#1}\tag@C\tag@CC + \tabskip\centering@\halign to\displaywidth + {\span\preamble@@\crcr#2\crcr\black@{\wd\savealignat@}}} +\def\gather{\RIfMIfI@\DN@{\onlydmatherr@\gather}\else + \ingather@true\inany@true\def\tag{&\relax}% + \vspace@\allowdisplaybreak@\displaybreak@\intertext@ + \displ@y\Let@ + \iftagsleft@\DN@{\csname gather \endcsname}\else + \DN@{\csname gather \space\endcsname}\fi\fi + \else\DN@{\onlydmatherr@\gather}\fi\next@} +\def\exstring@{\expandafter\eat@\string} +\def\newcounter#1{\define#1{}% + \edef\next@{\def\noexpand#1{\futurelet\noexpand\next + \csname\exstring@#1@Z\endcsname}}\next@ + \edef\next@{\def\csname\exstring@#1@Z\endcsname + {\global\advance\csname\exstring@#1@C\endcsname\@ne + {\csname\exstring@#1@F\endcsname\csname\exstring@#1@S\endcsname + {\csname\exstring@#1@P\endcsname\csname\exstring@#1@N\endcsname + {\noexpand\number\csname\exstring@#1@C\endcsname}% + \csname\exstring@#1@Q\endcsname}}% + \noexpand\ifx\noexpand\next\noexpand\label + \def\noexpand\next@\noexpand\label########1{{\noexpand\noexpands@ + \xdef\noexpand\Thelabel@{\csname\exstring@#1@N\endcsname + {\noexpand\number\csname\exstring@#1@C\endcsname}}% + \xdef\noexpand\Thelabel@@@{\noexpand\number + \csname\exstring@#1@C\endcsname}% + \xdef\noexpand\Thelabel@@{\csname\exstring@#1@S\endcsname + {\csname\exstring@#1@P\endcsname + \csname\exstring@#1@N\endcsname + {\noexpand\number\csname\exstring@#1@C\endcsname}% + \csname\exstring@#1@Q\endcsname}}% + \xdef\noexpand\Thelabel@@@@{\csname\exstring@#1@P\endcsname + \csname\exstring@#1@N\endcsname + {\noexpand\number\csname\exstring@#1@C\endcsname}% + \csname\exstring@#1@Q\endcsname}}% + {\noexpand\locallabel@\noexpand\label{########1}}}% + \noexpand\else\let\noexpand\next@\relax\noexpand\fi\noexpand\next@}}\next@ + \expandafter\newcount@\csname\exstring@#1@C\endcsname + \expandafter\let\csname\exstring@#1@N\endcsname\arabic + \expandafter\def\csname\exstring@#1@S\endcsname##1{##1\/}% + \expandafter\let\csname\exstring@#1@P\endcsname\empty + \expandafter\let\csname\exstring@#1@Q\endcsname\empty + \expandafter\def\csname\exstring@#1@F\endcsname{\rm}% + } +\def\HASH@#1#2{\ifnum#2=\z@\else + \edef\next@{\toks@{\the\toks@\the\hashtoks@#2}% + \toks@@{\the\toks@@{\the\hashtoks@#2}}}\next@\expandafter\HASH@\fi} +\def\HASH@@{\toks@{}\toks@@{}\expandafter\HASH@\macpar@00} +\def\usecounter#1#2{\expandafter\ifx\csname\exstring@#1@Z\endcsname + \relax\Err@{\noexpand#1not created with \string\newcounter}\fi + \expandafter\let\csname\exstring@#1@@Z\endcsname\relax + \expandafter\let\csname\exstring@#1@@Z@\endcsname\relax + \expandafter\let\csname\exstring@#1@@Z@@\endcsname\relax + \edef\next@{\def\noexpand#2{\futurelet\noexpand\next + \csname\exstring@#1@@Z\endcsname}}\next@ + \edef\next@{\def\csname\exstring@#1@@Z\endcsname{\noexpand\ifx + \noexpand\next\noexpand\label\def\noexpand\next@\noexpand\label + ########1{\csname\exstring@#1@@Z@\endcsname + {\noexpand#1\noexpand\label{########1}}}% + \noexpand\else\noexpand\ifx\noexpand\next + \noexpand"\def\noexpand\next@\noexpand"########1\noexpand"% + {\csname\exstring@#1@@Z@\endcsname{{\expandafter\noexpand + \csname\exstring@#1@F\endcsname + \let\noexpand\pre\expandafter\noexpand\csname\exstring@#1@P\endcsname + \let\noexpand\post\expandafter\noexpand\csname\exstring@#1@Q\endcsname + \let\noexpand\style\expandafter\noexpand\csname\exstring@#1@S\endcsname + \let\noexpand\numstyle\expandafter\noexpand\csname\exstring@#1@N\endcsname + ########1}}}\noexpand\else + \def\noexpand\next@{\csname\exstring@#1@@Z@\endcsname{\noexpand#1}}% + \noexpand\fi\noexpand\fi\noexpand\next@}}\next@ + \def\next@{\expandafter\expandafter\expandafter\unmacro@\expandafter + \meaning\csname\exstring@#1@@Z@@\endcsname\unmacro@ + \HASH@@ + \edef\next@{\def\csname\exstring@#1@@Z@\endcsname\the\toks@{% + \expandafter\noexpand\csname\exstring@#1@@Z@@\endcsname\the\toks@@ + \noexpand\FNSSP@}}\next@}% + \afterassignment\next@ + \expandafter\def\csname\exstring@#1@@Z@@\endcsname} +\def\listbi@{\penalty50 \medskip} +\def\listbii@{\penalty100 \smallskip} +\let\listbiii@\relax +\let\listbiv@\relax +\let\listbv@\relax +\def\listmi@{\advance\leftskip30\p@\relax} +\let\listmii@\listmi@ +\let\listmiii@\listmi@ +\let\listmiv@\listmi@ +\let\listmv@\listmi@ +\def\itemi@#1{\noindent@@\llap{#1\hskip5\p@}} +\let\itemii@\itemi@ +\let\itemiii@\itemi@ +\let\itemiv@\itemi@ +\let\itemv@\itemi@ +\def\liste@{\penalty-50 \medskip} +\def\listei@{\penalty-100 \smallskip} +\let\listeii@\relax +\let\listeiii@\relax +\let\listeiv@\relax +\expandafter\newcount\csname list@C1\endcsname +\csname list@C1\endcsname\z@ +\expandafter\newcount\csname list@C2\endcsname +\csname list@C2\endcsname\z@ +\expandafter\newcount\csname list@C3\endcsname +\csname list@C3\endcsname\z@ +\expandafter\newcount\csname list@C4\endcsname +\csname list@C4\endcsname\z@ +\expandafter\newcount\csname list@C5\endcsname +\csname list@C5\endcsname\z@ +\expandafter\let\csname list@P1\endcsname\empty +\expandafter\let\csname list@P2\endcsname\empty +\expandafter\let\csname list@P3\endcsname\empty +\expandafter\let\csname list@P4\endcsname\empty +\expandafter\let\csname list@P5\endcsname\empty +\expandafter\let\csname list@Q1\endcsname\empty +\expandafter\let\csname list@Q2\endcsname\empty +\expandafter\let\csname list@Q3\endcsname\empty +\expandafter\let\csname list@Q4\endcsname\empty +\expandafter\let\csname list@Q5\endcsname\empty +\expandafter\def\csname list@S1\endcsname#1{{\rm(}{#1\/}{\rm)}} +\expandafter\def\csname list@S2\endcsname#1{{\rm(}{#1\/}{\rm)}} +\expandafter\def\csname list@S3\endcsname#1{{\rm(}{#1\/}{\rm)}} +\expandafter\def\csname list@S4\endcsname#1{{\rm(}{#1\/}{\rm)}} +\expandafter\def\csname list@S5\endcsname#1{{\rm(}{#1\/}{\rm)}} +\expandafter\let\csname list@N1\endcsname\arabic +\expandafter\let\csname list@N2\endcsname\arabic +\expandafter\let\csname list@N3\endcsname\arabic +\expandafter\let\csname list@N4\endcsname\arabic +\expandafter\let\csname list@N5\endcsname\arabic +\expandafter\def\csname list@F1\endcsname{\rm} +\expandafter\def\csname list@F2\endcsname{\rm} +\expandafter\def\csname list@F3\endcsname{\rm} +\expandafter\def\csname list@F4\endcsname{\rm} +\expandafter\def\csname list@F5\endcsname{\rm} +\newcount\listlevel@ +\listlevel@\z@ +\def\list@@C{\csname list@C\number\listlevel@\endcsname} +\def\list@@P{\csname list@P\number\listlevel@\endcsname} +\def\list@@Q{\csname list@Q\number\listlevel@\endcsname} +\def\list@@S{\csname list@S\number\listlevel@\endcsname} +\def\list@@N{\csname list@N\number\listlevel@\endcsname} +\def\list@@F{\csname list@F\number\listlevel@\endcsname} +\newif\iffirstitemi@ +\newif\iffirstitemii@ +\newif\iffirstitemiii@ +\newif\iffirstitemiv@ +\newif\iffirstitemv@ +\def\Firstitem@true{\csname firstitem\romannumeral\listlevel@ + @true\endcsname} +\def\Firstitem@false{\csname firstitem\romannumeral\listlevel@ + @false\endcsname} +\def\Listm@{\csname listm\romannumeral\listlevel@ @\endcsname} +\def\Item@{\csname item\romannumeral\listlevel@ @\endcsname} +\def\Liste@{\csname liste\romannumeral\listlevel@ @\endcsname} +\newif\iflistcontinue@ +\def\keepitem{\listcontinue@true} +\newcount\list@C@ +\def\list{% + \iflistcontinue@\csname list@C1\endcsname\csname list@C@\endcsname\fi + \global\csname list@C2\endcsname\z@ + \global\csname list@C3\endcsname\z@ + \global\csname list@C4\endcsname\z@ + \global\csname list@C5\endcsname\z@ + \begingroup + \firstitemi@true + \listlevel@\@ne + \def\item{\FN@\item@}% + \FN@\list@} +\Invalid@\runinitem +\def\list@{\ifx\next\par + \DN@\par{\FN@\list@}\else + \ifx\next\runinitem + \DN@\runinitem{\FN@\runinitem@}\else + \DN@{\par\dimen@\parskip\parskip\dimen@}\fi\fi\next@} +\newif\ifoutlevel@ +\newif\ifrunin@ +\def\item@{% + \ifoutlevel@\Liste@\outlevel@false\fi + \ifrunin@\runin@false\par + \dimen@\parskip\parskip\dimen@ + \Listm@\fi + \iffirstitemi@\listbi@\listmi@\firstitemi@false\else\par\fi + \iffirstitemii@\listbii@\listmii@\firstitemii@false\else\par\fi + \iffirstitemiii@\listbiii@\listmiii@\firstitemiii@false\else\par\fi + \iffirstitemiv@\listbiv@\listmiv@\firstitemiv@false\else\par\fi + \iffirstitemv@\listbv@\listmv@\firstitemv@false\else\par\fi + \DN@"##1"{{\let\pre\list@@P\let\post\list@@Q + \let\style\list@@S\let\numstyle\list@@N + \vskip-\parskip + \Item@{\list@@F##1}% + \noexpands@ + \Qlabel@{##1}}% + \locallabel@ + \FNSSP@}% + \DNii@{\global\advance\list@@C\@ne + {\noexpands@ + \xdef\Thelabel@@@{\number\list@@C}% + \xdefThelabel@\list@@N + \xdef\Thelabel@@@@{\list@@P\Thelabel@\list@@Q}% + \xdefThelabel@@\list@@S + }% + \locallabel@ + \vskip-\parskip + \Item@{\list@@F\thelabel@@}% + \FN@\pretendspace@}% + \ifx\next"\expandafter\next@\else\expandafter\nextii@\fi} +\def\runinitem@{% + \runin@true + \Firstitem@false + \DN@"##1"{{\let\pre\list@@P\let\post\list@@Q + \let\style\list@@S\let\numstyle\list@@N + \unskip\space{\list@@F##1} % + \noexpands@ + \Qlabel@{##1}}% + \locallabel@ + \ignorespaces}% + \DNii@{\global\advance\list@@C\@ne + {\noexpands@ + \xdef\Thelabel@@@{\number\list@@C}% + \xdefThelabel@\list@@N + \xdef\Thelabel@@@@{\list@@P\Thelabel@\list@@Q}% + \xdefThelabel@@\list@@S + }% + \locallabel@ + \unskip\space{\list@@F\thelabel@@} }% + \ifx\next"\expandafter\next@\else\expandafter\nextii@\fi} +\def\inlevel{\ifnum\listlevel@=5 + \DN@{\Err@{Already 5 levels down}}\else + \DN@{\begingroup\advance\listlevel@\@ne + \Firstitem@true\FN@\inlevel@}\fi\next@} +\def\inlevel@{\ifx\next\par + \DN@\par{\FN@\inlevel@}\else + \ifx\next\runinitem + \DN@\runinitem{\FN@\runinitem@}\else + \let\next@\relax\fi\fi\next@} +\def\outlevel{\ifnum\listlevel@=\@ne + \Err@{At top level}\else + \par\global\list@@C\z@\endgroup\outlevel@true\fi} +\def\endlist{% + \expandafter\global\csname list@C@\endcsname\csname list@C1\endcsname + \par + \global\toks\@ne{}\count@\listlevel@ + {\loop + \ifnum\count@>\z@\global\toks\@ne\expandafter{\the\toks\@ne\endgroup}% + \advance\count@\m@ne + \repeat}% + \the\toks\@ne + \liste@ + \listcontinue@false\global\csname list@C1\endcsname\z@ + \vskip-\parskip + \noindent@@ + \FN@\pretendspace@} +\newif\iffirstdescribe@ +\def\describe{\par + \begingroup\firstdescribe@true + \def\item##1{% + \iffirstdescribe@\penalty50 \medskip\vskip-\parskip + \firstdescribe@false\else\par\fi + \noindent@@\hangindent2pc\hangafter\@ne + {\bf##1}\hskip.5em}} +\def\enddescribe{\par\penalty-50 \medskip\vskip-\parskip\endgroup} +\Invalid@\pullin +\Invalid@\pullinmore +\newif\iffirstpull@ +\def\margins{\par\begingroup\firstpull@true + \def\pullin##1##2{\par + \iffirstpull@\firstpull@false\else\endgroup\fi + \begingroup\DN@{##1}% + \ifx\next@\empty\leftskip\z@\else\ifx\next@\space\leftskip\z@ + \else\leftskip##1\fi\fi + \DN@{##2}\ifx\next@\empty\rightskip\z@\else\ifx\next@\space + \rightskip\z@\else\rightskip##2\fi\fi\ignorespaces}% + \def\pullinmore##1##2{\par + \xdef\Next@{\leftskip\the\leftskip\relax\rightskip\the\rightskip\relax}% + \iffirstpull@\firstpull@false\else\endgroup\fi + \begingroup\Next@ + \DN@{##1}% + \ifx\next@\empty\else\ifx\next@\space\else\advance\leftskip##1\fi\fi + \DN@{##2}\ifx\next@\empty\else\ifx\next@\space\else + \advance\rightskip##2\fi\fi\ignorespaces}} +\def\endmargins{\par\endgroup\endgroup} +\newif\ifnopunct@ +\newif\ifnospace@ +\newif\ifoverlong@ +\let\nofrillslist@\empty +\let\overlonglist@\empty +\def\nopunct{\nopunct@true\FN@\nopunct@} +\def\nospace{\nospace@true\FN@\nospace@} +\def\overlong{\overlong@true\FN@\overlong@} +\def\nopunct@{\ifx\next\nospace + \DN@\nospace{\nospace@true\FN@\nopnos@}\else\ifx\next\overlong + \DN@\overlong{\overlong@true\FN@\nopol@}\else + \let\next@\nopunct@@\fi\fi\next@} +\def\nopunct@@#1{\ismember@\nofrillslist@#1% + \iftest@\let\next@#1\else + \DN@{\nopunct@false\Err@{\noexpand\nopunct can't be used with + \string#1}#1}\fi\next@} +\def\nospace@{\ifx\next\nopunct + \DN@\nopunct{\nopunct@true\FN@\nopnos@}\else\ifx\next\overlong + \DN@\overlong{\overlong@true\FN@\nosol@}\else + \let\next@\nospace@@\fi\fi\next@} +\def\nospace@@#1{\ismember@\nofrillslist@#1% + \iftest@\let\next@#1\else + \DN@{\nospace@false\Err@{\noexpand\nospace can't be used with + \string#1}#1}\fi\next@} +\def\overlong@{\ifx\next\nopunct + \DN@\nopunct{\nopunct@true\FN@\nopol@}\else\ifx\next\nospace + \DN@\nospace{\nospace@true\FN@\nosol@}\else + \let\next@\overlong@@\fi\fi\next@} +\def\overlong@@#1{\ismember@\overlonglist@#1% + \iftest@\let\next@#1\else + \DN@{\overlong@false\Err@{\noexpand\overlong can't be used with + \string#1}#1}\fi\next@} +\def\nopnos@{\ifx\next\overlong + \DN@\overlong{\overlong@true\nopnosol@}\else + \let\next@\nopnos@@\fi\next@} +\def\nopol@{\ifx\next\nospace + \DN@\nospace{\nospace@true\nopnosol@}\else + \let\next@\nopol@@\fi\next@} +\def\nosol@{\ifx\next\nopunct + \DN@\nopunct{\nopunct@true\nopnosol@}\else + \let\next@\nosol@@\fi\next@} +\def\nopnos@@#1{\ismember@\nofrillslist@#1% + \iftest@\let\next@#1\else + \DN@{\nopunct@false\nospace@false + \Err@{\noexpand\nopunct\noexpand\nospace + can't be used with \string#1}#1}\fi\next@} +\def\testii@#1{\ismember@\nofrillslist@#1% + \iftest@\let\nextiii@ T\else\let\nextiii@ F\fi + \ismember@\overlonglist@#1% + \iftest@\let\nextiv@ T\else\let\nextiv@ F\fi + \test@false\if\nextiii@ T\if\nextiv@ T\test@true\fi\fi} +\def\nopol@@#1{\testii@{#1}% + \iftest@\let\next@#1% + \else\DN@{\if\nextiii@ T\else\nopunct@false\fi + \if\nextiv@ T\else\overlong@false\fi + \Err@{\if\nextiii@ T\else\noexpand\nopunct\fi + \if\nextiv@ T\else\noexpand\overlong\fi can't be used + with \string#1}#1}\fi\next@} +\def\nosol@@#1{\testii@{#1}% + \iftest@\let\next@#1% + \else\DN@{\if\nextiii@ T\else\nospace@false\fi + \if\nextiv@ T\else\overlong@false\fi + \Err@{\if\nextiii@ T\else\noexpand\nospace\fi + \if\nextiv@ T\else\noexpand\overlong\fi can't be used + with \string#1}#1}\fi\next@} +\def\nopnosol@#1{\testii@{#1}% + \iftest@\let\next@#1% + \else\DN@{\if\nextiii@ T\else\nopunct@false\nospace@false\fi + \if\nextiv@ T\else\overlong@false\fi + \Err@{\if\nextiii@ T\else\noexpand\nopunct\noexpand\nospace\fi + \if\nextiv@ T\else\noexpand\overlong\fi can't be used + with \string#1}#1}\fi\next@} +\def\punct@#1{\ifnopunct@\else#1\fi} +\def\addspace@#1{\ifnospace@\else#1\fi} +\def\hss@{\ifoverlong@\z@ plus\@m\p@ minus\@m\p@ + \else \z@ plus\@m\p@\fi} +\rightadd@\demo\to\nofrillslist@ +\newif\ifclaim@ +\def\exxx@{\expandafter\expandafter\expandafter\eat@\expandafter\string} +\let\colon@: +\def\demo#1{\ifclaim@ + \Err@{Previous \expandafter\noexpand\claimtype@ has + no matching \string\end\exxx@\claimtype@}% + \let\next@\relax + \else + \par + \ifdim\lastskip<\smallskipamount\removelastskip\smallskip\fi + \begingroup + \noindent@@{\smc\ignorespaces#1\unskip + \punct@{\null\colon@}\addspace@\enspace}% + \nopunct@false\nospace@false + \rm + \DN@{\FNSSP@}% + \fi + \next@} +\def\enddemo{\par\endgroup\nopunct@false\nospace@false\smallskip} +\rightadd@\claim\to\nofrillslist@ +\def\claim@F{\smc} +\def\claim@@@F{\csname\exxx@\claimtype@ @F\endcsname} +\def\claimformat@#1#2#3{% + \medbreak\noindent@@{\smc#1 {\claim@@@F#2} #3% + \punct@{\null.}\addspace@\enspace}\sl} +\def\claimformat@@#1#2{\claimformat@{\ignorespaces#1\unskip}% + {\ifx\thelabel@@\empty\unskip\else\thelabel@@\fi}% + {\ignorespaces#2\unskip}% + \let\Claimformat@@\claimformat@@\FNSSP@} +\let\Claimformat@@\claimformat@@ +\def\claim@@@P{\csname\exxx@\claimtype@ @P\endcsname} +\def\claim@@@Q{\csname\exxx@\claimtype@ @Q\endcsname} +\def\claim@@@S{\csname\exxx@\claimtype@ @S\endcsname} +\def\claim@@@N{\csname\exxx@\claimtype@ @N\endcsname} +\def\claim@@@C{\csname claim@C\claimclass@\endcsname} +\newcount\claim@C +\claim@C\z@ +\let\claim@P\empty +\let\claim@Q\empty +\def\claim@S#1{#1\/} +\let\claim@N\arabic +\def\claim{\claim@true\let\claimclass@\empty + \def\claimtype@{\claim}\FN@\claim@} +\def\claim@{% + \ifx\next\c + \let\next@\claim@c + \else + \ifx\next"% + \let\next@\claim@q + \else + \begingroup\global\advance\claim@C\@ne + {\noexpands@ + \xdef\Thelabel@@@{\number\claim@C}% + \xdefThelabel@\claim@N + \xdef\Thelabel@@@@{\claim@P\Thelabel@\claim@Q}% + \xdefThelabel@@\claim@S + }% + \locallabel@ + \let\next@\Claimformat@@ + \fi + \fi + \next@} +\def\claim@c\c#1{\claim@true\begingroup + \expandafter + \ifx\csname claim@C#1\endcsname\relax + \expandafter\newcount@\csname claim@C#1\endcsname + \global\csname claim@C#1\endcsname\@ne + \else + \global\advance\csname claim@C#1\endcsname\@ne + \fi + \def\claimclass@{#1}% + {\noexpands@ + \xdef\Thelabel@@@{\number\claim@@@C}% + \xdefThelabel@\claim@@@N + \xdef\Thelabel@@@@{\claim@@@P\Thelabel@\claim@@@Q}% + \xdefThelabel@@\claim@@@S + }% + \locallabel@ + \FNSS@\claim@c@} +\def\claim@q"#1"{\begingroup + {\let\pre\claim@@@P\let\post\claim@@@Q + \let\style\claim@@@S\let\numstyle\claim@@@N + \noexpands@ + \Qlabel@{#1}}% + \locallabel@ + \FNSS@\claim@q@} +\def\claim@c@{\ifx\next"% + \global\advance\claim@@@C\m@ne\let\next@\claim@cq + \else\let\next@\Claimformat@@\fi\next@} +\def\claim@cq"#1"{{\let\pre\claim@@@P\let\post\claim@@@Q + \let\style\claim@@@S\let\numstyle\claim@@@N + \noexpands@ + \Qlabel@{#1}}% + \locallabel@ + \FNSS@\Claimformat@@} +\def\claim@q@{\ifx\next\c\expandafter\claim@qc + \else\expandafter\Claimformat@@\fi} +\def\claim@qc\c#1{\expandafter\ifx\csname claim@C#1\endcsname\relax + \expandafter\newcount@\csname claim@C#1\endcsname + \global\csname claim@C#1\endcsname\z@\fi + \FNSS@\Claimformat@@} +\def\endclaim{\endgroup\claim@false\nopunct@false\nospace@false + \let\Claimformat@@\claimformat@@\medbreak} +\Invalid@\claimclause +\def\newclaim{\FN@\newclaim@} +\def\newclaim@{\ifx\next\claimclause + \DN@\claimclause##1{\newclaim@@{##1}}\else + \DN@{\newclaim@@\relax}\fi\next@} +\def\claimlist@{\\\claim} +\newtoks\claim@i +\newtoks\claim@v +\let\noclaimclause@=F +\def\newclaim@@#1#2#3\c#4#5{\define#2{}% + \rightadd@#2\to\claimlist@\rightadd@#2\to\nofrillslist@% + \expandafter\def\csname\exstring@#2@P\endcsname{\claim@P}% + \expandafter\def\csname\exstring@#2@Q\endcsname{\claim@Q}% + \expandafter\def\csname\exstring@#2@S\endcsname{\claim@S}% + \expandafter\def\csname\exstring@#2@N\endcsname{\claim@N}% + \expandafter\def\csname\exstring@#2@F\endcsname{\claim@F}% + \expandafter\def\csname end\exstring@#2\endcsname{\endclaim}% + \expandafter\ifx\csname claim@C#4\endcsname\relax + \expandafter\newcount@\csname claim@C#4\endcsname + \global\csname claim@C#4\endcsname\z@\fi + \edef\next@{\let\csname\exstring@#2@C\endcsname + \csname claim@C#4\endcsname}\next@ + \def#2{\ifx\noclaimclause@ T\else#1\fi + \global\claim@i{#1}\gdef\claim@iv{#4}\global\claim@v{#5}% + \def\claimtype@{#2}\def\Claimformat@@{\claimformat@@{#5}}\claim@c\c{#4}}} +\def\shortenclaim#1#2{\define#2{}% + \ismember@\claimlist@#1% + \iftest@ + \rightadd@#2\to\nofrillslist@% + \expandafter\def\csname\exstring@#2@P\endcsname + {\csname\exstring@#1@P\endcsname}% + \expandafter\def\csname\exstring@#2@Q\endcsname + {\csname\exstring@#1@Q\endcsname}% + \expandafter\def\csname\exstring@#2@S\endcsname + {\csname\exstring@#1@S\endcsname}% + \expandafter\def\csname\exstring@#2@N\endcsname + {\csname\exstring@#1@N\endcsname}% + \expandafter\def\csname\exstring@#2@F\endcsname + {\csname\exstring@#1@F\endcsname}% + \expandafter\def\csname end\exstring@#2\endcsname{\endclaim}% + \edef\next@{\let\csname\exstring@#2@C\endcsname + \csname claim\exstring@#1C\endcsname}\next@ + \setbox\z@\vbox{\let\noclaimclause@ T#1""\relax\endgroup}% + \edef#2{\the\claim@i + \def\noexpand\claimtype@{\noexpand#2}% + \def\noexpand\Claimformat@@{\noexpand\claimformat@@{\the\claim@v}\relax}% + \noexpand\claim@c\noexpand\c{\claim@iv}}% + \else + \Err@{\noexpand#1not yet created by \string\newclaim}% + \fi} +\def\classtest@#1{\DN@{#1}\ifx\next@\claimclass@ + \test@true\else\test@false\fi} +\def\typetest@#1{\DN@{#1}\ifx\next@\claimtype@\test@true\else + \test@false\fi} +\newif\iftoc@ +\def\tocfile{\iftoc@\else\alloc@@7\write\chardef\sixt@@n\toc@ + \immediate\openout\toc@=\jobname.toc + \alloc@@7\write\chardef\sixt@@n\tic@ + \immediate\openout\tic@=\jobname.tic + \global\toc@true\fi} +\rightadd@\hl\to\nofrillslist@ +\rightadd@\HL\to\overlonglist@ +\def\HL@@C{\csname HL@C\HLlevel@\endcsname} +\def\HL@@P{\csname HL@P\HLlevel@\endcsname} +\def\HL@@Q{\csname HL@Q\HLlevel@\endcsname} +\def\HL@@S{\csname HL@S\HLlevel@\endcsname} +\def\HL@@N{\csname HL@N\HLlevel@\endcsname} +\def\HL@@F{\csname HL@F\HLlevel@\endcsname} +\def\HL@@@C{\csname\exxx@\HLtype@ @C\endcsname} +\def\HL@@@P{\csname\exxx@\HLtype@ @P\endcsname} +\def\HL@@@Q{\csname\exxx@\HLtype@ @Q\endcsname} +\def\HL@@@S{\csname\exxx@\HLtype@ @S\endcsname} +\def\HL@@@N{\csname\exxx@\HLtype@ @N\endcsname} +\def\HL#1{\expandafter + \ifx\csname HL@C#1\endcsname\relax + \DN@{\Err@{\string\HL#1 not defined in this style}}% + \else + \DN@{\gdef\HLlevel@{#1}\def\HLname@{\HL{#1}}\let\HLtype@\relax\FNSS@\HL@}% + \fi + \next@}% +\newif\ifquoted@ +\let\aftertoc@\relax +\def\HL@{% + \DN@"##1"##2\endHL{\def\entry@{##2}\quoted@true + {\noexpands@ + \ifx\HLtype@\relax + \let\pre\HL@@P\let\post\HL@@Q\let\style\HL@@S\let\numstyle\HL@@N + \else + \let\pre\HL@@@P\let\post\HL@@@Q\let\style\HL@@@S\let\numstyle\HL@@@N + \fi + \Qlabel@{##1}\let\style\relax\xdef\Qlabel@@@@{##1}% + \xdef\Thepref@{\Thelabel@@@@}}% + \csname HL@\HLlevel@\endcsname##2\endHL + \let\pref\Thepref@ + \csname HL@I\HLlevel@\endcsname + \csname HL@J\HLlevel@\endcsname + \let\pref\pref@ + \HLtoc@ + \aftertoc@ + \let\aftertoc@\relax\overlong@false}% + \DNii@##1\endHL{\def\entry@{##1}\quoted@false + {\noexpands@ + \ifx\HLtype@\relax + \global\advance\HL@@C\@ne + \xdef\Thelabel@@@{\number\HL@@C}% + \xdefThelabel@{\HL@@N}% + \xdef\Thelabel@@@@{\HL@@P\Thelabel@\HL@@Q}% + \xdefThelabel@@{\HL@@S}% + \else + \global\advance\HL@@@C\@ne + \xdef\Thelabel@@@{\number\HL@@@C}% + \xdefThelabel@{\HL@@@N}% + \xdef\Thelabel@@@@{\HL@@@P\Thelabel@\HL@@@Q}% + \xdefThelabel@@{\HL@@@S}% + \fi + \xdef\Thepref@{\Thelabel@@@@}}% + \csname HL@\HLlevel@\endcsname##1\endHL + \let\pref\Thepref@ + \csname HL@I\HLlevel@\endcsname + \csname HL@J\HLlevel@\endcsname + \let\pref\pref@ + \HLtoc@ + \aftertoc@ + \let\aftertoc@\relax\overlong@false}% + \ifx\next"\expandafter\next@\else\expandafter\nextii@\fi}% +\Invalid@\endHL +\def\hl@@C{\csname hl@C\hllevel@\endcsname} +\def\hl@@P{\csname hl@P\hllevel@\endcsname} +\def\hl@@Q{\csname hl@Q\hllevel@\endcsname} +\def\hl@@S{\csname hl@S\hllevel@\endcsname} +\def\hl@@N{\csname hl@N\hllevel@\endcsname} +\def\hl@@F{\csname hl@F\hllevel@\endcsname} +\def\hl@@@C{\csname\exxx@\hltype@ @C\endcsname} +\def\hl@@@P{\csname\exxx@\hltype@ @P\endcsname} +\def\hl@@@Q{\csname\exxx@\hltype@ @Q\endcsname} +\def\hl@@@S{\csname\exxx@\hltype@ @S\endcsname} +\def\hl@@@N{\csname\exxx@\hltype@ @N\endcsname} +\def\hl#1{\expandafter + \ifx\csname hl@C#1\endcsname\relax + \DN@{\Err@{\string\hl#1 not defined in this style}}% + \else + \DN@{\gdef\hllevel@{#1}\def\hlname@{\hl{#1}}\let\hltype@\relax\FNSS@\hl@}% + \fi + \next@} +\def\hl@{% + \DN@"##1"##2{\def\entry@{##2}\quoted@true + {\noexpands@ + \ifx\hltype@\relax + \let\pre\hl@@P\let\post\hl@@Q\let\style\hl@@S\let\numstyle\hl@@N + \else + \let\pre\hl@@@P\let\post\hl@@@Q\let\style\hl@@@S\let\numstyle\hl@@@N + \fi + \Qlabel@{##1}\let\style\relax\xdef\Qlabel@@@@{##1}% + \xdef\Thepref@{\Thelabel@@@@}}% + \csname hl@\hllevel@\endcsname{##2}% + \let\pref\Thepref@ + \csname hl@I\hllevel@\endcsname + \csname hl@J\hllevel@\endcsname + \let\pref\pref@ + \hltoc@ + \aftertoc@ + \let\aftertoc@\relax\nopunct@false\nospace@false\FNSSP@}% + \DNii@##1{\def\entry@{##1}\quoted@false + {\noexpands@ + \ifx\hltype@\relax + \global\advance\hl@@C\@ne + \xdef\Thelabel@@@{\number\hl@@C}% + \xdefThelabel@{\hl@@N}% + \xdef\Thelabel@@@@{\hl@@P\Thelabel@\hl@@Q}% + \xdefThelabel@@{\hl@@S}% + \else + \global\advance\hl@@@C\@ne + \xdef\Thelabel@@@{\number\hl@@@C}% + \xdefThelabel@{\hl@@@N}% + \xdef\Thelabel@@@@{\hl@@@P\Thelabel@\hl@@@Q}% + \xdefThelabel@@{\hl@@@S}% + \fi + \xdef\Thepref@{\Thelabel@@@@}}% + \csname hl@\hllevel@\endcsname{##1}% + \let\pref\Thepref@ + \csname hl@I\hllevel@\endcsname + \csname hl@J\hllevel@\endcsname + \let\pref\pref@ + \hltoc@ + \aftertoc@ + \let\aftertoc@\relax\nopunct@false\nospace@false\FNSSP@}% + \ifx\next"\expandafter\next@\else\expandafter\nextii@\fi}% +\def\six@#1#2 #3 #4 #5 #6 #7 {\DN@{#2}\ifx\next@\empty + \DN@##1\six@{}\else + \write#1{ #2 #3 #4 #5 #6 #7}\DN@{\six@#1}\fi + \next@} +\def\Sixtoc@{\ifx\macdef@\empty\else + \DN@##1##2\next@{\def\macdef@{##1##2}}% + \expandafter\next@\macdef@\next@ + \edef\next@ + {\noexpand\six@\toc@\macdef@ + \space\space\space\space\space\space\space\space\space\space\space\space + \noexpand\six@}% + \next@\let\macdef@\relax\fi} +\def\QorThelabel@@@@{\ifquoted@ + \noexpand\noexpand\noexpand"\Qlabel@@@@\noexpand\noexpand\noexpand"\else + \Thelabel@@@@\fi} +\def\HLtoc@{% + \iftoc@ + \expandafter\expandafter\expandafter\unmacro@ + \expandafter\meaning\csname HL@W\HLlevel@\endcsname\unmacro@ + {\noexpands@\let\style\relax + \edef\next@{\write\toc@{\noexpand\noexpand\expandafter\noexpand\HLname@ + {\macdef@}{\QorThelabel@@@@}}}% + \next@}% + \expandafter\unmacro@\meaning\entry@\unmacro@ + \Sixtoc@ + \write\toc@{\noexpand\Page{\number\pageno}{\page@N}% + {\page@P}{\page@Q}^^J}% + \fi} +\def\hltoc@{% + \iftoc@ + \expandafter\expandafter\expandafter\unmacro@ + \expandafter\meaning\csname hl@W\hllevel@\endcsname\unmacro@ + {\noexpands@\let\style\relax + \edef\next@{\write\toc@{% + \ifnopunct@\noexpand\noexpand\noexpand\nopunct\fi + \ifnospace@\noexpand\noexpand\noexpand\nospace\fi + \noexpand\noexpand\expandafter\noexpand\hlname@ + {\macdef@}{\QorThelabel@@@@}}}% + \next@}% + \expandafter\unmacro@\meaning\entry@\unmacro@ + \Sixtoc@ + \write\toc@{\noexpand\Page{\number\pageno}{\page@N}% + {\page@P}{\page@Q}^^J}% + \fi} +\def\mainfile#1{\def\mainfile@{#1}} +\def\checkmainfile@{\ifx\mainfile@\undefined + \Err@{No \noexpand\mainfile specified}\fi} +\expandafter\newcount@\csname HL@C1\endcsname +\csname HL@C1\endcsname\z@ +\expandafter\def\csname HL@S1\endcsname#1{#1\null.} +\expandafter\let\csname HL@N1\endcsname\arabic +\expandafter\let\csname HL@P1\endcsname\empty +\expandafter\let\csname HL@Q1\endcsname\empty +\expandafter\def\csname HL@F1\endcsname{\bf} +\expandafter\let\csname HL@W1\endcsname\empty +\expandafter\newcount@\csname hl@C1\endcsname +\csname hl@C1\endcsname\z@ +\expandafter\def\csname hl@S1\endcsname#1{#1\/} +\expandafter\let\csname hl@N1\endcsname\arabic +\expandafter\let\csname hl@P1\endcsname\empty +\expandafter\let\csname hl@Q1\endcsname\empty +\expandafter\def\csname hl@F1\endcsname{\bf} +\expandafter\let\csname hl@W1\endcsname\empty +\expandafter\def\csname HL@1\endcsname#1\endHL{\bigbreak + {\locallabel@ + \global\setbox\@ne\vbox{\Let@\tabskip\hss@ + \halign to\hsize{\bf\hfil\ignorespaces##\unskip\hfil\cr + \expandafter\ifx\csname HL@W1\endcsname\empty\else + \csname HL@W1\endcsname\space\fi + {\HL@@F\ifx\thelabel@@\empty\else\thelabel@@\space\fi}% + \ignorespaces#1\crcr}}% + }% + \unvbox\@ne\nobreak\medskip} +\expandafter\def\csname hl@1\endcsname#1{\medbreak\noindent@@ + {\locallabel@ + \bf{\hl@@F\ifx\thelabel@@\empty\else\thelabel@@\space\fi}% + \ignorespaces#1\unskip\punct@{\null.}\addspace@\enspace}} +\expandafter\def\csname HL@I1\endcsname{\Reset\hl1{1}% + \ifx\pref\empty\newpre\hl1{}\else\newpre\hl1{\pref.}\fi} +\def\NameHL#1#2{\define#2{}% + \expandafter\ifx\csname HL@R#1\endcsname\relax + \else + \def\nextiv@{\let\nextiii@}% + \expandafter\nextiv@\csname HL@R#1\endcsname + \expandafter\let\nextiii@\undefined + \expandafter\let\csname\exxx@\nextiii@ @C\endcsname\relax + \expandafter\let\csname\exxx@\nextiii@ @P\endcsname\relax + \expandafter\let\csname\exxx@\nextiii@ @Q\endcsname\relax + \expandafter\let\csname\exxx@\nextiii@ @S\endcsname\relax + \expandafter\let\csname\exxx@\nextiii@ @N\endcsname\relax + \expandafter\let\csname\exxx@\nextiii@ @F\endcsname\relax + \expandafter\let\csname\exxx@\nextiii@ @W\endcsname\relax + \expandafter\let\csname end\exxx@\nextiii@\endcsname\undefined + \fi + \expandafter\gdef\csname HL@R#1\endcsname{#2}% + \expandafter\gdef\csname\exstring@#2@R\endcsname{{HL}{#1}}% + \iftoc@\write\toc@{\noexpand\NameHL#1\noexpand#2^^J}\fi + \rightadd@#2\to\overlonglist@ + \edef\next@{\let\csname\exstring@#2@C\endcsname\expandafter\noexpand + \csname HL@C#1\endcsname}\next@ + \edef\next@{\let\csname\exstring@#2@P\endcsname\expandafter\noexpand + \csname HL@P#1\endcsname}\next@ + \edef\next@{\let\csname\exstring@#2@Q\endcsname\expandafter\noexpand + \csname HL@Q#1\endcsname}\next@ + \edef\next@{\let\csname\exstring@#2@S\endcsname\expandafter\noexpand + \csname HL@S#1\endcsname}\next@ + \edef\next@{\let\csname\exstring@#2@N\endcsname\expandafter\noexpand + \csname HL@N#1\endcsname}\next@ + \edef\next@{\let\csname\exstring@#2@F\endcsname\expandafter\noexpand + \csname HL@F#1\endcsname}\next@ + \edef\next@{\let\csname\exstring@#2@W\endcsname\expandafter\noexpand + \csname HL@W#1\endcsname}\next@ + \edef\next@{\def\noexpand#2####1\expandafter\noexpand + \csname end\exstring@#2\endcsname + {\def\noexpand\HLtype@{\noexpand#2}% + \def\noexpand\HLname@{\noexpand#2}% + \gdef\noexpand\HLlevel@{#1}% + \noexpand\FNSS@\noexpand\HL@####1\noexpand\endHL}}% + \next@ + \edef\next@{\noexpand\Invalid@\expandafter\noexpand + \csname end\exstring@#2\endcsname}% + \next@} +\def\Namehl#1#2{\define#2{}% + \expandafter\ifx\csname hl@R#1\endcsname\relax + \else + \def\nextiv@{\let\nextiii@}% + \expandafter\nextiv@\csname hl@R#1\endcsname + \expandafter\let\nextiii@\undefined + \expandafter\let\csname\exxx@\nextiii@ @C\endcsname\relax + \expandafter\let\csname\exxx@\nextiii@ @P\endcsname\relax + \expandafter\let\csname\exxx@\nextiii@ @Q\endcsname\relax + \expandafter\let\csname\exxx@\nextiii@ @S\endcsname\relax + \expandafter\let\csname\exxx@\nextiii@ @N\endcsname\relax + \expandafter\let\csname\exxx@\nextiii@ @F\endcsname\relax + \expandafter\let\csname\exxx@\nextiii@ @W\endcsname\relax + \fi + \expandafter\gdef\csname hl@R#1\endcsname{#2}% + \expandafter\gdef\csname\exstring@#2@R\endcsname{{hl}{#1}}% + \iftoc@\write\toc@{\noexpand\Namehl#1\noexpand#2^^J}\fi + \rightadd@#2\to\nofrillslist@% + \edef\next@{\let\csname\exstring@#2@C\endcsname\expandafter\noexpand + \csname hl@C#1\endcsname}\next@ + \edef\next@{\let\csname\exstring@#2@P\endcsname\expandafter\noexpand + \csname hl@P#1\endcsname}\next@ + \edef\next@{\let\csname\exstring@#2@Q\endcsname\expandafter\noexpand + \csname hl@Q#1\endcsname}\next@ + \edef\next@{\let\csname\exstring@#2@S\endcsname\expandafter\noexpand + \csname hl@S#1\endcsname}\next@ + \edef\next@{\let\csname\exstring@#2@N\endcsname\expandafter\noexpand + \csname hl@N#1\endcsname}\next@ + \edef\next@{\let\csname\exstring@#2@F\endcsname\expandafter\noexpand + \csname hl@F#1\endcsname}\next@ + \edef\next@{\let\csname\exstring@#2@W\endcsname\expandafter\noexpand + \csname hl@W#1\endcsname}\next@ + \edef\next@{\def\noexpand#2{% + \def\noexpand\hltype@{\noexpand#2}% + \def\noexpand\hlname@{\noexpand#2}% + \gdef\noexpand\hllevel@{#1}% + \noexpand\FNSS@\noexpand\hl@}}% + \next@}% +\def\Initialize{\FN@\Init@} +\def\Init@{\ifx\next\HL\let\next@\InitH@\else\ifx\next\hl\let\next@\InitH@ + \else\let\next@\InitS@\fi\fi\next@} +\def\InitH@#1#2{\expandafter\ifx\csname\exstring@#1@C#2\endcsname\relax + \DN@{\Err@{\noexpand#1level #2 not defined in this style}}\else + \DN@{\expandafter\gdef\csname\exstring@#1@J#2\endcsname}\fi\next@} +\def\InitC@#1#2{\edef\nextii@{\expandafter\noexpand\csname#1\endcsname{#2}}} +\def\InitS@#1{\expandafter\ifx\csname\exstring@#1@R\endcsname\relax + \Err@{\noexpand#1not defined in this style}\let\next@\relax\else + \DN@{\let\next@}\expandafter\next@\csname\exstring@#1@R\endcsname + \expandafter\InitC@\next@ + \DN@{\expandafter\InitH@\nextii@}\fi\next@} +\def\value#1{\expandafter + \ifx\csname\exstring@#1@C\endcsname\relax + \expandafter\ifx\csname\exstring@#1@C1\endcsname\relax + \DN@{\Err@{\noexpand\value can't be used with \string#1}}% + \else + \DN@{\value@#1}% + \fi + \else + \DN@{\number\csname\exstring@#1@C\endcsname\relax}% + \fi + \next@} +\def\value@#1#2{\expandafter + \ifx\csname\exstring@#1@C#2\endcsname\relax + \DN@{\Err@{\string\value\string#1 can't be followed by \string#2}}% + \else + \DN@{\number\csname\exstring@#1@C#2\endcsname\relax}% + \fi + \next@} +\newcount\Value +\def\Evaluate#1{\expandafter + \ifx\csname\exstring@#1@C\endcsname\relax + \expandafter\ifx\csname\exstring@#1@C1\endcsname\relax + \DN@{\Err@{\noexpand\Evaluate can't be used with \string#1}}% + \else + \DN@{\Evaluate@#1}% + \fi + \else + \DN@{\global\Value\csname\exstring@#1@C\endcsname}% + \fi + \next@} +\def\Evaluate@#1#2{\expandafter + \ifx\csname\exstring@#1@C#2\endcsname\relax + \DN@{\Err@{\string\Evaluate\string#1 can't be followed by \string#2}}% + \else + \DN@{\global\Value\csname\exstring@#1@C#2\endcsname}% + \fi\next@} +\def\pre#1{\expandafter + \ifx\csname\exstring@#1@P\endcsname\relax + \expandafter\ifx\csname\exstring@#1@P1\endcsname\relax + \DN@{\Err@{\noexpand\pre can't be used with \string#1}}% + \else + \DN@{\pre@#1}% + \fi + \else + \DN@{{\csname\exstring@#1@P\endcsname}}% + \fi + \next@} +\def\pre@#1#2{\expandafter + \ifx\csname\exstring@#1@P#2\endcsname\relax + \DN@{\Err@{\string\pre\string#1 can't be followed by \string#2}}% + \else + \DN@{{\csname\exstring@#1@P#2\endcsname}}% + \fi + \next@} +\def\post#1{\expandafter + \ifx\csname\exstring@#1@Q\endcsname\relax + \expandafter\ifx\csname\exstring@#1@Q1\endcsname\relax + \DN@{\Err@{\noexpand\post can't be used with \string#1}}% + \else + \DN@{\post@#1}% + \fi + \else + \DN@{{\csname\exstring@#1@Q\endcsname}}% + \fi + \next@} +\def\post@#1#2{\expandafter + \ifx\csname\exstring@#1@Q#2\endcsname\relax + \DN@{\Err@{\string\post\string#1 can't be followed by \string#2}}% + \else + \DN@{{\csname\exstring@#1@Q#2\endcsname}}% + \fi + \next@} +\def\style#1{\expandafter + \ifx\csname\exstring@#1@S\endcsname\relax + \expandafter\ifx\csname\exstring@#1@S1\endcsname\relax + \DN@{\Err@{\noexpand\style can't be used with \string#1}}% + \else + \DN@{\style@#1}% + \fi + \else + \DN@{\csname\exstring@#1@S\endcsname}% + \fi + \next@} +\def\style@#1#2{\expandafter + \ifx\csname\exstring@#1@S#2\endcsname\relax + \DN@{\Err@{\string\style\string#1 can't be followed by \string#2}}% + \else + \DN@{\csname\exstring@#1@S#2\endcsname}% + \fi + \next@} +\def\fontstyle#1{\expandafter + \ifx\csname\exstring@#1@F\endcsname\relax + \expandafter\ifx\csname\exstring@#1@F1\endcsname\relax + \DN@{\Err@{\noexpand\fontstyle can't be used with \string#1}}% + \else + \DN@{\fontstyle@#1}% + \fi + \else + \DN@##1{{\csname\exstring@#1@F\endcsname##1}}% + \fi + \next@} +\def\fontstyle@#1#2{\expandafter + \ifx\csname\exstring@#1@F#2\endcsname\relax + \DN@{\Err@{\string\fontstyle\string#1 can't be followed by \string#2}}% + \else + \DN@##1{{\csname\exstring@#1@F#2\endcsname##1}}% + \fi + \next@} +\def\Reset#1{\expandafter + \ifx\csname\exstring@#1@C\endcsname\relax + \expandafter\ifx\csname\exstring@#1@C1\endcsname\relax + \DN@{\Err@{\noexpand\Reset can't be used with \string#1}}% + \else + \DN@{\Reset@#1}% + \fi + \else + \DN@##1{\count@##1\relax\ifx#1\page\else\advance\count@\m@ne\fi + \global\csname\exstring@#1@C\endcsname\count@}% + \fi + \next@} +\def\Reset@#1#2{\expandafter + \ifx\csname\exstring@#1@C#2\endcsname\relax + \DN@{\Err@{\string\Reset\string#1 can't be followed by \string#2}}% + \else + \DN@##1{\count@##1\relax\advance\count@\m@ne + \global\csname\exstring@#1@C#2\endcsname\count@}% + \fi + \next@} +\def\Offset#1{\expandafter + \ifx\csname\exstring@#1@C\endcsname\relax + \expandafter\ifx\csname\exstring@#1@C1\endcsname\relax + \DN@{\Err@{\noexpand\Offset can't be used with \string#1}}% + \else + \DN@{\Offset@#1}% + \fi + \else + \DN@##1{\count@##1\relax\advance\count@\m@ne\global\advance + \csname\exstring@#1@C\endcsname\count@}% + \fi + \next@} +\def\Offset@#1#2{\expandafter + \ifx\csname\exstring@#1@C#2\endcsname\relax + \DN@{\Err@{\string\Offset\string#1 can't be followed by \string#2}}% + \else + \DN@##1{\count@##1\relax\advance\count@\m@ne + \global\advance\csname\exstring@#1@C#2\endcsname\count@}% + \fi + \next@} +\def\getR@#1#2{\def\nextiv@{\let\nextiii@}\expandafter\nextiv@ + \csname\exstring@#1@R#2\endcsname} +\def\letR@#1#2#3{\expandafter\let\csname#1@#3#2\endcsname\Next@} +\def\letR@@#1#2{\expandafter\let\csname\exstring@#1@#2\endcsname\Next@} +\def\newpre#1{\expandafter + \ifx\csname\exstring@#1@P\endcsname\relax + \expandafter\ifx\csname\exstring@#1@P1\endcsname\relax + \DN@{\Err@{\noexpand\newpre can't be used with \string#1}}% + \else + \DN@{\newpre@#1}% + \fi + \else + \DN@{% + \DNii@{% + \endgroup + \expandafter\let\csname\exstring@#1@P\endcsname\Next@ + \expandafter\ifx\csname\exstring@#1@R\endcsname\relax\else + \getR@#1{}\expandafter\letR@\nextiii@ P\fi + }% + \begingroup\noexpands@\afterassignment\nextii@\xdef\Next@}% + \fi + \next@} +\def\newpre@#1#2{\expandafter + \ifx\csname\exstring@#1@P#2\endcsname\relax + \DN@{\Err@{\string\newpre\string#1 can't be followed by \string#2}}% + \else + \DN@{% + \DNii@{% + \endgroup + \expandafter\let\csname\exstring@#1@P#2\endcsname\Next@ + \expandafter\ifx\csname\exstring@#1@R#2\endcsname\relax\else + \getR@#1{#2}\expandafter\letR@@\nextiii@ P\fi + }% + \begingroup\noexpands@\afterassignment\nextii@\xdef\Next@}% + \fi + \next@} +\def\newpost#1{\expandafter + \ifx\csname\exstring@#1@Q\endcsname\relax + \expandafter\ifx\csname\exstring@#1@Q1\endcsname\relax + \DN@{\Err@{\noexpand\newpost can't be used with \string#1}}% + \else + \DN@{\newpost@#1}% + \fi + \else + \DN@{% + \DNii@{% + \endgroup + \expandafter\let\csname\exstring@#1@Q\endcsname\Next@ + \expandafter\ifx\csname\exstring@#1@R\endcsname\relax\else + \getR@#1{}\expandafter\letR@\nextiii@ Q\fi + }% + \begingroup\noexpands@\afterassignment\nextii@\xdef\Next@}% + \fi + \next@} +\def\newpost@#1#2{\expandafter + \ifx\csname\exstring@#1@Q#2\endcsname\relax + \DN@{\Err@{\string\newpost\string#1 can't be followed by \string#2}}% + \else + \DN@{% + \DNii@{% + \endgroup + \expandafter\let\csname\exstring@#1@Q#2\endcsname\Next@ + \expandafter\ifx\csname\exstring@#1@R#2\endcsname\relax\else + \getR@#1{#2}\expandafter\letR@@\nextiii@ Q\fi + }% + \begingroup\noexpands@\afterassignment\nextii@\xdef\Next@}% + \fi + \next@} +\def\newstyle#1{\expandafter + \ifx\csname\exstring@#1@S\endcsname\relax + \expandafter\ifx\csname\exstring@#1@S1\endcsname\relax + \DN@{\Err@{\noexpand\newstyle can't be used + with \string#1}}% + \else + \DN@{\newstyle@#1}% + \fi + \else + \DN@{% + \DNii@{% + \expandafter\let\csname\exstring@#1@S\endcsname\Next@ + \expandafter\ifx\csname\exstring@#1@R\endcsname\relax\else + \getR@#1{}\expandafter\letR@\nextiii@ S\fi + }% + \afterassignment\nextii@\gdef\Next@}% + \fi + \next@} +\def\newstyle@#1#2{\expandafter + \ifx\csname\exstring@#1@S#2\endcsname\relax + \DN@{\Err@{\string\newstyle\string#1 can't be followed by + \string#2}}% + \else + \DN@{% + \DNii@{% + \expandafter\let\csname\exstring@#1@S#2\endcsname\Next@ + \expandafter\ifx\csname\exstring@#1@R#2\endcsname\relax\else + \getR@#1{#2}\expandafter\letR@@\nextiii@ S\fi + }% + \afterassignment\nextii@\gdef\Next@}% + \fi + \next@} +\def\newnumstyle#1{\expandafter + \ifx\csname\exstring@#1@N\endcsname\relax + \expandafter\ifx\csname\exstring@#1@N1\endcsname\relax + \DN@{\Err@{\noexpand\newnumstyle can't be used with + \string#1}}% + \else + \DN@{\newnumstyle@#1}% + \fi + \else + \DN@##1{% + \gdef\Next@{##1}% + \expandafter\let\csname\exstring@#1@N\endcsname\Next@ + \expandafter\ifx\csname\exstring@#1@R\endcsname\relax\else + \getR@#1{}\expandafter\letR@\nextiii@ N\fi + }% + \fi + \next@} +\def\newnumstyle@#1#2{\expandafter + \ifx\csname\exstring@#1@N#2\endcsname\relax + \DN@{\Err@{\string\newnumstyle\string#1 can't be followed by + \string#2}}% + \else + \DN@##1{% + \gdef\Next@{##1}% + \expandafter\let\csname\exstring@#1@N#2\endcsname\Next@ + \expandafter\ifx\csname\exstring@#1@R#2\endcsname\relax\else + \getR@#1{#2}\expandafter\letR@@\nextiii@ N\fi + }% + \fi + \next@} +\def\newfontstyle#1{\expandafter + \ifx\csname\exstring@#1@F\endcsname\relax + \expandafter\ifx\csname\exstring@#1@F1\endcsname\relax + \DN@{\Err@{\noexpand\newfontstyle can't be used with + \string#1}}% + \else + \DN@{\newfontstyle@#1}% + \fi + \else + \DN@##1{% + \gdef\Next@{##1}% + \expandafter\let\csname\exstring@#1@F\endcsname\Next@ + \expandafter\ifx\csname\exstring@#1@R\endcsname\relax\else + \getR@#1{}\expandafter\letR@\nextiii@ F\fi + }% + \fi + \next@} +\def\newfontstyle@#1#2{\expandafter + \ifx\csname\exstring@#1@F#2\endcsname\relax + \DN@{\Err@{\string\newfontstyle\string#1 can't be followed by + \string#2}}% + \else + \DN@##1{% + \gdef\Next@{##1}% + \expandafter\let\csname\exstring@#1@F#2\endcsname\Next@ + \expandafter\ifx\csname\exstring@#1@R#2\endcsname\relax\else + \getR@#1{#2}\expandafter\letR@@\nextiii@ F\fi + }% + \fi + \next@} +\def\word#1{\expandafter + \ifx\csname\exstring@#1@W\endcsname\relax + \expandafter\ifx\csname\exstring@#1@W1\endcsname\relax + \DN@{\Err@{\noexpand\word can't be used with \string#1}}% + \else + \DN@{\word@#1}% + \fi + \else + \DN@{{\csname\exstring@#1@W\endcsname}}% + \fi + \next@} +\def\word@#1#2{\expandafter + \ifx\csname\exstring@#1@W#2\endcsname\relax + \DN@{\Err@{\string\word\noexpand#1can't be followed by \string#2}}% + \else + \DN@{{\csname\exstring@#1@W#2\endcsname}}% + \fi + \next@} +\def\newword#1{\expandafter + \ifx\csname\exstring@#1@W\endcsname\relax + \expandafter\ifx\csname\exstring@#1@W1\endcsname\relax + \DN@{\Err@{\noexpand\newword can't be used with \string#1}}% + \else + \DN@{\newword@#1}% + \fi + \else + \DN@{% + \DNii@{% + \expandafter\let\csname\exstring@#1@W\endcsname\Next@ + \expandafter\ifx\csname\exstring@#1@R\endcsname\relax\else + \getR@#1{}\expandafter\letR@\nextiii@ W\fi + }% + \afterassignment\nextii@\gdef\Next@}% + \fi + \next@} +\def\newword@#1#2{\expandafter + \ifx\csname\exstring@#1@W#2\endcsname\relax + \DN@{\Err@{\string\newword\noexpand#1can't be followed by \string#2}}% + \else + \DN@{% + \DNii@{% + \expandafter\let\csname\exstring@#1@W#2\endcsname\Next@ + \expandafter\ifx\csname\exstring@#1@R#2\endcsname\relax\else + \getR@#1{#2}\expandafter\letR@@\nextiii@ W\fi + }% + \afterassignment\nextii@\gdef\Next@}% + \fi + \next@} +\newif\iffn@ +\newcount\footmark@C +\footmark@C\z@ +\def\footmark@S#1{$^{#1}$} +\let\footmark@N\arabic +\def\footmark@F{\rm} +\def\foottext@S#1{$^{#1}$} +\def\foottext@F{\rm} +\let\modifyfootnote@\relax +\def\modifyfootnote#1{\def\modifyfootnote@{#1}} +\def\vfootnote@#1{\insert\footins + \bgroup + \floatingpenalty\@MM\interlinepenalty\interfootnotelinepenalty + \leftskip\z@\rightskip\z@\spaceskip\z@\xspaceskip\z@ + \rm\splittopskip\ht\strutbox\splitmaxdepth\dp\strutbox + \locallabel@\noindent@@{\foottext@F#1}\modifyfootnote@ + \footstrut\FN@\fo@t} +\def\fo@t{\ifcat\bgroup\noexpand\next\expandafter\f@@t\else + \expandafter\f@t\fi} +\def\f@t#1{#1\@foot} +\def\f@@t{\bgroup\aftergroup\@foot\afterassignment\FNSSP@\let\next@} +\def\@foot{\unskip\lower\dp\strutbox\vbox to\dp\strutbox{}\egroup + \iffn@\expandafter\fn@false\else + \expandafter\postvanish@\fi} +\newif\ifplainfn@ +\plainfn@true +\def\fancyfootnotes{\plainfn@false} +\newcount\fancyfootmarkcount@ +\fancyfootmarkcount@\z@ +\newcount\lastfnpage@ +\lastfnpage@-\@M +\let\justfootmarklist@\empty +\def\footmark{\let\@sf\empty + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi + \DN@{\ifx"\next\expandafter\nextii@\else\expandafter\footmark@\fi}% + \DNii@"##1"{% + \iffirstchoice@ + {\let\style\footmark@S\let\numstyle\footmark@N + \footmark@F##1% + \noexpands@ + \let\style\foottext@S + \Qlabel@{##1}% + }% + \iffn@\else + {\noexpands@ + \xdef\Next@{{\Thelabel@}{\Thelabel@@}{\Thelabel@@@}{\Thelabel@@@@}}% + }% + \expandafter\rightappend@\Next@\to\justfootmarklist@ + \fi + \fi + \@sf\relax}% + \FN@\next@} +\def\footmark@{% + \iffirstchoice@ + \global\advance\footmark@C\@ne + \ifplainfn@ + \xdef\adjustedfootmark@{\number\footmark@C}% + \else + {\let\\\or\xdef\Next@{\ifcase\number\footmark@C\fnpages@\else + -\@M\fi}}% + \ifnum\Next@=-\@M + \xdef\adjustedfootmark@{\number\footmark@C}% + \else + \ifnum\Next@=\lastfnpage@ + \global\advance\fancyfootmarkcount@\@ne + \else + \global\fancyfootmarkcount@\@ne + \global\lastfnpage@\Next@ + \fi + \xdef\adjustedfootmark@{\number\fancyfootmarkcount@}% + \fi + \fi + {\noexpands@ + \xdef\Thelabel@@@{\adjustedfootmark@}% + \xdefThelabel@\footmark@N + \xdef\Thelabel@@@@{\Thelabel@}% + \xdefThelabel@@\foottext@S + }% + \iffn@\else + {\noexpands@ + \xdef\Next@{{\Thelabel@}{\Thelabel@@}{\Thelabel@@@}{\Thelabel@@@@}}% + }% + \expandafter\rightappend@\Next@\to\justfootmarklist@ + \fi + \ifplainfn@ + \else + \edef\next@{\write\laxwrite@{F\noexpand\the\pageno}}\next@ + \fi + \fi + \footmark@S{\footmark@N{\adjustedfootmark@}}% + \@sf\relax} +\def\foottext{\prevanish@ + \ifx\justfootmarklist@\empty + \Err@{There is no \noexpand\footmark for this \string\foottext}\fi + \DN@\\##1##2\next@{\DN@{##1}\gdef\justfootmarklist@{##2}}% + \expandafter\next@\justfootmarklist@\next@ + \expandafter\foottext@\next@} +\def\foottext@#1#2#3#4{{\noexpands@ + \xdef\Thelabel@{#1}\xdef\Thelabel@@{#2}% + \xdef\Thelabel@@@{#3}\xdef\Thelabel@@@@{#4}}% + \vfootnote@{\thelabel@@}} +\rightadd@\foottext\to\vanishlist@ +\def\footnote{\fn@true + \let\@sf\empty + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi + \DN@{\ifx"\next\expandafter\nextii@\else\expandafter\nextiii@\fi}% + \DNii@"##1"{\footmark"##1"\vfootnote@{\let\style\foottext@S + \let\numstyle\footmark@N##1}}% + \def\nextiii@{\footmark\vfootnote@{\foottext@S{\footmark@N + {\adjustedfootmark@}}}}% + \FN@\next@} +\newdimen\litindent +\litindent20\p@ +\newbox\litbox@ +\newbox\Litbox@ +\newcount\interlitpenalty@ +\interlitpenalty@\@M +\newcount\litlines@ +{\obeyspaces\gdef\defspace@{\def {\allowbreak\hskip.5emminus.15em}}} +{\obeylines\gdef\letM@{\let^^M\CtrlM@}} +\def\CtrlM@{\egroup + \ifcase\litlines@\advance\litlines@\@ne\or + \box\litbox@\advance\litlines@\@ne\else + \penalty\interlitpenalty@\box\litbox@\fi + \Lit@} +\def\Lit@{\setbox\litbox@\hbox\bgroup\litdefs@\hskip\litindent} +\newcount\littab@ +\littab@8 +\def\littab#1{\littab@#1\relax} +{\catcode`\^^I=\active\gdef\letTAB@{\let^^I\TAB@}} +\def\TAB@{\egroup + \dimen@\wd\litbox@ + \advance\dimen@-\litindent + \setboxz@h{\tt0}% + \dimen@ii\littab@\wdz@ + \divide\dimen@\dimen@ii + \multiply\dimen@\dimen@ii + \advance\dimen@\littab@\wdz@ + \advance\dimen@\litindent + \setbox\litbox@\hbox\bgroup\litdefs@\hbox to\dimen@{\unhbox\litbox@\hfil}} +{\catcode`\`=\active\gdef`{\relax\lq}} +\let\litbs@\relax +\let\litbs@@\relax +\def\litbackslash#1{% + \edef\litbs@{\catcode`\string#1=\z@ + \def\noexpand\litbs@@{\def\expandafter\noexpand\csname\string#1\endcsname + {\char`\string#1}}}} +\def\litcodes@{\catcode`\\=12 + \catcode`\{=12 \catcode`\}=12 + \catcode`\$=12 \catcode`\&=12 + \catcode`\#=12 + \catcode`\^=12 \catcode`\_=12 + \catcode`\@=12 \catcode`\~=12 \catcode`\"=12 + \catcode`\;=12 \catcode`\:=12 \catcode`\!=12 \catcode`\?=12 + \catcode`\%=12 \litbs@\catcode`\`=\active\obeyspaces\defspace@} +\def\activate@#1#2{{\lccode`\~=`#2% + \lowercase{% + \if0#1% + \gdef\Next@{\def~{\egroup\endgroup\bigskip\vskip-\parskip + \def\next@{\noindent@@\FN@\pretendspace@}\FNSS@\next@}}\else + \gdef\Next@{\def~{\egroup\egroup\endgroup}}\fi + }% + }} +\def\litdefs@{\let\0\empty\let\1\litdelim@\def\ {\char32 }\litbs@@}% +\def\litdelimiter#1{% + \edef\litdelim@{\char`#1}% + \def\lit#1{\leavevmode\begingroup\litcodes@\litdefs@ + \tt\hyphenchar\tentt\m@ne\lit@}% + \def\lit@##1#1{##1\endgroup\null}% + \def\Lit#1{\ifhmode$$\abovedisplayskip\bigskipamount + \abovedisplayshortskip\bigskipamount + \belowdisplayskip\z@\belowdisplayshortskip\z@ + \postdisplaypenalty\@M + $$\vskip-\baselineskip\else\bigskip\fi + \begingroup\litlines@\z@ + \catcode`#1=\active\activate@0#1\Next@ + \def\displaybreak{\egroup\break\litlines@\z@\Lit@}% + \def\allowdisplaybreak{\egroup\allowbreak\litlines@\z@\Lit@}% + \def\allowdisplaybreaks{\egroup\allowbreak\interlitpenalty@\z@ + \litlines@\z@\Lit@}% + \litcodes@\tt\catcode`\^^I=\active\letTAB@ + \obeylines\letM@\Lit@}% + \def\Litbox##1=#1{\begingroup\ifodd##1\relax\aftergroup\global\fi + \aftergroup\setbox\aftergroup##1\aftergroup\box\aftergroup\Litbox@ + \def\allowdisplaybreak{\egroup\allowbreak\litlines@\z@\Lit@}% + \def\allowdisplaybreaks{\egroup\allowbreak\interlitpenalty@\z@ + \litlines@\z@\Lit@}% + \catcode`#1=\active\activate@1#1\Next@ + \litcodes@\tt\catcode`\^^I=\active\letTAB@ + \obeylines\letM@\global\setbox\Litbox@\vbox\bgroup\litindent\z@% + \litlines@\z@\Lit@}% +} +\newbox\titlebox@ +\setbox\titlebox@\vbox{} +\rightadd@\title\to\overlonglist@ +\def\title{\begingroup\Let@ + \global\setbox\titlebox@\vbox\bgroup\tabskip\hss@ + \halign to\hsize\bgroup\bf\hfil\ignorespaces##\unskip\hfil\cr} +\def\endtitle{\crcr\egroup\egroup\endgroup\overlong@false} +\newbox\authorbox@ +\rightadd@\author\to\overlonglist@ +\def\author{\begingroup\Let@ + \global\setbox\authorbox@\vbox\bgroup\tabskip\hss@ + \halign to\hsize\bgroup\rm\hfil\ignorespaces##\unskip\hfil\cr} +\def\endauthor{\crcr\egroup\egroup\endgroup\overlong@false} +\newbox\affilbox@ +\def\affil{\begingroup\Let@ + \global\setbox\affilbox@\vbox\bgroup\tabskip\hss@ + \halign to\hsize\bgroup\rm\hfil\ignorespaces##\unskip\hfil\cr}% +\def\endaffil{\crcr\egroup\egroup\endgroup\overlong@false} +\let\date@\relax +\def\date#1{\gdef\date@{\ignorespaces#1\unskip}} +\def\today{\ifcase\month\or January\or February\or March\or April\or May\or + June\or July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} +\def\maketitle{\hrule\height\z@\vskip-\topskip + \vskip24\p@ plus12\p@ minus12\p@ + \unvbox\titlebox@ + \ifvoid\authorbox@\else\vskip12\p@ plus6\p@ minus3\p@\unvbox\authorbox@\fi + \ifvoid\affilbox@\else\vskip10\p@ plus5\p@ minus2\p@\unvbox\affilbox@\fi + \ifx\date@\relax\else\vskip6\p@ plus2\p@ minus\p@\centerline{\rm\date@}\fi + \vskip18\p@ plus12\p@ minus6\p@} +\def\cite{% + \DNii@(##1)##2{{\rm[}{##2}, {##1\/}{\rm]}}% + \def\nextiii@##1{{\rm[}{##1\/}{\rm]}}% + \DN@{\ifx\next(\expandafter\nextii@\else\expandafter\nextiii@\fi}% + \FN@\next@} +\def\makebib@W{Bibliography} +\def\makebib{\begingroup\rm\bigbreak\centerline{\smc\makebib@W}% + \nobreak\medskip + \sfcode`\.=\@m\everypar{}\parindent\z@ + \def\nopunct{\nopunct@true}\def\nospace{\nospace@true}% + \nopunct@false\nospace@false + \def\lkerns@{\null\kern\m@ne sp\kern\@ne sp}% + \def\nkerns@{\null\kern-\tw@ sp\kern\tw@ sp}% +} +\let\endmakebib\endgroup +\newif\ifnoprepunct@ +\newif\ifnoprespace@ +\newif\ifnoquotes@ +\def\noprepunct{\noprepunct@true} +\def\noprespace{\noprespace@true} +\def\noquotes{\noquotes@true} +\newbox\nobox@ +\newbox\keybox@ +\newbox\bybox@ +\newbox\paperbox@ +\newbox\paperinfobox@ +\newbox\jourbox@ +\newbox\volbox@ +\newbox\issuebox@ +\newbox\yrbox@ +\newbox\pgbox@ +\newbox\ppbox@ +\newbox\bookbox@ +\newbox\inbookbox@ +\newbox\bookinfobox@ +\newbox\publbox@ +\newbox\publaddrbox@ +\newbox\edbox@ +\newbox\edsbox@ +\newbox\langbox@ +\newbox\translbox@ +\newbox\finalinfobox@ +\def\setbibinfo@#1{\edef\next@{\ifnopunct@1\else0\fi + \ifnospace@1\else0\fi\ifnoprepunct@1\else0\fi\ifnoprespace@1\else0\fi + \ifnoquotes@1\else0\fi}% + \DNii@{00000}% + \ifx\next@\nextii@\else\xdef\bibinfo@{\bibinfo@\the#1,\next@}% + \fi} +\def\getbibinfo@#1{\ifx\bibinfo@\empty + \let\next@0\let\nextii@0\let\nextiii@0\let\nextiv@0\let\nextv@0\else + \edef\next@{\def + \noexpand\next@####1\the#1,####2####3####4####5####6####7\noexpand\next@ + {\let\noexpand\next@####2\let\noexpand\nextii@####3% + \let\noexpand\nextiii@####4\let\noexpand\nextiv@####5% + \let\noexpand\nextv@####6}% + \noexpand\next@\bibinfo@\the#1,00000\noexpand\next@}\next@ + \fi} +\newif\ifbookinquotes@ +\def\bookinquotes{\bookinquotes@true} +\newif\ifpaperinquotes@ +\def\paperinquotes{\paperinquotes@true} +\newif\ifininbook@ +\def\ininbook{\ininbook@true} +\newif\ifopenquotes@ +\def\closequotes@{\ifopenquotes@''\openquotes@false\fi} +\newif\ifbeginbib@ +\newif\ifendbib@ +\newif\ifprevjour@ +\newif\ifprevbook@ +\newdimen\bibindent@ +\bibindent@20\p@ +\def\bib{\global\let\bibinfo@\empty\global\let\translinfo@\relax\beginbib@true + \begingroup\noindent@ + \hangindent\bibindent@\hangafter\@ne\bib@} +\def\v@id#1{\setbox#1\box\voidb@x} +\def\bib@{\v@id\nobox@\v@id\keybox@\v@id\bybox@\v@id\paperbox@ + \v@id\paperinfobox@\v@id\jourbox@\v@id\volbox@\v@id\issuebox@ + \v@id\yrbox@\v@id\pgbox@\v@id\ppbox@\v@id\bookbox@\v@id\inbookbox@ + \v@id\bookinfobox@\v@id\publbox@\v@id\publaddrbox@\v@id\edbox@ + \v@id\edsbox@\v@id\langbox@\v@id\translbox@\v@id\finalinfobox@ + \bgroup} +\def\Setnonemptybox@#1#2{\unskip\setbibinfo@#1\egroup#2% + \def\aftergroup@{\ifdim\wd#1=\z@\setbox#1\box\voidb@x\fi}% + \setbox#1\vbox\bgroup\aftergroup\aftergroup@\hsize\maxdimen\leftskip\z@ + \rightskip\z@\hbadness\@M\hfuzz\maxdimen\noindent} +\def\setnonemptybox@#1{\Setnonemptybox@#1\relax} +\def\no{\setnonemptybox@\nobox@} +\def\key{\setnonemptybox@\keybox@\bf} +\def\by{\setnonemptybox@\bybox@} +\def\bysame{\setnonemptybox@\bybox@\leaders\hrule\hskip3em\null} +\def\paper{\setnonemptybox@\paperbox@ + \ifpaperinquotes@\getbibinfo@\paperbox@ + \if\nextv@1\else``\fi\else\it\fi} +\def\paperinfo{\setnonemptybox@\paperinfobox@} +\def\jour{\Setnonemptybox@\jourbox@\prevjour@true} +\def\vol{\setnonemptybox@\volbox@\bf} +\def\issue{\setnonemptybox@\issuebox@} +\def\yr{\setnonemptybox@\yrbox@} +\def\toappear{\noprepunct\finalinfo(to appear)} +\def\pg{\setnonemptybox@\pgbox@} +\def\pp{\setnonemptybox@\ppbox@} +\def\book{\Setnonemptybox@\bookbox@\prevbook@true + \ifbookinquotes@\getbibinfo@\bookbox@ + \if\nextv@1\else``\fi\else\it\fi} +\def\inbook{\Setnonemptybox@\inbookbox@\prevbook@true + \ifininbook@ in \fi\ifbookinquotes@\getbibinfo@\inbookbox@ + \if\nextv@1\else``\fi\fi} +\def\bookinfo{\setnonemptybox@\bookinfobox@} +\def\publ{\setnonemptybox@\publbox@} +\def\publaddr{\setnonemptybox@\publaddrbox@} +\def\ed{\setnonemptybox@\edbox@} +\def\eds{\setnonemptybox@\edsbox@} +\def\lang{\setnonemptybox@\langbox@} +\def\finalinfo{\setnonemptybox@\finalinfobox@} +\def\setboxzl@{\setbox\z@\lastbox} +\def\getbox@#1{\setbox\z@\vbox{\vskip-\@M\p@ + \unvbox#1% + \setboxzl@ + \global\setbox\@ne\hbox{\unhbox\z@\unskip\unskip\unpenalty}% + \ifdim\lastskip=-\@M\p@\else + \loop\ifdim\lastskip=-\@M\p@ + \else\unskip\unpenalty\setboxzl@ + \global\setbox\@ne\hbox{\unhbox\z@\unhbox\@ne}% + \repeat\fi}% + \unhbox\@ne} +\def\adjustpunct@#1{\count@\lastkern + \ifnum\count@=\z@#1\closequotes@\else + \ifnum\count@>\tw@#1\closequotes@\else + \ifnum\count@<-\tw@#1\closequotes@\else + \unkern\unkern\setboxzl@ + \skip@\lastskip\unskip + \count@@\lastpenalty\unpenalty + \ifnum\count@=\tw@\unskip\setboxzl@\fi + \ifdim\skip@=\z@\else\hskip\skip@\fi + #1\closequotes@ + \ifnum\count@=\tw@\null\hfill\fi + \penalty\count@@ + \fi\fi\fi} +\def\prepunct@#1#2{\getbibinfo@#2% + \ifnopunct@ + \else + \if\nextiii@0\adjustpunct@#1\fi + \fi + \closequotes@ + \ifnospace@ + \else + \if\nextiv@0\space\else\fi + \fi + \nopunct@false\nospace@false + \if\next@1\nopunct@true\fi + \if\nextii@1\nospace@true\fi} +\def\ppunbox@#1#2{\prepunct@{#1}#2% + \getbox@#2} +\let\semicolon@; +\def\endbib@{% + \ifbeginbib@ + \ifvoid\nobox@ + \ifvoid\keybox@\else\hbox to\bibindent@{[\getbox@\keybox@]\hss}\fi + \else\hbox to\bibindent@{\hss\getbox@\nobox@. }\fi + \ifvoid\bybox@\else\getbox@\bybox@\fi + \else + \nopunct@true + \ifvoid\bybox@\else\ppunbox@\relax\bybox@\fi + \fi + \ifvoid\translbox@\else\ppunbox@,\translbox@\fi + \ifvoid\paperbox@\else\ppunbox@,\paperbox@\ifpaperinquotes@ + \if\nextv@1\else\openquotes@true\fi\fi + \fi + \ifvoid\paperinfobox@\else\ppunbox@,\paperinfobox@\fi + \test@false + \ifvoid\jourbox@\else\test@true\ppunbox@,\jourbox@\fi + \ifprevjour@\test@true\fi + \iftest@ + \ifvoid\volbox@\else\ppunbox@\relax\volbox@\fi + \ifvoid\issuebox@ + \else\prepunct@\relax\issuebox@ no.~\getbox@\issuebox@\fi + \ifvoid\yrbox@\else\prepunct@\relax\yrbox@(\getbox@\yrbox@)\fi + \ifvoid\ppbox@\else\ppunbox@,\ppbox@\fi + \ifvoid\pgbox@\else\prepunct@,\pgbox@ p.~\getbox@\pgbox@\fi + \fi + \test@false + \ifvoid\bookbox@\else\test@true\ppunbox@,\bookbox@\ifbookinquotes@ + \if\nextv@1\else\openquotes@true\fi\fi\fi + \ifvoid\inbookbox@\else\test@true\ppunbox@,\inbookbox@\ifbookinquotes@ + \if\nextv@1\else\openquotes@true\fi\fi\fi + \ifprevbook@\test@true\fi + \iftest@ + \ifvoid\edbox@\else\prepunct@\relax\edbox@(\getbox@\edbox@, ed.)\fi + \ifvoid\edsbox@\else\prepunct@\relax\edsbox@(\getbox@\edsbox@, eds.)\fi + \ifvoid\bookinfobox@\else\ppunbox@,\bookinfobox@\fi + \ifvoid\publbox@\else\ppunbox@,\publbox@\fi + \ifvoid\publaddrbox@\else\ppunbox@,\publaddrbox@\fi + \ifvoid\yrbox@\else\ppunbox@,\yrbox@\fi + \ifvoid\ppbox@\else\prepunct@,\ppbox@ pp.~\getbox@\ppbox@\fi + \ifvoid\pgbox@\else\prepunct@,\pgbox@ p.~\getbox@\pgbox@\fi + \fi + \ifvoid\finalinfobox@ + \ifendbib@ + \ifnopunct@\else.\closequotes@\fi + \else + \ifvoid\langbox@\else\space(\getbox@\langbox@)\fi + \/\semicolon@\closequotes@ + \fi + \else + \ifendbib@ + \ppunbox@{.\spacefactor3000\relax}\finalinfobox@ + \ifnopunct@\else.\fi + \else + \ppunbox@,\finalinfobox@\/\semicolon@\fi + \fi + \ifvoid\langbox@\else\space(\getbox@\langbox@)\fi +} +\def\endbib{\unskip\egroup\endbib@true\endbib@\par\endgroup} +\def\morebib{\unskip\egroup + \endbib@false\endbib@ + \global\let\bibinfo@\empty\beginbib@false + \bib@} +\def\anotherbib{\unskip\egroup + \endbib@false\endbib@ + \global\let\bibinfo@\empty\beginbib@false + \prevjour@false\prevbook@false\bib@} +\def\transl{\unskip + \xdef\translinfo@{\the\translbox@,\ifnopunct@1\else0\fi + \ifnospace@1\else0\fi\ifnoprepunct@1\else0\fi\ifnoprespace@1\else0\fi0}% + \egroup\endbib@false\endbib@ + \global\let\bibinfo@\translinfo@\beginbib@false + \bib@ + \egroup + \def\aftergroup@{\ifdim\wd\translbox@=\z@\setbox\translbox@\box\voidb@x\fi}% + \setbox\translbox@\vbox\bgroup\aftergroup\aftergroup@ + \hsize\maxdimen\leftskip\z@\rightskip\z@\hbadness\@M\hfuzz\maxdimen + \noindent} +\newwrite\auxwrite@ +\newread\bbl@ +\def\UseBibTeX{\immediate\openout\auxwrite@=\jobname.aux + \let\cite\BTcite@ + \def\nocite##1{\immediate\write\auxwrite@{\string\citation{##1}}}% + \def\bibliographystyle##1{\immediate\write\auxwrite@{\string + \bibstyle{##1}}}% + \def\bibliography@W{Bibliography}% + \def\bibliography##1{\immediate\write\auxwrite@{\string\bibdata{##1}}% + \immediate\openin\bbl@=\jobname.bbl + \ifeof\bbl@ + \W@{No .bbl file}% + \else + \immediate\closein\bbl@ + \begingroup\input bibtex \input\jobname.bbl \endgroup + \fi}% + } +\def\BTcite@{% + \DNii@(##1)##2{{\rm[}\BTcite@@##2,\BTcite@@{\rm, }{##1\/}{\rm]}% + \immediate\write\auxwrite@{\string\citation{##2}}}% + \def\nextiii@##1{{\rm[}\BTcite@@##1,\BTcite@@\/{\rm]}% + \immediate\write\auxwrite@{\string\citation{##1}}}% + \DN@{\ifx\next(\expandafter\nextii@\else\expandafter\nextiii@\fi}% + \FN@\next@}% +\def\BTcite@@#1,{\BTcite@@@{#1}\FN@\BTcite@@@@} +\def\BTcite@@@@{\ifx\next\BTcite@@ + \expandafter\eat@\else{\rm, }\expandafter\BTcite@@\fi} +\catcode`\~=11 +\def\BTcite@@@#1{\nolabel@\cite{#1}\relax + \DNii@##1~##2\nextii@{##1}% + \csL@{#1}\expandafter\nextii@\Next@\nextii@\fi} +\catcode`\~=\active +\let\newblock\relax +\def\beginthebibliography@#1{\rm\setboxz@h{#1\ }\bibindent@\wdz@ + \bigbreak\centerline{\smc\bibliography@W}\nobreak\medskip + \sfcode`\.=\@m\everypar{}\parindent\z@} +\def\unpurge#1{\input #1\relax} +\def\purge#1{\input #1.tox\relax} +\let\topinsert\undefined +\let\midinsert\undefined +\let\pageinsert\undefined +\newif\iffigproofing@ +\def\Figureproofing{\figproofing@true} +\def\noFigureproofing{\figproofing@false} +\newif\ifHby@ +\def\Hbyw#1{\global\Hby@true\hbyw\vsize{#1}} +\def\hbyw#1#2{% + \hbox{% + \ifHby@ + \else + \iffigproofing@ + \setbox\z@\vbox{\hrule\width5\p@}\ht\z@\z@ + \vbox to#1{\hrule\height5\p@\width.4\p@\vfil\hrule\height5\p@\width.4\p@}% + \kern-.4\p@\rlap{\copy\z@}\raise#1\hbox{\rlap{\copy\z@}}% + \fi + \fi + \vbox to#1{\hbox to#2{}\vfil}% + \ifHby@ + \else + \iffigproofing@ + \vbox to#1{\hrule\height5\p@\width.4\p@\vfil\hrule\height5\p@\width.4\p@}% + \kern-.4\p@\llap{\copy\z@}\raise#1\hbox{\llap{\boxz@}}% + \fi + \fi}} +\newcount\island@C +\let\island@P\empty +\let\island@Q\empty +\def\island@S#1{#1\null.} +\let\island@N\arabic +\def\island@F{\rm} +\def\island@@@P{\csname\exxx@\islandtype@ @P\endcsname} +\def\island@@@Q{\csname\exxx@\islandtype@ @Q\endcsname} +\def\island@@@S{\csname\exxx@\islandtype@ @S\endcsname} +\def\island@@@N{\csname\exxx@\islandtype@ @N\endcsname} +\def\island@@@F{\csname\exxx@\islandtype@ @F\endcsname} +\def\island@@@C{\csname island@C\islandclass@\endcsname} +\newif\ifplace@ +\newif\ifisland@ +\def\island{% + \ifplace@ + \DN@{\let\islandclass@\empty\def\islandtype@{\island}\FN@\island@}% + \else + \long\DN@##1\endisland{\Err@{\noexpand\island must be used after some + type of \string\...place}}% + \fi + \next@} +\def\island@{\ifx\next\c\let\next@\island@c\else + \DN@{\FN@\island@@}\fi\next@} +\def\island@@{\ifcat\bgroup\noexpand\next\let\next@\island@@@\else + \DN@{\Err@{\noexpand\island must be followed by a {prefix} for + \string\caption's}}\fi\next@} +\newbox\islandbox@ +\newcount\captioncount@ +\def\island@@@#1{\def\captionprefix@{#1}\captioncount@\z@ + \global\setbox\islandbox@\vbox\bgroup} +\def\island@c\c#1{% + \ifplace@ + \DN@{\def\islandclass@{#1}% + \expandafter\ifx\csname island@C#1\endcsname\relax + \expandafter\newcount@\csname island@C#1\endcsname + \global\csname island@C#1\endcsname\z@\fi + \FNSS@\island@c@}% + \else + \DN@{\edef\next@{\long\def\noexpand\next@########1\expandafter\noexpand + \csname end\exxx@\islandtype@\endcsname{\noexpand\Err@{\noexpand\noexpand + \expandafter\noexpand + \islandtype@ must be used after some type of \noexpand\string + \noexpand\...place}}}\next@\next@}% + \fi + \next@} +\def\island@c@{% + \ifcat\bgroup\noexpand\next + \let\next@\island@c@@ + \else + \DN@{\Err@{\noexpand\island\string\c{\expandafter\string\islandclass@} must + be followed by a {prefix} for \string\caption's}}% + \fi\next@} +\def\island@c@@#1{\def\captionprefix@{#1}% + \captioncount@\z@\global\setbox\islandbox@\vbox\bgroup} +\rightadd@\caption\to\nofrillslist@ +\newbox\captionbox@ +\newbox\Captionbox@ +\def\caption{% + \ifnum\captioncount@=\z@ + \ifnopunct@ + \DN@{\egroup\nopunct@true}% + \else + \let\next@\egroup + \fi + \else + \let\next@\relax + \fi + \next@ + \advance\captioncount@\@ne + \FN@\caption@} +\def\caption@{\ifx\next"\expandafter\caption@q\else\expandafter\caption@@\fi} +\def\caption@q"#1"{\quoted@true + {\noexpands@ + \let\pre\island@@@P\let\post\island@@@Q + \let\style\island@@@S\let\numstyle\island@@@N + \Qlabel@{#1}\let\style\relax\xdef\Qlabel@@@@{#1}}% + \finishcaption@} +\def\caption@@{\quoted@false + \global\advance\island@@@C\@ne + {\noexpands@ + \xdef\Thelabel@@@{\number\island@@@C}% + \xdefThelabel@\island@@@N + \xdef\Thelabel@@@@{\island@@@P\Thelabel@\island@@@Q}% + \xdefThelabel@@\island@@@S + \xdef\Thepref@{\Thelabel@@@@}}% + \finishcaption@} +\long\def\captionformat@#1#2#3{\rm\strut#1 {\island@@@F#2} #3% + \punct@.\strut} +\long\def\widerthanisland@#1#2#3{\test@true\setbox\z@\vbox{\hsize\maxdimen + \noindent@@\captionformat@{#1}{#2}{#3}\par\setboxzl@}% + \ifdim\wdz@=\z@ + \global\setbox\captionbox@\hbox{\noset@\unlabel@ + \captionformat@{#1}{#2}{#3}}% + \ifdim\wd\captionbox@>\wd\islandbox@\else\test@false\fi + \fi} +\long\def\captionformat@@#1#2#3{\widerthanisland@{#1}{#2}{#3}% + \iftest@ + \global\setbox\captionbox@\vbox{\hsize\wd\islandbox@ + \vskip-\parskip\noindent@@\noset@\unlabel@ + \captionformat@{#1}{#2}{#3}\par}% + \else + \global\setbox\captionbox@ + \hbox to\wd\islandbox@{\hfil\box\captionbox@\hfil}% + \fi} +\long\def\finishcaption@#1{\def\entry@{#1}% + {\locallabel@ + \captionformat@@ + {\expandafter\ignorespaces\captionprefix@\unskip}% + {\ifx\thelabel@@\empty\unskip\else\thelabel@@\fi}% + {\ignorespaces#1\unskip}% + \ifnum\captioncount@=\@ne + \global\setbox\islandbox@\vbox{\ticwrite@\vbox{\box\islandbox@}}% + \global\setbox\Captionbox@\vbox{\box\captionbox@}% + \else + \global\setbox\islandbox@\vbox{\unvbox\islandbox@\setboxzl@ + \ticwrite@\boxz@}% + \global\setbox\Captionbox@\vbox{\unvbox\Captionbox@ + \smallskip\box\captionbox@}% + \fi}% + \nopunct@false\nospace@false\ignorespaces} +\def\Sixtic@{\ifx\macdef@\empty\else + \DN@##1##2\next@{\def\macdef@{##1##2}}% + \expandafter\next@\macdef@\next@ + \edef\next@ + {\noexpand\six@\tic@\macdef@ + \space\space\space\space\space\space\space\space\space\space\space\space + \noexpand\six@}% + \next@\let\macdef@\relax\fi} +\def\ticwrite@{% + \iftoc@ + {\noexpands@\let\style\relax + \DN@{\island}% + \edef\next@{\write\tic@{% + \ifnopunct@\noexpand\noexpand\noexpand\nopunct\fi + \ifx\islandtype@\next@\noexpand\noexpand\noexpand\island + \noexpand\string\noexpand\c{\islandclass@}{\captionprefix@}% + {\QorThelabel@@@@}\else\noexpand\noexpand\expandafter\noexpand + \islandtype@{\QorThelabel@@@@}}\fi}% + \next@}% + \expandafter\unmacro@\meaning\entry@\unmacro@ + \Sixtic@ + \write\tic@{\noexpand\Page{\number\pageno}{\page@N}{\page@P}{\page@Q}^^J}% + \fi} +\def\Htrim@#1{% + \ifHby@ + \dimen@\vsize + \ifnum\captioncount@=\z@ + \else + \advance\dimen@-\ht\Captionbox@ + \advance\dimen@-#1% + \fi + \global\Hby@false + \dimen@ii\wd\islandbox@ + \global\setbox\islandbox@\vbox + {\unvbox\islandbox@\setboxzl@ + \vbox to\z@{\vss\boxz@}\nointerlineskip\hbyw\dimen@\dimen@ii}% + \global\Hby@true + \fi} +\newif\ifdata@ +\def\iclasstest@#1{\DN@{#1}\ifx\next@\islandclass@ + \test@true\else\test@false\fi} +\skipdef\skipi@=1 +\def\endisland{\ifnum\captioncount@=\z@\expandafter\egroup\fi + \ifdata@ + \else + \iclasstest@{T}% + \iftest@ + {\rm\global\skipi@-\dp\strutbox}\global\advance\skipi@\bigskipamount + \Htrim@\skipi@ + \global\setbox\islandbox@\vbox + {\ifnum\captioncount@=\z@\else + \box\Captionbox@ + \nointerlineskip + \vskip\skipi@\fi + \box\islandbox@}% + \else + {\rm\global\skipi@\dp\strutbox}\global\advance\skipi@\medskipamount + \Htrim@\skipi@ + \global\setbox\islandbox@\vbox + {\box\islandbox@ + \ifnum\captioncount@=\z@\else + \nointerlineskip + \vskip\skipi@ + \box\Captionbox@ + \fi}% + \fi + \ifHby@ + \else + \dimen@\ht\islandbox@\advance\dimen@\dp\islandbox@ + \ifdim\dimen@>\vsize + \DN@{\island}% + \Err@{% + \ifx\islandtype@\next@\noexpand\island\else + \expandafter\noexpand\islandtype@\fi + \ifnum\captioncount@=\z@\else + with \noexpand\caption\fi + is larger than page}% + \ht\islandbox@=\vsize + \fi + \fi + \fi + \global\Hby@false\island@true} +\def\newisland#1\c#2#3{\define#1{}% + \iftoc@\immediate\write\tic@{\noexpand\newisland\noexpand#1% + \string\c{#2}{#3}^^J}\fi + \expandafter\def\csname\exstring@#1@S\endcsname{\island@S}% + \expandafter\def\csname\exstring@#1@N\endcsname{\island@N}% + \expandafter\def\csname\exstring@#1@P\endcsname{\island@P}% + \expandafter\def\csname\exstring@#1@Q\endcsname{\island@Q}% + \expandafter\def\csname\exstring@#1@F\endcsname{\island@F}% + \expandafter\def\csname end\exstring@#1\endcsname{\endisland}% + \expandafter + \ifx\csname island@C#2\endcsname\relax + \expandafter\newcount@\csname island@C#2\endcsname + \global\csname island@C#2\endcsname\z@ + \fi + \edef\next@{\noexpand\expandafter\noexpand\let\noexpand + \csname\exstring@#1@C\noexpand\endcsname + \csname island@C#2\endcsname}% + \next@ + \def#1{\def\islandtype@{#1}\island@c\c{#2}{#3}}} +\newisland\Figure\c{F}{Figure} +\newisland\Table\c{T}{Table} +\newbox\islandboxi +\newbox\islandboxii +\newbox\islandboxiii +\newbox\captionboxi +\newbox\captionboxii +\newbox\captionboxiii +\long\def\islandpairdata#1#2{{\data@true + \place@true + #1% + \global\setbox\islandboxi\box\islandbox@ + \global\setbox\captionboxi\box\Captionbox@ + #2% + \global\setbox\islandboxii\box\islandbox@ + \global\setbox\captionboxii\box\Captionbox@ + }} +\long\def\islandpairbox#1#2{\islandpairdata{#1}{#2}% + \dimen@\ht\captionboxi + \ifdim\ht\captionboxii>\dimen@\dimen@\ht\captionboxii\fi + \ifdim\dimen@>\z@ + \ifdim\ht\captionboxi<\dimen@ + \global\setbox\captionboxi\vbox to\dimen@{\unvbox\captionboxi\vfil}\fi + \ifdim\ht\captionboxii<\dimen@ + \global\setbox\captionboxii\vbox to\dimen@{\unvbox\captionboxii\vfil}\fi + \fi + \global\setbox\islandbox@\vbox + {\hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil}% + \ifdim\dimen@>\z@\nointerlineskip + {\rm\global\skipi@\dp\strutbox}\global\advance\skipi@\medskipamount + \vskip\skipi@ + \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil}\fi}} +\long\def\islandpairboxa#1#2{\islandpairdata{#1}{#2}% + \dimen@\ht\captionboxi + \ifdim\ht\captionboxii>\dimen@\dimen@\ht\captionboxii\fi + \ifdim\dimen@>\z@ + \ifdim\ht\captionboxi<\dimen@ + \global\setbox\captionboxi\vbox to\dimen@{\vfil\unvbox\captionboxi}\fi + \ifdim\ht\captionboxii<\dimen@ + \global\setbox\captionboxii\vbox to\dimen@{\vfil\unvbox\captionboxii}\fi + \fi + \dimen@ii\ht\islandboxi + \ifdim\ht\islandboxii>\dimen@ii \dimen@ii\ht\islandboxii\fi + \ifdim\dimen@ii>\z@ + \ifdim\ht\islandboxi<\dimen@ii + \global\setbox\islandboxi\vbox to\dimen@ii{\box\islandboxi\vfil}\fi + \ifdim\ht\islandboxii<\dimen@ii + \global\setbox\islandboxii\vbox to\dimen@ii{\box\islandboxii\vfil}\fi + \fi + \global\setbox\islandbox@\vbox{\ifdim\dimen@>\z@ + \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil}% + \nointerlineskip{\rm\global\skipi@-\dp\strutbox}% + \global\advance\skipi@\bigskipamount\vskip\skipi@\fi + \hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil}}} +\long\def\islandtripledata#1#2#3{{\data@true\place@true + #1% + \global\setbox\islandboxi\box\islandbox@ + \global\setbox\captionboxi\box\Captionbox@ + #2% + \global\setbox\islandboxii\box\islandbox@ + \global\setbox\captionboxii\box\Captionbox@ + #3% + \global\setbox\islandboxiii\box\islandbox@ + \global\setbox\captionboxiii\box\Captionbox@ + }} +\long\def\islandtriplebox#1#2#3{\islandtripledata{#1}{#2}{#3}% + \dimen@\ht\captionboxi + \ifdim\ht\captionboxii>\dimen@ \dimen@\ht\captionboxii\fi + \ifdim\ht\captionboxiii>\dimen@ \dimen@\ht\captionboxiii\fi + \ifdim\dimen@>\z@ + \ifdim\ht\captionboxi<\dimen@ + \global\setbox\captionboxi\vbox to\dimen@{\unvbox\captionboxi\vfil}\fi + \ifdim\ht\captionboxii<\dimen@ + \global\setbox\captionboxii\vbox to\dimen@{\unvbox\captionboxii\vfil}\fi + \ifdim\ht\captionboxiii<\dimen@ + \global\setbox\captionboxiii\vbox to\dimen@{\unvbox\captionboxiii\vfil}\fi + \fi + \global\setbox\islandbox@\vbox + {\hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil + \box\islandboxiii\hfil}% + \ifdim\dimen@>\z@\nointerlineskip + {\rm\global\skipi@\dp\strutbox}\global\advance\skipi@\medskipamount + \vskip\skipi@ + \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil + \box\captionboxiii\hfil}\fi}} +\def\islandtripleboxa#1#2#3{\islandtripledata{#1}{#2}{#3}% + \dimen@\ht\captionboxi + \ifdim\ht\captionboxii>\dimen@ \dimen@\ht\captionboxii\fi + \ifdim\ht\captionboxiii>\dimen@ \dimen@\ht\captionboxiii\fi + \ifdim\dimen@>\z@ + \ifdim\ht\captionboxi<\dimen@ + \global\setbox\captionboxi\vbox to\dimen@{\vfil\unvbox\captionboxi}\fi + \ifdim\ht\captionboxii<\dimen@ + \global\setbox\captionboxii\vbox to\dimen@{\vfil\unvbox\captionboxii}\fi + \ifdim\ht\captionboxiii<\dimen@ + \global\setbox\captionboxiii\vbox to\dimen@{\vfil\unvbox\captionboxiii}\fi + \fi + \dimen@ii\ht\islandboxi + \ifdim\ht\islandboxii>\dimen@ii \dimen@ii\ht\islandboxii\fi + \ifdim\ht\islandboxiii>\dimen@ii \dimen@ii\ht\islandboxiii\fi + \ifdim\dimen@ii>\z@ + \ifdim\ht\islandboxi<\dimen@ii + \global\setbox\islandboxi\vbox to\dimen@ii{\box\islandboxi\vfil}\fi + \ifdim\ht\islandboxii<\dimen@ii + \global\setbox\islandboxii\vbox to\dimen@ii{\box\islandboxii\vfil}\fi + \ifdim\ht\islandboxiii<\dimen@ii + \global\setbox\islandboxiii\vbox to\dimen@ii{\box\islandboxiii\vfil}\fi + \fi + \global\setbox\islandbox@\vbox + {\ifdim\dimen@>\z@ + \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil + \box\captionboxiii\hfil}% + \nointerlineskip{\rm\global\skipi@-\dp\strutbox}% + \global\advance\skipi@\bigskipamount\vskip\skipi@\fi + \hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil + \box\islandboxiii\hfil}}} +\def\Figurepair#1\and#2\endFigurepair{\island@true + \islandpairbox{\Figure#1\endFigure}{\Figure#2\endFigure}} +\def\Figuretriple#1\and#2\and#3\endFiguretriple{\island@true + \islandtriplebox{\Figure#1\endFigure}{\Figure#2\endFigure}% + {\Figure#3\endFigure}} +\def\Tablepair#1\and#2\endTablepair{\island@true + \islandpairboxa{\Table#1\endTable}{\Table#2\endTable}} +\def\Tabletriple#1\and#2\and#3\endTabletriple{\island@true + \islandtripleboxa{\Table#1\endTable}{\Table#2\endTable}% + {\Table#3\endTable}} +\def\place#1{\place@true\island@false + #1% + \ifisland@ + \box\islandbox@ + \else + \Err@{Whoa ... there's no \string\Figure, \string\Table, + etc., here}% + \fi + \place@false} +\newskip\belowtopfigskip +\belowtopfigskip 15\p@ plus 5\p@ minus5\p@ +\newskip\abovebotfigskip +\abovebotfigskip 18\p@ plus 6\p@ minus6\p@ +\newdimen\minpagesize +\minpagesize 5pc +\dimen@\belowtopfigskip +\advance\dimen@-\abovebotfigskip +\skip\topins\dimen@ +\dimen\topins\z@ +\newcount\topinscount@ +\newbox\topinsdims@ +\def\storedim@{\global\setbox\topinsdims@ + \vbox{\hbox to\dimen@{}\unvbox\topinsdims@}} +\def\advancedimtopins@{% + \ifnum\pageno=\@ne + \else + \advance\dimen@\dimen\topins + \global\dimen\topins\dimen@ + \fi} +\newcount\flipcount@ +\def\fliptopins@{% + \global\flipcount@\z@ + \ifvoid\topins\else + \setbox\z@\vbox + {\vskip\p@ + \unvbox\topins + \global\setbox\topins\vbox{}% + \loop + \test@false + \ifdim\lastskip=\z@\unskip + \ifdim\lastskip=\z@ + \test@true\fi\fi + \iftest@ + \global\advance\flipcount@\@ne + \setboxzl@ + \global\setbox\topins\vbox{\unvbox\topins\boxz@}% + \unpenalty + \repeat}\fi} +\newif\ifPar@ +\newcount\Parcount@ +\newbox\Parbox@ +\expandafter\newbox\csname Parfigbox1\endcsname +\expandafter\newbox\csname Parfigbox2\endcsname +\expandafter\newbox\csname Parfigbox3\endcsname +\expandafter\newbox\csname Parfigbox4\endcsname +\expandafter\newbox\csname Parfigbox5\endcsname +\expandafter\newdimen\csname Parprev1\endcsname +\expandafter\newdimen\csname Parprev2\endcsname +\expandafter\newdimen\csname Parprev3\endcsname +\expandafter\newdimen\csname Parprev4\endcsname +\expandafter\newdimen\csname Parprev5\endcsname +\expandafter\newdimen\csname Parprev6\endcsname +\def\Par{\par\global\csname Parprev1\endcsname\prevdepth + \global\Parcount@\@ne + \global\Par@true\global\let\Parlist@\empty + \global\setbox\Parbox@\vbox\bgroup\break} +\def\place@#1#2{% + \ifisland@ + \ifhmode + \ifPar@ + \ifnum\Parcount@>5 + \Err@{Only 5 \string\place's allowed per + \string\Par...\noexpand\endPar paragraph}% + \else + \expandafter\expandafter\expandafter + \global\expandafter\setbox + \csname Parfigbox\number\Parcount@\endcsname\box\islandbox@ + \global\advance\Parcount@\@ne + \xdef\Parlist@{\Parlist@#1}% + \fi + \else + \vadjust{#2}% + \fi + \else + #2% + \fi + \else + \Err@{Whoa ... there's no \string\Figure, + \string\Table, etc., here}% + \fi + \place@false} +\long\def\Aplace#1{\prevanish@ + \place@true\island@false + #1% + \place@ a\Aplace@ + \postvanish@} +\long\def\AAplace#1{\prevanish@\place@true\island@false + #1% + \place@ A\AAplace@ + \postvanish@} +\newif\ifAA@ +\def\AAplace@{\AA@true\Aplace@\AA@false} +\let\AAlist@\empty +\def\Aplace@{\allowbreak + \dimen@=\ht\islandbox@ + \advance\dimen@\abovebotfigskip + \ht\islandbox@\dimen@ + \advance\dimen@\dp\islandbox@ + \storedim@ + \ifAA@ + \xdef\AAlist@{\AAlist@1}% + \advancedimtopins@ + \else + \xdef\AAlist@{\AAlist@0}% + \ifnum\topinscount@>\@ne\else\advancedimtopins@\fi + \fi + \insert\topins{\penalty\z@\splittopskip\z@\floatingpenalty\z@ + \box\islandbox@}% + \global\advance\topinscount@\@ne} +\long\def\Bplace#1{\prevanish@\place@true\island@false + #1% + \place@ b\Bplace@ + \postvanish@} +\def\Bplace@{\allowbreak + \ifnum\topinscount@=\z@ + \setbox\z@\vbox{\vbox to-\belowtopfigskip{}}% + \dimen@-\skip\topins + \ht\z@\dimen@ + \storedim@ + \advancedimtopins@ + \insert\topins{\boxz@}% + \global\advance\topinscount@\@ne + \xdef\AAlist@{\AAlist@0}% + \fi + \dimen@\ht\islandbox@ + \advance\dimen@\abovebotfigskip + \ht\islandbox@\dimen@ + \advance\dimen@\dp\islandbox@ + \storedim@ + \xdef\AAlist@{\AAlist@0}% + \ifnum\topinscount@>\@ne\else\advancedimtopins@\fi + \insert\topins{\penalty\z@\splittopskip\z@ + \floatingpenalty\z@ + \box\islandbox@}% + \global\advance\topinscount@\@ne} +\def\breakisland@{\global\setbox\@ne\lastbox\global\skipi@\lastskip\unskip + \global\setbox\thr@@\lastbox}% +\def\printisland@{\centerline{\box\thr@@}\nobreak\nointerlineskip + \vskip\skipi@ + \ifdim\ht\@ne<\z@\box\@ne\else\centerline{\box\@ne}\fi} +\def\bottomfigs@{% + \count@\@ne + \loop + \ifnum\count@<\flipcount@ + \nointerlineskip + \vskip\abovebotfigskip + \global\setbox\topins\vbox{\unvbox\topins\setboxzl@ + \unvbox\z@ + \breakisland@}% + \printisland@ + \advance\count@\@ne + \repeat} +\def\resetdimtopins@{% + \global\advance\topinscount@-\flipcount@ + \global\setbox\topinsdims@\vbox + {\unvbox\topinsdims@ + \count@\z@ + \DN@##1##2\next@{\gdef\AAlist@{##2}}% + \loop + \ifnum\count@<\flipcount@\setboxzl@ + \expandafter\next@\AAlist@\next@ + \advance\count@\@ne + \repeat + \dimen@\z@ + \count@\z@ + \setbox\tw@\vbox{}% + \edef\nextiii@{\AAlist@}% + \DN@##1##2\next@{\DNii@{##1}\def\nextiii@{##2}}% + \loop + \test@false + \ifnum\count@<\topinscount@ + \expandafter\next@\nextiii@\next@ + \ifnum\count@<\tw@ + \test@true + \else + \if\nextii@ 1\test@true\fi + \fi + \fi + \iftest@ + \setboxzl@ + \advance\dimen@\wdz@ + \setbox\tw@\vbox{\boxz@\unvbox\tw@}% + \advance\count@\@ne + \repeat + \unvbox\tw@ + \global\dimen\topins\dimen@}} +\def\Place@#1#2{% + \ifisland@ + \ifhmode + \ifPar@ + \ifnum\Parcount@>5 + \Err@{Only 5 \string\place's allowed per + \string\Par...\noexpand\endPar paragraph}% + \else + \expandafter\expandafter\expandafter\global\expandafter\setbox + \csname Parfigbox\number\Parcount@\endcsname\box\islandbox@ + \global\advance\Parcount@\@ne + \xdef\Parlist@{\Parlist@#1}% + \vadjust{\break}% + \fi + \else + \Err@{\noexpand#2allowed only in a \string\Par...\noexpand\endPar + paragraph}% + \fi + \else + #2% + \fi + \else + \Err@{Who ... there's no \string\Figure, \string\Table, + etc., here}% + \fi + \place@false} +\newif\ifC@ +\newdimen\Cdim@ +\long\def\Cplace#1{\prevanish@\place@true\island@false + #1% + \Place@ c\Cplace@ + \postvanish@} +\def\Cplace@{\allowbreak + \ifnum\topinscount@>\z@\else + \global\C@true\global\Cdim@\pagetotal\fi + \Aplace@} +\long\def\Mplace#1{\prevanish@\place@true\island@false + #1% + \Place@ m\Mplace@ + \postvanish@} +\long\def\MXplace#1{\prevanish@\place@true\island@false + #1% + \Place@ M\MXplace@ + \postvanish@} +\newif\ifMX@ +\def\MXplace@{\MX@true\Mplace@\MX@false} +\def\Mplace@{\allowbreak + \dimen@\ht\islandbox@\advance\dimen@\dp\islandbox@ + \ifdim\pagetotal=\z@\else + \ifdim\lastskip<\abovebotfigskip\advance\dimen@\abovebotfigskip + \advance\dimen@-\lastskip\fi + \fi + \advance\dimen@\pagetotal + \ifdim\dimen@>\pagegoal + \Aplace@ + \else + \nointerlineskip + \ifdim\lastskip<\abovebotfigskip\removelastskip\vskip\abovebotfigskip\fi + \setbox\z@\vbox{\unvbox\islandbox@ + \breakisland@}% + \printisland@ + \ifnum\topinscount@=\z@ + \setbox\z@\vbox{\vbox to-\belowtopfigskip{}}% + \dimen@-\skip\topins + \ht\z@\dimen@ + \storedim@ + \advancedimtopins@ + \insert\topins{\boxz@}% + \global\advance\topinscount@\@ne + \xdef\AAlist@{\AAlist@0}% + \fi + \ifMX@ + \ifnum\topinscount@=\@ne + \setbox\z@\vbox{\vbox to-\abovebotfigskip{}}% + \ht\z@\z@ + \dimen@\z@ + \storedim@ + \advancedimtopins@ + \insert\topins{\boxz@}% + \global\advance\topinscount@\@ne + \xdef\AAlist@{\AAlist@0}% + \fi + \fi + \nointerlineskip + \vskip\belowtopfigskip + \fi} +\expandafter\newbox\csname Parbox1\endcsname +\expandafter\newbox\csname Parbox2\endcsname +\expandafter\newbox\csname Parbox3\endcsname +\expandafter\newbox\csname Parbox4\endcsname +\expandafter\newbox\csname Parbox5\endcsname +\def\endPar{\egroup + \count@\@ne + {\vbadness\@M\vfuzz\maxdimen\splitmaxdepth\maxdimen\splittopskip\ht\strutbox + \setbox\z@\vsplit\Parbox@ to\ht\Parbox@ + \loop + \ifnum\count@<\Parcount@ + \expandafter\expandafter\expandafter\global\expandafter\setbox + \csname Parbox\number\count@\endcsname\vsplit\Parbox@ to\ht\Parbox@ + \count@@\count@\advance\count@@\@ne + \global\csname Parprev\number\count@@\endcsname + \dp\csname Parbox\number\count@\endcsname + \advance\count@\@ne + \repeat}% + \vskip\parskip + \count@\@ne + \def\nextv@##1##2\nextv@{\DN@{##1}\gdef\Parlist@{##2}}% + \loop + \ifnum\count@<\Parcount@ + \dimen@\csname Parprev\number\count@\endcsname + \advance\dimen@\ht\strutbox + \ifdim\dimen@<\baselineskip + \advance\dimen@-\baselineskip\vskip-\dimen@ + \else + \vskip\lineskip + \fi + \unvbox\csname Parbox\number\count@\endcsname + \global\setbox\islandbox@\box\csname Parfigbox\number\count@\endcsname + \expandafter\nextv@\Parlist@\nextv@ + \if a\next@\Aplace@\else + \if A\next@\AAplace@\else + \if b\next@\Bplace@\else + \if c\next@\Cplace@\else + \if m\next@\Mplace@\else + \if M\next@\MXplace@\fi\fi\fi\fi\fi\fi + \advance\count@\@ne + \repeat + \global\Par@false + \ifvoid\Parbox@ + \prevdepth\csname Parprev\number\count@\endcsname + \else + \dimen@\csname Parprev\number\count@\endcsname\advance\dimen@\ht\strutbox + \ifdim\dimen@<\baselineskip + \advance\dimen@-\baselineskip\vskip-\dimen@ + \else + \vskip\lineskip + \fi + \dimen@\dp\Parbox@ + \unvbox\Parbox@ + \prevdepth\dimen@ + \fi} +\def\folio{{\page@F\page@S{\page@P\page@N{\number\page@C}\page@Q}}} +\def\advancepageno{\global\advance\pageno\@ne} +\newif\ifspecialsplit@ +\newbox\outbox@ +\let\shipout@\shipout +\def\plainoutput{\specialsplit@false\ifvoid\topins\else\ifdim\ht\topins=\z@ + \specialsplit@true\advance\minpagesize-\skip\topins\fi\fi + \fliptopins@ + \setbox\outbox@\vbox{\makeheadline\pagebody\makefootline}% + {\noexpands@\let\style\relax + \shipout@\box\outbox@}% + \advancepageno + \resetdimtopins@ + \ifvoid\@cclv\else\unvbox\@cclv\penalty\outputpenalty\fi + \ifnum\outputpenalty>-\@MM\else\dosupereject\fi} +\def\pagebody{\vbox to\vsize{\boxmaxdepth\maxdepth + \ifvoid\margin@\else + \rlap{\kern\hsize\vbox to\z@{\kern4\p@\box\margin@\vss}}\fi + \pagecontents}} +\newif\ifonlytop@ +\def\pagecontents{% + \onlytop@false + \ifdim\ht\@cclv<\minpagesize\ifnum\flipcount@<\tw@\ifvoid\footins + \onlytop@true\fi\fi\fi + \test@false + \ifC@ + \ifnum\flipcount@=\@ne + \global\multiply\Cdim@\tw@ + \ifdim\Cdim@>\ht\@cclv + \test@true + \fi + \fi + \fi + \global\C@false + \iftest@ + \dimen@\ht\@cclv + \advance\dimen@\skip\topins + {\vfuzz\maxdimen\vbadness\@M + \splitmaxdepth\maxdepth\splittopskip\topskip + \setbox\z@\vsplit\@cclv to\dimen@ + \unvbox\z@}% + \global\setbox\topins\vbox{\unvbox\topins + \global\setbox\@ne\lastbox}% + \setbox\z@\vbox{\unvbox\@ne + \breakisland@}% + \nointerlineskip + \vskip\abovebotfigskip + \printisland@ + \else + \ifnum\flipcount@>\z@ + \global\setbox\topins\vbox{\unvbox\topins\global\setbox\@ne\lastbox}% + \setbox\z@\vbox{\unvbox\@ne + \breakisland@}% + \printisland@ + \ifonlytop@\kern-\prevdepth\vfill\else\vskip\belowtopfigskip\fi + \fi + \fi + \ifdim\ht\@cclv<\minpagesize + \ifonlytop@\else\vfill\fi + \else + \ifspecialsplit@ + {\vfuzz\maxdimen\vbadness\@M + \splitmaxdepth\maxdepth\splittopskip\topskip + \dimen@ii\ht\@cclv \advance\dimen@ii\skip\topins + \setbox\z@\vsplit\@cclv to\dimen@ii + \unvbox\z@}% + \else + \unvbox\@cclv + \fi + \fi + \bottomfigs@ + \ifvoid\footins\else\vskip\skip\footins\footnoterule\unvbox\footins\fi} +\newread\readdata@ +\def\readthedata@#1{\expandafter + \ifx\csname#1@D\endcsname\relax + \immediate\openin\readdata@=#1.dat + \ifeof\readdata@ + \Err@{No file #1.dat}% + \else + {\endlinechar\m@ne\gdef\Next@{}% + \DNii@##1 ##2 ##3pt{\global\data@ht##1\global\data@dp##2% + \global\data@wd##3pt}% + \loop + \ifeof\readdata@ + \else + \read\readdata@ to\next@ + \ifx\next@\empty\else + \edef\next@{\expandafter\nextii@\next@}% + \expandafter\rightadd@\next@\to\Next@ + \fi + \repeat}% + \immediate\closein\readdata@ + \expandafter\expandafter\expandafter\global\expandafter + \let\csname#1@D\endcsname\Next@\global\let\Next@\relax + \fi + \fi} +\newdimen\data@ht +\newdimen\data@dp +\newdimen\data@wd +\newif\ifgetdata@ +\def\getdata@#1#2{\global\getdata@true\count@#2\relax + {\let\\\or\xdef\Next@{\ifcase\number\count@#1\else + \global\noexpand\getdata@false\fi}}\Next@} +\def\paste#1#2{\readthedata@{#1}% + \getdata@{\csname#1@D\endcsname}{#2}% + \ifgetdata@ + \dimen@\data@ht \advance\dimen@\data@dp + \hbox{\special{dvipaste: #1 #2}% + \lower\data@dp\vbox to\dimen@{\hbox to\data@wd{}\vfil}}% + \else + {\lccode`\Z=`\#\lccode`\N=`\N\lccode`\F=`\F% + \lowercase{\Err@{No data for File [#1], Z#2}}}% + \fi} +\newdimen\httable +\newdimen\dptable +\newdimen\wdtable +\def\measuretable#1#2{\readthedata@{#1}% + \getdata@{\csname#1@D\endcsname}{#2}% + \ifgetdata@ + \httable\data@ht \dptable\data@dp \wdtable\data@wd + \else + {\lccode`\Z=`\#\lccode`\N=`\N\lccode`\F=`\F% + \lowercase{\Err@{No data for File [#1], Z#2}}}% + \fi} +\def\East#1#2{\setboxz@h{$\m@th\ssize\;{#1}\;\;$}% + \setbox\tw@\hbox{$\m@th\ssize\;{#2}\;\;$}\setbox4=\hbox{$\m@th#2$}% + \dimen@\minaw@ + \ifdim\wdz@>\dimen@\dimen@\wdz@\fi\ifdim\wd\tw@>\dimen@\dimen@\wd\tw@\fi + \ifdim\wd4 >\z@ + \mathrel{\mathop{\hbox to\dimen@{\rightarrowfill}}\limits^{#1}_{#2}}% + \else + \mathrel{\mathop{\hbox to\dimen@{\rightarrowfill}}\limits^{#1}}% + \fi} +\def\West#1#2{\setboxz@h{$\m@th\ssize\;\;{#1}\;$}% + \setbox\tw@\hbox{$\m@th\ssize\;\;{#2}\;$}\setbox4=\hbox{$\m@th#2$}% + \dimen@\minaw@ + \ifdim\wdz@>\dimen@\dimen@\wdz@\fi\ifdim\wd\tw@>\dimen@\dimen@\wd\tw@\fi + \ifdim\wd4 >\z@ + \mathrel{\mathop{\hbox to\dimen@{\leftarrowfill}}\limits^{#1}_{#2}}% + \else + \mathrel{\mathop{\hbox to\dimen@{\leftarrowfill}}\limits^{#1}}% + \fi} +\font\arrow@i=lams1 +\font\arrow@ii=lams2 +\font\arrow@iii=lams3 +\font\arrow@iv=lams4 +\font\arrow@v=lams5 +\newdimen\standardcgap +\standardcgap40\p@ +\newdimen\hunit +\hunit\tw@\p@ +\newdimen\standardrgap +\standardrgap32\p@ +\newdimen\vunit +\vunit1.6\p@ +\def\Cgaps#1{\RIfM@ + \standardcgap#1\standardcgap\relax\hunit#1\hunit\relax + \else\nonmatherr@\Cgaps\fi} +\def\Rgaps#1{\RIfM@ + \standardrgap#1\standardrgap\relax\vunit#1\vunit\relax + \else\nonmatherr@\Rgaps\fi} +\newdimen\getdim@ +\def\getcgap@#1{\ifcase#1\or\getdim@\z@\else\getdim@\standardcgap\fi} +\def\getrgap@#1{\ifcase#1\getdim@\z@\else\getdim@\standardrgap\fi} +\def\cgaps{\RIfM@\expandafter\cgaps@\else\expandafter\nonmatherr@ + \expandafter\cgaps\fi} +\def\cgaps@{\ifnum\catcode`\;=\active\expandafter\cgapsA@\else + \expandafter\cgapsO@\fi} +\def\cgapsO@#1{\toks@{\ifcase\i@\or\getdim@=\z@}% + \gaps@@\standardcgap#1;\gaps@@\gaps@@ + \edef\next@{\the\toks@\noexpand\else\noexpand\getdim@\noexpand\standardcgap + \noexpand\fi}% + \toks@=\expandafter{\next@}% + \edef\getcgap@##1{\i@##1\relax\the\toks@}\toks@{}} +{\catcode`\;=\active + \gdef\cgapsA@#1{\toks@{\ifcase\i@\or\getdim@=\z@}% + \gaps@@\standardcgap#1;\gaps@@\gaps@@ + \edef\next@{\the\toks@\noexpand\else\noexpand\getdim@\noexpand\standardcgap + \noexpand\fi}% + \toks@=\expandafter{\next@}% + \edef\getcgap@##1{\i@##1\relax\the\toks@}\toks@{}} +} +\def\Gaps@@{\gaps@@} +\def\gaps@@#1#2;#3{\mgaps@#1#2\mgaps@ + \edef\next@{\the\toks@\noexpand\or\noexpand\getdim@ + \noexpand#1\the\mgapstoks@@}% + \toks@\expandafter{\next@}% + \DN@{#3}% + \ifx\next@\Gaps@@\def\next@##1\gaps@@{}\else + \def\next@{\gaps@@#1#3}\fi\next@} +{\catcode`\;=\active + \gdef\rgaps#1{\RIfM@{\ifnum\catcode`\;=\active\def;{\string;}\fi + \xdef\Next@{\noexpand\rgaps@{#1}}}% + \Next@\edef\getrgap@##1{\i@##1\relax\the\toks@}\toks@{}\else + \nonmatherr@\rgaps\fi} +} +\def\rgaps@#1{\toks@{\ifcase\i@\getdim@=\z@}% + \gaps@@\standardrgap#1;\gaps@@\gaps@@ + \edef\next@{\the\toks@\noexpand\else\noexpand\getdim@\noexpand\standardrgap + \noexpand\fi}% + \toks@=\expandafter{\next@}} +\newbox\ZER@ +\def\mgaps@#1{\let\mgapsnext@#1\FNSS@\mgaps@@} +\def\mgaps@@{\ifx\next\w\expandafter\mgaps@@@\else + \expandafter\mgaps@@@@\fi} +\newtoks\mgapstoks@@ +\def\mgaps@@@@#1\mgaps@{\getdim@\mgapsnext@\getdim@#1\getdim@ + \edef\next@{\noexpand\getdim@\the\getdim@}% + \mgapstoks@@\expandafter{\next@}} +\def\mgaps@@@\w#1#2\mgaps@{\mgaps@@@@#2\mgaps@ + \setbox\ZER@\hbox{$\m@th\hskip15\p@\tsize@#1$}% + \dimen@\wd\ZER@ + \ifdim\dimen@>\getdim@\getdim@\dimen@\fi + \edef\next@{\noexpand\getdim@\the\getdim@}% + \mgapstoks@@\expandafter{\next@}} +\def\changewidth#1#2{\setbox\ZER@{$\m@th#2}% + \hbox to\wd\ZER@{\hss$\m@th#1$\hss}} +\atdef@({\FN@\ARROW@} +\def\ARROW@{\ifx\next)\let\next@\OPTIONS@\else + \DN@{\csname\string @(\endcsname}\fi\next@} +\newif\ifoptions@ +\def\OPTIONS@){\ifoptions@\let\next@\relax\else + \DN@{\global\options@true\begingroup\optioncodes@}\fi\next@} +\newif\ifN@ +\newif\ifE@ +\newif\ifNESW@ +\newif\ifH@ +\newif\ifV@ +\newif\ifHshort@ +\expandafter\def\csname\string @(\endcsname #1,#2){% + \ifoptions@\expandafter\endgroup\fi + \N@false\E@false\H@false\V@false\Hshort@false + \ifnum#1>\z@\E@true\fi + \ifnum#1=\z@\V@true\global\tX@false\global\tY@false\global\a@false\fi + \ifnum#2>\z@\N@true\fi + \ifnum#2=\z@\H@true\global\tX@false\global\tY@false\global\a@false + \ifshort@\Hshort@true\fi\fi + \NESW@false + \ifN@\ifE@\NESW@true\fi\else\ifE@\else\NESW@true\fi\fi + \arrow@{#1}{#2}% + \global\options@false + \global\scount@\z@\global\tcount@\z@\global\arrcount@\z@ + \global\s@false\global\sxdimen@\z@\global\sydimen@\z@ + \global\tX@false\global\tXdimen@i\z@\global\tXdimen@ii\z@ + \global\tY@false\global\tYdimen@i\z@\global\tYdimen@ii\z@ + \global\a@false\global\exacount@\z@ + \global\x@false\global\xdimen@\z@ + \global\X@false\global\Xdimen@\z@ + \global\y@false\global\ydimen@\z@ + \global\Y@false\global\Ydimen@\z@ + \global\p@false\global\pdimen@\z@ + \global\label@ifalse\global\label@iifalse + \global\dl@ifalse\global\ldimen@i\z@ + \global\dl@iifalse\global\ldimen@ii\z@ + \global\short@false\global\unshort@false} +\newif\iflabel@i +\newif\iflabel@ii +\newcount\scount@ +\newcount\tcount@ +\newcount\arrcount@ +\newif\ifs@ +\newdimen\sxdimen@ +\newdimen\sydimen@ +\newif\iftX@ +\newdimen\tXdimen@i +\newdimen\tXdimen@ii +\newif\iftY@ +\newdimen\tYdimen@i +\newdimen\tYdimen@ii +\newif\ifa@ +\newcount\exacount@ +\newif\ifx@ +\newdimen\xdimen@ +\newif\ifX@ +\newdimen\Xdimen@ +\newif\ify@ +\newdimen\ydimen@ +\newif\ifY@ +\newdimen\Ydimen@ +\newif\ifp@ +\newdimen\pdimen@ +\newif\ifdl@i +\newif\ifdl@ii +\newdimen\ldimen@i +\newdimen\ldimen@ii +\newif\ifshort@ +\newif\ifunshort@ +\def\zero@#1{\ifnum\scount@=\z@ + \if#1e\global\scount@\m@ne\else + \if#1t\global\scount@\tw@\else + \if#1h\global\scount@\thr@@\else + \if#1'\global\scount@6 \else + \if#1`\global\scount@7 \else + \if#1(\global\scount@8 \else + \if#1)\global\scount@9 \else + \if#1s\global\scount@12 \else + \if#1H\global\scount@13 \else + \Err@{\Invalid@@ option \string\0}\fi\fi\fi\fi\fi\fi\fi\fi\fi + \fi} +\def\one@#1{\ifnum\tcount@=\z@ + \if#1e\global\tcount@\m@ne\else + \if#1h\global\tcount@\tw@\else + \if#1t\global\tcount@\thr@@\else + \if#1'\global\tcount@4 \else + \if#1`\global\tcount@5 \else + \if#1(\global\tcount@\ten@ \else + \if#1)\global\tcount@11 \else + \if#1s\global\tcount@12 \else + \if#1H\global\tcount@13 \else + \Err@{\Invalid@@ option \string\1}\fi\fi\fi\fi\fi\fi\fi\fi\fi + \fi} +\def\a@#1{\ifnum\arrcount@=\z@ + \if#10\global\arrcount@\m@ne\else + \if#1+\global\arrcount@\@ne\else + \if#1-\global\arrcount@\tw@\else + \if#1=\global\arrcount@\thr@@\else + \Err@{\Invalid@@ option \string\a}\fi\fi\fi\fi + \fi} +\def\ds@{\ifnum\catcode`\;=\active\expandafter\dsA@\else + \expandafter\dsO@\fi} +\def\dsO@(#1;#2){\ds@@{#1}{#2}} +\def\ds@@#1#2{\ifs@\else + \global\s@true + \global\sxdimen@\hunit\global\sxdimen@#1\sxdimen@\relax + \global\sydimen@\vunit\global\sydimen@#2\sydimen@\relax + \fi} +\def\dtX@{\ifnum\catcode`\;=\active\expandafter\dtXA@\else + \expandafter\dtXO@\fi} +\def\dtXO@(#1;#2){\dtX@@{#1}{#2}} +\def\dtX@@#1#2{\iftX@\else + \global\tX@true + \global\tXdimen@i\hunit\global\tXdimen@i#1\tXdimen@i\relax + \global\tXdimen@ii\vunit\global\tXdimen@ii#2\tXdimen@ii\relax + \fi} +\def\dtY@{\ifnum\catcode`\;=\active\expandafter\dtYA@\else + \expandafter\dtYO@\fi} +\def\dtYO@(#1;#2){\dtY@@{#1}{#2}} +\def\dtY@@#1#2{\iftY@\else + \global\tY@true + \global\tYdimen@i\hunit\global\tYdimen@i#1\tYdimen@i\relax + \global\tYdimen@ii\vunit\global\tYdimen@ii#2\tYdimen@ii\relax + \fi} +{\catcode`\;=\active + \gdef\dsA@(#1;#2){\ds@@{#1}{#2}} + \gdef\dtXA@(#1;#2){\dtX@@{#1}{#2}} + \gdef\dtYA@(#1;#2){\dtY@@{#1}{#2}} +} +\def\da@#1{\ifa@\else\global\a@true\global\exacount@#1\relax\fi} +\def\dx@#1{\ifx@\else + \global\x@true + \global\xdimen@\hunit\global\xdimen@#1\xdimen@\relax + \fi} +\def\dX@#1{\ifX@\else + \global\X@true + \global\Xdimen@\hunit\global\Xdimen@#1\Xdimen@\relax + \fi} +\def\dy@#1{\ify@\else + \global\y@true + \global\ydimen@\vunit\global\ydimen@#1\ydimen@\relax + \fi} +\def\dY@#1{\ifY@\else + \global\Y@true + \global\Ydimen@\vunit\global\Ydimen@#1\Ydimen@\relax + \fi} +\def\p@@#1{\ifp@\else + \global\p@true + \global\pdimen@\hunit\global\divide\pdimen@\tw@ + \global\pdimen@#1\pdimen@\relax + \fi} +\def\L@#1{\iflabel@i\else + \global\label@itrue\gdef\label@i{#1}% + \fi} +\def\l@#1{\iflabel@ii\else + \global\label@iitrue\gdef\label@ii{#1}% + \fi} +\def\dL@#1{\ifdl@i\else + \global\dl@itrue\global\ldimen@i\hunit\global\ldimen@i#1\ldimen@i\relax + \fi} +\def\dl@#1{\ifdl@ii\else + \global\dl@iitrue\global\ldimen@ii\hunit\global\ldimen@ii#1\ldimen@ii\relax + \fi} +\def\s@{\ifunshort@\else\global\short@true\fi} +\def\uns@{\ifshort@\else\global\unshort@true\global\short@false\fi} +\def\optioncodes@{\let\0\zero@\let\1\one@\let\a\a@\let\ds\ds@\let\dtX\dtX@ + \let\dtY\dtY@\let\da\da@\let\dx\dx@\let\dX\dX@\let\dY\dY@\let\dy\dy@ + \let\p\p@@\let\L\L@\let\l\l@\let\dL\dL@\let\dl\dl@\let\s\s@\let\uns\uns@} +\def\slopes@{\\161\\152\\143\\134\\255\\126\\357\\238\\349\\45{10}\\56{11}% + \\11{12}\\65{13}\\54{14}\\43{15}\\32{16}\\53{17}\\21{18}\\52{19}\\31{20}% + \\41{21}\\51{22}\\61{23}} +\newcount\tan@i +\newcount\tan@ip +\newcount\tan@ii +\newcount\tan@iip +\newdimen\slope@i +\newdimen\slope@ip +\newdimen\slope@ii +\newdimen\slope@iip +\newcount\angcount@ +\newcount\extracount@ +\def\slope@{{\slope@i\secondy@\advance\slope@i-\firsty@ + \ifN@\else\multiply\slope@i\m@ne\fi + \slope@ii\secondx@\advance\slope@ii-\firstx@ + \ifE@\else\multiply\slope@ii\m@ne\fi + \ifdim\slope@ii<\z@ + \global\tan@i6 \global\tan@ii\@ne\global\angcount@23 + \else + \dimen@\slope@i\multiply\dimen@6 + \ifdim\dimen@<\slope@ii + \global\tan@i\@ne\global\tan@ii6 \global\angcount@\@ne + \else + \dimen@\slope@ii\multiply\dimen@6 + \ifdim\dimen@<\slope@i + \global\tan@i6 \global\tan@ii\@ne\global\angcount@23 + \else + \global\tan@ip\z@\global\tan@iip\@ne + \def\\##1##2##3{\global\angcount@##3\relax + \slope@ip\slope@i\slope@iip\slope@ii + \multiply\slope@iip##1\relax\multiply\slope@ip##2\relax + \ifdim\slope@iip<\slope@ip + \global\tan@ip##1\relax\global\tan@iip##2\relax + \else + \global\tan@i##1\relax\global\tan@ii##2\relax + \def\\####1####2####3{}% + \fi}% + \slopes@ + \slope@i\secondy@\advance\slope@i-\firsty@ + \ifN@\else\multiply\slope@i\m@ne\fi + \multiply\slope@i\tan@ii\multiply\slope@i\tan@iip\multiply\slope@i\tw@ + \count@\tan@i\multiply\count@\tan@iip + \extracount@\tan@ip\multiply\extracount@\tan@ii + \advance\count@\extracount@ + \slope@ii\secondx@\advance\slope@ii-\firstx@ + \ifE@\else\multiply\slope@ii\m@ne\fi + \multiply\slope@ii\count@ + \ifdim\slope@i<\slope@ii + \global\tan@i\tan@ip\global\tan@ii\tan@iip + \global\advance\angcount@\m@ne + \fi + \fi + \fi + \fi}% +} +\def\slope@a#1{{\def\\##1##2##3{\ifnum##3=#1\global\tan@i##1\relax + \global\tan@ii##2\relax\fi}\slopes@}} +\newcount\i@ +\newcount\j@ +\newcount\colcount@ +\newcount\Colcount@ +\newcount\tcolcount@ +\newdimen\rowht@ +\newdimen\rowdp@ +\newcount\rowcount@ +\newcount\Rowcount@ +\newcount\maxcolrow@ +\newtoks\colwidthtoks@ +\newtoks\Rowheighttoks@ +\newtoks\Rowdepthtoks@ +\newtoks\widthtoks@ +\newtoks\Widthtoks@ +\newtoks\heighttoks@ +\newtoks\Heighttoks@ +\newtoks\depthtoks@ +\newtoks\Depthtoks@ +\newif\iffirstCDcr@ +\def\dotoks@i{% + \global\widthtoks@\expandafter{\the\widthtoks@\else\getdim@\z@\fi}% + \global\heighttoks@\expandafter{\the\heighttoks@\else\getdim@\z@\fi}% + \global\depthtoks@\expandafter{\the\depthtoks@\else\getdim@\z@\fi}} +\def\dotoks@ii{% + \global\widthtoks@{\ifcase\j@}% + \global\heighttoks@{\ifcase\j@}% + \global\depthtoks@{\ifcase\j@}} +\def\preCD@#1\endCD{\setbox\ZER@ + \vbox{% + \def\arrow@##1##2{{}}% + \global\rowcount@\m@ne\global\colcount@\z@\global\Colcount@\z@ + \global\firstCDcr@true\toks@{}% + \global\widthtoks@{\ifcase\j@}% + \global\Widthtoks@{\ifcase\i@}% + \global\heighttoks@{\ifcase\j@}% + \global\Heighttoks@{\ifcase\i@}% + \global\depthtoks@{\ifcase\j@}% + \global\Depthtoks@{\ifcase\i@}% + \global\Rowheighttoks@{\ifcase\i@}% + \global\Rowdepthtoks@{\ifcase\i@}% + \Let@ + \everycr{% + \noalign{% + \global\advance\rowcount@\@ne + \ifnum\colcount@<\Colcount@ + \else + \global\Colcount@\colcount@\global\maxcolrow@\rowcount@ + \fi + \global\colcount@\z@ + \iffirstCDcr@ + \global\firstCDcr@false + \else + \edef\next@{\the\Rowheighttoks@\noexpand\or\noexpand\getdim@\the\rowht@}% + \global\Rowheighttoks@\expandafter{\next@}% + \edef\next@{\the\Rowdepthtoks@\noexpand\or\noexpand\getdim@\the\rowdp@}% + \global\Rowdepthtoks@\expandafter{\next@}% + \global\rowht@\z@\global\rowdp@\z@ + \dotoks@i + \edef\next@{\the\Widthtoks@\noexpand\or\the\widthtoks@}% + \global\Widthtoks@\expandafter{\next@}% + \edef\next@{\the\Heighttoks@\noexpand\or\the\heighttoks@}% + \global\Heighttoks@\expandafter{\next@}% + \edef\next@{\the\Depthtoks@\noexpand\or\the\depthtoks@}% + \global\Depthtoks@\expandafter{\next@}% + \dotoks@ii + \fi}}% + \tabskip\z@ + \halign{&\setbox\ZER@\hbox{\vrule\height\ten@\p@\width\z@\depth\z@ %1 + $\m@th\displaystyle{##}$}\copy\ZER@ + \ifdim\ht\ZER@>\rowht@\global\rowht@\ht\ZER@\fi + \ifdim\dp\ZER@>\rowdp@\global\rowdp@\dp\ZER@\fi + \global\advance\colcount@\@ne + \edef\next@{\the\widthtoks@\noexpand\or\noexpand\getdim@\the\wd\ZER@}% + \global\widthtoks@\expandafter{\next@}% + \edef\next@{\the\heighttoks@\noexpand\or\noexpand\getdim@\the\ht\ZER@}% + \global\heighttoks@\expandafter{\next@}% + \edef\next@{\the\depthtoks@\noexpand\or\noexpand\getdim@\the\dp\ZER@}% + \global\depthtoks@\expandafter{\next@}% + \cr#1\crcr}}% + \Rowcount@\rowcount@ + \global\Widthtoks@\expandafter{\the\Widthtoks@\fi\relax}% + \edef\Width@##1##2{\i@##1\relax\j@##2\relax\the\Widthtoks@}% + \global\Heighttoks@\expandafter{\the\Heighttoks@\fi\relax}% + \edef\Height@##1##2{\i@##1\relax\j@##2\relax\the\Heighttoks@}% + \global\Depthtoks@\expandafter{\the\Depthtoks@\fi\relax}% + \edef\Depth@##1##2{\i@##1\relax\j@##2\relax\the\Depthtoks@}% + \edef\next@{\the\Rowheighttoks@\noexpand\fi\relax}% + \global\Rowheighttoks@\expandafter{\next@}% + \edef\Rowheight@##1{\i@##1\relax\the\Rowheighttoks@}% + \edef\next@{\the\Rowdepthtoks@\noexpand\fi\relax}% + \global\Rowdepthtoks@\expandafter{\next@}% + \edef\Rowdepth@##1{\i@##1\relax\the\Rowdepthtoks@}% + \global\colwidthtoks@{\fi}% + \setbox\ZER@\vbox{% + \unvbox\ZER@ + \count@\rowcount@ + \loop + \unskip\unpenalty + \setbox\ZER@\lastbox + \ifnum\count@>\maxcolrow@\advance\count@\m@ne + \repeat + \hbox{% + \unhbox\ZER@ + \count@\z@ + \loop + \unskip + \setbox\ZER@\lastbox + \edef\next@{\noexpand\or\noexpand\getdim@\the\wd\ZER@\the\colwidthtoks@}% + \global\colwidthtoks@\expandafter{\next@}% + \advance\count@\@ne + \ifnum\count@<\Colcount@ + \repeat}}% + \edef\next@{\noexpand\ifcase\noexpand\i@\the\colwidthtoks@}% + \global\colwidthtoks@\expandafter{\next@}% + \edef\Colwidth@##1{\i@##1\relax\the\colwidthtoks@}% + \global\colwidthtoks@{}\global\Rowheighttoks@{}\global\Rowdepthtoks@{}% + \global\widthtoks@{}\global\Widthtoks@{}\global\heighttoks@{}% + \global\Heighttoks@{}\global\depthtoks@{}\global\Depthtoks@{}% +} +\newcount\xoff@ +\newcount\yoff@ +\newcount\endcount@ +\newcount\rcount@ +\newdimen\firstx@ +\newdimen\firsty@ +\newdimen\secondx@ +\newdimen\secondy@ +\newdimen\tocenter@ +\newdimen\charht@ +\newdimen\charwd@ +\def\outside@{\Err@{This arrow points outside the \string\CD}} +\newif\ifsvertex@ +\newif\iftvertex@ +\def\arrow@#1#2{\global\xoff@#1\relax\global\yoff@#2\relax + \count@\rowcount@\advance\count@-\yoff@ + \ifnum\count@<\@ne\outside@\else\ifnum\count@>\Rowcount@\outside@\fi\fi + \count@\colcount@\advance\count@\xoff@ + \ifnum\count@<\@ne\outside@\else\ifnum\count@>\Colcount@\outside@\fi\fi + \tcolcount@\colcount@\advance\tcolcount@\xoff@ + \Width@\rowcount@\colcount@\divide\getdim@\tw@\tocenter@-\getdim@ + \ifdim\getdim@=\z@ + \firstx@\z@\firsty@\mathaxis@\svertex@true + \else + \svertex@false + \ifHshort@ + \Colwidth@\colcount@\divide\getdim@\tw@ + \ifE@ \firstx@\getdim@ \else \firstx@-\getdim@ \fi + \else + \ifE@ \firstx@\getdim@ \else \firstx@-\getdim@ \fi + \fi + \ifE@ + \ifH@ \advance\firstx@\thr@@\p@ \else \advance\firstx@-\thr@@\p@ \fi %2 + \else + \ifH@ \advance\firstx@-\thr@@\p@ \else \advance\firstx@\thr@@\p@ \fi %3 + \fi + \ifN@ + \Height@\rowcount@\colcount@ \firsty@\getdim@ %4 + \ifV@ \advance\firsty@\thr@@\p@ \fi %5 + \else + \ifV@ + \Depth@\rowcount@\colcount@ \firsty@-\getdim@ %6 + \advance\firsty@-\thr@@\p@ %7 + \else + \firsty@\z@ %8 + \fi + \fi + \fi + \ifV@ + \else + \Colwidth@\colcount@\divide\getdim@\tw@ + \ifE@\secondx@\getdim@\else\secondx@-\getdim@\fi + \ifE@\else\getcgap@\colcount@\advance\secondx@-\getdim@\fi + \endcount@\colcount@\advance\endcount@\xoff@ + \count@\colcount@ + \ifE@ + \advance\count@\@ne + \loop + \ifnum\count@<\endcount@ + \Colwidth@\count@\advance\secondx@\getdim@ + \getcgap@\count@\advance\secondx@\getdim@ + \advance\count@\@ne + \repeat + \else + \advance\count@\m@ne + \loop + \ifnum\count@>\endcount@ + \Colwidth@\count@\advance\secondx@-\getdim@ + \getcgap@\count@\advance\secondx@-\getdim@ + \advance\count@\m@ne + \repeat + \fi + \Colwidth@\count@\divide\getdim@\tw@ + \ifHshort@ + \else + \ifE@\advance\secondx@\getdim@\else\advance\secondx@-\getdim@\fi + \fi + \ifE@\getcgap@\count@\advance\secondx@\getdim@\fi + \rcount@\rowcount@\advance\rcount@-\yoff@ + \Width@\rcount@\count@\divide\getdim@\tw@ + \tvertex@false + \ifH@\ifdim\getdim@=\z@\tvertex@true\Hshort@false\fi\fi + \ifHshort@ + \else + \ifE@\advance\secondx@-\getdim@\else\advance\secondx@\getdim@\fi + \fi + \iftvertex@ + \advance\secondx@.4\p@ + \else + \ifE@\advance\secondx@-\thr@@\p@\else\advance\secondx@\thr@@\p@\fi %9 + \fi + \fi + \ifH@ + \else + \ifN@ + \Rowheight@\rowcount@\secondy@\getdim@ + \else + \Rowdepth@\rowcount@\secondy@-\getdim@ + \getrgap@\rowcount@\advance\secondy@-\getdim@ + \fi + \endcount@\rowcount@\advance\endcount@-\yoff@ + \count@\rowcount@ + \ifN@ + \advance\count@\m@ne + \loop + \ifnum\count@>\endcount@ + \Rowheight@\count@\advance\secondy@\getdim@ + \Rowdepth@\count@\advance\secondy@\getdim@ + \getrgap@\count@\advance\secondy@\getdim@ + \advance\count@\m@ne + \repeat + \else + \advance\count@\@ne + \loop + \ifnum\count@<\endcount@ + \Rowheight@\count@\advance\secondy@-\getdim@ + \Rowdepth@\count@\advance\secondy@-\getdim@ + \getrgap@\count@\advance\secondy@-\getdim@ + \advance\count@\@ne + \repeat + \fi + \tvertex@false + \ifV@\Width@\count@\colcount@\ifdim\getdim@=\z@\tvertex@true\fi\fi + \ifN@ + \getrgap@\count@\advance\secondy@\getdim@ + \Rowdepth@\count@\advance\secondy@\getdim@ + \iftvertex@ + \advance\secondy@\mathaxis@ + \else + \Depth@\count@\tcolcount@\advance\secondy@-\getdim@ + \advance\secondy@-\thr@@\p@ %10 + \fi + \else + \Rowheight@\count@\advance\secondy@-\getdim@ + \iftvertex@ + \advance\secondy@\mathaxis@ + \else + \Height@\count@\tcolcount@\advance\secondy@\getdim@ + \advance\secondy@\thr@@\p@ %11 + \fi + \fi + \fi + \ifV@\else\advance\firstx@\sxdimen@\fi + \ifH@\else\advance\firsty@\sydimen@\fi + \iftX@ + \advance\secondy@\tXdimen@ii + \advance\secondx@\tXdimen@i + \slope@ + \else + \iftY@ + \advance\secondy@\tYdimen@ii + \advance\secondx@\tYdimen@i + \slope@ + \secondy@\secondx@\advance\secondy@-\firstx@ + \ifNESW@\else\multiply\secondy@\m@ne\fi + \multiply\secondy@\tan@i\divide\secondy@\tan@ii\advance\secondy@\firsty@ + \else + \ifa@ + \slope@ + \ifNESW@\global\advance\angcount@\exacount@\else + \global\advance\angcount@-\exacount@\fi + \ifnum\angcount@>23 \global\angcount@23 \fi + \ifnum\angcount@<\@ne\global\angcount@\@ne\fi + \slope@a\angcount@ + \ifY@ + \advance\secondy@\Ydimen@ + \else + \ifX@ + \advance\secondx@\Xdimen@ + \dimen@\secondx@\advance\dimen@-\firstx@ + \ifNESW@\else\multiply\dimen@\m@ne\fi + \multiply\dimen@\tan@i\divide\dimen@\tan@ii + \advance\dimen@\firsty@\secondy@\dimen@ + \fi + \fi + \else + \ifH@\else\ifV@\else\slope@\fi\fi + \fi + \fi + \fi + \ifH@\else\ifV@\else\ifsvertex@\else + \dimen@6\p@\multiply\dimen@\tan@ii + \count@\tan@i\advance\count@\tan@ii\divide\dimen@\count@ + \ifE@\advance\firstx@\dimen@\else\advance\firstx@-\dimen@\fi + \multiply\dimen@\tan@i\divide\dimen@\tan@ii + \ifN@\advance\firsty@\dimen@\else\advance\firsty@-\dimen@\fi + \fi\fi\fi + \ifp@ + \ifH@\else\ifV@\else + \getcos@\pdimen@\advance\firsty@\dimen@\advance\secondy@\dimen@ + \ifNESW@\advance\firstx@-\dimen@ii\else\advance\firstx@\dimen@ii\fi + \fi\fi + \fi + \ifH@\else\ifV@\else + \ifnum\tan@i>\tan@ii + \charht@\ten@\p@\charwd@\ten@\p@ + \multiply\charwd@\tan@ii\divide\charwd@\tan@i + \else + \charwd@\ten@\p@\charht@\ten@\p@ + \divide\charht@\tan@ii\multiply\charht@\tan@i + \fi + \ifnum\tcount@=\thr@@ + \ifN@\advance\secondy@-.3\charht@\else\advance\secondy@.3\charht@\fi + \fi + \ifnum\scount@=\tw@ + \ifE@\advance\firstx@.3\charht@\else\advance\firstx@-.3\charht@\fi + \fi + \ifnum\tcount@=12 + \ifN@\advance\secondy@-\charht@\else\advance\secondy@\charht@\fi + \fi + \iftY@ + \else + \ifa@ + \ifX@ + \else + \secondx@\secondy@\advance\secondx@-\firsty@ + \ifNESW@\else\multiply\secondx@\m@ne\fi + \multiply\secondx@\tan@ii\divide\secondx@\tan@i + \advance\secondx@\firstx@ + \fi + \fi + \fi + \fi\fi + \ifH@\harrow@\else\ifV@\varrow@\else\arrow@@\fi\fi} +\newdimen\mathaxis@ +\mathaxis@90\p@\divide\mathaxis@36 +\def\harrow@b{\ifE@\hskip\tocenter@\hskip\firstx@\fi} +\def\harrow@bb{\ifE@\hskip\xdimen@\else\hskip\Xdimen@\fi} +\def\harrow@e{\ifE@\else\hskip-\firstx@\hskip-\tocenter@\fi} +\def\harrow@ee{\ifE@\hskip-\Xdimen@\else\hskip-\xdimen@\fi} +\def\harrow@{\dimen@\secondx@\advance\dimen@-\firstx@ + \ifE@\let\next@\rlap\else\multiply\dimen@\m@ne\let\next@\llap\fi + \next@{% + \harrow@b + \smash{\raise\pdimen@\hbox to\dimen@ + {\harrow@bb\arrow@ii + \ifnum\arrcount@=\m@ne\else\ifnum\arrcount@=\thr@@\else + \ifE@ + \ifnum\scount@=\m@ne + \else + \ifcase\scount@\or\or\char118 \or\char117 \or\or\or\char119 \or + \char120 \or\char121 \or\char122 \or\or\or\arrow@i\char125 \or + \char117 \hskip\thr@@\p@\char117 \hskip-\thr@@\p@\fi + \fi + \else + \ifnum\tcount@=\m@ne + \else + \ifcase\tcount@\char117 \or\or\char117 \or\char118 \or\char119 \or + \char120 \or\or\or\or\or\char121 \or\char122 \or\arrow@i\char125 + \or\char117 \hskip\thr@@\p@\char117 \hskip-\thr@@\p@\fi + \fi + \fi + \fi\fi + \dimen@\mathaxis@\advance\dimen@.2\p@ + \dimen@ii\mathaxis@\advance\dimen@ii-.2\p@ + \ifnum\arrcount@=\m@ne + \let\leads@\null + \else + \ifcase\arrcount@ + \def\leads@{\hrule\height\dimen@\depth-\dimen@ii}\or + \def\leads@{\hrule\height\dimen@\depth-\dimen@ii}\or + \def\leads@{\hbox to\ten@\p@{% + \leaders\hrule\height\dimen@\depth-\dimen@ii\hfil + \hfil + \leaders\hrule\height\dimen@\depth-\dimen@ii\hskip\z@ plus2fil\relax + \hfil + \leaders\hrule\height\dimen@\depth-\dimen@ii\hfil}}\or + \def\leads@{\hbox{\hbox to\ten@\p@{\dimen@\mathaxis@\advance\dimen@1.2\p@ + \dimen@ii\dimen@\advance\dimen@ii-.4\p@ + \leaders\hrule\height\dimen@\depth-\dimen@ii\hfil}% + \kern-\ten@\p@ + \hbox to\ten@\p@{\dimen@\mathaxis@\advance\dimen@-1.2\p@ + \dimen@ii\dimen@\advance\dimen@ii-.4\p@ + \leaders\hrule\height\dimen@\depth-\dimen@ii\hfil}}}\fi + \fi + \cleaders\leads@\hfil + \ifnum\arrcount@=\m@ne\else\ifnum\arrcount@=\thr@@\else + \arrow@i + \ifE@ + \ifnum\tcount@=\m@ne + \else + \ifcase\tcount@\char119 \or\or\char119 \or\char120 \or\char121 \or + \char122 \or \or\or\or\or\char123 \or\char124 \or + \char125 \or\char119 \hskip-\thr@@\p@\char119 \hskip\thr@@\p@\fi + \fi + \else + \ifcase\scount@\or\or\char120 \or\char119 \or\or\or\char121 \or\char122 + \or\char123 \or\char124 \or\or\or\char125 \or + \char119 \hskip-\thr@@\p@\char119 \hskip\thr@@\p@\fi + \fi + \fi\fi + \harrow@ee}}% + \harrow@e}% + \iflabel@i + \dimen@ii\z@\setbox\ZER@\hbox{$\m@th\tsize@@\label@i$}% + \ifnum\arrcount@=\m@ne + \else + \advance\dimen@ii\mathaxis@ + \advance\dimen@ii\dp\ZER@\advance\dimen@ii\tw@\p@ + \ifnum\arrcount@=\thr@@\advance\dimen@ii\tw@\p@\fi + \fi + \advance\dimen@ii\pdimen@ + \next@{\harrow@b\smash{\raise\dimen@ii\hbox to\dimen@ + {\harrow@bb\hskip\tw@\ldimen@i\hfil\box\ZER@\hfil\harrow@ee}}\harrow@e}% + \fi + \iflabel@ii + \ifnum\arrcount@=\m@ne + \else + \setbox\ZER@\hbox{$\m@th\tsize@\label@ii$}% + \dimen@ii-\ht\ZER@\advance\dimen@ii-\tw@\p@ + \ifnum\arrcount@=\thr@@\advance\dimen@ii-\tw@\p@\fi + \advance\dimen@ii\mathaxis@\advance\dimen@ii\pdimen@ + \next@{\harrow@b\smash{\raise\dimen@ii\hbox to\dimen@ + {\harrow@bb\hskip\tw@\ldimen@ii\hfil\box\ZER@\hfil\harrow@ee}}\harrow@e}% + \fi + \fi} +\let\tsize@\tsize +\def\tsizeCDlabels{\let\tsize@\tsize} +\def\ssizeCDlabels{\let\tsize@\ssize} +\def\tsize@@{\ifnum\arrcount@=\m@ne\else\tsize@\fi} +\def\varrow@{\dimen@\secondy@\advance\dimen@-\firsty@ + \ifN@\else\multiply\dimen@\m@ne\fi + \setbox\ZER@\vbox to\dimen@ + {\ifN@\vskip-\Ydimen@\else\vskip\ydimen@\fi + \ifnum\arrcount@=\m@ne\else\ifnum\arrcount@=\thr@@\else + \hbox{\arrow@iii + \ifN@ + \ifnum\tcount@=\m@ne + \else + \ifcase\tcount@\char117 \or\or\char117 \or\char118 \or\char119 \or + \char120 \or\or\or\or\or\char121 \or\char122 \or\char123 \or + \vbox{\hbox{\char117}\nointerlineskip\vskip\thr@@\p@ + \hbox{\char117}\vskip-\thr@@\p@}\fi + \fi + \else + \ifcase\scount@\or\or\char118 \or\char117 \or\or\or\char119 \or + \char120 \or\char121 \or\char122 \or\or\or\char123 \or + \vbox{\hbox{\char117}\nointerlineskip\vskip\thr@@\p@ + \hbox{\char117}\vskip-\thr@@\p@}\fi + \fi}% + \nointerlineskip + \fi\fi + \ifnum\arrcount@=\m@ne + \let\leads@\null + \else + \ifcase\arrcount@\let\leads@\vrule\or\let\leads@\vrule\or + \def\leads@{\vbox to\ten@\p@{% + \hrule\height1.67\p@\depth\z@\width.4\p@ + \vfil + \hrule\height3.33\p@\depth\z@\width.4\p@ + \vfil + \hrule\height1.67\p@\depth\z@\width.4\p@}}\or + \def\leads@{\hbox{\vrule\height\p@\hskip\tw@\p@\vrule}}\fi + \fi + \cleaders\leads@\vfill\nointerlineskip + \ifnum\arrcount@=\m@ne\else\ifnum\arrcount@=\thr@@\else + \hbox{\arrow@iv + \ifN@ + \ifcase\scount@\or\or\char118 \or\char117 \or\or\or\char119 \or + \char120 \or\char121 \or\char122 \or\or\or\arrow@iii\char123 \or + \vbox{\hbox{\char117}\nointerlineskip\vskip-\thr@@\p@ + \hbox{\char117}\vskip\thr@@\p@}\fi + \else + \ifnum\tcount@=\m@ne + \else + \ifcase\tcount@\char117 \or\or\char117 \or\char118 \or\char119 \or + \char120 \or\or\or\or\or\char121 \or\char122 \or\arrow@iii\char123 \or + \vbox{\hbox{\char117}\nointerlineskip\vskip-\thr@@\p@ + \hbox{\char117}\vskip\thr@@\p@}\fi + \fi + \fi}% + \fi\fi + \ifN@\vskip\ydimen@\else\vskip-\Ydimen@\fi}% + \ifN@ + \dimen@ii\firsty@ + \else + \dimen@ii-\firsty@\advance\dimen@ii\ht\ZER@\multiply\dimen@ii\m@ne + \fi + \rlap{\smash{\hskip\tocenter@\hskip\pdimen@\raise\dimen@ii\box\ZER@}}% + \iflabel@i + \setbox\ZER@\vbox to\dimen@{\vfil + \hbox{$\m@th\tsize@@\label@i$}\vskip\tw@\ldimen@i\vfil}% + \rlap{\smash{\hskip\tocenter@\hskip\pdimen@ + \ifnum\arrcount@=\m@ne\let\next@\relax\else\let\next@\llap\fi + \next@{\raise\dimen@ii\hbox{\ifnum\arrcount@=\m@ne\hskip-.5\wd\ZER@\fi + \box\ZER@\ifnum\arrcount@=\m@ne\else\hskip\tw@\p@\fi}}}}% + \fi + \iflabel@ii + \ifnum\arrcount@=\m@ne + \else + \setbox\ZER@\vbox to\dimen@{\vfil + \hbox{$\m@th\tsize@\label@ii$}\vskip\tw@\ldimen@ii\vfil}% + \rlap{\smash{\hskip\tocenter@\hskip\pdimen@ + \rlap{\raise\dimen@ii\hbox{\ifnum\arrcount@=\thr@@\hskip4.5\p@\else + \hskip2.5\p@\fi\box\ZER@}}}}% + \fi + \fi +} +\newdimen\goal@ +\newdimen\shifted@ +\newcount\Tcount@ +\newcount\Scount@ +\newbox\shaft@ +\newcount\slcount@ +\def\getcos@#1{% + \ifnum\tan@i<\tan@ii + \dimen@#1% + \ifnum\slcount@<8 \count@9 \else \ifnum\slcount@<12 \count@8 \else + \count@7 \fi\fi + \multiply\dimen@\count@\divide\dimen@\ten@ + \dimen@ii\dimen@\multiply\dimen@ii\tan@i\divide\dimen@ii\tan@ii + \else + \dimen@ii#1% + \count@-\slcount@\advance\count@24 + \ifnum\count@<8 \count@9 \else \ifnum\count@<12 \count@8 + \else\count@7 \fi\fi + \multiply\dimen@ii\count@\divide\dimen@ii\ten@ + \dimen@\dimen@ii\multiply\dimen@\tan@ii\divide\dimen@\tan@i + \fi} +\newdimen\adjust@ +\def\Nnext@{\ifN@\let\next@\raise\else\let\next@\lower\fi} +\def\arrow@@{\slcount@\angcount@ + \ifNESW@ + \ifnum\angcount@<\ten@ + \let\arrowfont@\arrow@i\global\advance\angcount@\m@ne + \global\multiply\angcount@13 + \else + \ifnum\angcount@<19 + \let\arrowfont@\arrow@ii\global\advance\angcount@-\ten@ + \global\multiply\angcount@13 + \else + \let\arrowfont@\arrow@iii\global\advance\angcount@-19 + \global\multiply\angcount@13 + \fi\fi + \Tcount@\angcount@ + \else + \ifnum\angcount@<5 + \let\arrowfont@\arrow@iii\global\advance\angcount@\m@ne + \global\multiply\angcount@13 \global\advance\angcount@65 + \else + \ifnum\angcount@<14 + \let\arrowfont@\arrow@iv\global\advance\angcount@-5 + \global\multiply\angcount@13 + \else + \ifnum\angcount@<23 + \let\arrowfont@\arrow@v\global\advance\angcount@-14 + \global\multiply\angcount@13 + \else + \let\arrowfont@\arrow@i\global\angcount@117 + \fi\fi\fi + \ifnum\angcount@=117 \Tcount@115 \else\Tcount@\angcount@\fi + \fi + \Scount@\Tcount@ + \ifE@ + \ifnum\tcount@=\z@\advance\Tcount@\tw@\else\ifnum\tcount@=13 + \advance\Tcount@\tw@\else\advance\Tcount@\tcount@\fi\fi + \ifnum\scount@=\z@\else\ifnum\scount@=13 \advance\Scount@\thr@@\else + \advance\Scount@\scount@\fi\fi + \else + \ifcase\tcount@\advance\Tcount@\thr@@\or\or\advance\Tcount@\thr@@\or + \advance\Tcount@\tw@\or\advance\Tcount@6 \or\advance\Tcount@7 + \or\or\or\or\or\advance\Tcount@8 \or\advance\Tcount@9 \or + \advance\Tcount@12 \or\advance\Tcount@\thr@@\fi + \ifcase\scount@\or\or\advance\Scount@\thr@@\or\advance\Scount@\tw@\or + \or\or\advance\Scount@4 \or\advance\Scount@5 \or\advance\Scount@\ten@ + \or\advance\Scount@11 \or\or\or\advance\Scount@12 \or\advance + \Scount@\tw@\fi + \fi + \ifcase\arrcount@\or\or\global\advance\angcount@\@ne\else\fi + \ifN@\shifted@\firsty@\else\shifted@-\firsty@\fi + \ifE@\else\advance\shifted@\charht@\fi + \goal@\secondy@\advance\goal@-\firsty@ + \ifN@\else\multiply\goal@\m@ne\fi + \setbox\shaft@\hbox{\arrowfont@\char\angcount@}% + \ifnum\arrcount@=\thr@@ + \getcos@{1.5\p@}% + \setbox\shaft@\hbox to\wd\shaft@{\arrowfont@ + \rlap{\hskip\dimen@ii + \smash{\ifNESW@\let\next@\lower\else\let\next@\raise\fi + \next@\dimen@\hbox{\arrowfont@\char\angcount@}}}% + \rlap{\hskip-\dimen@ii + \smash{\ifNESW@\let\next@\raise\else\let\next@\lower\fi + \next@\dimen@\hbox{\arrowfont@\char\angcount@}}}\hfil}% + \fi + \rlap{\smash{\hskip\tocenter@\hskip\firstx@ + \ifnum\arrcount@=\m@ne + \else + \ifnum\arrcount@=\thr@@ + \else + \ifnum\scount@=\m@ne + \else + \ifnum\scount@=\z@ + \else + \setbox\ZER@\hbox{\ifnum\angcount@=117 \arrow@v\else\arrowfont@\fi + \char\Scount@}% + \ifNESW@ + \ifnum\scount@=\tw@ + \dimen@\shifted@\advance\dimen@-\charht@ + \ifN@\hskip-\wd\ZER@\fi + \Nnext@ + \next@\dimen@\copy\ZER@ + \ifN@\else\hskip-\wd\ZER@\fi + \else + \Nnext@ + \ifN@\else\hskip-\wd\ZER@\fi + \next@\shifted@\copy\ZER@ + \ifN@\hskip-\wd\ZER@\fi + \fi + \ifnum\scount@=12 + \advance\shifted@\charht@\advance\goal@-\charht@ + \ifN@\hskip\wd\ZER@\else\hskip-\wd\ZER@\fi + \fi + \ifnum\scount@=13 + \getcos@{\thr@@\p@}% + \ifN@\hskip\dimen@\else\hskip-\wd\ZER@\hskip-\dimen@\fi + \adjust@\shifted@\advance\adjust@\dimen@ii + \Nnext@ + \next@\adjust@\copy\ZER@ + \ifN@\hskip-\dimen@\hskip-\wd\ZER@\else\hskip\dimen@\fi + \fi + \else + \ifN@\hskip-\wd\ZER@\fi + \ifnum\scount@=\tw@ + \ifN@\hskip\wd\ZER@\else\hskip-\wd\ZER@\fi + \dimen@\shifted@\advance\dimen@-\charht@ + \Nnext@ + \next@\dimen@\copy\ZER@ + \ifN@\hskip-\wd\ZER@\fi + \else + \Nnext@ + \next@\shifted@\copy\ZER@ + \ifN@\else\hskip-\wd\ZER@\fi + \fi + \ifnum\scount@=12 + \advance\shifted@\charht@\advance\goal@-\charht@ + \ifN@\hskip-\wd\ZER@\else\hskip\wd\ZER@\fi + \fi + \ifnum\scount@=13 + \getcos@{\thr@@\p@}% + \ifN@\hskip-\wd\ZER@\hskip-\dimen@\else\hskip\dimen@\fi + \adjust@\shifted@\advance\adjust@\dimen@ii + \Nnext@ + \next@\adjust@\copy\ZER@ + \ifN@\hskip\dimen@\else\hskip-\dimen@\hskip-\wd\ZER@\fi + \fi + \fi + \fi\fi\fi\fi + \ifnum\arrcount@=\m@ne + \else + \loop + \ifdim\goal@>\charht@ + \ifE@\else\hskip-\charwd@\fi + \Nnext@ + \next@\shifted@\copy\shaft@ + \ifE@\else\hskip-\charwd@\fi + \advance\shifted@\charht@\advance\goal@-\charht@ + \repeat + \ifdim\goal@>\z@ + \dimen@\charht@\advance\dimen@-\goal@ + \divide\dimen@\tan@i\multiply\dimen@\tan@ii + \ifE@\hskip-\dimen@\else\hskip-\charwd@\hskip\dimen@\fi + \adjust@\shifted@\advance\adjust@-\charht@\advance\adjust@\goal@ + \Nnext@ + \next@\adjust@\copy\shaft@ + \ifE@\else\hskip-\charwd@\fi + \else + \adjust@\shifted@\advance\adjust@-\charht@ + \fi + \fi + \ifnum\arrcount@=\m@ne + \else + \ifnum\arrcount@=\thr@@ + \else + \ifnum\tcount@=\m@ne + \else + \setbox\ZER@ + \hbox{\ifnum\angcount@=117 \arrow@v\else\arrowfont@\fi\char\Tcount@}% + \ifnum\tcount@=\thr@@ + \advance\adjust@\charht@ + \ifE@\else\ifN@\hskip-\charwd@\else\hskip-\wd\ZER@\fi\fi + \else + \ifnum\tcount@=12 + \advance\adjust@\charht@ + \ifE@\else\ifN@\hskip-\charwd@\else\hskip-\wd\ZER@\fi\fi + \else + \ifE@\hskip-\wd\ZER@\fi + \fi\fi + \Nnext@ + \next@\adjust@\copy\ZER@ + \ifnum\tcount@=13 + \hskip-\wd\ZER@ + \getcos@{\thr@@\p@}% + \ifE@\hskip-\dimen@\else\hskip\dimen@\fi + \advance\adjust@-\dimen@ii + \Nnext@ + \next@\adjust@\box\ZER@ + \fi + \fi\fi\fi}}% + \iflabel@i + \rlap{\hskip\tocenter@ + \dimen@\firstx@\advance\dimen@\secondx@\divide\dimen@\tw@ + \advance\dimen@\ldimen@i + \dimen@ii\firsty@\advance\dimen@ii\secondy@\divide\dimen@ii\tw@ + \global\multiply\ldimen@i\tan@i\global\divide\ldimen@i\tan@ii + \ifNESW@\advance\dimen@ii\ldimen@i\else\advance\dimen@ii-\ldimen@i\fi + \setbox\ZER@\hbox{\ifNESW@\else\ifnum\arrcount@=\thr@@\hskip4\p@\else + \hskip\tw@\p@\fi\fi + $\m@th\tsize@@\label@i$\ifNESW@\ifnum\arrcount@=\thr@@\hskip4\p@\else + \hskip\tw@\p@\fi\fi}% + \ifnum\arrcount@=\m@ne + \ifNESW@\advance\dimen@.5\wd\ZER@\advance\dimen@\p@\else + \advance\dimen@-.5\wd\ZER@\advance\dimen@-\p@\fi + \advance\dimen@ii-.5\ht\ZER@ + \else + \advance\dimen@ii\dp\ZER@ + \ifnum\slcount@<6 \advance\dimen@ii\tw@\p@\fi + \fi + \hskip\dimen@ + \ifNESW@\let\next@\llap\else\let\next@\rlap\fi + \next@{\smash{\raise\dimen@ii\box\ZER@}}}% + \fi + \iflabel@ii + \ifnum\arrcount@=\m@ne + \else + \rlap{\hskip\tocenter@ + \dimen@\firstx@\advance\dimen@\secondx@\divide\dimen@\tw@ + \ifNESW@\advance\dimen@\ldimen@ii\else\advance\dimen@-\ldimen@ii\fi + \dimen@ii\firsty@\advance\dimen@ii\secondy@\divide\dimen@ii\tw@ + \global\multiply\ldimen@ii\tan@i\global\divide\ldimen@ii\tan@ii + \advance\dimen@ii\ldimen@ii + \setbox\ZER@\hbox{\ifNESW@\ifnum\arrcount@=\thr@@\hskip4\p@\else + \hskip\tw@\p@\fi\fi + $\m@th\tsize@\label@ii$\ifNESW@\else\ifnum\arrcount@=\thr@@\hskip4\p@ + \else\hskip\tw@\p@\fi\fi}% + \advance\dimen@ii-\ht\ZER@ + \ifnum\slcount@<9 \advance\dimen@ii-\thr@@\p@\fi + \ifNESW@\let\next@\rlap\else\let\next@\llap\fi + \hskip\dimen@\next@{\smash{\raise\dimen@ii\box\ZER@}}}% + \fi + \fi +} +\def\outCD@#1{\def#1{\Err@{\noexpand#1must not be used within \string\CD}}} +\newskip\preCDskip@ +\newskip\postCDskip@ +\preCDskip@\z@ +\postCDskip@\z@ +\def\preCDspace#1{\RIfMIfI@ + \onlydmatherr@\preCDspace\else\advance\preCDskip@#1\relax\fi\else + \onlydmatherr@\preCDspace\fi} +\def\postCDspace#1{\RIfMIfI@ + \onlydmatherr@\postCDspace\else\advance\postCDskip@#1\relax\fi\else + \onlydmatherr@\postCDspace\fi} +\def\predisplayspace#1{\RIfMIfI@ + \onlydmatherr@\predisplayspace\else + \advance\abovedisplayskip#1\relax + \advance\abovedisplayshortskip#1\relax\fi + \else\onlydmatherr@\preCDspace\fi} +\def\postdisplayspace#1{\RIfMIfI@ + \onlydmatherr@\postdisplayspace\else + \advance\belowdisplayskip#1\relax + \advance\belowdisplayshortskip#1\relax\fi + \else\onlydmatherr@\postdisplayspace\fi} +\def\PreCDSpace#1{\global\preCDskip@#1\relax} +\def\PostCDSpace#1{\global\postCDskip@#1\relax} +\def\CD#1\endCD{% + \outCD@\cgaps\outCD@\rgaps\outCD@\Cgaps\outCD@\Rgaps + \preCD@#1\endCD + \advance\abovedisplayskip\preCDskip@ + \advance\abovedisplayshortskip\preCDskip@ + \advance\belowdisplayskip\postCDskip@ + \advance\belowdisplayshortskip\postCDskip@ + \vcenter{\offinterlineskip + \vskip\preCDskip@\Let@\global\colcount@\@ne\global\rowcount@\z@ + \everycr{% + \noalign{% + \ifnum\rowcount@=\Rowcount@ + \else + \getrgap@\rowcount@\vskip\getdim@ + \global\advance\rowcount@\@ne\global\colcount@\@ne + \fi}}% + \tabskip\z@ + \halign{&\global\xoff@\z@\global\yoff@\z@ + \getcgap@\colcount@\hskip\getdim@ + \hfil\vrule\height\ten@\p@\width\z@\depth\z@ + $\m@th\displaystyle{##}$\hfil + \global\advance\colcount@\@ne\cr + #1\crcr}\vskip\postCDskip@}% + \preCDskip@\z@\postCDskip@\z@ + \def\getcgap@##1{\ifcase##1\or\getdim@\z@\else\getdim@\standardcgap\fi}% + \def\getrgap@##1{\ifcase##1\getdim@\z@\else\getdim@\standardrgap\fi}% + \let\Width@\relax\let\Height@\relax\let\Depth@\relax\let\Rowheight@\relax + \let\Rowdepth@\relax\let\Colwidth@\relax +} +\let\enddocument\bye +\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne + \ch@ck#1#4#2% + \allocationnumber=\count1#1% + \global#3#5=\allocationnumber + \wlog{\string#5=\string#2\the\allocationnumber}} +\catcode`\@=\active diff --git a/macros/lamstex/inputs/letter.st b/macros/lamstex/inputs/letter.st new file mode 100644 index 0000000000..dd26486539 --- /dev/null +++ b/macros/lamstex/inputs/letter.st @@ -0,0 +1,157 @@ +\catcode`\@=11 +\let\alloc@\alloc@@ + +\expandafter\let\csname HL@1\endcsname=\relax +\expandafter\let\csname hl@1\endcsname=\relax + +\let\tocfile=\undefined +\let\indexfile=\undefined +\let\indexproofing=\undefined +\let\idefine=\undefined +\let\iabbrev=\undefined +\def"{\Err@{\string" for index marking not used in this style}} +\let\title=\undefined +\let\endtitle=\undefined +\let\author=\undefined +\let\endauthor=\undefined +\let\affil=\undefined +\let\endaffil=\undefined +\let\maketitle=\undefined + +\r@ggedbottomtrue +\interlinepenalty=1000 +\hsize=6.25truein +\vsize=8.9truein +\parindent=0pt +\parskip=0pt + +\def\listbi@{\penalty50 \bigskip} + +\let\addressee@=\empty +\let\Date@=\empty +\let\Date@@=\empty +\nopagenumbers +\newif\ifheadline@ +\headline@true +\newif\ifNoHead@ +\def\noheading{\global\headline@false} +\def\NoHeadings{\global\NoHead@true} + +\headline={% + \ifheadline@ + \ifnum\pageno>\@ne + \tenrm\frenchspacing To \addressee@\hfil\Date@@\hfil Page \folio + \else\hfil\fi + \else\hfil\fi} + +\def\beginlinemode@{\endmode@ + \begingroup\obeylines\def\endmode@{\par\endgroup}} +\def\beginparmode@{\endmode@ + \begingroup\parskip\medskipamount\def\endmode@{\par\endgroup}} +\let\endmode@\par + +\newdimen\longindentation +\longindentation=4truein +\newbox\returnbox@ +\newbox\Returnbox@ +\newif\ifreturn@ + +\let\letter=\relax + +\def\return{\return@true\beginlinemode@\getreturnbox@} +{\obeylines% + \gdef\getreturnbox@% + {\global\setbox\returnbox@\vbox\bgroup\raggedright% + \leftskip\longindentation\everypar{\hangindent2em}% + \def\endmode@{\egroup\endgroup}}} + +\def\Return{\begingroup\obeylines\getReturnbox@} +{\obeylines% + \gdef\getReturnbox@% + {\global\setbox\Returnbox@\vbox\bgroup\raggedright% + \leftskip\longindentation\everypar{\hangindent2em}}} +\def\endReturn{\egroup\endgroup} + +\def\Signoff{\begingroup\obeylines\Signoff@} +{\obeylines% + \long\gdef\Signoff@#1\endSignoff{\gdef\signoff{#1}\endgroup}} + +\def\date#1{\def\Date@{\hbox to \hsize{\hskip\longindentation + \ignorespaces#1\unskip\hfil}}\def\Date@@{\ignorespaces#1\unskip}} + +\date\today + +\newbox\addressbox@ +\def\address{\beginlinemode@\getaddress@} +{\obeylines\gdef\getaddress@ #1 + #2 + {#1\gdef\addressee@{#2}% + \global\setbox\addressbox@\vbox to1truein\bgroup + \frenchspacing\raggedright% + \hsize\longindentation\everypar{\hangindent2em}#2 + \def\endmode@{\vfil\egroup\endgroup\makeheading@}}} + +\newif\iffoldlines@ +\def\foldlines{\global\foldlines@true} + +\def\makeheading@{\hrule height\z@\nobreak\vskip3truein + \iffoldlines@ + \hbox to \hsize{\hfil\rlap{\hskip40pt + \vrule\width.15truecm\height.4truept\depth\z@}} + \vskip-.4truept + \fi + \vskip-3truein + \nointerlineskip + \vbox to 1.5truein{\vskip0pt plus.1fil + \ifreturn@\box\returnbox@\else\copy\Returnbox@\fi + \vskip 0pt plus .2fil + \Date@ + \vskip 0pt plus .4fil} + \nointerlineskip + \vbox to 1truein{\vskip 0pt plus .3fil + \box\addressbox@ + \vskip 0pt plus .7fil} + \bigskip + \frenchspacing + \global\everypar{\global\everypar{\nonfrenchspacing\global\everypar{}}}} + +\def\salute{\beginparmode@} + +\def\closing{\beginlinemode@\getclosing@} +{\obeylines\gdef\getclosing@ #1 + #2 + {#1\nobreak\bigskip\leftskip\longindentation#2 + \nobreak\bigskip\bigskip\bigskip % + \def + {\endgraf\nobreak}}} + +\def\annotations + {\beginlinemode@\nobreak\bigskip\def\par{\endgraf\nobreak}\obeylines\par} + +\newif\iffirstpar@ + +\def\cc + {\beginlinemode@\firstpar@true\nobreak\bigskip\def\par{\endgraf\nobreak}% + \everypar{\iffirstpar@\global\firstpar@false\else + \hphantom{cc\colon@\space}\fi}% + \obeylines\par cc\colon@\space\ignorespaces} + +\def\encl + {\beginlinemode@\firstpar@true\nobreak\bigskip\def\par{\endgraf\nobreak}% + \everypar{\iffirstpar@\global\firstpar@false\else + \hphantom{encl\colon@\space}\fi}% + \obeylines\par encl\colon@\space\ignorespaces} + +\def\ps{\beginparmode@\nobreak + \interlinepenalty5000 \def\par{\endgraf\penalty5000 }} + +\def\endletter{\endmode@\par\vfill\break + \def\addressee@{}\ifNoHead@\else\global + \headline@true\fi\return@false\pageno\@ne} + +\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne + \ch@ck#1#4#2\allocationnumber=\count1#1 + \global#3#5=\allocationnumber + \wlog{\string#5=\string#2\the\allocationnumber}} + +\catcode`\@=\active diff --git a/macros/lamstex/inputs/letter.tex b/macros/lamstex/inputs/letter.tex new file mode 100644 index 0000000000..5a8a2aa016 --- /dev/null +++ b/macros/lamstex/inputs/letter.tex @@ -0,0 +1,189 @@ +\input amstexl +\input lamstex +\input lamslogo + +\docstyle{letter} + +\litdelimiter* + +\document + +\return +3701 W. Alabama, Suite 450-273 +Houston, TX 77027 + +\address +{\LamSTeX} Users +At Your Computers +Wherever They May Be + +\salute +Dear Mr. or Ms. {\LamSTeX} User: + +A comparison of the input file \lit*letter.tex* with this output reveals +the main features of the \lit*letter* style. + +The most distinctive feature of this style is the fact that after the +\Lit* +\return +* +line, for the return address, and after the +\Lit* +\address +* +line, for the address of the person to whom the letter is sent, line +breaks occur exactly as you type them---no special control symbol is +required to indicate these line breaks; thus, you can type these addresses +just as you would type them on a typewriter. + + +This special line processing for the \lit*\return* and \lit*\address* is +turned off by the blank line at the end of the return address or address. + +Notice, by the way, that the current date (i.e., the date that your +computer thinks it is), is added automatically. + +Somewhat less obvious, but also quite convenient, is the fact that \TeX's +normal conventions about adding extra spaces after periods is turned off +for the \lit*\address* and for the salutation (the first line after the +\lit*\salute*). So if your address or salutation includes a title like +`Mr\.' or `Ms\.' you don't have to treat the period specially (either by +adding \lit*~* after it, or by typing it as `\lit*\.*'). + +Unlike a paper or book style, where one expects a sequence of pages all of +the same length, in the \lit*letter* style shorter pages are allowed, +while page breaks between paragraphs are discouraged. No \lit*\HL* or +\lit*\hl* headings are defined in the \lit*letter* style, nor can you make +a table of contents or an index (if your letters need either, I'd +certainly hate to read them!). Similarly, \lit*\title*, \lit*\author*, +etc., are not defined. + +The \lit*\closing* also has special features. Not only do the line breaks +appear as you type them, but extra space is left after the first line, for +a signature. + +Similarly, lines after \lit*\annotations* are broken as they appear on the +screen. (In business letters, there is usually at least one such line, +giving the initials of the writer/typist.) The lines after \lit*\cc* (to +indicate where copies were sent) are even more special, since the first is +preceded by `cc: '\ while the remaining lines are indented to line up with +the first. The \lit*\encl* command (to indicate enclosures) is similar. +But \lit*\ps*, for a postscript, reverts to normal \TeX\ conventions; +notice that you have to put in any `P.S.'\ yourself). + +The letter ends with an \lit*\endletter*, even though no `\lit*\letter*' +command is required to begin it (in case this asymmetry bothers you, the +\lit*letter* style does allow you to type \lit*\letter* at the beginning +of the letter, but this command actually has no effect at all). + +Notice that \lit*\endletter* doesn't cause \TeX\ to quit---an +\lit*\enddocument* is still required. That allows you to type as many +letters as you like in a single file, each of the form +\Lit* +\return + . . . + . . . + . . . +\endletter +* +with an \lit*\enddocument* at the very end. + +The second page of this letter shows another feature---the heading that is +supplied automatically after the first page (once again, spaces after +periods in abbreviations like `Mr\.' and `Ms\.' will not be bigger in this +heading). + +Here is a list of other features that are not illustrated directly by this +file: +\list \advance\litindent30pt + +\item If you type +\Lit* +\date{...} +* +before your \lit*\document* line, then `\lit*...*' will be used as the +date (and \lit*\date{}* will therefore suppress a date). \lit*\today* +stands for the current date, so \lit*\date\today* would specify the +current date (of course, there's not much point in typing this, since the +current date is supplied automatically by default). + +\item If you type \lit*\noheading* near the beginning of your letter, then +no headings will appear on pages after the first; this may be necessary if +the salutation is long (because of a long name, or a name together with a +title). If you type \lit*\NoHeadings* before your \lit*\document* line, +then none of the letters will have headings. + +\item If you type +\Lit* +\Return + First line of return address + Second line of return address + . . . +\endReturn +* +before your \lit*\document* line, then this return address will +automatically be used on each of the letters in the document; however, you +can always change the return address for a particular letter by using +\lit*\return* at the beginning of that letter. + +\item Similarly, there is a way to avoid retyping the same ``sign off'' +for each letter. If you type +\Lit* +\Signoff + . . . + . . . +\endSignoff +* +before your \lit*\document* line, then you can simply type +\Lit* +\closing +\signoff +* +at the end. You can also type something like +\Lit* +\closing +Sincerely yours, +\signoff +* +where your \lit*\Signoff* includes only your title, etc., so that your can +use different closings for different people. + +\item If you type +\Lit* +\foldlines +* +before your \lit*\document* line, then all you letters will have little +fold lines near the right margin, as a guide for folding the letter into +thirds. The address will then be positioned properly to appear in the +window of a standard \#10 window envelope. \endlist + +And that's about it. + +\closing +Sincerely yours, +Michael Spivak, President +The \TeX plorators Corporation + +\annotations MS/\TeX + +\cc Other {\LamSTeX} Users +Other \TeX\ Users + +\encl An empty \lit*\hbox*. +An empty \lit*\vbox*. + +\ps P.S. Hope you don't mind these silly remarks at the end; they're just +meant to show you how \lit*\cc* and \lit*\encl* work. + +\ps P.P.S. This letter probably doesn't remind you of a real business +letter, not only because of the content, but also because it is printed in +10~point type, and business letters are usually typed on a typewriter, +whose type is closer to 11~point. The magical incantation +\lit*\mag=\magstephalf* +at the beginning of your file will make it look much more like a +customary business letter. \lit*\mag=\magstep1* might be used for a very +brief letter. + +\endletter + +\enddocument
\ No newline at end of file diff --git a/macros/lamstex/inputs/lists.tex b/macros/lamstex/inputs/lists.tex new file mode 100644 index 0000000000..497425703d --- /dev/null +++ b/macros/lamstex/inputs/lists.tex @@ -0,0 +1,122 @@ +\catcode`\@=11 +\def\listbi@{\penalty50 \medskip} +\def\listbii@{\penalty100 \smallskip} +\def\listmi@{\advance\leftskip30\p@\relax} +\let\listmii@\listmi@ +\let\listmiii@\listmi@ +\let\listmiv@\listmi@ +\let\listmv@\listmi@ +\def\itemi@#1{\noindent@@\llap{#1\hskip5\p@}} +\let\itemii@\itemi@ +\let\itemiii@\itemi@ +\let\itemiv@\itemi@ +\let\itemv@\itemi@ +\def\liste@{\penalty-50 \medskip} +\def\listei@{\penalty-100 \smallskip} +\def\list@@C{\csname list@C\number\listlevel@\endcsname} +\def\list@@P{\csname list@P\number\listlevel@\endcsname} +\def\list@@Q{\csname list@Q\number\listlevel@\endcsname} +\def\list@@S{\csname list@S\number\listlevel@\endcsname} +\def\list@@N{\csname list@N\number\listlevel@\endcsname} +\def\list@@F{\csname list@F\number\listlevel@\endcsname} +\def\Firstitem@true{\csname firstitem\romannumeral\listlevel@ + @true\endcsname} +\def\Firstitem@false{\csname firstitem\romannumeral\listlevel@ + @false\endcsname} +\def\Listm@{\csname listm\romannumeral\listlevel@ @\endcsname} +\def\Item@{\csname item\romannumeral\listlevel@ @\endcsname} +\def\Liste@{\csname liste\romannumeral\listlevel@ @\endcsname} +\def\keepitem{\listcontinue@true} +\def\list{% + \iflistcontinue@\else\global\csname list@C1\endcsname\z@\fi + \global\csname list@C2\endcsname\z@ + \global\csname list@C3\endcsname\z@ + \global\csname list@C4\endcsname\z@ + \global\csname list@C5\endcsname\z@ + \begingroup + \firstitemi@true + \listlevel@\@ne + \def\item{\FN@\item@}% + \FN@\list@} +\Invalid@\runinitem +\def\list@{\ifx\next\par + \DN@\par{\FN@\list@}\else + \ifx\next\runinitem + \DN@\runinitem{\FN@\runinitem@}\else + \DN@{\par\dimen@\parskip\parskip\dimen@}\fi\fi\next@} +\def\item@{% + \ifoutlevel@\Liste@\outlevel@false\fi + \ifrunin@\runin@false\par + \dimen@\parskip\parskip\dimen@ + \Listm@\fi + \iffirstitemi@\listbi@\listmi@\firstitemi@false\else\par\fi + \iffirstitemii@\listbii@\listmii@\firstitemii@false\else\par\fi + \iffirstitemiii@\listbiii@\listmiii@\firstitemiii@false\else\par\fi + \iffirstitemiv@\listbiv@\listmiv@\firstitemiv@false\else\par\fi + \iffirstitemv@\listbv@\listmv@\firstitemv@false\else\par\fi + \DN@"##1"{{\let\pre\list@@P\let\post\list@@Q + \let\style\list@@S\let\numstyle\list@@N + \vskip-\parskip + \Item@{\list@@F##1}% + \noexpands@ + \Qlabel@{##1}}% + \locallabel@ + \FNSSP@}% + \DNii@{\global\advance\list@@C\@ne + {\noexpands@ + \xdef\Thelabel@@@{\number\list@@C}% + \xdefThelabel@\list@@N + \xdef\Thelabel@@@@{\list@@P\Thelabel@\list@@Q}% + \xdefThelabel@@\list@@S + }% + \locallabel@ + \vskip-\parskip + \Item@{\list@@F\thelabel@@}% + \FN@\pretendspace@}% + \ifx\next"\expandafter\next@\else\expandafter\nextii@\fi} +\def\runinitem@{% + \runin@true + \Firstitem@false + \DN@"##1"{{\let\pre\list@@P\let\post\list@@Q + \let\style\list@@S\let\numstyle\list@@N + \unskip\space{\list@@F##1} % + \noexpands@ + \Qlabel@{##1}}% + \locallabel@ + \ignorespaces}% + \DNii@{\global\advance\list@@C\@ne + {\noexpands@ + \xdef\Thelabel@@@{\number\list@@C}% + \xdefThelabel@\list@@N + \xdef\Thelabel@@@@{\list@@P\Thelabel@\list@@Q}% + \xdefThelabel@@\list@@S + }% + \locallabel@ + \unskip\space{\list@@F\thelabel@@} }% + \ifx\next"\expandafter\next@\else\expandafter\nextii@\fi} +\def\inlevel{\ifnum\listlevel@=5 + \DN@{\Err@{Already 5 levels down}}\else + \DN@{\begingroup\advance\listlevel@\@ne + \Firstitem@true\FN@\inlevel@}\fi\next@} +\def\inlevel@{\ifx\next\par + \DN@\par{\FN@\inlevel@}\else + \ifx\next\runinitem + \DN@\runinitem{\FN@\runinitem@}\else + \let\next@\relax\fi\fi\next@} +\def\outlevel{\ifnum\listlevel@=\@ne + \Err@{At top level}\else + \par\global\list@@C\z@\endgroup\outlevel@true\fi} +\def\endlist{% + \par + \global\toks\@ne{}\count@\listlevel@ + {\loop + \ifnum\count@>\z@\global\toks\@ne\expandafter{\the\toks\@ne\endgroup}% + \advance\count@\m@ne + \repeat}% + \the\toks\@ne + \liste@ + \listcontinue@false + \vskip-\parskip + \noindent@@ + \FN@\pretendspace@} +\catcode`\@=\active diff --git a/macros/lamstex/inputs/lists.tox b/macros/lamstex/inputs/lists.tox new file mode 100644 index 0000000000..7d1ae82d30 --- /dev/null +++ b/macros/lamstex/inputs/lists.tox @@ -0,0 +1,15 @@ +\catcode`\@=11 +\let\listbi@\relax\let\listbii@\relax +\let\listmi@\relax\let\listmii@\relax\let\listmiii@\relax +\let\listmiv@\relax\let\listmv@\relax +\let\itemi@\relax\let\itemii@\relax\let\itemiii@\relax +\let\itemiv@\relax\let\itemv@\relax +\let\liste@\relax\let\listei@\relax +\let\List@@C\relax\let\list@@P\relax\let\list@@Q\relax\let\list@@S\relax +\let\list@@N\relax\let\list@@F\relax +\let\Firstitem@true\relax\let\Firstitem@false\relax\let\Listm@\relax +\let\Item@\relax\let\Liste@\relax +\let\keepitem\undefined\let\list\undefined\let\runinitem\undefined +\let\list@\relax\let\item@\relax\let\runinitem@\relax\let\inlevel\undefined +\let\inlevel@\relax\let\outlevel\undefined\let\endlist\undefined +\catcode`\@=\active diff --git a/macros/lamstex/inputs/literal.tex b/macros/lamstex/inputs/literal.tex new file mode 100644 index 0000000000..704f56b7b5 --- /dev/null +++ b/macros/lamstex/inputs/literal.tex @@ -0,0 +1,68 @@ +\catcode`\@=11 +\def\CtrlM@{\egroup + \ifcase\litlines@\advance\litlines@\@ne\or + \box\litbox@\advance\litlines@\@ne\else + \penalty\interlitpenalty@\box\litbox@\fi + \Lit@} +\def\Lit@{\setbox\litbox@\hbox\bgroup\litdefs@\hskip\litindent} +\def\littab#1{\littab@#1\relax} +\def\TAB@{\egroup + \dimen@\wd\litbox@ + \advance\dimen@-\litindent + \setboxz@h{\tt0}% + \dimen@ii\littab@\wdz@ + \divide\dimen@\dimen@ii + \multiply\dimen@\dimen@ii + \advance\dimen@\littab@\wdz@ + \advance\dimen@\litindent + \setbox\litbox@\hbox\bgroup\litdefs@\hbox to\dimen@{\unhbox\litbox@\hfil}} +\def\litbackslash#1{% + \edef\litbs@{\catcode`\string#1=\z@ + \def\noexpand\litbs@@{\def\expandafter\noexpand\csname\string#1\endcsname + {\char`\string#1}}}} +\def\litcodes@{\catcode`\\=12 + \catcode`\{=12 \catcode`\}=12 + \catcode`\$=12 \catcode`\&=12 + \catcode`\#=12 + \catcode`\^=12 \catcode`\_=12 + \catcode`\@=12 \catcode`\~=12 \catcode`\"=12 + \catcode`\;=12 \catcode`\:=12 \catcode`\!=12 \catcode`\?=12 + \catcode`\%=12 \litbs@\catcode`\`=\active\obeyspaces\defspace@} +\def\activate@#1#2{{\lccode`\~=`#2% + \lowercase{% + \if0#1% + \gdef\Next@{\def~{\egroup\endgroup\bigskip\vskip-\parskip + \def\next@{\noindent@@\FN@\pretendspace@}\FNSS@\next@}}\else + \gdef\Next@{\def~{\egroup\egroup\endgroup}}\fi + }% + }} +\def\litdefs@{\let\0\empty\let\1\litdelim@\def\ {\char32 }\litbs@@}% +\def\litdelimiter#1{% + \edef\litdelim@{\char`#1}% + \def\lit#1{\leavevmode\begingroup\litcodes@\litdefs@ + \tt\hyphenchar\tentt\m@ne\lit@}% + \def\lit@##1#1{##1\endgroup\null}% + \def\Lit#1{\ifhmode$$\abovedisplayskip\bigskipamount + \abovedisplayshortskip\bigskipamount + \belowdisplayskip\z@\belowdisplayshortskip\z@ + \postdisplaypenalty\@M + $$\vskip-\baselineskip\else\bigskip\fi + \begingroup\litlines@\z@ + \catcode`#1=\active\activate@0#1\Next@ + \def\displaybreak{\egroup\break\litlines@\z@\Lit@}% + \def\allowdisplaybreak{\egroup\allowbreak\litlines@\z@\Lit@}% + \def\allowdisplaybreaks{\egroup\allowbreak\interlitpenalty@\z@ + \litlines@\z@\Lit@}% + \litcodes@\tt\catcode`\^^I=\active\letTAB@ + \obeylines\letM@\Lit@}% + \def\Litbox##1=#1{\begingroup\ifodd##1\relax\aftergroup\global\fi + \aftergroup\setbox\aftergroup##1\aftergroup\box\aftergroup\Litbox@ + \def\allowdisplaybreak{\egroup\allowbreak\litlines@\z@\Lit@}% + \def\allowdisplaybreaks{\egroup\allowbreak\interlitpenalty@\z@ + \litlines@\z@\Lit@}% + \catcode`#1=\active\activate@1#1\Next@ + \litcodes@\tt\catcode`\^^I=\active\letTAB@ + \obeylines\letM@\global\setbox\Litbox@\vbox\bgroup\litindent\z@% + \litlines@\z@\Lit@}% +} +\catcode`\@=\active diff --git a/macros/lamstex/inputs/literal.tox b/macros/lamstex/inputs/literal.tox new file mode 100644 index 0000000000..0766810e5d --- /dev/null +++ b/macros/lamstex/inputs/literal.tox @@ -0,0 +1,6 @@ +\catcode`\@=11 +\let\CtrlM@\relax\let\Lit@\relax\let\littab\undefined\let\TAB@\relax +\let\litbackslash\undefined\let\litcodes@\relax\let\activate@\relax +\let\litdefs@\relax\let\litdelimiter\undefined\let\lit\undefined +\let\lit@\relax\let\Lit\undefined\let\Litbox\undefined +\catcode`\@=\active diff --git a/macros/lamstex/inputs/lithl.tex b/macros/lamstex/inputs/lithl.tex new file mode 100644 index 0000000000..e27833e637 --- /dev/null +++ b/macros/lamstex/inputs/lithl.tex @@ -0,0 +1,86 @@ +% LITHL.TEX VERSION 2.0 +% COPYRIGHT (C) 1991 BY THE TEXPLORATORS CORPORATION +% ALL RIGHTS RESERVED + +% THIS FILE SHOULD NOT BE CHANGED IN ANY WAY. + +\catcode`\@=11 +\let\alloc@\alloc@@ +\expandafter\newbox\csname lit@0\endcsname +\expandafter\newbox\csname lit@1\endcsname +\expandafter\newbox\csname lit@2\endcsname +\expandafter\newbox\csname lit@3\endcsname +\expandafter\newbox\csname lit@4\endcsname +\expandafter\newbox\csname lit@5\endcsname +\expandafter\newbox\csname lit@6\endcsname +\expandafter\newbox\csname lit@7\endcsname +\expandafter\newbox\csname lit@8\endcsname +\expandafter\newbox\csname lit@9\endcsname +\newwrite\tempwrite@ +\newread\tempread@ +\newcount\litbackslashno@ +\litbackslashno@\m@ne +\def\litbackslash#1{% + \edef\next@{\litbackslashno@`\string#1}\next@ + \edef\litbs@{\catcode`\string#1=\z@ + \def\noexpand\litbs@@{\def\expandafter\noexpand\csname\string#1\endcsname + {\char`\string#1}}}} +\def\litdelimiter#1{% + \edef\litdelim@{\char`#1}% + \def\lit##1{\ifx##1#1\let\next@\lit@\else\count@##1\relax + \def\next@{\FN@\lit@@}\fi\next@}% + \def\lit@{\leavevmode\begingroup\litcodes@\litdefs@ + \tt\hyphenchar\tentt\m@ne\lit@@@}% + \def\lit@@@##1#1{##1\endgroup\null}% + \def\lit@@{\ifx\next#1\let\next@\lit@@@@\else + \def\next@{\unhcopy\csname lit@\number\count@\endcsname\null}\fi\next@}% + \def\lit@@@@#1{\prevanish@ + \begingroup\litcodes@\ifnum\litbackslashno@=\m@ne\else + \catcode\litbackslashno@=12 \fi\lit@@@@@}% + \def\lit@@@@@##1#1{\toks@{##1}% + \iftoc@ + \edef\next@{\write\toc@{\noexpand\noexpand + \noexpand\lit\number\count@#1\the\toks@#1}}\next@ + \fi + \ifnum\litbackslashno@=\m@ne\def\next@{\the\toks@}\else + \immediate\openout\tempwrite@\jobname.tmp + \immediate\write\tempwrite@{\the\toks@#1}% + \immediate\closeout\tempwrite@ + \catcode\litbackslashno@=\z@\litdefs@ + \immediate\openin\tempread@\jobname.tmp + \read\tempread@ to\next@ + \immediate\closein\tempread@ + \def\nextiii@####1#1####2\nextiii@{\def\next@{####1}}% + \expandafter\nextiii@\next@\nextiii@ + \fi + \global\expandafter\setbox\csname lit@\number\count@\endcsname + \hbox{\tt\next@}% + \endgroup\postvanish@}% + \def\Lit#1{\ifhmode$$\abovedisplayskip\bigskipamount + \abovedisplayshortskip\bigskipamount + \belowdisplayskip\z@\belowdisplayshortskip\z@ + \postdisplaypenalty\@M + $$\vskip-\baselineskip\else\bigskip\fi + \begingroup\litlines@\z@ + \catcode`#1=\active\activate@0#1\Next@ + \def\displaybreak{\egroup\break\litlines@\z@\Lit@}% + \def\allowdisplaybreak{\egroup\allowbreak\litlines@\z@\Lit@}% + \def\allowdisplaybreaks{\egroup\allowbreak\interlitpenalty@\z@ + \litlines@\z@\Lit@}% + \litcodes@\tt\catcode`\^^I=\active\letTAB@ + \obeylines\letM@\Lit@}% + \def\Litbox##1=#1{\begingroup\ifodd##1\relax\aftergroup\global\fi + \aftergroup\setbox\aftergroup##1\aftergroup\box\aftergroup\Litbox@ + \def\allowdisplaybreak{\egroup\allowbreak\litlines@\z@\Lit@}% + \def\allowdisplaybreaks{\egroup\allowbreak\interlitpenalty@\z@ + \litlines@\z@\Lit@}% + \catcode`#1=\active\activate@1#1\Next@ + \litcodes@\tt\catcode`\^^I=\active\letTAB@ + \obeylines\letM@\global\setbox\Litbox@\vbox\bgroup\litindent\z@% + \litlines@\z@\Lit@}% +} +\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne + \ch@ck#1#4#2\allocationnumber=\count1#1 + \global#3#5=\allocationnumber + \wlog{\string#5=\string#2\the\allocationnumber}} +\catcode`\@=\active diff --git a/macros/lamstex/inputs/paper.st b/macros/lamstex/inputs/paper.st new file mode 100644 index 0000000000..3f94dd5291 --- /dev/null +++ b/macros/lamstex/inputs/paper.st @@ -0,0 +1,516 @@ +% PAPER.ST VERSION 2.0 +% COPYRIGHT (C) 1989, 1990, 1991 BY THE TEXPLORATORS CORPORATION +% ALL RIGHTS RESERVED + +% IF THIS FILE IS MODIFIED IN ANY WAY, IT SHOULD BE GIVEN A DIFFERENT NAME ! + +\catcode`\@=11 +\ifx\paperst@\relax\catcode`\@=\active\endinput\else\let\paperst@\relax\fi +\let\alloc@=\alloc@@ + +\hsize=30pc +\vsize=42pc +\parindent=1em +\normallineskiplimit=1pt +\advance\hoffset 48pt +\advance\voffset 78pt + +\font@\ninerm=cmr9 +\font@\eightrm=cmr8 +\font@\sixrm=cmr6 +\font@\eighti=cmmi8 \skewchar\eighti='177 +\font@\sixi=cmmi6 \skewchar\sixi='177 +\font@\ninesy=cmsy9 \skewchar\ninesy='60 +\font@\eightsy=cmsy8 \skewchar\eightsy='60 +\font@\sixsy=cmsy6 \skewchar\sixsy='60 +\font@\eightbf=cmbx8 +\font@\sixbf=cmbx6 +\font@\eightit=cmti8 +\font@\eightsl=cmsl8 +\font@\eighttt=cmtt8 + +\ifmsamloaded@ + \font@\eightmsa=msam8 + \font@\sixmsa=msam6 +\fi + +\ifmsbmloaded@ + \font@\eightmsb=msbm8 + \font@\sixmsb=msbm6 +\fi + +\ifeufmloaded@ + \font@\eighteufm=eufm8 + \font@\sixeufm=eufm6 +\fi + +\ifcmmibloaded@ + \font@\eightcmmib=cmmib8 \skewchar\eightcmmib='177 + \font@\sixcmmib=cmmib6 \skewchar\sixcmmib='177 +\fi + +\ifcmbsyloaded@ + \font@\eightcmbsy=cmbsy8 \skewchar\eightcmbsy='60 + \font@\sixcmbsy=cmbsy6 \skewchar\sixcmbsy='60 +\fi + +\newskip\ttglue@ + +\def\tenpoint{\def\pointsize@{10}% + \normalbaselineskip12\p@ + \abovedisplayskip12\p@ plus3\p@ minus9\p@ + \belowdisplayskip12\p@ plus3\p@ minus9\p@ + \abovedisplayshortskip\z@ plus3\p@ + \belowdisplayshortskip7\p@ plus3\p@ minus4\p@ + \textonlyfont@\rm\tenrm + \textonlyfont@\it\tenit + \textonlyfont@\sl\tensl + \textonlyfont@\bf\tenbf + \ifsyntax@\def\big##1{{\hbox{$\left##1\right.$}}}\else + \let\big\tenbig@ + \textfont\z@\tenrm \scriptfont\z@\sevenrm \scriptscriptfont\z@\fiverm + \textfont\@ne\teni \scriptfont\@ne\seveni \scriptscriptfont\@ne\fivei + \textfont\tw@\tensy \scriptfont\tw@\sevensy \scriptscriptfont\tw@\fivesy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \textfont\itfam\tenit + \textfont\slfam\tensl + \textfont\bffam\tenbf \scriptfont\bffam\sevenbf + \scriptscriptfont\bffam\fivebf + \ifmsamloaded@ + \textfont\msafam\tenmsa \scriptfont\msafam\sevenmsa + \scriptscriptfont\msafam\fivemsa + \fi + \ifmsbmloaded@ + \textfont\msbfam\tenmsb \scriptfont\msbfam\sevenmsb + \scriptscriptfont\msbfam\fivemsb + \fi + \ifeufmloaded@ + \textfont\eufmfam\teneufm \scriptfont\eufmfam\seveneufm + \scriptscriptfont\eufmfam\fiveeufm + \fi + \ifcmmibloaded@ + \textfont\cmmibfam\tencmmib \scriptfont\cmmibfam\sevencmmib + \scriptscriptfont\cmmibfam\fivecmmib + \fi + \ifcmbsyloaded@ + \textfont\cmbsyfam\tencmbsy \scriptfont\cmbsyfam\sevencmbsy + \scriptscriptfont\cmbsyfam\fivecmbsy + \fi + \fi + \let\tt\tentt + \tt\ttglue@.5emminus.15em + \setbox\strutbox\hbox{\vrule\height8.5\p@\depth3.5\p@\width\z@}% + \setbox\strutbox@\hbox{\vrule\height8\p@\depth3\p@\width\z@}% + \ex@.2326ex\normalbaselines\ifmmode\else\rm\fi} + +\def\tenbig@#1{{\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}} + +\tenpoint + +\def\eightpoint{\def\pointsize@{8}% + \normalbaselineskip10\p@ + \abovedisplayskip10\p@ plus2.4\p@ minus7.2\p@ + \belowdisplayskip10\p@ plus2.4\p@ minus7.2\p@ + \abovedisplayshortskip\z@ plus2.4\p@ + \belowdisplayshortskip5.6\p@ plus2.4\p@ minus3.2\p@ + \textonlyfont@\rm\eightrm + \textonlyfont@\it\eightit + \textonlyfont@\sl\eightsl + \textonlyfont@\bf\eightbf + \ifsyntax@\def\big##1{{\hbox{$\left##1\right.$}}}\else + \let\big\eightbig@ + \textfont\z@\eightrm \scriptfont\z@\sixrm \scriptscriptfont\z@\fiverm + \textfont\@ne\eighti \scriptfont\@ne\sixi \scriptscriptfont\@ne\fivei + \textfont\tw@\eightsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\fivesy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \textfont\itfam\eightit + \textfont\slfam\eightsl + \textfont\bffam\eightbf \scriptfont\bffam\sixbf + \scriptscriptfont\bffam\fivebf + \ifmsamloaded@ + \textfont\msafam\eightmsa \scriptfont\msafam\sixmsa + \scriptscriptfont\msafam\fivemsa + \fi + \ifmsbmloaded@ + \textfont\msbfam\eightmsb \scriptfont\msbfam\sixmsb + \scriptscriptfont\msbfam\fivemsb + \fi + \ifeufmloaded@ + \textfont\eufmfam\eighteufm \scriptfont\eufmfam\sixeufm + \scriptscriptfont\eufmfam\fiveeufm + \fi + \ifcmmibloaded@ + \textfont\cmmibfam\eightcmmib \scriptfont\cmmibfam\sixcmmib + \scriptscriptfont\cmmibfam\fivecmmib + \fi + \ifcmbsyloaded@ + \textfont\cmbsyfam\eightcmbsy \scriptfont\cmbsyfam\sixcmbsy + \scriptscriptfont\cmbsyfam\fivecmbsy + \fi + \fi + \let\tt\eighttt + \tt\ttglue@.4emminus.12em + \setbox\strutbox\hbox{\vrule\height7\p@\depth3\p@\width\z@}% + \setbox\strutbox@\hbox{\vrule\height6.5\p@\depth2.5\p@\width\z@}% + \ex@.2326ex\normalbaselines\ifmmode\else\rm\fi} + +\def\eightbig@#1{{\hbox{$\textfont\z@\ninerm\textfont\tw@\ninesy + \left#1\vbox to6.5\p@{}\right.\n@space$}}} + +{\catcode` =\active +\gdef\litcodes@@{\def {\allowbreak\hskip\ttglue@}}} + +\footline={\hss\tenpoint\folio\hss} + +\def\LamSTeX{L\kern-.4em\raise.3ex\hbox{$\ssize\Cal A$}% + \DN@{10}\ifx\next@\pointsize@\kern-.25em\else\kern-.3em\fi + \lower.4ex\hbox{\DN@{10}\ifx\next@\pointsize@\eightsy\else\sixsy\fi M}% + \kern-.1em{$\Cal S$}-\TeX} + +\def\claimformat@#1#2#3{\medbreak\noindent@@ + \DN@{8}\ifx\pointsize@\next@ + \rm\uppercase{#1 {\claim@@@F#2} #3}\punct@{\null.}\addspace@\enspace\else + \smc#1 {\claim@@@F#2} #3\punct@{\null.}\addspace@\enspace\fi + \sl} + +\def\windex@{\ifindexing@ + \expandafter\unmacro@\meaning\stari@\unmacro@ + \edef\macdef@{\string"\macdef@\string"}% + \edef\next@{\write\ndx@{\macdef@}}\next@ + \write\ndx@{{\number\pageno}{\page@N}{\page@P}{\page@Q}}% + \fi + \ifindexproofing@ + \ifx\stariii@\empty\else + \expandafter\unmacro@\meaning\stariii@\unmacro@\fi + \insert\margin@{\hbox{\eightpoint + \vrule\height7\p@\depth3\p@\width\z@\starii@ + \ifx\stariii@\empty\else\tt\macdef@\fi}}\fi} + +\newcount\toclevel@ +\toclevel@=3 +\def\toclevel#1{\toclevel@#1\relax} + +\def\HLtoc@{% + \iftoc@ + \ifnum\toclevel@<\@ne \else + {\noexpands@\let\style\relax + \edef\next@{\write\toc@{% + \noexpand\noexpand\expandafter\noexpand\HLname@ + {\expandafter\noexpand\csname HL@W\HLlevel@\endcsname}{\QorThelabel@@@@}}}% + \next@}% + \expandafter\unmacro@\meaning\entry@\unmacro@ + \Sixtoc@ + \write\toc@{\noexpand\Page{\number\pageno}{\page@N}% + {\page@P}{\page@Q}^^J}% + \fi + \fi} + +\def\hltoc@{% + \iftoc@ + \ifnum\hllevel@<\toclevel@ + {\noexpands@\let\style\relax + \edef\next@{\write\toc@{% + \ifnopunct@\noexpand\noexpand\noexpand\nopunct\fi + \ifnospace@\noexpand\noexpand\noexpand\nospace\fi + \noexpand\noexpand\expandafter\noexpand\hlname@ + {\expandafter\noexpand\csname hl@W\hllevel@\endcsname}{\QorThelabel@@@@}}}% + \next@}% + \expandafter\unmacro@\meaning\entry@\unmacro@ + \Sixtoc@ + \write\toc@{\noexpand\Page{\number\pageno}{\page@N}% + {\page@P}{\page@Q}^^J}% + \fi + \fi} + +\def\notocwrite@#1#2#3{\iftoc@\test@true\else\test@false\fi + \toc@false#1{#2}#3\iftest@\toc@true\fi} + +\notocwrite@\NameHL1\heading +\newfontstyle\heading{\smc} +\newif\ifinsection@ + +\expandafter\def\csname HL@1\endcsname#1\endHL{\global\insection@false + \bigbreak\medskip + {\locallabel@ + \global\setbox\@ne\vbox{\Let@\tabskip\hss@ + \halign to\hsize{\smc\hfil\ignorespaces##\unskip\hfil\cr + \expandafter\ifx\csname HL@W1\endcsname\empty\else + \csname HL@W1\endcsname\space\fi + {\HL@@F\ifx\thelabel@@\empty\else\thelabel@@\space\fi}% + \ignorespaces#1\crcr}}}\unvbox\@ne\nobreak\medskip} + +\def\appendices{% + \NameHL1\appendix + \Reset\appendix\@ne + \newnumstyle\appendix\Alph + \newword\appendix{Appendix}% +} + +\notocwrite@\Namehl1\section +\newstyle\section#1{#1\null.} + +\newif\ifcontinuesection@ +\def\keepsection{\global\continuesection@true} + +\expandafter\def\csname hl@1\endcsname#1{\global\insection@true + \global\continuesection@false + \medbreak\noindent@@ + {\locallabel@ + \bf{\hl@@F\ifx\thelabel@@\empty\else\thelabel@@\space\fi}% + \ignorespaces#1\unskip\punct@{\null.}}% + \par\nobreak\smallskip} + +\expandafter\newcount\csname hl@C2\endcsname +\csname hl@C2\endcsname\z@ +\expandafter\def\csname hl@S2\endcsname#1{#1\null.} +\expandafter\let\csname hl@N2\endcsname\arabic +\expandafter\let\csname hl@P2\endcsname\empty +\expandafter\let\csname hl@Q2\endcsname\empty +\expandafter\def\csname hl@F2\endcsname{\bf} +\expandafter\let\csname hl@W2\endcsname\empty + +\notocwrite@\Namehl2\subsection + +\expandafter\def\csname hl@2\endcsname#1{% + \ifinsection@ + \smallbreak + \noindent@@ + {\locallabel@ + {\hl@@F\ifx\thelabel@@\empty\else\thelabel@@\space\fi}\bf + \ignorespaces#1\unskip\punct@{\null.}\addspace@\enspace}% + \else + \Err@{\noexpand\subsection not in a \string\section}% + \fi} + +\expandafter\newcount\csname hl@C3\endcsname +\csname hl@C3\endcsname\z@ +\expandafter\def\csname hl@S3\endcsname#1{#1} +\expandafter\let\csname hl@N3\endcsname\arabic +\expandafter\let\csname hl@P3\endcsname\empty +\expandafter\let\csname hl@Q3\endcsname\empty +\expandafter\let\csname hl@F3\endcsname\empty +\expandafter\let\csname hl@W3\endcsname\empty + +\notocwrite@\Namehl3\topic + +\expandafter\def\csname hl@3\endcsname#1{% + \smallbreak + \noindent@@ + {\locallabel@ + \bf\ignorespaces#1\unskip\punct@{\null.}\addspace@\enspace}} + +\expandafter\newcount\csname hl@C4\endcsname +\csname hl@C4\endcsname\z@ +\expandafter\def\csname hl@S4\endcsname#1{#1} +\expandafter\let\csname hl@N4\endcsname\arabic +\expandafter\let\csname hl@P4\endcsname\empty +\expandafter\let\csname hl@Q4\endcsname\empty +\expandafter\let\csname hl@F4\endcsname\empty +\expandafter\let\csname hl@W4\endcsname\empty + +\notocwrite@\Namehl4\subtopic + +\expandafter\def\csname hl@4\endcsname#1{% + \smallbreak + {\locallabel@\bf\ignorespaces#1\unskip + \punct@{\null.}\addspace@\enspace}} + +\expandafter\def\csname HL@I1\endcsname{\ifcontinuesection@ + \else\Reset\hl11\fi} +\expandafter\def\csname hl@I1\endcsname{\Reset\hl21% + \newpre\hl2{\ifx\pref\empty\else\pref.\fi}} +\expandafter\def\csname hl@I2\endcsname{\Reset\hl31} +\expandafter\def\csname hl@I3\endcsname{\Reset\hl41} + +\def\vfootnote@#1{\insert\footins + \bgroup + \floatingpenalty\@MM\interlinepenalty\interfootnotelinepenalty + \leftskip\z@\rightskip\z@\spaceskip\z@\xspaceskip\z@ + \eightpoint + \splittopskip\ht\strutbox\splitmaxdepth\dp\strutbox + \locallabel@\noindent@@{\foottext@F#1}\modifyfootnote@ + \footstrut\FN@\fo@t} + +\newbox\abstractbox@ +\rightadd@\abstract\to\nofrillslist@ +\def\abstract@W{Abstract} + +\def\abstract{\begingroup + \global\setbox\abstractbox@\vbox\bgroup + \eightpoint\leftskip24\p@ \rightskip\leftskip + \everydisplay{\advance\displaywidth-48\p@\displayindent24\p@ + \csname displaymath \endcsname}% + \tolerance800 + \noindent@@ + \ifx\abstract@W\empty\else + \abstract@W\punct@{\null.}\addspace@\enspace\fi} + +\def\endabstract{\egroup\endgroup} + +\let\thanks@\relax +\long\def\thanks#1{\gdef\thanks@{\ignorespaces#1\unskip}} + +\let\keywords@\relax +\def\keywords#1{\gdef\keywords@{{\ignorespaces#1}}} + +\let\subjclass@\relax +\def\subjclass#1{\gdef\subjclass@{{\ignorespaces#1}}} + +\newcount\addresscount@ +\addresscount@\z@ +\long\def\address#1{\global\advance\addresscount@\@ne + \expandafter\gdef\csname address\number\addresscount@\endcsname + {{\ignorespaces#1}}} + +\def\bye{\par\nobreak\vskip12\p@ minus6\p@ + \eightpoint + \ifx\keywords@\relax\else + \noindent@@{\it Keywords.\enspace}\keywords@\par\fi + \ifx\subjclass@\relax\else + \noindent@@ 1980 {\it Mathematics subject classifications\/}\colon@\space + \subjclass@\par\fi + \ifnum\addresscount@>\z@ + \nobreak\vskip12\p@ minus6\p@ + \loop\ifnum\addresscount@>\z@ + \csname address\number\addresscount@\endcsname\endgraf + \global\advance\addresscount@\m@ne + \repeat + \fi + \vfill\supereject + \end} + +\let\enddocument\bye + +\let\pretitle\empty +\let\preauthor\empty +\let\preaffil\empty +\let\predate\empty +\let\preabstract\empty +\let\prepaper\empty + +\def\maketitle{\hrule\height\z@\vskip-\topskip + \pretitle + \vskip24\p@ plus12\p@ minus12\p@ + \unvbox\titlebox@ + \preauthor + \ifvoid\authorbox@\else\vskip12\p@ plus6\p@ minus3\p@\unvbox\authorbox@\fi + \preaffil + \ifvoid\affilbox@\else\vskip10\p@ plus5\p@ minus2\p@\unvbox\affilbox@\fi + \predate + \ifx\date@\relax\else\vskip6\p@ plus2\p@ minus\p@\centerline{\rm\date@}% + \let\date@\relax\fi + \preabstract + \ifx\thanks@\relax\else\vfootnote@{}\thanks@\let\thanks@\relax\fi + \ifvoid\abstractbox@\else\vskip15\p@ plus12\p@ minus12\p@ + \unvbox\abstractbox@\fi + \prepaper + \vskip18\p@ plus12\p@ minus6\p@} + +\def\makebib{\begingroup\eightpoint + \bigbreak\centerline{\smc\makebib@W}% + \nobreak\medskip + \sfcode`\.=\@m\everypar{}\parindent\z@ + \def\nopunct{\nopunct@true}\def\nospace{\nospace@true}% + \nopunct@false\nospace@false + \def\lkerns@{\null\kern\m@ne sp\kern\@ne sp}% + \def\nkerns@{\null\kern-\tw@ sp\kern\tw@ sp}% +} + +\def\beginthebibliography@#1{\eightpoint + \setboxz@h{#1\ }\bibindent@\wdz@ + \bigbreak\centerline{\smc\bibliography@W}\nobreak\medskip + \sfcode`\.=\@m\everypar{}\parindent\z@} + +\def\dotleaders{\leaders\hbox to10pt{\rm\hfil.\hfil}\hfil}% +\def\Page@#1#2#3#4{\kern10pt\hbox{\rm#3#2{#1}#4}}% +\long\def\widerthanhsize@#1#2#3#4{\test@true + \setbox\z@\vbox{\hsize\maxdimen + \rm\noindent@#1#2#3#4\par\setboxzl@}% + \ifdim\wdz@=\z@\setboxz@h{\kern24\p@\rm#1#2#3#4}\ifdim\wdz@>\hsize\else + \test@false\fi\fi}% +\long\def\setentry@#1#2#3#4{% + \widerthanhsize@{#1}{#2}{#3}{#4}% + \iftest@ + \longentry@{#1}{#2}{#3}{#4}% + \else + \hbox to\hsize{\kern24\p@\rm\strut#1#2#3#4\strut}% + \fi}% +\def\endstrut@{\lower\dp\strutbox\vbox to\dp\strutbox{}}% +\newdimen\thehang@ +\long\def\longentry@#1#2#3#4{\setboxz@h{#1}% + \thehang@\wdz@\advance\thehang@10\p@ + \setboxz@h{#4}% + \setbox\z@\vbox{\advance\hsize-\wdz@\advance\hsize-20\p@ + \normalbaselines + \hangafter\@ne\hangindent\thehang@\leftskip24\p@ + \vskip-\parskip + \noindent@\rm\strut\hbox{#1}#2\vphantom{#3#4}\strut}% + \setbox\z@\vbox{\unvbox\z@ + \setboxzl@ + \hbox to\hsize{\kern\thehang@\unhbox\z@\unskip\unskip#3#4\strut}% + }% + \unvbox\z@}% +\newif\ifemptynumber@ +\def\Style@{\emptynumber@false\FN@\Style@@}% +\def\Style@@{\ifx\next"\expandafter\Style@@@\else\expandafter\Style@@@@\fi}% +\def\Style@@@@#1\Style@{\style{#1}}% +\def\Style@@@"#1"\Style@{\DN@{#1}\ifx\next@\emtpy\emptynumber@true + \else\emptynumber@false#1\fi}% +\newdimen\digits + +\def\maketoc@W{Contents} + +\def\maketoc{\par + \begingroup + \eightpoint\tolerance800 + \unlabel@\noset@\let\nopunct\relax\let\nospace\relax\let\overlong\relax + \everypar{}\parindent\z@ + \lineskiplimit\z@ + \def\HL##1##2##3##4\Page##5##6##7##8{\def\HLlevel@{##1}% + \ifnum\HLlevel@=\@ne + \begingroup + \def\\{\unskip\space\ignorespaces}% + \setentry@{\bf\def\next@{##2}\ifx\next@\empty\else##2 \fi + \let\style\HL@@S\Style@##3\Style@ + \ifemptynumber@\else\space\fi}% + {\bf\ignorespaces##4\unskip}\dotleaders{\Page@{##5}{##6}{##7}{##8}}% + \endgroup + \else + \Err@{\string\HL##1 not defined in this style}% + \fi}% + \setbox0\hbox{0.00}% + \digits\wd\z@ + \def\hl##1##2##3##4\Page##5##6##7##8{\def\hllevel@{##1}% + \ifnum\hllevel@<\thr@@ + \begingroup + \setentry@{\rm\kern\hllevel@ em\quad\let\style\hl@@S + \Style@##3\Style@\ifemptynumber@\else\space\fi}% + {\rm\ignorespaces##4\unskip}\dotleaders{\Page@{##5}{##6}{##7}{##8}}% + \endgroup + \else + \ifnum\hllevel@<5 + \setentry@{}{\rm\kern\hllevel@ em\quad\ignorespaces##4\unskip}% + \dotleaders{\Page@{##5}{##6}{##7}{##8}}% + \else + \Err@{\string\hl##1 not defined in this style}% + \fi\fi}% + \def\NameHL##1##2{\def##2####1####2####3\Page{% + \HL{##1}{####1}{####2}####3\Page}}% + \def\Namehl##1##2{\def##2####1####2####3\Page{% + \hl{##1}{####1}{####2}####3\Page}}% + \NameHL1\heading \Namehl1\section \Namehl2\subsection \Namehl3\topic + \Namehl4\subtopic + \centerline{\smc\maketoc@W}% + \nobreak + \vskip18\p@ plus12\p@ minus6\p@ + \advance\hsize-24\p@ + \input\jobname.toc + \endgroup + \vskip12\p@ plus8\p@ minus4\p@ +} + +\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne + \ch@ck#1#4#2\allocationnumber=\count1#1 + \global#3#5=\allocationnumber + \wlog{\string#5=\string#2\the\allocationnumber}} +\catcode`\@=\active diff --git a/macros/lamstex/inputs/paper.stt b/macros/lamstex/inputs/paper.stt new file mode 100644 index 0000000000..5279437bd2 --- /dev/null +++ b/macros/lamstex/inputs/paper.stt @@ -0,0 +1,160 @@ +\catcode`\@=11 +\let\alloc@\alloc@@ + +\parindent1em + +\font\ninerm=cmr9 +\font\eightrm=cmr8 +\font\sixrm=cmr6 +\font\eighti=cmmi8 \skewchar\eighti='177 +\font\sixi=cmmi6 \skewchar\sixi='177 +\font\ninesy=cmsy9 \skewchar\ninesy='60 +\font\eightsy=cmsy8 \skewchar\eightsy='60 +\font\sixsy=cmsy6 \skewchar\sixsy='60 +\font\eightbf=cmbx8 +\font\sixbf=cmbx6 +\font\eightit=cmti8 +\font\eightsl=cmsl8 +\font\eighttt=cmtt8 + +\ifmsamloaded@ + \font\eightmsa=msam8 + \font\sixmsa=msam6 +\fi + +\ifmsbmloaded@ + \font\eightmsb=msbm8 + \font\sixmsb=msbm6 +\fi + +\ifeufmloaded@ + \font\eighteufm=eufm8 + \font\sixeufm=eufm6 +\fi + +\ifcmmibloaded@ + \font\eightcmmib=cmmib8 \skewchar\eightcmmib='177 + \font\sixcmmib=cmmib6 \skewchar\sixcmmib='177 +\fi + +\ifcmbsyloaded@ + \font\eightcmbsy=cmbsy8 \skewchar\eightcmbsy='60 + \font\sixcmbsy=cmbsy6 \skewchar\sixcmbsy='60 +\fi + +\newskip\ttglue@ + +\def\tenpoint{\def\pointsize@{10}% + \normalbaselineskip12\p@ + \abovedisplayskip12\p@ plus3\p@ minus9\p@ + \belowdisplayskip12\p@ plus3\p@ minus9\p@ + \abovedisplayshortskip\z@ plus3\p@ + \belowdisplayshortskip7\p@ plus3\p@ minus4\p@ + \textonlyfont@\rm\tenrm + \textonlyfont@\it\tenit + \textonlyfont@\sl\tensl + \textonlyfont@\bf\tenbf + \let\big\tenbig@ + \textfont\z@\tenrm \scriptfont\z@\sevenrm \scriptscriptfont\z@\fiverm + \textfont\@ne\teni \scriptfont\@ne\seveni \scriptscriptfont\@ne\fivei + \textfont\tw@\tensy \scriptfont\tw@\sevensy \scriptscriptfont\tw@\fivesy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \textfont\itfam\tenit + \textfont\slfam\tensl + \textfont\bffam\tenbf \scriptfont\bffam\sevenbf + \scriptscriptfont\bffam\fivebf + \ifmsamloaded@ + \textfont\msafam=\tenmsa \scriptfont\msafam=\sevenmsa + \scriptscriptfont\msafam=\fivemsa + \fi + \ifmsbmloaded@ + \textfont\msbfam=\tenmsb \scriptfont\msbfam=\sevenmsb + \scriptscriptfont\msbfam=\fivemsb + \fi + \ifeufmloaded@ + \textfont\eufmfam=\teneufm \scriptfont\eufmfam=\seveneufm + \scriptscriptfont\eufmfam=\fiveeufm + \fi + \ifcmmibloaded@ + \textfont\cmmibfam=\tencmmib \scriptfont\cmmibfam=\sevencmmib + \scriptscriptfont\cmmibfam=\fivecmmib + \fi + \ifcmbsyloaded@ + \textfont\cmbsyfam=\tencmbsy \scriptfont\cmbsyfam=\sevencmbsy + \scriptscriptfont\cmbsyfam=\fivecmbsy + \fi + \let\tt\tentt + \tt\ttglue@=.5em minus .15em\relax + \setbox\strutbox\hbox{\vrule height8.5\p@ depth3.5\p@ width\z@}% + \setbox\strutbox@\hbox{\vrule height8\p@ depth3\p@ width\z@}% + \normalbaselines\rm\ex@=.2326ex} + +\def\tenbig@#1{{\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}} + +\def\eightpoint{\def\pointsize@{8}% + \normalbaselineskip10\p@ + \abovedisplayskip10\p@ plus2.4\p@ minus7.2\p@ + \belowdisplayskip10\p@ plus2.4\p@ minus7.2\p@ + \abovedisplayshortskip\z@ plus2.4\p@ + \belowdisplayshortskip5.6\p@ plus2.4\p@ minus3.2\p@ + \textonlyfont@\rm\eightrm + \textonlyfont@\it\eightit + \textonlyfont@\sl\eightsl + \textonlyfont@\bf\eightbf + \let\big\eightbig@ + \textfont\z@\eightrm \scriptfont\z@\sixrm \scriptscriptfont\z@\fiverm + \textfont\@ne\eighti \scriptfont\@ne\sixi \scriptscriptfont\@ne\fivei + \textfont\tw@\eightsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\fivesy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \textfont\itfam\eightit + \textfont\slfam\eightsl + \textfont\bffam\eightbf \scriptfont\bffam\sixbf + \scriptscriptfont\bffam\fivebf + \ifmsamloaded@ + \textfont\msafam=\eightmsa \scriptfont\msafam=\sixmsa + \scriptscriptfont\msafam=\fivemsa + \fi + \ifmsbmloaded@ + \textfont\msbfam=\eightmsb \scriptfont\msbfam=\sixmsb + \scriptscriptfont\msbfam=\fivemsb + \fi + \ifeufmloaded@ + \textfont\eufmfam=\eighteufm \scriptfont\eufmfam=\sixeufm + \scriptscriptfont\eufmfam=\fiveeufm + \fi + \ifcmmibloaded@ + \textfont\cmmibfam=\eightcmmib \scriptfont\cmmibfam=\sixcmmib + \scriptscriptfont\cmmibfam=\fivecmmib + \fi + \ifcmbsyloaded@ + \textfont\cmbsyfam=\eightcmbsy \scriptfont\cmbsyfam=\sixcmbsy + \scriptscriptfont\cmbsyfam=\fivecmbsy + \fi + \let\tt\eighttt + \tt\ttglue@=.4em minus .12em + \setbox\strutbox\hbox{\vrule height7\p@ depth3\p@ width\z@}% + \setbox\strutbox@\hbox{\vrule height6.5\p@ depth2.5\p@ width\z@}% + \normalbaselines\rm\ex@=.2326ex} + +\def\eightbig@#1{{\hbox{$\textfont\z@\ninerm\textfont\tw@\ninesy + \left#1\vbox to6.5\p@{}\right.\n@space$}}} + +{\catcode` =\active +\gdef\litcodes@@{\def {\penalty\z@\hskip\ttglue@}}} + +\def\LamSTeX{L\kern-.4em\raise.3ex\hbox{$\ssize\Cal A$}% + \DN@{10}\ifx\next@\pointsize@\kern-.25em\else\kern-.3em\fi + \lower.4ex\hbox{\if\pointsize@ t\eightsy\else\sixsy\fi M}% + \kern-.1em{$\Cal S$}-\TeX} + +\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne + \ch@ck#1#4#2\allocationnumber=\count1#1 + \global#3#5=\allocationnumber + \wlog{\string#5=\string#2\the\allocationnumber}} + +\catcode`\@=\active + +\eightpoint +\def\opentables{\HD(8pt;2pt)} +\def\boxedtables{\HD(+3pt;+2pt)} +\rm diff --git a/macros/lamstex/inputs/pcompat.tex b/macros/lamstex/inputs/pcompat.tex new file mode 100644 index 0000000000..4c30fed5bd --- /dev/null +++ b/macros/lamstex/inputs/pcompat.tex @@ -0,0 +1,78 @@ +% PCOMPAT.TEX VERSION 2.0 +% COPYRIGHT (C) 1991 BY THE TEXPLORATORS CORPORATION +% ALL RIGHTS RESERVED + +% THIS FILE SHOULD NOT BE CHANGED IN ANY WAY. + +%% This file allows certain modifications that might be desired +%% if a plain TeX file has to be run through LamS-TeX. + +%% First of all, once this file is \input, the plain constructions +%% \oldstyle and \cal will no longer be undefined, as they normally +%% are in AmS-TeX. (AmS-TeX's alternatives \oldnos and \Cal can +%% also still be used, though it would be pretty confusing to use +%% \oldstyle and \oldnos together, or \cal and \Cal together, since +%% the plain constructions work like font changes, while the +%% AmS-TeX constructions work like control sequences with an argument.) + +%% The \mit command, used for things like \mit\Gamma, is a little +%% different, since AmS-TeX doesn't regard upper-case Greek letters +%% as ``variables'' that can change fonts. However, if you type +%% +%% \variableGreek +%% +%% then \mit can be used in this way. + +%% Typing +%% +%% \plaincases +%% +%% makes \cases have the plain syntax, rather than the AmS-TeX +%% syntax. Similarly, +%% +%% \plainmatrix +%% +%% makes \matrix have the plain syntax, rather than the AmS-TeX +%% syntax. Finally, +%% +%% \plainfonts +%% +%% allows \rm, etc, to be used in math formulas, whereas AmS-TeX +%% only allows \rm within \text within a math formula (but remember +%% that $\rm two words$ will not give any spaces between the +%% letters, while AmS-TeX's $\text{\rm two words}$ will). + +%% \variableGreek, \plaincases, \plainmatrix, and \plainfonts +%% can each be used within a group, if part of the paper uses +%% plain conventions, while part uses AmS-TeX conventions. + +\catcode`\@=11 +\def\oldstyle{\fam\@ne\the\textfont\@ne} +\def\cal{\fam\tw@} +{\catcode`\"=12 +\gdef\variableGreek{\mathchardef\Gamma="7000 + \mathchardef\Delta="7001 + \mathchardef\Theta="7002 + \mathchardef\Lambda="7003 + \mathchardef\Xi="7004 + \mathchardef\Pi="7005 + \mathchardef\Sigma="7006 + \mathchardef\Upsilon="7007 + \mathchardef\Phi="7008 + \mathchardef\Psi="7009 + \mathchardef\Omega="700A + \def\mit{\fam\@ne}} +} +\def\plaincases{% + \def\cases##1{\left\{\,\vcenter{\normalbaselines\m@th + \ialign{$####\hfil$&\quad####\hfil\crcr##1\crcr}}\right.}} +\def\plainmatrix{% + \def\matrix##1{\null\,\vcenter{\normalbaselines\m@th + \ialign{\hfil$####$\hfil&&\quad\hfil$####$\hfil\crcr + \mathstrut\crcr\noalign{\kern-\baselineskip}% + ##1\crcr\mathstrut\crcr\noalign{\kern-\baselineskip}}}\,}% + \def\pmatrix##1{\left(\matrix{##1}\right)}} +\def\plainfonts{\def\rm{\fam\z@\tenrm}\def\it{\fam\itfam\tenit}% + \def\sl{\fam\slfam\tensl}\def\bf{\fam\bffam\tenbf}\def\smc{\tensmc}% + \def\textonlyfont@##1##2{\def##1{\fam\csname\exstring@##1fam\endcsname##2}}} +\catcode`\@=\active
\ No newline at end of file diff --git a/macros/lamstex/inputs/places.tex b/macros/lamstex/inputs/places.tex new file mode 100644 index 0000000000..99a523c6de --- /dev/null +++ b/macros/lamstex/inputs/places.tex @@ -0,0 +1,288 @@ +\catcode`\@=11 +\long\def\islandpairdata#1#2{{\data@true + \place@true + #1% + \global\setbox\islandboxi\box\islandbox@ + \global\setbox\captionboxi\box\Captionbox@ + #2% + \global\setbox\islandboxii\box\islandbox@ + \global\setbox\captionboxii\box\Captionbox@ + }} +\long\def\islandpairbox#1#2{\islandpairdata{#1}{#2}% + \dimen@\ht\captionboxi + \ifdim\ht\captionboxii>\dimen@\dimen@\ht\captionboxii\fi + \ifdim\dimen@>\z@ + \ifdim\ht\captionboxi<\dimen@ + \global\setbox\captionboxi\vbox to\dimen@{\unvbox\captionboxi\vfil}\fi + \ifdim\ht\captionboxii<\dimen@ + \global\setbox\captionboxii\vbox to\dimen@{\unvbox\captionboxii\vfil}\fi + \fi + \global\setbox\islandbox@\vbox + {\hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil}% + \ifdim\dimen@>\z@\nointerlineskip + {\rm\global\skipi@\dp\strutbox}\global\advance\skipi@\medskipamount + \vskip\skipi@ + \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil}\fi}} +\long\def\islandpairboxa#1#2{\islandpairdata{#1}{#2}% + \dimen@\ht\captionboxi + \ifdim\ht\captionboxii>\dimen@\dimen@\ht\captionboxii\fi + \ifdim\dimen@>\z@ + \ifdim\ht\captionboxi<\dimen@ + \global\setbox\captionboxi\vbox to\dimen@{\vfil\unvbox\captionboxi}\fi + \ifdim\ht\captionboxii<\dimen@ + \global\setbox\captionboxii\vbox to\dimen@{\vfil\unvbox\captionboxii}\fi + \fi + \dimen@ii\ht\islandboxi + \ifdim\ht\islandboxii>\dimen@ii \dimen@ii\ht\islandboxii\fi + \ifdim\dimen@ii>\z@ + \ifdim\ht\islandboxi<\dimen@ii + \global\setbox\islandboxi\vbox to\dimen@ii{\box\islandboxi\vfil}\fi + \ifdim\ht\islandboxii<\dimen@ii + \global\setbox\islandboxii\vbox to\dimen@ii{\box\islandboxii\vfil}\fi + \fi + \global\setbox\islandbox@\vbox{\ifdim\dimen@>\z@ + \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil}% + \nointerlineskip{\rm\global\skipi@-\dp\strutbox}% + \global\advance\skipi@\bigskipamount\vskip\skipi@\fi + \hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil}}} +\long\def\islandtripledata#1#2#3{{\data@true\place@true + #1% + \global\setbox\islandboxi\box\islandbox@ + \global\setbox\captionboxi\box\Captionbox@ + #2% + \global\setbox\islandboxii\box\islandbox@ + \global\setbox\captionboxii\box\Captionbox@ + #3% + \global\setbox\islandboxiii\box\islandbox@ + \global\setbox\captionboxiii\box\Captionbox@ + }} +\long\def\islandtriplebox#1#2#3{\islandtripledata{#1}{#2}{#3}% + \dimen@\ht\captionboxi + \ifdim\ht\captionboxii>\dimen@ \dimen@\ht\captionboxii\fi + \ifdim\ht\captionboxiii>\dimen@ \dimen@\ht\captionboxiii\fi + \ifdim\dimen@>\z@ + \ifdim\ht\captionboxi<\dimen@ + \global\setbox\captionboxi\vbox to\dimen@{\unvbox\captionboxi\vfil}\fi + \ifdim\ht\captionboxii<\dimen@ + \global\setbox\captionboxii\vbox to\dimen@{\unvbox\captionboxii\vfil}\fi + \ifdim\ht\captionboxiii<\dimen@ + \global\setbox\captionboxiii\vbox to\dimen@{\unvbox\captionboxiii\vfil}\fi + \fi + \global\setbox\islandbox@\vbox + {\hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil + \box\islandboxiii\hfil}% + \ifdim\dimen@>\z@\nointerlineskip + {\rm\global\skipi@\dp\strutbox}\global\advance\skipi@\medskipamount + \vskip\skipi@ + \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil + \box\captionboxiii\hfil}\fi}} +\def\islandtripleboxa#1#2#3{\islandtripledata{#1}{#2}{#3}% + \dimen@\ht\captionboxi + \ifdim\ht\captionboxii>\dimen@ \dimen@\ht\captionboxii\fi + \ifdim\ht\captionboxiii>\dimen@ \dimen@\ht\captionboxiii\fi + \ifdim\dimen@>\z@ + \ifdim\ht\captionboxi<\dimen@ + \global\setbox\captionboxi\vbox to\dimen@{\vfil\unvbox\captionboxi}\fi + \ifdim\ht\captionboxii<\dimen@ + \global\setbox\captionboxii\vbox to\dimen@{\vfil\unvbox\captionboxii}\fi + \ifdim\ht\captionboxiii<\dimen@ + \global\setbox\captionboxiii\vbox to\dimen@{\vfil\unvbox\captionboxiii}\fi + \fi + \dimen@ii\ht\islandboxi + \ifdim\ht\islandboxii>\dimen@ii \dimen@ii\ht\islandboxii\fi + \ifdim\ht\islandboxiii>\dimen@ii \dimen@ii\ht\islandboxiii\fi + \ifdim\dimen@ii>\z@ + \ifdim\ht\islandboxi<\dimen@ii + \global\setbox\islandboxi\vbox to\dimen@ii{\box\islandboxi\vfil}\fi + \ifdim\ht\islandboxii<\dimen@ii + \global\setbox\islandboxii\vbox to\dimen@ii{\box\islandboxii\vfil}\fi + \ifdim\ht\islandboxiii<\dimen@ii + \global\setbox\islandboxiii\vbox to\dimen@ii{\box\islandboxiii\vfil}\fi + \fi + \global\setbox\islandbox@\vbox + {\ifdim\dimen@>\z@ + \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil + \box\captionboxiii\hfil}% + \nointerlineskip{\rm\global\skipi@-\dp\strutbox}% + \global\advance\skipi@\bigskipamount\vskip\skipi@\fi + \hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil + \box\islandboxiii\hfil}}} +\def\Figurepair#1\and#2\endFigurepair{\island@true + \islandpairbox{\Figure#1\endFigure}{\Figure#2\endFigure}} +\def\Figuretriple#1\and#2\and#3\endFiguretriple{\island@true + \islandtriplebox{\Figure#1\endFigure}{\Figure#2\endFigure}% + {\Figure#3\endFigure}} +\def\Tablepair#1\and#2\endTablepair{\island@true + \islandpairboxa{\Table#1\endTable}{\Table#2\endTable}} +\def\Tabletriple#1\and#2\and#3\endTabletriple{\island@true + \islandtripleboxa{\Table#1\endTable}{\Table#2\endTable}% + {\Table#3\endTable}} +\def\Par{\par\global\csname Parprev1\endcsname\prevdepth + \global\Parcount@\@ne + \global\Par@true\global\let\Parlist@\empty + \global\setbox\Parbox@\vbox\bgroup\break} +\long\def\AAplace#1{\prevanish@\place@true\island@false + #1% + \place@ A\AAplace@ + \postvanish@} +\def\AAplace@{\AA@true\Aplace@\AA@false} +\long\def\Bplace#1{\prevanish@\place@true\island@false + #1% + \place@ b\Bplace@ + \postvanish@} +\def\Bplace@{\allowbreak + \ifnum\topinscount@=\z@ + \setbox\z@\vbox{\vbox to-\belowtopfigskip{}}% + \dimen@-\skip\topins + \ht\z@\dimen@ + \storedim@ + \advancedimtopins@ + \insert\topins{\boxz@}% + \global\advance\topinscount@\@ne + \xdef\AAlist@{\AAlist@0}% + \fi + \dimen@\ht\islandbox@ + \advance\dimen@\abovebotfigskip + \ht\islandbox@\dimen@ + \advance\dimen@\dp\islandbox@ + \storedim@ + \xdef\AAlist@{\AAlist@0}% + \ifnum\topinscount@>\@ne\else\advancedimtopins@\fi + \insert\topins{\penalty\z@\splittopskip\z@ + \floatingpenalty\z@ + \box\islandbox@}% + \global\advance\topinscount@\@ne} +\def\Place@#1#2{% + \ifisland@ + \ifhmode + \ifPar@ + \ifnum\Parcount@>5 + \Err@{Only 5 \string\place's allowed per + \string\Par...\noexpand\endPar paragraph}% + \else + \expandafter\expandafter\expandafter\global\expandafter\setbox + \csname Parfigbox\number\Parcount@\endcsname\box\islandbox@ + \global\advance\Parcount@\@ne + \xdef\Parlist@{\Parlist@#1}% + \vadjust{\break}% + \fi + \else + \Err@{\noexpand#2allowed only in a \string\Par...\noexpand\endPar + paragraph}% + \fi + \else + #2% + \fi + \else + \Err@{Who ... there's no \string\Figure, \string\Table, + etc., here}% + \fi + \place@false} +\long\def\Cplace#1{\prevanish@\place@true\island@false + #1% + \Place@ c\Cplace@ + \postvanish@} +\def\Cplace@{\allowbreak + \ifnum\topinscount@>\z@\else + \global\C@true\global\Cdim@\pagetotal\fi + \Aplace@} +\long\def\Mplace#1{\prevanish@\place@true\island@false + #1% + \Place@ m\Mplace@ + \postvanish@} +\long\def\MXplace#1{\prevanish@\place@true\island@false + #1% + \Place@ M\MXplace@ + \postvanish@} +\def\MXplace@{\MX@true\Mplace@\MX@false} +\def\Mplace@{\allowbreak + \dimen@\ht\islandbox@\advance\dimen@\dp\islandbox@ + \ifdim\pagetotal=\z@\else + \ifdim\lastskip<\abovebotfigskip\advance\dimen@\abovebotfigskip + \advance\dimen@-\lastskip\fi + \fi + \advance\dimen@\pagetotal + \ifdim\dimen@>\pagegoal + \Aplace@ + \else + \nointerlineskip + \ifdim\lastskip<\abovebotfigskip\removelastskip\vskip\abovebotfigskip\fi + \setbox\z@\vbox{\unvbox\islandbox@ + \breakisland@}% + \printisland@ + \ifnum\topinscount@=\z@ + \setbox\z@\vbox{\vbox to-\belowtopfigskip{}}% + \dimen@-\skip\topins + \ht\z@\dimen@ + \storedim@ + \advancedimtopins@ + \insert\topins{\boxz@}% + \global\advance\topinscount@\@ne + \xdef\AAlist@{\AAlist@0}% + \fi + \ifMX@ + \ifnum\topinscount@=\@ne + \setbox\z@\vbox{\vbox to-\abovebotfigskip{}}% + \ht\z@\z@ + \dimen@\z@ + \storedim@ + \advancedimtopins@ + \insert\topins{\boxz@}% + \global\advance\topinscount@\@ne + \xdef\AAlist@{\AAlist@0}% + \fi + \fi + \nointerlineskip + \vskip\belowtopfigskip + \fi} +\def\endPar{\egroup + \count@\@ne + {\vbadness\@M\vfuzz\maxdimen\splitmaxdepth\maxdimen\splittopskip\ht\strutbox + \setbox\z@\vsplit\Parbox@ to\ht\Parbox@ + \loop + \ifnum\count@<\Parcount@ + \expandafter\expandafter\expandafter\global\expandafter\setbox + \csname Parbox\number\count@\endcsname\vsplit\Parbox@ to\ht\Parbox@ + \count@@\count@\advance\count@@\@ne + \global\csname Parprev\number\count@@\endcsname + \dp\csname Parbox\number\count@\endcsname + \advance\count@\@ne + \repeat}% + \vskip\parskip + \count@\@ne + \def\nextv@##1##2\nextv@{\DN@{##1}\gdef\Parlist@{##2}}% + \loop + \ifnum\count@<\Parcount@ + \dimen@\csname Parprev\number\count@\endcsname + \advance\dimen@\ht\strutbox + \ifdim\dimen@<\baselineskip + \advance\dimen@-\baselineskip\vskip-\dimen@ + \else + \vskip\lineskip + \fi + \unvbox\csname Parbox\number\count@\endcsname + \global\setbox\islandbox@\box\csname Parfigbox\number\count@\endcsname + \expandafter\nextv@\Parlist@\nextv@ + \if a\next@\Aplace@\else + \if A\next@\AAplace@\else + \if b\next@\Bplace@\else + \if c\next@\Cplace@\else + \if m\next@\Mplace@\else + \if M\next@\MXplace@\fi\fi\fi\fi\fi\fi + \advance\count@\@ne + \repeat + \global\Par@false + \ifvoid\Parbox@ + \prevdepth\csname Parprev\number\count@\endcsname + \else + \dimen@\csname Parprev\number\count@\endcsname\advance\dimen@\ht\strutbox + \ifdim\dimen@<\baselineskip + \advance\dimen@-\baselineskip\vskip-\dimen@ + \else + \vskip\lineskip + \fi + \dimen@\dp\Parbox@ + \unvbox\Parbox@ + \prevdepth\dimen@ + \fi} +\catcode`\@=\active diff --git a/macros/lamstex/inputs/places.tox b/macros/lamstex/inputs/places.tox new file mode 100644 index 0000000000..71b726504d --- /dev/null +++ b/macros/lamstex/inputs/places.tox @@ -0,0 +1,12 @@ +\catcode`\@=11 +\let\islandpairdata\undefined\let\islandpairbox\undefined +\let\islandpairboxa\undefined\let\islandtripledata\undefined +\let\islandtriplebox\undefined\let\islandtripleboxa\undefined +\let\Figurepair\undefined\let\Figuretriple\undefined +\let\Tablepair\undefined\let\Tabletriple\undefined +\let\AAplace\undefined\let\AAplace@\relax\let\Bplace\undefined +\let\Bplace@\relax\let\Place@\relax\let\Cplace\undefined +\let\Cplace@\relax\let\Mplace\undefined\let\Mplace@\relax +\let\MXplace\undefined\let\MXplace@\relax\let\Par\undefined +\let\endPar\undefined +\catcode`\@=\active diff --git a/macros/lamstex/inputs/ptmatrix.tex b/macros/lamstex/inputs/ptmatrix.tex new file mode 100644 index 0000000000..21d54bbcd9 --- /dev/null +++ b/macros/lamstex/inputs/ptmatrix.tex @@ -0,0 +1,233 @@ +% PTMATRIX.TEX VERSION 2.0 +% COPYRIGHT (C) 1991 BY THE TEXPLORATORS CORPORATION +% ALL RIGHTS RESERVED + +% THIS FILE SHOULD NOT BE CHANGED IN ANY WAY. + +\catcode`\@=11 +\let\alloc@\alloc@@ +\newif\ifformat@ +\newcount\ptmrowcount@ +\newcount\ptmcolcount@ +\newcount\ptmColcount@ +\newcount\maxptmrow@ +\newbox\ptmbox@ +\def\qstrut@{\ifnum\ptmrowcount@<\@ne\Mathstrut@\fi} +\def\GAM@{\global\advance\ptmcolcount@\@ne} +\newif\iflastmrow@ +\def\partition\matrix{\global\format@false\bgroup + \let\endmatrix\ptmendmatrix@ + \null\,\vcenter\bgroup\hbox\bgroup$\global\setbox\ptmbox@\vbox\bgroup + \Let@\vspace@\normalbaselines\openup\spreadmlines@ + \global\ptmrowcount@\m@ne\global\ptmcolcount@\z@\global\ptmColcount@\z@ + \everycr{\noalign{\iflastmrow@\else\global\advance\ptmrowcount@\@ne + \ifnum\ptmcolcount@<\ptmColcount@\else\global\ptmColcount@\ptmcolcount@ + \global\maxptmrow@\ptmrowcount@\fi\global\ptmcolcount@\z@\fi}}% + \tabskip\z@skip\halign\bgroup\hfil\qstrut@$\m@th##$\hfil\GAM@ + &&\quad\hfil$\m@th##$\hfil\GAM@\crcr} +\def\format{\crcr\egroup\iffalse{\fi\ifnum`}=\z@\fi + \global\advance\ptmrowcount@\m@ne + \global\format@true\format@} +\def\format@#1\\{\def\preamble@{#1}% + \def\l{\noexpand\qstrut@$\m@th\the\hashtoks@$\hfil\noexpand\GAM@}% + \def\c{\noexpand\qstrut@\hfil$\m@th\the\hashtoks@$\hfil\noexpand\GAM@}% + \def\r{\noexpand\qstrut@\hfil$\m@th\the\hashtoks@$\noexpand\GAM@}% + \edef\Preamble@{\preamble@}\global\let\Preamble@@\Preamble@ + \ifnum`{=\z@\fi\iffalse}\fi\tabskip\z@skip\halign\bgroup\span\Preamble@\crcr} +\def\formatmatrixgap@{\global\let\matrixgap@\empty + \setbox4=\vbox{\ialign{\span\Preamble@@\cr\the\toks@\cr}}% + \setbox4=\vbox{\unvbox4 + \setboxzl@ + \setboxz@h{\unhbox\z@\count@\z@ + \loop\unskip\setboxzl@\ifvoid\z@\else + {\let\or\relax\xdef\matrixgap@{\matrixgap@ + \ifnum\count@=\z@\else\or\fi\the\wdz@}}% + \advance\count@\@ne + \repeat}% + {\let\or\relax + \xdef\matrixgap@##1{\noexpand\ifcase##1 \matrixgap@\noexpand\fi}}% + }% +} +\newcount\mcolcount@ +\newcount\bordercount@ +\def\ptmendmatrix@{\crcr\noalign{\global\lastmrow@true}\Mathstrut@\crcr + \noalign{\global\lastmrow@false\kern-\baselineskip}% + \egroup\egroup + \bordercount@\ptmrowcount@\advance\bordercount@\m@ne + \setbox\z@\vbox + {\unvcopy\ptmbox@\unkern\setboxzl@\unskip\setboxzl@ + \count@\ptmrowcount@ + \loop + \ifnum\count@>\maxptmrow@ + \unskip\setboxzl@\advance\count@\m@ne + \repeat + \global\let\matrixgap@\empty\global\mcolcount@\tw@ + \setbox\tw@\hbox + {\unhcopy\z@\unskip\setboxzl@\unskip\setboxzl@ + \loop\unskip\setboxzl@ + \ifvoid\z@\else\global\advance\mcolcount@\@ne + {\let\or\relax\xdef\matrixgap@{\matrixgap@\or10pt}}% + \repeat}% + {\let\or\relax\xdef\matrixgap@##1{\noexpand + \ifcase##1 10pt\matrixgap@\or0pt\noexpand\fi}}% + \ifformat@ + \toks@{&}\count@\tw@ + \loop + \ifnum\count@<\mcolcount@\advance\count@\@ne + \toks@\expandafter{\the\toks@&}% + \repeat + \formatmatrixgap@ + \fi + \xdef\rowbot@{\ifdim\dp\z@>\dp\Mathstrutbox@-\the\dp\z@\else + -\the\dp\Mathstrutbox@\fi}% + \xdef\rowtop@{\ifdim\ht\z@>\ht\Mathstrutbox@\the\ht\z@ + \else\the\ht\Mathstrutbox@\fi}% + \xdef\midrow@{\the\ht\z@}\xdef\midcol@{0pt}% + \dimen@\z@ + \setbox\tw@\hbox + {\unhbox\z@ + \count@\z@ + \loop + \unskip\setboxzl@ + \ifvoid\z@\else + \advance\dimen@\wdz@ + \dimen@ii\matrixgap@\count@ + \advance\dimen@-.5\dimen@ii + {\let\or\relax\xdef\midcol@{\the\dimen@\or\midcol@}}% + \advance\dimen@-.5\dimen@ii + {\let\or\relax\xdef\leftcol@{\the\dimen@\ifnum\count@=\z@\else + \or\leftcol@\fi}}% + {\advance\dimen@-\wdz@\advance\dimen@\dimen@ii\let\or\relax + \xdef\rightcol@{\the\dimen@\ifnum\count@=\z@\else\or\rightcol@\fi}}% + \advance\dimen@\dimen@ii\advance\count@\@ne + \repeat + }% + \global\let\matrixgap@\relax + {\let\or\relax\xdef\midcol@##1{\noexpand + \ifcase##1 \midcol@\noexpand\else\noexpand\Err@{##1 too large}% + \noexpand\fi}% + \xdef\leftcol@##1{\noexpand\ifcase##1 \noexpand\or\leftcol@\noexpand\fi}% + \xdef\rightcol@##1{\noexpand\ifcase##1 \noexpand\or\rightcol@\noexpand\fi}% + }% + }% + \setbox\z@\vbox + {\unvcopy\ptmbox@\unkern\setboxzl@\unskip + \setboxzl@ + \xdef\rowbl@{0pt}% + \dimen@ii\ht\z@ + \dimen@\midrow@\relax\skip@\lastskip\unskip + \advance\skip@\lastskip\unskip + \advance\dimen@.5\skip@\xdef\midrow@{\the\dimen@}% + \loop + \setboxzl@ + \ifvoid\z@\else + \advance\dimen@ii\skip@ + {\let\or\relax\xdef\rowbot@{\rowbot@\or\the\dimen@ii}}% + \advance\dimen@ii\dp\z@ + {\let\or\relax\xdef\rowbl@{\rowbl@\or\the\dimen@ii}}% + \advance\dimen@ii\ht\z@ + {\let\or\relax\xdef\rowtop@{\rowtop@\or\the\dimen@ii}}% + \advance\dimen@.5\skip@ + \advance\dimen@\dp\z@\advance\dimen@\ht\z@ + \skip@\lastskip\unskip\advance\skip@\lastskip\unskip + \advance\dimen@.5\skip@ + {\let\or\relax\xdef\midrow@{\midrow@\or\the\dimen@}}% + \repeat + {\let\or\relax\xdef\midrow@##1{\noexpand + \ifcase##1 0pt\or\midrow@\noexpand\else + \noexpand\Err@{##1 too large}\noexpand\fi}% + \xdef\rowbot@##1{\noexpand\ifcase##1 \or\rowbot@\noexpand\fi}% + \xdef\rowbl@##1{\noexpand\ifcase##1 \or\rowbl@\noexpand\fi}% + \xdef\rowtop@##1{\noexpand\ifcase##1 \or\rowtop@\noexpand\fi}% + }% + }% + \box\ptmbox@ + \let\midcol\midcol@\global\let\midcol@\relax + \let\midrow\midrow@\global\let\midrow@\relax +} +\def\endpartition{$\egroup\egroup\,\egroup + \global\let\leftcol@\relax \global\let\rightcol@\relax + \global\let\rowbot@\relax \global\let\rowtop@\relax + \global\let\rowbl@\relax} +\newcount\count@@@@@ +\edef\countdimen@#1{\setboxz@h{\def\noexpand\next@{\global\dimen@i}% + \afterassignment\noexpand\next@\global + \count@@@@@\noexpand\strip@#1 \space0pt}} +\def\hsolid{\ifnum\catcode`\:=\active\expandafter\hsolidA@\else + \expandafter\hsolidO@\fi} +\def\hsolidO@#1:#2#3{\hsolid@{#1}{#2}{#3}} +\def\hsolid@#1#2#3{\def\HLEADERS{\hsolidleaders}\HPARTITION{#1}{#2}{#3}} +\def\hdashed{\ifnum\catcode`\:=\active\expandafter\hdashedA@\else + \expandafter\hdashedO@\fi} +\def\hdashedO@#1:#2#3{\hdashed@{#1}{#2}{#3}} +\def\hdashed@#1#2#3{\def\HLEADERS{\hdashedleaders}\HPARTITION{#1}{#2}{#3}} +\def\HPARTITION#1#2#3{\countdimen@{#1}\dimen@\midrow\count@@@@@ + \advance\dimen@\dimen@i\advance\dimen@\dp\Mathstrutbox@ + \smash{\llap{\raise\dimen@ + \hbox{\countdimen@{#2}\dimen@\midcol\count@@@@@\advance\dimen@-\dimen@i + \countdimen@{#3}\dimen@ii\midcol\count@@@@@\advance\dimen@ii-\dimen@i + \advance\dimen@-\dimen@ii + \HLEADERS\hskip\dimen@\hskip\dimen@ii}}}} +\def\vsolid{\ifnum\catcode`\:=\active\expandafter\vsolidA@\else + \expandafter\vsolidO@\fi} +\def\vsolidO@#1:#2#3{\vsolid@{#1}{#2}{#3}} +\def\vsolid@#1#2#3{\def\VLEADERS{\vsolidleaders}\VPARTITION{#1}{#2}{#3}} +\def\vdashed{\ifnum\catcode`\:=\active\expandafter\vdashedA@\else + \expandafter\vdashedO@\fi} +\def\vdashedO@#1:#2#3{\vdashed@{#1}{#2}{#3}} +\def\vdashed@#1#2#3{\def\VLEADERS{\vdashedleaders}\VPARTITION{#1}{#2}{#3}} +\newdimen\vextra@ +\def\VPARTITION#1#2#3{\countdimen@{#3}\dimen@\midrow\count@@@@@ + \advance\dimen@\dimen@i\advance\dimen@\dp\Mathstrutbox@ + \countdimen@{#2}\dimen@ii\midrow\count@@@@@ + \advance\dimen@ii\dimen@i\advance\dimen@ii\dp\Mathstrutbox@ + \setbox\z@\vbox to\p@{\VLEADERS\vfil}\vextra@\wdz@ + \llap{\hbox{\smash{\vbox to\dimen@{\VLEADERS\vfil\vskip\dimen@ii}}% + \hskip-\vextra@\relax\countdimen@{#1}\hskip\midcol\count@@@@@ + \hskip-\dimen@i}}} +\def\vleft{\ifnum\catcode`\:=\active\expandafter\vleftA@\else + \expandafter\vleftO@\fi} +\def\vleftO@#1#2:#3#4{\vleft@#1{#2}{#3}{#4}} +\def\vleft@#1#2#3#4{\dimen@\rowtop@{#4}\advance\dimen@-\rowbot@{#3}% + \dimen@ii\rowbl@{#3}\advance\dimen@ii.5\dimen@\advance\dimen@ii-\mathaxis@ + \countdimen@{#2}% + \llap{\hbox{\smash{\raise\dimen@ii\hbox{$\left#1\vcenter{\vbox to + \dimen@{}}\right.$}}\hskip\leftcol@\count@@@@@\hskip-\dimen@i}}} +\def\vright{\ifnum\catcode`\:=\active\expandafter\vrightA@\else + \expandafter\vrightO@\fi} +\def\vrightO@#1#2:#3#4{\vright@#1{#2}{#3}{#4}} +\def\vright@#1#2#3#4{\dimen@\rowtop@{#4}\advance\dimen@-\rowbot@{#3}% + \dimen@ii\rowbl@{#3}\advance\dimen@ii.5\dimen@\advance\dimen@ii-\mathaxis@ + \countdimen@{#2}% + \llap{\hbox{\smash{\raise\dimen@ii\hbox{\setboxz@h{$\left.\vcenter{\vbox to + \dimen@{}}\right#1$}\global\dimen\thr@@\wdz@\boxz@}}}% + \hskip\rightcol@\count@@@@@\hskip-\dimen@i\hskip-\dimen\thr@@}}% +{\catcode`\:=\active + \gdef\hsolidA@#1:#2#3{\hsolid@{#1}{#2}{#3}} + \gdef\hdashedA@#1:#2#3{\hdashed@{#1}{#2}{#3}} + \gdef\vsolidA@#1:#2#3{\vsolid@{#1}{#2}{#3}} + \gdef\vdashedA@#1:#2#3{\vdashed@{#1}{#2}{#3}} + \gdef\vleftA@#1#2:#3#4{\vleft@#1{#2}{#3}{#4}} + \gdef\vrightA@#1#2:#3#4{\vright@#1{#2}{#3}{#4}} +} +\def\bdmatrix#1\\#2\\#3\endbdmatrix{\partition + \matrix\format\c&\quad\hskip\jot\c&&\quad\c\\ + #1\\\vspace{\jot}\Mathstrut@#2\\#3\endmatrix + \vleft@(21\bordercount@ + \vright@)\ptmColcount@1\bordercount@\endpartition} +\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne + \ch@ck#1#4#2% + \allocationnumber=\count1#1% + \global#3#5=\allocationnumber + \wlog{\string#5=\string#2\the\allocationnumber}} +\catcode`\@=\active + +\def\hsolidleaders{\leaders\hrule} + +\def\vsolidleaders{\leaders\vrule} + +\def\hdashedleaders{\xleaders\hbox to5pt{\hfil + \leaders\hrule\hskip2.5pt\hfil}} + +\def\vdashedleaders{\xleaders\vbox to5pt{\vfil\leaders\vrule\vskip2.5pt}} + diff --git a/macros/lamstex/inputs/samp.tex b/macros/lamstex/inputs/samp.tex new file mode 100644 index 0000000000..4e90462386 --- /dev/null +++ b/macros/lamstex/inputs/samp.tex @@ -0,0 +1,361 @@ +\input amstexl +\input lamstex + +%% This file is both a ``readme'' file and a sample LamS-TeX file. +%% The initial part, between the \comment and \endcomment lines, +%% is meant to be read on line. When the file is TeX'ed, this +%% material will be ignored. + + +\comment + +LamS-TeX is an extension to AmS-TeX that provides three major additions. + + +(I) FIRST WE HAVE PROFESSIONAL QUALITY COMMUTATIVE DIAGRAMS OF ALL +SORTS, AS WELL AS ``PARTITIONED MATRICES''. + +A sample commutative diagram, which everyone seems to think is very +impressive, even though it is rather simple to produce, can be seen +by TeXing this file. + +The commutative diagrams use five new fonts lams1, ... lams5, which +contain arrow shafts, dashed shafts, heads, half heads, etc., at +many different angles, so that an enormous number of different sorts +of arrows can be drawn at all these different angles. The +commutative diagram macros do not require any knowledge of the +coordinates of the groups in the diagrams---arrows are indicated simply +as ``vectors'': @(h,v) indicates an arrow that points to the group +that is h columns to the right and v rows up (h and v can both be +negative). LamS-TeX automatically picks the best angle for the indicated +arrow, but there are options that allow you to change the arrow in +almost any way imaginable. + +The MetaFont sources lams1.mf, ... lams5.mf are provided, so that +the fonts can be made at any size and resolution. + + +(II) A VERY LARGE PART OF LAMS-TEX IS DEVOTED TO TABLES. + +Only the LamS-TeX Manual can describe all the details allowed for +tables, but here are a few important features: + +You can define columns in which elements are set left-justified, centered, +or right-justified, or even such columns in which other conditions +are added, like font changes. The position of individual entries of a +column can easily be changed, and fancier things are possible, like +creating a column of left-justified elements all centered under a longer +heading. + +You can also produce columns consisting of paragraphs of text of +prescribed width, columns in which formulas are treated as math, +or as displayed math, columns for decimal numbers that will line up +automatically on the decimal point, or columns for money amounts, +with additional features. The gaps between columns can also be made +to stretch to produce tables of desired width. Entries can cross columns. + +When entries are more than one line tall, rows can be specified to +have entries aligned along the top line or the bottom line, or +centered, and an entry can cross over rows. + +Lines can be inserted between any rows or columns, and partial lines +can be inserted. There is complete control of each of the line segments +that appear in a table: the height and depth of each horizontal segment +can be controlled, and for each vertical segment, the amount the line +extends to the left or right of its position can be controlled. + +Numerous special constructions allow you to get the sort of details +that are the hallmark of professional tables. As a simple examle, +struts are automatically inserted to provide proper spacing between +rows and the horizontal lines above and below them. + + +(III) LAMS-TEX PROVIDES THE SORT OF FUNCTIONALITY PROVIDED BY LATEX, BUT +WITH MUCH GREATER FLEXIBILITY, AND WITH MANY ADDITIONAL FEATURES. + +Again, only the LamS-TeX Manual can completely indicate all this, but +here are a few important points. + +To begin with, LamS-TeX, as an extension of AmS-TeX, is almost completely +compatible with plain TeX. (There is even an additional short file, +pcompat.tex---whose use is explained within the file itself---that +eliminates the slight incompatibility of AmS-TeX and plain TeX.) + +Moreover, the syntax of LamS-TeX, similar to that of AmS-TeX, is +considerably more concise than that of LaTeX. + +But the most important aspect of LamS-TeX is its flexibility, which +allows you to have LamS-TeX do things the way you want, as opposed +to LaTeX, which essentially forces you to do things the way it wants. + + For example, even if your Lemmas are being numbered 1, 2, 3, ... + you can decide to have the next Lemma called Lemma A. + + If you don't like having formulas numbered consecutively throughout a + chapter, but simply want to number certain formulas in proofs, + for reference within that proof, each time starting with (1), you + can easily arrange that. + + Or every now and then you might simply want to label certain formulas + that will soon need to be referred to with (*) or (**) ... + + Or, after the displayed formula (14), you might have a dual formula, + which you would like to have labelled (14*). + + Or you might the next set of aligned formulas to be + labelled (15a), (15b), (15c). + +LamS-TeX has a simple, consistent, approach that allows you to make +such modifications to any construction that normally receives automatic +numbering---these include formula numbers, items in lists of all sorts, +theorems, lemmas, etc., chapters, sections, etc., footnotes, and figure +and table captions, and you can also create new automatically numbered +constructions of your own. In addition to the changes indicated above, +you can also easily change the numbering from arabic numbers to +upper- or lower-case letters, or upper- or lower-case roman numerals. +You can even change the font in which the numbers are printed, as well +as the ``style'' in which they are printed (surrounded by parentheses, +or followed by a period, etc.) + +LamS-TeX's \label and \ref construction is similar to LaTeX's, except +that you can also refer to different aspects of some \label'ed +construction. For example, if formulas are being labelled as +(3.4.1), (3.4.2), (3.4.3), ... (in section 4 of chapter 3), you can +access both the number (1 or 2 or 3 or ...) as well as the number +together with its preliminary indicator, 3.4.1, 3.4.2, 3.4.3, ... +as well as the completely formatted number (3.4.1), (3.4.2), ... + +[There are also enough ``hooks'' to allow you to write more interesting +constructions. For example, in the LamS-TeX manual, where sections +are labelled as 3.1, 3.2, 3.3, ... in Chapter 3, I made a special +construction so that in Chapter 3 it would print ``section 4'' when +referring to section 3.4, but ``section 5.4'' when referring to the +section 5.4 in a different Chapter. And I made a special construction +that usually prints ``see page ...'', but prints ``see the previous +page'' if ... is one less than the current page, and ``see above'' +when ... equals the current page.] + +It might also be mentioned that LamS-TeX allows you to have footnote +numbers start at 1 on each page automatically (this is an obvious task +for a two-pass system, and it's hard to imagine why it hasn't been done +before, since it is so ugly to have footnotes numbered throughout a chapter). + +Special attention is given to the question of Theorems, Propositions, +Lemmas, Corollaries, etc. It is easy to set things up so that, for +example, Theorems and Propositions are numbered together, Lemmas +are numbered separately, and Corollaries are also numbered separately +and automatically start with 1 after each Theorem or Lemma. + +One of the most complex parts of LamS-TeX is its mechanism for +automatically placing figures and tables. The mechanism follows +standard typesetting rules---at most two figures per page, one at +the top, one at the bottom, with figures always following their +reference---except that all sorts of exceptions are allowed, so +that you can have more than one figure on a page, force a figure +to the bottom, have a figure occur at the top or bottom depending +on whether it is referred to nearer the top or bottom of the page, +occur right in the middle of a paragraph, etc., etc. You can also +have figures occur in pairs or triples, either placed above each +other, or side-by-side, and you can indicate that a figure is so +large that LamS-TeX should simply reserve a page for it, together +with its caption. As most style specify, figures are not allowed +to occur on the first page, and the mechanism for this is easily +changed in the book style, for example, to prevent figures on the +first page of any chapter. In addition, figures will always be +``flushed out'' at the end of each chapter, before the next +chapter begins. + +LamS-TeX's ``literal'' mode (``verbatim'' mode in LaTeX) should +also be noted, again because of its flexibility. You not only +can choose the character that is used to delimit literal mode, +but you can also choose a new escape character, so that control +sequences can be used within literal mode. Displayed literal +mode material can be arbitrarily long; although usually +an unbreakable unit, there are control sequences (typed using +the new escape character) that allow or force page breaks. +It is thus quite easy to handle long computer program listings +using literal mode. + +LamS-TeX has an extensive set of constructions for bibliographies, +but LamS-TeX can also be made to interface with BiBTeX, +if you already have a large BiBTeX data base. + +Naturally LamS-TeX includes automatic generation of a table of +contents file, and its indexing aspect has an extensive set of features. +In addition to subentries, up to five levels, you can indicate that +an entry should be printed using an arbitrary control sequence (e.g., +a font control sequence), or that its page number should be printed +using an arbitrary control sequence. You can also indicate page spans, +cross-references, etc., etc. + + +****************************************************************** + +THE LAMS-TEX MANUAL (300 PAGES, SPIRAL BOUND) IS AVAILABLE FROM + + TEXPLORATORS + 3701 W. ALABAMA, SUITE 450-273 + HOUSTON, TX 77027 + +THE CURRENT PRICE IS $30, WHICH INCLUDES SHIPPING + +YOU CAN ALSO ASK YOUR BOOK STORE TO ORDER IT FOR YOU +(THE CURRENT EDITION OF THE MANUAL DOES NOT HAVE AN ISBN NUMBER) + +****************************************************************** + +THE LAMS-TEX WIZARD'S MANUAL, PRESUMABLY OF VERY LIMITED INTEREST, +EXPLAINS ALL THE CODE IN LAMSTEX IN COMPLETE, THOROUGH, AND +NAUSEATING DETAIL. MORE PRECISELY, VOLUME I, WHICH IS ALL THAT +HAS BEEN WRITTEN, COVERS ALL THE DETAILS OF THE FIRST PART OF THE +LAMSTEX MANUAL, BUT NOT THE COMMUTATIVE DIAGRAMS OR TABLES. IT IS +600 PAGES LONG AND IS PRINTED ON DEMAND, BY LASER PRINTER, +(ON BOTH SIDES OF 300 PAGES). IT IS NORMALLY PRINTED DIRECTLY ON +3-HOLE PUNCHED PAPER, UNLESS YOU REQUEST OTHERWISE. + +THE PRICE, INCLUDING SHIPPING, IS $40. + +***************************************************************** + +IN PREPARATION: THE LAMS-TEX STYLE FILE DESIGNER'S MANUAL. +THIS WILL BE A SORT OF CONDENSATION OF THE WIZARD'S +MANUAL, FOCUSING ON THOSE THINGS THAT ARE REQUIRED FOR MODIFYING +THE DEFAULT LAMSTEX STYLE. IT WILL BE PRINTED, SPIRAL BOUND, +AND PROBABLY SOLD AT SOME BARGAIN PRICE, LIKE $10. + +****************************************************************** + +\endcomment + +\document + +\NameHL1\chapter +\Namehl1\section + +\chapter Sample File\\ \rm (Read the file itself for more +information)\endchapter + +\section{Sample diagrams} +Here are three sample commutative diagrams: +\define\la#1{@()\L{#1}} +\define\lb#1{@()\l{#1}} +$$ +\redefine\H{@()\1H} +\ssizeCDlabels +\cgaps{.7; .9; .7; .9; .7} +\CD +H_q + \la\omega @(2,0) + \H\lb{p_q} @(0,-2) + \la a \lb\simeq @(1,-1) +& & \pi_{q+1} + \la{h_{q+1}} \H @(2,0) + @() \dl{-10} \lb\eta \H @(0,-2) + \la b \lb\simeq @(1,-1) +& & H_{q+1} + @() \dl{-10} \lb{p_{q+1}} \H @(0,-2) + \la c \lb\simeq @(1,-1) +\\ +& H'_q + @() \dl{-10} \lb{p'_q} \H @(0,-2) + @() \dL{-10} \la{\omega'} @(2,0) +& & \pi'_{q+1} + @() \dl{-10} \lb{\eta'} \H @(0,-2) + @() \dL{-10} \la{h'_{q+1}} @(2,0) +& & H'_{q+1} + \H \lb{p'_{q+1}} @(0,-2) +\\ +\Cal H_q + \la\alpha \lb\simeq @(1,-1) + @() \0t \dL{10} \la\Omega @(2,0) +& &\Pi_{q+1} + \la\beta \lb\simeq @(1,-1) + @() \dL{10} \la H\H @(2,0) +& &\Cal H_{q+1} + \la\gamma \lb\simeq @(1,-1) +\\ +& \Cal H'_q + @() \0t \la{\Omega'} @(2,0) +& & \Pi'_{q+1} + \la{H'} \H @(2,0) +& & \Cal H'_{q+1} +\endCD +\tag +$$ +and +$$ +\cgaps{.8; .8} +\CD +D \la i @(2,0) + & & D @() \1` \p{-2} \lb j @(-1,-1) @() \1e \0' \p2 \la{j'} @(-1,-1) \\ +& E\lb k @(-1,1) +\endCD \tag +$$ +and +$$ +\define\Hom{\operatorname{Hom}} +\rgaps{1.3;1} +\CD +B\otimes_A\Hom_A(B,A) + \la\phi @(2,0) + @() \ds(-10;-2) \la\psi @(1,-1) + @() \ds(-20;-2) \lb{\sigma\ } @(1,-2) +& & \Hom_A(B,B) + @() \ds(10;-2) \la\mu_k @(-1,-1) + @() \ds(20;-2) \lb{\ \operatorname{tr}_{B/A}} @(-1,-2) +\\ +& \Hom_A(B,A) + \lb\theta @(0,-1) +\\ +& A +\endCD +\tag +$$ + +\section{Other Features} For other features, see the documentation. + +\immediate\write16{^^J If you get an error message either because^^J +you don't have the file lamslogo.tex, or because you don't have^^J +the font cmsy8, just type \string\enddocument before this message^^J +in the file, and read the information about availability of the^^J +manual directly from this file itself.^^J} + +\input lamslogo + +\section{Documentation} + The \LamSTeX\ Manual, ``\LamSTeX, The Synthesis'' (300~pages, +spiral bound) is available from +\medskip +\margins \pullin{30pt}{} +\flushpar Texplorators\newline +3701 W. Alabama, Suite 450-273\newline +Houston, TX 77027 +\endmargins + +\medskip\flushpar +The current price is \$30, which includes shipping (special +4th class rate). You can also ask your book store to order it for you (the +current edition of the manual does not have an ISBN number). + +\bigskip\flushpar +The \LamSTeX's Wizard's Manual, presumably of very limited interest, +explains all the code in \LamSTeX\ in complete, thorough, and +nauseating detail. More precisely, Volume~I, which is all that has +been written, covers all the details of the first part of the +\LamSTeX\ Manual, but not the commutative diagrams or tables. It is +600~pages long and is printed on demand, by laser printer (on both sides +of 300~pages). It is normally printed directly on 3-hole punched paper, +unless you request otherwise. + +\medskip\flushpar +The price, including shipping, is \$40.00. + + +\bigskip\bigskip\flushpar +In preparation: The \LamSTeX\ Style File Designer's Manual. This will +be a sort of condensation of the Wizard's Manual, focusing on those things +that are required for modifying the default \LamSTeX\ style. It will be +printed, spiral bound, and probably sold at some bargain price, like \$10.00. + + +\enddocument
\ No newline at end of file diff --git a/macros/lamstex/inputs/varref.tex b/macros/lamstex/inputs/varref.tex new file mode 100644 index 0000000000..6bd991031c --- /dev/null +++ b/macros/lamstex/inputs/varref.tex @@ -0,0 +1,16 @@ +\catcode`\@=11 +\def\nref#1{\nolabel@\nref{#1}\relax + \DNii@##1~##2~##3~##4\nextii@{##3}% + \csL@{#1}\expandafter\nextii@\Next@\nextii@\fi} +\def\pref#1{\nolabel@\pref{#1}\relax + \DNii@##1~##2~##3~##4~##5\nextii@{##4}% + \csL@{#1}\expandafter\nextii@\Next@\nextii@\fi} +\def\Evaluatenref#1{\nolabel@\Evaluatenref{#1}{\gdef\Nref{-10000 }}% + \DNii@##1~##2~##3~##4\nextii@{\DNii@{##3}}% + \csL@{#1}\expandafter\nextii@\Next@\nextii@ + \xdef\Nref{\nextii@}\fi} +\def\Evaluatepref#1{\nolabel@\Evaluatepref{#1}{\global\let\Pref\empty}% + \DNii@##1~##2~##3~##4~##5\nextii@{\DNii@{##4}}% + \csL@{#1}\expandafter\nextii@\Next@\nextii@ + \xdef\Pref{\nextii@}\fi} +\catcode`\@=\active diff --git a/macros/lamstex/inputs/varref.tox b/macros/lamstex/inputs/varref.tox new file mode 100644 index 0000000000..f27f55f591 --- /dev/null +++ b/macros/lamstex/inputs/varref.tox @@ -0,0 +1,4 @@ +\catcode`\@=11 +\let\nref\undefined\let\pref\undefined\let\Evaluatenref\undefined +\let\Evaluatepref\undefined +\catcode`\@=\active |