home *** CD-ROM | disk | FTP | other *** search
/ Atari FTP / ATARI_FTP_0693.zip / ATARI_FTP_0693 / Tex / Tex31 / inputs.lzh / amstex.tex < prev    next >
Text File  |  1990-07-01  |  78KB  |  1,782 lines

  1. % AMSTEX.TEX                    February 1990
  2. %
  3. % This file contains the AMS-TeX Version 2.0 macro package.
  4. % American Mathematical Society, Technical Support Group, P. O. Box 6248,
  5. %        Providence, RI 02940
  6. % 800-321-4AMS or 401-455-4080;  Internet: Tech-Support@Math.AMS.com
  7. %
  8. % Copyright (C) 1990, American Mathematical Society.
  9. % All rights reserved.  Copying of this file is authorized only if either:
  10. %    (1) you make absolutely no changes to your copy including name; OR
  11. %    (2) if you do make changes, you first rename it to some other name.
  12. \def\fmtname{AmS-TeX}
  13. \let\plainfmtversion\fmtversion
  14. \def\fmtversion{2.0}
  15. \catcode`\@=11
  16. \ifx\amstexloaded@\relax\catcode`\@=\active
  17.  \endinput\else\let\amstexloaded@\relax\fi
  18. \def\W@{\immediate\write\sixt@@n}
  19. \def\CR@{\W@{}\W@{AmS-TeX - Version \fmtversion}\W@{}
  20. \W@{COPYRIGHT 1985, 1990 - AMERICAN MATHEMATICAL SOCIETY}
  21. \W@{Use of this macro package is not restricted provided}
  22. \W@{each use is acknowledged upon publication.}\W@{}}
  23. \CR@
  24. \everyjob{\CR@}
  25. \toksdef\toks@@=2
  26. \long\def\rightappend@#1\to#2{\toks@{\\{#1}}\toks@@
  27.  =\expandafter{#2}\xdef#2{\the\toks@@\the\toks@}\toks@{}\toks@@{}}
  28. \def\alloclist@{}
  29. \newif\ifalloc@
  30. \def\showallocations{{\def\\{\immediate\write\m@ne}\alloclist@}\alloc@true}
  31. \def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne
  32.  \ch@ck#1#4#2\allocationnumber=\count1#1
  33.  \global#3#5=\allocationnumber
  34.  \edef\next@{\string#5=\string#2\the\allocationnumber}%
  35.  \expandafter\rightappend@\next@\to\alloclist@}
  36. \newcount\count@@
  37. \newcount\count@@@
  38. \def\FN@{\futurelet\next}
  39. \def\DN@{\def\next@}
  40. \def\DNii@{\def\nextii@}
  41. \def\RIfM@{\relax\ifmmode}
  42. \def\RIfMIfI@{\relax\ifmmode\ifinner}
  43. \def\setboxz@h{\setbox\z@\hbox}
  44. \def\wdz@{\wd\z@}
  45. \def\boxz@{\box\z@}
  46. \def\setbox@ne{\setbox\@ne}
  47. \def\wd@ne{\wd\@ne}
  48. \def\iterate{\body\expandafter\iterate\else\fi}
  49. \newlinechar=`\^^J
  50. \def\err@#1{\errmessage{AmS-TeX error: #1}}
  51. \newhelp\defaulthelp@{Sorry, I already gave what help I could...^^J
  52. Maybe you should try asking a human?^^J
  53. An error might have occurred before I noticed any problems.^^J
  54. ``If all else fails, read the instructions.''}
  55. \def\Err@#1{\errhelp\defaulthelp@\errmessage{AmS-TeX error: #1}}
  56. \def\eat@#1{}
  57. \def\in@#1#2{\def\in@@##1#1##2##3\in@@{\ifx\in@##2\in@false\else\in@true\fi}%
  58.  \in@@#2#1\in@\in@@}
  59. \newif\ifin@
  60. \def\space@.{\futurelet\space@\relax}
  61. \space@. %
  62. \newhelp\athelp@
  63. {Only certain combinations beginning with @ make sense to me.^^J
  64. Perhaps you wanted \string\@\space for a printed @?^^J
  65. I've ignored the character or group after @.}
  66. \def\futureletnextat@{\futurelet\next\at@}
  67. {\catcode`\@=\active
  68. \lccode`\Z=`\@ \lccode`\I=`\I \lowercase{%
  69. \gdef@{\csname futureletnextatZ\endcsname}%                                 %1
  70. \expandafter\gdef\csname atZ\endcsname                                      %2
  71.  {\ifcat\noexpand\next a\def\next{\csname atZZ\endcsname}\else
  72.  \ifcat\noexpand\next0\def\next{\csname atZZ\endcsname}\else
  73.  \ifcat\noexpand\next\relax\def\next{\csname atZZZ\endcsname}\else
  74.  \def\next{\csname atZZZZ\endcsname}\fi\fi\fi\next}
  75. \expandafter\gdef\csname atZZ\endcsname#1{\expandafter                      %3
  76.  \ifx\csname #1Zat\endcsname\relax\def\next
  77.  {\errhelp\expandafter=\csname athelpZ\endcsname
  78.  \csname errZ\endcsname{Invalid use of \string@}}\else
  79.  \def\next{\csname #1Zat\endcsname}\fi\next}
  80. \expandafter\gdef\csname atZZZ\endcsname#1{\expandafter                     %4
  81.  \ifx\csname \string#1ZZat\endcsname\relax\def\next
  82.  {\errhelp\expandafter=\csname athelpZ\endcsname
  83.  \csname errZ\endcsname{Invalid use of \string@}}\else
  84.  \def\next{\csname \string#1ZZat\endcsname}\fi\next}
  85. \expandafter\gdef\csname atZZZZ\endcsname#1{\errhelp                        %5
  86.  \expandafter=\csname athelpZ\endcsname
  87.  \csname errZ\endcsname{Invalid use of \string@}}}}                         %6
  88. \def\atdef@#1{\expandafter\def\csname #1@at\endcsname}
  89. \def\atdef@@#1{\expandafter\def\csname \string#1@@at\endcsname}
  90. \newhelp\defahelp@{If you typed \string\define\space cs instead of
  91. \string\define\string\cs\space^^J
  92. I've substituted an inaccessible control sequence so that your^^J
  93. definition will be completed without mixing me up too badly.^^J
  94. If you typed \string\define{\string\cs} the inaccessible control sequence^^J
  95. was defined to be \string\cs, and the rest of your^^J
  96. definition appears as input.}
  97. \newhelp\defbhelp@{I've ignored your definition, because it might^^J
  98. conflict with other uses that are important to me.}
  99. \def\define{\FN@\define@}
  100. \def\define@{\ifcat\noexpand\next\relax
  101.  \expandafter\define@@\else\errhelp\defahelp@                               %1
  102.  \err@{\string\define\space must be followed by a control
  103.  sequence}\expandafter\def\expandafter\nextii@\fi}                          %2
  104. \def\undefined@@@@@@@@@@{}
  105. \def\preloaded@@@@@@@@@@{}
  106. \def\next@@@@@@@@@@{}
  107. \def\define@@#1{\ifx#1\relax\errhelp\defbhelp@                              %1
  108.  \err@{\string#1\space is already defined}\DN@{\DNii@}\else
  109.  \expandafter\ifx\csname\expandafter\eat@\string                            %2
  110.  #1@@@@@@@@@@\endcsname\undefined@@@@@@@@@@\errhelp\defbhelp@
  111.  \err@{\string#1\space can't be defined}\DN@{\DNii@}\else
  112.  \expandafter\ifx\csname\expandafter\eat@\string#1\endcsname\relax          %3
  113.  \global\let#1\undefined\DN@{\def#1}\else\errhelp\defbhelp@
  114.  \err@{\string#1\space is already defined}\DN@{\DNii@}\fi
  115.  \fi\fi\next@}
  116. \let\redefine\def
  117. \def\predefine#1#2{\let#1#2}
  118. \def\undefine#1{\let#1\undefined}
  119. \newdimen\captionwidth@
  120. \captionwidth@\hsize
  121. \advance\captionwidth@-1.5in
  122. \def\pagewidth#1{\hsize#1\relax
  123.  \captionwidth@\hsize\advance\captionwidth@-1.5in}
  124. \def\pageheight#1{\vsize#1\relax}
  125. \def\hcorrection#1{\advance\hoffset#1\relax}
  126. \def\vcorrection#1{\advance\voffset#1\relax}
  127. \def\tie{\unskip\nobreak\ }
  128. \let\graveaccent\`
  129. \let\acuteaccent\'
  130. \let\tildeaccent\~
  131. \let\hataccent\^
  132. \let\underscore\_
  133. \let\B\=
  134. \let\D\.
  135. \let\ic@\/
  136. \def\/{\unskip\ic@}
  137. \def\textfonti{\the\textfont\@ne}
  138. \def\t#1#2{{\edef\next@{\the\font}\textfonti\accent"7F \next@#1#2}}
  139. \def~{\unskip\nobreak\ \ignorespaces}
  140. \def\.{.\spacefactor\@m}
  141. \atdef@;{\leavevmode\null;}
  142. \atdef@:{\leavevmode\null:}
  143. \atdef@?{\leavevmode\null?}
  144. \def\@{\char64 }
  145. \def\relaxnext@{\let\next\relax}
  146. \atdef@-{\relaxnext@\leavevmode
  147.  \DN@{\ifx\next-\DN@-{\FN@\nextii@}\else
  148.   \DN@{\leavevmode\hbox{-}}\fi\next@}%
  149.  \DNii@{\ifx\next-\DN@-{\leavevmode\hbox{---}}\else
  150.   \DN@{\leavevmode\hbox{--}}\fi\next@}%
  151.  \FN@\next@}
  152. \def\srdr@{\kern.16667em}
  153. \def\drsr@{\kern.02778em}
  154. \def\sldl@{\kern.02778em}
  155. \def\dlsl@{\kern.16667em}
  156. \atdef@"{\unskip\relaxnext@
  157.  \DN@{\ifx\next\space@\DN@. {\FN@\nextii@}\else
  158.   \DN@.{\FN@\nextii@}\fi\next@.}%
  159.  \DNii@{\ifx\next`\DN@`{\FN@\nextiii@}\else
  160.   \ifx\next\lq\DN@\lq{\FN@\nextiii@}\else
  161.   \DN@####1{\FN@\nextiv@}\fi\fi\next@}%
  162.  \def\nextiii@{\ifx\next`\DN@`{\sldl@``}\else\ifx\next\lq
  163.   \DN@\lq{\sldl@``}\else\DN@{\dlsl@`}\fi\fi\next@}%
  164.  \def\nextiv@{\ifx\next'\DN@'{\srdr@''}\else
  165.   \ifx\next\rq\DN@\rq{\srdr@''}\else\DN@{\drsr@'}\fi\fi\next@}%
  166.  \FN@\next@}
  167. \def\flushpar{\par\noindent}
  168. \def\textfontii{\the\textfont\tw@}
  169. \def\lbrace@{\delimiter"4266308 }
  170. \def\rbrace@{\delimiter"5267309 }
  171. \def\{{\RIfM@\lbrace@\else{\textfontii f}\spacefactor\@m\fi}
  172. \def\}{\RIfM@\rbrace@\else
  173.  \let\@sf\empty\ifhmode\edef\@sf{\spacefactor\the\spacefactor}\fi
  174.  {\textfontii g}\@sf\relax\fi}
  175. \let\lbrace\{
  176. \let\rbrace\}
  177. \def\AmSTeX{{\textfontii A}\kern-.1667em\lower.5ex\hbox
  178.  {\textfontii M}\kern-.125em{\textfontii S}-\TeX}
  179. \def\vmodeerr@#1{\Err@{\string#1\space not allowed between paragraphs}}
  180. \def\mathmodeerr@#1{\Err@{\string#1\space not allowed in math mode}}
  181. \def\linebreak{\RIfM@\mathmodeerr@\linebreak\else
  182.  \ifhmode\unskip\unkern\break\else\vmodeerr@\linebreak\fi\fi}
  183. \def\slash{\unskip/\penalty\exhyphenpenalty}
  184. \newskip\saveskip@
  185. \def\allowlinebreak{\RIfM@\mathmodeerr@\allowlinebreak\else
  186.  \ifhmode\saveskip@\lastskip\unskip
  187.  \allowbreak\ifdim\saveskip@>\z@\hskip\saveskip@\fi
  188.  \else\vmodeerr@\allowlinebreak\fi\fi}
  189. \def\nolinebreak{\RIfM@\mathmodeerr@\nolinebreak\else
  190.  \ifhmode\saveskip@\lastskip\unskip
  191.  \nobreak\ifdim\saveskip@>\z@\hskip\saveskip@\fi
  192.  \else\vmodeerr@\nolinebreak\fi\fi}
  193. \def\newline{\relaxnext@
  194.  \DN@{\RIfM@\expandafter\mathmodeerr@\expandafter\newline\else
  195.   \ifhmode\ifx\next\par\else
  196.   \expandafter\unskip\expandafter\null\expandafter\hfill\expandafter\break\fi
  197.   \else
  198.   \expandafter\vmodeerr@\expandafter\newline\fi\fi}%
  199.  \FN@\next@}
  200. \def\dmatherr@#1{\Err@{\string#1\space not allowed in display math mode}}
  201. \def\nondmatherr@#1{\Err@{\string#1\space not allowed in non-display math
  202.  mode}}
  203. \def\onlydmatherr@#1{\Err@{\string#1\space allowed only in display math mode}}
  204. \def\nonmatherr@#1{\Err@{\string#1\space allowed only in math mode}}
  205. \def\mathbreak{\RIfMIfI@\break\else
  206.  \dmatherr@\mathbreak\fi\else\nonmatherr@\mathbreak\fi}
  207. \def\nomathbreak{\RIfMIfI@\nobreak\else
  208.  \dmatherr@\nomathbreak\fi\else\nonmatherr@\nomathbreak\fi}
  209. \def\allowmathbreak{\RIfMIfI@\allowbreak\else
  210.  \dmatherr@\allowmathbreak\fi\else\nonmatherr@\allowmathbreak\fi}
  211. \def\pagebreak{\RIfM@
  212.  \ifinner\nondmatherr@\pagebreak\else\postdisplaypenalty-\@M\fi
  213.  \else\ifvmode\removelastskip\break\else\vadjust{\break}\fi\fi}
  214. \def\nopagebreak{\RIfM@
  215.  \ifinner\nondmatherr@\nopagebreak\else\postdisplaypenalty\@M\fi
  216.  \else\ifvmode\nobreak\else\vadjust{\nobreak}\fi\fi}
  217. \def\nonvmodeerr@#1{\Err@{\string#1\space not allowed within a paragraph
  218.  or in math}}
  219. \def\vnonvmode@#1#2{\relaxnext@\DNii@{\ifx\next\par\DN@{#1}\else
  220.  \DN@{#2}\fi\next@}%
  221.  \ifvmode\DN@{#1}\else
  222.  \DN@{\FN@\nextii@}\fi\next@}
  223. \def\newpage{\vnonvmode@{\vfill\break}{\nonvmodeerr@\newpage}}
  224. \def\smallpagebreak{\vnonvmode@\smallbreak{\nonvmodeerr@\smallpagebreak}}
  225. \def\medpagebreak{\vnonvmode@\medbreak{\nonvmodeerr@\medpagebreak}}
  226. \def\bigpagebreak{\vnonvmode@\bigbreak{\nonvmodeerr@\bigpagebreak}}
  227. \def\NoBlackBoxes{\global\overfullrule\z@}
  228. \def\BlackBoxes{\global\overfullrule5\p@}
  229. \def\Invalid@#1{\def#1{\Err@{\Invalid@@\string#1}}}
  230. \def\Invalid@@{Invalid use of }
  231. \Invalid@\caption
  232. \Invalid@\captionwidth
  233. \newdimen\smallcaptionwidth@
  234. \def\topspace{\mid@false\ins@}
  235. \def\midspace{\mid@true\ins@}
  236. \newif\ifmid@
  237. \def\captionfont@{}
  238. \def\ins@#1{\relaxnext@\allowbreak
  239.  \smallcaptionwidth@\captionwidth@\gdef\thespace@{#1}%
  240.  \DN@{\ifx\next\space@\DN@. {\FN@\nextii@}\else
  241.   \DN@.{\FN@\nextii@}\fi\next@.}%
  242.  \DNii@{\ifx\next\caption\DN@\caption{\FN@\nextiii@}%
  243.   \else\let\next@\nextiv@\fi\next@}%
  244.  \def\nextiv@{\vnonvmode@
  245.   {\ifmid@\expandafter\midinsert\else\expandafter\topinsert\fi
  246.    \vbox to\thespace@{}\endinsert}
  247.   {\ifmid@\nonvmodeerr@\midspace\else\nonvmodeerr@\topspace\fi}}%
  248.  \def\nextiii@{\ifx\next\captionwidth\expandafter\nextv@
  249.   \else\expandafter\nextvi@\fi}%
  250.  \def\nextv@\captionwidth##1##2{\smallcaptionwidth@##1\relax\nextvi@{##2}}%
  251.  \def\nextvi@##1{\def\thecaption@{\captionfont@##1}%
  252.   \DN@{\ifx\next\space@\DN@. {\FN@\nextvii@}\else
  253.    \DN@.{\FN@\nextvii@}\fi\next@.}%
  254.   \FN@\next@}%
  255.  \def\nextvii@{\vnonvmode@
  256.   {\ifmid@\expandafter\midinsert\else
  257.   \expandafter\topinsert\fi\vbox to\thespace@{}\nobreak\smallskip
  258.   \setboxz@h{\noindent\ignorespaces\thecaption@\unskip}%
  259.   \ifdim\wdz@>\smallcaptionwidth@\centerline{\vbox{\hsize\smallcaptionwidth@
  260.    \noindent\ignorespaces\thecaption@\unskip}}%
  261.   \else\centerline{\boxz@}\fi\endinsert}
  262.   {\ifmid@\nonvmodeerr@\midspace
  263.   \else\nonvmodeerr@\topspace\fi}}%
  264.  \FN@\next@}
  265. \def\newcodes@{\catcode`\\=12 \catcode`\{=12 \catcode`\}=12 \catcode`\#=12
  266.  \catcode`\%=12\relax}
  267. \def\oldcodes@{\catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\#=6
  268.  \catcode`\%=14\relax}
  269. \def\comment{\newcodes@\endlinechar=10 \comment@}
  270. {\lccode`\0=`\\
  271. \lowercase{\gdef\comment@#1^^J{\comment@@#10endcomment\comment@@@}%
  272. \gdef\comment@@#10endcomment{\FN@\comment@@@}%
  273. \gdef\comment@@@#1\comment@@@{\ifx\next\comment@@@\let\next\comment@
  274.  \else\def\next{\oldcodes@\endlinechar=`\^^M\relax}%
  275.  \fi\next}}}
  276. \def\pr@m@s{\ifx'\next\DN@##1{\prim@s}\else\let\next@\egroup\fi\next@}
  277. \def\prime{{\null\prime@\null}}
  278. \mathchardef\prime@="0230
  279. \let\dsize\displaystyle
  280. \let\tsize\textstyle
  281. \let\ssize\scriptstyle
  282. \let\sssize\scriptscriptstyle
  283. \def\,{\RIfM@\mskip\thinmuskip\relax\else\kern.16667em\fi}
  284. \def\!{\RIfM@\mskip-\thinmuskip\relax\else\kern-.16667em\fi}
  285. \let\thinspace\,
  286. \let\negthinspace\!
  287. \def\medspace{\RIfM@\mskip\medmuskip\relax\else\kern.222222em\fi}
  288. \def\negmedspace{\RIfM@\mskip-\medmuskip\relax\else\kern-.222222em\fi}
  289. \def\thickspace{\RIfM@\mskip\thickmuskip\relax\else\kern.27777em\fi}
  290. \let\;\thickspace
  291. \def\negthickspace{\RIfM@\mskip-\thickmuskip\relax\else
  292.  \kern-.27777em\fi}
  293. \atdef@,{\RIfM@\mskip.1\thinmuskip\else\leavevmode\null,\fi}
  294. \atdef@!{\RIfM@\mskip-.1\thinmuskip\else\leavevmode\null!\fi}
  295. \atdef@.{\RIfM@&&\else\leavevmode.\spacefactor3000 \fi}
  296. \def\and{\DOTSB\;\mathchar"3026 \;}
  297. \def\implies{\DOTSB\;\Longrightarrow\;}
  298. \def\impliedby{\DOTSB\;\Longleftarrow\;}
  299. \def\frac#1#2{{#1\over#2}}
  300. \def\dfrac#1#2{{\displaystyle{#1\over#2}}}
  301. \def\tfrac#1#2{{\textstyle{#1\over#2}}}
  302. \newdimen\ex@
  303. \ex@.2326ex
  304. \Invalid@\thickness
  305. \def\thickfrac{\relaxnext@
  306.  \DN@{\ifx\next\thickness\let\next@\nextii@\else
  307.  \DN@{\nextii@\thickness1}\fi\next@}%
  308.  \DNii@\thickness##1##2##3{{##2\above##1\ex@##3}}%
  309.  \FN@\next@}
  310. \def\fracwithdelims#1#2#3#4{{#3\overwithdelims#1#2#4}}
  311. \def\thickfracwithdelims#1#2{\relaxnext@\def\ldelim@{#1}\def\rdelim@{#2}%
  312.  \DN@{\ifx\next\thickness\let\next@\nextii@\else
  313.  \DN@{\nextii@\thickness1}\fi\next@}%
  314.  \DNii@\thickness##1##2##3{{##2\abovewithdelims
  315.  \ldelim@\rdelim@##1\ex@##3}}%
  316.  \FN@\next@}
  317. \def\binom#1#2{{#1\choose#2}}
  318. \def\dbinom#1#2{{\displaystyle{#1\choose#2}}}
  319. \def\tbinom#1#2{{\textstyle{#1\choose#2}}}
  320. \def\:{\nobreak\hskip.1111em\mathpunct{}\nonscript\mkern-\thinmuskip{:}\hskip
  321.  .3333emplus.0555em\relax}
  322. \def\snug{\unskip\kern-\mathsurround}
  323. \def\topsmash{\top@true\bot@false\smash@}
  324. \def\botsmash{\top@false\bot@true\smash@}
  325. \newif\iftop@
  326. \newif\ifbot@
  327. \def\smash{\top@true\bot@true\smash@}
  328. \def\smash@{\RIfM@\expandafter\mathpalette\expandafter\mathsm@sh\else
  329.  \expandafter\makesm@sh\fi}
  330. \def\finsm@sh{\iftop@\ht\z@\z@\fi\ifbot@\dp\z@\z@\fi\leavevmode\boxz@}
  331. \def\LimitsOnSums{\global\let\slimits@\displaylimits}
  332. \def\NoLimitsOnSums{\global\let\slimits@\nolimits}
  333. \LimitsOnSums
  334. \mathchardef\coprod@="1360       \def\coprod{\DOTSB\coprod@\slimits@}
  335. \mathchardef\bigvee@="1357       \def\bigvee{\DOTSB\bigvee@\slimits@}
  336. \mathchardef\bigwedge@="1356     \def\bigwedge{\DOTSB\bigwedge@\slimits@}
  337. \mathchardef\biguplus@="1355     \def\biguplus{\DOTSB\biguplus@\slimits@}
  338. \mathchardef\bigcap@="1354       \def\bigcap{\DOTSB\bigcap@\slimits@}
  339. \mathchardef\bigcup@="1353       \def\bigcup{\DOTSB\bigcup@\slimits@}
  340. \mathchardef\prod@="1351         \def\prod{\DOTSB\prod@\slimits@}
  341. \mathchardef\sum@="1350          \def\sum{\DOTSB\sum@\slimits@}
  342. \mathchardef\bigotimes@="134E    \def\bigotimes{\DOTSB\bigotimes@\slimits@}
  343. \mathchardef\bigoplus@="134C     \def\bigoplus{\DOTSB\bigoplus@\slimits@}
  344. \mathchardef\bigodot@="134A      \def\bigodot{\DOTSB\bigodot@\slimits@}
  345. \mathchardef\bigsqcup@="1346     \def\bigsqcup{\DOTSB\bigsqcup@\slimits@}
  346. \def\LimitsOnInts{\global\let\ilimits@\displaylimits}
  347. \def\NoLimitsOnInts{\global\let\ilimits@\nolimits}
  348. \NoLimitsOnInts
  349. \def\int{\DOTSI\intop\ilimits@}
  350. \def\oint{\DOTSI\ointop\ilimits@}
  351. \def\intic@{\mathchoice{\hskip.5em}{\hskip.4em}{\hskip.4em}{\hskip.4em}}
  352. \def\negintic@{\mathchoice
  353.  {\hskip-.5em}{\hskip-.4em}{\hskip-.4em}{\hskip-.4em}}
  354. \def\intkern@{\mathchoice{\!\!\!}{\!\!}{\!\!}{\!\!}}
  355. \def\intdots@{\mathchoice{\plaincdots@}
  356.  {{\cdotp}\mkern1.5mu{\cdotp}\mkern1.5mu{\cdotp}}
  357.  {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}
  358.  {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}}
  359. \newcount\intno@
  360. \def\iint{\DOTSI\intno@\tw@\FN@\ints@}
  361. \def\iiint{\DOTSI\intno@\thr@@\FN@\ints@}
  362. \def\iiiint{\DOTSI\intno@4 \FN@\ints@}
  363. \def\idotsint{\DOTSI\intno@\z@\FN@\ints@}
  364. \def\ints@{\findlimits@\ints@@}
  365. \newif\iflimtoken@
  366. \newif\iflimits@
  367. \def\findlimits@{\limtoken@true\ifx\next\limits\limits@true
  368.  \else\ifx\next\nolimits\limits@false\else
  369.  \limtoken@false\ifx\ilimits@\nolimits\limits@false\else
  370.  \ifinner\limits@false\else\limits@true\fi\fi\fi\fi}
  371. \def\multint@{\int\ifnum\intno@=\z@\intdots@                                %1
  372.  \else\intkern@\fi                                                          %2
  373.  \ifnum\intno@>\tw@\int\intkern@\fi                                         %3
  374.  \ifnum\intno@>\thr@@\int\intkern@\fi                                       %4
  375.  \int}                                                                      %5
  376. \def\multintlimits@{\intop\ifnum\intno@=\z@\intdots@\else\intkern@\fi
  377.  \ifnum\intno@>\tw@\intop\intkern@\fi
  378.  \ifnum\intno@>\thr@@\intop\intkern@\fi\intop}
  379. \def\ints@@{\iflimtoken@                                                    %1
  380.  \def\ints@@@{\iflimits@\negintic@\mathop{\intic@\multintlimits@}\limits    %2
  381.   \else\multint@\nolimits\fi                                                %3
  382.   \eat@}                                                                    %4
  383.  \else                                                                      %5
  384.  \def\ints@@@{\iflimits@\negintic@
  385.   \mathop{\intic@\multintlimits@}\limits\else
  386.   \multint@\nolimits\fi}\fi\ints@@@}
  387. \def\LimitsOnNames{\global\let\nlimits@\displaylimits}
  388. \def\NoLimitsOnNames{\global\let\nlimits@\nolimits@}
  389. \LimitsOnNames
  390. \def\nolimits@{\relaxnext@
  391.  \DN@{\ifx\next\limits\DN@\limits{\nolimits}\else
  392.   \let\next@\nolimits\fi\next@}%
  393.  \FN@\next@}
  394. \def\newmcodes@{\mathcode`\'="0027 \mathcode`\*="002A \mathcode`\.="613A
  395.  \mathcode`\-="002D \mathcode`\/="002F \mathcode`\:="603A }
  396. \def\operatorname#1{\mathop{\newmcodes@\kern\z@\fam\z@#1}\nolimits@}
  397. \def\operatornamewithlimits#1{\mathop{\newmcodes@\kern\z@\fam\z@#1}\nlimits@}
  398. \def\qopname@#1{\mathop{\fam\z@#1}\nolimits@}
  399. \def\qopnamewl@#1{\mathop{\fam\z@#1}\nlimits@}
  400. \def\arccos{\qopname@{arccos}}
  401. \def\arcsin{\qopname@{arcsin}}
  402. \def\arctan{\qopname@{arctan}}
  403. \def\arg{\qopname@{arg}}
  404. \def\cos{\qopname@{cos}}
  405. \def\cosh{\qopname@{cosh}}
  406. \def\cot{\qopname@{cot}}
  407. \def\coth{\qopname@{coth}}
  408. \def\csc{\qopname@{csc}}
  409. \def\deg{\qopname@{deg}}
  410. \def\det{\qopnamewl@{det}}
  411. \def\dim{\qopname@{dim}}
  412. \def\exp{\qopname@{exp}}
  413. \def\gcd{\qopnamewl@{gcd}}
  414. \def\hom{\qopname@{hom}}
  415. \def\inf{\qopnamewl@{inf}}
  416. \def\injlim{\qopnamewl@{inj\,lim}}
  417. \def\ker{\qopname@{ker}}
  418. \def\lg{\qopname@{lg}}
  419. \def\lim{\qopnamewl@{lim}}
  420. \def\liminf{\qopnamewl@{lim\,inf}}
  421. \def\limsup{\qopnamewl@{lim\,sup}}
  422. \def\ln{\qopname@{ln}}
  423. \def\log{\qopname@{log}}
  424. \def\max{\qopnamewl@{max}}
  425. \def\min{\qopnamewl@{min}}
  426. \def\Pr{\qopnamewl@{Pr}}
  427. \def\projlim{\qopnamewl@{proj\,lim}}
  428. \def\sec{\qopname@{sec}}
  429. \def\sin{\qopname@{sin}}
  430. \def\sinh{\qopname@{sinh}}
  431. \def\sup{\qopnamewl@{sup}}
  432. \def\tan{\qopname@{tan}}
  433. \def\tanh{\qopname@{tanh}}
  434. \def\varinjlim{\mathop{\vtop{\ialign{##\crcr
  435.  \hfil\rm lim\hfil\crcr\noalign{\nointerlineskip}\rightarrowfill\crcr
  436.  \noalign{\nointerlineskip\kern-\ex@}\crcr}}}}
  437. \def\varprojlim{\mathop{\vtop{\ialign{##\crcr
  438.  \hfil\rm lim\hfil\crcr\noalign{\nointerlineskip}\leftarrowfill\crcr
  439.  \noalign{\nointerlineskip\kern-\ex@}\crcr}}}}
  440. \def\varliminf{\mathop{\underline{\vrule height\z@ depth.2exwidth\z@
  441.  \hbox{\rm lim}}}}
  442. \def\varlimsup{\mathop{\overline{\hbox{\rm lim}}}}
  443. \newdimen\buffer@
  444. \buffer@\fontdimen13 \tenex
  445. \newdimen\buffer
  446. \buffer\buffer@
  447. \def\ChangeBuffer#1{\fontdimen13 \tenex#1\relax
  448.  \global\buffer\fontdimen13 \tenex}
  449. \def\ResetBuffer{\fontdimen13 \tenex\buffer@\global\buffer\buffer@}
  450. \def\shave#1{\mathop{\hbox{$\m@th\fontdimen13 \tenex\z@                     %1
  451.  \displaystyle{#1}$}}\fontdimen13 \tenex\buffer}
  452. \def\topshave#1{\mathop{\topsmash{\displaystyle{#1}}\vphantom{\shave{#1}}}}
  453. \def\botshave#1{\mathop{\botsmash{\displaystyle{#1}}\vphantom{\shave{#1}}}}
  454. \Invalid@\\
  455. \def\Let@{\relax\iffalse{\fi\let\\=\cr\iffalse}\fi}
  456. \Invalid@\vspace
  457. \def\vspace@{\def\vspace##1{\crcr\noalign{\vskip##1\relax}}}
  458. \def\multilimits@{\bgroup\vspace@\Let@
  459.  \baselineskip\fontdimen10 \scriptfont\tw@
  460.  \advance\baselineskip\fontdimen12 \scriptfont\tw@
  461.  \lineskip\thr@@\fontdimen8 \scriptfont\thr@@
  462.  \lineskiplimit\lineskip
  463.  \vbox\bgroup\ialign\bgroup\hfil$\m@th\scriptstyle{##}$\hfil\crcr}
  464. \def\Sb{_\multilimits@}
  465. \def\endSb{\crcr\egroup\egroup\egroup}
  466. \def\Sp{^\multilimits@}
  467. \let\endSp\endSb
  468. \def\spreadlines#1{\RIfMIfI@\onlydmatherr@\spreadlines\else
  469.  \openup#1\relax\fi\else\onlydmatherr@\spreadlines\fi}
  470. \def\Mathstrut@{\copy\Mathstrutbox@}
  471. \newbox\Mathstrutbox@
  472. \setbox\Mathstrutbox@\null
  473. \setboxz@h{$\m@th($}
  474. \ht\Mathstrutbox@\ht\z@
  475. \dp\Mathstrutbox@\dp\z@
  476. \newdimen\spreadmlines@
  477. \def\spreadmatrixlines#1{\RIfMIfI@
  478.  \onlydmatherr@\spreadmatrixlines\else
  479.  \spreadmlines@#1\relax\fi\else\onlydmatherr@\spreadmatrixlines\fi}
  480. \def\matrix{\null\,\vcenter\bgroup\Let@\vspace@
  481.  \normalbaselines\openup\spreadmlines@\ialign
  482.  \bgroup\hfil$\m@th##$\hfil&&\quad\hfil$\m@th##$\hfil\crcr
  483.  \Mathstrut@\crcr\noalign{\kern-\baselineskip}}
  484. \def\endmatrix{\crcr\Mathstrut@\crcr\noalign{\kern-\baselineskip}\egroup
  485.  \egroup\,}
  486. \def\format{\crcr\egroup\iffalse{\fi\ifnum`}=0 \fi\format@}
  487. \newtoks\hashtoks@
  488. \hashtoks@{#}
  489. \def\format@#1\\{\def\preamble@{#1}%
  490.  \def\l{$\m@th\the\hashtoks@$\hfil}%
  491.  \def\c{\hfil$\m@th\the\hashtoks@$\hfil}%
  492.  \def\r{\hfil$\m@th\the\hashtoks@$}%
  493.  \edef\Preamble@{\preamble@}\ifnum`{=0 \fi\iffalse}\fi
  494.  \ialign\bgroup\span\Preamble@\crcr}
  495. \def\smallmatrix{\null\,\vcenter\bgroup\vspace@\Let@
  496.  \baselineskip9\ex@\lineskip\ex@
  497.  \ialign\bgroup\hfil$\m@th\scriptstyle{##}$\hfil&&\thickspace\hfil
  498.  $\m@th\scriptstyle{##}$\hfil\crcr}
  499. \def\endsmallmatrix{\crcr\egroup\egroup\,}
  500. \def\pmatrix{\left(\matrix}
  501. \def\endpmatrix{\endmatrix\right)}
  502. \def\bmatrix{\left[\matrix}
  503. \def\endbmatrix{\endmatrix\right]}
  504. \def\vmatrix{\left|\matrix}
  505. \def\endvmatrix{\endmatrix\right|}
  506. \def\Vmatrix{\left\|\matrix}
  507. \def\endVmatrix{\endmatrix\right\|}
  508. \def\hdots{\mathinner{\ldotp\ldotp\ldotp}}
  509. \newmuskip\dotsspace@
  510. \dotsspace@1.5mu
  511. \def\strip@#1 {#1}
  512. \def\spacehdots#1\for#2{\multispan{#2}\xleaders
  513.  \hbox{$\m@th\mkern\strip@#1 \dotsspace@.\mkern\strip@#1 \dotsspace@$}\hfill}
  514. \def\hdotsfor#1{\spacehdots\@ne\for{#1}}
  515. \def\multispan@#1{\omit\mscount#1\unskip\loop\ifnum\mscount>\@ne\sp@n\repeat}
  516. \def\spaceinnerhdots#1\for#2\after#3{\multispan@{\strip@#2 }#3\xleaders
  517.  \hbox{$\m@th\mkern\strip@#1 \dotsspace@.\mkern\strip@#1 \dotsspace@$}\hfill}
  518. \def\innerhdotsfor#1\after#2{\spaceinnerhdots\@ne\for#1\after{#2}}
  519. \def\cases{\bgroup\spreadmlines@\jot\left\{\,\matrix\format\l&\quad\l\\}
  520. \def\endcases{\endmatrix\right.\egroup}
  521. \newif\ifinany@
  522. \newif\ifinalign@
  523. \newif\ifingather@
  524. \def\strut@{\copy\strutbox@}
  525. \newbox\strutbox@
  526. \setbox\strutbox@\hbox{\vrule height8\p@ depth3\p@ width\z@}
  527. \def\topaligned{\null\,\vtop\aligned@}
  528. \def\botaligned{\null\,\vbox\aligned@}
  529. \def\aligned{\null\,\vcenter\aligned@}
  530. \def\aligned@{\bgroup\vspace@\Let@
  531.  \ifinany@\else\openup\jot\fi\ialign
  532.  \bgroup\hfil\strut@$\m@th\displaystyle{##}$&
  533.  $\m@th\displaystyle{{}##}$\hfil\crcr}
  534. \def\endaligned{\crcr\egroup\egroup}
  535. \let\endtopaligned\endaligned
  536. \let\endbotaligned\endaligned
  537. \def\alignedat#1{\null\,\vcenter\bgroup\doat@{#1}\vspace@\Let@
  538.  \ifinany@\else\openup\jot\fi\ialign\bgroup\span\preamble@@\crcr}
  539. \newcount\atcount@
  540. \def\doat@#1{\toks@{\hfil\strut@$\m@th
  541.  \displaystyle{\the\hashtoks@}$&$\m@th\displaystyle
  542.  {{}\the\hashtoks@}$\hfil}%                                                 %1
  543.  \atcount@#1\relax\advance\atcount@\m@ne                                    %2
  544.  \loop\ifnum\atcount@>\z@\toks@=\expandafter{\the\toks@&\hfil$\m@th
  545.  \displaystyle{\the\hashtoks@}$&$\m@th
  546.  \displaystyle{{}\the\hashtoks@}$\hfil}\advance
  547.   \atcount@\m@ne\repeat                                                     %3
  548.  \xdef\preamble@{\the\toks@}\xdef\preamble@@{\preamble@}}
  549. \let\endalignedat\endaligned
  550. \def\gathered{\null\,\vcenter\bgroup\vspace@\Let@
  551.  \ifinany@\else\openup\jot\fi\ialign
  552.  \bgroup\hfil\strut@$\m@th\displaystyle{##}$\hfil\crcr}
  553. \def\endgathered{\crcr\egroup\egroup}
  554. \newif\iftagsleft@
  555. \def\TagsOnLeft{\global\tagsleft@true}
  556. \def\TagsOnRight{\global\tagsleft@false}
  557. \TagsOnLeft
  558. \newif\ifmathtags@
  559. \def\TagsAsMath{\global\mathtags@true}
  560. \def\TagsAsText{\global\mathtags@false}
  561. \TagsAsText
  562. \def\tagform@#1{\hbox{\rm(\ignorespaces#1\unskip)}}
  563. \def\thetag{\leavevmode\tagform@}
  564. \def\tag#1$${\iftagsleft@\leqno\else\eqno\fi                                %1
  565.  \maketag@#1\maketag@                                                       %2
  566.  $$}                                                                        %3
  567. \def\maketag@{\FN@\maketag@@}
  568. \def\maketag@@{\ifx\next"\expandafter\maketag@@@\else\expandafter\maketag@@@@
  569.  \fi}
  570. \def\maketag@@@"#1"#2\maketag@{\hbox{\rm#1}}                                %1
  571. \def\maketag@@@@#1\maketag@{\ifmathtags@\tagform@{$\m@th#1$}\else
  572.  \tagform@{#1}\fi}
  573. \interdisplaylinepenalty\@M
  574. \def\allowdisplaybreaks{\RIfMIfI@
  575.  \onlydmatherr@\allowdisplaybreaks\else
  576.  \interdisplaylinepenalty\z@\fi\else\onlydmatherr@\allowdisplaybreaks\fi}
  577. \Invalid@\allowdisplaybreak
  578. \Invalid@\displaybreak
  579. \Invalid@\intertext
  580. \def\allowdisplaybreak@{\def\allowdisplaybreak{\crcr\noalign{\allowbreak}}}
  581. \def\displaybreak@{\def\displaybreak{\crcr\noalign{\break}}}
  582. \def\intertext@{\def\intertext##1{\crcr\noalign{\vskip\belowdisplayskip
  583.  \vbox{\normalbaselines\noindent##1}\vskip\abovedisplayskip}}}
  584. \newskip\centering@
  585. \centering@\z@ plus\@m\p@
  586. \def\align{\relax\ifingather@\DN@{\csname align (in
  587.   \string\gather)\endcsname}\else
  588.  \ifmmode\ifinner\DN@{\onlydmatherr@\align}\else
  589.   \let\next@\align@\fi
  590.  \else\DN@{\onlydmatherr@\align}\fi\fi\next@}
  591. \newhelp\andhelp@
  592. {An extra & here is so disastrous that you should probably exit^^J
  593. and fix things up.}
  594. \newif\iftag@
  595. \newcount\and@
  596. \def\align@{\inalign@true\inany@true
  597.  \vspace@\allowdisplaybreak@\displaybreak@\intertext@
  598.  \def\tag{\global\tag@true\ifnum\and@=\z@\DN@{&&}\else
  599.           \DN@{&}\fi\next@}%
  600.  \iftagsleft@\DN@{\csname align \endcsname}\else
  601.   \DN@{\csname align \space\endcsname}\fi\next@}
  602. \def\Tag@{\iftag@\else\errhelp\andhelp@\err@{Extra & on this line}\fi}
  603. \newdimen\lwidth@
  604. \newdimen\rwidth@
  605. \newdimen\maxlwidth@
  606. \newdimen\maxrwidth@
  607. \newdimen\totwidth@
  608. \def\measure@#1\endalign{\lwidth@\z@\rwidth@\z@\maxlwidth@\z@\maxrwidth@\z@
  609.  \global\and@\z@                                                            %1
  610.  \setbox@ne\vbox                                                            %2
  611.   {\everycr{\noalign{\global\tag@false\global\and@\z@}}\Let@                %3
  612.   \halign{\setboxz@h{$\m@th\displaystyle{\@lign##}$}%                       %4
  613.    \global\lwidth@\wdz@                                                     %5
  614.    \ifdim\lwidth@>\maxlwidth@\global\maxlwidth@\lwidth@\fi                  %6
  615.    \global\advance\and@\@ne                                                 %7
  616.    &\setboxz@h{$\m@th\displaystyle{{}\@lign##}$}\global\rwidth@\wdz@        %8
  617.    \ifdim\rwidth@>\maxrwidth@\global\maxrwidth@\rwidth@\fi                  %9
  618.    \global\advance\and@\@ne                                                %10
  619.    &\Tag@
  620.    \eat@{##}\crcr#1\crcr}}%                                                %11
  621.  \totwidth@\maxlwidth@\advance\totwidth@\maxrwidth@}                       %12
  622. \def\displ@y@{\global\dt@ptrue\openup\jot
  623.  \everycr{\noalign{\global\tag@false\global\and@\z@\ifdt@p\global\dt@pfalse
  624.  \vskip-\lineskiplimit\vskip\normallineskiplimit\else
  625.  \penalty\interdisplaylinepenalty\fi}}}
  626. \def\black@#1{\noalign{\ifdim#1>\displaywidth
  627.  \dimen@\prevdepth\nointerlineskip                                          %1
  628.  \vskip-\ht\strutbox@\vskip-\dp\strutbox@                                   %2
  629.  \vbox{\noindent\hbox to#1{\strut@\hfill}}%                                 %3
  630.  \prevdepth\dimen@                                                          %4
  631.  \fi}}
  632. \expandafter\def\csname align \space\endcsname#1\endalign
  633.  {\measure@#1\endalign\global\and@\z@                                       %1
  634.  \ifingather@\everycr{\noalign{\global\and@\z@}}\else\displ@y@\fi           %2
  635.  \Let@\tabskip\centering@                                                   %3
  636.  \halign to\displaywidth
  637.   {\hfil\strut@\setboxz@h{$\m@th\displaystyle{\@lign##}$}%                  %4
  638.   \global\lwidth@\wdz@\boxz@\global\advance\and@\@ne                        %5
  639.   \tabskip\z@skip                                                           %6
  640.   &\setboxz@h{$\m@th\displaystyle{{}\@lign##}$}%                            %7
  641.   \global\rwidth@\wdz@\boxz@\hfill\global\advance\and@\@ne                  %8
  642.   \tabskip\centering@                                                       %9
  643.   &\setboxz@h{\@lign\strut@\maketag@##\maketag@}%                          %10
  644.   \dimen@\displaywidth\advance\dimen@-\totwidth@
  645.   \divide\dimen@\tw@\advance\dimen@\maxrwidth@\advance\dimen@-\rwidth@     %11
  646.   \ifdim\dimen@<\tw@\wdz@\llap{\vtop{\normalbaselines\null\boxz@}}%        %12
  647.   \else\llap{\boxz@}\fi                                                    %13
  648.   \tabskip\z@skip                                                          %14
  649.   \crcr#1\crcr                                                             %15
  650.   \black@\totwidth@}}                                                      %16
  651. \newdimen\lineht@
  652. \expandafter\def\csname align \endcsname#1\endalign{\measure@#1\endalign
  653.  \global\and@\z@
  654.  \ifdim\totwidth@>\displaywidth\let\displaywidth@\totwidth@\else
  655.   \let\displaywidth@\displaywidth\fi                                        %1
  656.  \ifingather@\everycr{\noalign{\global\and@\z@}}\else\displ@y@\fi
  657.  \Let@\tabskip\centering@\halign to\displaywidth
  658.   {\hfil\strut@\setboxz@h{$\m@th\displaystyle{\@lign##}$}%
  659.   \global\lwidth@\wdz@\global\lineht@\ht\z@                                 %2
  660.   \boxz@\global\advance\and@\@ne
  661.   \tabskip\z@skip&\setboxz@h{$\m@th\displaystyle{{}\@lign##}$}%
  662.   \global\rwidth@\wdz@\ifdim\ht\z@>\lineht@\global\lineht@\ht\z@\fi         %3
  663.   \boxz@\hfil\global\advance\and@\@ne
  664.   \tabskip\centering@&\kern-\displaywidth@                                  %4
  665.   \setboxz@h{\@lign\strut@\maketag@##\maketag@}%
  666.   \dimen@\displaywidth\advance\dimen@-\totwidth@
  667.   \divide\dimen@\tw@\advance\dimen@\maxlwidth@\advance\dimen@-\lwidth@
  668.   \ifdim\dimen@<\tw@\wdz@
  669.    \rlap{\vbox{\normalbaselines\boxz@\vbox to\lineht@{}}}\else
  670.    \rlap{\boxz@}\fi
  671.   \tabskip\displaywidth@\crcr#1\crcr\black@\totwidth@}}
  672. \expandafter\def\csname align (in \string\gather)\endcsname
  673.   #1\endalign{\vcenter{\align@#1\endalign}}
  674. \Invalid@\endalign
  675. \newif\ifxat@
  676. \def\alignat{\RIfMIfI@\DN@{\onlydmatherr@\alignat}\else
  677.  \DN@{\csname alignat \endcsname}\fi\else
  678.  \DN@{\onlydmatherr@\alignat}\fi\next@}
  679. \newif\ifmeasuring@
  680. \newbox\savealignat@
  681. \expandafter\def\csname alignat \endcsname#1#2\endalignat                   %1
  682.  {\inany@true\xat@false
  683.  \def\tag{\global\tag@true\count@#1\relax\multiply\count@\tw@
  684.   \xdef\tag@{}\loop\ifnum\count@>\and@\xdef\tag@{&\tag@}\advance\count@\m@ne
  685.   \repeat\tag@}%
  686.  \vspace@\allowdisplaybreak@\displaybreak@\intertext@
  687.  \displ@y@\measuring@true                                                   %2
  688.  \setbox\savealignat@\hbox{$\m@th\displaystyle\Let@
  689.   \attag@{#1}%                                                              %3
  690.   \vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}%
  691.  \measuring@false                                                           %4
  692.  \Let@\attag@{#1}%                                                          %5
  693.  \tabskip\centering@\halign to\displaywidth
  694.   {\span\preamble@@\crcr#2\crcr                                             %6
  695.   \black@{\wd\savealignat@}}}                                               %7
  696. \Invalid@\endalignat
  697. \def\xalignat{\RIfMIfI@
  698.  \DN@{\onlydmatherr@\xalignat}\else
  699.  \DN@{\csname xalignat \endcsname}\fi\else
  700.  \DN@{\onlydmatherr@\xalignat}\fi\next@}
  701. \expandafter\def\csname xalignat \endcsname#1#2\endxalignat
  702.  {\inany@true\xat@true
  703.  \def\tag{\global\tag@true\def\tag@{}\count@#1\relax\multiply\count@\tw@
  704.   \loop\ifnum\count@>\and@\xdef\tag@{&\tag@}\advance\count@\m@ne\repeat\tag@}%
  705.  \vspace@\allowdisplaybreak@\displaybreak@\intertext@
  706.  \displ@y@\measuring@true\setbox\savealignat@\hbox{$\m@th\displaystyle\Let@
  707.  \attag@{#1}\vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}%
  708.  \measuring@false\Let@
  709.  \attag@{#1}\tabskip\centering@\halign to\displaywidth
  710.  {\span\preamble@@\crcr#2\crcr\black@{\wd\savealignat@}}}
  711. \def\attag@#1{\let\Maketag@\maketag@\let\TAG@\Tag@                          %1
  712.  \let\Tag@=0\let\maketag@=0%                                                %2
  713.  \ifmeasuring@\def\llap@##1{\setboxz@h{##1}\hbox to\tw@\wdz@{}}%
  714.   \def\rlap@##1{\setboxz@h{##1}\hbox to\tw@\wdz@{}}\else
  715.   \let\llap@\llap\let\rlap@\rlap\fi                                         %3
  716.  \toks@{\hfil\strut@$\m@th\displaystyle{\@lign\the\hashtoks@}$\tabskip\z@skip
  717.   \global\advance\and@\@ne&$\m@th\displaystyle{{}\@lign\the\hashtoks@}$\hfil
  718.   \ifxat@\tabskip\centering@\fi\global\advance\and@\@ne}%                   %4
  719.  \iftagsleft@
  720.   \toks@@{\tabskip\centering@&\Tag@\kern-\displaywidth
  721.    \rlap@{\@lign\maketag@\the\hashtoks@\maketag@}%
  722.    \global\advance\and@\@ne\tabskip\displaywidth}\else
  723.   \toks@@{\tabskip\centering@&\Tag@\llap@{\@lign\maketag@
  724.    \the\hashtoks@\maketag@}\global\advance\and@\@ne\tabskip\z@skip}\fi      %5
  725.  \atcount@#1\relax\advance\atcount@\m@ne
  726.  \loop\ifnum\atcount@>\z@
  727.  \toks@=\expandafter{\the\toks@&\hfil$\m@th\displaystyle{\@lign
  728.   \the\hashtoks@}$\global\advance\and@\@ne
  729.   \tabskip\z@skip&$\m@th\displaystyle{{}\@lign\the\hashtoks@}$\hfil\ifxat@
  730.   \tabskip\centering@\fi\global\advance\and@\@ne}\advance\atcount@\m@ne
  731.  \repeat                                                                    %6
  732.  \xdef\preamble@{\the\toks@\the\toks@@}%                                    %7
  733.  \xdef\preamble@@{\preamble@}%                                              %8
  734.  \let\maketag@\Maketag@\let\Tag@\TAG@}                                      %9
  735. \Invalid@\endxalignat
  736. \def\xxalignat{\RIfMIfI@
  737.  \DN@{\onlydmatherr@\xxalignat}\else\DN@{\csname xxalignat
  738.   \endcsname}\fi\else
  739.  \DN@{\onlydmatherr@\xxalignat}\fi\next@}
  740. \expandafter\def\csname xxalignat \endcsname#1#2\endxxalignat{\inany@true
  741.  \vspace@\allowdisplaybreak@\displaybreak@\intertext@
  742.  \displ@y\setbox\savealignat@\hbox{$\m@th\displaystyle\Let@
  743.  \xxattag@{#1}\vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}%
  744.  \Let@\xxattag@{#1}\tabskip\z@skip\halign to\displaywidth
  745.  {\span\preamble@@\crcr#2\crcr\black@{\wd\savealignat@}}}
  746. \def\xxattag@#1{\toks@{\tabskip\z@skip\hfil\strut@
  747.  $\m@th\displaystyle{\the\hashtoks@}$&%
  748.  $\m@th\displaystyle{{}\the\hashtoks@}$\hfil\tabskip\centering@&}%
  749.  \atcount@#1\relax\advance\atcount@\m@ne\loop\ifnum\atcount@>\z@
  750.  \toks@=\expandafter{\the\toks@&\hfil$\m@th\displaystyle{\the\hashtoks@}$%
  751.   \tabskip\z@skip&$\m@th\displaystyle{{}\the\hashtoks@}$\hfil
  752.   \tabskip\centering@}\advance\atcount@\m@ne\repeat
  753.  \xdef\preamble@{\the\toks@\tabskip\z@skip}\xdef\preamble@@{\preamble@}}
  754. \Invalid@\endxxalignat
  755. \newdimen\gwidth@
  756. \newdimen\gmaxwidth@
  757. \def\gmeasure@#1\endgather{\gwidth@\z@\gmaxwidth@\z@\setbox@ne\vbox{\Let@
  758.  \halign{\setboxz@h{$\m@th\displaystyle{##}$}\global\gwidth@\wdz@
  759.  \ifdim\gwidth@>\gmaxwidth@\global\gmaxwidth@\gwidth@\fi
  760.  &\eat@{##}\crcr#1\crcr}}}
  761. \def\gather{\RIfMIfI@\DN@{\onlydmatherr@\gather}\else
  762.  \ingather@true\inany@true\def\tag{&}%
  763.  \vspace@\allowdisplaybreak@\displaybreak@\intertext@
  764.  \displ@y\Let@
  765.  \iftagsleft@\DN@{\csname gather \endcsname}\else
  766.   \DN@{\csname gather \space\endcsname}\fi\fi
  767.  \else\DN@{\onlydmatherr@\gather}\fi\next@}
  768. \expandafter\def\csname gather \space\endcsname#1\endgather
  769.  {\gmeasure@#1\endgather\tabskip\centering@
  770.  \halign to\displaywidth{\hfil\strut@\setboxz@h{$\m@th\displaystyle{##}$}%
  771.  \global\gwidth@\wdz@\boxz@\hfil&
  772.  \setboxz@h{\strut@{\maketag@##\maketag@}}%
  773.  \dimen@\displaywidth\advance\dimen@-\gwidth@
  774.  \ifdim\dimen@>\tw@\wdz@\llap{\boxz@}\else
  775.  \llap{\vtop{\normalbaselines\null\boxz@}}\fi
  776.  \tabskip\z@skip\crcr#1\crcr\black@\gmaxwidth@}}
  777. \newdimen\glineht@
  778. \expandafter\def\csname gather \endcsname#1\endgather{\gmeasure@#1\endgather
  779.  \ifdim\gmaxwidth@>\displaywidth\let\gdisplaywidth@\gmaxwidth@\else
  780.  \let\gdisplaywidth@\displaywidth\fi\tabskip\centering@\halign to\displaywidth
  781.  {\hfil\strut@\setboxz@h{$\m@th\displaystyle{##}$}%
  782.  \global\gwidth@\wdz@\global\glineht@\ht\z@\boxz@\hfil&\kern-\gdisplaywidth@
  783.  \setboxz@h{\strut@{\maketag@##\maketag@}}%
  784.  \dimen@\displaywidth\advance\dimen@-\gwidth@
  785.  \ifdim\dimen@>\tw@\wdz@\rlap{\boxz@}\else
  786.  \rlap{\vbox{\normalbaselines\boxz@\vbox to\glineht@{}}}\fi
  787.  \tabskip\gdisplaywidth@\crcr#1\crcr\black@\gmaxwidth@}}
  788. \newif\ifctagsplit@
  789. \def\CenteredTagsOnSplits{\global\ctagsplit@true}
  790. \def\TopOrBottomTagsOnSplits{\global\ctagsplit@false}
  791. \TopOrBottomTagsOnSplits
  792. \def\split{\relax\ifinany@\let\next@\insplit@\else
  793.  \ifmmode\ifinner\def\next@{\onlydmatherr@\split}\else
  794.  \let\next@\outsplit@\fi\else
  795.  \def\next@{\onlydmatherr@\split}\fi\fi\next@}
  796. \def\insplit@{\global\setbox\z@\vbox\bgroup\vspace@\Let@\ialign\bgroup
  797.  \hfil\strut@$\m@th\displaystyle{##}$&$\m@th\displaystyle{{}##}$\hfill\crcr}
  798. \def\endsplit{\crcr\egroup\egroup\iftagsleft@\expandafter\lendsplit@\else
  799.  \expandafter\rendsplit@\fi}
  800. \def\rendsplit@{\global\setbox9 \vbox
  801.  {\unvcopy\z@\global\setbox8 \lastbox\unskip}%                              %1
  802.  \setbox@ne\hbox{\unhcopy8 \unskip\global\setbox\tw@\lastbox
  803.  \unskip\global\setbox\thr@@\lastbox}%                                      %2
  804.  \global\setbox7 \hbox{\unhbox\tw@\unskip}%                                 %3
  805.  \ifinalign@\ifctagsplit@                                                   %4
  806.   \gdef\split@{\hbox to\wd\thr@@{}&
  807.    \vcenter{\vbox{\moveleft\wd\thr@@\boxz@}}}%                              %5
  808.  \else\gdef\split@{&\vbox{\moveleft\wd\thr@@\box9}\crcr
  809.   \box\thr@@&\box7}\fi                                                      %6
  810.  \else                                                                      %7
  811.   \ifctagsplit@\gdef\split@{\vcenter{\boxz@}}\else
  812.   \gdef\split@{\box9\crcr\hbox{\box\thr@@\box7}}\fi
  813.  \fi
  814.  \split@}                                                                   %8
  815. \def\lendsplit@{\global\setbox9\vtop{\unvcopy\z@}%                          %1
  816.  \setbox@ne\vbox{\unvcopy\z@\global\setbox8\lastbox}%                       %2
  817.  \setbox@ne\hbox{\unhcopy8\unskip\setbox\tw@\lastbox
  818.   \unskip\global\setbox\thr@@\lastbox}%                                     %3
  819.  \ifinalign@\ifctagsplit@                                                   %4
  820.   \gdef\split@{\hbox to\wd\thr@@{}&
  821.   \vcenter{\vbox{\moveleft\wd\thr@@\box9}}}%                                %5
  822.   \else                                                                     %6
  823.   \gdef\split@{\hbox to\wd\thr@@{}&\vbox{\moveleft\wd\thr@@\box9}}\fi
  824.  \else
  825.   \ifctagsplit@\gdef\split@{\vcenter{\box9}}\else
  826.   \gdef\split@{\box9}\fi
  827.  \fi\split@}
  828. \def\outsplit@#1$${\align\insplit@#1\endalign$$}
  829. \newdimen\multlinegap@
  830. \multlinegap@1em
  831. \newdimen\multlinetaggap@
  832. \multlinetaggap@1em
  833. \def\MultlineGap#1{\global\multlinegap@#1\relax}
  834. \def\multlinegap#1{\RIfMIfI@\onlydmatherr@\multlinegap\else
  835.  \multlinegap@#1\relax\fi\else\onlydmatherr@\multlinegap\fi}
  836. \def\nomultlinegap{\multlinegap{\z@}}
  837. \def\multline{\RIfMIfI@
  838.  \DN@{\onlydmatherr@\multline}\else
  839.  \DN@{\multline@}\fi\else
  840.  \DN@{\onlydmatherr@\multline}\fi\next@}
  841. \newif\iftagin@
  842. \def\tagin@#1{\tagin@false\in@\tag{#1}\ifin@\tagin@true\fi}
  843. \def\multline@#1$${\inany@true\vspace@\allowdisplaybreak@\displaybreak@
  844.  \tagin@{#1}\iftagsleft@\DN@{\multline@l#1$$}\else
  845.  \DN@{\multline@r#1$$}\fi\next@}
  846. \newdimen\mwidth@
  847. \def\rmmeasure@#1\endmultline{%
  848.  \def\shoveleft##1{##1}\def\shoveright##1{##1}%                             %1
  849.  \setbox@ne\vbox{\Let@\halign{\setboxz@h
  850.   {$\m@th\@lign\displaystyle{}##$}\global\mwidth@\wdz@
  851.   \crcr#1\crcr}}}
  852. \newdimen\mlineht@
  853. \newif\ifzerocr@
  854. \newif\ifonecr@
  855. \def\lmmeasure@#1\endmultline{\global\zerocr@true\global\onecr@false
  856.  \everycr{\noalign{\ifonecr@\global\onecr@false\fi
  857.   \ifzerocr@\global\zerocr@false\global\onecr@true\fi}}%                    %1
  858.   \def\shoveleft##1{##1}\def\shoveright##1{##1}%
  859.  \setbox@ne\vbox{\Let@\halign{\setboxz@h
  860.   {$\m@th\@lign\displaystyle{}##$}\ifonecr@\global\mwidth@\wdz@
  861.   \global\mlineht@\ht\z@\fi\crcr#1\crcr}}}
  862. \newbox\mtagbox@
  863. \newdimen\ltwidth@
  864. \newdimen\rtwidth@
  865. \def\multline@l#1$${\iftagin@\DN@{\lmultline@@#1$$}\else
  866.  \DN@{\setbox\mtagbox@\null\ltwidth@\z@\rtwidth@\z@
  867.   \lmultline@@@#1$$}\fi\next@}
  868. \def\lmultline@@#1\endmultline\tag#2$${%
  869.  \setbox\mtagbox@\hbox{\maketag@#2\maketag@}%                               %1
  870.  \lmmeasure@#1\endmultline\dimen@\mwidth@\advance\dimen@\wd\mtagbox@
  871.  \advance\dimen@\multlinetaggap@                                            %2
  872.  \ifdim\dimen@>\displaywidth\ltwidth@\z@\else\ltwidth@\wd\mtagbox@\fi       %3
  873.  \lmultline@@@#1\endmultline$$}
  874. \def\lmultline@@@{\displ@y
  875.  \def\shoveright##1{##1\hfilneg\hskip\multlinegap@}%
  876.  \def\shoveleft##1{\setboxz@h{$\m@th\displaystyle{}##1$}%
  877.   \setbox@ne\hbox{$\m@th\displaystyle##1$}%
  878.   \hfilneg
  879.   \iftagin@
  880.    \ifdim\ltwidth@>\z@\hskip\ltwidth@\hskip\multlinetaggap@\fi
  881.   \else\hskip\multlinegap@\fi\hskip.5\wd@ne\hskip-.5\wdz@##1}%              %1
  882.   \halign\bgroup\Let@\hbox to\displaywidth
  883.    {\strut@$\m@th\displaystyle\hfil{}##\hfil$}\crcr
  884.    \hfilneg                                                                 %2
  885.    \iftagin@                                                                %3
  886.     \ifdim\ltwidth@>\z@                                                     %4
  887.      \box\mtagbox@\hskip\multlinetaggap@                                    %5
  888.     \else
  889.      \rlap{\vbox{\normalbaselines\hbox{\strut@\box\mtagbox@}%
  890.      \vbox to\mlineht@{}}}\fi                                               %6
  891.    \else\hskip\multlinegap@\fi}                                             %7
  892. \def\multline@r#1$${\iftagin@\DN@{\rmultline@@#1$$}\else
  893.  \DN@{\setbox\mtagbox@\null\ltwidth@\z@\rtwidth@\z@
  894.   \rmultline@@@#1$$}\fi\next@}
  895. \def\rmultline@@#1\endmultline\tag#2$${\ltwidth@\z@
  896.  \setbox\mtagbox@\hbox{\maketag@#2\maketag@}%
  897.  \rmmeasure@#1\endmultline\dimen@\mwidth@\advance\dimen@\wd\mtagbox@
  898.  \advance\dimen@\multlinetaggap@
  899.  \ifdim\dimen@>\displaywidth\rtwidth@\z@\else\rtwidth@\wd\mtagbox@\fi
  900.  \rmultline@@@#1\endmultline$$}
  901. \def\rmultline@@@{\displ@y
  902.  \def\shoveright##1{##1\hfilneg\iftagin@\ifdim\rtwidth@>\z@
  903.   \hskip\rtwidth@\hskip\multlinetaggap@\fi\else\hskip\multlinegap@\fi}%
  904.  \def\shoveleft##1{\setboxz@h{$\m@th\displaystyle{}##1$}%
  905.   \setbox@ne\hbox{$\m@th\displaystyle##1$}%
  906.   \hfilneg\hskip\multlinegap@\hskip.5\wd@ne\hskip-.5\wdz@##1}%
  907.  \halign\bgroup\Let@\hbox to\displaywidth
  908.   {\strut@$\m@th\displaystyle\hfil{}##\hfil$}\crcr
  909.  \hfilneg\hskip\multlinegap@}
  910. \def\endmultline{\iftagsleft@\expandafter\lendmultline@\else
  911.  \expandafter\rendmultline@\fi}
  912. \def\lendmultline@{\hfilneg\hskip\multlinegap@\crcr\egroup}
  913. \def\rendmultline@{\iftagin@                                                %1
  914.  \ifdim\rtwidth@>\z@                                                        %2
  915.   \hskip\multlinetaggap@\box\mtagbox@                                       %3
  916.  \else\llap{\vtop{\normalbaselines\null\hbox{\strut@\box\mtagbox@}}}\fi     %4
  917.  \else\hskip\multlinegap@\fi                                                %5
  918.  \hfilneg\crcr\egroup}
  919. \def\bmod{\mskip-\medmuskip\mkern5mu\mathbin{\fam\z@ mod}\penalty900
  920.  \mkern5mu\mskip-\medmuskip}
  921. \def\pmod#1{\allowbreak\ifinner\mkern8mu\else\mkern18mu\fi
  922.  ({\fam\z@ mod}\,\,#1)}
  923. \def\pod#1{\allowbreak\ifinner\mkern8mu\else\mkern18mu\fi(#1)}
  924. \def\mod#1{\allowbreak\ifinner\mkern12mu\else\mkern18mu\fi{\fam\z@ mod}\,\,#1}
  925. \newcount\cfraccount@
  926. \def\cfrac{\bgroup\bgroup\advance\cfraccount@\@ne\strut
  927.  \iffalse{\fi\def\\{\over\displaystyle}\iffalse}\fi}
  928. \def\lcfrac{\bgroup\bgroup\advance\cfraccount@\@ne\strut
  929.  \iffalse{\fi\def\\{\hfill\over\displaystyle}\iffalse}\fi}
  930. \def\rcfrac{\bgroup\bgroup\advance\cfraccount@\@ne\strut\hfill
  931.  \iffalse{\fi\def\\{\over\displaystyle}\iffalse}\fi}
  932. \def\gloop@#1\repeat{\gdef\body{#1}\iterate}
  933. \def\endcfrac{\gloop@\ifnum\cfraccount@>\z@\global\advance\cfraccount@\m@ne
  934.  \egroup\hskip-\nulldelimiterspace\egroup\repeat}
  935. \def\binrel@#1{\setboxz@h{\thinmuskip0mu
  936.   \medmuskip\m@ne mu\thickmuskip\@ne mu$#1\m@th$}%
  937.  \setbox@ne\hbox{\thinmuskip0mu\medmuskip\m@ne mu\thickmuskip
  938.   \@ne mu${}#1{}\m@th$}%
  939.  \setbox\tw@\hbox{\hskip\wd@ne\hskip-\wdz@}}
  940. \def\overset#1\to#2{\binrel@{#2}\ifdim\wd\tw@<\z@
  941.  \mathbin{\mathop{\kern\z@#2}\limits^{#1}}\else\ifdim\wd\tw@>\z@
  942.  \mathrel{\mathop{\kern\z@#2}\limits^{#1}}\else
  943.  {\mathop{\kern\z@#2}\limits^{#1}}{}\fi\fi}
  944. \def\underset#1\to#2{\binrel@{#2}\ifdim\wd\tw@<\z@
  945.  \mathbin{\mathop{\kern\z@#2}\limits_{#1}}\else\ifdim\wd\tw@>\z@
  946.  \mathrel{\mathop{\kern\z@#2}\limits_{#1}}\else
  947.  {\mathop{\kern\z@#2}\limits_{#1}}{}\fi\fi}
  948. \def\oversetbrace#1\to#2{\overbrace{#2}^{#1}}
  949. \def\undersetbrace#1\to#2{\underbrace{#2}_{#1}}
  950. \def\sideset#1\and#2\to#3{%
  951.  \setbox@ne\hbox{$\dsize{\vphantom{#3}}#1{#3}\m@th$}%
  952.  \setbox\tw@\hbox{$\dsize{#3}#2\m@th$}%
  953.  \hskip\wd@ne\hskip-\wd\tw@\mathop{\hskip\wd\tw@\hskip-\wd@ne
  954.   {\vphantom{#3}}#1{#3}#2}}
  955. \def\rightarrowfill@#1{$#1\m@th\mathord-\mkern-6mu\cleaders
  956.  \hbox{$#1\mkern-2mu\mathord-\mkern-2mu$}\hfill
  957.  \mkern-6mu\mathord\rightarrow$}
  958. \def\leftarrowfill@#1{$#1\m@th\mathord\leftarrow\mkern-6mu\cleaders
  959.  \hbox{$#1\mkern-2mu\mathord-\mkern-2mu$}\hfill\mkern-6mu\mathord-$}
  960. \def\leftrightarrowfill@#1{$#1\m@th\mathord\leftarrow\mkern-6mu\cleaders
  961.  \hbox{$#1\mkern-2mu\mathord-\mkern-2mu$}\hfill
  962.  \mkern-6mu\mathord\rightarrow$}
  963. \def\overrightarrow{\mathpalette\overrightarrow@}
  964. \def\overrightarrow@#1#2{\vbox{\ialign{##\crcr\rightarrowfill@#1\crcr
  965.  \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#1#2\hfil$\crcr}}}
  966. \let\overarrow\overrightarrow
  967. \def\overleftarrow{\mathpalette\overleftarrow@}
  968. \def\overleftarrow@#1#2{\vbox{\ialign{##\crcr\leftarrowfill@#1\crcr
  969.  \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#1#2\hfil$\crcr}}}
  970. \def\overleftrightarrow{\mathpalette\overleftrightarrow@}
  971. \def\overleftrightarrow@#1#2{\vbox{\ialign{##\crcr\leftrightarrowfill@#1\crcr
  972.  \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#1#2\hfil$\crcr}}}
  973. \def\underrightarrow{\mathpalette\underrightarrow@}
  974. \def\underrightarrow@#1#2{\vtop{\ialign{##\crcr$\m@th\hfil#1#2\hfil$\crcr
  975.  \noalign{\nointerlineskip}\rightarrowfill@#1\crcr}}}
  976. \let\underarrow\underrightarrow
  977. \def\underleftarrow{\mathpalette\underleftarrow@}
  978. \def\underleftarrow@#1#2{\vtop{\ialign{##\crcr$\m@th\hfil#1#2\hfil$\crcr
  979.  \noalign{\nointerlineskip}\leftarrowfill@#1\crcr}}}
  980. \def\underleftrightarrow{\mathpalette\underleftrightarrow@}
  981. \def\underleftrightarrow@#1#2{\vtop{\ialign{##\crcr$\m@th\hfil#1#2\hfil$\crcr
  982.  \noalign{\nointerlineskip}\leftrightarrowfill@#1\crcr}}}
  983. \let\DOTSI\relax
  984. \let\DOTSB\relax
  985. \let\DOTSX\relax
  986. \newif\ifmath@
  987. {\uccode`7=`\\ \uccode`8=`m \uccode`9=`a \uccode`0=`t \uccode`!=`h
  988.  \uppercase{\gdef\math@#1#2#3#4#5#6\math@{\global\math@false\ifx 7#1\ifx 8#2%
  989.  \ifx 9#3\ifx 0#4\ifx !#5\xdef\meaning@{#6}\global\math@true\fi\fi\fi\fi\fi}}}
  990. \newif\ifmathch@
  991. {\uccode`7=`c \uccode`8=`h \uccode`9=`\"
  992.  \uppercase{\gdef\mathch@#1#2#3#4#5#6\mathch@{\global\mathch@false
  993.   \ifx 7#1\ifx 8#2\ifx 9#5\global\mathch@true\xdef\meaning@{9#6}\fi\fi\fi}}}
  994. \newcount\classnum@
  995. \def\getmathch@#1.#2\getmathch@{\classnum@#1 \divide\classnum@4096
  996.  \ifcase\number\classnum@\or\or\gdef\thedots@{\dotsb@}\or
  997.  \gdef\thedots@{\dotsb@}\fi}
  998. \newif\ifmathbin@
  999. {\uccode`4=`b \uccode`5=`i \uccode`6=`n
  1000.  \uppercase{\gdef\mathbin@#1#2#3{\relaxnext@
  1001.   \DNii@##1\mathbin@{\ifx\space@\next\global\mathbin@true\fi}%
  1002.  \global\mathbin@false\DN@##1\mathbin@{}%
  1003.  \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}}
  1004. \newif\ifmathrel@
  1005. {\uccode`4=`r \uccode`5=`e \uccode`6=`l
  1006.  \uppercase{\gdef\mathrel@#1#2#3{\relaxnext@
  1007.   \DNii@##1\mathrel@{\ifx\space@\next\global\mathrel@true\fi}%
  1008.  \global\mathrel@false\DN@##1\mathrel@{}%
  1009.  \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}}
  1010. \newif\ifmacro@
  1011. {\uccode`5=`m \uccode`6=`a \uccode`7=`c
  1012.  \uppercase{\gdef\macro@#1#2#3#4\macro@{\global\macro@false
  1013.   \ifx 5#1\ifx 6#2\ifx 7#3\global\macro@true
  1014.   \xdef\meaning@{\macro@@#4\macro@@}\fi\fi\fi}}}
  1015. \def\macro@@#1->#2\macro@@{#2}
  1016. \newif\ifDOTS@
  1017. \newcount\DOTSCASE@
  1018. {\uccode`6=`\\ \uccode`7=`D \uccode`8=`O \uccode`9=`T \uccode`0=`S
  1019.  \uppercase{\gdef\DOTS@#1#2#3#4#5{\global\DOTS@false\DN@##1\DOTS@{}%
  1020.   \ifx 6#1\ifx 7#2\ifx 8#3\ifx 9#4\ifx 0#5\let\next@\DOTS@@\fi\fi\fi\fi\fi
  1021.   \next@}}}
  1022. {\uccode`3=`B \uccode`4=`I \uccode`5=`X
  1023.  \uppercase{\gdef\DOTS@@#1{\relaxnext@
  1024.   \DNii@##1\DOTS@{\ifx\space@\next\global\DOTS@true\fi}%
  1025.   \DN@{\FN@\nextii@}%
  1026.   \ifx 3#1\global\DOTSCASE@\z@\else
  1027.   \ifx 4#1\global\DOTSCASE@\@ne\else
  1028.   \ifx 5#1\global\DOTSCASE@\tw@\else\DN@##1\DOTS@{}%
  1029.   \fi\fi\fi\next@}}}
  1030. \newif\ifnot@
  1031. {\uccode`5=`\\ \uccode`6=`n \uccode`7=`o \uccode`8=`t
  1032.  \uppercase{\gdef\not@#1#2#3#4{\relaxnext@
  1033.   \DNii@##1\not@{\ifx\space@\next\global\not@true\fi}%
  1034.  \global\not@false\DN@##1\not@{}%
  1035.  \ifx 5#1\ifx 6#2\ifx 7#3\ifx 8#4\DN@{\FN@\nextii@}\fi\fi\fi
  1036.  \fi\next@}}}
  1037. \newif\ifkeybin@
  1038. \def\keybin@{\keybin@true
  1039.  \ifx\next+\else\ifx\next=\else\ifx\next<\else\ifx\next>\else\ifx\next-\else
  1040.  \ifx\next*\else\ifx\next:\else\keybin@false\fi\fi\fi\fi\fi\fi\fi}
  1041. \def\dots{\RIfM@\expandafter\mdots@\else\expandafter\tdots@\fi}
  1042. \def\tdots@{\unskip\relaxnext@
  1043.  \DN@{$\m@th\mathinner{\ldotp\ldotp\ldotp}\,
  1044.    \ifx\next,\,$\else\ifx\next.\,$\else\ifx\next;\,$\else\ifx\next:\,$\else
  1045.    \ifx\next?\,$\else\ifx\next!\,$\else$ \fi\fi\fi\fi\fi\fi}%
  1046.  \ \FN@\next@}
  1047. \def\mdots@{\FN@\mdots@@}
  1048. \def\mdots@@{\gdef\thedots@{\dotso@}%                                       %1
  1049.  \ifx\next\boldkey\gdef\thedots@\boldkey{\boldkeydots@}\else                %2
  1050.  \ifx\next\boldsymbol\gdef\thedots@\boldsymbol{\boldsymboldots@}\else       %3
  1051.  \ifx,\next\gdef\thedots@{\dotsc}%                                          %4
  1052.  \else\ifx\not\next\gdef\thedots@{\dotsb@}%                                 %5
  1053.  \else\keybin@
  1054.  \ifkeybin@\gdef\thedots@{\dotsb@}%                                         %6
  1055.  \else\xdef\meaning@{\meaning\next..........}\xdef\meaning@@{\meaning@}%    %7
  1056.   \expandafter\math@\meaning@\math@
  1057.   \ifmath@
  1058.    \expandafter\mathch@\meaning@\mathch@
  1059.    \ifmathch@\expandafter\getmathch@\meaning@\getmathch@\fi                 %8
  1060.   \else\expandafter\macro@\meaning@@\macro@                                 %9
  1061.   \ifmacro@                                                                %10
  1062.    \expandafter\not@\meaning@\not@\ifnot@\gdef\thedots@{\dotsb@}%          %11
  1063.   \else\expandafter\DOTS@\meaning@\DOTS@
  1064.   \ifDOTS@
  1065.    \ifcase\number\DOTSCASE@\gdef\thedots@{\dotsb@}%
  1066.     \or\gdef\thedots@{\dotsi}\else\fi                                      %12
  1067.   \else\expandafter\math@\meaning@\math@                                   %13
  1068.   \ifmath@\expandafter\mathbin@\meaning@\mathbin@
  1069.   \ifmathbin@\gdef\thedots@{\dotsb@}%                                      %14
  1070.   \else\expandafter\mathrel@\meaning@\mathrel@
  1071.   \ifmathrel@\gdef\thedots@{\dotsb@}%                                      %15
  1072.   \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
  1073.  \thedots@}
  1074. \def\plainldots@{\mathinner{\ldotp\ldotp\ldotp}}
  1075. \def\plaincdots@{\mathinner{\cdotp\cdotp\cdotp}}
  1076. \def\dotsi{\!\plaincdots@}
  1077. \let\dotsb@\plaincdots@
  1078. \newif\ifextra@
  1079. \newif\ifrightdelim@
  1080. \def\rightdelim@{\global\rightdelim@true                                    %1
  1081.  \ifx\next)\else                                                            %2
  1082.  \ifx\next]\else
  1083.  \ifx\next\rbrack\else
  1084.  \ifx\next\}\else
  1085.  \ifx\next\rbrace\else
  1086.  \ifx\next\rangle\else
  1087.  \ifx\next\rceil\else
  1088.  \ifx\next\rfloor\else
  1089.  \ifx\next\rgroup\else
  1090.  \ifx\next\rmoustache\else
  1091.  \ifx\next\right\else
  1092.  \ifx\next\bigr\else
  1093.  \ifx\next\biggr\else
  1094.  \ifx\next\Bigr\else                                                        %3
  1095.  \ifx\next\Biggr\else\global\rightdelim@false
  1096.  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
  1097. \def\extra@{%
  1098.  \global\extra@false\rightdelim@\ifrightdelim@\global\extra@true            %1
  1099.  \else\ifx\next$\global\extra@true                                          %2
  1100.  \else\xdef\meaning@{\meaning\next..........}%                              %3
  1101.  \expandafter\macro@\meaning@\macro@\ifmacro@                               %4
  1102.  \expandafter\DOTS@\meaning@\DOTS@
  1103.  \ifDOTS@
  1104.  \ifnum\DOTSCASE@=\tw@\global\extra@true                                    %5
  1105.  \fi\fi\fi\fi\fi}
  1106. \newif\ifbold@
  1107. \def\dotso@{\relaxnext@
  1108.  \ifbold@
  1109.   \let\next\delayed@
  1110.   \DNii@{\extra@\plainldots@\ifextra@\,\fi}%
  1111.  \else
  1112.   \DNii@{\DN@{\extra@\plainldots@\ifextra@\,\fi}\FN@\next@}%
  1113.  \fi
  1114.  \nextii@}
  1115. \def\extrap@#1{%
  1116.  \ifx\next,\DN@{#1\,}\else
  1117.  \ifx\next;\DN@{#1\,}\else
  1118.  \ifx\next.\DN@{#1\,}\else\extra@
  1119.  \ifextra@\DN@{#1\,}\else
  1120.  \let\next@#1\fi\fi\fi\fi\next@}
  1121. \def\ldots{\DN@{\extrap@\plainldots@}%
  1122.  \FN@\next@}
  1123. \def\cdots{\DN@{\extrap@\plaincdots@}%
  1124.  \FN@\next@}
  1125. \let\dotso\ldots
  1126. \let\dotsb\cdots
  1127. \let\dotsm\dotsb
  1128. \def\dotsc{\relaxnext@
  1129.  \DN@{\ifx\next;\plainldots@\,\else
  1130.   \ifx\next.\plainldots@\,\else\extra@\plainldots@
  1131.   \ifextra@\,\fi\fi\fi}%
  1132.  \FN@\next@}
  1133. \def\cdot{\mathchar"2201 }
  1134. \def\longrightarrow{\DOTSB\relbar\joinrel\rightarrow}
  1135. \def\Longrightarrow{\DOTSB\Relbar\joinrel\Rightarrow}
  1136. \def\longleftarrow{\DOTSB\leftarrow\joinrel\relbar}
  1137. \def\Longleftarrow{\DOTSB\Leftarrow\joinrel\Relbar}
  1138. \def\longleftrightarrow{\DOTSB\leftarrow\joinrel\rightarrow}
  1139. \def\Longleftrightarrow{\DOTSB\Leftarrow\joinrel\Rightarrow}
  1140. \def\mapsto{\DOTSB\mapstochar\rightarrow}
  1141. \def\longmapsto{\DOTSB\mapstochar\longrightarrow}
  1142. \def\hookrightarrow{\DOTSB\lhook\joinrel\rightarrow}
  1143. \def\hookleftarrow{\DOTSB\leftarrow\joinrel\rhook}
  1144. \def\doteq{\DOTSB\buildrel\textstyle.\over=}
  1145. \def\iff{\DOTSB\;\Longleftrightarrow\;}
  1146. \def\dddot#1{{\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@
  1147.  \hbox{\rm...}\vss}}}}
  1148. \def\ddddot#1{{\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@
  1149.  \hbox{\rm....}\vss}}}}
  1150. \def\sphat{^{\mathchoice{}{}%
  1151.  {\,\,\botsmash{\hbox{\lower4\ex@\hbox{$\m@th\widehat{\null}$}}}}%
  1152.  {\,\botsmash{\hbox{\lower3\ex@\hbox{$\m@th\hat{\null}$}}}}}}
  1153. \def\spcheck{^\vee}
  1154. \def\sptilde{^\sim}
  1155. \def\spacute{^{\!\botsmash{\hbox{\lower\@ne ex\hbox{\'{}}}}}}
  1156. \def\spgrave{^{\mathchoice{}{}{}{\!}%
  1157.  \botsmash{\hbox{\lower\@ne ex\hbox{\`{}}}}}}
  1158. \def\spdot{^{\hbox{\raise\ex@\hbox{\rm.}}}}
  1159. \def\spddot{^{\hbox{\raise\ex@\hbox{\rm..}}}}
  1160. \def\spdddot{^{\hbox{\raise\ex@\hbox{\rm...}}}}
  1161. \def\spddddot{^{\hbox{\raise\ex@\hbox{\rm....}}}}
  1162. \def\spbreve{^{\!\botsmash{\hbox{\lower4\ex@\hbox{\u{}}}}}}
  1163. \def\spbar{^-}
  1164. \def\spvec{^\rightarrow}
  1165. \def\textonlyfont@#1#2{\def#1{\RIfM@
  1166.  \Err@{Use \string#1\space only in text}\else#2\fi}}
  1167. \textonlyfont@\rm\tenrm
  1168. \textonlyfont@\it\tenit
  1169. \textonlyfont@\sl\tensl
  1170. \textonlyfont@\bf\tenbf
  1171. \def\oldnos#1{\RIfM@{\mathcode`\,="013B \fam\@ne#1}\else
  1172.  \leavevmode\hbox{$\m@th\mathcode`\,="013B \fam\@ne#1$}\fi}
  1173. \def\text{\RIfM@\expandafter\text@\else\expandafter\text@@\fi}
  1174. \def\text@@#1{\leavevmode\hbox{#1}}
  1175. \def\mathhexbox@#1#2#3{\text{$\m@th\mathchar"#1#2#3$}}
  1176. \def\dag{{\mathhexbox@279}}
  1177. \def\ddag{{\mathhexbox@27A}}
  1178. \def\S{{\mathhexbox@278}}
  1179. \def\P{{\mathhexbox@27B}}
  1180. \newif\iffirstchoice@
  1181. \firstchoice@true
  1182. \def\text@#1{\mathchoice
  1183.  {\hbox{\everymath{\displaystyle}\def\textfonti{\the\textfont\@ne}%
  1184.   \def\textfontii{\the\textfont\tw@}\textdef@@ T#1}}
  1185.  {\hbox{\firstchoice@false
  1186.   \everymath{\textstyle}\def\textfonti{\the\textfont\@ne}%
  1187.   \def\textfontii{\the\textfont\tw@}\textdef@@ T#1}}
  1188.  {\hbox{\firstchoice@false
  1189.   \everymath{\scriptstyle}\def\textfonti{\the\scriptfont\@ne}%
  1190.   \def\textfontii{\the\scriptfont\tw@}\textdef@@ S\rm#1}}
  1191.  {\hbox{\firstchoice@false
  1192.   \everymath{\scriptscriptstyle}\def\textfonti
  1193.   {\the\scriptscriptfont\@ne}%
  1194.   \def\textfontii{\the\scriptscriptfont\tw@}\textdef@@ s\rm#1}}}
  1195. \def\textdef@@#1{\textdef@#1\rm\textdef@#1\bf\textdef@#1\sl\textdef@#1\it}
  1196. \def\rmfam{0}
  1197. \def\textdef@#1#2{%
  1198.  \DN@{\csname\expandafter\eat@\string#2fam\endcsname}%
  1199.  \if S#1\edef#2{\the\scriptfont\next@\relax}%
  1200.  \else\if s#1\edef#2{\the\scriptscriptfont\next@\relax}%
  1201.  \else\edef#2{\the\textfont\next@\relax}\fi\fi}
  1202. \scriptfont\itfam\tenit \scriptscriptfont\itfam\tenit
  1203. \scriptfont\slfam\tensl \scriptscriptfont\slfam\tensl
  1204. \newif\iftopfolded@
  1205. \newif\ifbotfolded@
  1206. \def\topfoldedtext{\topfolded@true\botfolded@false\foldedtext@}
  1207. \def\botfoldedtext{\botfolded@true\topfolded@false\foldedtext@}
  1208. \def\foldedtext{\topfolded@false\botfolded@false\foldedtext@}
  1209. \Invalid@\foldedwidth
  1210. \def\foldedtext@{\relaxnext@
  1211.  \DN@{\ifx\next\foldedwidth\let\next@\nextii@\else
  1212.   \DN@{\nextii@\foldedwidth{.3\hsize}}\fi\next@}%
  1213.  \DNii@\foldedwidth##1##2{\setbox\z@\vbox
  1214.   {\normalbaselines\hsize##1\relax
  1215.   \tolerance1600 \noindent\ignorespaces##2}\ifbotfolded@\boxz@\else
  1216.   \iftopfolded@\vtop{\unvbox\z@}\else\vcenter{\boxz@}\fi\fi}%
  1217.  \FN@\next@}
  1218. \def\bold{\RIfM@\expandafter\bold@\else
  1219.  \expandafter\nonmatherr@\expandafter\bold\fi}
  1220. \def\bold@#1{{\bold@@{#1}}}
  1221. \def\bold@@#1{\fam\bffam\relax#1}
  1222. \def\slanted{\RIfM@\expandafter\slanted@\else
  1223.  \expandafter\nonmatherr@\expandafter\slanted\fi}
  1224. \def\slanted@#1{{\slanted@@{#1}}}
  1225. \def\slanted@@#1{\fam\slfam\relax#1}
  1226. \def\roman{\RIfM@\expandafter\roman@\else
  1227.  \expandafter\nonmatherr@\expandafter\roman\fi}
  1228. \def\roman@#1{{\roman@@{#1}}}
  1229. \def\roman@@#1{\fam\rmfam\relax#1}
  1230. \def\italic{\RIfM@\expandafter\italic@\else
  1231.  \expandafter\nonmatherr@\expandafter\italic\fi}
  1232. \def\italic@#1{{\italic@@{#1}}}
  1233. \def\italic@@#1{\fam\itfam\relax#1}
  1234. \def\Cal{\RIfM@\expandafter\Cal@\else
  1235.  \expandafter\nonmatherr@\expandafter\Cal\fi}
  1236. \def\Cal@#1{{\Cal@@{#1}}}
  1237. \def\Cal@@#1{\noaccents@\fam\tw@#1}
  1238. \mathchardef\Gamma="0000
  1239. \mathchardef\Delta="0001
  1240. \mathchardef\Theta="0002
  1241. \mathchardef\Lambda="0003
  1242. \mathchardef\Xi="0004
  1243. \mathchardef\Pi="0005
  1244. \mathchardef\Sigma="0006
  1245. \mathchardef\Upsilon="0007
  1246. \mathchardef\Phi="0008
  1247. \mathchardef\Psi="0009
  1248. \mathchardef\Omega="000A
  1249. \mathchardef\varGamma="0100
  1250. \mathchardef\varDelta="0101
  1251. \mathchardef\varTheta="0102
  1252. \mathchardef\varLambda="0103
  1253. \mathchardef\varXi="0104
  1254. \mathchardef\varPi="0105
  1255. \mathchardef\varSigma="0106
  1256. \mathchardef\varUpsilon="0107
  1257. \mathchardef\varPhi="0108
  1258. \mathchardef\varPsi="0109
  1259. \mathchardef\varOmega="010A
  1260. \newif\ifmsamloaded@
  1261. \newif\ifmsbmloaded@
  1262. \newif\ifeufmloaded@
  1263. \let\alloc@@\alloc@
  1264. \def\hexnumber@#1{\ifcase#1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or
  1265.  9\or A\or B\or C\or D\or E\or F\fi}
  1266. \edef\bffam@{\hexnumber@\bffam}
  1267. \def\loadmsam{\msamloaded@true
  1268.  \font@\tenmsa=msam10
  1269.  \font@\sevenmsa=msam7
  1270.  \font@\fivemsa=msam5
  1271.  \alloc@@8\fam\chardef\sixt@@n\msafam
  1272.  \textfont\msafam=\tenmsa
  1273.  \scriptfont\msafam=\sevenmsa
  1274.  \scriptscriptfont\msafam=\fivemsa
  1275.  \edef\msafam@{\hexnumber@\msafam}%
  1276.  \mathchardef\dabar@"0\msafam@39
  1277.  \def\dashrightarrow{\mathrel{\dabar@\dabar@\mathchar"0\msafam@4B}}%
  1278.  \def\dashleftarrow{\mathrel{\mathchar"0\msafam@4C\dabar@\dabar@}}%
  1279.  \let\dasharrow\dashrightarrow
  1280.  \def\ulcorner{\delimiter"4\msafam@70\msafam@70 }
  1281.  \def\urcorner{\delimiter"5\msafam@71\msafam@71 }
  1282.  \def\llcorner{\delimiter"4\msafam@78\msafam@78 }
  1283.  \def\lrcorner{\delimiter"5\msafam@79\msafam@79 }
  1284.  \def\yen{{\mathhexbox@\msafam@55 }}
  1285.  \def\checkmark{{\mathhexbox@\msafam@58 }}
  1286.  \def\circledR{{\mathhexbox@\msafam@72 }}
  1287.  \def\maltese{{\mathhexbox@\msafam@7A }}}
  1288. \def\loadmsbm{\msbmloaded@true
  1289.  \font@\tenmsb=msbm10
  1290.  \font@\sevenmsb=msbm7
  1291.  \font@\fivemsb=msbm5
  1292.  \alloc@@8\fam\chardef\sixt@@n\msbfam
  1293.  \textfont\msbfam=\tenmsb
  1294.  \scriptfont\msbfam=\sevenmsb
  1295.  \scriptscriptfont\msbfam=\fivemsb
  1296.  \edef\msbfam@{\hexnumber@\msbfam}%
  1297.  }
  1298. \def\widehat#1{\ifmsbmloaded@
  1299.   \setboxz@h{$\m@th#1$}\ifdim\wdz@>\tw@ em\mathaccent"0\msbfam@5B{#1}\else
  1300.   \mathaccent"0362{#1}\fi
  1301.  \else\mathaccent"0362{#1}\fi}
  1302. \def\widetilde#1{\ifmsbmloaded@
  1303.   \setboxz@h{$\m@th#1$}\ifdim\wdz@>\tw@ em\mathaccent"0\msbfam@5D{#1}\else
  1304.   \mathaccent"0365{#1}\fi
  1305.  \else\mathaccent"0365{#1}\fi}
  1306. \def\newsymbol#1#2#3#4#5{\define#1{}\let\next@\relax
  1307.  \ifnum#2=\@ne\ifmsamloaded@\let\next@\msafam@\fi\else
  1308.  \ifnum#2=\tw@\ifmsbmloaded@\let\next@\msbfam@\fi\fi\fi
  1309.  \ifx\next@\relax
  1310.   \ifnum#2>\tw@\Err@{\Invalid@@\string\newsymbol}\else
  1311.   \ifnum#2=\@ne\Err@{You must first \string\loadmsam}\else
  1312.    \Err@{You must first \string\loadmsbm}\fi\fi
  1313.  \else
  1314.   \mathchardef#1="#3\next@#4#5
  1315.  \fi}
  1316. \def\UseAMSsymbols{\input amssym.tex\relax}
  1317. \def\Bbb{\RIfM@\expandafter\Bbb@\else
  1318.  \expandafter\nonmatherr@\expandafter\Bbb\fi}
  1319. \def\Bbb@#1{{\Bbb@@{#1}}}
  1320. \def\Bbb@@#1{\noaccents@\fam\msbfam\relax#1}
  1321. \def\loadeufm{\eufmloaded@true
  1322.  \font@\teneufm=eufm10
  1323.  \font@\seveneufm=eufm7
  1324.  \font@\fiveeufm=eufm5
  1325.  \alloc@@8\fam\chardef\sixt@@n\eufmfam
  1326.  \textfont\eufmfam=\teneufm
  1327.  \scriptfont\eufmfam=\seveneufm
  1328.  \scriptscriptfont\eufmfam=\fiveeufm}
  1329. \def\frak{\RIfM@\expandafter\frak@\else
  1330.  \expandafter\nonmatherr@\expandafter\frak\fi}
  1331. \def\frak@#1{{\frak@@{#1}}}
  1332. \def\frak@@#1{\fam\eufmfam\relax#1}
  1333. \let\goth\frak
  1334. \newif\ifcmmibloaded@
  1335. \newif\ifcmbsyloaded@
  1336. \def\loadbold{\cmmibloaded@true\cmbsyloaded@true
  1337.  \font@\tencmmib=cmmib10 \font@\sevencmmib=cmmib7 \font@\fivecmmib=cmmib5
  1338.  \skewchar\tencmmib='177 \skewchar\sevencmmib='177 \skewchar\fivecmmib='177
  1339.  \alloc@@8\fam\chardef\sixt@@n\cmmibfam
  1340.  \textfont\cmmibfam=\tencmmib
  1341.  \scriptfont\cmmibfam=\sevencmmib
  1342.  \scriptscriptfont\cmmibfam=\fivecmmib
  1343.  \edef\cmmibfam@{\hexnumber@\cmmibfam}%
  1344.  \font@\tencmbsy=cmbsy10 \font@\sevencmbsy=cmbsy7 \font@\fivecmbsy=cmbsy5
  1345.  \skewchar\tencmbsy='60 \skewchar\sevencmbsy='60 \skewchar\fivecmbsy='60
  1346.  \alloc@@8\fam\chardef\sixt@@n\cmbsyfam
  1347.  \textfont\cmbsyfam=\tencmbsy
  1348.  \scriptfont\cmbsyfam=\sevencmbsy
  1349.  \scriptscriptfont\cmbsyfam=\fivecmbsy
  1350.  \edef\cmbsyfam@{\hexnumber@\cmbsyfam}}
  1351. \def\mathchari@#1#2#3{\ifcmmibloaded@\mathchar"#1\cmmibfam@#2#3 \else
  1352.  \Err@{First bold symbol font not loaded}\fi}
  1353. \def\mathcharii@#1#2#3{\ifcmbsyloaded@\mathchar"#1\cmbsyfam@#2#3 \else
  1354.  \Err@{Second bold symbol font not loaded}\fi}
  1355. \def\boldkey#1{\ifcat\noexpand#1A%
  1356.   \ifcmmibloaded@{\fam\cmmibfam#1}\else
  1357.    \Err@{First bold symbol font not loaded}\fi
  1358.  \else
  1359.  \ifx#1!\mathchar"5\bffam@21 \else
  1360.  \ifx#1(\mathchar"4\bffam@28 \else\ifx#1)\mathchar"5\bffam@29 \else
  1361.  \ifx#1+\mathchar"2\bffam@2B \else\ifx#1:\mathchar"3\bffam@3A \else
  1362.  \ifx#1;\mathchar"6\bffam@3B \else\ifx#1=\mathchar"3\bffam@3D \else
  1363.  \ifx#1?\mathchar"5\bffam@3F \else\ifx#1[\mathchar"4\bffam@5B \else
  1364.  \ifx#1]\mathchar"5\bffam@5D \else
  1365.  \ifx#1,\mathchari@63B \else
  1366.  \ifx#1-\mathcharii@200 \else
  1367.  \ifx#1.\mathchari@03A \else
  1368.  \ifx#1/\mathchari@03D \else
  1369.  \ifx#1<\mathchari@33C \else
  1370.  \ifx#1>\mathchari@33E \else
  1371.  \ifx#1*\mathcharii@203 \else
  1372.  \ifx#1|\mathcharii@06A \else
  1373.  \ifx#10\bold0\else\ifx#11\bold1\else\ifx#12\bold2\else\ifx#13\bold3\else
  1374.  \ifx#14\bold4\else\ifx#15\bold5\else\ifx#16\bold6\else\ifx#17\bold7\else
  1375.  \ifx#18\bold8\else\ifx#19\bold9\else
  1376.   \Err@{\string\boldkey\space can't be used with #1}%
  1377.  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
  1378.  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
  1379. \def\boldsymbol#1{%
  1380.  \DN@{\Err@{You can't use \string\boldsymbol\space with \string#1}#1}%
  1381.  \ifcat\noexpand#1A%
  1382.    \let\next@\relax
  1383.   \ifcmmibloaded@{\fam\cmmibfam#1}\else\Err@{First bold symbol
  1384.    font not loaded}\fi
  1385.  \else
  1386.   \xdef\meaning@{\meaning#1.........}%
  1387.   \expandafter\math@\meaning@\math@
  1388.   \ifmath@
  1389.    \expandafter\mathch@\meaning@\mathch@
  1390.    \ifmathch@
  1391.     \expandafter\boldsymbol@@\meaning@\boldsymbol@@
  1392.    \fi
  1393.   \else
  1394.    \expandafter\macro@\meaning@\macro@
  1395.    \expandafter\delim@\meaning@\delim@
  1396.    \ifdelim@
  1397.     \expandafter\delim@@\meaning@\delim@@
  1398.    \else
  1399.     \boldsymbol@{#1}%
  1400.    \fi
  1401.   \fi
  1402.  \fi
  1403.  \next@}
  1404. \def\mathhexboxii@#1#2{\ifcmbsyloaded@\mathhexbox@{\cmbsyfam@}{#1}{#2}\else
  1405.   \Err@{Second bold symbol font not loaded}\fi}
  1406. \def\boldsymbol@#1{\let\next@\relax\let\next#1%
  1407.  \ifx\next\cdot\mathcharii@201 \else
  1408.  \ifx\next\prime{{\null\mathcharii@030 \null}}\else
  1409.  \ifx\next\lbrack\mathchar"4\bffam@5B \else
  1410.  \ifx\next\rbrack\mathchar"5\bffam@5D \else
  1411.  \ifx\next\{\mathcharii@466 \else
  1412.  \ifx\next\lbrace\mathcharii@466 \else
  1413.  \ifx\next\}\mathcharii@567 \else
  1414.  \ifx\next\rbrace\mathcharii@567 \else
  1415.  \ifx\next\surd{{\mathcharii@170}}\else
  1416.  \ifx\next\S{{\mathhexboxii@78}}\else
  1417.  \ifx\next\P{{\mathhexboxii@7B}}\else
  1418.  \ifx\next\dag{{\mathhexboxii@79}}\else
  1419.  \ifx\next\ddag{{\mathhexboxii@7A}}\else
  1420.  \DN@{\Err@{You can't use \string\boldsymbol\space with \string#1}#1}%
  1421.  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
  1422. \def\boldsymbol@@#1.#2\boldsymbol@@{\classnum@#1 \count@@@\classnum@        %1
  1423.  \divide\classnum@4096 \count@\classnum@                                    %2
  1424.  \multiply\count@4096 \advance\count@@@-\count@ \count@@\count@@@           %3
  1425.  \divide\count@@@\@cclvi \count@\count@@                                    %4
  1426.  \multiply\count@@@\@cclvi \advance\count@@-\count@@@                       %5
  1427.  \divide\count@@@\@cclvi                                                    %6
  1428.  \multiply\classnum@4096 \advance\classnum@\count@@                         %7
  1429.  \ifnum\count@@@=\z@                                                        %8
  1430.   \count@"\bffam@ \multiply\count@\@cclvi
  1431.   \advance\classnum@\count@
  1432.   \DN@{\mathchar\number\classnum@}%
  1433.  \else
  1434.   \ifnum\count@@@=\@ne                                                      %9
  1435.    \ifcmmibloaded@
  1436.    \count@"\cmmibfam@ \multiply\count@\@cclvi
  1437.    \advance\classnum@\count@
  1438.    \DN@{\mathchar\number\classnum@}%
  1439.    \else\DN@{\Err@{First bold symbol font not loaded}}\fi
  1440.   \else
  1441.    \ifnum\count@@@=\tw@                                                    %10
  1442.   \ifcmbsyloaded@
  1443.     \count@"\cmbsyfam@ \multiply\count@\@cclvi
  1444.     \advance\classnum@\count@
  1445.     \DN@{\mathchar\number\classnum@}%
  1446.   \else\DN@{\Err@{Second bold symbol font not loaded}}\fi
  1447.   \fi
  1448.  \fi
  1449. \fi}
  1450. \newif\ifdelim@
  1451. \newcount\delimcount@
  1452. {\uccode`6=`\\ \uccode`7=`d \uccode`8=`e \uccode`9=`l
  1453.  \uppercase{\gdef\delim@#1#2#3#4#5\delim@
  1454.   {\delim@false\ifx 6#1\ifx 7#2\ifx 8#3\ifx 9#4\delim@true
  1455.    \xdef\meaning@{#5}\fi\fi\fi\fi}}}
  1456. \def\delim@@#1"#2#3#4#5#6\delim@@{\if#32%
  1457. \let\next@\relax
  1458.  \ifcmbsyloaded@
  1459.  \mathcharii@#2#4#5 \else\Err@{Second bold family not loaded}\fi\fi}
  1460. \def\vert{\delimiter"026A30C }
  1461. \def\Vert{\delimiter"026B30D }
  1462. \let\|\Vert
  1463. \def\backslash{\delimiter"026E30F }
  1464. \def\boldkeydots@#1{\bold@true\let\next=#1\let\delayed@=#1\mdots@@
  1465.  \boldkey#1\bold@false}  % = required!
  1466. \def\boldsymboldots@#1{\bold@true\let\next#1\let\delayed@#1\mdots@@
  1467.  \boldsymbol#1\bold@false}
  1468. \newif\ifeufbloaded@
  1469. \def\loadeufb{\eufbloaded@true
  1470.  \font@\teneufb=eufb10
  1471.  \font@\seveneufb=eufb7
  1472.  \font@\fiveeufb=eufb5
  1473.  \alloc@@8\fam\chardef\sixt@@n\eufbfam
  1474.  \textfont\eufbfam=\teneufb
  1475.  \scriptfont\eufbfam=\seveneufb
  1476.  \scriptscriptfont\eufbfam=\fiveeufb
  1477.  \edef\eufbfam@{\hexnumber@\eufbfam}}
  1478. \newif\ifeusmloaded@
  1479. \def\loadeusm{\eusmloaded@true
  1480.  \font@\teneusm=eusm10
  1481.  \font@\seveneusm=eusm7
  1482.  \font@\fiveeusm=eusm5
  1483.  \alloc@@8\fam\chardef\sixt@@n\eusmfam
  1484.  \textfont\eusmfam=\teneusm
  1485.  \scriptfont\eusmfam=\seveneusm
  1486.  \scriptscriptfont\eusmfam=\fiveeusm
  1487.  \edef\eusmfam@{\hexnumber@\eusmfam}}
  1488. \newif\ifeusbloaded@
  1489. \def\loadeusb{\eusbloaded@true
  1490.  \font@\teneusb=eusb10
  1491.  \font@\seveneusb=eusb7
  1492.  \font@\fiveeusb=eusb5
  1493.  \alloc@@8\fam\chardef\sixt@@n\eusbfam
  1494.  \textfont\eusbfam=\teneusb
  1495.  \scriptfont\eusbfam=\seveneusb
  1496.  \scriptscriptfont\eusbfam=\fiveeusb
  1497.  \edef\eusbfam@{\hexnumber@\eusbfam}}
  1498. \newif\ifeurmloaded@
  1499. \def\loadeurm{\eurmloaded@true
  1500.  \font@\teneurm=eurm10
  1501.  \font@\seveneurm=eurm7
  1502.  \font@\fiveeurm=eurm5
  1503.  \alloc@@8\fam\chardef\sixt@@n\eurmfam
  1504.  \textfont\eurmfam=\teneurm
  1505.  \scriptfont\eurmfam=\seveneurm
  1506.  \scriptscriptfont\eurmfam=\fiveeurm
  1507.  \edef\eurmfam@{\hexnumber@\eurmfam}}
  1508. \newif\ifeurbloaded@
  1509. \def\loadeurb{\eurbloaded@true
  1510.  \font@\teneurb=eurb10
  1511.  \font@\seveneurb=eurb7
  1512.  \font@\fiveeurb=eurb5
  1513.  \alloc@@8\fam\chardef\sixt@@n\eurbfam
  1514.  \textfont\eurbfam=\teneurb
  1515.  \scriptfont\eurbfam=\seveneurb
  1516.  \scriptscriptfont\eurbfam=\fiveeurb
  1517.  \edef\eurbfam@{\hexnumber@\eurbfam}}
  1518. \def\accentclass@{7}
  1519. \def\noaccents@{\def\accentclass@{0}}
  1520. \def\makeacc@#1#2{\def#1{\mathaccent"\accentclass@#2 }}
  1521. \makeacc@\hat{05E}
  1522. \makeacc@\check{014}
  1523. \makeacc@\tilde{07E}
  1524. \makeacc@\acute{013}
  1525. \makeacc@\grave{012}
  1526. \makeacc@\dot{05F}
  1527. \makeacc@\ddot{07F}
  1528. \makeacc@\breve{015}
  1529. \makeacc@\bar{016}
  1530. \def\vec{\mathaccent"017E }
  1531. \newcount\skewcharcount@
  1532. \newcount\familycount@
  1533. \def\theskewchar@{\familycount@\@ne
  1534.  \global\skewcharcount@\the\skewchar\textfont\@ne                           %1
  1535.  \ifnum\fam>\m@ne\ifnum\fam<16
  1536.   \global\familycount@\the\fam\relax
  1537.   \global\skewcharcount@\the\skewchar\textfont\the\fam\relax\fi\fi          %2
  1538.  \ifnum\skewcharcount@>\m@ne
  1539.   \ifnum\skewcharcount@<128
  1540.   \multiply\familycount@256
  1541.   \global\advance\skewcharcount@\familycount@
  1542.   \global\advance\skewcharcount@28672
  1543.   \mathchar\skewcharcount@\else
  1544.   \global\skewcharcount@\m@ne\fi\else
  1545.  \global\skewcharcount@\m@ne\fi}                                            %3
  1546. \newcount\pointcount@
  1547. \def\getpoints@#1.#2\getpoints@{\pointcount@#1 }
  1548. \newdimen\accentdimen@
  1549. \newcount\accentmu@
  1550. \def\dimentomu@{\multiply\accentdimen@ 100
  1551.  \expandafter\getpoints@\the\accentdimen@\getpoints@
  1552.  \multiply\pointcount@18
  1553.  \divide\pointcount@\@m
  1554.  \global\accentmu@\pointcount@}
  1555. \def\Makeacc@#1#2{\def#1{\RIfM@\DN@{\mathaccent@
  1556.  {"\accentclass@#2 }}\else\DN@{\nonmatherr@{#1}}\fi\next@}}
  1557. \def\unbracefonts@{\let\Cal@\Cal@@\let\roman@\roman@@\let\bold@\bold@@
  1558.  \let\slanted@\slanted@@}
  1559. \def\mathaccent@#1#2{\ifnum\fam=\m@ne\xdef\thefam@{1}\else
  1560.  \xdef\thefam@{\the\fam}\fi                                                 %1
  1561.  \accentdimen@\z@                                                           %2
  1562.  \setboxz@h{\unbracefonts@$\m@th\fam\thefam@\relax#2$}%                     %3
  1563.  \ifdim\accentdimen@=\z@\DN@{\mathaccent#1{#2}}%                            %4
  1564.   \setbox@ne\hbox{\unbracefonts@$\m@th\fam\thefam@\relax#2\theskewchar@$}% %5a
  1565.   \setbox\tw@\hbox{$\m@th\ifnum\skewcharcount@=\m@ne\else
  1566.    \mathchar\skewcharcount@\fi$}%                                          %5b
  1567.   \global\accentdimen@\wd@ne\global\advance\accentdimen@-\wdz@
  1568.   \global\advance\accentdimen@-\wd\tw@                                     %5c
  1569.   \global\multiply\accentdimen@\tw@
  1570.   \dimentomu@\global\advance\accentmu@\@ne                                 %5d
  1571.  \else\DN@{{\mathaccent#1{#2\mkern\accentmu@ mu}%
  1572.     \mkern-\accentmu@ mu}{}}\fi                                             %6
  1573.  \next@}\Makeacc@\Hat{05E}
  1574. \Makeacc@\Check{014}
  1575. \Makeacc@\Tilde{07E}
  1576. \Makeacc@\Acute{013}
  1577. \Makeacc@\Grave{012}
  1578. \Makeacc@\Dot{05F}
  1579. \Makeacc@\Ddot{07F}
  1580. \Makeacc@\Breve{015}
  1581. \Makeacc@\Bar{016}
  1582. \def\Vec{\RIfM@\DN@{\mathaccent@{"017E }}\else
  1583.  \DN@{\nonmatherr@\Vec}\fi\next@}
  1584. \def\newbox@{\alloc@4\box\chardef\insc@unt}
  1585. \def\accentedsymbol#1#2{\expandafter\newbox@\csname\expandafter
  1586.   \eat@\string#1@box\endcsname
  1587.  \expandafter\setbox\csname\expandafter\eat@
  1588.   \string#1@box\endcsname\hbox{$\m@th#2$}\define
  1589.   #1{\expandafter\copy\csname\expandafter\eat@\string#1@box\endcsname{}}}
  1590. \def\sqrt#1{\radical"270370 {#1}}
  1591. \let\underline@\underline
  1592. \let\overline@\overline
  1593. \def\underline#1{\underline@{#1}}
  1594. \def\overline#1{\overline@{#1}}
  1595. \Invalid@\leftroot
  1596. \Invalid@\uproot
  1597. \newcount\uproot@
  1598. \newcount\leftroot@
  1599. \def\root{\relaxnext@
  1600.   \DN@{\ifx\next\uproot\let\next@\nextii@\else
  1601.    \ifx\next\leftroot\let\next@\nextiii@\else
  1602.    \let\next@\plainroot@\fi\fi\next@}%
  1603.   \DNii@\uproot##1{\uproot@##1\relax\FN@\nextiv@}%
  1604.   \def\nextiv@{\ifx\next\space@\DN@. {\FN@\nextv@}\else
  1605.    \DN@.{\FN@\nextv@}\fi\next@.}%
  1606.   \def\nextv@{\ifx\next\leftroot\let\next@\nextvi@\else
  1607.    \let\next@\plainroot@\fi\next@}%
  1608.   \def\nextvi@\leftroot##1{\leftroot@##1\relax\plainroot@}%
  1609.    \def\nextiii@\leftroot##1{\leftroot@##1\relax\FN@\nextvii@}%
  1610.   \def\nextvii@{\ifx\next\space@
  1611.    \DN@. {\FN@\nextviii@}\else
  1612.    \DN@.{\FN@\nextviii@}\fi\next@.}%
  1613.   \def\nextviii@{\ifx\next\uproot\let\next@\nextix@\else
  1614.    \let\next@\plainroot@\fi\next@}%
  1615.   \def\nextix@\uproot##1{\uproot@##1\relax\plainroot@}%
  1616.   \bgroup\uproot@\z@\leftroot@\z@\FN@\next@}
  1617. \def\plainroot@#1\of#2{\setbox\rootbox\hbox{$\m@th\scriptscriptstyle{#1}$}%
  1618.  \mathchoice{\r@@t\displaystyle{#2}}{\r@@t\textstyle{#2}}
  1619.  {\r@@t\scriptstyle{#2}}{\r@@t\scriptscriptstyle{#2}}\egroup}
  1620. \def\r@@t#1#2{\setboxz@h{$\m@th#1\sqrt{#2}$}%
  1621.  \dimen@\ht\z@\advance\dimen@-\dp\z@
  1622.  \setbox@ne\hbox{$\m@th#1\mskip\uproot@ mu$}\advance\dimen@ by1.667\wd@ne
  1623.  \mkern-\leftroot@ mu\mkern5mu\raise.6\dimen@\copy\rootbox
  1624.  \mkern-10mu\mkern\leftroot@ mu\boxz@}
  1625. \def\boxed#1{\setboxz@h{$\m@th\displaystyle{#1}$}\dimen@.4\ex@
  1626.  \advance\dimen@3\ex@\advance\dimen@\dp\z@
  1627.  \hbox{\lower\dimen@\hbox{%
  1628.  \vbox{\hrule height.4\ex@
  1629.  \hbox{\vrule width.4\ex@\hskip3\ex@\vbox{\vskip3\ex@\boxz@\vskip3\ex@}%
  1630.  \hskip3\ex@\vrule width.4\ex@}\hrule height.4\ex@}%
  1631.  }}}
  1632. \let\ampersand@\relax
  1633. \newdimen\minaw@
  1634. \minaw@11.11128\ex@
  1635. \newdimen\minCDaw@
  1636. \minCDaw@2.5pc
  1637. \def\minCDarrowwidth#1{\RIfMIfI@\onlydmatherr@\minCDarrowwidth
  1638.  \else\minCDaw@#1\relax\fi\else\onlydmatherr@\minCDarrowwidth\fi}
  1639. \newif\ifCD@
  1640. \def\CD{\bgroup\vspace@\relax\iffalse{\fi\let\ampersand@&\iffalse}\fi
  1641.  \CD@true\vcenter\bgroup\Let@\tabskip\z@skip\baselineskip20\ex@
  1642.  \lineskip3\ex@\lineskiplimit3\ex@\halign\bgroup
  1643.  &\hfill$\m@th##$\hfill\crcr}
  1644. \def\endCD{\crcr\egroup\egroup\egroup}
  1645. \newdimen\bigaw@
  1646. \atdef@>#1>#2>{\ampersand@                                                  %1
  1647.  \setboxz@h{$\m@th\ssize\;{#1}\;\;$}%                                       %2
  1648.  \setbox@ne\hbox{$\m@th\ssize\;{#2}\;\;$}%                                  %3
  1649.  \setbox\tw@\hbox{$\m@th#2$}%                                               %4
  1650.  \ifCD@\global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi                 %5
  1651.  \ifdim\wdz@>\bigaw@\global\bigaw@\wdz@\fi
  1652.  \ifdim\wd@ne>\bigaw@\global\bigaw@\wd@ne\fi                                %6
  1653.  \ifCD@\hskip.5em\fi                                                        %7
  1654.  \ifdim\wd\tw@>\z@
  1655.   \mathrel{\mathop{\hbox to\bigaw@{\rightarrowfill}}\limits^{#1}_{#2}}%     %8
  1656.  \else\mathrel{\mathop{\hbox to\bigaw@{\rightarrowfill}}\limits^{#1}}\fi    %9
  1657.  \ifCD@\hskip.5em\fi                                                       %10
  1658.  \ampersand@}                                                              %11
  1659. \atdef@<#1<#2<{\ampersand@\setboxz@h{$\m@th\ssize\;\;{#1}\;$}%
  1660.  \setbox@ne\hbox{$\m@th\ssize\;\;{#2}\;$}\setbox\tw@\hbox{$\m@th#2$}%
  1661.  \ifCD@\global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi
  1662.  \ifdim\wdz@>\bigaw@\global\bigaw@\wdz@\fi
  1663.  \ifdim\wd@ne>\bigaw@\global\bigaw@\wd@ne\fi
  1664.  \ifCD@\hskip.5em\fi
  1665.  \ifdim\wd\tw@>\z@
  1666.   \mathrel{\mathop{\hbox to\bigaw@{\leftarrowfill}}\limits^{#1}_{#2}}\else
  1667.   \mathrel{\mathop{\hbox to\bigaw@{\leftarrowfill}}\limits^{#1}}\fi
  1668.  \ifCD@\hskip.5em\fi\ampersand@}
  1669. \atdef@)#1)#2){\ampersand@
  1670.  \setboxz@h{$\m@th\ssize\;{#1}\;\;$}%
  1671.  \setbox@ne\hbox{$\m@th\ssize\;{#2}\;\;$}%
  1672.  \setbox\tw@\hbox{$\m@th#2$}%
  1673.  \ifCD@
  1674.  \global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi
  1675.  \ifdim\wdz@>\bigaw@\global\bigaw@\wdz@\fi
  1676.  \ifdim\wd@ne>\bigaw@\global\bigaw@\wd@ne\fi
  1677.  \ifCD@\hskip.5em\fi
  1678.  \ifdim\wd\tw@>\z@
  1679.   \mathrel{\mathop{\hbox to\bigaw@{\rightarrowfill}}\limits^{#1}_{#2}}%
  1680.  \else\mathrel{\mathop{\hbox to\bigaw@{\rightarrowfill}}\limits^{#1}}\fi
  1681.  \ifCD@\hskip.5em\fi
  1682.  \ampersand@}
  1683. \atdef@(#1(#2({\ampersand@\setboxz@h{$\m@th\ssize\;\;{#1}\;$}%
  1684.  \setbox@ne\hbox{$\m@th\ssize\;\;{#2}\;$}\setbox\tw@\hbox{$\m@th#2$}%
  1685.  \ifCD@\global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi
  1686.  \ifdim\wdz@>\bigaw@\global\bigaw@\wdz@\fi
  1687.  \ifdim\wd@ne>\bigaw@\global\bigaw@\wd@ne\fi
  1688.  \ifCD@\hskip.5em\fi
  1689.  \ifdim\wd\tw@>\z@
  1690.   \mathrel{\mathop{\hbox to\bigaw@{\leftarrowfill}}\limits^{#1}_{#2}}\else
  1691.   \mathrel{\mathop{\hbox to\bigaw@{\leftarrowfill}}\limits^{#1}}\fi
  1692.  \ifCD@\hskip.5em\fi\ampersand@}
  1693. \atdef@ A#1A#2A{\llap{$\m@th\vcenter{\hbox
  1694.  {$\ssize#1$}}$}\Big\uparrow\rlap{$\m@th\vcenter{\hbox{$\ssize#2$}}$}&&}
  1695. \atdef@ V#1V#2V{\llap{$\m@th\vcenter{\hbox
  1696.  {$\ssize#1$}}$}\Big\downarrow\rlap{$\m@th\vcenter{\hbox{$\ssize#2$}}$}&&}
  1697. \atdef@={&\hskip.5em\mathrel
  1698.  {\vbox{\hrule width\minCDaw@\vskip3\ex@\hrule width
  1699.  \minCDaw@}}\hskip.5em&}
  1700. \atdef@|{\Big\Vert&&}
  1701. \atdef@@\vert{\Big\Vert&&}
  1702. \def\pretend#1\haswidth#2{\setboxz@h{$\m@th\scriptstyle{#2}$}\hbox
  1703.  to\wdz@{\hfill$\m@th\scriptstyle{#1}$\hfill}}
  1704. \def\pmb{\RIfM@\expandafter\mathpalette\expandafter\pmb@\else
  1705.  \expandafter\pmb@@\fi}
  1706. \def\pmb@@#1{\leavevmode\setboxz@h{#1}\kern-.025em\copy\z@\kern-\wdz@
  1707.  \kern-.05em\copy\z@\kern-\wdz@\kern-.025em\raise.0433em\boxz@}
  1708. \def\binrel@@#1{\ifdim\wd2<\z@\mathbin{#1}\else\ifdim\wd\tw@>\z@
  1709.  \mathrel{#1}\else{#1}\fi\fi}
  1710. \newdimen\pmbraise@
  1711. \def\pmb@#1#2{\setbox\thr@@\hbox{$\m@th#1{#2}$}%
  1712.  \setbox4 \hbox{$\m@th#1\mkern.7794mu$}\pmbraise@\wd4
  1713.  \binrel@{#2}\binrel@@{\mkern-.45mu\copy\thr@@\kern-\wd\thr@@
  1714.  \mkern-.9mu\copy\thr@@\kern-\wd\thr@@\mkern-.45mu\raise\pmbraise@\box\thr@@}}
  1715. \def\documentstyle#1{\input #1.sty\relax}
  1716. \font\dummyft@=dummy
  1717. \fontdimen1 \dummyft@=\z@
  1718. \fontdimen2 \dummyft@=\z@
  1719. \fontdimen3 \dummyft@=\z@
  1720. \fontdimen4 \dummyft@=\z@
  1721. \fontdimen5 \dummyft@=\z@
  1722. \fontdimen6 \dummyft@=\z@
  1723. \fontdimen7 \dummyft@=\z@
  1724. \fontdimen8 \dummyft@=\z@
  1725. \fontdimen9 \dummyft@=\z@
  1726. \fontdimen10 \dummyft@=\z@
  1727. \fontdimen11 \dummyft@=\z@
  1728. \fontdimen12 \dummyft@=\z@
  1729. \fontdimen13 \dummyft@=\z@
  1730. \fontdimen14 \dummyft@=\z@
  1731. \fontdimen15 \dummyft@=\z@
  1732. \fontdimen16 \dummyft@=\z@
  1733. \fontdimen17 \dummyft@=\z@
  1734. \fontdimen18 \dummyft@=\z@
  1735. \fontdimen19 \dummyft@=\z@
  1736. \fontdimen20 \dummyft@=\z@
  1737. \fontdimen21 \dummyft@=\z@
  1738. \fontdimen22 \dummyft@=\z@
  1739. \def\fontlist@{\\{\tenrm}\\{\sevenrm}\\{\fiverm}\\{\teni}\\{\seveni}%
  1740.  \\{\fivei}\\{\tensy}\\{\sevensy}\\{\fivesy}\\{\tenex}\\{\tenbf}\\{\sevenbf}%
  1741.  \\{\fivebf}\\{\tensl}\\{\tenit}}
  1742. \def\font@#1=#2 {\rightappend@#1\to\fontlist@\font#1=#2 }
  1743. \def\dodummy@{{\def\\##1{\global\let##1\dummyft@}\fontlist@}}
  1744. \def\nopages@{\output={\setbox\z@\box255 \deadcycles\z@}%
  1745.  \alloc@5\toks\toksdef\@cclvi\output}
  1746. \let\galleys\nopages@
  1747. \newif\ifsyntax@
  1748. \newcount\countxviii@
  1749. \def\syntax{\syntax@true\dodummy@\countxviii@\count18
  1750.  \loop\ifnum\countxviii@>\m@ne\textfont\countxviii@=\dummyft@
  1751.  \scriptfont\countxviii@=\dummyft@\scriptscriptfont\countxviii@=\dummyft@
  1752.  \advance\countxviii@\m@ne\repeat                                           %1
  1753.  \dummyft@\tracinglostchars\z@\nopages@\frenchspacing\hbadness\@M}
  1754. \def\S@{S } \def\G@{G } \def\P@{P }
  1755. \newif\ifbadans@
  1756. \def\printoptions{\W@{Do you want S(yntax check),
  1757.   G(alleys) or P(ages)?^^JType S, G or P, follow by <return>: }\loop
  1758.  \read\m@ne to\ans@
  1759.  \xdef\next@{\def\noexpand\Ans@{\ans@}}\uppercase\expandafter{\next@}%      %1
  1760.  \ifx\Ans@\S@\badans@false\syntax\else
  1761.  \ifx\Ans@\G@\badans@false\galleys\else
  1762.  \ifx\Ans@\P@\badans@false\else
  1763.  \badans@true\fi\fi\fi
  1764.  \ifbadans@\W@{Type S, G or P, follow by <return>: }%
  1765.  \repeat}
  1766. \def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne
  1767.  \ch@ck#1#4#2\allocationnumber=\count1#1
  1768.  \global#3#5=\allocationnumber
  1769.  \ifalloc@\wlog{\string#5=\string#2\the\allocationnumber}\fi}
  1770. \def\document{\def\alloclist@{}\def\fontlist@{}}
  1771. \let\enddocument\bye
  1772. \let\plainproclaim\proclaim
  1773. \let\plainfootnote\footnote
  1774. \let\proclaim\undefined
  1775. \let\footnote\undefined
  1776. \let\=\undefined
  1777. \let\>\undefined
  1778. \let\cal\undefined
  1779. \let\mit\undefined
  1780. \let\oldstyle\undefined
  1781. \catcode`\@=\active
  1782.