summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/hyperref/ntheorem-hyper.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/hyperref/ntheorem-hyper.sty
Initial commit
Diffstat (limited to 'macros/latex/contrib/hyperref/ntheorem-hyper.sty')
-rw-r--r--macros/latex/contrib/hyperref/ntheorem-hyper.sty920
1 files changed, 920 insertions, 0 deletions
diff --git a/macros/latex/contrib/hyperref/ntheorem-hyper.sty b/macros/latex/contrib/hyperref/ntheorem-hyper.sty
new file mode 100644
index 0000000000..1db77c3170
--- /dev/null
+++ b/macros/latex/contrib/hyperref/ntheorem-hyper.sty
@@ -0,0 +1,920 @@
+%%
+%% This is file `ntheorem.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% ntheorem.dtx (with options: `package')
+%%
+%%
+%% ### WARNING: =============================================================
+%%
+%% This file is a patched version that works (it seems) with hyperref.
+%% Hyperref's \contentsline version breaks with ntheorem because it puts 3
+%% arguments in the text field (e.g.: \contentsline{def}{{def}{1}{foo}}{21})
+%%
+%% To work around the problem, the following steps are implemented:
+%% 1/ Don't use hyperref's contentsline: restore the normal definition at the
+%% beginning of \thm@processlist.
+%% 2/ Let the different versions of \thm@@thmline take a 5th argument, the one
+%% provided by hyperref.
+%% 3/ Let \thm@lgobble take a 3rd argument, the one provided by hyperref.
+%% 4/ Do the hyperlinks manually in the different versions of \thm@@thmline
+%%
+%% You'll find comments starting with `%%DV' around my changes in the code.
+%%
+%%
+%% Didier Verna <verna@inf.enst.fr>
+%%
+%% ==========================================================================
+%%
+%% 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{1998/12/03}
+\def\docdate{1998/12/03}
+\def\fileversion{1.14}
+\def\basename{ntheorem-hyper}
+%% \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-hyper}[\filedate \space\fileversion]
+\newif\if@thmmarks\@thmmarksfalse
+\newif\ifthm@tempif
+\DeclareOption{thmmarks}{%*********************************
+\PackageInfo{\basename}{Option `thmmarks' loaded}%
+\@thmmarkstrue
+\newcounter{endNonectr}
+\newcounter{currNonectr}
+\newif\ifsetendmark\setendmarktrue
+\gdef\endtrivlist{%
+ \@endtrivlist{\PotEndMark{\hbox{}\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
+ \hbox{}\nobreak\hfill\nobreak\csname\InTheoType Symbol\endcsname
+ \setendmarkfalse \fi}%
+ \ifsetendmark\OrganizeTheoremSymbol\else\global\setendmarktrue\fi}
+\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}}}%
+\newskip\mysavskip
+\gdef\@bbsphack{%
+ \mysavskip\lastskip
+ \unskip}
+\gdef\@eesphack{%
+ \ifdim\mysavskip>\z@
+ \vskip\mysavskip \else\fi}
+%% \begin{macrocode}
+\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{amsmath}{%
+\if@thmmarks
+ \PackageInfo{\basename}{Option `amsmath' 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%
+ \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 % <<<<<<<<<
+ \global\@ignoretrue}
+\expandafter\let\csname endgather*\endcsname\endgather
+\def\endalign{%
+ \ifingather@\else % <<<<<<<<<
+ \TagsPlusEndmarks\fi % <<<<<<<<<
+ \math@cr
+ \black@\totwidth@
+ \egroup
+ \ifingather@
+ \restorealignstate@
+ \egroup
+ \nonumber
+ \ifnum0=`{\fi}%
+ \else
+ $$%
+ \RestoreTags % <<<<<<<<<
+ \fi
+ \global\@ignoretrue}
+\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@{%
+ \@eqnswfalse\tag@true\tagsleft@false
+ \rendmultline@}
+\def\rendmultline@{%
+ \TagsPlusEndmarks % <<<<<<<<<
+ \iftag@
+ \begingroup
+ \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
+ \endgroup
+ \else
+ \hskip\multlinegap
+ \fi
+ \hfilneg
+ \math@cr
+ \egroup$$%
+ \RestoreTags} % <<<<<<<<<
+\def\[{%
+ \relax\ifmmode% \RIfM@ <<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ \@badmath
+ \else
+ \DN@{%
+ $$%
+ \ingather@true
+ \inany@true
+ \def\\{\@amsmath@err{\Invalid@@\\}\@eha}%
+ \tabskip\@mathmargin
+ \halign to \displaywidth\bgroup
+ \if@fleqn\else\hfil\fi
+ \setboxz@h{$\m@th\displaystyle{####}$}%
+ \global\totwidth@\wdz@
+ \global\thm@amstmpdepth\dp0% <<<<<<<<<<<<
+ \boxz@
+ \tabskip 0pt plus 1000pt%<<<<<<<<<<<<<<
+ & ####% <<<<<<<<<<<<<<<<<<<<<<<<
+ \tabskip 0pt%
+ \cr
+ }%
+ \@xp\next@
+ \fi}
+\def\]{%
+ \relax\ifmmode% \RIfM@ <<<<<<<<<<
+ \DN@{%
+ \PotEndMark{&\raisebox{-\thm@amstmpdepth}}% <<<<<<<<<
+ \crcr
+ \black@\totwidth@
+ \egroup
+ $$%
+ }%
+ \@xp\next@
+ \else
+ \@badmath
+ \fi}
+\def\equation{\gather\def\\{\@amsmath@err{\Invalid@@\\}\@eha}}
+\def\endequation{\endgather}
+\renewenvironment{equation*}{\equation}{\nonumber\endequation}
+\else\PackageError{\basename}{Option amsmath cannot be used without
+ option thmmarks.}\@eha
+\fi
+}% end of option amsmath
+\let\thm@usestd\@undefined
+\DeclareOption{standard}{\let\thm@usestd\relax}
+\let\thm@noconfig\@undefined
+\DeclareOption{noconfig}{\let\thm@noconfig\relax}
+\gdef\InTheoType{None}
+\def\output@None{None}
+\def\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\hbox to \textwidth{\theorem@headerfont ##1\
+ ##2\theorem@separator\hfill}}%
+ {\item\hbox to \textwidth{\theorem@headerfont ##1\ ##2\
+ (##3)\theorem@separator\hfill}}
+\newtheoremstyle{change}%
+ {\item[\hskip\labelsep \theorem@headerfont ##2\ ##1\theorem@separator]}%
+ {\item[\hskip\labelsep \theorem@headerfont ##2\ ##1\ (##3)\theorem@separator]}
+\newtheoremstyle{changebreak}%
+ {\item\hbox to \textwidth{\theorem@headerfont ##2\
+ ##1\theorem@separator\hfill}}%
+ {\item\hbox to \textwidth{\theorem@headerfont ##2\ ##1\
+ (##3)\theorem@separator\hfill}}
+\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\hbox to \textwidth{\theorem@headerfont \llap{##2}\hskip\labelsep
+ ##1\theorem@separator\hfill}}%
+ {\item\hbox to \textwidth{\theorem@headerfont
+ \llap{##2}\hskip\labelsep
+ ##1\ (##3)\theorem@separator\hfill}}
+\newtheoremstyle{nonumberplain}%
+ {\item[\theorem@headerfont\hskip\labelsep ##1\theorem@separator]}%
+ {\item[\theorem@headerfont\hskip \labelsep ##1\ (##3)\theorem@separator]}
+\newtheoremstyle{nonumberbreak}%
+ {\item\hbox to \textwidth{\theorem@headerfont\hskip\labelsep
+ ##1\theorem@separator\hfill}}%
+ {\item\hbox to \textwidth{\theorem@headerfont\hskip\labelsep
+ ##1\ (##3)\theorem@separator\hfill}}
+\newtheoremstyle{empty}%
+ {\item~\hfill}%
+ {\item\hbox to \textwidth{\theorem@headerfont##3\hfill}}
+\@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\theoremstyle{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\theoremsymbol
+\global\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
+ {\edef\@tempa{{nonumber\the\theorem@style}}%
+ \expandafter\theorem@@style\@tempa}%
+ {\edef\@tempa{{\the\theorem@style}}%
+ \expandafter\theorem@@style\@tempa}%
+ \@newtheorem}
+
+\gdef\renewtheorem{%
+ \@ifstar
+ {\edef\@tempa{{nonumber\the\theorem@style}}%
+ \expandafter\theorem@@style\@tempa}%
+ {\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\xdef\csname #1Symbol\endcsname{\the\theoremsymbol}%
+ \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@indent
+ {\the\theoremindent}%
+ \the \theorembodyfont
+ \noexpand\csname th@\the \theorem@@style \endcsname}}}%
+ \@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\xdef\csname num@addtheoremline#1\endcsname{%
+ \noexpand\@num@addtheoremline{#1}{#2}}%
+ \expandafter\xdef\csname nonum@addtheoremline#1\endcsname{%
+ \noexpand\@nonum@addtheoremline{#1}{#2}}%
+ \expandafter\xdef\csname output@#1\endcsname{#2}%
+ \@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\xdef\csname num@addtheoremline#1\endcsname{%
+ \noexpand\@num@addtheoremline{#1}{#3}}%
+ \expandafter\xdef\csname nonum@addtheoremline#1\endcsname{%
+ \noexpand\@nonum@addtheoremline{#1}{#3}}%
+ \expandafter\xdef\csname output@#1\endcsname{#3}%
+ \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}%
+ \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}
+\DeclareOption{thref}{%*********************************
+ \PackageInfo{\basename}{Option `thref' loaded}%
+\def\label#1{
+ \@ifnextchar[%]
+ {\label@optarg{#1}}%
+ {\label@optarg{#1}%
+ [\csname output@\InTheoType\endcsname]}}
+\def\label@optarg#1[#2]{\@bsphack
+ \protected@write\@auxout{}%
+ {\string\newlabel{#1}{{\@currentlabel}{\thepage}}[#2]}%
+ \@esphack}
+\def\@newl@bel#1#2#3{%
+ \@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@labeltype#1#2}{\relax}%]
+ }
+\def\set@labeltype#1#2[#3]{\global\@namedef{#1@#2@type}{#3}}
+\@ifpackageloaded{babel}%
+ {\message{ntheorem-babel adapation loaded}%
+ \def\newlabel#1#2{%
+ \@ifnextchar[{\nth@bbl@newlabel{#1}{#2}}%]
+ {\nth@bbl@newlabel{#1}{#2}[None]}}%
+ \def\nth@bbl@newlabel#1#2[#3]{%
+ \@safe@activestrue\bbl@newlabel{#1}{#2}[#3]\@safe@activesfalse}}%
+ \relax
+\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
+\def\thm@thmcaption#1#2{\thm@@thmcaption{#1}#2}
+\def\thm@@thmcaption#1#2#3#4{%
+ \thm@parseforwriting{#4}%
+ \edef\thm@t{{#2}{#3}{\thm@tmp}}%
+ \addcontentsline{thm}{#1}{\thm@t}}
+\def\theoremlistall{%
+ \let\thm@@thmlstart=\relax
+ \let\thm@@thmlend=\relax
+%%DV Use a fith argument (supplied by hyperref) and do the links manually
+ \def\thm@@thmline##1##2##3##4##5{%
+ \ifx\\##5\\%
+ \@dottedtocline{-2}{0em}{2.3em}%
+ {\protect\numberline{##2}##3}%
+ {##4}
+ \else
+ \ifhy@linktocpage
+ \@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}}
+%%DV \def\thm@@thmline##1##2##3##4{%
+%%DV \@dottedtocline{-2}{0em}{2.3em}%
+%%DV {\protect\numberline{##2}##3}%
+%%DV {##4}}}
+\def\theoremlistallname{%
+ \let\thm@@thmlstart=\relax
+ \let\thm@@thmlend=\relax
+%%DV Use a fith argument (supplied by hyperref) and do the links manually
+ \def\thm@@thmline##1##2##3##4##5{%
+ \ifx\\##5\\%
+ \@dottedtocline{-2}{0em}{2.3em}%
+ {##1 \protect\numberline{##2}##3}%
+ {##4}
+ \else
+ \ifhy@linktocpage
+ \@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}}
+%%DV \def\thm@@thmline##1##2##3##4{%
+%%DV \@dottedtocline{-2}{0em}{2.3em}%
+%%DV {##1 \protect\numberline{##2}##3}%
+%%DV {##4}}}
+\def\theoremlistoptional{%
+ \let\thm@@thmlstart=\relax
+ \let\thm@@thmlend=\relax
+%%DV Use a fith argument (supplied by hyperref) and do the links manually
+ \def\thm@@thmline##1##2##3##4##5{%
+ \ifx\empty ##3%
+ \else%
+ \ifx\\##5\\%
+ \@dottedtocline{-2}{0em}{2.3em}%
+ {\protect\numberline{##2}##3}%
+ {##4}
+ \else
+ \ifhy@linktocpage
+ \@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
+ \fi}}
+%%DV \def\thm@@thmline##1##2##3##4{%
+%%DV \ifx\empty ##3%
+%%DV \else%
+%%DV \@dottedtocline{-2}{0em}{2.3em}%
+%%DV {\protect\numberline{##2}##3}%
+%%DV {##4}%
+%%DV \fi}}
+\def\theoremlistoptname{%
+ \let\thm@@thmlstart=\relax
+ \let\thm@@thmlend=\relax
+%%DV Use a fith argument (supplied by hyperref) and do the links manually
+ \def\thm@@thmline##1##2##3##4##5{%
+ \ifx\empty ##3%
+ \else
+ \ifx\\##5\\%
+ \@dottedtocline{-2}{0em}{2.3em}%
+ {##1 \protect\numberline{##2}##3}%
+ {##4}
+ \else
+ \ifhy@linktocpage
+ \@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
+ \fi}}
+%%DV \def\thm@@thmline##1##2##3##4{%
+%%DV \ifx\empty ##3%
+%%DV \else%
+%%DV \@dottedtocline{-2}{0em}{2.3em}%
+%%DV {##1 \protect\numberline{##2}##3}%
+%%DV {##4}%
+%%DV \fi}}
+\theoremlistall
+\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}}
+%%DV Use a third argument (supplied by hyperref)
+\def\thm@thmline#1#2#3{\thm@@thmline#1{#2}{#3}}
+%%DV\def\thm@thmline#1#2{\thm@@thmline#1{#2}}
+%%DV Use a third argument (supplied by hyperref)
+\long\def\thm@lgobble#1#2#3{\ignorespaces}
+%%DV\long\def\thm@lgobble#1#2{\ignorespaces}
+\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}%
+%%DV: don't use hyperref's \contentsline !! Use the normal definition.
+ \def\contentsline##1{\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{\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
+\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'.