Plan 9 from Bell Labs’s /usr/web/sources/contrib/steve/root/sys/lib/texmf/tex/amstex/base/amstex.tex

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


%% @texfile{
%%     filename="amstex.tex",
%%     version="2.1",
%%     date="5-APR-1991",
%%     filetype="AMS-TeX: documentstyle",
%%     copyright="Copyright (C) American Mathematical Society,
%%            all rights reserved.  Copying of this file is
%%            authorized only if either:
%%            (1) you make absolutely no changes to your copy
%%                including name; OR
%%            (2) if you do make changes, you first rename it to some
%%                other name.",
%%     author="American Mathematical Society",
%%     address="American Mathematical Society,
%%            Technical Support Department,
%%            P. O. Box 6248,
%%            Providence, RI 02940,
%%            USA",
%%     telephone="401-455-4080 or (in the USA) 800-321-4AMS",
%%     email="Internet: [email protected]",
%%     codetable="ISO/ASCII",
%%     checksumtype="line count",
%%     checksum="1797",
%%     keywords="amstex, ams-tex, tex",
%%     abstract="This file contains the AMS-TeX Version 2.1 macro
%%            package.  It is intended to be used in conjunction with
%%            plain TeX. The macros defined herein are chiefly oriented
%%            to the construction of mathematical formulas, both display
%%            and nondisplay, using AMS conventions for fonts, spacing,
%%            and other details."
%%     }
\def\fmtname{AmS-TeX}
\let\plainfmtversion\fmtversion
\def\fmtversion{2.1}
\catcode`\@=11
\ifx\amstexloaded@\relax\catcode`\@=\active
  \endinput\else\let\amstexloaded@\relax\fi
\newlinechar=`\^^J
\def\W@{\immediate\write\sixt@@n}
\def\CR@{\W@{^^J\fmtname - Version \fmtversion^^J%
COPYRIGHT 1985, 1990, 1991 - AMERICAN MATHEMATICAL SOCIETY^^J%
Use of this macro package is not restricted provided^^J%
each use is acknowledged upon publication.^^J}}
\CR@ \everyjob{\CR@}
\message{Loading definitions for}
\message{misc utility macros,}
\toksdef\toks@@=2
\long\def\rightappend@#1\to#2{\toks@{\\{#1}}\toks@@
 =\expandafter{#2}\xdef#2{\the\toks@@\the\toks@}\toks@{}\toks@@{}}
\def\alloclist@{}
\newif\ifalloc@
\def\showallocations{{\def\\{\immediate\write\m@ne}\alloclist@}\alloc@true}
\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne
 \ch@ck#1#4#2\allocationnumber=\count1#1
 \global#3#5=\allocationnumber
 \edef\next@{\string#5=\string#2\the\allocationnumber}%
 \expandafter\rightappend@\next@\to\alloclist@}
\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\setbox@ne{\setbox\@ne}
\def\wd@ne{\wd\@ne}
\def\iterate{\body\expandafter\iterate\else\fi}
\def\err@#1{\errmessage{AmS-TeX error: #1}}
\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\Err@{\errhelp\defaulthelp@\err@}
\def\eat@#1{}
\def\in@#1#2{\def\in@@##1#1##2##3\in@@{\ifx\in@##2\in@false\else\in@true\fi}%
 \in@@#2#1\in@\in@@}
\newif\ifin@
\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 @.}
{\catcode`\~=\active % just in case
 \lccode`\~=`\@ \lowercase{\gdef~{\FN@\at@}}}
\def\at@{\let\next@\at@@
 \ifcat\noexpand\next a\else\ifcat\noexpand\next0\else
 \ifcat\noexpand\next\relax\else
   \let\next\at@@@\fi\fi\fi
 \next@}
\def\at@@#1{\expandafter
 \ifx\csname\space @\string#1\endcsname\relax
  \expandafter\at@@@ \else
  \csname\space @\string#1\expandafter\endcsname\fi}
\def\at@@@#1{\errhelp\athelp@ \err@{\Invalid@@ @}}%%
\def\atdef@#1{\expandafter\def\csname\space @\string#1\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@                               %1
 \err@{\string\define\space must be followed by a control
 sequence}\expandafter\def\expandafter\nextii@\fi}                          %2
