diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:56:56 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:56:56 +0000 |
commit | a95a5bf857bfe763e22fc8d0b9b9279f9291d7da (patch) | |
tree | 1f949a8d1202dd351313448467d5ddd6f73adcf1 /Master/texmf-dist/tex/latex/hyperref/ntheorem-hyper.sty | |
parent | 8d9974705d5deaf4314ccf44b2b5bb349c3f768b (diff) |
hyperref
git-svn-id: svn://tug.org/texlive/trunk@985 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/hyperref/ntheorem-hyper.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/hyperref/ntheorem-hyper.sty | 920 |
1 files changed, 920 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/hyperref/ntheorem-hyper.sty b/Master/texmf-dist/tex/latex/hyperref/ntheorem-hyper.sty new file mode 100644 index 00000000000..1db77c3170a --- /dev/null +++ b/Master/texmf-dist/tex/latex/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'. |