%% %% 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'.