1043 lines
37 KiB
TeX
Executable File
1043 lines
37 KiB
TeX
Executable File
%%
|
|
%% 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{2004/09/20}
|
|
\def\docdate{2004/09/20}
|
|
\def\fileversion{1.24}
|
|
\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{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@display\@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{%
|
|
\newtheorem@i%
|
|
}
|
|
|
|
\gdef\newtheorem@i{%
|
|
\@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}}%
|
|
}}%
|
|
\theoremprework{\relax}%
|
|
\theorempostwork{\relax}%
|
|
\@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@i{#1}%
|
|
}
|
|
\def\newframedtheorem#1{%
|
|
\theoremprework{\framed}%
|
|
\theorempostwork{\endframed}%
|
|
\newtheorem@i{#1}%
|
|
}
|
|
}% end of option framed **********************************************
|
|
\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'.
|