You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
444 lines
12 KiB
444 lines
12 KiB
%%
|
|
%% This is file `amsthm.sty',
|
|
%% generated with the docstrip utility.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% amsclass.dtx (with options: `amsthm')
|
|
%% This is a generated file.
|
|
%%
|
|
%% Copyright 1995, 1999, 2004, 2009-2020 American Mathematical Society.
|
|
%%
|
|
%% American Mathematical Society
|
|
%% Technical Support
|
|
%% Publications Technical Group
|
|
%% 201 Charles Street
|
|
%% Providence, RI 02904
|
|
%% USA
|
|
%% tel: (401) 455-4080
|
|
%% (800) 321-4267 (USA and Canada only)
|
|
%% fax: (401) 331-3842
|
|
%% email: tech-support@ams.org
|
|
%%
|
|
%% This work may be distributed and/or modified under the
|
|
%% conditions of the LaTeX Project Public License, either version 1.3c
|
|
%% of this license or (at your option) any later version.
|
|
%% The latest version of this license is in
|
|
%% http://www.latex-project.org/lppl.txt
|
|
%% and version 1.3c or later is part of all distributions of LaTeX
|
|
%% version 2005/12/01 or later.
|
|
%%
|
|
%% This work has the LPPL maintenance status `maintained'.
|
|
%%
|
|
%% The Current Maintainer of this work is the American Mathematical
|
|
%% Society.
|
|
%%
|
|
%% ========================================================================
|
|
%%
|
|
\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX)
|
|
[1995/06/01]% LaTeX date must be June 1995 or later
|
|
\ProvidesPackage{amsthm}[2020/05/29 v2.20.6]
|
|
\let\@xp=\expandafter
|
|
\let\@nx=\noexpand
|
|
\def\@oparg#1[#2]{\@ifnextchar[{#1}{#1[#2]}}
|
|
\long\def\@ifempty#1{\@xifempty#1@@..\@nil}
|
|
\long\def\@xifempty#1#2@#3#4#5\@nil{%
|
|
\ifx#3#4\@xp\@firstoftwo\else\@xp\@secondoftwo\fi}
|
|
\long\def\@ifnotempty#1{\@ifempty{#1}{}}
|
|
\def\setboxz@h{\setbox\z@\hbox}
|
|
\def\@addpunct#1{%
|
|
\relax\ifhmode
|
|
\ifnum\spacefactor>\@m \else#1\fi
|
|
\fi}
|
|
\def\nopunct{\spacefactor 1007 }
|
|
\def\frenchspacing{\sfcode`\.1006\sfcode`\?1005\sfcode`\!1004%
|
|
\sfcode`\:1003\sfcode`\;1002\sfcode`\,1001 }
|
|
\DeclareOption*{\input{\CurrentOption .thm}}
|
|
\ProcessOptions
|
|
|
|
\newcommand{\theoremstyle}[1]{%
|
|
\@ifundefined{th@#1}{%
|
|
\PackageWarning{amsthm}{Unknown theoremstyle `#1'}%
|
|
\thm@style{plain}%
|
|
}{%
|
|
\thm@style{#1}%
|
|
}%
|
|
}
|
|
\newtoks\thm@style
|
|
\thm@style{plain}
|
|
\newtoks\thm@bodyfont \thm@bodyfont{\itshape}
|
|
\newtoks\thm@headfont \thm@headfont{\bfseries}
|
|
\newtoks\thm@notefont \thm@notefont{}
|
|
\newtoks\thm@headpunct \thm@headpunct{.}
|
|
\newskip\thm@preskip \newskip\thm@postskip
|
|
\def\thm@space@setup{%
|
|
\thm@preskip=\topsep \thm@postskip=\thm@preskip
|
|
}
|
|
\renewcommand{\newtheorem}{\@ifstar{\@xnthm *}{\@xnthm \relax}}
|
|
\def\@xnthm#1#2{%
|
|
\let\@tempa\relax
|
|
\@xp\@ifdefinable\csname #2\endcsname{%
|
|
\global\@xp\let\csname end#2\endcsname\@endtheorem
|
|
\ifx *#1% unnumbered, need to get one more mandatory arg
|
|
\edef\@tempa##1{%
|
|
\gdef\@xp\@nx\csname#2\endcsname{%
|
|
\@nx\@thm{\@xp\@nx\csname th@\the\thm@style\endcsname}%
|
|
{}{##1}}}%
|
|
\else % numbered theorem, need to check for optional arg
|
|
\def\@tempa{\@oparg{\@ynthm{#2}}[]}%
|
|
\fi
|
|
}%
|
|
\@tempa
|
|
}
|
|
\def\@ynthm#1[#2]#3{%
|
|
\ifx\relax#2\relax
|
|
\def\@tempa{\@oparg{\@xthm{#1}{#3}}[]}%
|
|
\else
|
|
\@ifundefined{c@#2}{%
|
|
\def\@tempa{\@nocounterr{#2}}%
|
|
}{%
|
|
\@xp\xdef\csname the#1\endcsname{\@xp\@nx\csname the#2\endcsname}%
|
|
\toks@{#3}%
|
|
\@xp\xdef\csname#1\endcsname{%
|
|
\@nx\@thm{%
|
|
\let\@nx\thm@swap
|
|
\if S\thm@swap\@nx\@firstoftwo\else\@nx\@gobble\fi
|
|
\@xp\@nx\csname th@\the\thm@style\endcsname}%
|
|
{#2}{\the\toks@}}%
|
|
\let\@tempa\relax
|
|
}%
|
|
\fi
|
|
\@tempa
|
|
}
|
|
\def\@xthm#1#2[#3]{%
|
|
\ifx\relax#3\relax
|
|
\newcounter{#1}%
|
|
\else
|
|
\newcounter{#1}[#3]%
|
|
\@xp\xdef\csname the#1\endcsname{\@xp\@nx\csname the#3\endcsname
|
|
\@thmcountersep\@thmcounter{#1}}%
|
|
\fi
|
|
\toks@{#2}%
|
|
\@xp\xdef\csname#1\endcsname{%
|
|
\@nx\@thm{%
|
|
\let\@nx\thm@swap
|
|
\if S\thm@swap\@nx\@firstoftwo\else\@nx\@gobble\fi
|
|
\@xp\@nx\csname th@\the\thm@style\endcsname}%
|
|
{#1}{\the\toks@}}%
|
|
}
|
|
\def\@thm#1#2#3{%
|
|
\ifhmode\unskip\unskip\par\fi
|
|
\normalfont
|
|
\trivlist
|
|
\let\thmheadnl\relax
|
|
\let\thm@swap\@gobble
|
|
\thm@notefont{\fontseries\mddefault\upshape}%
|
|
\thm@headpunct{.}% add period after heading
|
|
\thm@headsep 5\p@ plus\p@ minus\p@\relax
|
|
\thm@space@setup
|
|
#1% style overrides
|
|
\@topsep \thm@preskip % used by thm head
|
|
\@topsepadd \thm@postskip % used by \@endparenv
|
|
\def\@tempa{#2}\ifx\@empty\@tempa
|
|
\def\@tempa{\@oparg{\@begintheorem{#3}{}}[]}%
|
|
\else
|
|
\refstepcounter{#2}%
|
|
\def\@tempa{\@oparg{\@begintheorem{#3}{\csname the#2\endcsname}}[]}%
|
|
\fi
|
|
\@tempa
|
|
}
|
|
\def\@restorelabelsep{\relax}
|
|
\let\@ythm\relax
|
|
\let\thmname\@iden \let\thmnote\@iden \let\thmnumber\@iden
|
|
\providecommand\@upn{\textup}
|
|
\def\thmhead@plain#1#2#3{%
|
|
\thmname{#1}\thmnumber{\@ifnotempty{#1}{ }\@upn{#2}}%
|
|
\thmnote{ {\the\thm@notefont(#3)}}}
|
|
\let\thmhead\thmhead@plain
|
|
\def\swappedhead#1#2#3{%
|
|
\thmnumber{#2}%
|
|
\thmname{\@ifnotempty{#2}{~}#1}%
|
|
\thmnote{ {\the\thm@notefont(#3)}}}
|
|
\let\swappedhead@plain=\swappedhead
|
|
\let\thmheadnl\relax
|
|
\let\thm@indent\noindent
|
|
\let\thm@swap\@gobble
|
|
\def\@begintheorem#1#2[#3]{%
|
|
\deferred@thm@head{\the\thm@headfont \thm@indent
|
|
\@ifempty{#1}{\let\thmname\@gobble}{\let\thmname\@iden}%
|
|
\@ifempty{#2}{\let\thmnumber\@gobble}{\let\thmnumber\@iden}%
|
|
\@ifempty{#3}{\let\thmnote\@gobble}{\let\thmnote\@iden}%
|
|
\thm@swap\swappedhead\thmhead{#1}{#2}{#3}%
|
|
\the\thm@headpunct
|
|
\thmheadnl % possibly a newline.
|
|
\hskip\thm@headsep
|
|
}%
|
|
\ignorespaces}
|
|
\newskip\thm@headsep
|
|
\thm@headsep=5pt plus1pt minus1pt\relax
|
|
\let\adjust@parskip@nobreak=\@nbitem
|
|
\newtoks\dth@everypar
|
|
\dth@everypar={%
|
|
\@minipagefalse \global\@newlistfalse
|
|
\@noparitemfalse
|
|
\if@inlabel
|
|
\global\@inlabelfalse
|
|
\begingroup \setbox\z@\lastbox
|
|
\ifvoid\z@ \kern-\itemindent \fi
|
|
\endgroup
|
|
\unhbox\@labels
|
|
\fi
|
|
\if@nobreak \@nobreakfalse \clubpenalty\@M
|
|
\else \clubpenalty\@clubpenalty \everypar{}%
|
|
\fi
|
|
}%
|
|
\def\deferred@thm@head#1{%
|
|
\if@inlabel \indent \par \fi % eject a section head if one is pending
|
|
\if@nobreak
|
|
\adjust@parskip@nobreak
|
|
\else
|
|
\addpenalty\@beginparpenalty
|
|
\addvspace\@topsep
|
|
\addvspace{-\parskip}%
|
|
\fi
|
|
\global\@inlabeltrue
|
|
\everypar\dth@everypar
|
|
\sbox\@labels{\normalfont#1}%
|
|
\ignorespaces
|
|
}
|
|
\def\nonslanted{\relax
|
|
\@xp\let\@xp\@tempa\csname\f@shape shape\endcsname
|
|
\ifx\@tempa\itshape\upshape
|
|
\else\ifx\@tempa\slshape\upshape\fi\fi}
|
|
\def\swapnumbers{\edef\thm@swap{\if S\thm@swap N\else S\fi}}
|
|
\def\thm@swap{N}%
|
|
\let\@opargbegintheorem\relax
|
|
\def\th@plain{%
|
|
%% \let\thm@indent\noindent % no indent
|
|
%% \thm@headfont{\bfseries}% heading font is bold
|
|
%% \thm@notefont{}% same as heading font
|
|
%% \thm@headpunct{.}% add period after heading
|
|
%% \let\thm@swap\@gobble
|
|
%% \thm@preskip\topsep
|
|
%% \thm@postskip\theorempreskipamount
|
|
\itshape % body font
|
|
}
|
|
\def\th@definition{%
|
|
\normalfont % body font
|
|
}
|
|
\def\th@remark{%
|
|
\thm@headfont{\itshape}%
|
|
\normalfont % body font
|
|
\thm@preskip\topsep \divide\thm@preskip\tw@
|
|
\thm@postskip\thm@preskip
|
|
}
|
|
\def\@endtheorem{\endtrivlist\@endpefalse }
|
|
\newcommand{\newtheoremstyle}[9]{%
|
|
\@ifempty{#5}{\dimen@\z@skip}{\dimen@#5\relax}%
|
|
\ifdim\dimen@=\z@
|
|
\toks@{#4\let\thm@indent\noindent}%
|
|
\else
|
|
\toks@{#4\def\thm@indent{\noindent\hbox to#5{}}}%
|
|
\fi
|
|
\def\@tempa{#8}\ifx\space\@tempa
|
|
\toks@\@xp{\the\toks@ \thm@headsep\fontdimen\tw@\font\relax}%
|
|
\else
|
|
\def\@tempb{\newline}%
|
|
\ifx\@tempb\@tempa
|
|
\toks@\@xp{\the\toks@ \thm@headsep\z@skip
|
|
\def\thmheadnl{\newline}}%
|
|
\else
|
|
\toks@\@xp{\the\toks@ \thm@headsep#8\relax}%
|
|
\fi
|
|
\fi
|
|
\begingroup
|
|
\thm@space@setup
|
|
\@defaultunits\@tempskipa#2\thm@preskip\relax\@nnil
|
|
\@defaultunits\@tempskipb#3\thm@postskip\relax\@nnil
|
|
\xdef\@gtempa{\thm@preskip\the\@tempskipa
|
|
\thm@postskip\the\@tempskipb\relax}%
|
|
\endgroup
|
|
\@temptokena\@xp{\@gtempa
|
|
\thm@headfont{#6}\thm@headpunct{#7}%
|
|
}%
|
|
\@ifempty{#9}{%
|
|
\let\thmhead\thmhead@plain
|
|
}{%
|
|
\@namedef{thmhead@#1}##1##2##3{#9}%
|
|
\@temptokena\@xp{\the\@temptokena
|
|
\@xp\let\@xp\thmhead\csname thmhead@#1\endcsname}%
|
|
}%
|
|
\@xp\xdef\csname th@#1\endcsname{\the\toks@ \the\@temptokena}%
|
|
}
|
|
\DeclareRobustCommand{\qed}{%
|
|
\ifmmode \mathqed
|
|
\else
|
|
\leavevmode\unskip\penalty9999 \hbox{}\nobreak\hfill
|
|
\quad\hbox{\qedsymbol}%
|
|
\fi
|
|
}
|
|
\let\QED@stack\@empty
|
|
\let\qed@elt\relax
|
|
\newcommand{\pushQED}[1]{%
|
|
\toks@{\qed@elt{#1}}\@temptokena\expandafter{\QED@stack}%
|
|
\xdef\QED@stack{\the\toks@\the\@temptokena}%
|
|
}
|
|
\newcommand{\popQED}{%
|
|
\begingroup\let\qed@elt\popQED@elt \QED@stack\relax\relax\endgroup
|
|
}
|
|
\def\popQED@elt#1#2\relax{#1\gdef\QED@stack{#2}}
|
|
\newcommand{\qedhere}{%
|
|
\begingroup \let\mathqed\math@qedhere
|
|
\let\qed@elt\setQED@elt \QED@stack\relax\relax \endgroup
|
|
}
|
|
\newif\ifmeasuring@
|
|
\newif\iffirstchoice@ \firstchoice@true
|
|
\def\setQED@elt#1#2\relax{%
|
|
\ifmeasuring@
|
|
\else \iffirstchoice@ \gdef\QED@stack{\qed@elt{}#2}\fi
|
|
\fi
|
|
#1%
|
|
}
|
|
\def\qed@warning{%
|
|
\PackageWarning{amsthm}{The \@nx\qedhere command may not work
|
|
correctly here}%
|
|
}
|
|
\newcommand{\mathqed}{\quad\hbox{\qedsymbol}}
|
|
\def\linebox@qed{\hfil\hbox{\qedsymbol}\hfilneg}
|
|
\@ifpackageloaded{amsmath}{%
|
|
\def\math@qedhere{%
|
|
\@ifundefined{\@currenvir @qed}{%
|
|
\qed@warning\quad\hbox{\qedsymbol}%
|
|
}{%
|
|
\@xp\aftergroup\csname\@currenvir @qed\endcsname
|
|
}%
|
|
}
|
|
\def\displaymath@qed{%
|
|
\relax
|
|
\ifmmode
|
|
\ifinner \aftergroup\linebox@qed
|
|
\else
|
|
\eqno
|
|
\let\eqno\relax \let\leqno\relax \let\veqno\relax
|
|
\hbox{\qedsymbol}%
|
|
\fi
|
|
\else
|
|
\aftergroup\linebox@qed
|
|
\fi
|
|
}
|
|
\@xp\let\csname equation*@qed\endcsname\displaymath@qed
|
|
\def\equation@qed{%
|
|
\iftagsleft@
|
|
\hbox{\phantom{\quad\qedsymbol}}%
|
|
\gdef\alt@tag{%
|
|
\rlap{\hbox to\displaywidth{\hfil\qedsymbol}}%
|
|
\global\let\alt@tag\@empty
|
|
}%
|
|
\else
|
|
\gdef\alt@tag{%
|
|
\global\let\alt@tag\@empty
|
|
\vtop{\ialign{\hfil####\cr
|
|
\tagform@\theequation\cr
|
|
\qedsymbol\cr}}%
|
|
\setbox\z@
|
|
}%
|
|
\fi
|
|
}
|
|
\def\qed@tag{%
|
|
\global\tag@true \nonumber
|
|
&\omit\setboxz@h {\strut@ \qedsymbol}\tagsleft@false
|
|
\place@tag@gather
|
|
\kern-\tabskip
|
|
\ifst@rred \else \global\@eqnswtrue \fi \global\advance\row@\@ne \cr
|
|
}
|
|
\def\split@qed{%
|
|
\def\endsplit{\crcr\egroup \egroup \ctagsplit@false \rendsplit@
|
|
\aftergroup\align@qed
|
|
}%
|
|
}
|
|
\def\align@qed{%
|
|
\ifmeasuring@ \tag*{\qedsymbol}%
|
|
\else \let\math@cr@@@\qed@tag
|
|
\fi
|
|
}
|
|
\@xp\let\csname align*@qed\endcsname\align@qed
|
|
\@xp\let\csname gather*@qed\endcsname\align@qed
|
|
%% Needs some patching up for amsmath 1.2
|
|
}{% end of amsmath branch, start plain LaTeX branch
|
|
\def\math@qedhere{%
|
|
\@ifundefined{\@currenvir @qed}{%
|
|
\qed@warning \aftergroup\displaymath@qed
|
|
}{%
|
|
\@xp\aftergroup\csname\@currenvir @qed\endcsname
|
|
}%
|
|
}
|
|
\def\displaymath@qed{%
|
|
\relax
|
|
\ifmmode
|
|
\ifinner \aftergroup\aftergroup\aftergroup\linebox@qed
|
|
\else
|
|
\eqno \def\@badmath{$$}%
|
|
\let\eqno\relax \let\leqno\relax \let\veqno\relax
|
|
\hbox{\qedsymbol}%
|
|
\fi
|
|
\else
|
|
\aftergroup\linebox@qed
|
|
\fi
|
|
}
|
|
\@ifundefined{ver@leqno.clo}{%
|
|
\def\equation@qed{\displaymath@qed \quad}%
|
|
}{%
|
|
\def\equation@qed{\displaymath@qed}%
|
|
}
|
|
\def\@tempa#1$#2#3\@nil#4{%
|
|
\def#4{#1$#2\def\@currenvir{displaymath}#3}%
|
|
}%
|
|
\expandafter\ifx\csname[ \endcsname\relax
|
|
\expandafter\@tempa\[\@nil\[%
|
|
\else
|
|
\expandafter\expandafter\expandafter\@tempa\csname[
|
|
\expandafter\endcsname\expandafter\@nil
|
|
\csname[ \endcsname
|
|
\fi
|
|
}
|
|
\@ifpackageloaded{amstex}{%
|
|
\def\@tempa{TT}%
|
|
}{%
|
|
\@ifpackageloaded{amsmath}{%
|
|
\def\@tempb#1 v#2.#3\@nil{#2}%
|
|
\ifnum\@xp\@xp\@xp\@tempb\csname ver@amsmath.sty\endcsname v0.0\@nil
|
|
<\tw@
|
|
\def\@tempa{TT}%
|
|
\else
|
|
\def\@tempa{TF}%
|
|
\fi
|
|
}{%
|
|
\def\@tempa{TF}
|
|
}%
|
|
}
|
|
\if\@tempa
|
|
\renewcommand{\math@qedhere}{\quad\hbox{\qedsymbol}}%
|
|
\fi
|
|
\newcommand{\openbox}{\leavevmode
|
|
\hbox to.77778em{%
|
|
\hfil\vrule
|
|
\vbox to.675em{\hrule width.6em\vfil\hrule}%
|
|
\vrule\hfil}}
|
|
\DeclareRobustCommand{\textsquare}{%
|
|
\begingroup \usefont{U}{msa}{m}{n}\thr@@\endgroup
|
|
}
|
|
\providecommand{\qedsymbol}{\openbox}
|
|
\newenvironment{proof}[1][\proofname]{\par
|
|
\pushQED{\qed}%
|
|
\normalfont \topsep6\p@\@plus6\p@\relax
|
|
\trivlist
|
|
\item[\hskip\labelsep
|
|
\itshape
|
|
#1\@addpunct{.}]\ignorespaces
|
|
}{%
|
|
\popQED\endtrivlist\@endpefalse
|
|
}
|
|
\providecommand{\proofname}{Proof}
|
|
\endinput
|
|
%%
|
|
%% End of file `amsthm.sty'.
|
|
|