\def\undefined@@@@@@@@@@{}
\def\preloaded@@@@@@@@@@{}
\def\next@@@@@@@@@@{}
\def\define@@#1{\ifx#1\relax\errhelp\defbhelp@                              %1
 \err@{\string#1\space is already defined}\DN@{\DNii@}\else
 \expandafter\ifx\csname\expandafter\eat@\string                            %2
 #1@@@@@@@@@@\endcsname\undefined@@@@@@@@@@\errhelp\defbhelp@
 \err@{\string#1\space can't be defined}\DN@{\DNii@}\else
 \expandafter\ifx\csname\expandafter\eat@\string#1\endcsname\relax          %3
 \global\let#1\undefined\DN@{\def#1}\else\errhelp\defbhelp@
 \err@{\string#1\space is already defined}\DN@{\DNii@}\fi
 \fi\fi\next@}
\let\redefine\def
\def\predefine#1#2{\let#1#2}
\def\undefine#1{\let#1\undefined}
\message{page layout,}
\newdimen\captionwidth@
\captionwidth@\hsize
\advance\[email protected]
\def\pagewidth#1{\hsize#1\relax
 \captionwidth@\hsize\advance\[email protected]}
\def\pageheight#1{\vsize#1\relax}
\def\hcorrection#1{\advance\hoffset#1\relax}
\def\vcorrection#1{\advance\voffset#1\relax}
\message{accents/punctuation,}
\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?}
\edef\@{\string @}
\def\relaxnext@{\let\next\relax}
\atdef@-{\relaxnext@\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@{\drsr@}
\def\dlsl@{\srdr@}
\atdef@"{\unskip\relaxnext@
 \DN@{\ifx\next\space@\DN@. {\FN@\nextii@}\else
  \DN@.{\FN@\nextii@}\fi\next@.}%
 \DNii@{\ifx\next`\DN@`{\FN@\nextiii@}\else
  \ifx\next\lq\DN@\lq{\FN@\nextiii@}\else
  \DN@####1{\FN@\nextiv@}\fi\fi\next@}%
 \def\nextiii@{\ifx\next`\DN@`{\sldl@``}\else\ifx\next\lq
  \DN@\lq{\sldl@``}\else\DN@{\dlsl@`}\fi\fi\next@}%
 \def\nextiv@{\ifx\next'\DN@'{\srdr@''}\else
  \ifx\next\rq\DN@\rq{\srdr@''}\else\DN@{\drsr@'}\fi\fi\next@}%
 \FN@\next@}
\def\flushpar{\par\noindent}
\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{M}\kern-.125emS}-\TeX}
\message{line and page breaks,}
\def\vmodeerr@#1{\Err@{\string#1\space not allowed between paragraphs}}
\def\mathmodeerr@#1{\Err@{\string#1\space not allowed in math mode}}
\def\linebreak{\RIfM@\mathmodeerr@\linebreak\else
 \ifhmode\unskip\unkern\break\else\vmodeerr@\linebreak\fi\fi}
\def\slash{\unskip/\penalty\exhyphenpenalty}
\newskip\saveskip@
\def\allowlinebreak{\RIfM@\mathmodeerr@\allowlinebreak\else
 \ifhmode\saveskip@\lastskip\unskip
 \allowbreak\ifdim\saveskip@>\z@\hskip\saveskip@\fi
 \else\vmodeerr@\allowlinebreak\fi\fi}
\def\nolinebreak{\RIfM@\mathmodeerr@\nolinebreak\else
 \ifhmode\saveskip@\lastskip\unskip
 \nobreak\ifdim\saveskip@>\z@\hskip\saveskip@\fi
 \else\vmodeerr@\nolinebreak\fi\fi}
\def\newline{\relaxnext@
 \DN@{\RIfM@\expandafter\mathmodeerr@\expandafter\newline\else
  \ifhmode\ifx\next\par\else
  \expandafter\unskip\expandafter\null\expandafter\hfill\expandafter\break\fi
  \else
  \expandafter\vmodeerr@\expandafter\newline\fi\fi}%
 \FN@\next@}
\def\dmatherr@#1{\Err@{\string#1\space not allowed in display math mode}}
\def\nondmatherr@#1{\Err@{\string#1\space not allowed in non-display math
 mode}}
\def\onlydmatherr@#1{\Err@{\string#1\space allowed only in display math mode}}
\def\nonmatherr@#1{\Err@{\string#1\space allowed 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@{\string#1\space not allowed within a paragraph
 or in math}}
\def\vnonvmode@#1#2{\relaxnext@\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 }
\message{figures,}
\Invalid@\caption
\Invalid@\captionwidth
\newdimen\smallcaptionwidth@
\def\topspace{\mid@false\ins@}
\def\midspace{\mid@true\ins@}
\newif\ifmid@
\def\captionfont@{}
\def\ins@#1{\relaxnext@\allowbreak
 \smallcaptionwidth@\captionwidth@\gdef\thespace@{#1}%
 \DN@{\ifx\next\space@\DN@. {\FN@\nextii@}\else
  \DN@.{\FN@\nextii@}\fi\next@.}%
 \DNii@{\ifx\next\caption\DN@\caption{\FN@\nextiii@}%
  \else\let\next@\nextiv@\fi\next@}%
 \def\nextiv@{\vnonvmode@
  {\ifmid@\expandafter\midinsert\else\expandafter\topinsert\fi
   \vbox to\thespace@{}\endinsert}
  {\ifmid@\nonvmodeerr@\midspace\else\nonvmodeerr@\topspace\fi}}%
 \def\nextiii@{\ifx\next\captionwidth\expandafter\nextv@
  \else\expandafter\nextvi@\fi}%
 \def\nextv@\captionwidth##1##2{\smallcaptionwidth@##1\relax\nextvi@{##2}}%
 \def\nextvi@##1{\def\thecaption@{\captionfont@##1}%
  \DN@{\ifx\next\space@\DN@. {\FN@\nextvii@}\else
   \DN@.{\FN@\nextvii@}\fi\next@.}%
  \FN@\next@}%
 \def\nextvii@{\vnonvmode@
  {\ifmid@\expandafter\midinsert\else
  \expandafter\topinsert\fi\vbox to\thespace@{}\nobreak\smallskip
  \setboxz@h{\noindent\ignorespaces\thecaption@\unskip}%
  \ifdim\wdz@>\smallcaptionwidth@\centerline{\vbox{\hsize\smallcaptionwidth@
   \noindent\ignorespaces\thecaption@\unskip}}%
  \else\centerline{\boxz@}\fi\endinsert}
  {\ifmid@\nonvmodeerr@\midspace
  \else\nonvmodeerr@\topspace\fi}}%
 \FN@\next@}
\message{comments,}
\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
\message{math spacing,}
\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@.{\RIfM@&&\else\leavevmode.\spacefactor3000 \fi}
\def\and{\DOTSB\;\mathchar"3026 \;}
\def\implies{\DOTSB\;\Longrightarrow\;}
\def\impliedby{\DOTSB\;\Longleftarrow\;}
\message{fractions,}
\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@
\[email protected]
\Invalid@\thickness
\def\thickfrac{\relaxnext@
 \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{\relaxnext@\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}
\message{smash commands,}
\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@}
\message{large operator symbols,}
\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@}
\message{integrals,}
\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@                                %1
 \else\intkern@\fi                                                          %2
 \ifnum\intno@>\tw@\int\intkern@\fi                                         %3
 \ifnum\intno@>\thr@@\int\intkern@\fi                                       %4
 \int}                                                                      %5
\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@                                                    %1
 \def\ints@@@{\iflimits@\negintic@\mathop{\intic@\multintlimits@}\limits    %2
  \else\multint@\nolimits\fi                                                %3
  \eat@}                                                                    %4
 \else                                                                      %5
 \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@{\relaxnext@
 \DN@{\ifx\next\limits\DN@\limits{\nolimits}\else
  \let\next@\nolimits\fi\next@}%
 \FN@\next@}
\message{operator names,}
\def\newmcodes@{\mathcode`\'"27\mathcode`\*"2A\mathcode`\."613A%
 \mathcode`\-"2D\mathcode`\/"2F\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.2exwidth\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@                     %1
 \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}}}}
