summaryrefslogtreecommitdiff
path: root/macros/lamstex/inputs
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/lamstex/inputs
Initial commit
Diffstat (limited to 'macros/lamstex/inputs')
-rw-r--r--macros/lamstex/inputs/acompat.tex233
-rw-r--r--macros/lamstex/inputs/alignat.tex103
-rw-r--r--macros/lamstex/inputs/alignat.tox10
-rw-r--r--macros/lamstex/inputs/amstexl.tex1387
-rw-r--r--macros/lamstex/inputs/anynum.tex58
-rw-r--r--macros/lamstex/inputs/anynum.tox3
-rw-r--r--macros/lamstex/inputs/bib.tex193
-rw-r--r--macros/lamstex/inputs/bib.tox17
-rw-r--r--macros/lamstex/inputs/bibtex.tex59
-rw-r--r--macros/lamstex/inputs/book.st505
-rw-r--r--macros/lamstex/inputs/book.stb560
-rw-r--r--macros/lamstex/inputs/book.stf360
-rw-r--r--macros/lamstex/inputs/book.stt162
-rw-r--r--macros/lamstex/inputs/boxes1.tex27
-rw-r--r--macros/lamstex/inputs/boxes2.tex19
-rw-r--r--macros/lamstex/inputs/cardord.tex66
-rw-r--r--macros/lamstex/inputs/cardord.tox5
-rw-r--r--macros/lamstex/inputs/cd.tex996
-rw-r--r--macros/lamstex/inputs/cd.tox23
-rw-r--r--macros/lamstex/inputs/dblacc.tex55
-rw-r--r--macros/lamstex/inputs/dblacc.tox8
-rw-r--r--macros/lamstex/inputs/dvipaste.tex331
-rw-r--r--macros/lamstex/inputs/inst.tex484
-rw-r--r--macros/lamstex/inputs/insttbls.tex71
-rw-r--r--macros/lamstex/inputs/islands.tex579
-rw-r--r--macros/lamstex/inputs/islands.tox24
-rw-r--r--macros/lamstex/inputs/join.tex37
-rw-r--r--macros/lamstex/inputs/lamslogo.tex6
-rw-r--r--macros/lamstex/inputs/lamstbl.tex2937
-rw-r--r--macros/lamstex/inputs/lamstex.stb317
-rw-r--r--macros/lamstex/inputs/lamstex.stf115
-rw-r--r--macros/lamstex/inputs/lamstex.stt3
-rw-r--r--macros/lamstex/inputs/lamstex.tex4314
-rw-r--r--macros/lamstex/inputs/letter.st157
-rw-r--r--macros/lamstex/inputs/letter.tex189
-rw-r--r--macros/lamstex/inputs/lists.tex122
-rw-r--r--macros/lamstex/inputs/lists.tox15
-rw-r--r--macros/lamstex/inputs/literal.tex68
-rw-r--r--macros/lamstex/inputs/literal.tox6
-rw-r--r--macros/lamstex/inputs/lithl.tex86
-rw-r--r--macros/lamstex/inputs/paper.st516
-rw-r--r--macros/lamstex/inputs/paper.stt160
-rw-r--r--macros/lamstex/inputs/pcompat.tex78
-rw-r--r--macros/lamstex/inputs/places.tex288
-rw-r--r--macros/lamstex/inputs/places.tox12
-rw-r--r--macros/lamstex/inputs/ptmatrix.tex233
-rw-r--r--macros/lamstex/inputs/samp.tex361
-rw-r--r--macros/lamstex/inputs/varref.tex16
-rw-r--r--macros/lamstex/inputs/varref.tox4
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&#2&%
+ \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&#1&%
+ \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&#1&%
+ \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&#2&%
+ \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&#2&%
+ \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&#1&%
+ \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&#1&%
+ \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&#2&%
+ \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&#2&%
+ \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&#1&%
+ \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&#1&%
+ \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&#2&%
+ \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&#1&%
+ \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&#1&%
+ \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&#3&%
+ \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