|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T a
Length: 52114 (0xcb92)
Types: TextFile
Names: »amsart.doc«
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12
└─⟦e01e283ed⟧ »amstex/amslatex.tar.Z«
└─⟦d6381fb14⟧
└─⟦this⟧ »amslatex/doc/amsart.doc«
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% AMSART.DOC July 1990 %
% %
% This file is part of the AMS-LaTeX Version 1.0 distribution %
% American Mathematical Society, Technical Support Group, %
% P. O. Box 6248, Providence, RI 02940 %
% 800-321-4AMS (321-4267) or 401-455-4080 %
% Internet: Tech-Support@Math.AMS.com %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\fileversion{v1.0c}
\def\filedate{90/06/26}
\def\docdate{90/06/26}
%% \CheckSum{1978}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%% Digits \0\1\2\3\4\5\6\7\8\9
%% Exclamation \! Double quote \" Hash (number) \#
%% Dollar \$ Percent \% Ampersand \&
%% Acute accent \' Left paren \( Right paren \)
%% Asterisk \* Plus \+ Comma \,
%% Minus \- Point \. Solidus \/
%% Colon \: Semicolon \; Less than \<
%% Equals \= Greater than \> Question mark \?
%% Commercial at \@ Left bracket \[ Backslash \\
%% Right bracket \] Circumflex \^ Underscore \_
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \changes{v1.0c}{90/06/26}{Revised theorem treatment}
% \changes{v1.0b}{90/06/21}{Added `rom for `th@remark}
%
% \StopEventually{}
%
% \section{AMSART.STY}
%
% \def\sty{\bgroup\tt\let\next=}
% \let\opt=\sty
% \def\cs{\bgroup\tt\char`\\\let\next=}
%
% Two considerations controlled the development of the \sty{amsart} and
% \sty{amsbook} documentstyles. First of all, their intended use is for
% articles and books submitted for publication to the American
% Mathematical Society. Some features of the standard \LaTeX{} styles
% that are irrelevant to this purpose (e.g., 11pt and 12pt options) have
% been reduced to a minimal kernel or omitted. Second, because
% \sty{amsart} and \sty{amsbook} not only load the \opt{amstex} option,
% but also add several features not found in the standard \LaTeX{}
% styles, they don't have much spare memory to work with (if used with a
% `small' implementation of \TeX{}). Therefore some features of lesser
% usefulness found in the standard \LaTeX{}
% styles have been omitted or minimized in an effort to conserve memory.
%
% To be more specific, the \opt{11pt} and \opt{12pt} options for
% \sty{amsart} and \sty{amsbook} do nothing except reset the margins and
% a few font sizes. More sophisticated adjustments that are done in the
% normal \sty{article} and \sty{book} styles are omitted. The
% \opt{twocolumn} option isn't available, because it's not used in any
% American Mathematical Society journal (excluding {\it Notices}, which
% contains primarily Society news, not research) and because leaving it
% out saves a little memory.
%
% Similarly, the \opt{fleqn} option and the \opt{openbib}
% bibliography style, which are not used in AMS publications,
% have been dropped.
%
% \subsection{Sharing code between amsart.sty and amsbook.sty}
% Because amsart.sty and amsbook.sty share a great deal of code in
% common, and we don't want to maintain two separate copies,
% amsart.sty is input by amsbook.sty. We use \verb=\if@article=
% to avoid loading pieces that we want to skip.
%
% Setting up \verb=\if@article= is a little tricky. In
% amsbook.sty we have \verb=\let\if@article\iffalse=, and
% everything works in a straightforward way from there. But if
% amsart.sty is being used by itself, we have a dilemma: if we
% say \verb=\let\if@article\iftrue= then the \verb=\iffalse=
% variation from amsbook will always be overridden, whereas if we do
% not define \verb=\if@article= at all it will be undefined and
% cause an error. So we use this method:
% \begin{macrocode}
\ifx\undefined\if@article % If \if@article is undefined,
\expandafter\let % we will end up with \let\if@article\iftrue
\else \expandafter\@gobbletwo\fi % otherwise \@gobbletwo\if@article\iftrue
\if@article\iftrue % which removes this line.
% \end{macrocode}
%
% As usual, we write the file name, version and date on the screen.
% \begin{macrocode}
\if@article %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
\immediate\write\sixt@@n{%
Document style `AMSART' \fileversion\space <\filedate> (RK, MJD)}
\immediate\write\sixt@@n{%
English documentation \space\@spaces\@spaces <\docdate> (MJD)}
\fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
\input amstex.sty
\def\@ptsize{0}
\@namedef{ds@11pt}{\def\@ptsize{1}}
\@namedef{ds@12pt}{\def\@ptsize{2}}
% \end{macrocode}
% Because twosided output is the default in amsart and amsbook
% (running heads differ on left and right-hand pages),
% \verb=\ds@twoside= is just defined to be \verb=\@empty=. (Note that
% \verb=\relax= would not work.)
% \begin{macrocode}
\@namedef{ds@twoside}{\@empty}
\def\ds@draft{\overfullrule 5\p@}
% \end{macrocode}
% These macros give warnings for the options that are not
% applicable when using AMSART and AMSBOOK documentstyles.
% To save memory, they will be undefined after option-loading
% is complete.
% \begin{macrocode}
\@namedef{ds@twocolumn}{\typeout{Sorry---the `twocolumn' option
is not available in the AMSART and AMSBOOK documentstyles.}}
\@namedef{ds@openbib}{\typeout{Sorry---the `openbib' option
is not available in the AMSART and AMSBOOK documentstyles.}}
\@namedef{ds@fleqn}{\typeout{Sorry---the `fleqn' option
is not available in the AMSART and AMSBOOK documentstyles.}}
\if@article %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
\@namedef{ds@titlepage}{\typeout{Sorry---the `titlepage' option
is not available in the AMSART documentstyle.}}
\fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
\@options
\let\ds@twocolumn\relax \let\ds@openbib\relax
\let\ds@fleqn\relax
\if@article %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
\let\ds@titlepage\relax
\fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
% \end{macrocode}
% Make the `margid' option the default in amsart.sty and
% amsbook.sty.
% \begin{macrocode}
\input{margid.sty}
% \end{macrocode}
% Using \verb=\@plus= instead of `plus' saves token memory whenever it
% occurs inside a definition. Each such use saves 3 tokens and since
% plus is used fairly often, using up another control sequence name
% seems justifiable. We don't bother to do the same for `minus'
% because it is used less often.
% \begin{macrocode}
\def\@plus{plus}
% \end{macrocode}
%
% A utility macro that helps conserve token memory. When
% a reference to a counter occurs inside a macro definition,
% using \verb=\@string\countername= uses 2 tokens instead of
% length(countername) tokens.
% \begin{macrocode}
\def\@string{\expandafter\@gobble\string}
% \end{macrocode}
% Utility macro to test if an argument is empty. We use \verb=\@@end=
% on either side of the possibly empty argument with an \verb=\ifx=
% test; if the argument is completely empty, the result will
% be \verb=\ifx\@@end\@@end=; otherwise
% \verb=\ifx\@@end\someothertoken=
% and the second \verb=\@@end= will be skipped because it is on the
% false branch. The reason for choosing \verb=\@@end= is that it is
% a token that we do not expect to ever occur in the text being
% tested.
% \begin{macrocode}
\def\@ifempty#1{\ifx\@@end#1\@@end\expandafter\@leftmark
\else \expandafter\@rightmark\fi}
% \end{macrocode}
% As a precaution, we make \verb=\@leftmark= and \verb=\@rightmark=
% long. Otherwise they're the same as originally defined in
% latex.tex. It would be nice to have more generic names like
% \verb=\dofirst= and \verb=\dosecond= but we don't
% want to use different control sequences at the present time
% (21-JUN-1990) because that would use up hash memory.
% \begin{macrocode}
\long\def\@leftmark#1#2{#1}
\long\def\@rightmark#1#2{#2}
% \end{macrocode}
%
% \subsection{The {\tt\string\@andify} macro}
% This is a utility macro to convert \verb=aa\and bb\and cc\and = into
% \verb=aa, bb, and cc=, or
% \verb=aa\and bb\and = into \verb=aa and bb=, or \verb=aa\and = into
% \verb=aa=. Currently (31-MAY-1990) used only by \verb=\author= and
% \verb=\sh@rtauthor=, and therefore it is undefined after
% \verb=\maketitle= in order to conserve main memory.
%
% \verb=#1= is normally ``\verb= AND ='' or ``\verb= and =''; since
% the amount of space might be more than a word space in some cases,
% it must be given in the argument. \verb=#2= is a macro such as
% \verb=\theauthors@= containing text of the form \verb=aa \and=
% \verb= bb\and cc\and=.
% \begin{macrocode}
\def\@andify#1#2{%
% \end{macrocode}
% If no separators (\verb=\and=) are present in \verb=#2=, then
% we do nothing to it.
% \begin{macrocode}
\expandafter\in@\expandafter\and\expandafter{#2}%
\ifin@
\begingroup\global\toks\@ne{}% initialize to empty
% \end{macrocode}
% Now we count how many instances of \verb=\and= are in arg \verb=#2=.
% \begin{macrocode}
\def\and##1\and{\@ifempty{##1}{}{\advance\@tempcnta\@ne\and}}%
\@tempcnta\z@\expandafter\and#2\and%
% \end{macrocode}
% If more than two, we want to produce `aa, bb, and cc'
% \begin{macrocode}
\ifnum\@tempcnta>\tw@
\def\and##1\and{\advance\@tempcnta\m@ne
\global\toks\@ne\expandafter{\the\toks\@ne ##1}%
\edef\@tempa{\the\toks\@ne\ifnum\@tempcnta=\@ne\unskip,#1\else
\ifnum\@tempcnta>\@ne\unskip,\ \fi\fi}%
\global\toks\@ne\expandafter{\@tempa \ignorespaces}%
\ifnum\@tempcnta>\z@\expandafter\and\fi}%
% \end{macrocode}
% Otherwise we want to produce `aa and bb' or just `aa'.
% \begin{macrocode}
\else % if NOT > 2
\def\and##1\and{\advance\@tempcnta\m@ne
\global\toks\@ne\expandafter{\the\toks\@ne ##1}%
\edef\@tempa{\the\toks\@ne
\ifnum\@tempcnta=\@ne\unskip#1\ignorespaces\fi}%
\global\toks\@ne\expandafter{\@tempa}%
\ifnum\@tempcnta>\z@\expandafter\and\fi}%
\fi % ifnum
\expandafter\and#2\relax\endgroup
\edef#2{\the\toks\@ne}%
\fi % ifin@
}
% \end{macrocode}
% Now a utility macro to do \verb=\uppercase= but sidestep any math, to
% prevent uppercasing math variables. In order to be handled properly
% the \verb=$...$= or \verb=\(...\)= must be on the outer level (not
% enclosed in braces). We did not try to handle the possibility
% \verb=\begin{math}...\end{math}= in a title at the present time (too
% complicated). Also we increase inter-word space in the uppercase
% text.
%
% One other little problem: uppercasing of a few special characters
% like the German "ss" and the undotted i and j (\verb=\i= and
% \verb=\j=), used sometimes with accents. We redefine to be upper
% case equivalents. (Undotted \verb=\i= and \verb=\j= in math would be
% typed as \verb=\imath= and \verb=\jmath=.)
%
% Note the extra level of braces to localize changes:
% \begin{macrocode}
\def\uppercasetext@#1{%
{\spaceskip1.3\fontdimen2\the\font plus1.3\fontdimen3\the\font
\def\ss{SS}\let\i=I\let\j=J\let\ae\AE\let\oe\OE\let\o\O\let\aa\AA\let\l\L
\skipmath@#1$\skipmath@$}}
\def\skipmath@#1$#2${\skipmath@b#1\(\skipmath@b\)%
\ifx\skipmath@#2\else$#2$\expandafter\skipmath@\fi}
\def\skipmath@b#1\(#2\){\uppercase{#1}%
\ifx\skipmath@b#2\else\(#2\)\expandafter\skipmath@b\fi}
% \end{macrocode}
%
% This definition of \verb=\today= is straight from article.sty.
% \begin{macrocode}
\def\today{\ifcase\month\or
January\or February\or March\or April\or May\or June\or
July\or August\or September\or October\or November\or December\fi
\space\number\day, \number\year}
% \end{macrocode}
% We change the \verb=\LaTeX= command so that it doesn't use
% \verb=\sc= for the A (the small caps font is often not
% available in unusual sizes, which could cause problems for a
% user trying to print files like amstest.tex).
% \begin{macrocode}
\def\LaTeX{L\raise.42ex\hbox{\kern-.33em\protect\scriptsize A\kern-.15em}\TeX}
% \end{macrocode}
% An interesting redefinition of \verb=\@ifundefined=. Allows the
% replacement true or false text to end with a macro that takes an
% argument. Also allows \verb=\@ifundefined= to be completely
% expanded in an \verb=\edef= if desired.
% \begin{macrocode}
\def\@ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax
\expandafter\@leftmark
\else\expandafter\@rightmark\fi}
% \end{macrocode}
%
% We redefine \verb=\ref= to add \verb=\rom= in a couple
% of places. Actually in one place we just add
% \verb=\normalshape= because we don't need to do the extra work of
% \verb=\rom= for the temporary ?? marker. Note: this
% definition is derived from the one in lfonts.new.
% \begin{macrocode}
\def\ref#1{\@ifundefined{r@#1}{{\normalshape\bf ??}\iffirstchoice@
\@warning{Reference `#1' on page \thepage \space undefined}\fi}%
{\rom{\expandafter\expandafter\expandafter
\@car\csname r@#1\endcsname\@nil\null}}}
% \end{macrocode}
%
% The macro \verb=\defaultfont= resets everything to `normal',
% except for size.
% \begin{macrocode}
\def\defaultfont{\family\default@family \series\default@series
\shape\default@shape \selectfont}
% \end{macrocode}
%
% \subsection{Top matter}
% Macros for title, author, etc.
% \begin{macrocode}
\def\title{\@dblarg{\@title}}
\def\thetitle@{}
\if@article %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
\def\@title[#1]#2{\def\sh@rttitle{\def\\{\unskip, \ignorespaces}%
\ignorespaces#1\unskip}%
\def\thetitle@{\ignorespaces#2\unskip}}
\def\sh@rttitle{}
\fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
% \end{macrocode}
% Because there might be more than one \verb=\author=,
% \verb=\theauthors@= and \verb=\sh@rtauthor= are not
% \verb=\@andify='d until \verb=\maketitle=.
% \begin{macrocode}
\def\author{\@dblarg{\@author}}
\def\theauthors@{}
\if@article %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
\def\@author[#1]#2{\expandafter\def\expandafter
\theauthors@\expandafter{\theauthors@#2\and}%
\expandafter\def\expandafter\sh@rtauthor\expandafter{\sh@rtauthor#1\and}}
\def\sh@rtauthor{}
\fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
\newbox\addressb@x \setbox\addressb@x\copy\voidb@x
\def\address#1{\setbox\addressb@x\vbox{%
% \end{macrocode}
% Address is supposed to go all on one line, so we redefine \verb=\\=
% to just insert a comma instead of doing a line break.
% \begin{macrocode}
\def\\{\unskip, \ignorespaces}%
% \end{macrocode}
% To suppress the pre-\verb=\begin{document}= error message
% we change \verb=\@nodocument= to empty.
% \begin{macrocode}
\let\@nodocument\@empty
\ifvoid\addressb@x\indent
% \end{macrocode}
% This strut of height 16pt is what provides the spacing above the
% address(es) at the end of the article. Because we're going to
% \verb=\unvbox=, \verb=\baselineskip= would not work. When
% \verb=\unvboxing= we'll need to do a kern of \verb=-\prevdepth= to
% get the proper baseline distance.
% \begin{macrocode}
\vrule\@height16\p@\@width\z@\else
\dimen@\dp\addressb@x \unvbox\addressb@x \prevdepth\dimen@
\medskip\indent\fi \ignorespaces{\small\sc#1%
\interlinepenalty\@M\par}}}
% \end{macrocode}
% \verb=\email= adds to \verb=\addressb@x=.
% \begin{macrocode}
\def\email#1{\ifvoid\addressb@x\errmessage{\string\email\space
can't precede \string\address.}\fi
\setbox\addressb@x\vbox{%
% \end{macrocode}
% To suppress the pre-\verb=\begin{document}= error message
% we change \verb=\@nodocument= to empty.
% \begin{macrocode}
\let\@nodocument\@empty
\dimen@\dp\addressb@x \unvbox\addressb@x \prevdepth\dimen@
\vskip2\p@\indent{\small{\it E-mail\/}:\enspace
\ignorespaces#1\interlinepenalty\@M\par}}}
\def\date#1{\def\thedate@{#1}}
\def\thedate@{}
\def\thanks#1{\ifx\@empty\thethanks@
\def\thethanks@{\ignorespaces#1\unskip.}%
\else \expandafter\def\expandafter\thethanks@\expandafter
{\thethanks@\@@par\ignorespaces#1\unskip.}\fi
}
\def\thethanks@{}
\def\dedicatory#1{\def\thededicatory@{#1}}
\def\thededicatory@{}
\def\keywords#1{\def\thekeywords@{#1}}
\def\thekeywords@{}
\def\subjclass#1{\def\thesubjclass@{#1}}
\def\thesubjclass@{}
\def\translator#1{\def\thetranslator@{#1}}
\def\thetranslator@{}
\if@article %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
\def\maketitle{\par
\@topnum\z@ % this prevents figures from falling at the top of page 1
\begingroup
\@maketitle
\endgroup
% \end{macrocode}
% Set up the left-hand running head:
% \begin{macrocode}
\@andify{ AND }\sh@rtauthor
\thispagestyle{plain}%
\c@footnote\z@
\def\do##1{\let##1\relax}%
\do\maketitle \do\@maketitle
\do\title \do\@title \do\thetitle@
\do\author \do\@author \do\theauthors@
\do\dedicatory \do\thededicatory@
\do\thanks \do\thethanks@
\do\keywords \do\thekeywords@
\do\subjclass \do\thesubjclass@
\do\@andify
}
% \end{macrocode}
% Here is a diagram of the elements of the top matter, showing the
% vertical spacing. (`b2b' means base-to-base.)
% \begin{verbatim}
% ----------- top of type block (= top of running heads)
% 6.5pc b2b
% TITLE
% ==
% 32pt b2b
% AUTHOR
% ==
% 18pt b2b
% DEDICATORY
% ==
% 24pt b2b
% DATE
% ==
% 32pt + 14 b2b
% MAIN TEXT
% \end{verbatim}
% \begin{macrocode}
\def\@maketitle{%
% \end{macrocode}
% Set font to normal, just in case.
% \begin{macrocode}
\defaultfont\normalsize
% \end{macrocode}
%
% Special footnotes are put here to ensure that they come first at
% the bottom of the page.
% \begin{macrocode}
\let\@makefnmark\relax \let\@thefnmark\relax
\ifx\@empty\thesubjclass@\else
\@footnotetext{1980 {\it Mathematics Subject
Classification} (1985 {\it Revision\/}).\enspace
Primary \thesubjclass@.}\fi
\ifx\@empty\thekeywords@\else
\@footnotetext{{\it Key words and phrases.}\enspace \thekeywords@.}\fi
% \end{macrocode}
% Ending period for \verb=\thanks= was added earlier.
% \begin{macrocode}
\ifx\@empty\thethanks@\else
\@footnotetext{\thethanks@}\fi
% \end{macrocode}
%
% \begin{macrocode}
\topskip66\p@ % 6.5 picas to the base of the first title line
% \end{macrocode}
% Using a \verb=\vtop= gives us the right distance to the first baseline,
% \begin{macrocode}
\vtop{\centering{\baselineskip14\p@\bf
\expandafter\uppercasetext@\expandafter{\thetitle@}\@@par}%
% \end{macrocode}
% but since we used a \verb=\vtop=, distance base-to-base from the last
% line of the title to the first line of the author names may
% be off unless we get the depth of the last title line and
% carry it outside the \verb=\vtop=.
% \begin{macrocode}
\global\dimen@i\prevdepth}%
\prevdepth\dimen@i
\ifx\@empty\theauthors@
\else
\baselineskip32\p@
\vtop{\@andify{ AND }\theauthors@
\centering{\small
% \end{macrocode}
% Here \verb=\uppercasetext@= instead of just \verb=\uppercase= is a bit of
% overkill but it gives us the uppercase special chars and handles
% potential exotic cases without further work.
% \begin{macrocode}
\expandafter\uppercasetext@\expandafter{\theauthors@}\@@par}%
\global\dimen@i\prevdepth}\relax
\prevdepth\dimen@i
\fi
% \end{macrocode}
% Likewise with \verb=\thededicatory@= and \verb=\thedate@=.
% \begin{macrocode}
\ifx\@empty\thededicatory@
\else
\baselineskip18\p@
\vtop{\centering{\small\it\thededicatory@\@@par}%
\global\dimen@i\prevdepth}\prevdepth\dimen@i
\fi
\ifx\@empty\thedate@\else
\baselineskip24\p@
\vtop{\centering\thedate@\@@par
\global\dimen@i\prevdepth}\prevdepth\dimen@i
\fi
% \end{macrocode}
% Space before the main text should be 32 + 14 base-to-base; we
% accomplish this by doing a vskip of that amount with \verb=\baselineskip=
% subtracted.
% \begin{macrocode}
\normalbaselines
\dimen@32\p@ \advance\dimen@-\baselineskip
\vskip\dimen@\@plus14\p@
} % end \@maketitle
\fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
% \end{macrocode}
% `Abstract' can be changed to say `R\'esum\'e' (French) by
% redefining \verb=\abstractname=. This and other control
% sequence names (\verb=\refname=, \verb=\contentsname=,
% \verb=\appendixname=, and so on) are compatible with babel.sty,
% in the hope (not yet tested--27-JUN-1990) that amsart.sty and
% babel.sty may be able to be used together, because the AMS
% sometimes publishes articles in languages other than English.
% \begin{macrocode}
\def\abstractname{Abstract}
\def\abstract{%
% \end{macrocode}
% If there is an abstract it should follow immediately after
% \verb=\maketitle= in the user's file. We need to subtract the difference
% between the previous vskip and the desired skip of 28pt plus 0pt:
% \begin{macrocode}
\vskip-4\p@\@plus-14\p@
\moveright 3pc\vtop \bgroup
\advance \hsize -6pc\bgroup % extra \bgroup to localize \small
\defaultfont\small \noindent
{\sc\abstractname}.\enspace\ignorespaces
\global\let\abstract\relax}
\def\endabstract{\par\egroup
% \end{macrocode}
% Since the abstract is set in a \verb=\vtop=, \TeX{} won't get the depth
% of the last line when doing baselineskip calculations unless
% we work around it.
% \begin{macrocode}
\global\dimen@i\prevdepth \egroup \prevdepth\dimen@i
% \end{macrocode}
% We subtract baselineskip from the amount of the vskip so that
% the total base-to-base distance will be as desired (32 + 14).
% \begin{macrocode}
\dimen@32\p@ \advance\dimen@-\normalbaselineskip
\vskip\dimen@\@plus14\p@ \relax
\global\let\endabstract\relax}
% \end{macrocode}
%
% Title page environment does nothing much; information and
% formatting to be provided by the user.
% \begin{macrocode}
\def\titlepage{\thispagestyle{empty}\c@page\z@}
\def\endtitlepage{\newpage}
% \end{macrocode}
%
% \subsection{Macros for list labels}
% \begin{macrocode}
\def\labelenumi{(\@arabic\c@enumi)}
\def\theenumi{\@arabic\c@enumi}
\def\labelenumii{(\@alph\c@enumii)}
\def\theenumii{\@alph\c@enumii}
\def\p@enumii{\theenumi}
\def\labelenumiii{(\@roman\c@enumiii)}
\def\theenumiii{\@roman\c@enumiii}
\def\p@enumiii{\theenumi(\theenumii)}
\def\labelenumiv{(\@Alph\c@enumiv)}
\def\theenumiv{\@Alph\c@enumiv}
\def\p@enumiv{\p@enumiii\theenumiii}
\def\labelitemi{$\m@th\bullet$}
\def\labelitemii{\bf --}% \normalshape already done by \itemize
\def\labelitemiii{$\m@th\ast$}
\def\labelitemiv{$\m@th\cdot$}
% \end{macrocode}
%
% \subsection{Verse and quotation environments}
% \begin{macrocode}
\def\verse{\let\\\@centercr
\list{}{\itemsep\z@ \itemindent -1.5em\listparindent\itemindent
\rightmargin\leftmargin \advance\leftmargin 1.5em}\item[]}
\let\endverse=\endlist
\def\quotation{\list{}{\listparindent 1.5em\itemindent\listparindent
\rightmargin\leftmargin \parsep\z@ \@plus\p@}\item[]}
\let\endquotation=\endlist
\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
\let\endquote=\endlist
% \end{macrocode}
% Changed definition of \verb=\trivlist=, \verb=\enumerate=, and
% \verb=\itemize= in order to add \verb=\rom= in \verb=\makelabel=.
% Except we only need \verb=\normalshape= because it is the first
% thing inside the label box, so we don't have to worry about italic
% correction for a preceding character.
% \begin{macrocode}
\def\trivlist{\parsep\parskip
\@trivlist \labelwidth\z@ \leftmargin\z@
\itemindent\z@ \def\makelabel##1{\normalshape##1}}
\def\enumerate{\ifnum \@enumdepth >3 \@toodeep\else
\advance\@enumdepth \@ne
\edef\@enumctr{enum\romannumeral\the\@enumdepth}\list
{\csname label\@enumctr\endcsname}{\usecounter
{\@enumctr}\def\makelabel##1{\hss\llap{\normalshape##1}}}\fi}
\def\itemize{\ifnum\@itemdepth>3 \@toodeep
\else \advance\@itemdepth\@ne
\edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
\list{\csname\@itemitem\endcsname}%
{\def\makelabel##1{\hss\llap{\normalshape##1}}}\fi}
\def\descriptionlabel#1{\hspace\labelsep \normalshape\bf #1:}
\def\description{\list{}{%
% \end{macrocode}
% Combined total of 12pt hang indent (label extends 6pt to the left,
% text is indented 6pt extra to the right)
% \begin{macrocode}
\advance\leftmargin6\p@ \itemindent-6\p@
\labelwidth\z@ \let\makelabel\descriptionlabel}}
\let\enddescription=\endlist
% \end{macrocode}
%
% \subsection{Inclusion of amsart10.sty or the like}
% Amsart10.sty et al.\ also have conditional code to skip
% parts not applicable to a book if \verb=\if@article= =
% \verb=\iffalse=.
%
% Note. The decisions in the standard article.sty and book.sty
% about what macros to relegate to the substyle files art10.sty,
% bk10.sty, etc. have not been strictly followed. In general
% we put dimension and skip settings and font size commands in the
% size-specific files, and we put everything else in the parent file.
% \begin{macrocode}
% amsart10 will input amsbk10 if the parent documentstyle was amsbook.
\input amsart1\@ptsize.sty\relax
% \end{macrocode}
%
% \subsection{Redefined internal sectioning commands}
%
% In amsart.sty \verb=\@startsection=, \verb=\@sect=, \verb=\@xsect=,
% and a couple of other things are redefined to fix a few hard-coded
% things that would interfere with the desired style. The most
% noteworthy difference is that all section headings will go into the
% table of contents (governed by secnumdepth as usual), EVEN WHEN THE
% * FORM IS USED. The only section heading not listed in the table of
% contents is the heading for the toc itself.
% \begin{macrocode}
\def\@startsection#1#2#3#4#5#6{%
% \end{macrocode}
% Section titles, if they are run-in with the following text, are
% stored in a box instead of being typeset right away. They will be
% typeset by \verb=\everypar=, but if one section heading follows
% right after another, this won't happen. So by doing
% \verb=\leavevmode= we force this to happen. (\verb=\if@noskipsec=
% is true if the previous section title has not yet been typeset.)
% \begin{macrocode}
\if@noskipsec \leavevmode \fi
\par \@tempskipa #4\relax
\@afterindenttrue
\ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \@afterindentfalse\fi
\if@nobreak \everypar{}\else
\addpenalty\@secpenalty\addvspace\@tempskipa\fi
\@ifstar{\@dblarg{\@sect{#1}{\@m}{#3}{#4}{#5}{#6}}}%
{\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}%
}
% \end{macrocode}
% For reference, here is the argument list for \verb=\@sect=.
% \begin{verbatim}
% % #1 #2 #3 #4 #5 #6 #7 #8
% {NAME}{LEVEL}{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE}[SHORTT]{TITLE}
% \end{verbatim}
% \begin{macrocode}
\def\@sect#1#2#3#4#5#6[#7]#8{%
% \end{macrocode}
% \verb=\@svsec= will be the section number plus some formatting if
% the star form was not used and if the depth of numbering extends to
% the current level. The user can change secnumdepth to control how
% many levels of sectioning will be numbered.
% \begin{macrocode}
\ifnum #2>\c@secnumdepth
\let\@svsec\@empty
\else
\refstepcounter{#1}%
% \end{macrocode}
% If the \verb=*=-form was not used (\verb=#2= less than 1000), we add
% \verb=\sectionname= or whatever as a prefix, separated by a space.
% We need the ifundefined test in order to know whether the space
% should be added or not. There must be a better way to do this
% but I haven't thought of it yet.
% \begin{macrocode}
\edef\@svsec{\ifnum#2<\@m
\@ifundefined{#1name}{}{\csname #1name\endcsname\ }\fi
% \end{macrocode}
% We add \verb=\rom= here in order to make numbers always roman
% even within italic.
% \begin{macrocode}
\noexpand\rom{\csname the#1\endcsname}.\enspace}\fi
\@tempskipa #5\relax
\ifdim \@tempskipa>\z@ % then this is not a run-in section heading
\begingroup #6\relax
\@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty\@M #8\par}%
\endgroup
% \end{macrocode}
%
% Section headings don't set marks for the running heads in the amsart
% style, only in the amsbook style.
% \begin{macrocode}
\if@article\else\csname #1mark\endcsname{%
\ifnum \c@secnumdepth >#2\relax\csname the#1\endcsname. \fi#7}\fi
% \end{macrocode}
% If \verb=#2= (level) is greater than 1000 then we don't do a table
% of contents entry. This happens only for the section heading above
% the table of contents itself.
% \begin{macrocode}
\ifnum#2>\@m \else
\addcontentsline{toc}{#1}%
% \end{macrocode}
% If the \verb=*=-form for the sectioning command was used, then
% \verb=#2= = 1000, and \verb=\sectionname= and the number will be
% suppressed.
% \begin{macrocode}
{\ifnum #2>\c@secnumdepth \else
\protect\numberline{%
\ifnum#2<\@m
\@ifundefined{#1name}{}{\csname #1name\endcsname\ }\fi
\csname the#1\endcsname.}\fi
#7}%
\fi
\else
% \end{macrocode}
% Otherwise we're doing a run-in heading; it is stored as \verb=\@svsechd=,
% which will be typeset by \verb=\everypar= as soon as some text is
% encountered.
% \begin{macrocode}
\def\@svsechd{#6\hskip #3\@svsec \ignorespaces#8\unskip.%
\ifnum#2>\@m \else
\addcontentsline{toc}{#1}%
{\ifnum #2>\c@secnumdepth \else
\protect\numberline{%
\ifnum#2<\@m
\@ifundefined{#1name}{}{\csname #1name\endcsname\ }\fi
\csname the#1\endcsname.}\fi
#7}\fi}%
\fi
% \end{macrocode}
% \verb=\@xsect= does some more stuff based on whether this is a run-in
% heading or not.
% \begin{macrocode}
\@xsect{#5}}
\def\@xsect#1{\@tempskipa #1\relax
\ifdim \@tempskipa>\z@ % then this is not a run-in heading
\par \nobreak \vskip\@tempskipa
\@afterheading
\else % otherwise it IS a run-in heading
\global\@nobreakfalse \global\@noskipsectrue
\everypar{\if@noskipsec \global\@noskipsecfalse
\clubpenalty\@M \kern-\parindent
\begingroup \@svsechd \endgroup \hskip -#1\relax
\else \clubpenalty \@clubpenalty\everypar{}\fi
}%
\fi\ignorespaces}
\def\@afterheading{\global\@nobreaktrue
\everypar{\if@nobreak \global\@nobreakfalse \clubpenalty\@M
\if@afterindent \else {\setbox\z@\lastbox}\fi
\else \clubpenalty\@clubpenalty \everypar{}\fi}}
% \end{macrocode}
% \verb=\@hangfrom{TEXT}= : Puts TEXT in a box, and makes a hang-indented
% paragraph out of the following material. (Amount of indent
% determined by the width of TEXT). Should be used
% in vertical mode.
%
% In AMSART.STY we can use box 0 instead of tempboxa and save a few
% tokens (using the abbreviations \verb=\setboxz@h=, etc., from
% amstex.sty).
% \begin{macrocode}
\def\@hangfrom#1{\setboxz@h{#1}\hangindent\wdz@ \noindent\box\z@}
\let\@ssect\relax % to save memory. \@ssect not needed in amsart.sty.
\newcounter{part}
\newcounter{section}
\newcounter{subsection}[section]
\newcounter{subsubsection}[subsection]
\def\thepart{\@Roman\c@part}
\def\thesection{\@arabic\c@section}
\def\thesubsection{\thesection.\@arabic\c@subsection}
\def\thesubsubsection{\thesubsection.\@arabic\c@subsubsection}
% \end{macrocode}
% Depth of section numbering; if \verb=\secnumdepth= were 2 instead of
% 3, \verb=\subsubsection= would not be numbered.
% \begin{macrocode}
\setcounter{secnumdepth}{3}
% \end{macrocode}
%
% \subsection{Table of contents macros}
%
% \verb=\@pnumwidth= is the maximum width for page numbers in a table of
% contents. 1.6em allows enough room for three digits.
% \begin{macrocode}
\def\@pnumwidth{1.6em}
% \end{macrocode}
% \verb=\@tocrmarg= is \verb=\@pnumwidth= plus the desired minimum
% space (1em) between page numbers and the preceding text.
% \begin{macrocode}
\def\@tocrmarg {2.6em}
\setcounter{tocdepth}{2}
% \end{macrocode}
% \verb=\tableofcontents= is like \verb=\section= except for no number and
% no table of contents entry.
% \begin{verbatim}
% Arguments: {} = name = empty
% \@M = no number should be used and no table of contents entry
% \z@ = indent amount
% 12pt + 12pt = vskip before
% 6pt = vskip after
% \centering\sc = format
% \end{verbatim}
% \begin{macrocode}
\if@article %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
\def\tableofcontents{%
% \end{macrocode}
% Remove the skip after the abstract so that we can substitute another
% \begin{macrocode}
\removelastskip\vskip\z@skip
\@startsection{}\@M\z@{12\p@\@plus12\p@}{6\p@}%
{\centering\sc}\contentsname
\@starttoc{toc}%
\addvspace{32\p@\@plus14\p@}%
\let\tableofcontents\relax
\let\l@part\relax \let\l@section\relax
\let\l@subsection\relax \let\l@subsubsection\relax
}
\fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
\def\contentsname{Contents}
% \end{macrocode}
% \verb=\@tocline= is a modified form of
% \verb=\@dottedtocline= for higher-level section titles.
% Arguments: ABOVESKIP, NUMBER WIDTH, STYLE, TEXT, PAGE.
% \begin{macrocode}
\def\@tocline#1#2#3#4#5{\par
\addpenalty\@secpenalty\addvspace{#1}%
\begingroup \@tempdima#2\relax % used by \numberline
\parindent\z@ \rightskip\@pnumwidth \parfillskip-\@pnumwidth
{#3\leavevmode #4\hfil \hbox to\@pnumwidth{\hss #5}}\par\nobreak
\endgroup}
\def\l@part{\@tocline\bigskipamount{2em}{\normalshape\bf}}
\def\l@section{\@tocline\medskipamount{2em}{\normalshape\bf}}
% \end{macrocode}
% Redefine \verb=\@dottedtocline= to remove the dots. But retain the
% same name in order not to use up another control sequence name.
%
% Example lines from .toc file:
% \begin{verbatim}
% \contentsline {section}{\numberline {2.}Top matter}{3}
% \contentsline {subsection}{\numberline {2.1.}AT: Article Title}{3}
% \end{verbatim}
% Arguments: LEVEL, NUMBER WIDTH, EXTRA SEP, NUMBER/TEXT, PAGE
% \begin{macrocode}
\def\@dottedtocline#1#2#3#4#5{\ifnum #1>\c@tocdepth \else
\vskip \z@\@plus\p@
{\leftskip #2\relax \rightskip\@tocrmarg \parfillskip-\rightskip
\parindent #2\relax \@afterindenttrue
\interlinepenalty\@M \leavevmode
\@tempdima #3\relax \advance\leftskip\@tempdima
\null \hskip-\leftskip #4\nobreak
\hfill\nobreak
% \end{macrocode}
% We omit the page numbers from the highest-numbered level (= lowest,
% least-important level) of sectioning.
% \begin{macrocode}
\ifnum#1<\c@tocdepth\hbox to\@pnumwidth{\hfil\normalshape#5}\fi
\null\par}\fi}
% \end{macrocode}
% In order to avoid having the number overlap the following text,
% we change the definition of \verb=\numberline= so that
% if \verb=\@tempdima= is not big enough,
% \begin{macrocode}
\def\numberline#1{\setboxz@h{#1\enspace}\ifdim\wdz@>\@tempdima
\box\z@\else \hbox to\@tempdima{#1\hfil}\fi}
% \end{macrocode}
% These definitions set up the form of table of contents entries for
% subsection, subsubsection and paragraph.
% \begin{macrocode}
\def\l@subsection{\@dottedtocline\tw@{1.5em}{2.3em}}
\def\l@subsubsection{\@dottedtocline\thr@@{3.8em}{3.2em}}
\def\l@paragraph{\@dottedtocline4{7em}{4.1em}}
% \end{macrocode}
%
% Bibliography setup. Following babel.sty, we use
% \verb=\refname= in articles and \verb=\bibname= in books.
% \begin{macrocode}
\def\refname{References}
\def\bibname{Bibliography}
\if@article %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
\def\thebibliography#1{\section*\refname
\defaultfont\small\labelsep .5em\relax
\list{\@arabic\c@enumi.}{\settowidth\labelwidth{#1.}%
\leftmargin\labelwidth \advance\leftmargin\labelsep
\usecounter{enumi}}%
\sloppy \clubpenalty4000\relax \widowpenalty\clubpenalty
\sfcode`\.\@m}
\let\endthebibliography=\endlist
\fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
\def\footnoterule{\kern-.4\p@
\hrule\@width 5pc\kern11\p@\kern-\footnotesep}
\def\@makefnmark{\hbox{$\m@th^{\@thefnmark}$}}
\def\@makefntext{\indent\@makefnmark}
% \end{macrocode}
% Add \verb=\defaultfont= before \verb=\footnotesize= so that
% fonts will come out properly using the new font selection scheme.
% \begin{macrocode}
\long\def\@footnotetext#1{\insert\footins{%
\defaultfont\footnotesize
\interlinepenalty\interfootnotelinepenalty
\splittopskip\footnotesep \splitmaxdepth \dp\strutbox
\floatingpenalty\@MM \hsize\columnwidth
% \end{macrocode}
% Mostly \verb=\@parboxrestore= does what we want; but not with
% respect to \verb=\parindent= and \verb=\tolerance=.
% \begin{macrocode}
\@parboxrestore \parindent\normalparindent \sloppy
\edef\@currentlabel{\p@footnote\@thefnmark}\@makefntext
{\rule\z@\footnotesep\ignorespaces#1\unskip\strut\par}}}
% \end{macrocode}
% \verb=\sloppy=, as defined in latex.tex, uses a
% \verb=\tolerance= of 10000, which is TOO sloppy, so we change
% it to 9999. We also use `sloppy' value of 1pt for
% \verb=\hfuzz= and \verb=\vfuzz= all the time instead of only
% within the scope of a \verb=\sloppy= declaration.
% \begin{macrocode}
\def\sloppy{\tolerance9999\relax}
\hfuzz=1pt \vfuzz=\hfuzz
\setcounter{topnumber}{2}
\def\topfraction{.7}
\setcounter{bottomnumber}{1}
\def\bottomfraction{.3}
\setcounter{totalnumber}{3}
\def\textfraction{.2}
\def\floatpagefraction{.5}
% \end{macrocode}
% These are referred to in output routine so have to be defined even
% though amsart.sty is designed only for one-column output:
% \begin{macrocode}
\setcounter{dbltopnumber}{2}
\def\dbltopfraction{.7}
\def\dblfloatpagefraction{.5}
% \end{macrocode}
% This is what we want \verb=\@makecaption= to do: If the total width
% is greater than 29pc (normal textwidth) we want to break
% the caption into lines using a line width of 23pc, and center
% the resulting block between the margins. Otherwise
% we want to set the caption as a single line, centered between
% the margins.
%
% To do this we set the caption as a vbox with line width 23pc,
% except that we allow the last line (which may be the only line) to
% be up to 29pc long by adding a kern of -6pc. If the result
% is a single hbox (i.e., a single line) we need to unpack the
% hbox, remove rightskip, parfillskip, and the -6pc kern, and
% center the remaining material. If the caption is more than
% one line, then box 1 contains the last line, which we need
% to unpack in the same way, and run through the paragraphing
% process again (because this last line may be up to 6 picas
% wider than the desired 23 pica width).
%
% Finally, if the caption is for a figure, it will be set below the
% figure, so the separating space goes above the caption; otherwise
% the separating space goes below the caption.
% \begin{macrocode}
\long\def\@makecaption#1#2{%
% \end{macrocode}
% Measure the contents of the caption.
% \begin{macrocode}
\setbox\@tempboxa\vbox{\advance\hsize-6pc\noindent
\sc#1\@ifempty{#2}{}{.\normalshape\enspace#2}%
\unskip\kern-6pc\par
\global\setbox\@ne\lastbox}%
\ifhbox\@ne % the normal case
\setbox\@ne\hbox{\unhbox\@ne\unskip\unskip\unpenalty\unkern}%
\fi
% \end{macrocode}
% If \verb=\@tempboxa= is not empty at this point then the caption was
% more than one line long or there was extra vertical mode material,
% maybe a \verb=\write= (from \verb=\index= or something).
% Interestingly, we can't use \verb=\ifvoid= to see if
% \verb=\@tempboxa= is empty, because empty is not the same thing
% as void (as far as the \verb=\ifvoid= test is concerned). So
% instead we measure the width of \verb=\@tempboxa=
% to see if it's zero; this should suffice for non-bizarre cases.
% \begin{macrocode}
\ifdim\wd\@tempboxa=\z@ % this means caption will fit on one line
\setbox\@ne\hbox to\columnwidth{\hss\kern-6pc\box\@ne\hss}%
\else % tempboxa contained more than one line (or other vertical mode stuff)
\setbox\@ne\vbox{\unvbox\@tempboxa\parskip\z@skip
\noindent\unhbox\@ne\advance\hsize-6pc\par}%
\fi
\ifnum\@tempcnta<64 % if the float IS a figure...
\vskip 1pc%
\moveright 3pc\box\@ne
\else % if the float IS NOT a figure...
\moveright 3pc\box\@ne
\vskip 1pc%
\fi
\relax
}
\newcounter{figure}
\def\thefigure{\@arabic\c@figure}
\def\fps@figure{tbp}
\def\ftype@figure{1}
\def\ext@figure{lof}
\def\fnum@figure{\figurename\ \thefigure}
\def\figurename{Figure}
\def\figure{\@float{\@string\figure}}
\let\endfigure=\end@float
\newcounter{table}
\def\thetable{\@arabic\c@table}
\def\fps@table{tbp}
\def\ftype@table{2}
\def\ext@table{lot}
\def\fnum@table{\tablename\ \thetable}
\def\tablename{Table}
\def\table{\@float{\@string\table}}
\let\endtable=\end@float
% \end{macrocode}
% \subsection{Theorems and related structures}
%
% We input theorem.sty and use its basic setup, and define styles
% \verb=\th@plain=, \verb=\th@definition=, \verb=\th@remark=.
% \begin{macrocode}
\input theorem.sty
\theorembodyfont{}
% \end{macrocode}
%
% To avoid further proliferation of the number of files in the
% AMS-\LaTeX{} package, we don't maintain the definitions
% \verb=\th@plain=, etc. in separate files (that was done by
% Mittelbach to conserve main memory by not defining classes that
% weren't used).
%
% \changes{v1.0b}{90/06/21}{Added `rom for `th@remark}
% Since the style \verb=\th@remark= uses \verb=\it= for the
% theorem header font, we need \verb=\rom= in several places
% to prevent numbers and parentheses from being italicized.
% Notice that if the author redefines \verb=\theremark= or
% whatever to something other than a number (maybe \verb=\Alph=
% to get A, B, C, and so on) the \verb=\rom= will still be
% applied. I think this is what Editorial wants, but need to
% verify it.
% \begin{macrocode}
\def\@begintheorem#1#2{\item[\hskip\labelsep \theorem@headerfont
\theorem@indent#1\ \rom{#2}\unskip.]}
\def\@opargbegintheorem#1#2#3{\item[\hskip\labelsep \theorem@headerfont
\theorem@indent#1\ \rom{#2}\unskip\ \rom(#3\rom).]}
% \end{macrocode}
%
% Since a theorem will not be nested inside another theorem-type
% environment in any reasonable case, the macro \verb=\th@plain=
% does not need to reset \verb=\theorem@headerfont=,
% \verb=\theorempreskipamount=, \verb=\theorempostskipamount=, or
% \verb=\theorem@indent=. It will inherit the default values.
% \begin{macrocode}
\def\th@plain{\it}
\def\th@definition{\theorempreskipamount6\p@\@plus6\p@
\theorempostskipamount\theorempreskipamount
\normalshape}
% \end{macrocode}
%
% \begin{macrocode}
\def\th@remark{\theorempreskipamount6\p@\@plus6\p@
\theorempostskipamount\z@\@plus6\p@
\def\theorem@headerfont{\it}\normalshape}
% \end{macrocode}
%
% Now we set up the default values for theorem environment
% parameters.
% \begin{macrocode}
\def\theorem@headerfont{\normalshape\bf}
\let\theorem@indent\noindent
\theorempreskipamount=6pt plus9pt
\theorempostskipamount=\theorempreskipamount
% \end{macrocode}
% The standard definition of \verb=\@endtheorem= is just
% \verb=\endtrivlist=, but that doesn't automatically
% start a new paragraph, so we add \verb=\@endpefalse= in
% order to ensure a new paragraph.
% \begin{macrocode}
\def\@endtheorem{\endtrivlist\@endpefalse }
% \end{macrocode}
%
% In the amsbook style the style for the `pf' environment is
% slightly different than the style shown here.
% \begin{macrocode}
\if@article %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
\newenvironment{pf}{\par\addvspace{6\p@\@plus6\p@}\noindent
{\it\proofname.}\enspace\ignorespaces}{\qed\par\addvspace{6\p@\@plus6\p@}}
\@namedef{pf*}#1{\par\begingroup\def\proofname{#1}\pf\endgroup\ignorespaces}
\expandafter\let\csname endpf*\endcsname=\endpf
\fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
% \end{macrocode}
% We don't use \verb=\square= here in case extra AMSfonts are not in
% use.
% \begin{macrocode}
\def\qedsymbol{\RIfM@\bgroup\else$\bgroup\aftergroup$\fi
\vcenter{\hrule\hbox{\vrule\@height.6em\kern.6em\vrule}\hrule}\egroup}
\def\qed{\RIfM@\else\unskip\nobreak\fi\quad\qedsymbol}
\def\proofname{Proof}
% \end{macrocode}
% \subsection{End of document}
% At the end of an article we need to print the translator name,
% if present, and the addresses.
% \begin{macrocode}
\def\enddocument{\@checkend{document}\par
\if@article %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
\ifx\@empty\thetranslator@ \else
\addvspace{6\p@\@plus9\p@}%
\hbox to\columnwidth{\hss\defaultfont\normalsize
Translated by \expandafter\uppercasetext@\expandafter{\thetranslator@}}%
\fi
% \end{macrocode}
% The space between address and preceding text is provided by a strut
% inside \verb=\addressb@x=.
% \begin{macrocode}
\removelastskip\unvbox\addressb@x
\fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
\clearpage\begingroup
\if@filesw \immediate\closeout\@mainaux
\def\global\@namedef##1##2{}\def\newlabel{\@testdef r}%
\def\bibcite{\@testdef b}\@tempswafalse \makeatletter\input \jobname.aux
\if@tempswa \@warning{Label(s) may have changed. Rerun to get
cross-references right}\fi\fi\endgroup\deadcycles\z@\@@end}
% \end{macrocode}
% \subsection{Running heads}
% In the running heads we use \verb=\uppercasetext@= to uppercase
% them without affecting math that the title, for instance, might
% contain.
% \begin{macrocode}
\if@article %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
\def\ps@headings{\let\@mkboth\@gobbletwo
\let\partmark\@gobble\let\sectionmark\@gobble
\let\subsectionmark\@gobble
\let\@oddfoot\@empty\let\@evenfoot\@empty%
\def\@evenhead{\defaultfont\small
\rlap{\thepage}\hfil
\expandafter\uppercasetext@\expandafter{\sh@rtauthor}\hfil}%
\def\@oddhead{\defaultfont\small \hfil
\expandafter\uppercasetext@\expandafter{\sh@rttitle}\hfil
\llap{\thepage}}%
}
\fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
\def\ps@myheadings{\let\@mkboth\@gobbletwo
\let\@oddfoot\@empty\let\@evenfoot\@empty
\def\@oddhead{\null\defaultfont\small\rightmark \hfil\thepage}%
\def\@evenhead{\defaultfont\small \thepage\hfil\leftmark\null}%
}
% \end{macrocode}
% We redefine \verb=\ps@plain= (original definition is in latex.tex) to
% reset the font in \verb=\@oddfoot=.
% \begin{macrocode}
\def\ps@plain{\let\@mkboth\@gobbletwo
\let\@oddhead\@empty \let\@evenhead\@empty \let\@evenfoot\@oddfoot
\def\@oddfoot{\defaultfont\small \hfil\thepage\hfil}}
% \end{macrocode}
% \subsection{Miscellaneous}
%
% Changed \verb=\@cite= to use roman font. And AMSART style
% is to never use boldface for cite numbers even when they occur
% amid bold text.
% \begin{macrocode}
\def\@cite#1#2{\rom{\mediumseries[{#1\if@tempswa , #2\fi}]}}
% \end{macrocode}
% Macro for making non-slanted numbers and punctuation in italic
% or slanted text. This is to avoid visual inconsistencies
% between numbers or parentheses in math and adjacent numbers or
% parentheses in text.
% \begin{macrocode}
\def\rom#1{\leavevmode\skip@\lastskip\unskip\/%
\ifdim\skip@=\z@\else\hskip\skip@\fi
{\normalshape#1}}
% \end{macrocode}
%
% To make references to equation numbers easier, we provide
% \verb=\eqref=. We almost don't need \verb=\rom=, except that
% \verb=\tagform@= doesn't supply the italic correction.
% \begin{macrocode}
\def\eqref#1{\rom{\tagform@{\ref{#1}}}}
\def\theequation{\@arabic\c@equation}
% \end{macrocode}
% \subsection{Initialization}
% We set the margins here (now that \verb=\textwidth= and
% \verb=\textheight= values have been determined).
% \begin{macrocode}
\if@article %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
% Subtract the height of the running heads:
% \begin{macrocode}
\advance\textheight by -\headheight
\advance\textheight by -\headsep
% \end{macrocode}
% Subtract the difference between normalbaselineskip and topskip:
% \begin{macrocode}
\advance\textheight by -\normalbaselineskip
\advance\textheight by \topskip
% \end{macrocode}
% We set \verb=\oddsidemargin= and \verb=\evensidemargin= to
% center the text on the page.
% \begin{macrocode}
\oddsidemargin=8.5 true in % standard U.S. paper width
\advance\oddsidemargin by -\textwidth
\oddsidemargin=.5\oddsidemargin
% \end{macrocode}
% Now we subtract the default margin provided by standard DVI
% drivers. But first we make sure that the final margin will
% be at least .5 inch.
% \begin{macrocode}
\ifdim\oddsidemargin < .5 true in
\oddsidemargin = .5 true in \fi
\advance\oddsidemargin by -1 true in
\evensidemargin=\oddsidemargin
% \end{macrocode}
% And we set \verb=\topmargin= to get vertical centering as well.
% \begin{macrocode}
\topmargin=11 true in % standard U.S. paper width
\advance\topmargin by -\textheight
\advance\topmargin by -\headheight
\advance\topmargin by -\headsep
\advance\topmargin by -\footheight
\advance\topmargin by -\footskip
\topmargin=.5\topmargin
% \end{macrocode}
% We provide a minimum of .5in (after compensating for the default
% margin---see next step).
% \begin{macrocode}
\ifdim\topmargin<.5 true in
\topmargin=.5 true in \fi
% \end{macrocode}
% Now subtract the default margin provided by standard DVI
% drivers.
% \begin{macrocode}
\advance\topmargin by -1 true in
%
\pagenumbering{arabic}
\onecolumn
\@twosidetrue \@mparswitchtrue % this = `twoside' option
% \end{macrocode}
% Initialize running heads
% \begin{macrocode}
\mark{{}{}}
\ps@headings
\fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTICLE ONLY
% \end{macrocode}
%
% \Finale
\endinput