guess we don't want the build dir
[latex2e.git] / trunk / required / amsmath / amstex.sty
blobedbea813bfaa516449c4abf42b13ced3b7a161e0
2 % \iffalse meta-comment
4 % Copyright 1995, 1999 American Mathematical Society.
5 % Copyright 2016 LaTeX3 Project and American Mathematical Society.
7 % This work may be distributed and/or modified under the
8 % conditions of the LaTeX Project Public License, either version 1.3c
9 % of this license or (at your option) any later version.
10 % The latest version of this license is in
11 % http://www.latex-project.org/lppl.txt
12 % and version 1.3c or later is part of all distributions of LaTeX
13 % version 2005/12/01 or later.
15 % This work has the LPPL maintenance status `maintained'.
17 % The Current Maintainer of this work is the LaTeX3 Project.
19 % \fi
21 % This file was generated from version 1.2beta of amstex.dtx and then
22 % underwent additional hand-editing.
23 \if@compatibility \else \catcode`\%=9 \fi
24 %\PackageError{amstex}{%
25 %Package `amstex' is obsolete, substituting `amsmath'}{You
26 %should use \string\usepackage{amsmath} instead. If
27 %that does not give satisfactory results, rename your previous copy
28 %of amstex.sty to amstex12beta.sty and call it with
29 %\string\usepackage{amstex12beta}.}
30 %\catcode`\%=14 \relax \input{amsmath.sty}\endinput
32 \ProvidesPackage{amstex}[1999/11/15 v1.2f AMS extra math features]
33 \let\@amsfonts=T
34 \DeclareOption{noamsfonts}{\let\@amsfonts=F}
35 \DeclareOption{psamsfonts}{\let\@amsfonts=P}
36 \DeclareOption{intlimits}{\let\ilimits@\displaylimits}
37 \DeclareOption{nointlimits}{\let\ilimits@\nolimits}
38 \DeclareOption{sumlimits}{\let\slimits@\displaylimits}
39 \DeclareOption{nosumlimits}{\let\slimits@\nolimits}
40 \DeclareOption{namelimits}{\let\nlimits@\displaylimits}
41 \DeclareOption{nonamelimits}{\let\nlimits@\nolimits}
42 \newif\ifctagsplit@
43 \newif\iftagsleft@
44 \DeclareOption{leqno}{\tagsleft@true}
45 \DeclareOption{reqno}{\tagsleft@false}
46 \DeclareOption{centertags}{\ctagsplit@true}
47 \DeclareOption{tbtags}{\ctagsplit@false}
48 \newif\if@fleqn
49 \newskip\@mathmargin
50 \@mathmargin\@centering
51 \DeclareOption{fleqn}{%
52 \@fleqntrue
53 \@mathmargin\m@ne sp
54 \AtBeginDocument{%
55 \ifdim\@mathmargin=\m@ne sp
56 \@mathmargin\leftmargini
57 \fi
60 \DeclareOption{righttag}{\tagsleft@false}
61 \DeclareOption{ctagsplt}{\ctagsplit@true}
62 \DeclareOption{intlim}{\let\ilimits@\displaylimits}
63 \DeclareOption{nosumlim}{\let\slimits@\nolimits}
64 \DeclareOption{nonamelm}{\let\nlimits@\nolimits}
65 \ExecuteOptions{nointlimits,sumlimits,namelimits,centertags}
66 \ProcessOptions
67 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
68 %% In this section \RequirePackage statements were replaced with the
69 %% contents of the referenced files.
70 %%% filename = "amsgen.dtx",
71 %%% version = "1.2beta",
72 %%% date = "1994/12/13",
73 \providecommand{\@saveprimitive}[2]{\begingroup\escapechar`\\\relax
74 \edef\@tempa{\string#1}\edef\@tempb{\meaning#1}%
75 \ifx\@tempa\@tempb \global\let#2#1%
76 \else
77 \edef\@tempb{\meaning#2}%
78 \ifx\@tempa\@tempb
79 \else
80 \@latex@error{Unable to properly define \string#2; primitive
81 \noexpand#1no longer primitive}\@eha
82 \fi
83 \fi
84 \endgroup}
85 \let\@xp=\expandafter
86 \let\@nx=\noexpand
87 \newtoks\@emptytoks
88 \def\@oparg#1[#2]{\@ifnextchar[{#1}{#1[#2]}}
89 \def\@ifempty#1{\@xifempty#1@@..\@nil}
90 \long\def\@xifempty#1#2@#3#4#5\@nil{%
91 \ifx#3#4\@xp\@firstoftwo\else\@xp\@secondoftwo\fi}
92 \long\def\@ifnotempty#1{\@ifempty{#1}{}}
93 \def\FN@{\futurelet\@let@token}
94 \def\DN@{\def\next@}
95 \def\RIfM@{\relax\ifmmode}
96 \def\setboxz@h{\setbox\z@\hbox}
97 \def\wdz@{\wd\z@}
98 \def\boxz@{\box\z@}
99 \def\relaxnext@{\let\@let@token\relax}
100 \def\new@ifnextchar#1#2#3{%
101 \let\@tempe #1\def\@tempa{#2}\def\@tempb{#3}\futurelet
102 \@tempc\new@ifnch}
103 \def\new@ifnch{\ifx\@tempc \@tempe \let\@tempd\@tempa
104 \else\let\@tempd\@tempb\fi\@tempd}
105 \def\new@ifstar#1#2{\new@ifnextchar *{\def\@tempa*{#1}\@tempa}{#2}}
106 \@ifundefined{every@math@size}{%
107 \let\every@math@size=\every@size
108 \def\glb@settings{%
109 \expandafter\ifx\csname S@\f@size\endcsname\relax
110 \calculate@math@sizes
112 \csname S@\f@size\endcsname
113 \ifmath@fonts
114 \begingroup
115 \escapechar\m@ne
116 \csname mv@\math@version \endcsname
117 \globaldefs\@ne
118 \let \glb@currsize \f@size
119 \math@fonts
120 \endgroup
121 \the\every@math@size
122 \else
125 \def\set@fontsize#1#2#3{%
126 \@defaultunits\@tempdimb#2pt\relax\@nnil
127 \edef\f@size{\strip@pt\@tempdimb}%
128 \@defaultunits\@tempskipa#3pt\relax\@nnil
129 \edef\f@baselineskip{\the\@tempskipa}%
130 \edef\f@linespread{#1}%
131 \let\baselinestretch\f@linespread
132 \def\size@update{%
133 \baselineskip\f@baselineskip\relax
134 \baselineskip\f@linespread\baselineskip
135 \normalbaselineskip\baselineskip
136 \setbox\strutbox\hbox{%
137 \vrule\@height.7\baselineskip
138 \@depth.3\baselineskip
139 \@width\z@}%
140 %%% \the\every@size
141 \let\size@update\relax}%
143 }{}% end \@ifundefined test
144 \newdimen\ex@
145 \addto@hook\every@math@size{\compute@ex@}
146 \def\compute@ex@{%
147 \begingroup
148 \dimen@-\f@size\p@
149 \ifdim\dimen@<-20\p@
150 \global\ex@ 1.5\p@
151 \else
152 \advance\dimen@10\p@ \multiply\dimen@\tw@
153 \edef\@tempa{\ifdim\dimen@>\z@ -\fi}%
154 \dimen@ \ifdim\dimen@<\z@ -\fi \dimen@
155 \advance\dimen@-\@m sp % fudge factor
156 \vfuzz\p@
157 \def\do{\ifdim\dimen@>\z@
158 \vfuzz=.97\vfuzz
159 \advance\dimen@ -\p@
160 \@xp\do \fi}%
162 \dimen@\p@ \advance\dimen@-\vfuzz
163 \global\ex@\p@
164 \global\advance\ex@ \@tempa\dimen@
166 \endgroup
168 \def\@addpunct#1{\ifnum\spacefactor>\@m \else#1\fi}
169 \def\frenchspacing{\sfcode`\.1006\sfcode`\?1005\sfcode`\!1004%
170 \sfcode`\:1003\sfcode`\;1002\sfcode`\,1001 }
171 \def\@mathmeasure#1#2#3{\setbox#1\hbox{\frozen@everymath\@emptytoks
172 \m@th$#2#3$}}
173 \def\nomath@env{\PackageError{amstex}{%
174 \string\begin{\@currenvir} allowed only in paragraph mode%
175 }\@ehb% "You've lost some text"
177 \def\Invalid@@{Invalid use of \string}
178 \def\nonmatherr@#1{\PackageError{amsfonts}%
179 {\noexpand#1allowed only in math mode}\@ehd}
180 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
181 %%% filename = "amstext.dtx",
182 %%% version = "1.2beta",
183 %%% date = "1994/12/13",
184 \DeclareRobustCommand{\text}{%
185 \ifmmode\expandafter\text@\else\expandafter\mbox\fi}
186 \let\nfss@text\text
187 \def\text@#1{\mathchoice
188 {\textdef@\displaystyle\f@size{#1}}%
189 {\textdef@\textstyle\tf@size{\firstchoice@false #1}}%
190 {\textdef@\textstyle\sf@size{\firstchoice@false #1}}%
191 {\textdef@\textstyle \ssf@size{\firstchoice@false #1}}%
192 \check@mathfonts
194 \def\textdef@#1#2#3{\hbox{{%
195 \everymath{#1}%
196 \let\f@size#2\selectfont
197 #3}}}
198 \newif\iffirstchoice@
199 \firstchoice@true
200 \def\stepcounter#1{%
201 \iffirstchoice@
202 \global\expandafter\advance\csname c@#1\endcsname \@ne
203 \begingroup
204 \let\@elt\@stpelt
205 \csname cl@#1\endcsname
206 \endgroup
207 \fi}
208 \toks@{\iffirstchoice@\else\@xp\@gobblefour\fi\protect}
209 \edef\GenericInfo{\the\toks@
210 \@xp\@nx\csname GenericInfo \endcsname}
211 \edef\GenericWarning{\the\toks@
212 \@xp\@nx\csname GenericWarning \endcsname}
213 \toks@{\iffirstchoice@\else
214 \@xp\@xp\@xp\@gobblefour
215 \@xp\@gobbletwo\fi\protect}
216 \edef\GenericError{\the\toks@
217 \@xp\@nx\csname GenericError \endcsname}
218 \def\label#1{\@bsphack\iffirstchoice@\if@filesw {\let\thepage\relax
219 \def\protect{\noexpand\noexpand\noexpand}%
220 \xdef\@gtempa{\write\@auxout{\string
221 \newlabel{#1}{{\@currentlabel}{\thepage}}}}}\@gtempa
222 \if@nobreak \ifvmode\nobreak\fi\fi\fi\fi\@esphack}
223 \begingroup \catcode`\"=12
224 \gdef\mathhexbox#1#2#3{\text{$\m@th\mathchar"#1#2#3$}}
225 \endgroup
226 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
227 %%% filename = "amsfonts.dtx",
228 %%% version = "1.2beta",
229 %%% date = "1994/12/13",
230 \newbox\Mathstrutbox@
231 \setbox\Mathstrutbox@=\hbox{}
232 \def\Mathstrut@{\copy\Mathstrutbox@}
233 \addto@hook\every@math@size{\setbox\z@\hbox{\normalfont(}%
234 \ht\Mathstrutbox@\ht\z@ \dp\Mathstrutbox@\dp\z@}
235 \newbox\strutbox@
236 \def\strut@{\copy\strutbox@}
237 \addto@hook\every@math@size{%
238 \global\setbox\strutbox@\hbox{\lower.5\normallineskiplimit
239 \vbox{\kern-\normallineskiplimit\copy\strutbox}}}
240 \def\big{\bBigg@\@ne}
241 \def\Big{\bBigg@{1.5}}
242 \def\bigg{\bBigg@\tw@}
243 \def\Bigg{\bBigg@{2.5}}
244 \def\bBigg@#1#2{%
246 \hbox{$\left#2\vcenter to#1\big@size{}\right.%
247 \n@space
248 $}}}
249 \addto@hook\every@math@size{%
250 \global\big@size 1.2\ht\Mathstrutbox@
251 \global\advance\big@size 1.2\dp\Mathstrutbox@ }
252 \newdimen\big@size
253 %% msam, msbm, eufm fonts dealt with at end of file
254 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
255 %%% filename = "amsbsy.dtx",
256 %%% version = "1.2beta",
257 %%% date = "1994/10/27",
258 \DeclareRobustCommand{\boldsymbol}[1]{%
259 \begingroup
260 \let\@nomath\@gobble \mathversion{bold}%
261 \math@atom{#1}{%
262 \mathchoice%
263 {\hbox{$\m@th\displaystyle#1$}}%
264 {\hbox{$\m@th\textstyle#1$}}%
265 {\hbox{$\m@th\scriptstyle#1$}}%
266 {\hbox{$\m@th\scriptscriptstyle#1$}}}%
267 \endgroup}
268 \def\math@atom#1#2{%
269 \binrel@{#1}\binrel@@{#2}}
270 \DeclareRobustCommand{\pmb}{%
271 \ifmmode\else \expandafter\pmb@@\fi\mathpalette\pmb@}
272 \def\pmb@@#1#2#3{\leavevmode\setboxz@h{#3}%
273 \dimen@-\wdz@
274 \kern-.5\ex@\copy\z@
275 \kern\dimen@\kern.25\ex@\raise.4\ex@\copy\z@
276 \kern\dimen@\kern.25\ex@\box\z@
278 \newdimen\pmbraise@
279 \def\pmb@#1#2{\setbox8\hbox{$\m@th#1{#2}$}%
280 \setboxz@h{$\m@th#1\mkern.5mu$}\pmbraise@\wdz@
281 \binrel@{#2}%
282 \dimen@-\wd8 %
283 \binrel@@{%
284 \mkern-.8mu\copy8 %
285 \kern\dimen@\mkern.4mu\raise\pmbraise@\copy8 %
286 \kern\dimen@\mkern.4mu\box8 }%
288 \def\binrel@#1{\begingroup
289 \setboxz@h{\thinmuskip0mu
290 \medmuskip\m@ne mu\thickmuskip\@ne mu
291 \setbox\tw@\hbox{$#1\m@th$}\kern-\wd\tw@
292 ${}#1{}\m@th$}%
293 \edef\@tempa{\endgroup\let\noexpand\binrel@@
294 \ifdim\wdz@<\z@ \mathbin
295 \else\ifdim\wdz@>\z@ \mathrel
296 \else \relax\fi\fi}%
297 \@tempa
299 \let\binrel@@\relax
300 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
301 \def\AmSTeX{\protect\AmS-\protect\TeX{}}
302 \def\AmS{{\protect\AmSfont
303 A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}}
304 \def\AmSfont{%
305 \usefont{OMS}{cmsy}{\if\@xp\@car\f@series\@nil bb\else m\fi}{n}}
306 \def\prim@s{\prime\futurelet\@let@token\pr@m@s}
307 \def\pr@m@s{%
308 \ifx\@let@token'\DN@##1{\prim@s}\else\let\next@\egroup\fi\next@}
309 \let\@prime=\prime
310 \renewcommand{\prime}{{\kern\z@\@prime}}
311 \DeclareRobustCommand{\mspace}[3]{%
312 \ifmmode\mskip#1#2\else\kern#1#3\fi\relax}
313 \renewcommand{\,}{\mspace+\thinmuskip{.1667em}}
314 \let\thinspace\,
315 \renewcommand{\!}{\mspace-\thinmuskip{.1667em}}
316 \let\negthinspace\!
317 \renewcommand{\:}{\mspace+\medmuskip{.2222em}}
318 \let\medspace\:
319 \newcommand{\negmedspace}{\mspace-\medmuskip{.2222em}}
320 \renewcommand{\;}{\mspace+\thickmuskip{.2777em}}
321 \let\thickspace\;
322 \newcommand{\negthickspace}{\mspace-\thickmuskip{.2777em}}
323 \def\implies{\DOTSB\;\Longrightarrow\;}
324 \def\impliedby{\DOTSB\;\Longleftarrow\;}
325 \begingroup \catcode`\"=12 % in case activated by a preceding package
326 \gdef\And{\DOTSB\;\mathchar"3026 \;}
327 \gdef\lvert{\delimiter"426A30C }
328 \gdef\rvert{\delimiter"526A30C }
329 \gdef\lVert{\delimiter"426B30D }
330 \gdef\rVert{\delimiter"526B30D }
331 \endgroup % restore "
332 \DeclareRobustCommand{\frac}{\new@ifnextchar[{\frfrac{}}{\frfrac{}[]}}
333 \def\frfrac#1[#2]#3#4{\def\next@{#2}%
334 \ifx\next@\@empty \def\next@{#1{#3\over#4}}%
335 \else \def\next@{{#1{#3\above#2\relax#4}}}%
337 \next@}
338 \def\dfrac{\protect\frfrac\displaystyle[]}
339 \def\tfrac{\protect\frfrac\textstyle[]}
340 \DeclareRobustCommand{\binom}{\frbinom{}}
341 \def\frbinom#1#2#3{{#1{#2\atopwithdelims()#3}}}
342 \def\dbinom{\protect\frbinom\displaystyle}
343 \def\tbinom{\protect\frbinom\textstyle}
344 \def\colon{\nobreak\mskip2mu\mathpunct{}\nonscript
345 \mkern-\thinmuskip{:}\mskip6muplus1mu\relax}
346 \begingroup \catcode`\"=12
347 \DeclareMathSymbol{\coprod@}{\mathop}{largesymbols}{"60}
348 \gdef\coprod{\DOTSB\coprod@\slimits@}
349 \DeclareMathSymbol{\bigvee@}{\mathop}{largesymbols}{"57}
350 \gdef\bigvee{\DOTSB\bigvee@\slimits@}
351 \DeclareMathSymbol{\bigwedge@}{\mathop}{largesymbols}{"56}
352 \gdef\bigwedge{\DOTSB\bigwedge@\slimits@}
353 \DeclareMathSymbol{\biguplus@}{\mathop}{largesymbols}{"55}
354 \gdef\biguplus{\DOTSB\biguplus@\slimits@}
355 \DeclareMathSymbol{\bigcap@}{\mathop}{largesymbols}{"54}
356 \gdef\bigcap{\DOTSB\bigcap@\slimits@}
357 \DeclareMathSymbol{\bigcup@}{\mathop}{largesymbols}{"53}
358 \gdef\bigcup{\DOTSB\bigcup@\slimits@}
359 \DeclareMathSymbol{\prod@}{\mathop}{largesymbols}{"51}
360 \gdef\prod{\DOTSB\prod@\slimits@}
361 \DeclareMathSymbol{\sum@}{\mathop}{largesymbols}{"50}
362 \gdef\sum{\DOTSB\sum@\slimits@}
363 \DeclareMathSymbol{\bigotimes@}{\mathop}{largesymbols}{"4E}
364 \gdef\bigotimes{\DOTSB\bigotimes@\slimits@}
365 \DeclareMathSymbol{\bigoplus@}{\mathop}{largesymbols}{"4C}
366 \gdef\bigoplus{\DOTSB\bigoplus@\slimits@}
367 \DeclareMathSymbol{\bigodot@}{\mathop}{largesymbols}{"4A}
368 \gdef\bigodot{\DOTSB\bigodot@\slimits@}
369 \DeclareMathSymbol{\bigsqcup@}{\mathop}{largesymbols}{"46}
370 \gdef\bigsqcup{\DOTSB\bigsqcup@\slimits@}
371 \endgroup
372 \def\dddot#1{{\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@
373 \hbox{\normalfont ...}\vss}}}}
374 \def\ddddot#1{{\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@
375 \hbox{\normalfont....}\vss}}}}
376 \def~{\nobreakspace}
377 \DeclareRobustCommand{\nobreakspace}{\unskip\nobreak\ \ignorespaces}
378 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
379 \newif\if@display
380 \everydisplay\expandafter{\the\everydisplay \@displaytrue}
381 \def\int{\DOTSI\intop\ilimits@}
382 \def\oint{\DOTSI\ointop\ilimits@}
383 \def\intkern@{\mkern-6mu\mathchoice{\mkern-3mu}{}{}{}}
384 \def\intdots@{\mathchoice{\@cdots}%
385 {{\cdotp}\mkern1.5mu{\cdotp}\mkern1.5mu{\cdotp}}%
386 {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}%
387 {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}}
389 \def\iint{\DOTSI\protect\ints@\tw@}
390 \def\iiint{\DOTSI\protect\ints@\thr@@}
391 \def\iiiint{\DOTSI\protect\ints@{4}}
392 \def\idotsint{\DOTSI\protect\ints@\z@}
394 \def\ints@#1{%
395 \mkern-7mu\mathchoice{\mkern-2mu}{}{}{}%
396 \mathop{\mkern7mu\mathchoice{\mkern2mu}{}{}{}%
397 \intop\ifnum#1=\z@\intdots@
398 \else\intkern@\fi
399 \ifnum#1>\tw@\intop\intkern@\fi
400 \ifnum#1>\thr@@\intop\intkern@\fi
401 \intop
402 }\ilimits@
404 \def\nolimits@{%
405 \DN@{\nolimits\ifx\@let@token\limits\expandafter\@gobble\fi}%
406 \FN@\next@}
407 \begingroup \catcode`\"=12
408 \gdef\newmcodes@{\mathcode`\'39\mathcode`\*42\mathcode`\."613A%
409 \mathcode`\-45\mathcode`\/47\mathcode`\:"603A\relax}
410 \endgroup
411 \DeclareRobustCommand{\operatorname}{%
412 \@ifstar{\qopname\newmcodes@ n}%
413 {\qopname\newmcodes@{no}}}%
414 \DeclareRobustCommand{\qopname}[3]{\mathop{#1\kern\z@\operator@font#3}%
415 \csname #2limits@\endcsname}
416 \def\arccos{\qopname\relax{no}{arccos}}
417 \def\arcsin{\qopname\relax{no}{arcsin}}
418 \def\arctan{\qopname\relax{no}{arctan}}
419 \def\arg{\qopname\relax{no}{arg}}
420 \def\cos{\qopname\relax{no}{cos}}
421 \def\cosh{\qopname\relax{no}{cosh}}
422 \def\cot{\qopname\relax{no}{cot}}
423 \def\coth{\qopname\relax{no}{coth}}
424 \def\csc{\qopname\relax{no}{csc}}
425 \def\deg{\qopname\relax{no}{deg}}
426 \def\det{\qopname\relax n{det}}
427 \def\dim{\qopname\relax{no}{dim}}
428 \def\exp{\qopname\relax{no}{exp}}
429 \def\gcd{\qopname\relax n{gcd}}
430 \def\hom{\qopname\relax{no}{hom}}
431 \def\inf{\qopname\relax n{inf}}
432 \def\injlim{\qopname\relax n{inj\,lim}}
433 \def\ker{\qopname\relax{no}{ker}}
434 \def\lg{\qopname\relax{no}{lg}}
435 \def\lim{\qopname\relax n{lim}}
436 \def\liminf{\qopname\relax n{lim\,inf}}
437 \def\limsup{\qopname\relax n{lim\,sup}}
438 \def\ln{\qopname\relax{no}{ln}}
439 \def\log{\qopname\relax{no}{log}}
440 \def\max{\qopname\relax n{max}}
441 \def\min{\qopname\relax n{min}}
442 \def\Pr{\qopname\relax n{Pr}}
443 \def\projlim{\qopname\relax n{proj\,lim}}
444 \def\sec{\qopname\relax{no}{sec}}
445 \def\sin{\qopname\relax{no}{sin}}
446 \def\sinh{\qopname\relax{no}{sinh}}
447 \def\sup{\qopname\relax n{sup}}
448 \def\tan{\qopname\relax{no}{tan}}
449 \def\tanh{\qopname\relax{no}{tanh}}
450 \def\operator@font{\mathgroup\symoperators}
451 \def\operatornamewithlimits{\operatorname*}
452 \def\varlim@#1#2{\mathop{\vtop{\ialign{##\crcr
453 \hfil$#1\m@th\operator@font lim$\hfil\crcr
454 \noalign{\nointerlineskip\kern\ex@}#2#1\crcr
455 \noalign{\nointerlineskip\kern-\ex@}\crcr}}}}
456 \def\varinjlim{\mathpalette\varlim@\rightarrowfill@}
457 \def\varprojlim{\mathpalette\varlim@\leftarrowfill@}
458 \def\varliminf{\mathpalette\varliminf@{}}
459 \def\varliminf@#1{\mathop{\@@underline{\vrule\@depth.2\ex@\@width\z@
460 \hbox{$#1\m@th\operator@font lim$}}}}
461 \def\varlimsup{\mathpalette\varlimsup@{}}
462 \def\varlimsup@#1{\mathop{\@@overline
463 {\hbox{$#1\m@th\operator@font lim$}}}}
464 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
465 \def\numberwithin#1#2{\@ifundefined{c@#1}{\@nocounterr{#1}}{%
466 \@ifundefined{c@#2}{\@nocnterr{#2}}{%
467 \@addtoreset{#1}{#2}%
468 \toks@\expandafter\expandafter\expandafter{\csname the#1\endcsname}%
469 \expandafter\xdef\csname the#1\endcsname
470 {\expandafter\noexpand\csname the#2\endcsname
471 .\the\toks@}}}}
472 \def\eqref#1{\textup{\tagform@{\ref{#1}}}}
473 \def\bmod{\mskip-\medmuskip\mkern5mu\mathbin
474 {\operator@font mod}\penalty900
475 \mkern5mu\mskip-\medmuskip}
476 \def\pod#1{\allowbreak\if@display\mkern18mu\else\mkern8mu\fi(#1)}
477 \def\pmod#1{\pod{{\operator@font mod}\mkern6mu#1}}
478 \def\mod#1{\allowbreak\if@display\mkern18mu
479 \else\mkern12mu\fi{\operator@font mod}\,\,#1}
480 \newcommand{\cfrac}[3][c]{{\displaystyle\frac{%
481 \strut\ifx r#1\hfill\fi#2\ifx l#1\hfill\fi}{#3}}%
482 \kern-\nulldelimiterspace}
483 \def\lcfrac{\cfrac[l]}
484 \def\rcfrac{\cfrac[r]}
485 \def\overset#1#2{\binrel@{#2}%
486 \binrel@@{\mathop{\kern\z@#2}\limits^{#1}}}
487 \def\underset#1#2{\binrel@{#2}%
488 \binrel@@{\mathop{\kern\z@#2}\limits_{#1}}}
489 \def\sideset#1#2#3{%
490 \setbox\z@\hbox{$\displaystyle{\vphantom{#3}}#1{#3}\m@th$}%
491 \setbox\tw@\hbox{$\displaystyle{#3}#2\m@th$}%
492 \hskip\wd\z@\hskip-\wd\tw@\mathop{\hskip\wd\tw@\hskip-\wd\z@
493 {\vphantom{#3}}#1{#3}#2}}
494 \renewcommand{\smash}[2][tb]{%
495 \def\smash@{#1}%
496 \ifmmode\expandafter\mathpalette\expandafter\mathsm@sh\else
497 \expandafter\makesm@sh\fi{#2}}
498 \def\finsm@sh{\def\mb@t{\ht\z@\z@}\def\mb@b{\dp\z@\z@}%
499 \def\mb@tb{\mb@t\mb@b}%
500 {\csname mb@\smash@\endcsname}%
501 \leavevmode\boxz@}
502 \def\rightarrowfill@#1{\m@th\setboxz@h{$#1\relbar$}\ht\z@\z@
503 $#1\copy\z@\mkern-6mu\cleaders
504 \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill
505 \mkern-6mu\mathord\rightarrow$}
506 \def\leftarrowfill@#1{\m@th\setboxz@h{$#1\relbar$}\ht\z@\z@
507 $#1\mathord\leftarrow\mkern-6mu\cleaders
508 \hbox{$#1\mkern-2mu\copy\z@\mkern-2mu$}\hfill
509 \mkern-6mu\box\z@$}
510 \def\leftrightarrowfill@#1{\m@th\setboxz@h{$#1\relbar$}\ht\z@\z@
511 $#1\mathord\leftarrow\mkern-6mu\cleaders
512 \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill
513 \mkern-6mu\mathord\rightarrow$}
514 \def\overarrow@#1#2#3{\vbox{\ialign{##\crcr#1#2\crcr
515 \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#2#3\hfil$\crcr}}}
516 \def\overrightarrow{\mathpalette{\overarrow@\rightarrowfill@}}
517 \def\overleftarrow{\mathpalette{\overarrow@\leftarrowfill@}}
518 \def\overleftrightarrow{\mathpalette{\overarrow@\leftrightarrowfill@}}
519 \def\underarrow@#1#2#3{%
520 \vtop{\ialign{##\crcr$\m@th\hfil#2#3\hfil$\crcr
521 \noalign{\nointerlineskip\kern-.5\ex@}#1#2\crcr}}}
522 \def\underrightarrow{\mathpalette{\underarrow@\rightarrowfill@}}
523 \def\underleftarrow{\mathpalette{\underarrow@\leftarrowfill@}}
524 \def\underleftrightarrow{\mathpalette{\underarrow@\leftrightarrowfill@}}
525 \let\ifgtest@\iffalse % initial value
526 \def\gtest@true{\global\let\ifgtest@\iftrue}
527 \def\gtest@false{\global\let\ifgtest@\iffalse}
528 \let\DOTSI\relax
529 \let\DOTSB\relax
530 \let\DOTSX\relax
531 {\uccode`7=`\\ \uccode`8=`m \uccode`9=`a \uccode`0=`t \uccode`!=`h
532 \uppercase{%
533 \gdef\math@#1#2#3#4#5#6\math@{\gtest@false\ifx 7#1\ifx 8#2%
534 \ifx 9#3\ifx 0#4\ifx !#5\xdef\meaning@{#6}\gtest@true
535 \fi\fi\fi\fi\fi}}}
536 {\uccode`7=`c \uccode`8=`h \uccode`9=`\"
537 \uppercase{\gdef\mathch@#1#2#3#4#5#6\mathch@{\gtest@false
538 \ifx 7#1\ifx 8#2\ifx 9#5\gtest@true\xdef\meaning@{9#6}\fi\fi\fi}}}
539 \newcount\classnum@
540 \def\getmathch@#1.#2\getmathch@{\classnum@#1 \divide\classnum@4096
541 \ifcase\number\classnum@\or\or\gdef\thedots@{\dotsb@}\or
542 \gdef\thedots@{\dotsb@}\fi}
543 {\uccode`4=`b \uccode`5=`i \uccode`6=`n
544 \uppercase{\gdef\mathbin@#1#2#3{\relaxnext@
545 \def\nextii@##1\mathbin@{\ifx\@sptoken\@let@token\gtest@true\fi}%
546 \gtest@false\DN@##1\mathbin@{}%
547 \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}}
548 {\uccode`4=`r \uccode`5=`e \uccode`6=`l
549 \uppercase{\gdef\mathrel@#1#2#3{\relaxnext@
550 \def\nextii@##1\mathrel@{\ifx\@sptoken\@let@token\gtest@true\fi}%
551 \gtest@false\DN@##1\mathrel@{}%
552 \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}}
553 {\uccode`5=`m \uccode`6=`a \uccode`7=`c
554 \uppercase{\gdef\macro@#1#2#3#4\macro@{\gtest@false
555 \ifx 5#1\ifx 6#2\ifx 7#3\gtest@true
556 \xdef\meaning@{\macro@@#4\macro@@}\fi\fi\fi}}}
557 \def\macro@@#1->#2\macro@@{#2}
558 \newcount\DOTSCASE@
559 {\uccode`6=`\\ \uccode`7=`D \uccode`8=`O \uccode`9=`T \uccode`0=`S
560 \uppercase{\gdef\DOTS@#1#2#3#4#5{\gtest@false\DN@##1\DOTS@{}%
561 \ifx 6#1\ifx 7#2\ifx 8#3\ifx 9#4\ifx 0#5\let\next@\DOTS@@
562 \fi\fi\fi\fi\fi
563 \next@}}}
564 {\uccode`3=`B \uccode`4=`I \uccode`5=`X
565 \uppercase{\gdef\DOTS@@#1{\relaxnext@
566 \def\nextii@##1\DOTS@{\ifx\@sptoken\@let@token\gtest@true\fi}%
567 \DN@{\FN@\nextii@}%
568 \ifx 3#1\global\DOTSCASE@\z@\else
569 \ifx 4#1\global\DOTSCASE@\@ne\else
570 \ifx 5#1\global\DOTSCASE@\tw@\else\DN@##1\DOTS@{}%
571 \fi\fi\fi\next@}}}
572 {\uccode`5=`\\ \uccode`6=`n \uccode`7=`o \uccode`8=`t
573 \uppercase{\gdef\not@#1#2#3#4{\relaxnext@
574 \def\nextii@##1\not@{\ifx\@sptoken\@let@token\gtest@true\fi}%
575 \gtest@false\DN@##1\not@{}%
576 \ifx 5#1\ifx 6#2\ifx 7#3\ifx 8#4\DN@{\FN@\nextii@}\fi\fi\fi
577 \fi\next@}}}
578 \def\keybin@{\gtest@true
579 \ifx\@let@token+\else\ifx\@let@token=\else\ifx\@let@token<%
580 \else\ifx\@let@token>\else\ifx\@let@token-\else\ifx\@let@token*%
581 \else\ifx\@let@token:\else\gtest@false\fi\fi\fi\fi\fi\fi\fi}
582 \@ifundefined{@ldots}{\def\@ldots{\mathellipsis}}{}
583 \DeclareRobustCommand{\dots}{\relax
584 \csname\ifmmode m\else t\fi dots@\endcsname}
585 \def\tdots@{\leavevmode\unskip\relaxnext@
586 \DN@{$\m@th\@ldots\,
587 \ifx\@let@token,\,$\else\ifx\@let@token.\,$\else\ifx\@let@token;\,$%
588 \else\ifx\@let@token:\,$\else\ifx\@let@token?\,$%
589 \else\ifx\@let@token!\,$\else$ \fi\fi\fi\fi\fi\fi}%
590 \ \FN@\next@}
591 \def\mdots@{\FN@\mdots@@}
592 \def\mdots@@{\gdef\thedots@{\dotso@}%
593 \ifx\@let@token\boldsymbol\gdef\thedots@\boldsymbol{\boldsymboldots@}%
594 \else\ifx,\@let@token\gdef\thedots@{\dotsc}%
595 \else\ifx\not\@let@token\gdef\thedots@{\dotsb@}%
596 \else\keybin@
597 \ifgtest@\gdef\thedots@{\dotsb@}%
598 \else\xdef\meaning@{\meaning\@let@token..........}%
599 \xdef\meaning@@{\meaning@}%
600 \expandafter\math@\meaning@\math@
601 \ifgtest@
602 \expandafter\mathch@\meaning@\mathch@
603 \ifgtest@\expandafter\getmathch@\meaning@\getmathch@\fi
604 \else\expandafter\macro@\meaning@@\macro@
605 \ifgtest@
606 \expandafter\not@\meaning@\not@\ifgtest@\gdef\thedots@{\dotsb@}%
607 \else\expandafter\DOTS@\meaning@\DOTS@
608 \ifgtest@
609 \ifcase\number\DOTSCASE@\gdef\thedots@{\dotsb@}%
610 \or\gdef\thedots@{\dotsi}\else\fi
611 \else\expandafter\math@\meaning@\math@
612 \ifgtest@\expandafter\mathbin@\meaning@\mathbin@
613 \ifgtest@\gdef\thedots@{\dotsb@}%
614 \else\expandafter\mathrel@\meaning@\mathrel@
615 \ifgtest@\gdef\thedots@{\dotsb@}%
616 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
617 \thedots@}
618 \def\boldsymboldots@#1{%
619 \bold@true\let\@let@token=#1\let\delayed@=#1\mdots@@
620 \boldsymbol#1\bold@false}
621 \def\@cdots{\mathinner{\cdotp\cdotp\cdotp}}
622 \def\dotsi{\!\@cdots}
623 \let\dotsb@\@cdots
624 \def\rightdelim@{\gtest@true
625 \ifx\@let@token)\else
626 \ifx\@let@token]\else
627 \ifx\@let@token\rbrack\else
628 \ifx\@let@token\}\else
629 \ifx\@let@token\rbrace\else
630 \ifx\@let@token\rangle\else
631 \ifx\@let@token\rceil\else
632 \ifx\@let@token\rfloor\else
633 \ifx\@let@token\rgroup\else
634 \ifx\@let@token\rmoustache\else
635 \ifx\@let@token\right\else
636 \ifx\@let@token\bigr\else
637 \ifx\@let@token\biggr\else
638 \ifx\@let@token\Bigr\else
639 \ifx\@let@token\Biggr\else\gtest@false
640 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
641 \def\extra@{%
642 \rightdelim@\ifgtest@
643 \else\ifx\@let@token$\gtest@true
644 \else\xdef\meaning@{\meaning\@let@token..........}%
645 \expandafter\macro@\meaning@\macro@\ifgtest@
646 \expandafter\DOTS@\meaning@\DOTS@
647 \ifgtest@
648 \ifnum\DOTSCASE@=\tw@\gtest@true\else\gtest@false
649 \fi\fi\fi\fi\fi}
650 \newif\ifbold@
651 \def\dotso@{\relaxnext@
652 \ifbold@
653 \let\@let@token\delayed@
654 \def\nextii@{\extra@\@ldots\ifgtest@\,\fi}%
655 \else
656 \def\nextii@{\DN@{\extra@\@ldots\ifgtest@\,\fi}\FN@\next@}%
658 \nextii@}
659 \def\extrap@#1{%
660 \DN@{#1\,}%
661 \ifx\@let@token,\else
662 \ifx\@let@token;\else
663 \ifx\@let@token.\else\extra@
664 \ifgtest@\else
665 \let\next@#1\fi\fi\fi\fi\next@}
666 \DeclareRobustCommand{\ldots}{\relax
667 \ifmmode \DN@{\extrap@\@ldots}%
668 \else \let\next@\tdots@\fi
669 \FN@\next@}
670 \DeclareRobustCommand{\cdots}{\DN@{\extrap@\@cdots}\FN@\next@}
671 \let\dotso\ldots
672 \let\dotsb\cdots
673 \let\dotsm\dotsb
674 \DeclareRobustCommand{\dotsc}{%
675 \DN@{\ifx\@let@token;\@ldots\,%
676 \else \ifx\@let@token.\@ldots\,%
677 \else \extra@\@ldots \ifgtest@\,\fi
678 \fi\fi}%
679 \FN@\next@}
680 \def\longrightarrow{\DOTSB\relbar\joinrel\rightarrow}
681 \def\Longrightarrow{\DOTSB\Relbar\joinrel\Rightarrow}
682 \def\longleftarrow{\DOTSB\leftarrow\joinrel\relbar}
683 \def\Longleftarrow{\DOTSB\Leftarrow\joinrel\Relbar}
684 \def\longleftrightarrow{\DOTSB\leftarrow\joinrel\rightarrow}
685 \def\Longleftrightarrow{\DOTSB\Leftarrow\joinrel\Rightarrow}
686 \def\mapsto{\DOTSB\mapstochar\rightarrow}
687 \def\longmapsto{\DOTSB\mapstochar\longrightarrow}
688 \def\hookrightarrow{\DOTSB\lhook\joinrel\rightarrow}
689 \def\hookleftarrow{\DOTSB\leftarrow\joinrel\rhook}
690 \def\doteq{\DOTSB\buildrel\textstyle.\over=}
691 \def\iff{\DOTSB\;\Longleftrightarrow\;}
692 \begingroup \catcode`\"=12
693 \mathchardef\@tempa="7000
694 \ifx\@tempa\Gamma
695 \DeclareMathSymbol{\Gamma}{\mathord}{operators}{"00}
696 \DeclareMathSymbol{\Delta}{\mathord}{operators}{"01}
697 \DeclareMathSymbol{\Theta}{\mathord}{operators}{"02}
698 \DeclareMathSymbol{\Lambda}{\mathord}{operators}{"03}
699 \DeclareMathSymbol{\Xi}{\mathord}{operators}{"04}
700 \DeclareMathSymbol{\Pi}{\mathord}{operators}{"05}
701 \DeclareMathSymbol{\Sigma}{\mathord}{operators}{"06}
702 \DeclareMathSymbol{\Upsilon}{\mathord}{operators}{"07}
703 \DeclareMathSymbol{\Phi}{\mathord}{operators}{"08}
704 \DeclareMathSymbol{\Psi}{\mathord}{operators}{"09}
705 \DeclareMathSymbol{\Omega}{\mathord}{operators}{"0A}
706 \DeclareMathSymbol{\varGamma}{\mathord}{letters}{"00}
707 \DeclareMathSymbol{\varDelta}{\mathord}{letters}{"01}
708 \DeclareMathSymbol{\varTheta}{\mathord}{letters}{"02}
709 \DeclareMathSymbol{\varLambda}{\mathord}{letters}{"03}
710 \DeclareMathSymbol{\varXi}{\mathord}{letters}{"04}
711 \DeclareMathSymbol{\varPi}{\mathord}{letters}{"05}
712 \DeclareMathSymbol{\varSigma}{\mathord}{letters}{"06}
713 \DeclareMathSymbol{\varUpsilon}{\mathord}{letters}{"07}
714 \DeclareMathSymbol{\varPhi}{\mathord}{letters}{"08}
715 \DeclareMathSymbol{\varPsi}{\mathord}{letters}{"09}
716 \DeclareMathSymbol{\varOmega}{\mathord}{letters}{"0A}
718 \endgroup
719 \def\accentclass@{7}
720 \def\noaccents@{\def\accentclass@{0}}
721 \DeclareFontEncoding{OML}{}{\noaccents@}
722 \DeclareFontEncoding{OMS}{}{\noaccents@}
723 \edef\@tempa#1#2{\def#1{\mathaccent\string"\noexpand\accentclass@#2 }}
724 \@tempa\hat{05E}\@tempa\check{014}\@tempa\tilde{07E}\@tempa\acute{013}
725 \@tempa\grave{012}\@tempa\dot{05F}\@tempa\ddot{07F}\@tempa\breve{015}
726 \@tempa\bar{016}
727 \newcount\skewcharcount@
728 \newcount\familycount@
729 \def\theskewchar@{\familycount@\@ne
730 \global\skewcharcount@\the\skewchar\textfont\@ne
731 \ifnum\mathgroup>\m@ne\ifnum\mathgroup<16
732 \global\familycount@\the\mathgroup\relax
733 \global\skewcharcount@\the\skewchar\textfont\the\mathgroup\relax\fi\fi
734 \ifnum\skewcharcount@>\m@ne
735 \ifnum\skewcharcount@<128
736 \multiply\familycount@256
737 \global\advance\skewcharcount@\familycount@
738 \global\advance\skewcharcount@28672
739 \mathchar\skewcharcount@\else
740 \global\skewcharcount@\m@ne\fi\else
741 \global\skewcharcount@\m@ne\fi}
742 \newcount\pointcount@
743 \def\getpoints@#1.#2\getpoints@{\pointcount@#1 }
744 \newdimen\accentdimen@
745 \newcount\accentmu@
746 \def\dimentomu@{\multiply\accentdimen@ 100
747 \expandafter\getpoints@\the\accentdimen@\getpoints@
748 \multiply\pointcount@18
749 \divide\pointcount@\@m
750 \global\accentmu@\pointcount@}
751 \def\mathaccent@#1#2{\ifnum\mathgroup=\m@ne\xdef\thefam@{1}\else
752 \xdef\thefam@{\the\mathgroup}\fi
753 \accentdimen@\z@
754 \setboxz@h{\unbracefonts@$\m@th\mathgroup\thefam@\relax#2$}%
755 \ifdim\accentdimen@=\z@\DN@{\mathaccent#1{#2}}%
756 \setbox\@ne\hbox{\unbracefonts@
757 $\m@th\mathgroup\thefam@\relax#2\theskewchar@$}
758 \setbox\tw@\hbox{$\m@th\ifnum\skewcharcount@=\m@ne\else
759 \mathchar\skewcharcount@\fi$}%
760 \global\accentdimen@\wd\@ne\global\advance\accentdimen@-\wdz@
761 \global\advance\accentdimen@-\wd\tw@
762 \global\multiply\accentdimen@\tw@
763 \dimentomu@\global\advance\accentmu@\@ne
764 \else\DN@{{\mathaccent#1{#2\mkern\accentmu@ mu}%
765 \mkern-\accentmu@ mu}{}}\fi
766 \next@}
767 \def\unbracefonts@{\let\math@bgroup\@empty\let\math@egroup\@empty}
768 \begingroup \catcode`\"=12
769 \def\@tempa#1#2{\gdef#1{\RIfM@\DN@{\mathaccent@{"\accentclass@#2 }}%
770 \else\DN@{\nonmatherr@{#1}}\fi\next@}}
771 \@tempa\Hat{05E}\@tempa\Check{014}\@tempa\Tilde{07E}\@tempa\Acute{013}
772 \@tempa\Grave{012}\@tempa\Dot{05F}\@tempa\Ddot{07F}\@tempa\Breve{015}
773 \@tempa\Bar{016}
774 \gdef\Vec{\RIfM@\DN@{\mathaccent@{"017E }}\else
775 \DN@{\nonmatherr@\Vec}\fi\next@}
776 \endgroup
777 \begingroup \catcode`\"=12
778 \gdef\@@sqrt#1{\radical"270370 {#1}}
779 \endgroup
780 \@saveprimitive\overline\@@overline
781 \def\overline#1{\@@overline{#1}}
782 \def\boxed#1{\fbox{\m@th$\displaystyle#1$}}
783 \def\setb@ck{\iffirstchoice@\global\advance\c@equation\m@ne\fi}
784 \newcount\dspbrk@lvl
785 \dspbrk@lvl=-1
786 \interdisplaylinepenalty\@M
787 \def\allowdisplaybreaks{%
788 \new@ifnextchar[\allowdspbrks@{\allowdspbrks@[4]}}
789 \def\allowdspbrks@[#1]{%
790 \interdisplaylinepenalty\getdsp@pen{#1}}
791 \def\getdsp@pen#1{%
792 \ifcase #1\relax \@M
793 \or 9999
794 \or 6999
795 \or 2999
796 \or \z@\fi}
797 \def\displaybreak{\PackageError{amstex}{\Invalid@@\displaybreak}\@eha}
798 \def\displaybreak@{%
799 \def\displaybreak{\new@ifnextchar[\dspbrk@{\dspbrk@[4]}}}
800 \def\dspbrk@[#1]{\global\dspbrk@lvl #1\relax}
801 \def\math@cr{{\ifnum0=`}\fi
802 \new@ifstar{\global\@eqpen\@M\math@cr@}%
803 {\global\@eqpen
804 \ifnum\dspbrk@lvl <\z@ \interdisplaylinepenalty
805 \else -\@getpen\dspbrk@lvl \fi
806 \math@cr@}}
807 \def\math@cr@{\new@ifnextchar[\math@cr@@{\math@cr@@[\z@]}}
808 \def\math@cr@@[#1]{\ifnum0=`{\fi}\math@cr@@@
809 \noalign{\vskip#1\relax}}
810 \def\Let@{\let\\\math@cr}
811 \def\restore@math@cr{\def\math@cr@@@{\cr}}
812 \restore@math@cr
813 \def\intertext{\PackageError{amstex}{\Invalid@@\intertext}\@eha}
814 \def\intertext@{\def\intertext##1{\noalign{%
815 \penalty\postdisplaypenalty\vskip\belowdisplayskip
816 \vbox{\normalbaselines\noindent##1}%
817 \penalty\predisplaypenalty\vskip\abovedisplayskip}}}
818 \newhelp\tag@help
819 {tag cannot be used at this point.\space
820 If you don't understand why^^Jyou should consult
821 the documentation.^^JBut don't worry: just continue, and I'll
822 forget what happened.}
823 \def\gobble@tag{\new@ifstar\@gobble\@gobble}
824 \def\invalid@tag#1{\PackageError{amstex}{#1}{\the\tag@help}\gobble@tag}
825 \def\dft@tag{\invalid@tag{\string\tag\space not allowed here}}
826 \def\default@tag{\let\tag\dft@tag}
827 \default@tag
828 \def\maketag@@{\new@ifstar\maketag@@@\tagform@}
829 \def\maketag@@@#1{\hbox{\m@th\normalfont#1}}
830 \def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip)}}
831 \def\thetag{\leavevmode\tagform@}
832 \def\make@df@tag{\new@ifstar\make@df@tag@@\make@df@tag@@@}
833 \def\make@df@tag@@#1{%
834 \def\@currentlabel{#1}%
835 \gdef\df@tag{\maketag@@@{#1}}}
836 \def\make@df@tag@@@#1{\@seteqlabel{#1}\gdef\df@tag{\tagform@{#1}}}
837 \def\@seteqlabel#1{\toks@\@xp{\p@equation{#1}}%
838 \edef\@currentlabel{\the\toks@}}
839 \def\notag{\nonumber}
840 \iftagsleft@
841 \def\@eqnnum{\hbox to1sp{}\rlap{\normalfont
842 \hskip -\displaywidth\tagform@\theequation}}
845 \let\@adjusttag\@empty
847 \def\adjusttag#1{\skip@#1\relax\gdef\@adjusttag{#1}}
849 \def\@movetag{%
850 \ifx\@adjusttag\@empty \else
851 \vskip\@adjusttag\relax
852 \global\let\@adjusttag\@empty
855 \def\multilimits@{\bgroup
856 \Let@
857 \restore@math@cr
858 \default@tag
859 \baselineskip\fontdimen10 \scriptfont\tw@
860 \advance\baselineskip\fontdimen12 \scriptfont\tw@
861 \lineskip\thr@@\fontdimen8 \scriptfont\thr@@
862 \lineskiplimit\lineskip
863 \vbox\bgroup\ialign\bgroup\hfil$\m@th\scriptstyle{##}$\hfil\crcr}
864 \def\Sb{_\multilimits@}
865 \def\Sp{^\multilimits@}
866 \def\endSb{\crcr\egroup\egroup\egroup}
867 \let\endSp=\endSb
868 \def\smallmatrix{\null\,\vcenter\bgroup
869 \Let@\restore@math@cr\default@tag
870 \baselineskip6\ex@ \lineskip1.5\ex@ \lineskiplimit\lineskip
871 \ialign\bgroup\hfil$\m@th\scriptstyle{##}$\hfil&&\thickspace\hfil
872 $\m@th\scriptstyle{##}$\hfil\crcr}
873 \def\endsmallmatrix{\crcr\egroup\egroup\,}
874 \newcount\c@MaxMatrixCols
875 \c@MaxMatrixCols=10
877 \def\matrix{\hskip -\arraycolsep\array{*\c@MaxMatrixCols c}}
878 \def\endmatrix{\endarray \hskip -\arraycolsep}
879 \@ifundefined{prepnext@tok}{%
880 \def\@array[#1]#2{%
881 \setbox\@arstrutbox\hbox{\vrule\@height\arraystretch\ht\strutbox
882 \@depth\arraystretch\dp\strutbox \@width\z@}%
883 \@mkpream{#2}\edef\@preamble{\ialign \noexpand\@halignto
884 \bgroup \tabskip\z@ \@arstrut \@preamble \tabskip\z@ \cr}%
885 \let\@startpbox\@@startpbox \let\@endpbox\@@endpbox
886 \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi
887 \bgroup \let\par\@empty
888 \let\@sharp##\let\protect\relax
889 \lineskip\z@\baselineskip\z@\@preamble}%
890 \begingroup \lccode`\~=`\@ \catcode`\~=\active % just to be sure!
891 \lowercase{%
892 \gdef\@xexpast#1*#2#3#4\@@{\begingroup
893 \def~{@}\edef\reserved@a{#1}\@tempcnta#2\relax
894 \ifnum\@tempcnta >\z@
895 \@whilenum\@tempcnta >\z@\do
896 {\edef\reserved@a{\reserved@a#3}\advance\@tempcnta \m@ne}%
897 \let\reserved@b\@xexpast
898 \else \let\reserved@b\@xexnoop\fi
899 \expandafter\reserved@b \reserved@a #4\@@
900 \expandafter\endgroup
901 \expandafter\def\expandafter\reserved@a\expandafter{\reserved@a}%
902 \let\@tempa\reserved@a
903 }% End of \@xexpast
904 }% End of \lowercase
905 \endgroup
906 }{}% End of \@ifundefined test.
907 \def\pmatrix{\left(\matrix}
908 \def\endpmatrix{\endmatrix\right)}
909 \def\bmatrix{\left[\matrix}
910 \def\endbmatrix{\endmatrix\right]}
911 \def\vmatrix{\left|\matrix}
912 \def\endvmatrix{\endmatrix\right|}
913 \def\Vmatrix{\left\|\matrix}
914 \def\endVmatrix{\endmatrix\right\|}
915 \let\hdots\@ldots
916 \def\hdotsfor#1{\if\noexpand#1[\expandafter\shdots@for\else
917 \hdots@for\@ne{#1}\fi}
918 \newmuskip\dotsspace@
919 \def\shdots@for#1]{\hdots@for{#1}}
920 \def\hdots@for#1#2{\multicolumn{#2}c%
921 {\m@th\dotsspace@1.5mu\mkern-#1\dotsspace@
922 \xleaders\hbox{$\m@th\mkern#1\dotsspace@.\mkern#1\dotsspace@$}%
923 \hfill
924 \mkern-#1\dotsspace@}%
926 \def\cases{\left\{\def\arraystretch{1.2}\hskip-\arraycolsep
927 \array{l@{\quad}l}}
928 \def\endcases{\endarray\hskip-\arraycolsep\right.}
929 \newif\ifinany@
930 \newif\ifinalign@
931 \newif\ifingather@
932 \newcount\and@
933 \newif\iftag@
934 \newhelp\andhelp@
935 {An extra & here is so disastrous that you should probably exit^^J
936 and fix things up.}
937 \newif\ifst@rred
938 \newtoks\@envbody
939 \def\addto@envbody#1{\@envbody\expandafter{\the\@envbody#1}}
940 \def\collect@body#1{%
941 \@envbody{}%
942 \def\process@envbody{%
943 \expandafter#1\expandafter{\the\@envbody}}%
944 \expandafter\let\csname\@currenvir\endcsname\collect@@body
945 \csname\@currenvir\endcsname}
946 \def\collect@@body#1\end#2{%
947 \def\@tempa{#2}%
948 \ifx\@tempa\@currenvir
949 \addto@envbody{#1}%
950 \expandafter\edef\csname\@currenvir\endcsname
951 {\noexpand\process@envbody\noexpand\end{\@tempa}}%
952 \else
953 \addto@envbody{#1\end{#2}}%
955 \csname\@currenvir\endcsname}
956 \newenvironment{aligned}{%
957 \relax\ifmmode\else\nonmatherr@{\begin{aligned}}\fi
958 \null\,\new@ifnextchar[{\aligned@}{\aligned@[c]}%
960 \crcr\egroup\egroup
962 \def\aligned@[#1]{%
963 \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi
964 \bgroup
965 \Let@\restore@math@cr
966 \default@tag
967 \ifinany@\else\openup\jot\fi
968 \ialign\bgroup\hfil\strut@$\m@th\displaystyle{##}$&%
969 $\m@th\displaystyle{{}##}$\hfil\crcr}
970 \newtoks\hashtoks@
971 \hashtoks@{#}
972 \newcount\atcount@
973 \def\doat@#1{\toks@{\hfil\strut@$\m@th
974 \displaystyle{\the\hashtoks@}$&$\m@th\displaystyle
975 {{}\the\hashtoks@}$\hfil}%
976 \atcount@#1\relax\advance\atcount@\m@ne
977 \loop\ifnum\atcount@>\z@\toks@\expandafter{\the\toks@&\hfil$\m@th
978 \displaystyle{\the\hashtoks@}$&$\m@th
979 \displaystyle{{}\the\hashtoks@}$\hfil}\advance
980 \atcount@\m@ne\repeat
981 \xdef\preamble@{\the\toks@}\xdef\preamble@@{\preamble@}}
982 \newenvironment{alignedat}[2][c]{%
983 \null\,%
984 \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi
985 \bgroup\doat@{#2}\Let@ \restore@math@cr\default@tag
986 \ifinany@\else\openup\jot\fi\ialign\bgroup\span\preamble@@\crcr
988 \endaligned
990 \newenvironment{gathered}[1][c]{%
991 \relax\ifmmode\else\nonmatherr@{\begin{gathered}}\fi
992 \null\,%
993 \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi
994 \bgroup\Let@\restore@math@cr
995 \ifinany@\else\openup\jot\fi\ialign
996 \bgroup\hfil\strut@$\m@th\displaystyle##$\hfil\crcr
998 \endaligned
1000 \def\tag@in@align{\relax
1001 \iftag@\DN@{\invalid@tag{Multiple \string\tag}}\else
1002 \global\tag@true
1003 \if@eqnsw\global\@eqnswfalse\fi
1004 \let\next@\make@df@tag\fi
1005 \next@}
1006 \def\math@cr@@@align{%
1007 \if@eqnsw\global\tag@true\fi
1008 \iftag@
1009 \ifcase\and@
1010 \DN@{&&}\else
1011 \DN@{&}\fi\else
1012 \let\next@\relax\fi
1013 \next@
1014 \relax
1015 \if@eqnsw\tagform@\theequation\stepcounter{equation}\else
1016 \iftag@\df@tag\fi\fi
1017 \global\@eqnswtrue\cr}
1018 \def\Tag@{\relax\iftag@\else\firstchoice@true
1019 \PackageError{amstex}{%
1020 Extra & on this line%
1021 }{\the\andhelp@% "An extra & here is disastrous"
1022 }\fi}
1023 \newdimen\lwidth@
1024 \newdimen\rwidth@
1025 \newdimen\maxlwidth@
1026 \newdimen\maxrwidth@
1027 \newdimen\totwidth@
1028 \def\measure@#1{\lwidth@\z@\rwidth@\z@\maxlwidth@\z@\maxrwidth@\z@
1029 \global\and@\z@
1030 \setbox\@ne\vbox{%
1031 \everycr{\noalign{\global\tag@false\global\and@\z@}}\Let@
1032 \let\tag\gobble@tag
1033 \let\notag\@empty \let\nonumber\@empty
1034 \firstchoice@false
1035 \halign{\setboxz@h{$\m@th\displaystyle{\@lign##}$}%
1036 \global\lwidth@\wdz@
1037 \ifdim\lwidth@>\maxlwidth@\global\maxlwidth@\lwidth@\fi
1038 \global\advance\and@\@ne
1039 &\setboxz@h{$\m@th\displaystyle{{}\@lign##}$}%
1040 \global\rwidth@\wdz@
1041 \ifdim\rwidth@>\maxrwidth@\global\maxrwidth@\rwidth@\fi
1042 \global\advance\and@\@ne
1043 &\Tag@\@gobble{##}\crcr#1\crcr}}%
1044 \totwidth@\maxlwidth@\advance\totwidth@\maxrwidth@}
1045 \def\displ@y{\global\dt@ptrue\openup\jot\m@th
1046 \everycr{\noalign{\ifdt@p \global\dt@pfalse
1047 \vskip-\lineskiplimit \vskip\normallineskiplimit
1048 \else \penalty\@eqpen \fi}}}
1049 \def\displ@y@{\global\dt@ptrue\openup\jot
1050 \everycr{\noalign{\global\tag@false
1051 \global\and@\z@
1052 \global\dspbrk@lvl\m@ne
1053 \ifdt@p\global\dt@pfalse
1054 \vskip-\lineskiplimit\vskip\normallineskiplimit\else
1055 \penalty\@eqpen\fi}}}
1056 \def\black@#1{\noalign{\ifdim#1>\displaywidth
1057 \dimen@\prevdepth\nointerlineskip
1058 \vskip-\ht\strutbox@\vskip-\dp\strutbox@
1059 \vbox{\noindent\hbox to#1{\strut@\hfill}}%
1060 \prevdepth\dimen@
1061 \fi}}
1062 \def\align{\ifingather@
1063 {\ifnum0=`}\fi
1064 \DN@{\@nameuse{align (in \string\gather)}}%
1065 \else \ifmmode\nomath@env
1066 \DN@{\let\endalign\relax\@gobble}\else
1067 $$\stepcounter{equation}%
1068 \st@rredfalse\let\next@\align@\fi\fi
1069 \collect@body\next@}
1070 \@namedef{align*}{\ifingather@
1071 {\ifnum0=`}\fi
1072 \DN@{\@nameuse{align* (in \string\gather)}}\else
1073 \ifmmode\nomath@env
1074 \DN@{\@namedef{endalign*}{}\@gobble}\else
1075 $$\st@rredtrue
1076 \let\next@\align@\fi\fi
1077 \collect@body\next@}
1078 \newdimen\lineht@
1079 \def\align@{\inalign@true\inany@true
1080 \displaybreak@\intertext@
1081 \let\math@cr@@@\math@cr@@@align
1082 \let\tag\tag@in@align
1083 \global\and@\z@\global\dspbrk@lvl\m@ne
1084 \iftagsleft@\DN@{\@nameuse{align }}\else
1085 \DN@{\@nameuse{align \space}}\fi\next@}
1086 \@namedef{align }#1{%
1087 \measure@{#1}%
1088 \global\and@\z@
1089 \global\dspbrk@lvl\m@ne
1090 \if@fleqn %%*F
1091 \advance\totwidth@\@mathmargin %%*F
1092 \fi %%*F
1093 \ifdim\totwidth@>\displaywidth
1094 \let\displaywidth@\totwidth@
1095 \else
1096 \let\displaywidth@\displaywidth
1098 \ifingather@
1099 \everycr{%
1100 \noalign{%
1101 \global\and@\z@
1102 \global\dspbrk@lvl\m@ne
1105 \else
1106 \displ@y@
1108 \Let@
1109 \ifst@rred\else\@seteqlabel\theequation\fi
1110 \tabskip\@mathmargin %%*F
1111 \dimen@\displaywidth %%*F
1112 \if@fleqn %%*F
1113 \ifingather@ %%*F
1114 \tabskip\z@skip %%*F
1115 \advance\dimen@-\@mathmargin %%*F
1116 \fi %%*F
1117 \fi %%*F
1118 \halign to\dimen@\bgroup %%*F
1119 \ifst@rred\nonumber\fi
1120 \hfil
1121 \strut@
1122 \setboxz@h{\global\tag@false$\m@th\displaystyle{\@lign##}$}%
1123 \global\lwidth@\wdz@
1124 \global\lineht@\ht\z@
1125 \boxz@
1126 \global\advance\and@\@ne
1127 \tabskip\z@skip
1128 &\setboxz@h{$\m@th\displaystyle{{}\@lign##}$}%
1129 \global\rwidth@\wdz@
1130 \ifdim\ht\z@>\lineht@
1131 \global\lineht@\ht\z@
1133 \boxz@
1134 \hfil
1135 \global\advance\and@\@ne
1136 \tabskip\@centering
1137 &\kern-\displaywidth@
1138 \setboxz@h{\@lign\strut@{##}}%
1139 \if@fleqn %%*F
1140 \dimen@\@mathmargin %%*F
1141 \advance\dimen@\maxlwidth@ %%*F
1142 \advance\dimen@-\lwidth@ %%*F
1143 \else %%*F
1144 \dimen@\displaywidth
1145 \advance\dimen@-\totwidth@
1146 \divide\dimen@\tw@
1147 \advance\dimen@\maxlwidth@
1148 \advance\dimen@-\lwidth@
1149 \fi %%*F
1150 \ifdim\dimen@<\tw@\wdz@
1151 \rlap{\vbox{\normalbaselines\boxz@\vbox to\lineht@{}}}%
1152 \else
1153 \rlap{\boxz@}%
1155 \tabskip\displaywidth@
1156 \crcr
1159 \@namedef{align \space}#1{%
1160 \measure@{#1}%
1161 \if@fleqn %%*F
1162 \advance\totwidth@\@mathmargin %%*F
1163 \fi %%*F
1164 \global\and@\z@
1165 \global\dspbrk@lvl\m@ne
1166 \ifingather@
1167 \everycr{\noalign{\global\and@\z@\global\dspbrk@lvl\m@ne}}%
1168 \else
1169 \displ@y@
1171 \Let@
1172 \ifst@rred\else\@seteqlabel\theequation\fi
1173 \tabskip\@mathmargin %%*F
1174 \dimen@\displaywidth %%*F
1175 \if@fleqn %%*
1176 \ifingather@ %%*F
1177 \tabskip\z@skip %%*F
1178 \advance\dimen@-\@mathmargin %%*F
1179 \fi %%*F
1180 \fi %%*F
1181 \halign to\dimen@\bgroup %%*F
1182 \ifst@rred\nonumber\fi
1183 \hfil
1184 \strut@
1185 \setboxz@h{\global\tag@false$\m@th\displaystyle{\@lign##}$}%
1186 \global\lwidth@\wdz@\boxz@
1187 \global\advance\and@\@ne
1188 \tabskip\z@skip
1189 &\setboxz@h{$\m@th\displaystyle{{}\@lign##}$}%
1190 \global\rwidth@\wdz@
1191 \boxz@
1192 \hfill
1193 \global\advance\and@\@ne
1194 \tabskip\@centering
1195 &\setboxz@h{\@lign\strut@{##}}%
1196 \dimen@\displaywidth
1197 \advance\dimen@-\totwidth@
1198 \divide\dimen@\tw@
1199 \advance\dimen@\maxrwidth@
1200 \advance\dimen@-\rwidth@
1201 \ifdim\dimen@<\tw@\wdz@
1202 \llap{\vtop{\@movetag\normalbaselines\null\boxz@}}%%*T
1203 \else
1204 \llap{\boxz@}%
1206 \tabskip\z@skip
1207 \crcr#1%
1209 \def\endalign{\math@cr@@@align
1210 \black@\totwidth@
1211 \egroup$$\global\@ignoretrue\setb@ck}
1213 \@namedef{endalign*}{\math@cr@@@align\black@\totwidth@
1214 \egroup$$\global\@ignoretrue}
1215 \@namedef{align (in \string\gather)}{%
1216 \ifst@rred\stepcounter{equation}\fi
1217 \def\endalign{\@nameuse{endalign (in \string\gather)}\ifnum0=`{\fi}}%
1218 \vcenter\bgroup\st@rredfalse
1219 \collect@body\align@}
1220 \@namedef{endalign (in \string\gather)}{%
1221 \math@cr@@@align\black@\totwidth@
1222 \egroup\egroup
1223 \ifst@rred\setb@ck\fi% this ifst@rred is set by the enclosing gather
1224 \global\tag@false\global\@eqnswfalse}
1225 \@namedef{align* (in \string\gather)}{%
1226 \@namedef{endalign*}{\@nameuse{endalign* (in \string\gather)}%
1227 \ifnum0=`{\fi}}%
1228 \vcenter\bgroup\st@rredtrue
1229 \collect@body\align@}
1230 \@namedef{endalign* (in \string\gather)}{%
1231 \math@cr@@@align\black@\totwidth@\egroup\egroup
1232 \global\tag@false\global\@eqnswfalse}
1233 \newif\ifxat@
1234 \def\alignat#1{%
1235 \ifmmode\nomath@env\DN@{\let\endalignat\relax\@gobble}\else$$%
1236 \st@rredfalse\stepcounter{equation}\@seteqlabel\theequation
1237 \DN@{\@nameuse{alignat }#1}\fi
1238 \collect@body\next@}
1239 \@namedef{alignat*}#1{%
1240 \ifmmode\nomath@env\DN@{\@namedef{endalignat*}{}\@gobble}\else$$%
1241 \st@rredtrue
1242 \DN@{\@nameuse{alignat }#1}\fi
1243 \collect@body\next@}
1244 \newif\ifmeasuring@
1245 \newbox\savealignat@
1246 \def\math@cr@@@alignat{%
1247 \if@eqnsw\global\tag@true\fi
1248 \iftag@
1249 \multiply\count@\tw@
1250 \xdef\next@{}\loop\ifnum\count@>\and@\xdef\next@{&\next@}%
1251 \advance\count@\m@ne\repeat\else
1252 \let\next@\relax\fi
1253 \next@
1254 \relax
1255 \if@eqnsw\tagform@\theequation\stepcounter{equation}\else
1256 \iftag@\df@tag\fi\fi
1257 \global\@eqnswtrue\cr}%
1258 \@namedef{alignat }#1#2{%
1259 \inany@true
1260 \xat@false
1261 \let\tag\tag@in@align
1262 \def\math@cr@@@{\count@#1\relax \math@cr@@@alignat}%
1263 \displaybreak@
1264 \intertext@
1265 \displ@y@
1266 \ifst@rred
1267 \global\@eqnswfalse
1268 \else
1269 \global\@eqnswtrue
1271 \measuring@true
1272 \setbox\savealignat@\hbox{%
1273 $\m@th\displaystyle\Let@
1274 \attag@{#1}%
1275 \vbox{\firstchoice@false\halign{\span\preamble@@\crcr#2\crcr}}$%
1277 \measuring@false
1278 \Let@
1279 \attag@{#1}%
1280 \tabskip\@mathmargin %%*F
1281 \halign to\displaywidth\bgroup
1282 \span\preamble@@\crcr
1285 \def\endalignat{\math@cr@@@\black@{\wd\savealignat@}%
1286 \egroup\setb@ck$$\global\@ignoretrue}
1287 \@namedef{endalignat*}{\math@cr@@@\black@{\wd\savealignat@}\egroup
1288 $$\global\@ignoretrue}
1289 \def\xalignat#1{%
1290 \ifmmode\nomath@env\DN@{\let\endxalignat\relax\@gobble}\else$$%
1291 \st@rredfalse\stepcounter{equation}\@seteqlabel\theequation
1292 \DN@{\@nameuse{xalignat }#1}\fi
1293 \collect@body\next@}
1294 \@namedef{xalignat*}#1{%
1295 \ifmmode\nomath@env\DN@{\@namedef{endxalignat*}{}\@gobble}\else$$%
1296 \st@rredtrue
1297 \DN@{\@nameuse{xalignat }#1}\fi
1298 \collect@body\next@}
1299 \let\endxalignat=\endalignat
1301 \expandafter\let\csname endxalignat*\expandafter
1302 \endcsname\csname endalignat*\endcsname
1303 \@namedef{xalignat }#1#2{%
1304 \inany@true
1305 \xat@true
1306 \let\tag\tag@in@align
1307 \def\math@cr@@@{\count@#1\relax\math@cr@@@alignat}%
1308 \displaybreak@
1309 \intertext@
1310 \displ@y@
1311 \measuring@true
1312 \setbox\savealignat@\hbox{%
1313 $\m@th\displaystyle\Let@
1314 \attag@{#1}%
1315 \vbox{%
1316 \firstchoice@false
1317 \halign{\span\preamble@@\crcr#2\crcr}%
1321 \measuring@false
1322 \Let@
1323 \attag@{#1}%
1324 \tabskip\@mathmargin %%*F
1325 \halign to\displaywidth\bgroup
1326 \span\preamble@@\crcr#2%
1328 \def\attag@#1{%
1329 \let\TAG@\Tag@\let\Tag@0%
1330 \ifmeasuring@\def\llap@##1{\setboxz@h{##1}\hbox to\tw@\wdz@{}}%
1331 \def\rlap@##1{\setboxz@h{##1}\hbox to\tw@\wdz@{}}\else
1332 \let\llap@\llap\let\rlap@\rlap\fi
1333 \toks@{\hfil\strut@$\m@th\displaystyle{\@lign\the\hashtoks@}$%
1334 \tabskip\z@skip
1335 \global\advance\and@\@ne
1336 &$\m@th\displaystyle{{}\@lign\the\hashtoks@}$\hfil
1337 \ifxat@\tabskip\@centering\fi\global\advance\and@\@ne}%
1338 \iftagsleft@
1339 \@temptokena{\tabskip\@centering&\Tag@\kern-\displaywidth
1340 \rlap@{\@lign
1341 \the\hashtoks@
1343 \global\advance\and@\@ne\tabskip\displaywidth}\else
1344 \@temptokena{\tabskip\@centering&\Tag@\llap@{\@lign
1345 \the\hashtoks@
1346 }\global\advance\and@\@ne\tabskip\z@skip}\fi
1347 \atcount@#1\relax\advance\atcount@\m@ne
1348 \loop\ifnum\atcount@>\z@
1349 \toks@\expandafter{\the\toks@&\hfil$\m@th\displaystyle{\@lign
1350 \the\hashtoks@}$\global\advance\and@\@ne
1351 \tabskip\z@skip
1352 &$\m@th\displaystyle{{}\@lign\the\hashtoks@}$\hfil\ifxat@
1353 \tabskip\@centering\fi\global\advance\and@\@ne}\advance\atcount@\m@ne
1354 \repeat
1355 \xdef\preamble@{\the\toks@\the\@temptokena}%
1356 \xdef\preamble@@{\ifst@rred\noexpand\nonumber\fi\preamble@}%
1357 \let\Tag@\TAG@}
1358 \def\xxalignat#1{%
1359 \ifmmode\nomath@env\DN@{\let\endxxalignat\relax\@gobble}\else$$%
1360 \DN@{\@nameuse{xxalignat }#1}\fi
1361 \collect@body\next@}
1362 \@namedef{xxalignat }#1#2{\inany@true
1363 \displaybreak@\intertext@
1364 \displ@y\setbox\savealignat@\hbox{$\m@th\displaystyle\Let@
1365 \xxattag@{#1}%
1366 \vbox{\firstchoice@false\halign{\span\preamble@@\crcr#2\crcr}}$}%
1367 \Let@\xxattag@{#1}\tabskip\z@skip\halign to\displaywidth\bgroup
1368 \span\preamble@@\crcr#2}
1369 \expandafter\let\expandafter\endxxalignat\csname endxalignat*\endcsname
1370 \def\xxattag@#1{\toks@{\tabskip\z@skip\hfil\strut@
1371 $\m@th\displaystyle{\the\hashtoks@}$&%
1372 $\m@th\displaystyle{{}\the\hashtoks@}$\hfil\tabskip\@centering&}%
1373 \atcount@#1\relax\advance\atcount@\m@ne\loop\ifnum\atcount@>\z@
1374 \toks@
1375 \expandafter
1376 {\the\toks@&\hfil$\m@th\displaystyle{\the\hashtoks@}$%
1377 \tabskip\z@skip&$\m@th\displaystyle{{}\the\hashtoks@}$\hfil
1378 \tabskip\@centering}\advance\atcount@\m@ne\repeat
1379 \xdef\preamble@{\the\toks@\tabskip\z@skip}\xdef\preamble@@{\preamble@}}
1380 \newdimen\gwidth@
1381 \newdimen\gmaxwidth@
1382 \def\gmeasure@#1{\gwidth@\z@\gmaxwidth@\z@\setbox\@ne\vbox{\Let@
1383 \firstchoice@false\let\tag\gobble@tag
1384 \halign{\setboxz@h{$\m@th\displaystyle{##}$}\global\gwidth@\wdz@
1385 \ifdim\gwidth@>\gmaxwidth@\global\gmaxwidth@\gwidth@\fi
1386 &\@gobble{##}\crcr#1\crcr}}}
1387 \def\math@cr@@@gather{%
1388 \if@eqnsw\global\tag@true\fi
1389 \iftag@
1390 \DN@{&\relax \if@eqnsw
1391 \tagform@\theequation \stepcounter{equation}%
1392 \else\iftag@\df@tag\fi\fi}%
1393 \else
1394 \expandafter\@gobble\fi
1395 \next@
1396 \global\@eqnswtrue\cr}
1397 \def\gather{%
1398 \ifmmode\nomath@env\DN@{\let\endgather\relax\@gobble}\else $$%
1399 \ingather@true\inany@true
1400 \stepcounter{equation}%
1401 \let\tag\tag@in@align\st@rredfalse
1402 \displaybreak@\intertext@
1403 \displ@y
1404 \Let@\@seteqlabel\theequation
1405 \let\math@cr@@@\math@cr@@@gather
1406 \iftagsleft@\DN@{\@nameuse{gather }}\else
1407 \DN@{\@nameuse{gather \space}}\fi\fi
1408 \collect@body\next@}
1409 \@namedef{gather*}{%
1410 \ifmmode\nomath@env\DN@{\@namedef{endgather*}{}\@gobble}\else $$%
1411 \ingather@true\inany@true
1412 \let\tag\tag@in@align\st@rredtrue
1413 \displaybreak@\intertext@
1414 \displ@y\Let@
1415 \let\math@cr@@@\math@cr@@@gather
1416 \iftagsleft@\DN@{\@nameuse{gather }}\else
1417 \DN@{\@nameuse{gather \space}}\fi\fi
1418 \collect@body\next@}
1419 \newdimen\glineht@
1420 \@namedef{gather \space}#1{%
1421 \gmeasure@{#1}%
1422 \if@fleqn %%*F
1423 \advance\gmaxwidth@\@mathmargin %%*F
1424 \fi %%*F
1425 \global\dt@ptrue
1426 \tabskip\@mathmargin %%*F
1427 \halign to\displaywidth\bgroup
1428 \ifst@rred\nonumber\else\global\@eqnswtrue\fi
1429 \if@fleqn\else\hfil\fi %%*F
1430 \strut@
1431 \setboxz@h{\global\tag@false$\m@th\displaystyle{##}$}%
1432 \global\gwidth@\wdz@\boxz@
1433 \hfil
1434 \tabskip\@centering %%*F
1435 &\setboxz@h{\strut@{##}}%
1436 \dimen@\displaywidth
1437 \advance\dimen@-\gwidth@
1438 \if@fleqn %%*F
1439 \advance\dimen@-\@mathmargin %%*F
1440 \else %%*F
1441 \divide\dimen@\tw@ %%*B
1442 \fi %%*F
1443 \ifdim\dimen@<\tw@\wdz@ %%*
1444 \llap{\vtop{\@movetag\normalbaselines\null\boxz@}}%%*T %%*
1445 \else
1446 \llap{\boxz@}% %%*
1448 \tabskip\z@skip
1449 \crcr
1452 \def\endgather{\math@cr
1453 \black@\gmaxwidth@\egroup $$\setb@ck\global\@ignoretrue}
1455 \@namedef{endgather*}{\math@cr
1456 \black@\gmaxwidth@\egroup $$\global\@ignoretrue}
1457 \@namedef{gather }#1{%
1458 \gmeasure@{#1}%
1459 \global\dt@ptrue
1460 \if@fleqn %%*F
1461 \advance\gmaxwidth@\@mathmargin %%*F
1462 \fi %%*F
1463 \ifdim\gmaxwidth@>\displaywidth
1464 \let\gdisplaywidth@\gmaxwidth@
1465 \else
1466 \let\gdisplaywidth@\displaywidth
1468 \tabskip\@mathmargin %%*F
1469 \halign to\displaywidth\bgroup
1470 \ifst@rred\nonumber\else\global\@eqnswtrue\fi
1471 \if@fleqn\else\hfil\fi %%*F
1472 \strut@
1473 \setboxz@h{\global\tag@false$\m@th\displaystyle{##}$}%
1474 \global\gwidth@\wdz@
1475 \global\glineht@\ht\z@
1476 \boxz@
1477 \hfil
1478 \tabskip\@centering %%*F
1479 &\kern-\gdisplaywidth@
1480 \setboxz@h{\strut@{##}}%
1481 \if@fleqn %%*F
1482 \dimen@\@mathmargin %%*F
1483 \else %%*F
1484 \dimen@\displaywidth
1485 \advance\dimen@-\gwidth@
1486 \divide\dimen@\tw@ %%*B
1487 \fi %%*F
1488 \ifdim\dimen@<\tw@\wdz@ %%*
1489 \rlap{\vbox{\normalbaselines\boxz@\vbox to\glineht@{}}}% %%*
1490 \else
1491 \rlap{\boxz@}% %%*
1493 \tabskip\gdisplaywidth@
1494 \crcr
1497 \def\split{%
1498 \ifinany@\let\next@\insplit@\else
1499 \DN@{\PackageError{amstex}{\string\begin{split} is not allowed
1500 here. Try the `aligned' environment.}\@ehb}\fi
1501 \next@}
1502 \def\insplit@{\global\setbox\z@\vbox\bgroup
1503 \Let@ \restore@math@cr \default@tag % disallow use of \tag here
1504 \ialign\bgroup \hfil\strut@
1505 $\m@th\displaystyle{##}$&$\m@th\displaystyle{{}##}$\hfill\crcr}
1506 \def\endsplit{\crcr\egroup\egroup
1507 \iftagsleft@\expandafter\lendsplit@\else
1508 \expandafter\rendsplit@\fi}
1509 \def\rendsplit@{\global\setbox9 \vbox
1510 {\unvcopy\z@\global\setbox8 \lastbox\unskip}%
1511 \setbox\@ne\hbox{\unhcopy8 \unskip\global\setbox\tw@\lastbox
1512 \unskip\global\setbox\thr@@\lastbox}%
1513 \global\setbox7 \hbox{\unhbox\tw@\unskip}%
1514 \ifinalign@\ifctagsplit@
1515 \gdef\split@{\hbox to\wd\thr@@{}&
1516 \vcenter{\vbox{\moveleft\wd\thr@@\boxz@}}}%
1517 \else\gdef\split@{&\vbox{\moveleft\wd\thr@@\box9}\crcr
1518 \box\thr@@&\box7}\fi
1519 \else
1520 \ifctagsplit@\gdef\split@{\vcenter{\boxz@}}\else
1521 \gdef\split@{\box9\crcr\hbox{\box\thr@@\box7}}\fi
1523 \aftergroup\split@}
1524 \def\lendsplit@{\global\setbox9\vtop{\unvcopy\z@}%
1525 \setbox\@ne\vbox{\unvcopy\z@\global\setbox8\lastbox}%
1526 \setbox\@ne\hbox{\unhcopy8\unskip\setbox\tw@\lastbox
1527 \unskip\global\setbox\thr@@\lastbox}%
1528 \ifinalign@\ifctagsplit@
1529 \gdef\split@{\hbox to\wd\thr@@{}&
1530 \vcenter{\vbox{\moveleft\wd\thr@@\box9}}}%
1531 \else
1532 \gdef\split@{\hbox to\wd\thr@@{}&\vbox{\moveleft\wd\thr@@\box9}}\fi
1533 \else
1534 \ifctagsplit@\gdef\split@{\vcenter{\box9}}\else
1535 \gdef\split@{\box9}\fi
1536 \fi\aftergroup\split@}
1537 \newdimen\multlinegap
1538 \multlinegap10pt
1539 \newdimen\multlinetaggap@
1540 \multlinetaggap@10pt
1541 \def\multline{%
1542 \ifmmode\nomath@env\DN@{\let\endmultline\relax\@gobble}%
1543 \else $$\DN@{\collect@body\multline@}\fi
1544 \st@rredfalse\@eqnswtrue \@seteqlabel\theequation
1545 \stepcounter{equation}\next@}
1546 \@namedef{multline*}{%
1547 \ifmmode\nomath@env\DN@{\@namedef{endmultline*}{}\@gobble}%
1548 \else $$\DN@{\collect@body\multline@}\fi
1549 \st@rredtrue\@eqnswfalse \let\@currentlabel\@empty
1550 \next@}
1551 \def\multline@{\inany@true\displaybreak@
1552 \global\tag@false
1553 \def\tag{\ifst@rred\else
1554 \global\advance\c@equation\m@ne\fi\tag@in@align}%
1555 \iftagsleft@
1556 \expandafter\lmultline@@\else
1557 \expandafter\rmultline@@\fi}
1558 \newdimen\mwidth@
1559 \def\rmmeasure@#1{%
1560 \def\shoveleft##1{##1}\def\shoveright##1{##1}%
1561 \setbox\@ne\vbox{\firstchoice@false\Let@\halign{\setboxz@h
1562 {$\m@th\@lign\displaystyle{}##$}\global\mwidth@\wdz@
1563 \crcr#1\crcr}}}
1564 \newdimen\mlineht@
1565 \newif\ifzerocr@
1566 \newif\ifonecr@
1567 \def\lmmeasure@#1{\global\zerocr@true\global\onecr@false
1568 \everycr{\noalign{\ifonecr@\global\onecr@false\fi
1569 \ifzerocr@\global\zerocr@false\global\onecr@true\fi}}%
1570 \def\shoveleft##1{##1}\def\shoveright##1{##1}%
1571 \setbox\@ne\vbox{\Let@\firstchoice@false\halign{\setboxz@h
1572 {$\m@th\@lign\displaystyle{}##$}\ifonecr@\global\mwidth@\wdz@
1573 \global\mlineht@\ht\z@\fi\crcr#1\crcr}}}
1574 \newbox\mtagbox@
1575 \newdimen\ltwidth@
1576 \newdimen\rtwidth@
1577 \def\lmultline@@#1{%
1578 \lmmeasure@{#1}%
1579 \setbox\mtagbox@\hbox{%
1580 \iftag@
1581 \df@tag
1582 \else
1583 \if@eqnsw
1584 \global\tag@true
1585 \tagform@\theequation
1589 \dimen@\mwidth@
1590 \advance\dimen@\wd\mtagbox@
1591 \advance\dimen@\multlinetaggap@
1592 \if@fleqn %%*F
1593 \advance\dimen@\@mathmargin %%*F
1594 \fi %%*F
1595 \ifdim\dimen@>\displaywidth
1596 \ltwidth@\z@
1597 \else
1598 \ltwidth@\wd\mtagbox@
1600 \lmultline@@@#1
1602 \def\lmultline@@@{%
1603 \displ@y
1604 \def\shoveright##1{##1\hfilneg\hskip\multlinegap}%
1605 \if@fleqn %%*F
1606 \def\shoveleft##1{##1}% %%*F
1607 \else %%*F
1608 \def\shoveleft##1{%
1609 \setboxz@h{$\m@th\displaystyle{}##1$}%
1610 \setbox\@ne\hbox{$\m@th\displaystyle##1$}%
1611 \hfilneg
1612 \iftag@
1613 \ifdim\ltwidth@>\z@
1614 \hskip\ltwidth@
1615 \hskip\multlinetaggap@
1617 \else
1618 \hskip\multlinegap
1620 \hskip.5\wd\@ne
1621 \hskip-.5\wdz@##1%
1623 \fi %%*F
1624 \if@fleqn %%*F
1625 \tabskip\@mathmargin %%*F
1626 \else %%*F
1627 \tabskip\z@skip %%*
1628 \fi %%*F
1629 \totwidth@\displaywidth %%*F
1630 \if@fleqn %%*F
1631 \advance\totwidth@-\@mathmargin %%*F
1632 \fi %%*F
1633 \halign\bgroup
1634 \Let@
1635 \let\tag\gobble@tag
1636 \hbox to\totwidth@{% %%*F
1637 \strut@$\m@th\displaystyle
1638 \if@fleqn %%*F
1639 \hskip 0pt plus 1000pt %%*F
1640 \else %%*F
1641 \hfil
1642 \fi %%*F
1643 {}##\hfil$%
1645 \crcr
1646 \if@fleqn %%*F
1647 \hskip-\@mathmargin %%*F
1648 \else %%*F
1649 \hfilneg
1650 \fi %%*F
1651 \iftag@
1652 \ifdim\ltwidth@>\z@
1653 \box\mtagbox@
1654 \hskip\multlinetaggap@
1655 \else
1656 \rlap{%
1657 \vbox{%
1658 \normalbaselines
1659 \hbox{\strut@\box\mtagbox@}%
1660 \vbox to\mlineht@{}%
1663 \hskip\multlinegap %%*
1665 \else
1666 \hskip\multlinegap
1669 \def\rmultline@@#1{%
1670 \rmmeasure@{#1}%
1671 \setbox\mtagbox@\hbox{%
1672 \iftag@
1673 \df@tag
1674 \else
1675 \if@eqnsw
1676 \global\tag@true
1677 \tagform@\theequation
1681 \dimen@\mwidth@
1682 \advance\dimen@\wd\mtagbox@
1683 \advance\dimen@\multlinetaggap@
1684 \if@fleqn %%*F
1685 \advance\dimen@\@mathmargin %%*F
1686 \fi %%*F
1687 \ifdim\dimen@>\displaywidth
1688 \rtwidth@\z@
1689 \else
1690 \rtwidth@\wd\mtagbox@
1692 \rmultline@@@#1
1694 \def\rmultline@@@{%
1695 \displ@y
1696 \def\shoveright##1{%
1697 ##1%
1698 \hfilneg
1699 \iftag@
1700 \ifdim\rtwidth@>\z@
1701 \hskip\rtwidth@
1702 \hskip\multlinetaggap@
1704 \else
1705 \hskip\multlinegap
1708 \if@fleqn %%*F
1709 \def\shoveleft##1{##1}% %%*F
1710 \else %%*F
1711 \def\shoveleft##1{%
1712 \setboxz@h{$\m@th\displaystyle{}##1$}%
1713 \setbox\@ne\hbox{$\m@th\displaystyle##1$}%
1714 \hfilneg
1715 \hskip\multlinegap
1716 \hskip.5\wd\@ne
1717 \hskip-.5\wdz@
1718 ##1%
1720 \fi %%*F
1721 \if@fleqn %%*F
1722 \tabskip\@mathmargin %%*F
1723 \else %%*F
1724 \tabskip\z@skip %%*
1725 \fi %%*F
1726 \totwidth@\displaywidth %%*F
1727 \if@fleqn %%*F
1728 \advance\totwidth@-\@mathmargin %%*F
1729 \fi %%*F
1730 \halign\bgroup
1731 \Let@
1732 \let\tag\gobble@tag
1733 \hbox to\totwidth@{%
1734 \strut@$\m@th\displaystyle
1735 \if@fleqn %%*F
1736 \hskip 0pt plus 1000pt %%*F
1737 \else %%*F
1738 \hfil
1739 \fi %%*F
1740 {}##\hfil$%
1742 \crcr
1743 \if@fleqn %%*F
1744 \hskip-\@mathmargin %%*F
1745 \else %%*F
1746 \hfilneg
1747 \fi %%*F
1748 \hskip\multlinegap
1750 \def\endmultline{\iftagsleft@\expandafter\lendmultline@\else
1751 \expandafter\rendmultline@\fi\global\@ignoretrue}
1752 \expandafter\let\csname endmultline*\endcsname=\endmultline
1753 \def\lendmultline@{\hfilneg\hskip\multlinegap\crcr\egroup$$}
1754 \def\rendmultline@{%
1755 \iftag@
1756 \ifdim\rtwidth@>\z@
1757 \hskip\multlinetaggap@
1758 \box\mtagbox@
1759 \else
1760 \hskip\multlinegap %%*
1761 \llap{%
1762 \vtop{%
1763 \@movetag %%*T
1764 \normalbaselines\null\hbox{\strut@\box\mtagbox@}%
1768 \else
1769 \hskip\multlinegap
1771 \hfilneg
1772 \crcr
1773 \egroup$$%
1775 \expandafter\def
1776 \expandafter\@arrayparboxrestore
1777 \expandafter{\@arrayparboxrestore
1778 \inany@false\ingather@false\inalign@false
1779 \default@tag}
1780 \def\equation{\gather\def\\{\PackageError{amstex}{\Invalid@@\\}\@eha}}
1781 \def\endequation{\endgather}
1782 \newenvironment{equation*}{%
1783 \equation
1785 \nonumber\endequation
1787 \newcounter{parentequation}% Counter for ``parent equation''.
1788 \newenvironment{subequations}{%
1789 \refstepcounter{equation}%
1790 \begingroup % conservative approach
1791 \let\protect\@nx
1792 \edef\@tempa{\def\@nx\theparentequation{\theequation}}%
1793 \@xp\endgroup\@tempa
1794 \setcounter{parentequation}{\value{equation}}%
1795 \setcounter{equation}{0}%
1796 \def\theequation{\theparentequation\alph{equation}}%
1797 \ignorespaces
1799 \setcounter{equation}{\value{parentequation}}%
1800 \global\@ignoretrue
1802 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1803 \def\atdef@#1{\expandafter\def\csname\space @\string#1\endcsname}
1804 \begingroup \catcode`\@=\active
1805 \gdef @{\Iat}
1806 \endgroup
1807 \DeclareRobustCommand{\Iat}{\FN@\at@}
1808 \def\at@{\let\next@\at@@
1809 \ifcat\noexpand\@let@token a\else
1810 \ifcat\noexpand\@let@token0\else
1811 \ifcat\noexpand\@let@token\relax\else
1812 \let\@let@token@\at@@@\fi\fi\fi\next@}
1813 \def\at@@#1{\expandafter
1814 \@ifundefined{ @\string#1}%
1815 {\DN@{\at@@@#1}}%
1816 {\DN@{\csname\space @\string#1\endcsname}}%
1817 \next@}%
1818 \def\at@@@{\PackageError{amstex}{\Invalid@@ @}%
1819 {\the\athelp@}% "I'll assume you wanted @@"
1820 \char64\relax}
1821 \newhelp\athelp@
1822 {Only certain combinations beginning with @ make sense to me.^^J%
1823 I'll assume you wanted @@ for a printed @.}
1824 \atdef@ @{{\atchar}}% to define @@
1825 \chardef\atchar=64
1826 \def\makeatother{\catcode64=\active}
1827 \def\@tempa#1#2#3#4#5#6{%
1828 {#1}{#2}\ifnum0#6=0{13}\@xp\@gobblefour
1829 \else{#3}\fi\@tempa{#4}{#5}{#6}}%
1830 \xdef\@currnamestack{\@xp\@tempa\@currnamestack{}{}{0}}
1831 {\def\@makeother{\noexpand\@makeother\noexpand}
1832 \xdef\@sanitize{\@sanitize\@makeother\@}}
1833 {\def\do{\noexpand\do\noexpand}
1834 \xdef\dospecials{\dospecials\do\@}}
1835 \atdef@,{\ifmmode\mskip.1\thinmuskip\else \nonmatherr@{@,}\fi}
1836 \atdef@!{\RIfM@\mskip-.1\thinmuskip\else \nonmatherr@{@!}\fi}
1838 \@ifpackageloaded{amscd}{%
1840 \atdef@>#1>#2>{%
1841 \global\bigaw@\minaw@
1842 \setboxz@h{$\m@th\scriptstyle\;{#1}\;\;$}%
1843 \ifdim\wdz@>\bigaw@ \global\bigaw@\wdz@ \fi
1844 \@ifnotempty{#2}{\setbox\@ne\hbox{$\m@th\scriptstyle\;{#2}\;\;$}%
1845 \ifdim\wd\@ne>\bigaw@ \global\bigaw@\wd\@ne \fi}%
1846 \mathrel{\mathop{\hbox to\bigaw@{\rightarrowfill@\displaystyle}}%
1847 \limits^{#1}\@ifnotempty{#2}{_{#2}}}%
1848 }% end of @>>>
1849 \atdef@<#1<#2<{%
1850 \global\bigaw@\minaw@
1851 \setboxz@h{$\m@th\scriptstyle\;\;{#1}\;$}%
1852 \ifdim\wdz@>\bigaw@ \global\bigaw@\wdz@ \fi
1853 \@ifnotempty{#2}{\setbox\@ne\hbox{$\m@th\scriptstyle\;\;{#2}\;$}%
1854 \ifdim\wd\@ne>\bigaw@ \global\bigaw@\wd\@ne \fi}%
1855 \mathrel{\mathop{\hbox to\bigaw@{\leftarrowfill@\displaystyle}}%
1856 \limits^{#1}\@ifnotempty{#2}{_{#2}}}%
1857 }% end of @<<<
1858 }% end of @ifpackageloaded
1859 \@ifundefined{minaw@}{\newdimen\minaw@}{}
1860 \minaw@11.111pt
1861 \@ifundefined{bigaw@}{\newdimen\bigaw@}{}
1862 \atdef@-{\let\next-%%
1863 \DN@{\ifx\next-%%
1864 \def\next-{\setbox\z@\hbox{-}\unhbox\z@\FN@\next@}%%
1865 \expandafter\next \else\nobreak\fi}%%
1866 \next@-}%%
1867 \def\leftroot{\PackageError{amstex}{\Invalid@@\leftroot}\@eha}
1868 \def\uproot{\PackageError{amstex}{\Invalid@@\uproot}\@eha}
1869 \newcount\uproot@
1870 \newcount\leftroot@
1871 \def\root{\relaxnext@
1872 \DN@{\ifx\@let@token\uproot\let\next@\nextii@\else
1873 \ifx\@let@token\leftroot\let\next@\nextiii@\else
1874 \let\next@\plainroot@\fi\fi\next@}%
1875 \def\nextii@\uproot##1{\uproot@##1\relax\FN@\nextiv@}%
1876 \def\nextiv@{\ifx\@let@token\@sptoken\DN@. {\FN@\nextv@}\else
1877 \DN@.{\FN@\nextv@}\fi\next@.}%
1878 \def\nextv@{\ifx\@let@token\leftroot\let\next@\nextvi@\else
1879 \let\next@\plainroot@\fi\next@}%
1880 \def\nextvi@\leftroot##1{\leftroot@##1\relax\plainroot@}%
1881 \def\nextiii@\leftroot##1{\leftroot@##1\relax\FN@\nextvii@}%
1882 \def\nextvii@{\ifx\@let@token\@sptoken
1883 \DN@. {\FN@\nextviii@}\else
1884 \DN@.{\FN@\nextviii@}\fi\next@.}%
1885 \def\nextviii@{\ifx\@let@token\uproot\let\next@\nextix@\else
1886 \let\next@\plainroot@\fi\next@}%
1887 \def\nextix@\uproot##1{\uproot@##1\relax\plainroot@}%
1888 \bgroup\uproot@\z@\leftroot@\z@\FN@\next@}
1889 \def\plainroot@#1\of#2{\setbox\rootbox\hbox{%
1890 $\m@th\scriptscriptstyle{#1}$}%
1891 \mathchoice{\r@@t\displaystyle{#2}}{\r@@t\textstyle{#2}}
1892 {\r@@t\scriptstyle{#2}}{\r@@t\scriptscriptstyle{#2}}\egroup}
1893 \def\r@@t#1#2{\setboxz@h{$\m@th#1\@@sqrt{#2}$}%
1894 \dimen@\ht\z@\advance\dimen@-\dp\z@
1895 \setbox\@ne\hbox{$\m@th#1\mskip\uproot@ mu$}%
1896 \advance\dimen@ by1.667\wd\@ne
1897 \mkern-\leftroot@ mu\mkern5mu\raise.6\dimen@\copy\rootbox
1898 \mkern-10mu\mkern\leftroot@ mu\boxz@}
1899 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1900 %% Fragment from old amsfonts.sty to deal with msam, msbm, eufm fonts;
1901 %% omit if `noamsfonts' option was specified.
1902 \ifx F\@amsfonts \endinput \fi
1903 \DeclareSymbolFont{AMSa}{U}{msa}{m}{n}
1904 \DeclareSymbolFont{AMSb}{U}{msb}{m}{n}
1905 \ifx P\@amsfonts
1906 \DeclareFontFamily{U}{msa}{}%
1907 \DeclareFontShape{U}{msa}{m}{n}{<-6>msam5<6-8>msam7<8->msam10}{}%
1908 \DeclareFontFamily{U}{msb}{}%
1909 \DeclareFontShape{U}{msb}{m}{n}{<-6>msbm5<6-8>msbm7<8->msbm10}{}%
1910 \DeclareFontFamily{U}{euf}{}%
1911 \DeclareFontShape{U}{euf}{m}{n}{<-6>eufm5<6-8>eufm7<8->eufm10}{}%
1912 \DeclareFontShape{U}{euf}{b}{n}{<-6>eufb5<6-8>eufb7<8->eufb10}{}%
1914 \@ifundefined{yen}{%
1915 \edef\yen{\noexpand\mathhexbox{\hexnumber@\symAMSa}55}
1917 \@ifundefined{checkmark}{%
1918 \edef\checkmark{\noexpand\mathhexbox{\hexnumber@\symAMSa}58}
1920 \@ifundefined{circledR}{%
1921 \edef\circledR{\noexpand\mathhexbox{\hexnumber@\symAMSa}72}
1923 \@ifundefined{maltese}{%
1924 \edef\maltese{\noexpand\mathhexbox{\hexnumber@\symAMSa}7A}
1926 \begingroup \catcode`\"=12
1927 \DeclareMathDelimiter\ulcorner{\mathopen} {AMSa}{"70}{AMSa}{"70}
1928 \DeclareMathDelimiter\urcorner{\mathclose}{AMSa}{"71}{AMSa}{"71}
1929 \DeclareMathDelimiter\llcorner{\mathopen} {AMSa}{"78}{AMSa}{"78}
1930 \DeclareMathDelimiter\lrcorner{\mathclose}{AMSa}{"79}{AMSa}{"79}
1931 \xdef\widehat#1{\noexpand\@mathmeasure\z@\textstyle{#1}%
1932 \noexpand\ifdim\noexpand\wdz@>\tw@ em%
1933 \mathaccent"0\hexnumber@\symAMSb 5B{#1}%
1934 \noexpand\else\mathaccent"0362{#1}\noexpand\fi}
1935 \xdef\widetilde#1{\noexpand\@mathmeasure\z@\textstyle{#1}%
1936 \noexpand\ifdim\noexpand\wdz@>\tw@ em%
1937 \mathaccent"0\hexnumber@\symAMSb 5D{#1}%
1938 \noexpand\else\mathaccent"0365{#1}\noexpand\fi}
1939 \DeclareMathSymbol\dabar@{\mathord}{AMSa}{"39}
1940 \xdef\dashrightarrow{\mathrel{\dabar@\dabar@
1941 \mathchar"0\hexnumber@\symAMSa 4B}}%
1942 \xdef\dashleftarrow{\mathrel{\mathchar"0\hexnumber@\symAMSa 4C\dabar@
1943 \dabar@}}%
1944 \global\let\dasharrow\dashrightarrow
1945 \global\let\rightleftharpoons\undefined
1946 \DeclareMathSymbol\rightleftharpoons{\mathrel}{AMSa}{"0A}
1947 \global\let\angle\undefined
1948 \DeclareMathSymbol\angle {\mathord}{AMSa}{"5C}
1949 \global\let\hbar\undefined
1950 \DeclareMathSymbol\hbar {\mathord}{AMSb}{"7E}
1951 \global\let\sqsubset\undefined
1952 \DeclareMathSymbol\sqsubset {\mathrel}{AMSa}{"40}
1953 \global\let\sqsupset\undefined
1954 \DeclareMathSymbol\sqsupset {\mathrel}{AMSa}{"41}
1955 \global\let\mho\undefined
1956 \DeclareMathSymbol\mho {\mathord}{AMSb}{"66}
1957 \DeclareMathSymbol\square {\mathord}{AMSa}{"03}
1958 \DeclareMathSymbol\lozenge {\mathord}{AMSa}{"06}
1959 \DeclareMathSymbol\vartriangleright {\mathrel}{AMSa}{"42}
1960 \DeclareMathSymbol\vartriangleleft {\mathrel}{AMSa}{"43}
1961 \DeclareMathSymbol\trianglerighteq {\mathrel}{AMSa}{"44}
1962 \DeclareMathSymbol\trianglelefteq {\mathrel}{AMSa}{"45}
1963 \DeclareMathSymbol\rightsquigarrow {\mathrel}{AMSa}{"20}
1964 \def\@tempa{\not@base\lhd}
1965 \ifx\lhd\@tempa
1966 \global\let\lhd\vartriangleleft
1967 \global\let\unlhd\trianglelefteq
1968 \global\let\rhd\vartriangleright
1969 \global\let\unrhd\trianglerighteq
1970 \global\let\Box\square
1971 \global\let\Diamond\lozenge
1972 \global\let\leadsto\rightsquigarrow
1973 \xdef\Join{\mathrel{\mathchar"0\hexnumber@\symAMSb 6F\mkern-13.8mu%
1974 \mathchar"0\hexnumber@\symAMSb 6E}}
1976 \endgroup
1977 \DeclareMathAlphabet\mathfrak{U}{euf}{m}{n}
1978 \SetMathAlphabet\mathfrak{bold}{U}{euf}{b}{n}
1979 \DeclareSymbolFontAlphabet{\mathbb}{AMSb}
1980 \DeclareFontEncodingDefaults{\relax}{\def\accentclass@{7}}
1981 \def\frak{\mathfrak}
1982 \def\Bbb{\mathbb}
1983 \def\bold{\mathbf}
1984 \begingroup \catcode`\"=12 \relax
1985 \gdef\newsymbol#1#2#3#4#5{%
1986 \@ifdefinable#1{%
1987 \edef\next@
1988 {\ifcase #2 \or
1989 \hexnumber@\symAMSa\or
1990 \hexnumber@\symAMSb\fi}%
1991 \ifx\next@\@empty
1992 \PackageError{amsfonts}{\Invalid@@\newsymbol}\@ehd%
1993 \else
1994 \global\mathchardef#1"#3\next@#4#5
1995 \fi}}
1996 \endgroup
1997 %% Some odds and ends
1998 \def\sphat{^{\mathchoice{}{}%
1999 {\,\,\smash[b]{\hbox{\lower4\ex@\hbox{$\m@th\widehat{\null}$}}}}%
2000 {\,\smash[b]{\hbox{\lower3\ex@\hbox{$\m@th\hat{\null}$}}}}}}
2001 \def\spcheck{^\vee}
2002 \def\sptilde{^\sim}
2003 \def\spdot{^{\hbox{\raise\ex@\hbox{\normalfont .}}}}
2004 \def\spddot{^{\hbox{\raise\ex@\hbox{\normalfont ..}}}}
2005 \def\spdddot{^{\hbox{\raise\ex@\hbox{\normalfont...}}}}
2006 \def\spbreve{^{\!\smash[b]{\hbox{\lower4\ex@\hbox{\u{}}}}}}
2007 \def\fracwithdelims#1#2{\new@ifnextchar[{\fracwithdelims@#1#2}%
2008 {\fracwithdelims@#1#2[\@empty]}}
2009 \def\fracwithdelims@#1#2[#3]#4#5{\relax
2010 \ifx\@empty#3{#4\overwithdelims#1#2#5}\else
2011 {#4\abovewithdelims#1#2#3\relax#5}\fi}
2012 \def\accentedsymbol#1#2{%
2013 \expandafter\newbox
2014 \csname\expandafter\@gobble\string#1@box\endcsname
2015 \expandafter\setbox
2016 \csname\expandafter\@gobble\string#1@box\endcsname
2017 \hbox{$\m@th#2$}%
2018 \newcommand{#1}{%
2019 \expandafter\copy
2020 \csname\expandafter\@gobble\string#1@box\endcsname{}}%
2022 \def~{\nobreakspace}
2023 \DeclareRobustCommand{\nobreakspace}{\unskip\nobreak\ \ignorespaces}
2025 %% End of file `amstex.sty'.