\message{multilevel sub/superscripts,}
\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
\setboxz@h{$\m@th($}
\ht\Mathstrutbox@\ht\z@
\dp\Mathstrutbox@\dp\z@
\message{matrices,}
\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@
\[email protected]
\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}
\message{multiline displays,}
\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}%                                                 %1
 \atcount@#1\relax\advance\atcount@\m@ne                                    %2
 \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                                                     %3
 \xdef\preamble@{\the\toks@}\xdef\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\tagform@#1{\hbox{\rm(\ignorespaces#1\unskip)}}
\def\thetag{\leavevmode\tagform@}
\def\tag#1$${\iftagsleft@\leqno\else\eqno\fi                                %1
 \maketag@#1\maketag@                                                       %2
 $$}                                                                        %3
\def\maketag@{\FN@\maketag@@}
\def\maketag@@{\ifx\next"\expandafter\maketag@@@\else\expandafter\maketag@@@@
 \fi}
\def\maketag@@@"#1"#2\maketag@{\hbox{\rm#1}}                                %1
\def\maketag@@@@#1\maketag@{\ifmathtags@\tagform@{$\m@th#1$}\else
 \tagform@{#1}\fi}
\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{%
 \penalty\postdisplaypenalty \vskip\belowdisplayskip
 \vbox{\normalbaselines\noindent##1}%
 \penalty\predisplaypenalty \vskip\abovedisplayskip}}}
