From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- systems/knuth/local/lib/amstex.tex | 1797 ++++++++++++++++++++++++++++++++++++ 1 file changed, 1797 insertions(+) create mode 100644 systems/knuth/local/lib/amstex.tex (limited to 'systems/knuth/local/lib/amstex.tex') diff --git a/systems/knuth/local/lib/amstex.tex b/systems/knuth/local/lib/amstex.tex new file mode 100644 index 0000000000..96502696d6 --- /dev/null +++ b/systems/knuth/local/lib/amstex.tex @@ -0,0 +1,1797 @@ +%% @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 Group, +%% P. O. Box 6248, +%% Providence, RI 02940, +%% USA", +%% telephone="401-455-4080 or (in the USA) 800-321-4AMS", +%% email="Internet: Tech-Support@Math.AMS.com", +%% 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\captionwidth@-1.5in +\def\pagewidth#1{\hsize#1\relax + \captionwidth@\hsize\advance\captionwidth@-1.5in} +\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@ +\ex@.2326ex +\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@ +\dotsspace@1.5mu +\def\strip@#1 {#1} +\def\spacehdots#1\for#2{\multispan{#2}\xleaders + \hbox{$\m@th\mkern\strip@#1 \dotsspace@.\mkern\strip@#1 \dotsspace@$}\hfill} +\def\hdotsfor#1{\spacehdots\@ne\for{#1}} +\def\multispan@#1{\omit\mscount#1\unskip\loop\ifnum\mscount>\@ne\sp@n\repeat} +\def\spaceinnerhdots#1\for#2\after#3{\multispan@{\strip@#2 }#3\xleaders + \hbox{$\m@th\mkern\strip@#1 \dotsspace@.\mkern\strip@#1 \dotsspace@$}\hfill} +\def\innerhdotsfor#1\after#2{\spaceinnerhdots\@ne\for#1\after{#2}} +\def\cases{\bgroup\spreadmlines@\jot\left\{\,\matrix\format\l&\quad\l\\} +\def\endcases{\endmatrix\right.\egroup} +\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}$}\dimen@.4\ex@ + \advance\dimen@3\ex@\advance\dimen@\dp\z@ + \hbox{\lower\dimen@\hbox{% + \vbox{\hrule height.4\ex@ + \hbox{\vrule width.4\ex@\hskip3\ex@\vbox{\vskip3\ex@\boxz@\vskip3\ex@}% + \hskip3\ex@\vrule width.4\ex@}\hrule height.4\ex@}% + }}} +\message{commutative diagrams,} +\let\ampersand@\relax +\newdimen\minaw@ +\minaw@11.11128\ex@ +\newdimen\minCDaw@ +\minCDaw@2.5pc +\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 : }% + \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 . + \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 -- cgit v1.2.3