blob: e3c6b2774e5be90291f273f2fede74e2378e8ec3 [file] [log] [blame]
%%
%% This is file `ntheorem.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% ntheorem.dtx (with options: `package')
%%
%% IMPORTANT NOTICE:
%%
%% For the copyright see the source file.
%%
%% Any modified versions of this file must be renamed
%% with new filenames distinct from ntheorem.sty.
%%
%% For distribution of the original source see the terms
%% for copying and modification in the file ntheorem.dtx.
%%
%% This generated file may be distributed as long as the
%% original source files, as listed above, are part of the
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
\def\filedate{2003/06/25}
\def\docdate{2003/06/25}
\def\fileversion{1.22}
\def\basename{ntheorem}
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.2
%% 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.2 or later is part of all distributions of LaTeX
%% version 1999/12/01 or later.
%% \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 \~}
\typeout{Style `\basename', Version \fileversion\space <\filedate>}
\ProvidesPackage{styles/ntheorem}[\filedate \space\fileversion]
\newif\if@thmmarks\@thmmarksfalse
\newif\if@thref\@threffalse
\newif\ifthm@tempif
\DeclareOption{thmmarks}{%*********************************
\PackageInfo{\basename}{Option `thmmarks' loaded}%
\@thmmarkstrue
\newcounter{endNonectr}
\newcounter{currNonectr}
\newif\ifsetendmark\setendmarktrue
\gdef\endtrivlist{%
\@endtrivlist{\PotEndMark{\unskip\nobreak\hfill\nobreak}}}
\gdef\@endtrivlist#1{% % from \endtrivlist
\if@inlabel \indent\fi
\if@newlist \@noitemerr\fi
\ifhmode
\ifdim\lastskip >\z@ #1\unskip \par %<<<<<<<<<<<<<<<<<<<<<<
\else \unskip \par \fi
\fi
\if@noparlist \else
\ifdim\lastskip >\z@
\@tempskipa\lastskip \vskip -\lastskip
\advance\@tempskipa\parskip \advance\@tempskipa -\@outerparskip
\vskip\@tempskipa
\fi
\@endparenv
\fi}
\gdef\SetMark@endeqn{\quad}% as default, cf. option leqno
\gdef\endequation{\eqno \hbox{\@eqnnum \PotEndMark{\SetMark@endeqn}}%
$$\global\@ignoretrue}
\gdef\[{%
\relax\ifmmode
\@badmath
\else
\ifvmode
\nointerlineskip
\makebox[.6\linewidth]%
\fi
$$\stepcounter{end\InTheoType ctr}%
\@ifundefined{mark\roman{curr\InTheoType ctr}%
\InTheoType\roman{end\InTheoType ctr}}{\relax}%
{\ifx\csname\InTheoType Symbol\endcsname\@empty\else
\boxmaxdepth=.5ex\begin{array}[b]{l}%
\boxmaxdepth=\maxdimen\displaystyle\fi}%
\addtocounter{end\InTheoType ctr}{-1}%
%%$$ BRACE MATCH HACK
\fi}
\gdef\]{%
\stepcounter{end\InTheoType ctr}%
\@ifundefined{mark\roman{curr\InTheoType ctr}%
\InTheoType\roman{end\InTheoType ctr}}{\relax}%
{\ifx\csname\InTheoType Symbol\endcsname\@empty\else
\end{array}\fi}%
\addtocounter{end\InTheoType ctr}{-1}%
\relax\ifmmode
\ifinner
\@badmath
\else
\PotEndMark{\eqno}\global\@ignoretrue$$%%$$ BRACE MATCH HACK
\fi
\else
\@badmath
\fi
\ignorespaces}
\gdef\SetMark@endeqnarray#1{\llap{\raisebox{-1.3em}{#1}}}
\gdef\endeqnarray{%
\global\let\Oldeqnnum=\@eqnnum
\gdef\@eqnnum{\Oldeqnnum\PotEndMark{\SetMark@endeqnarray}}%
\@@eqncr
\egroup
\global\advance\c@equation\m@ne
$$\global\@ignoretrue
\global\let\@eqnnum\Oldeqnnum}
\@namedef{endeqnarray*}{%
% from \@@eqncr:
\let\reserved@a\relax
\ifcase\@eqcnt \def\reserved@a{& & &}\or \def\reserved@a{& &}%
\or \def\reserved@a{&}\else
\let\reserved@a\@empty
\@latex@error{Too many columns in eqnarray environment}\@ehc\fi
\reserved@a {\normalfont \normalcolor \PotEndMark{}}%
\global\@eqnswtrue\global\@eqcnt\z@\cr
%
\egroup
\global\advance\c@equation\m@ne
$$\global\@ignoretrue}
\gdef\endtabbing{%
\PotEndMark{\`}\@stopline\ifnum\@tabpush >\z@ \@badpoptabs
\fi\endtrivlist}
\gdef\endcenter{%
\@endtrivlist
{\PotEndMark{\rightskip0pt%
\settowidth{\leftskip}%
{ \csname mark\roman{curr\InTheoType ctr}\InTheoType
\roman{end\InTheoType ctr}\endcsname}%
\advance\leftskip\@flushglue\hskip\@flushglue}}}
\gdef\@empty{}
\gdef\@endtheorem{%
\expandafter
\ifx\csname\InTheoType Symbol\endcsname\@empty\setendmarkfalse\fi
\@endtrivlist
{\ifsetendmark
\unskip\nobreak\hfill\nobreak\csname\InTheoType Symbol\endcsname
\setendmarkfalse \fi}%
\ifsetendmark\OrganizeTheoremSymbol\else\global\setendmarktrue\fi
\csname\InTheoType @postwork\endcsname
}
\gdef\NoEndMark{\global\setendmarkfalse}
\gdef\qed{\expandafter\def\csname \InTheoType Symbol\endcsname
{\the\qedsymbol}}%
\gdef\PotEndMark#1{\SetEndMark{\InTheoType}{#1}}%
\gdef\SetEndMark#1#2{%
\stepcounter{end#1ctr}%
\@ifundefined{mark\roman{curr#1ctr}#1\roman{end#1ctr}}%
{\relax}%
{#2{\csname mark\roman{curr#1ctr}#1\roman{end#1ctr}\endcsname
\ifdim\rightmargin>\z@\hskip-\rightmargin\fi
\hbox to 0cm{}}}}%
\newskip\mysavskip
\gdef\@bbsphack{%
\ifvmode\else\mysavskip\lastskip
\unskip\fi}
\gdef\@eesphack{%
\ifdim\mysavskip>\z@
\vskip\mysavskip \else\fi}
\gdef\OrganizeTheoremSymbol{%
\@bbsphack
\edef\thm@tmp{\expandafter\expandafter\expandafter\thm@meaning
\expandafter\meaning\csname\InTheoType Symbol\endcsname\relax}%
\protected@write\@auxout{}%
{\string\global\string\def\string\mark%
\roman{curr\InTheoType ctr}\InTheoType \roman{end\InTheoType ctr}%
{\thm@tmp}}%
\@eesphack}
} % end of option [thmmarks]
\DeclareOption{leqno}{% *********************************************
\if@thmmarks
\PackageInfo{\basename}{Option `leqno' loaded}%
\gdef\SetMark@endeqn#1{\hss\llap{#1}}
\gdef\SetMark@endeqnarray#1{\hss\llap{#1}}
\fi}%
\DeclareOption{fleqn}{% *********************************************
\if@thmmarks
\PackageInfo{\basename}{Option `fleqn' loaded}%
\renewcommand\[{\relax
\ifmmode\@badmath
\else
\begin{trivlist}%
\@beginparpenalty\predisplaypenalty
\@endparpenalty\postdisplaypenalty
\item[]\leavevmode
\hb@xt@\linewidth\bgroup $\m@th\displaystyle %$
\hskip\mathindent\bgroup
\stepcounter{end\InTheoType ctr}%
\@ifundefined{mark\roman{curr\InTheoType ctr}%
\InTheoType\roman{end\InTheoType ctr}}{\relax}%
{\ifx\csname\InTheoType Symbol\endcsname\@empty\else
\boxmaxdepth=.5ex\begin{array}[b]{l}%
\boxmaxdepth=\maxdimen\displaystyle\fi}%
\addtocounter{end\InTheoType ctr}{-1}%
\fi}
\renewcommand\]{%
\stepcounter{end\InTheoType ctr}%
\@ifundefined{mark\roman{curr\InTheoType ctr}%
\InTheoType\roman{end\InTheoType ctr}}{\relax}%
{\ifx\csname\InTheoType Symbol\endcsname\@empty\else
\end{array}\fi}%
\addtocounter{end\InTheoType ctr}{-1}%
\relax\ifmmode
\egroup $\hfil\PotEndMark{}% $
\egroup
\end{trivlist}%
\else \@badmath
\fi}
\gdef\endequation{%
$\hfil % $
\displaywidth\linewidth\hbox{\@eqnnum \PotEndMark{\SetMark@endeqn}}%
\egroup
\endtrivlist}
\gdef\endeqnarray{%
\global\let\Oldeqnnum=\@eqnnum
\gdef\@eqnnum{\Oldeqnnum\PotEndMark{\SetMark@endeqnarray}}%
\@@eqncr
\egroup
\global\advance\c@equation\m@ne$$% $$
\global\@ignoretrue
\global\let\@eqnnum\Oldeqnnum}
\fi}% end of option fleqn
\DeclareOption{thref}{%**********************************************
\PackageInfo{\basename}{Option `thref' loaded}%
\@threftrue
\newskip\mysavskip
\gdef\@bbsphack{%
\ifvmode\else\mysavskip\lastskip
\unskip\fi}
\gdef\@eesphack{%
\ifdim\mysavskip>\z@
\vskip\mysavskip \else\fi}
\def\label#1{%
\@ifnextchar[%]
{\label@optarg{#1}}%
{\thm@makelabel{#1}}}
\def\thm@makelabel#1{%
\@bbsphack
\edef\thm@tmp{\expandafter\expandafter\expandafter\thm@meaning
\expandafter\meaning\csname\InTheoType Keyword\endcsname\relax}%
\protected@write\@auxout{}%
{\string\newlabel{#1}{{\@currentlabel}{\thepage}}[\thm@tmp]}%
\@eesphack}
\def\label@optarg#1[#2]{%
\@bsphack
\protected@write\@auxout{}%
{\string\newlabel{#1}{{\@currentlabel}{\thepage}}[#2]}%
\@esphack}
\def\@newl@bel#1#2#3{%
\@ifpackageloaded{babel}{\@safe@activestrue}\relax%
\@ifundefined{#1@#2}%
\relax
{\gdef \@multiplelabels {%
\@latex@warning@no@line{There were multiply-defined labels}}%
\@latex@warning@no@line{Label `#2' multiply defined}}%
\global\@namedef{#1@#2}{#3}%
\@ifnextchar[{\set@label@type{#1}{#2}}%]
\relax}%
\def\set@label@type#1#2[#3]{%
\global\@namedef{#1@#2@type}{#3}}
\newcommand\org@testdef{}
\let\org@testdef\@testdef
\def\@testdef#1#2#3{%
\org@testdef{#1}{#2}{#3}%
\@ifnextchar[{\@gobbleopt}{}%
}
\newcommand\@gobbleopt{}
\long\def\@gobbleopt[#1]{}
\def\thref#1{%
\expandafter\ifx\csname r@#1@type\endcsname\None
\PackageWarning{\basename}{thref: Reference Type of `#1' on page
\thepage \space undefined}\G@refundefinedtrue
\else\csname r@#1@type\endcsname~\fi%
\expandafter\@setref\csname r@#1\endcsname\@firstoftwo{#1}}
}% end of option thref ************************************************
\DeclareOption{amsmath}{% ***************************************************
\if@thref
\PackageInfo{\basename}{option `amsmath' handling for `thref' loaded}%
\let\ltx@label\label
\global\let\thm@df@label@optarg\@empty
\def\label@in@display#1{%
\ifx\df@label\@empty\else
\@amsmath@err{Multiple \string\label's:
label '\df@label' will be lost}\@eha
\fi
\gdef\df@label{#1}%
\@ifnextchar[{\thm@label@in@display@optarg}{\thm@label@in@display@noarg}%]
}
\def\thm@label@in@display@noarg{%
\global\let\thm@df@label@optarg\@empty
}
\def\thm@label@in@display@optarg[#1]{%
\gdef\thm@df@label@optarg{#1}%
}
\def\endmathdisplay@a{%
\if@eqnsw \gdef\df@tag{\tagform@\theequation}\fi
\if@fleqn \@xp\endmathdisplay@fleqn
\else \ifx\df@tag\@empty \else \veqno \alt@tag \df@tag \fi
\ifx\df@label\@empty \else
\ifx\thm@df@label@optarg\@empty \@xp\ltx@label\@xp{\df@label}
\else \@xp\ltx@label\@xp{\df@label}[\thm@df@label@optarg]\fi
\fi
\fi
\ifnum\dspbrk@lvl>\m@ne
\postdisplaypenalty -\@getpen\dspbrk@lvl
\global\dspbrk@lvl\m@ne
\fi
}
\def\make@display@tag{%
\if@eqnsw
\refstepcounter{equation}%
\tagform@\theequation
\else
\iftag@
\df@tag
\global\let\df@tag\@empty
\fi
\fi
\ifmeasuring@
\else
\ifx\df@label\@empty\else
\ifx\thm@df@label@optarg\@empty \@xp\ltx@label\@xp{\df@label}
\else \@xp\ltx@label\@xp{\df@label}[\thm@df@label@optarg]\fi
\global\let\df@label\@empty
\fi
\fi
}
\def\endmathdisplay@fleqn{%
$\hfil\hskip\@mathmargin\egroup
\ifnum\badness<\inf@bad \let\too@wide\@ne \else \let\too@wide\z@ \fi
\ifx\@empty\df@tag
\else
\setbox4\hbox{\df@tag
\ifx\thm@df@label@optarg\@empty \@xp\ltx@label\@xp{\df@label}
\else \@xp\ltx@label\@xp{\df@label}[\thm@df@label@optarg]\fi
}%
\fi
\csname emdf@%
\ifx\df@tag\@empty U\else \iftagsleft@ L\else R\fi\fi
\endcsname
}
\fi
\if@thmmarks
\PackageInfo{\basename}{option `amsmath' handling for `thmmarks' loaded}%
\newdimen\thm@amstmpdepth
\gdef\TagsPlusEndmarks{%
\global\let\Old@maketag@@@=\maketag@@@
\global\let\Old@df@tag=\df@tag
\if@eqnsw\SetTagPlusEndMark
\else
\iftag@\SetTagPlusEndMark
\else\SetOnlyEndMark
\fi
\fi}
\gdef\SetOnlyEndMark{%
\global\tag@true
\iftagsleft@
\gdef\df@tag{\hbox
to \displaywidth{\hss\PotEndMark{\maketag@@@}}}%
\else
\gdef\df@tag{\PotEndMark{\maketag@@@}}%
\fi}
\gdef\SetTagPlusEndMark{%
\iftagsleft@
\gdef\maketag@@@##1{%
\hbox to \displaywidth{\m@th\normalfont##1%
\hss\PotEndMark{\hss}}}%
\else
\gdef\maketag@@@##1{\hbox{\m@th\normalfont##1%
\llap{\hss\PotEndMark{\raisebox{-1.3em}}}}}%
\fi}
\gdef\RestoreTags{%
\global\let\maketag@@@=\Old@maketag@@@
\global\let\df@tag=\Old@df@tag}
\gdef\endgather{%
\TagsPlusEndmarks % <<<<<<<<<
\math@cr
\black@\totwidth@
\egroup
$$%
\RestoreTags % <<<<<<<<<
\ignorespacesafterend}
\expandafter\let\csname endgather*\endcsname\endgather
\def\endalign{%
\ifingather@\else % <<<<<<<<<
\TagsPlusEndmarks\fi % <<<<<<<<<
\math@cr
\black@\totwidth@
\egroup
\ifingather@
\restorealignstate@
\egroup
\nonumber
\ifnum0=`{\fi\iffalse}\fi
\else
$$%
\RestoreTags % <<<<<<<<<
\fi
\ignorespacesafterend}
\expandafter\let\csname endalign*\endcsname\endalign
\let\endxalignat\endalign
\expandafter\let\csname endxalignat*\endcsname\endalign
\let\endxxalignat\endalign
\let\endalignat\endalign
\expandafter\let\csname endalignat*\endcsname\endalign
\let\endflalign\endalign
\expandafter\let\csname endflalign*\endcsname\endalign
\def\lendmultline@{%
\global\@eqnswfalse\tag@false\tagsleft@false
\rendmultline@}
\def\rendmultline@{%
\TagsPlusEndmarks % <<<<<<<<<
\iftag@
$\let\endmultline@math\relax
\ifshifttag@
\hskip\multlinegap
\llap{\vtop{%
\raise@tag
\normalbaselines
\setbox\@ne\null
\dp\@ne\lineht@
\box\@ne
\hbox{\strut@\make@display@tag}%
}}%
\else
\hskip\multlinetaggap
\make@display@tag
\fi
\else
\hskip\multlinegap
\fi
\hfilneg
\math@cr
\egroup$$%
\RestoreTags} % <<<<<<<<<
\def\endmathdisplay#1{%
\ifmmode \else \@badmath \fi
\TagsPlusEndmarks % <<<<<<<<<
\endmathdisplay@a
$$%
\RestoreTags % <<<<<<<<<
\global\let\df@label\@empty \global\let\df@tag\@empty
\global\tag@false \global\let\alt@tag\@empty
\global\@eqnswfalse
}
\renewenvironment{equation}{%
\edef\reset@equation{%
\@nx\setcounter{equation}{\number\c@equation}}%
\refstepcounter{equation}%
\st@rredfalse \global\@eqnswtrue
\mathdisplay{equation}%
}{%
\endmathdisplay{equation}%
\ignorespacesafterend
}
\renewenvironment{equation*}{%
\st@rredtrue \global\@eqnswfalse
\mathdisplay{equation*}%
}{%
\endmathdisplay{equation*}%
\ignorespacesafterend
}
\fi
}% end of option amsmath/thmmarks **************************************
\let\thm@usestd\@undefined
\DeclareOption{standard}{\let\thm@usestd\relax}
\let\thm@noconfig\@undefined
\DeclareOption{noconfig}{\let\thm@noconfig\relax}
\gdef\InTheoType{None}
\gdef\NoneKeyword{None}
\gdef\NoneSymbol{None}
\gdef\None{None}
\gdef\newtheoremstyle#1#2#3{%
\expandafter\@ifundefined{th@#1}%
{\expandafter\gdef\csname th@#1\endcsname{%
\def\@begintheorem####1####2{#2}%
\def\@opargbegintheorem####1####2####3{#3}}}%
{\PackageError{\basename}{Theorem style #1 already defined}\@eha}}
\gdef\renewtheoremstyle#1#2#3{%
\expandafter\@ifundefined{th@#1}%
{\PackageError{\basename}{Theorem style #1 undefined}\@ehc}%
{}%
\expandafter\let\csname th@#1\endcsname\relax
\newtheoremstyle{#1}{#2}{#3}}
\newtheoremstyle{plain}%
{\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\theorem@separator]}%
{\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\ (##3)\theorem@separator]}
\newtheoremstyle{break}%
{\item[\rlap{\vbox{\hbox{\hskip\labelsep \theorem@headerfont
##1\ ##2\theorem@separator}\hbox{\strut}}}]}%
{\item[\rlap{\vbox{\hbox{\hskip\labelsep \theorem@headerfont
##1\ ##2\ (##3)\theorem@separator}\hbox{\strut}}}]}
\newtheoremstyle{change}%
{\item[\hskip\labelsep \theorem@headerfont ##2\ ##1\theorem@separator]}%
{\item[\hskip\labelsep \theorem@headerfont ##2\ ##1\ (##3)\theorem@separator]}
\newtheoremstyle{changebreak}%
{\item[\rlap{\vbox{\hbox{\hskip\labelsep \theorem@headerfont
##2\ ##1\theorem@separator}\hbox{\strut}}}]}%
{\item[\rlap{\vbox{\hbox{\hskip\labelsep \theorem@headerfont
##2\ ##1\ (##3)\theorem@separator}\hbox{\strut}}}]}
\newtheoremstyle{margin}%
{\item[\theorem@headerfont \llap{##2}\hskip\labelsep ##1\theorem@separator]}%
{\item[\theorem@headerfont \llap{##2}\hskip\labelsep ##1\ (##3)\theorem@separator]}
\newtheoremstyle{marginbreak}%
{\item[\rlap{\vbox{\hbox{\theorem@headerfont
\llap{##2}\hskip\labelsep\relax ##1\theorem@separator}\hbox{\strut}}}]}
{\item[\rlap{\vbox{\hbox{\theorem@headerfont
\llap{##2}\hskip\labelsep\relax ##1\
(##3)\theorem@separator}\hbox{\strut}}}]}
\newtheoremstyle{nonumberplain}%
{\item[\theorem@headerfont\hskip\labelsep ##1\theorem@separator]}%
{\item[\theorem@headerfont\hskip \labelsep ##1\ (##3)\theorem@separator]}
\newtheoremstyle{nonumberbreak}%
{\item[\rlap{\vbox{\hbox{\hskip\labelsep \theorem@headerfont
##1\theorem@separator}\hbox{\strut}}}]}%
{\item[\rlap{\vbox{\hbox{\hskip\labelsep \theorem@headerfont
##1\ (##3)\theorem@separator}\hbox{\strut}}}]}
\newtheoremstyle{empty}%
{\item[]}%
{\item[\theorem@headerfont \hskip\labelsep\relax ##3]}
\newtheoremstyle{emptybreak}%
{\item[]}%
{\item[\rlap{\vbox{\hbox{\hskip\labelsep\relax \theorem@headerfont
##3\theorem@separator}\hbox{\strut}}}]}
\@namedef{th@nonumbermargin}{\th@nonumberplain}
\@namedef{th@nonumberchange}{\th@nonumberplain}
\@namedef{th@nonumbermarginbreak}{\th@nonumberbreak}
\@namedef{th@nonumberchangebreak}{\th@nonumberbreak}
\@namedef{th@plainNo}{\th@nonumberplain}
\@namedef{th@breakNo}{\th@nonumberplain}
\@namedef{th@marginNo}{\th@nonumberplain}
\@namedef{th@changeNo}{\th@nonumberplain}
\@namedef{th@marginbreakNo}{\th@nonumberbreak}
\@namedef{th@changebreakNo}{\th@nonumberbreak}
\gdef\theoremstyle#1{%
\@ifundefined{th@#1}{\@warning
{Unknown theoremstyle `#1'. Using `plain'}%
\theorem@style{plain}}%
{\theorem@style{#1}}}
\newtoks\theorem@style
\newtoks\theorem@@style
\global\theorem@style{plain}
\newtoks\theorembodyfont
\global\theorembodyfont{\itshape}
\newtoks\theoremnumbering
\global\theoremnumbering{arabic}
\newskip\theorempreskipamount
\newskip\theorempostskipamount
\global\theorempreskipamount\topsep
\global\theorempostskipamount\topsep
\newdimen\theoremindent
\global\theoremindent0cm
\newdimen\theorem@indent
\newtoks\theoremheaderfont
\global\theoremheaderfont{\normalfont\bfseries}
\def\theorem@headerfont{\normalfont\bfseries}
\newtoks\theoremseparator
\global\theoremseparator{}
\def\theorem@separator{}
\newtoks\theoremprework
\global\theoremprework{\relax}
\newtoks\theorempostwork
\global\theorempostwork{\relax}
\def\theorem@prework{}
\newtoks\theoremsymbol
\global\theoremsymbol{}
\newtoks\qedsymbol
\global\qedsymbol{}
\newtoks\theoremkeyword
\global\theoremkeyword{None}
\gdef\theoremclass#1{%
\csname th@class@#1\endcsname}
\gdef\th@class@LaTeX{%
\theoremstyle{plain}
\theoremheaderfont{\normalfont\bfseries}
\theorembodyfont{\itshape}
\theoremseparator{}
\theoremprework{\relax}
\theorempostwork{\relax}
\theoremindent0cm
\theoremnumbering{arabic}
\theoremsymbol{}}
\newtoks\qedsymbol
\global\qedsymbol{}
\DeclareOption{amsthm}{% *********************************************
\PackageInfo{\basename}{Option `amsthm' loaded}%
\def\swapnumbers{\PackageError{\basename}{swapnumbers not implemented.
Use theoremstyle change instead.}\@eha}
\gdef\th@plain{%
\def\theorem@headerfont{\normalfont\bfseries}\itshape%
\def\@begintheorem##1##2{%
\item[\hskip\labelsep \theorem@headerfont ##1\ ##2.]}%
\def\@opargbegintheorem##1##2##3{%
\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\ (##3).]}}
\gdef\th@nonumberplain{%
\def\theorem@headerfont{\normalfont\bfseries}\itshape%
\def\@begintheorem##1##2{%
\item[\hskip\labelsep \theorem@headerfont ##1.]}%
\def\@opargbegintheorem##1##2##3{%
\item[\hskip\labelsep \theorem@headerfont ##1\ (##3).]}}
\gdef\th@definition{%
\th@plain\def\theorem@headerfont{\normalfont\bfseries}\itshape}
\gdef\th@nonumberdefinition{%
\th@nonumberplain\def\theorem@headerfont{\normalfont\bfseries}\itshape}
\gdef\th@remark{%
\th@plain\def\theorem@headerfont{\itshape}\normalfont}
\gdef\th@nonumberremark{%
\th@nonumberplain\def\theorem@headerfont{\itshape}\normalfont}
\newcounter{proof}%
\if@thmmarks
\newcounter{currproofctr}%
\newcounter{endproofctr}%
\fi
\newcommand{\openbox}{\leavevmode
\hbox to.77778em{%
\hfil\vrule
\vbox to.675em{\hrule width.6em\vfil\hrule}%
\vrule\hfil}}
\gdef\proofSymbol{\openbox}
\newcommand{\proofname}{Proof}
\newenvironment{proof}[1][\proofname]{
\th@nonumberplain
\def\theorem@headerfont{\itshape}%
\normalfont
\theoremsymbol{\ensuremath{_\blacksquare}}
\@thm{proof}{proof}{#1}}%
{\@endtheorem}
}% end of option amsthm **********************************************
\newskip\thm@topsepadd
\gdef\newtheorem{%
\@ifstar
{\expandafter\@ifundefined{th@nonumber\the\theorem@style}%
{\PackageError{\basename}{Theorem style {nonumber\the\theorem@style}
undefined (you need it here for newtheorem*) }\@ehc}%
{}%
\edef\@tempa{{nonumber\the\theorem@style}}%
\expandafter\theorem@@style\@tempa\@newtheorem}%
{\edef\@tempa{{\the\theorem@style}}%
\expandafter\theorem@@style\@tempa\@newtheorem}}
\gdef\renewtheorem{%
\@ifstar
{\expandafter\@ifundefined{th@nonumber\the\theorem@style}%
{\PackageError{\basename}{Theorem style {nonumber\the\theorem@style}
undefined (you need it here for newtheorem*) }\@ehc}%
{}%
\edef\@tempa{{nonumber\the\theorem@style}}%
\expandafter\theorem@@style\@tempa\@renewtheorem}%
{\edef\@tempa{{\the\theorem@style}}%
\expandafter\theorem@@style\@tempa\@renewtheorem}}
\gdef\@newtheorem#1{%
\thm@tempiffalse
\expandafter\@ifdefinable\csname #1\endcsname
{\expandafter\@ifdefinable\csname #1*\endcsname
{\thm@tempiftrue
\thm@definelthm{#1}% for lists
\if@thmmarks
\expandafter\@ifundefined{c@curr#1ctr}%
{\newcounter{curr#1ctr}}{}%
\expandafter\@ifundefined{c@end#1ctr}%
{\newcounter{end#1ctr}}{}%
\fi
\expandafter\protected@xdef\csname #1Symbol\endcsname{\the\theoremsymbol}%
\expandafter\protected@xdef\csname #1@postwork\endcsname{%
\the\theorempostwork}%
\expandafter\gdef\csname#1\endcsname{%
\let\thm@starredenv\@undefined
\csname mkheader@#1\endcsname}%
\expandafter\gdef\csname#1*\endcsname{%
\let\thm@starredenv\relax
\csname mkheader@#1\endcsname}%
\def\@tempa{\expandafter\noexpand\csname end#1\endcsname}%
\expandafter\xdef\csname end#1*\endcsname{\@tempa}%
\expandafter\xdef\csname setparms@#1\endcsname
{\noexpand \def \noexpand \theorem@headerfont
{\the\theoremheaderfont\noexpand\theorem@checkbold}%
\noexpand \def \noexpand \theorem@separator
{\the\theoremseparator}%
\noexpand \def \noexpand \theorem@prework
{\the\theoremprework}%
\noexpand \def \noexpand \theorem@indent
{\the\theoremindent}%
\the \theorembodyfont
\noexpand\csname th@\the \theorem@@style \endcsname}%
\expandafter\xdef\csname th@class@#1\endcsname
{\noexpand\theoremstyle{\the\theorem@style}%
\noexpand\theoremheaderfont{\the\theoremheaderfont}%
\noexpand\theorembodyfont{\the \theorembodyfont}%
\noexpand\theoremseparator{\the\theoremseparator}%
\noexpand\theoremprework{\the\theoremprework}%
\noexpand\theorempostwork{\the\theorempostwork}%
\noexpand\theoremindent\the\theoremindent%
\noexpand\theoremnumbering{\the\theoremnumbering}%
\noexpand\theoremsymbol{\the\theoremsymbol}}%
}}%
\@ifnextchar[{\@othm{#1}}{\@nthm{#1}}}% MUST NOT BE IN ANY IF !!!
\gdef\@renewtheorem#1{%
\expandafter\@ifundefined{#1}%
{\PackageError{\basename}{Theorem style #1 undefined}\@ehc}%
{}%
\expandafter\let\csname #1\endcsname\relax
\expandafter\let\csname #1*\endcsname\relax
\@newtheorem{#1}}
\gdef\@nthm#1#2{%
\expandafter\protected@xdef\csname num@addtheoremline#1\endcsname{%
\noexpand\@num@addtheoremline{#1}{#2}}%
\expandafter\protected@xdef\csname nonum@addtheoremline#1\endcsname{%
\noexpand\@nonum@addtheoremline{#1}{#2}}%
\theoremkeyword{#2}%
\expandafter\protected@xdef\csname #1Keyword\endcsname
{\the\theoremkeyword}%
\@ifnextchar[{\@xnthm{#1}{#2}}{\@ynthm{#1}{#2}}}
\gdef\@othm#1[#2]#3{%
\@ifundefined{c@#2}{\@nocounterr{#2}}%
{\ifthm@tempif
\global\@namedef{the#1}{\@nameuse{the#2}}%
\expandafter\protected@xdef\csname num@addtheoremline#1\endcsname{%
\noexpand\@num@addtheoremline{#1}{#3}}%
\expandafter\protected@xdef\csname nonum@addtheoremline#1\endcsname{%
\noexpand\@nonum@addtheoremline{#1}{#3}}%
\theoremkeyword{#3}%
\expandafter\protected@xdef\csname #1Keyword\endcsname
{\the\theoremkeyword}%
\expandafter\gdef\csname mkheader@#1\endcsname
{\csname setparms@#1\endcsname
\@thm{#1}{#2}{#3}}%
\global\@namedef{end#1}{\@endtheorem}\fi}}
\gdef\@xnthm#1#2[#3]{%
\ifthm@tempif
\expandafter\@ifundefined{c@#1}%
{\@definecounter{#1}}{}%
\@newctr{#1}[#3]%
\expandafter\xdef\csname the#1\endcsname{%
\expandafter\noexpand\csname the#3\endcsname \@thmcountersep
{\noexpand\csname\the\theoremnumbering\endcsname{#1}}}%
\expandafter\gdef\csname mkheader@#1\endcsname
{\csname setparms@#1\endcsname
\@thm{#1}{#1}{#2}}%
\global\@namedef{end#1}{\@endtheorem}\fi}
\gdef\@ynthm#1#2{%
\ifthm@tempif
\expandafter\@ifundefined{c@#1}%
{\@definecounter{#1}}{}%
\expandafter\xdef\csname the#1\endcsname
{\noexpand\csname\the\theoremnumbering\endcsname{#1}}%
\expandafter\gdef\csname mkheader@#1\endcsname
{\csname setparms@#1\endcsname
\@thm{#1}{#1}{#2}}%
\global\@namedef{end#1}{\@endtheorem}\fi}
\gdef\@thm#1#2#3{%
\if@thmmarks
\stepcounter{end\InTheoType ctr}%
\fi
\renewcommand{\InTheoType}{#1}%
\if@thmmarks
\stepcounter{curr#1ctr}%
\setcounter{end#1ctr}{0}%
\fi
\refstepcounter{#2}%
\theorem@prework
\thm@topsepadd \theorempostskipamount % cf. latex.ltx: \@trivlist
\ifvmode \advance\thm@topsepadd\partopsep\fi
\trivlist
\@topsep \theorempreskipamount
\@topsepadd \thm@topsepadd % used by \@endparenv
\advance\linewidth -\theorem@indent
\advance\@totalleftmargin \theorem@indent
\parshape \@ne \@totalleftmargin \linewidth
\@ifnextchar[{\@ythm{#1}{#2}{#3}}{\@xthm{#1}{#2}{#3}}}
\def\@xthm#1#2#3{%
\@begintheorem{#3}{\csname the#2\endcsname}%
\ifx\thm@starredenv\@undefined
\thm@thmcaption{#1}{{#3}{\csname the#2\endcsname}{}}\fi
\ignorespaces}
\def\@ythm#1#2#3[#4]{%
\expandafter\global\expandafter\def\csname#1name\endcsname{#4}%
\@opargbegintheorem{#3}{\csname the#2\endcsname}{#4}%
\ifx\thm@starredenv\@undefined
\thm@thmcaption{#1}{{#3}{\csname the#2\endcsname}{#4}}\fi%
\ignorespaces}
\gdef\@endtheorem{%
\endtrivlist
\csname\InTheoType @postwork\endcsname
}
\DeclareOption{framed}{%*********************************
\newtoks\shadecolor
\shadecolor{gray}
\let\theoremframecommand\relax
\def\newshadedtheorem#1{%
\expandafter\global\expandafter\xdef\csname#1@shadecolor\endcsname{%
\the\shadecolor}%
\ifx\theoremframecommand\relax
\expandafter\global\expandafter\xdef\csname#1@framecommand\endcsname{%
\noexpand\psframebox[fillstyle=solid,
fillcolor=\csname#1@shadecolor\endcsname,
linecolor=\csname#1@shadecolor\endcsname]}%
\else
\expandafter\global\expandafter\let\csname#1@framecommand\endcsname%
\theoremframecommand%
\fi
\theoremprework{%
\def\FrameCommand{\csname#1@framecommand\endcsname}\framed}%
\theorempostwork{\endframed}%
\newtheorem{#1}%
}
\def\newframedtheorem#1{%
\theoremprework{\framed}%
\theorempostwork{\endframed}%
\newtheorem{#1}%
}
}% end of option amsthm **********************************************
\def\thm@thmcaption#1#2{\thm@@thmcaption{#1}#2}
\def\thm@@thmcaption#1#2#3#4{%
\thm@parseforwriting{#2}%
\let\thm@tmpii\thm@tmp%
\thm@parseforwriting{#4}%
\edef\thm@t{{\thm@tmpii}{#3}{\thm@tmp}}%
\addcontentsline{thm}{#1}{\thm@t}}
\def\thm@@thmline@noname#1#2#3#4{%
\@dottedtocline{-2}{0em}{2.3em}%
{\protect\numberline{#2}#3}%
{#4}}
\def\thm@@thmline@name#1#2#3#4{%
\@dottedtocline{-2}{0em}{2.3em}%
{#1 \protect\numberline{#2}#3}%
{#4}}
\def\thm@thmline#1#2{\thm@@thmline#1{#2}}
\long\def\thm@lgobble#1#2{\ignorespaces}
\def\theoremlistall{%
\let\thm@@thmlstart=\relax
\let\thm@@thmlend=\relax
\let\thm@@thmline=\thm@@thmline@noname}
\def\theoremlistallname{%
\let\thm@@thmlstart=\relax
\let\thm@@thmlend=\relax
\let\thm@@thmline=\thm@@thmline@name}
\def\theoremlistoptional{%
\let\thm@@thmlstart=\relax
\let\thm@@thmlend=\relax
\def\thm@@thmline##1##2##3##4{%
\ifx\empty ##3%
\else
\thm@@thmline@noname{##1}{##2}{##3}{##4}%
\fi}}
\def\theoremlistoptname{%
\let\thm@@thmlstart=\relax
\let\thm@@thmlend=\relax
\def\thm@@thmline##1##2##3##4{%
\ifx\empty ##3%
\else%
\thm@@thmline@name{##1}{##2}{##3}{##4}%
\fi}}
\DeclareOption{hyperref}{% **********************************************
\def\thm@@thmline@noname#1#2#3#4#5{%
\ifx\\#5\\%
\@dottedtocline{-2}{0em}{2.3em}%
{\protect\numberline{#2}#3}%
{#4}%
\else
\ifHy@linktocpage\relax\relax
\@dottedtocline{-2}{0em}{2.3em}%
{\protect\numberline{#2}#3}%
{\hyper@linkstart{link}{#5}{#4}\hyper@linkend}
\else
\@dottedtocline{-2}{0em}{2.3em}%
{\hyper@linkstart{link}{#5}{\protect\numberline{#2}#3}%
\hyper@linkend}%
{#4}%
\fi
\fi}%
\def\thm@@thmline@name#1#2#3#4#5{%
\ifx\\#5\\%
\@dottedtocline{-2}{0em}{2.3em}%
{#1 \protect\numberline{#2}#3}%
{#4}
\else
\ifHy@linktocpage\relax\relax
\@dottedtocline{-2}{0em}{2.3em}%
{#1 \protect\numberline{#2}#3}%
{\hyper@linkstart{link}{#5}{#4}\hyper@linkend}%
\else
\@dottedtocline{-2}{0em}{2.3em}%
{\hyper@linkstart{link}{#5}%
{#1 \protect\numberline{#2}#3}\hyper@linkend}%
{#4}%
\fi
\fi}
\def\thm@thmline#1#2#3{\thm@@thmline#1{#2}{#3}}
\long\def\thm@lgobble#1#2#3{\ignorespaces}
\def\theoremlistoptional{%
\let\thm@@thmlstart=\relax
\let\thm@@thmlend=\relax
\def\thm@@thmline##1##2##3##4##5{%
\ifx\empty ##3%
\else%
\thm@@thmline@noname{##1}{##2}{##3}{##4}{##5}%
\fi}}
\def\theoremlistoptname{%
\let\thm@@thmlstart=\relax
\let\thm@@thmlend=\relax
\def\thm@@thmline##1##2##3##4##5{%
\ifx\empty ##3%
\else%
\thm@@thmline@name{##1}{##2}{##3}{##4}{##5}%
\fi}}
}% end of option hyperref *********************************************
\def\theoremlisttype#1{%
\@ifundefined{thm@thml@#1}%
{\PackageError{\basename}{Listtype #1 not defined}\@eha}%
{\csname thm@thml@#1\endcsname}}
\def\thm@thml@all{\theoremlistall}
\def\thm@thml@opt{\theoremlistoptional}
\def\thm@thml@optname{\theoremlistoptname}
\def\thm@thml@allname{\theoremlistallname}
\def\newtheoremlisttype#1#2#3#4{%
\@ifundefined{thm@thml@#1}%
{\expandafter\gdef\csname thm@thml@#1\endcsname{%
\def\thm@@thmlstart{#2}%
\def\thm@@thmline####1####2####3####4{#3}%
\def\thm@@thmlend{#4}}%
}{\PackageError{\basename}{list type #1 already defined}\@eha}}
\def\renewtheoremlisttype#1#2#3#4{%
\@ifundefined{thm@thml@#1}%
{\PackageError{\basename}{List type #1 not defined}\@ehc}{}%
\expandafter\let\csname thm@thml@#1\endcsname\relax
\newtheoremlisttype{#1}{#2}{#3}{#4}}
\def\thm@definelthm#1{%
\expandafter\gdef\csname l@#1\endcsname{\thm@lgobble}%
\expandafter\gdef\csname thm@listdo#1\endcsname{\thm@lgobble}}
\long\def\thm@inlistdo#1#2{#2}%
\def\listtheorems#1{\begingroup
\c@tocdepth=-2%
\def\thm@list{#1}\thm@processlist
\endgroup}
\def\thm@processlist{%
\begingroup
\typeout{** Generating table of \thm@list}%
\def\contentsline##1{%
\expandafter\@ifundefined{l@##1}{\thm@lgobble}{\csname l@##1\endcsname}}%
\thm@@thmlstart
\@for\thm@currentlist:=\thm@list\do{%
\ifx\thm@currentlist\@empty\else
\expandafter\gdef\csname l@\thm@currentlist\endcsname{\thm@thmline}%
\expandafter\gdef\csname thm@listdo\thm@currentlist\endcsname{\thm@inlistdo}%
\fi
}%
\@input{\jobname .thm}%
\thm@@thmlend
\@for\thm@currentlist:=\thm@list\do{%
\ifx\thm@currentlist\@empty\else
\expandafter\gdef\csname l@\thm@currentlist\endcsname{\thm@lgobble}%
\expandafter\gdef\csname thm@listdo\thm@currentlist\endcsname{\thm@lgobble}%
\fi
}%
\endgroup}
\def\thm@enablelistoftheorems{%
\begingroup
\makeatletter
\if@filesw
\expandafter\newwrite\csname tf@thm\endcsname%
\immediate\openout \csname tf@thm\endcsname \jobname.thm\relax%
\fi
\@nobreakfalse
\endgroup}
\def\addtheoremline{\@ifstar{\nonum@addtheoremline}{\num@addtheoremline}}
\def\nonum@addtheoremline#1{\csname nonum@addtheoremline#1\endcsname}%
\def\num@addtheoremline#1{\csname num@addtheoremline#1\endcsname}%
\def\@nonum@addtheoremline#1#2#3{%
\thm@parseforwriting{#3}%
\edef\thm@t{{#2}{}{\thm@tmp}}%
\addcontentsline{thm}{#1}{\thm@t}}
\def\@num@addtheoremline#1#2#3{%
\thm@parseforwriting{#3}%
\edef\thm@t{{#2}{\csname the#1\endcsname}{\thm@tmp}}%
\addcontentsline{thm}{#1}{\thm@t}}%
\long\def\addtotheoremfile{%
\@ifnextchar[{\@@addtotheoremfile}{\@addtotheoremfile}}
\long\def\@addtotheoremfile#1{%
\thm@parseforwriting{#1}%
\protected@write\@auxout%
{}{\string\@writefile{thm}{\thm@tmp}}}
\long\def\@@addtotheoremfile[#1]#2{%
\thm@parseforwriting{#2}%
\protected@write\@auxout%
{}{\string\@writefile{thm}{\string\theoremlistdo{#1}{\thm@tmp}}}}
\long\def\theoremlistdo#1#2{\expandafter\@ifundefined{thm@listdo#1}%
\relax{\csname thm@listdo#1\endcsname{#1}{#2}}}
\AtEndDocument{\thm@enablelistoftheorems}
\def\thm@meaning#1->#2\relax{#2}% remove "macro: ->"
\long\def\thm@parseforwriting#1{%
\def\thm@tmp{#1}%
\edef\thm@tmp{\expandafter\thm@meaning\meaning\thm@tmp\relax}}
\def\theorem@checkbold{\if b\expandafter\@car\f@series\@nil\boldmath\fi}
\def\@greek#1{\theorem@checkbold%
\ifcase#1\or$\alpha$\or$\beta$\or$\gamma$\or$\delta$\or$\varepsilon$%
\or$\zeta$\or$\eta$\or$\vartheta$\or$\iota$\or$\kappa$\or$\lambda$\or$%
\mu$\or$\nu$\or$\xi$\or$ o$\or$\varpi$\or$\varrho$\or$\varsigma$\or$\tau$%
\or$\upsilon$\or$\varphi$\or$\chi$\or$\psi$\or$\omega$\else\@ctrerr\fi}
\def\@Greek#1{\theorem@checkbold%
\ifcase#1\or A\or B\or$\Gamma$\or$\Delta$\or E%
\or Z\or H\or$\Theta$\or I\or K\or$\Lambda$\or M%
\or N\or$\Xi$\or O\or$\Pi$\or P\or$\Sigma$\or T%
\or$\Upsilon$\or$\Phi$\or X\or$\Psi$\or$\Omega$\else\@ctrerr\fi}
\def\greek#1{\@greek{\csname c@#1\endcsname}}
\def\Greek#1{\@Greek{\csname c@#1\endcsname}}
\ProcessOptions\relax
\theoremlistall
\ifx\thm@noconfig\@undefined
\InputIfFileExists{ntheorem.cfg}%
{\PackageInfo{\basename}{Local config file ntheorem.cfg used}}%
{\ifx\thm@usestd\@undefined%
\else%
\InputIfFileExists{ntheorem.std}%
{\PackageInfo{\basename}{Standard config file ntheorem.std used}}{}
\fi}
\fi
\endinput
%%
%% End of file `ntheorem.sty'.