\newskip\centering@
\centering@\z@ plus\@m\p@
\def\align{\relax\ifingather@\DN@{\csname align (in
  \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\align@{\inalign@true\inany@true
 \vspace@\allowdisplaybreak@\displaybreak@\intertext@
 \def\tag{\global\tag@true\ifnum\and@=\z@\DN@{&&}\else
          \DN@{&}\fi\next@}%
 \iftagsleft@\DN@{\csname align \endcsname}\else
  \DN@{\csname align \space\endcsname}\fi\next@}
\def\Tag@{\iftag@\else\errhelp\andhelp@\err@{Extra & on this line}\fi}
\newdimen\lwidth@
\newdimen\rwidth@
\newdimen\maxlwidth@
\newdimen\maxrwidth@
\newdimen\totwidth@
\def\measure@#1\endalign{\lwidth@\z@\rwidth@\z@\maxlwidth@\z@\maxrwidth@\z@
 \global\and@\z@                                                            %1
 \setbox@ne\vbox                                                            %2
  {\everycr{\noalign{\global\tag@false\global\and@\z@}}\Let@                %3
  \halign{\setboxz@h{$\m@th\displaystyle{\@lign##}$}%                       %4
   \global\lwidth@\wdz@                                                     %5
   \ifdim\lwidth@>\maxlwidth@\global\maxlwidth@\lwidth@\fi                  %6
   \global\advance\and@\@ne                                                 %7
   &\setboxz@h{$\m@th\displaystyle{{}\@lign##}$}\global\rwidth@\wdz@        %8
   \ifdim\rwidth@>\maxrwidth@\global\maxrwidth@\rwidth@\fi                  %9
   \global\advance\and@\@ne                                                %10
   &\Tag@
   \eat@{##}\crcr#1\crcr}}%                                                %11
 \totwidth@\maxlwidth@\advance\totwidth@\maxrwidth@}                       %12
\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                                          %1
 \vskip-\ht\strutbox@\vskip-\dp\strutbox@                                   %2
 \vbox{\noindent\hbox to#1{\strut@\hfill}}%                                 %3
 \prevdepth\dimen@                                                          %4
 \fi}}
\expandafter\def\csname align \space\endcsname#1\endalign
 {\measure@#1\endalign\global\and@\z@                                       %1
 \ifingather@\everycr{\noalign{\global\and@\z@}}\else\displ@y@\fi           %2
 \Let@\tabskip\centering@                                                   %3
 \halign to\displaywidth
  {\hfil\strut@\setboxz@h{$\m@th\displaystyle{\@lign##}$}%                  %4
  \global\lwidth@\wdz@\boxz@\global\advance\and@\@ne                        %5
  \tabskip\z@skip                                                           %6
  &\setboxz@h{$\m@th\displaystyle{{}\@lign##}$}%                            %7
  \global\rwidth@\wdz@\boxz@\hfill\global\advance\and@\@ne                  %8
  \tabskip\centering@                                                       %9
  &\setboxz@h{\@lign\strut@\maketag@##\maketag@}%                          %10
  \dimen@\displaywidth\advance\dimen@-\totwidth@
  \divide\dimen@\tw@\advance\dimen@\maxrwidth@\advance\dimen@-\rwidth@     %11
  \ifdim\dimen@<\tw@\wdz@\llap{\vtop{\normalbaselines\null\boxz@}}%        %12
  \else\llap{\boxz@}\fi                                                    %13
  \tabskip\z@skip                                                          %14
  \crcr#1\crcr                                                             %15
  \black@\totwidth@}}                                                      %16
\newdimen\lineht@
\expandafter\def\csname align \endcsname#1\endalign{\measure@#1\endalign
 \global\and@\z@
 \ifdim\totwidth@>\displaywidth\let\displaywidth@\totwidth@\else
  \let\displaywidth@\displaywidth\fi                                        %1
 \ifingather@\everycr{\noalign{\global\and@\z@}}\else\displ@y@\fi
 \Let@\tabskip\centering@\halign to\displaywidth
  {\hfil\strut@\setboxz@h{$\m@th\displaystyle{\@lign##}$}%
  \global\lwidth@\wdz@\global\lineht@\ht\z@                                 %2
  \boxz@\global\advance\and@\@ne
  \tabskip\z@skip&\setboxz@h{$\m@th\displaystyle{{}\@lign##}$}%
  \global\rwidth@\wdz@\ifdim\ht\z@>\lineht@\global\lineht@\ht\z@\fi         %3
  \boxz@\hfil\global\advance\and@\@ne
  \tabskip\centering@&\kern-\displaywidth@                                  %4
  \setboxz@h{\@lign\strut@\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@}}
\expandafter\def\csname align (in \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@
\expandafter\def\csname alignat \endcsname#1#2\endalignat                   %1
 {\inany@true\xat@false
 \def\tag{\global\tag@true\count@#1\relax\multiply\count@\tw@
  \xdef\tag@{}\loop\ifnum\count@>\and@\xdef\tag@{&\tag@}\advance\count@\m@ne
  \repeat\tag@}%
 \vspace@\allowdisplaybreak@\displaybreak@\intertext@
 \displ@y@\measuring@true                                                   %2
 \setbox\savealignat@\hbox{$\m@th\displaystyle\Let@
  \attag@{#1}%                                                              %3
  \vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}%
 \measuring@false                                                           %4
 \Let@\attag@{#1}%                                                          %5
 \tabskip\centering@\halign to\displaywidth
  {\span\preamble@@\crcr#2\crcr                                             %6
  \black@{\wd\savealignat@}}}                                               %7
\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\def\tag@{}\count@#1\relax\multiply\count@\tw@
  \loop\ifnum\count@>\and@\xdef\tag@{&\tag@}\advance\count@\m@ne\repeat\tag@}%
 \vspace@\allowdisplaybreak@\displaybreak@\intertext@
 \displ@y@\measuring@true\setbox\savealignat@\hbox{$\m@th\displaystyle\Let@
 \attag@{#1}\vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}%
 \measuring@false\Let@
 \attag@{#1}\tabskip\centering@\halign to\displaywidth
 {\span\preamble@@\crcr#2\crcr\black@{\wd\savealignat@}}}
\def\attag@#1{\let\Maketag@\maketag@\let\TAG@\Tag@                          %1
 \let\Tag@=0\let\maketag@=0%                                                %2
 \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                                         %3
 \toks@{\hfil\strut@$\m@th\displaystyle{\@lign\the\hashtoks@}$\tabskip\z@skip
  \global\advance\and@\@ne&$\m@th\displaystyle{{}\@lign\the\hashtoks@}$\hfil
  \ifxat@\tabskip\centering@\fi\global\advance\and@\@ne}%                   %4
 \iftagsleft@
  \toks@@{\tabskip\centering@&\Tag@\kern-\displaywidth
   \rlap@{\@lign\maketag@\the\hashtoks@\maketag@}%
   \global\advance\and@\@ne\tabskip\displaywidth}\else
  \toks@@{\tabskip\centering@&\Tag@\llap@{\@lign\maketag@
   \the\hashtoks@\maketag@}\global\advance\and@\@ne\tabskip\z@skip}\fi      %5
 \atcount@#1\relax\advance\atcount@\m@ne
 \loop\ifnum\atcount@>\z@
 \toks@=\expandafter{\the\toks@&\hfil$\m@th\displaystyle{\@lign
  \the\hashtoks@}$\global\advance\and@\@ne
  \tabskip\z@skip&$\m@th\displaystyle{{}\@lign\the\hashtoks@}$\hfil\ifxat@
  \tabskip\centering@\fi\global\advance\and@\@ne}\advance\atcount@\m@ne
 \repeat                                                                    %6
 \xdef\preamble@{\the\toks@\the\toks@@}%                                    %7
 \xdef\preamble@@{\preamble@}%                                              %8
 \let\maketag@\Maketag@\let\Tag@\TAG@}                                      %9
\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
 \xdef\preamble@{\the\toks@\tabskip\z@skip}\xdef\preamble@@{\preamble@}}
\Invalid@\endxxalignat
\newdimen\gwidth@
\newdimen\gmaxwidth@
\def\gmeasure@#1\endgather{\gwidth@\z@\gmaxwidth@\z@\setbox@ne\vbox{\Let@
 \halign{\setboxz@h{$\m@th\displaystyle{##}$}\global\gwidth@\wdz@
 \ifdim\gwidth@>\gmaxwidth@\global\gmaxwidth@\gwidth@\fi
 &\eat@{##}\crcr#1\crcr}}}
\def\gather{\RIfMIfI@\DN@{\onlydmatherr@\gather}\else
 \ingather@true\inany@true\def\tag{&}%
 \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@}
\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\setbox\z@\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\setbox9 \vbox
 {\unvcopy\z@\global\setbox8 \lastbox\unskip}%                              %1
 \setbox@ne\hbox{\unhcopy8 \unskip\global\setbox\tw@\lastbox
 \unskip\global\setbox\thr@@\lastbox}%                                      %2
 \global\setbox7 \hbox{\unhbox\tw@\unskip}%                                 %3
 \ifinalign@\ifctagsplit@                                                   %4
  \gdef\split@{\hbox to\wd\thr@@{}&
   \vcenter{\vbox{\moveleft\wd\thr@@\boxz@}}}%                              %5
 \else\gdef\split@{&\vbox{\moveleft\wd\thr@@\box9}\crcr
  \box\thr@@&\box7}\fi                                                      %6
 \else                                                                      %7
  \ifctagsplit@\gdef\split@{\vcenter{\boxz@}}\else
  \gdef\split@{\box9\crcr\hbox{\box\thr@@\box7}}\fi
 \fi
 \split@}                                                                   %8
\def\lendsplit@{\global\setbox9\vtop{\unvcopy\z@}%                          %1
 \setbox@ne\vbox{\unvcopy\z@\global\setbox8\lastbox}%                       %2
 \setbox@ne\hbox{\unhcopy8\unskip\setbox\tw@\lastbox
  \unskip\global\setbox\thr@@\lastbox}%                                     %3
 \ifinalign@\ifctagsplit@                                                   %4
  \gdef\split@{\hbox to\wd\thr@@{}&
  \vcenter{\vbox{\moveleft\wd\thr@@\box9}}}%                                %5
  \else                                                                     %6
  \gdef\split@{\hbox to\wd\thr@@{}&\vbox{\moveleft\wd\thr@@\box9}}\fi
 \else
  \ifctagsplit@\gdef\split@{\vcenter{\box9}}\else
  \gdef\split@{\box9}\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\tagin@#1{\tagin@false\in@\tag{#1}\ifin@\tagin@true\fi}
\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}%                             %1
 \setbox@ne\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}}%                    %1
  \def\shoveleft##1{##1}\def\shoveright##1{##1}%
 \setbox@ne\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@}%                               %1
 \lmmeasure@#1\endmultline\dimen@\mwidth@\advance\dimen@\wd\mtagbox@
 \advance\dimen@\multlinetaggap@                                            %2
 \ifdim\dimen@>\displaywidth\ltwidth@\z@\else\ltwidth@\wd\mtagbox@\fi       %3
 \lmultline@@@#1\endmultline$$}
\def\lmultline@@@{\displ@y
 \def\shoveright##1{##1\hfilneg\hskip\multlinegap@}%
 \def\shoveleft##1{\setboxz@h{$\m@th\displaystyle{}##1$}%
  \setbox@ne\hbox{$\m@th\displaystyle##1$}%
  \hfilneg
  \iftagin@
   \ifdim\ltwidth@>\z@\hskip\ltwidth@\hskip\multlinetaggap@\fi
  \else\hskip\multlinegap@\fi\hskip.5\wd@ne\hskip-.5\wdz@##1}%              %1
  \halign\bgroup\Let@\hbox to\displaywidth
   {\strut@$\m@th\displaystyle\hfil{}##\hfil$}\crcr
   \hfilneg                                                                 %2
   \iftagin@                                                                %3
    \ifdim\ltwidth@>\z@                                                     %4
     \box\mtagbox@\hskip\multlinetaggap@                                    %5
    \else
     \rlap{\vbox{\normalbaselines\hbox{\strut@\box\mtagbox@}%
     \vbox to\mlineht@{}}}\fi                                               %6
   \else\hskip\multlinegap@\fi}                                             %7
\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@ne\hbox{$\m@th\displaystyle##1$}%
  \hfilneg\hskip\multlinegap@\hskip.5\wd@ne\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@                                                %1
 \ifdim\rtwidth@>\z@                                                        %2
  \hskip\multlinetaggap@\box\mtagbox@                                       %3
 \else\llap{\vtop{\normalbaselines\null\hbox{\strut@\box\mtagbox@}}}\fi     %4
 \else\hskip\multlinegap@\fi                                                %5
 \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}
\message{continued fractions,}
\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\gloop@#1\repeat{\gdef\body{#1}\iterate}
\def\endcfrac{\gloop@\ifnum\cfraccount@>\z@\global\advance\cfraccount@\m@ne
 \egroup\hskip-\nulldelimiterspace\egroup\repeat}
\message{compound symbols,}
\def\binrel@#1{\setboxz@h{\thinmuskip0mu
  \medmuskip\m@ne mu\thickmuskip\@ne mu$#1\m@th$}%
 \setbox@ne\hbox{\thinmuskip0mu\medmuskip\m@ne mu\thickmuskip
  \@ne mu${}#1{}\m@th$}%
 \setbox\tw@\hbox{\hskip\wd@ne\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{%
 \setbox@ne\hbox{$\dsize{\vphantom{#3}}#1{#3}\m@th$}%
 \setbox\tw@\hbox{$\dsize{#3}#2\m@th$}%
 \hskip\wd@ne\hskip-\wd\tw@\mathop{\hskip\wd\tw@\hskip-\wd@ne
  {\vphantom{#3}}#1{#3}#2}}
\def\rightarrowfill@#1{\setboxz@h{$#1-\m@th$}\ht\z@\z@
  $#1\m@th\copy\z@\mkern-6mu\cleaders
  \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill
  \mkern-6mu\mathord\rightarrow$}
\def\leftarrowfill@#1{\setboxz@h{$#1-\m@th$}\ht\z@\z@
  $#1\m@th\mathord\leftarrow\mkern-6mu\cleaders
  \hbox{$#1\mkern-2mu\copy\z@\mkern-2mu$}\hfill
  \mkern-6mu\box\z@$}
\def\leftrightarrowfill@#1{\setboxz@h{$#1-\m@th$}\ht\z@\z@
  $#1\m@th\mathord\leftarrow\mkern-6mu\cleaders
  \hbox{$#1\mkern-2mu\box\z@\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}}}
\message{various kinds of dots,}
\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{\relaxnext@
  \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{\relaxnext@
  \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{\relaxnext@
  \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{\relaxnext@
  \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\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}
\def\dots{\RIfM@\expandafter\mdots@\else\expandafter\tdots@\fi}
\def\tdots@{\unskip\relaxnext@
 \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\mdots@{\FN@\mdots@@}
\def\mdots@@{\gdef\thedots@{\dotso@}%                                       %1
 \ifx\next\boldkey\gdef\thedots@\boldkey{\boldkeydots@}\else                %2
 \ifx\next\boldsymbol\gdef\thedots@\boldsymbol{\boldsymboldots@}\else       %3
 \ifx,\next\gdef\thedots@{\dotsc}%                                          %4
 \else\ifx\not\next\gdef\thedots@{\dotsb@}%                                 %5
 \else\keybin@
 \ifkeybin@\gdef\thedots@{\dotsb@}%                                         %6
 \else\xdef\meaning@{\meaning\next..........}\xdef\meaning@@{\meaning@}%    %7
  \expandafter\math@\meaning@\math@
  \ifmath@
   \expandafter\mathch@\meaning@\mathch@
   \ifmathch@\expandafter\getmathch@\meaning@\getmathch@\fi                 %8
  \else\expandafter\macro@\meaning@@\macro@                                 %9
  \ifmacro@                                                                %10
   \expandafter\not@\meaning@\not@\ifnot@\gdef\thedots@{\dotsb@}%          %11
  \else\expandafter\DOTS@\meaning@\DOTS@
  \ifDOTS@
   \ifcase\number\DOTSCASE@\gdef\thedots@{\dotsb@}%
    \or\gdef\thedots@{\dotsi}\else\fi                                      %12
  \else\expandafter\math@\meaning@\math@                                   %13
  \ifmath@\expandafter\mathbin@\meaning@\mathbin@
  \ifmathbin@\gdef\thedots@{\dotsb@}%                                      %14
  \else\expandafter\mathrel@\meaning@\mathrel@
  \ifmathrel@\gdef\thedots@{\dotsb@}%                                      %15
  \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                                    %1
 \ifx\next)\else                                                            %2
 \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                                                        %3
 \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            %1
 \else\ifx\next$\global\extra@true                                          %2
 \else\xdef\meaning@{\meaning\next..........}%                              %3
 \expandafter\macro@\meaning@\macro@\ifmacro@                               %4
 \expandafter\DOTS@\meaning@\DOTS@
 \ifDOTS@
 \ifnum\DOTSCASE@=\tw@\global\extra@true                                    %5
 \fi\fi\fi\fi\fi}
\newif\ifbold@
\def\dotso@{\relaxnext@
 \ifbold@
  \let\next\delayed@
  \DNii@{\extra@\plainldots@\ifextra@\,\fi}%
 \else
  \DNii@{\DN@{\extra@\plainldots@\ifextra@\,\fi}\FN@\next@}%
 \fi
 \nextii@}
\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\ldots{\DN@{\extrap@\plainldots@}%
 \FN@\next@}
\def\cdots{\DN@{\extrap@\plaincdots@}%
 \FN@\next@}
\let\dotso\ldots
\let\dotsb\cdots
\let\dotsm\dotsb
\def\dotsc{\relaxnext@
 \DN@{\ifx\next;\plainldots@\,\else
  \ifx\next.\plainldots@\,\else\extra@\plainldots@
  \ifextra@\,\fi\fi\fi}%
 \FN@\next@}
\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\;}
\message{special superscripts,}
\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}
\message{\string\text,}
\def\textonlyfont@#1#2{\def#1{\RIfM@
 \Err@{Use \string#1\space only 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@{\relaxnext@
 \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@}
\message{math font commands,}
\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\roman{\RIfM@\expandafter\roman@\else
 \expandafter\nonmatherr@\expandafter\roman\fi}
\def\roman@#1{{\roman@@{#1}}}
\def\roman@@#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
\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}
\def\loadmsam{%
 \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\next{\hexnumber@\msafam}%
 \mathchardef\dabar@"0\next39
 \edef\dashrightarrow{\mathrel{\dabar@\dabar@\mathchar"0\next4B}}%
 \edef\dashleftarrow{\mathrel{\mathchar"0\next4C\dabar@\dabar@}}%
 \let\dasharrow\dashrightarrow
 \edef\ulcorner{\delimiter"4\next70\next70 }%
 \edef\urcorner{\delimiter"5\next71\next71 }%
 \edef\llcorner{\delimiter"4\next78\next78 }%
 \edef\lrcorner{\delimiter"5\next79\next79 }%
 \edef\yen{{\noexpand\mathhexbox@\next55}}%
 \edef\checkmark{{\noexpand\mathhexbox@\next58}}%
 \edef\circledR{{\noexpand\mathhexbox@\next72}}%
 \edef\maltese{{\noexpand\mathhexbox@\next7A}}%
 \global\let\loadmsam\empty}%
\def\loadmsbm{%
 \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
 \global\let\loadmsbm\empty
 }
\def\widehat#1{\ifx\undefined\msbfam \DN@{362}%
  \else \setboxz@h{$\m@th#1$}%
    \edef\next@{\ifdim\wdz@>\tw@ em%
        \hexnumber@\msbfam 5B%
      \else 362\fi}\fi
  \mathaccent"0\next@{#1}}
\def\widetilde#1{\ifx\undefined\msbfam \DN@{365}%
  \else \setboxz@h{$\m@th#1$}%
    \edef\next@{\ifdim\wdz@>\tw@ em%
        \hexnumber@\msbfam 5D%
      \else 365\fi}\fi
  \mathaccent"0\next@{#1}}
\message{\string\newsymbol,}
\def\newsymbol#1#2#3#4#5{\define#1{}%
  \count@#2\relax \advance\count@\m@ne % to push case 0 to the \else clause
 \ifcase\count@
   \ifx\undefined\msafam\loadmsam\fi \let\next@\msafam
 \or \ifx\undefined\msbfam\loadmsbm\fi \let\next@\msbfam
 \else  \Err@{\Invalid@@\string\newsymbol}\let\next@\tw@\fi
 \mathchardef#1="#3\hexnumber@\next@#4#5\space}
\def\UseAMSsymbols{\loadmsam\loadmsbm \input amssym.tex }
\def\Bbb{\RIfM@\expandafter\Bbb@\else
 \expandafter\nonmatherr@\expandafter\Bbb\fi}
\def\Bbb@#1{{\Bbb@@{#1}}}
\def\Bbb@@#1{\noaccents@\fam\msbfam\relax#1}
\message{bold Greek and bold symbols,}
\def\loadbold{%
 \font@\tencmmib=cmmib10 \font@\sevencmmib=cmmib7 \font@\fivecmmib=cmmib5
 \skewchar\tencmmib'177 \skewchar\sevencmmib'177 \skewchar\fivecmmib'177
 \alloc@@8\fam\chardef\sixt@@n\cmmibfam
 \textfont\cmmibfam\tencmmib
 \scriptfont\cmmibfam\sevencmmib \scriptscriptfont\cmmibfam\fivecmmib
 \font@\tencmbsy=cmbsy10 \font@\sevencmbsy=cmbsy7 \font@\fivecmbsy=cmbsy5
 \skewchar\tencmbsy'60 \skewchar\sevencmbsy'60 \skewchar\fivecmbsy'60
 \alloc@@8\fam\chardef\sixt@@n\cmbsyfam
 \textfont\cmbsyfam\tencmbsy
 \scriptfont\cmbsyfam\sevencmbsy \scriptscriptfont\cmbsyfam\fivecmbsy
 \let\loadbold\empty
}
\def\boldnotloaded#1{\Err@{\ifcase#1\or First\else Second\fi
       bold symbol font not loaded}}
\def\mathchari@#1#2#3{\ifx\undefined\cmmibfam
    \boldnotloaded@\@ne
  \else\mathchar"#1\hexnumber@\cmmibfam#2#3\space \fi}
\def\mathcharii@#1#2#3{\ifx\undefined\cmbsyfam
    \boldnotloaded\tw@
  \else \mathchar"#1\hexnumber@\cmbsyfam#2#3\space\fi}
\edef\bffam@{\hexnumber@\bffam}
\def\boldkey#1{\ifcat\noexpand#1A%
  \ifx\undefined\cmmibfam \boldnotloaded\@ne
  \else {\fam\cmmibfam#1}\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\boldsymbol#1{%
 \DN@{\Err@{You can't use \string\boldsymbol\space with \string#1}#1}%
 \ifcat\noexpand#1A%
   \let\next@\relax
   \ifx\undefined\cmmibfam \boldnotloaded\@ne
   \else {\fam\cmmibfam#1}\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{\ifx\undefined\cmbsyfam
    \boldnotloaded\tw@
  \else \mathhexbox@{\hexnumber@\cmbsyfam}{#1}{#2}\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@        %1
 \divide\classnum@4096 \count@\classnum@                                    %2
 \multiply\count@4096 \advance\count@@@-\count@ \count@@\count@@@           %3
 \divide\count@@@\@cclvi \count@\count@@                                    %4
 \multiply\count@@@\@cclvi \advance\count@@-\count@@@                       %5
 \divide\count@@@\@cclvi                                                    %6
 \multiply\classnum@4096 \advance\classnum@\count@@                         %7
 \ifnum\count@@@=\z@                                                        %8
  \count@"\bffam@ \multiply\count@\@cclvi
  \advance\classnum@\count@
  \DN@{\mathchar\number\classnum@}%
 \else
  \ifnum\count@@@=\@ne                                                      %9
   \ifx\undefined\cmmibfam \DN@{\boldnotloaded\@ne}%
   \else \count@\cmmibfam \multiply\count@\@cclvi
     \advance\classnum@\count@
     \DN@{\mathchar\number\classnum@}\fi
  \else
   \ifnum\count@@@=\tw@                                                    %10
     \ifx\undefined\cmbsyfam
       \DN@{\boldnotloaded\tw@}%
     \else
       \count@\cmbsyfam \multiply\count@\@cclvi
       \advance\classnum@\count@
       \DN@{\mathchar\number\classnum@}%
     \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
 \ifx\undefined\cmbsyfam \boldnotloaded\@ne
 \else \mathcharii@#2#4#5\space \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}
\message{Euler fonts,}
\def\loadeufm{\loadmathfont{eufm}}
\def\loadeufb{\loadmathfont{eufb}}
\def\loadeusm{\loadmathfont{eusm}}
\def\loadeusb{\loadmathfont{eusb}}
\def\loadeurm{\loadmathfont{eurm}}
\def\loadeurb{\loadmathfont{eurb}}
\def\frak{\mathfont@\frak}
\def\frakfam{\eufmfam}
\let\goth\frak
\def\loadmathfont#1{% 
   \expandafter\font@\csname ten#1\endcsname=#110
   \expandafter\font@\csname seven#1\endcsname=#17
   \expandafter\font@\csname five#1\endcsname=#15
   \edef\next{\noexpand\alloc@@8\fam\chardef\sixt@@n
     \expandafter\noexpand\csname#1fam\endcsname}%
   \next
   \textfont\csname#1fam\endcsname \csname ten#1\endcsname
   \scriptfont\csname#1fam\endcsname \csname seven#1\endcsname
   \scriptscriptfont\csname#1fam\endcsname \csname five#1\endcsname
   \expandafter\def\csname #1\expandafter\endcsname\expandafter{%
      \expandafter\mathfont@\csname#1\endcsname}%
 \expandafter\gdef\csname load#1\endcsname{}%
}
\def\mathfont@#1{\RIfM@\expandafter\mathfont@@\expandafter#1\else
  \expandafter\nonmatherr@\expandafter#1\fi}
\def\mathfont@@#1#2{{\mathfont@@@#1{#2}}}
\def\mathfont@@@#1#2{\noaccents@
   \fam\csname\expandafter\eat@\string#1fam\endcsname
   \relax#2}
\message{math accents,}
\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                           %1
 \ifnum\fam>\m@ne\ifnum\fam<16
  \global\familycount@\the\fam\relax
  \global\skewcharcount@\the\skewchar\textfont\the\fam\relax\fi\fi          %2
 \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}                                            %3
\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\roman@\roman@@\let\bold@\bold@@
 \let\slanted@\slanted@@}
\def\mathaccent@#1#2{\ifnum\fam=\m@ne\xdef\thefam@{1}\else
 \xdef\thefam@{\the\fam}\fi                                                 %1
 \accentdimen@\z@                                                           %2
 \setboxz@h{\unbracefonts@$\m@th\fam\thefam@\relax#2$}%                     %3
 \ifdim\accentdimen@=\z@\DN@{\mathaccent#1{#2}}%                            %4
  \setbox@ne\hbox{\unbracefonts@$\m@th\fam\thefam@\relax#2\theskewchar@$}% %5a
  \setbox\tw@\hbox{$\m@th\ifnum\skewcharcount@=\m@ne\else
   \mathchar\skewcharcount@\fi$}%                                          %5b
  \global\accentdimen@\wd@ne\global\advance\accentdimen@-\wdz@
  \global\advance\accentdimen@-\wd\tw@                                     %5c
  \global\multiply\accentdimen@\tw@
  \dimentomu@\global\advance\accentmu@\@ne                                 %5d
 \else\DN@{{\mathaccent#1{#2\mkern\accentmu@ mu}%
    \mkern-\accentmu@ mu}{}}\fi                                             %6
 \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\accentedsymbol#1#2{\csname newbox\expandafter\endcsname
  \csname\expandafter\eat@\string#1@box\endcsname
 \expandafter\setbox\csname\expandafter\eat@
  \string#1@box\endcsname\hbox{$\m@th#2$}\define
  #1{\copy\csname\expandafter\eat@\string#1@box\endcsname{}}}
\message{roots,}
\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\root{\relaxnext@
  \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\FN@\nextiv@}%
  \def\nextiv@{\ifx\next\space@\DN@. {\FN@\nextv@}\else
   \DN@.{\FN@\nextv@}\fi\next@.}%
  \def\nextv@{\ifx\next\leftroot\let\next@\nextvi@\else
   \let\next@\plainroot@\fi\next@}%
  \def\nextvi@\leftroot##1{\leftroot@##1\relax\plainroot@}%
   \def\nextiii@\leftroot##1{\leftroot@##1\relax\FN@\nextvii@}%
  \def\nextvii@{\ifx\next\space@
   \DN@. {\FN@\nextviii@}\else
   \DN@.{\FN@\nextviii@}\fi\next@.}%
  \def\nextviii@{\ifx\next\uproot\let\next@\nextix@\else
   \let\next@\plainroot@\fi\next@}%
  \def\nextix@\uproot##1{\uproot@##1\relax\plainroot@}%
  \bgroup\uproot@\z@\leftroot@\z@\FN@\next@}
\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@ne\hbox{$\m@th#1\mskip\uproot@ mu$}\advance\dimen@ 1.667\wd@ne
 \mkern-\leftroot@ mu\mkern5mu\raise.6\dimen@\copy\rootbox
 \mkern-10mu\mkern\leftroot@ mu\boxz@}
\def\boxed#1{\setboxz@h{$\m@th\displaystyle{#1}$}\[email protected]\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@}%
 }}}
\message{commutative diagrams,}
\let\ampersand@\relax
\newdimen\minaw@
\[email protected]\ex@
\newdimen\minCDaw@
\[email protected]
\def\minCDarrowwidth#1{\RIfMIfI@\onlydmatherr@\minCDarrowwidth
 \else\minCDaw@#1\relax\fi\else\onlydmatherr@\minCDarrowwidth\fi}
\newif\ifCD@
\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}
\newdimen\bigaw@
\atdef@>#1>#2>{\ampersand@                                                  %1
 \setboxz@h{$\m@th\ssize\;{#1}\;\;$}%                                       %2
 \setbox@ne\hbox{$\m@th\ssize\;{#2}\;\;$}%                                  %3
 \setbox\tw@\hbox{$\m@th#2$}%                                               %4
 \ifCD@\global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi                 %5
 \ifdim\wdz@>\bigaw@\global\bigaw@\wdz@\fi
 \ifdim\wd@ne>\bigaw@\global\bigaw@\wd@ne\fi                                %6
 \ifCD@\enskip\fi                                                           %7
 \ifdim\wd\tw@>\z@
  \mathrel{\mathop{\hbox to\bigaw@{\rightarrowfill@\displaystyle}}%
    \limits^{#1}_{#2}}%                                                     %8
 \else\mathrel{\mathop{\hbox to\bigaw@{\rightarrowfill@\displaystyle}}%
    \limits^{#1}}\fi                                                        %9
 \ifCD@\enskip\fi                                                          %10
 \ampersand@}                                                              %11
\atdef@<#1<#2<{\ampersand@\setboxz@h{$\m@th\ssize\;\;{#1}\;$}%
 \setbox@ne\hbox{$\m@th\ssize\;\;{#2}\;$}\setbox\tw@\hbox{$\m@th#2$}%
 \ifCD@\global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi
 \ifdim\wdz@>\bigaw@\global\bigaw@\wdz@\fi
 \ifdim\wd@ne>\bigaw@\global\bigaw@\wd@ne\fi
 \ifCD@\enskip\fi
 \ifdim\wd\tw@>\z@
  \mathrel{\mathop{\hbox to\bigaw@{\leftarrowfill@\displaystyle}}%
       \limits^{#1}_{#2}}\else
  \mathrel{\mathop{\hbox to\bigaw@{\leftarrowfill@\displaystyle}}%
       \limits^{#1}}\fi
 \ifCD@\enskip\fi\ampersand@}
\begingroup
 \catcode`\~=\active \lccode`\~=`\@
 \lowercase{%
  \global\atdef@)#1)#2){~>#1>#2>}
  \global\atdef@(#1(#2({~<#1<#2<}}
\endgroup
\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@={&\enskip\mathrel
 {\vbox{\hrule width\minCDaw@\vskip3\ex@\hrule width
 \minCDaw@}}\enskip&}
\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}}
\message{poor man's bold,}
\def\pmb{\RIfM@\expandafter\mathpalette\expandafter\pmb@\else
 \expandafter\pmb@@\fi}
\def\pmb@@#1{\leavevmode\setboxz@h{#1}%
   \dimen@-\wdz@
   \kern-.5\ex@\copy\z@
   \kern\dimen@\kern.25\ex@\raise.4\ex@\copy\z@
   \kern\dimen@\kern.25\ex@\box\z@
}
\def\binrel@@#1{\ifdim\wd2<\z@\mathbin{#1}\else\ifdim\wd\tw@>\z@
 \mathrel{#1}\else{#1}\fi\fi}
\newdimen\pmbraise@
%      Note: because of the use of \mathpalette, if \pmb@ is
%      applied to a single math italic character (or a single
%      character from some other slanted math font), the italic
%      correction will be added.  This will cause subscripts
%      to fall too far away from the character in some
%      cases, e.g., $\pmb{T}_1$ or $\pmb{\Cal T}_1$.
\def\pmb@#1#2{\setbox\thr@@\hbox{$\m@th#1{#2}$}%
 \setbox4\hbox{$\m@th#1\mkern.5mu$}\pmbraise@\wd4\relax
 \binrel@{#2}%
 \dimen@-\wd\thr@@
   \binrel@@{%
   \mkern-.8mu\copy\thr@@
   \kern\dimen@\mkern.4mu\raise\pmbraise@\copy\thr@@
   \kern\dimen@\mkern.4mu\box\thr@@
}}
\def\documentstyle#1{\W@{}\input #1.sty\relax}
\message{syntax check,}
\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\fontlist@{\\{\tenrm}\\{\sevenrm}\\{\fiverm}\\{\teni}\\{\seveni}%
 \\{\fivei}\\{\tensy}\\{\sevensy}\\{\fivesy}\\{\tenex}\\{\tenbf}\\{\sevenbf}%
 \\{\fivebf}\\{\tensl}\\{\tenit}}
\def\font@#1=#2 {\rightappend@#1\to\fontlist@\font#1=#2 }
\def\dodummy@{{\def\\##1{\global\let##1\dummyft@}\fontlist@}}
\def\nopages@{\output{\setbox\z@\box\@cclv \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                                           %1
 \dummyft@\tracinglostchars\z@\nopages@\frenchspacing\hbadness\@M}
\def\first@#1#2\end{#1}
\def\printoptions{\W@{Do you want S(yntax check),
  G(alleys) or P(ages)?}%
 \message{Type S, G or P, followed by <return>: }%
 \begingroup % to localize the following change to \endlinechar:
 \endlinechar\m@ne % to prevent a space or \par in \ans@ from ^^M
 \read\m@ne to\ans@
%  Define \ans@ to uppercase itself, and default to P if the user
%  just pressed <return>.
 \edef\ans@{\uppercase{\def\noexpand\ans@{%
   \expandafter\first@\ans@ P\end}}}%
%  Cast the new definition of \ans@ outside the group
 \expandafter\endgroup\ans@
 \if\ans@ P% fine, no action needs to be taken
 \else \if\ans@ S\syntax
 \else \if\ans@ G\galleys
 \else\message{? Unknown option: \ans@; using the `pages' option.}%
 \fi\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
 \ifalloc@\wlog{\string#5=\string#2\the\allocationnumber}\fi}
\def\document{\def\alloclist@{}\def\fontlist@{}}
\let\enddocument\bye
\let\plainproclaim\proclaim
\let\plainfootnote\footnote
\let\proclaim\undefined
\let\footnote\undefined
\let\=\undefined
\let\>\undefined
\let\cal\undefined
\let\mit\undefined
\let\oldstyle\undefined
\catcode`\@=\active
\message{... finished}
\endinput

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].