summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/thmtools
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2008-02-18 00:22:07 +0000
committerKarl Berry <karl@freefriends.org>2008-02-18 00:22:07 +0000
commite2041bab726766a5193e515f8a7e1761613d1222 (patch)
treef757513bdd2ecb46dec6a6160b3bccfd1e75b0d4 /Master/texmf-dist/source/latex/thmtools
parent957aeb141e1e62fc19b0aedb3bc36ad058226250 (diff)
new latex package thmtools (17feb08)
git-svn-id: svn://tug.org/texlive/trunk@6667 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/thmtools')
-rw-r--r--Master/texmf-dist/source/latex/thmtools/aliasctr.dtx145
-rw-r--r--Master/texmf-dist/source/latex/thmtools/thm-autoref.dtx100
-rw-r--r--Master/texmf-dist/source/latex/thmtools/thm-kv.dtx128
-rw-r--r--Master/texmf-dist/source/latex/thmtools/thm-listof.dtx117
-rw-r--r--Master/texmf-dist/source/latex/thmtools/thm-patch.dtx174
-rw-r--r--Master/texmf-dist/source/latex/thmtools/thm-restate.dtx178
-rw-r--r--Master/texmf-dist/source/latex/thmtools/thmtools.ins46
-rw-r--r--Master/texmf-dist/source/latex/thmtools/unique.dtx190
8 files changed, 1078 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/thmtools/aliasctr.dtx b/Master/texmf-dist/source/latex/thmtools/aliasctr.dtx
new file mode 100644
index 00000000000..9807e4ff2ab
--- /dev/null
+++ b/Master/texmf-dist/source/latex/thmtools/aliasctr.dtx
@@ -0,0 +1,145 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2005-7 by Ulrich M. Schwarz
+%
+% This file may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, version 1.3a. The full license text
+% is available from http://www.latex-project.org/
+%
+% \fi
+%
+%\iffalse
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{aliasctr}
+
+\usepackage[T1]{fontenc}
+\usepackage{fourier}
+\usepackage[scaled=0.87]{luximono, helvet}
+\newcommand\pkg{\textsf}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{aliasctr.sty}
+\author{Ulrich M. Schwarz\thanks{ulmi at absatzen dot de}}
+\title{The \pkg{aliasctr} package\thanks{%
+ This documents \pkg{aliasctr}~\fileversion, dated~\filedate.
+ Newer versions might be found at http://absatzen.de
+}}
+\begin{document}
+ \maketitle
+ \DocInput{aliasctr.dtx}
+\end{document}
+%</driver>
+%<*code>
+%\fi
+% \iffalse $Id: aliasctr.dtx,v 1.2 2007/07/29 09:29:23 ulmi Exp $\fi
+% \section{Usage}
+% |\@counteralias{#1}{#2}| makes |#1| a counter that uses |#2|'s count register.
+% This is useful for things like \pkg{hyperref}'s |\autoref|, which otherwise
+% can't distinguish theorems and definitions if they share a counter.
+%
+% For detailed information, see Die TeXnische Kom\"odie 3/2006.
+%
+% \section{Implementation}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{aliasctr}[2006/01/22 v0.1 counter aliasing (ulmi)]
+% \end{macrocode}
+% \begin{macro}{\@addtoreset}
+% add |\@elt{#1}| to |\cl@#2|.
+% This differs from the kernel implementation insofar as we trail the
+% cl lists until we find one that is empty or starts with |\@elt|.
+% \begin{macrocode}
+\def\aliasctr@f@llow#1#2\@nil#3{%
+ \ifx#1\@elt
+ \noexpand #3%
+ \else
+ \expandafter\aliasctr@f@llow#1\@elt\@nil{#1}%
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand\aliasctr@follow[1]{%
+ \expandafter\aliasctr@f@llow
+% \end{macrocode}
+% Don't be confused: the third parameter is ignored here, we always
+% have recursion here since the \emph{token} |\cl@#1| is (hopefully) not |\@elt|.
+% \begin{macrocode}
+ \csname cl@#1\endcsname\@elt\@nil{\csname cl@#1\endcsname}%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\renewcommand*\@addtoreset[2]{\bgroup
+ \edef\aliasctr@@truelist{\aliasctr@follow{#2}}%
+ \let\@elt\relax
+ \expandafter\@cons\aliasctr@@truelist{{#1}}%
+\egroup}
+% \end{macrocode}
+%
+% This code has been adapted from David Carlisle's \pkg{remreset}. We
+% load that here only to prevent it from being loaded again.
+% \begin{macrocode}
+\RequirePackage{remreset}
+\renewcommand*\@removefromreset[2]{\bgroup
+ \edef\aliasctr@@truelist{\aliasctr@follow{#2}}%
+ \expandafter\let\csname c@#1\endcsname\@removefromreset
+ \def\@elt##1{%
+ \expandafter\ifx\csname c@##1\endcsname\@removefromreset
+ \else
+ \noexpand\@elt{##1}%
+ \fi}%
+ \expandafter\xdef\aliasctr@@truelist{%
+ \aliasctr@@truelist}
+\egroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@counteralias}
+% make |#1| a counter that uses counter |#2|'s count register.
+% \begin{macrocode}
+\newcommand\@counteralias[2]{{%
+ \def\@@gletover##1##2{%
+ \expandafter\global
+ \expandafter\let\csname ##1\expandafter\endcsname
+ \csname ##2\endcsname
+ }%
+ \@ifundefined{c@#2}{\@nocounterr{#2}}{%
+ \@ifdefinable{c@#1}{%
+% \end{macrocode}
+% Four values make a counter foo:
+% \begin{itemize}
+% \item the count register accessed through |\c@foo|,
+% \item the output macro |\thefoo|,
+% \item the prefix macro |\p@foo|,
+% \item the reset list |\cl@foo|.
+% \end{itemize}
+% \pkg{hyperref} adds |\theHfoo| in particular.
+% \begin{macrocode}
+ \@@gletover{c@#1}{c@#2}%
+ \@@gletover{the#1}{the#2}%
+% \end{macrocode}
+% I don't see \@counteralias being called hundreds of times,
+% let's just unconditionally create |\theHctr|-macros for hyperref.
+% \begin{macrocode}
+ \@@gletover{theH#1}{theH#2}%
+ \@@gletover{p@#1}{p@#2}%
+ \expandafter\global
+ \expandafter\def\csname cl@#1\expandafter\endcsname
+ \expandafter{\csname cl@#2\endcsname}%
+% \end{macrocode}
+% It is not necessary to save the value again: since we share a
+% count register, we will pick up the restored value of the
+% original counter.
+% \begin{macrocode}
+ %\@addtoreset{#1}{@ckpt}%
+ }%
+ }%
+}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</code>
+%\fi
diff --git a/Master/texmf-dist/source/latex/thmtools/thm-autoref.dtx b/Master/texmf-dist/source/latex/thmtools/thm-autoref.dtx
new file mode 100644
index 00000000000..d76d743db4d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/thmtools/thm-autoref.dtx
@@ -0,0 +1,100 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2008 by Ulrich M. Schwarz
+%
+% This file may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, version 1.3a.
+% The license can be obtained from
+% http://www.latex-project.org/lppl/lppl-1-3a.txt
+%
+% \fi
+%
+%\iffalse (hide this from DocInput)
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage[T1]{fontenc}
+\usepackage{fourier}
+\usepackage[scaled=0.8]{helvet}
+\usepackage{luximono}
+
+\usepackage{amsmath, amsthm}
+\usepackage{thm-autoref}
+\newtheorem{lemma}{Lemma}
+\GetFileInfo{thm-autoref.sty}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{thm-autoref.dtx}
+\end{document}
+%</driver>
+%<*autoref>
+%\fi
+%
+% \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 \~}
+% \CheckSum{160}
+%
+% \DoNotIndex{\@for,\addtocounter,\arabic,\csname,\endcsname,\cup,\CurrentOption}
+% \DoNotIndex{\{,\},\do,\define@key,\def,\DeclareOption,\else,\ensuremath,\expandafter}
+% \DoNotIndex{\hspace,\fi,\rule,\ifcase,\ifx,\in,\InputIfFileExists,\leq,\let,\mathpalette}
+% \DoNotIndex{\NeedsTeXFormat,\ldots,\ldotp,\newcommand,\newcounter,\or}
+% \DoNotIndex{\PackageInfo,\PackageWarning,\parm,\ProcessOptions,\protected@edef}
+% \DoNotIndex{\providecommand,\ProvidesPackage,\relax,\renewcommand,\RequirePackage}
+% \DoNotIndex{\setcounter,\setkeys,\rlap,\setminus,\widthof,\mathrm}
+%
+% \newcommand\thmrestate{\textsf{thm-patch}}
+% \title{The \thmrestate\ package\thanks{%
+% This file documents version~\fileversion\ of~\filedate,
+% RCS ${}$Id: thm-autoref.dtx,v 1.3 2008/02/17 21:08:04 ulmi Exp ulmi ${}$.
+% }}
+% \author{Ulrich M. Schwarz\thanks{ulmi@absatzen.de}}
+%
+% \maketitle
+%
+%\begin{abstract}
+%\end{abstract}
+%\section{Usage}
+%
+%\section{Implementation}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{thm-autoref}[2008/02/17 BETA thm-autoref (ulmi)]
+
+\RequirePackage{thm-patch, aliasctr}
+
+\let\@xa=\expandafter
+\let\@nx=\noexpand
+
+\newcommand\thmt@autorefsetup{%
+ \@xa\def\csname\thmt@envname autorefname\@xa\endcsname\@xa{\thmt@thmname}%
+ \ifthmt@hassibling
+ \@counteralias{\thmt@envname}{\thmt@sibling}%
+ \@xa\def\@xa\thmt@autoreffix\@xa{%
+ \@xa\let\csname the\thmt@envname\@xa\endcsname
+ \csname the\thmt@sibling\endcsname
+ \def\thmt@autoreffix{}%
+ }%
+ \protected@edef\thmt@sibling{\thmt@envname}%
+ \fi
+}
+\g@addto@macro\thmt@newtheorem@predefinition{\thmt@autorefsetup}%
+\g@addto@macro\thmt@newtheorem@postdefinition{\csname thmt@autoreffix\endcsname}%
+% \end{macrocode}
+%\iffalse
+%</autoref>
+%\fi
diff --git a/Master/texmf-dist/source/latex/thmtools/thm-kv.dtx b/Master/texmf-dist/source/latex/thmtools/thm-kv.dtx
new file mode 100644
index 00000000000..720ca24fabb
--- /dev/null
+++ b/Master/texmf-dist/source/latex/thmtools/thm-kv.dtx
@@ -0,0 +1,128 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2008 by Ulrich M. Schwarz
+%
+% This file may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, version 1.3a.
+% The license can be obtained from
+% http://www.latex-project.org/lppl/lppl-1-3a.txt
+%
+% \fi
+%
+%\iffalse (hide this from DocInput)
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage[T1]{fontenc}
+\usepackage{fourier}
+\usepackage[scaled=0.8]{helvet}
+\usepackage{luximono}
+
+\usepackage{amsmath, amsthm}
+\usepackage{thm-patch}
+\newtheorem{lemma}{Lemma}
+\GetFileInfo{thm-patch.sty}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{thm-patch.dtx}
+\end{document}
+%</driver>
+%<*kv>
+%\fi
+%
+% \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 \~}
+% \CheckSum{160}
+%
+% \DoNotIndex{\@for,\addtocounter,\arabic,\csname,\endcsname,\cup,\CurrentOption}
+% \DoNotIndex{\{,\},\do,\define@key,\def,\DeclareOption,\else,\ensuremath,\expandafter}
+% \DoNotIndex{\hspace,\fi,\rule,\ifcase,\ifx,\in,\InputIfFileExists,\leq,\let,\mathpalette}
+% \DoNotIndex{\NeedsTeXFormat,\ldots,\ldotp,\newcommand,\newcounter,\or}
+% \DoNotIndex{\PackageInfo,\PackageWarning,\parm,\ProcessOptions,\protected@edef}
+% \DoNotIndex{\providecommand,\ProvidesPackage,\relax,\renewcommand,\RequirePackage}
+% \DoNotIndex{\setcounter,\setkeys,\rlap,\setminus,\widthof,\mathrm}
+%
+% \newcommand\thmrestate{\textsf{thm-kv}}
+% \title{The \thmrestate\ package\thanks{%
+% This file documents version~\fileversion\ of~\filedate,
+% RCS ${}$Id: thm-kv.dtx,v 1.4 2008/02/17 21:08:04 ulmi Exp ulmi ${}$.
+% }}
+% \author{Ulrich M. Schwarz\thanks{ulmi@absatzen.de}}
+%
+% \maketitle
+%
+%\begin{abstract}
+%\end{abstract}
+%\section{Usage}
+%
+%
+%\section{Implementation}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{thm-kv}[2008/02/17 BETA thm-kv interface (ulmi)]
+\let\@xa\expandafter
+\let\@nx\noexpand
+\usepackage{keyval}
+
+\define@key{thmt}{parent}{\thmt@setparent{#1}}
+\define@key{thmt}{numberwithin}{\thmt@setparent{#1}}
+\define@key{thmt}{within}{\thmt@setparent{#1}}
+
+\define@key{thmt}{sibling}{\thmt@setsibling{#1}}
+\define@key{thmt}{numberlike}{\thmt@setsibling{#1}}
+\define@key{thmt}{sharenumber}{\thmt@setsibling{#1}}
+
+\define@key{thmt}{title}{\thmt@setthmname{#1}}
+\define@key{thmt}{name}{\thmt@setthmname{#1}}
+\define@key{thmt}{heading}{\thmt@setthmname{#1}}
+
+\define@key{thmt}{unnumbered}[]{\thmt@isnumberedfalse}
+\define@key{thmt}{starred}[]{\thmt@isnumberedfalse}
+
+\newif\ifthmt@isnumbered
+\newcommand\thmt@setparent[1]{%
+ \def\thmt@parent{#1}%
+}
+\newcommand\thmt@setsibling{%
+ \def\thmt@sibling
+}
+\newcommand\thmt@setthmname{%
+ \def\thmt@thmname
+}
+
+
+\newcommand\declaretheorem[2][]{%
+ \thmt@setthmname{\MakeUppercase #2}%
+ \thmt@setparent{}%
+ \thmt@setsibling{}%
+ \thmt@isnumberedtrue%
+ \setkeys{thmt}{#1}%
+ \protected@edef\thmt@tmp{%
+ \@nx\newtheorem
+ \ifthmt@isnumbered\else *\fi
+ {#2}%
+ \ifx\thmt@sibling\@empty\else [\thmt@sibling]\fi
+ {\thmt@thmname}%
+ \ifx\thmt@parent\@empty\else [\thmt@parent]\fi
+ }%\show\thmt@tmp
+ \thmt@tmp
+}
+% \end{macrocode}
+%\iffalse
+%</kv>
+%\fi
diff --git a/Master/texmf-dist/source/latex/thmtools/thm-listof.dtx b/Master/texmf-dist/source/latex/thmtools/thm-listof.dtx
new file mode 100644
index 00000000000..ef15b1854b0
--- /dev/null
+++ b/Master/texmf-dist/source/latex/thmtools/thm-listof.dtx
@@ -0,0 +1,117 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2008 by Ulrich M. Schwarz
+%
+% This file may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, version 1.3a.
+% The license can be obtained from
+% http://www.latex-project.org/lppl/lppl-1-3a.txt
+%
+% \fi
+%
+%\iffalse (hide this from DocInput)
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage[T1]{fontenc}
+\usepackage{fourier}
+\usepackage[scaled=0.8]{helvet}
+\usepackage{luximono}
+
+\usepackage{amsmath, amsthm}
+\usepackage{thm-patch}
+\newtheorem{lemma}{Lemma}
+\GetFileInfo{thm-patch.sty}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{thm-patch.dtx}
+\end{document}
+%</driver>
+%<*listof>
+%\fi
+%
+% \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 \~}
+% \CheckSum{160}
+%
+% \DoNotIndex{\@for,\addtocounter,\arabic,\csname,\endcsname,\cup,\CurrentOption}
+% \DoNotIndex{\{,\},\do,\define@key,\def,\DeclareOption,\else,\ensuremath,\expandafter}
+% \DoNotIndex{\hspace,\fi,\rule,\ifcase,\ifx,\in,\InputIfFileExists,\leq,\let,\mathpalette}
+% \DoNotIndex{\NeedsTeXFormat,\ldots,\ldotp,\newcommand,\newcounter,\or}
+% \DoNotIndex{\PackageInfo,\PackageWarning,\parm,\ProcessOptions,\protected@edef}
+% \DoNotIndex{\providecommand,\ProvidesPackage,\relax,\renewcommand,\RequirePackage}
+% \DoNotIndex{\setcounter,\setkeys,\rlap,\setminus,\widthof,\mathrm}
+%
+% \newcommand\thmrestate{\textsf{thm-patch}}
+% \title{The \thmrestate\ package\thanks{%
+% This file documents version~\fileversion\ of~\filedate,
+% RCS ${}$Id: thm-listof.dtx,v 1.4 2008/02/17 21:08:04 ulmi Exp ulmi ${}$.
+% }}
+% \author{Ulrich M. Schwarz\thanks{ulmi@absatzen.de}}
+%
+% \maketitle
+%
+%\begin{abstract}
+%\end{abstract}
+%\section{Usage}
+%
+%\section{Implementation}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{thm-listof}[2008/02/17 BETA thm-listof (ulmi)]
+\let\@xa=\expandafter
+\let\@nx=\noexpand
+\RequirePackage{thm-patch}
+
+\providecommand\listtheoremname{List of Theorems}
+\newcommand\listoftheorems{%
+ %% much hacking here to pick up the definition from the class
+ %% without oodles of conditionals.
+ \bgroup
+ \let\listfigurename\listtheoremname
+ \let\thref@starttoc\@starttoc
+ \def\@starttoc##1{\thref@starttoc{loe}}%
+ \expandafter\listoffigures
+ \egroup
+}
+
+\newcommand\thmt@mklistcmd{%
+ \@xa\protected@edef\csname l@\thmt@envname\endcsname{%
+ \@nx\@dottedtocline{1}{1.5em}{2.3em}%
+ }%
+}
+\g@addto@macro\thmt@newtheorem@predefinition{%
+ \thmt@mklistcmd
+}
+
+\addtotheoremposthook{%
+ \addcontentsline{loe}{\thmt@envname}{%
+ \numberline{\csname the\thmt@envname\endcsname}%
+ \thmt@thmname
+ \ifx\@empty\thmt@optarg\else\protect\space(\thmt@optarg)\fi
+ }%
+}
+\newcommand\ignoretheorems[1]{%
+ \@for\thm:=#1\do{%
+ \@xa\let\csname l@\thm\endcsname=\@gobbletwo
+ }%
+}
+% \end{macrocode}
+%\iffalse
+%</listof>
+%\fi
diff --git a/Master/texmf-dist/source/latex/thmtools/thm-patch.dtx b/Master/texmf-dist/source/latex/thmtools/thm-patch.dtx
new file mode 100644
index 00000000000..a391ad45565
--- /dev/null
+++ b/Master/texmf-dist/source/latex/thmtools/thm-patch.dtx
@@ -0,0 +1,174 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2008 by Ulrich M. Schwarz
+%
+% This file may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, version 1.3a.
+% The license can be obtained from
+% http://www.latex-project.org/lppl/lppl-1-3a.txt
+%
+% \fi
+%
+%\iffalse (hide this from DocInput)
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage[T1]{fontenc}
+\usepackage{fourier}
+\usepackage[scaled=0.8]{helvet}
+\usepackage{luximono}
+
+\usepackage{amsmath, amsthm}
+\usepackage{thm-patch}
+\newtheorem{lemma}{Lemma}
+\GetFileInfo{thm-patch.sty}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{thm-patch.dtx}
+\end{document}
+%</driver>
+%<*patch>
+%\fi
+%
+% \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 \~}
+% \CheckSum{160}
+%
+% \DoNotIndex{\@for,\addtocounter,\arabic,\csname,\endcsname,\cup,\CurrentOption}
+% \DoNotIndex{\{,\},\do,\define@key,\def,\DeclareOption,\else,\ensuremath,\expandafter}
+% \DoNotIndex{\hspace,\fi,\rule,\ifcase,\ifx,\in,\InputIfFileExists,\leq,\let,\mathpalette}
+% \DoNotIndex{\NeedsTeXFormat,\ldots,\ldotp,\newcommand,\newcounter,\or}
+% \DoNotIndex{\PackageInfo,\PackageWarning,\parm,\ProcessOptions,\protected@edef}
+% \DoNotIndex{\providecommand,\ProvidesPackage,\relax,\renewcommand,\RequirePackage}
+% \DoNotIndex{\setcounter,\setkeys,\rlap,\setminus,\widthof,\mathrm}
+%
+% \newcommand\thmrestate{\textsf{thm-patch}}
+% \title{The \thmrestate\ package\thanks{%
+% This file documents version~\fileversion\ of~\filedate,
+% RCS ${}$Id: thm-patch.dtx,v 1.6 2008/02/17 21:08:04 ulmi Exp ulmi ${}$.
+% }}
+% \author{Ulrich M. Schwarz\thanks{ulmi@absatzen.de}}
+%
+% \maketitle
+%
+%\begin{abstract}
+%\end{abstract}
+%\section{Usage}
+%
+%\section{Implementation}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{thm-patch}[2008/02/17 BETA thm-patch (ulmi)]
+\let\@xa=\expandafter
+\let\@nx=\noexpand
+
+\@ifundefined{c@thmt@dummyctr}{%
+ \newcounter{thmt@dummyctr}%
+}{}%
+\gdef\theHthmt@dummyctr{dummy.\arabic{thmt@dummyctr}}%
+
+\newif\ifthmt@isstarred
+\newif\ifthmt@hassibling
+\newif\ifthmt@hasparent
+
+\let\thmt@original@newtheorem\newtheorem
+\def\newtheorem{%
+ \thmt@isstarredfalse
+ \let\thmt@sibling=\relax \thmt@hassiblingfalse
+ \let\thmt@parent=\relax \thmt@hasparentfalse
+ \@ifstar
+ {\thmt@isstarredtrue\thmt@newtheoremii}%
+ {\thmt@newtheoremii}%
+}
+\newcommand\thmt@newtheoremii[1]{%
+ \def\thmt@envname{#1}%
+ \thmt@newtheoremiii
+}
+\newcommand\thmt@newtheoremiii[2][]{%
+ \def\thmt@thmname{#2}%
+ \ifx&#1&\else
+ \thmt@hassiblingtrue
+ \def\thmt@sibling{#1}%
+ \fi
+ \@ifnextchar[{%
+ \thmt@hasparenttrue
+ \def\tmp@a[####1]{\def\thmt@parent{####1}\thmt@newtheoremiv}%
+ \tmp@a
+ }{%
+ \thmt@newtheoremiv
+ }%
+}
+\newcommand\thmt@newtheoremiv{%
+ \thmt@newtheorem@predefinition
+ % whee, now reassemble the whole shit.
+ \protected@edef\thmt@args{%
+ \@nx\thmt@original@newtheorem%
+ \ifthmt@isstarred *\fi
+ {\thmt@envname}%
+ \ifthmt@hassibling [\thmt@sibling]\fi
+ {\thmt@thmname}%
+ \ifthmt@hasparent [\thmt@parent]\fi
+ }
+ \thmt@args
+ \thmt@newtheorem@postdefinition
+}
+
+\newcommand\thmt@newtheorem@predefinition{}
+\newcommand\thmt@newtheorem@postdefinition{}
+
+\g@addto@macro\thmt@newtheorem@postdefinition{%
+ \@xa\thmt@addtheoremhook\@xa{\thmt@envname}%
+ \ifthmt@isstarred\@namedef{the\thmt@envname}{}\fi
+ \protected@edef\thmt@tmp{%
+ \def\@nx\thmt@envname{\thmt@envname}%
+ \def\@nx\thmt@thmname{\thmt@thmname}%
+ }
+ \@xa\addtotheoremprehook\@xa[\@xa\thmt@envname\@xa]\@xa{%
+ \thmt@tmp
+ }%
+}
+\newcommand\thmt@addtheoremhook[1]{%
+ % this adds two command calls to the newly-defined theorem.
+ \@xa\let\csname thmt@original@#1\@xa\endcsname
+ \csname#1\endcsname
+ \@xa\renewcommand\csname \thmt@envname\endcsname[1][]{%
+ \def\thmt@optarg{##1}%
+ \csname thmt@#1@preheadhook\endcsname
+ \thmt@generic@preheadhook
+ \csname thmt@original@#1\@xa\endcsname
+ \ifx\@empty\thmt@optarg\else [##1]\fi
+ \csname thmt@#1@postheadhook\endcsname
+ \thmt@generic@postheadhook
+ }%
+ \@namedef{thmt@#1@preheadhook}{}%
+ \@namedef{thmt@#1@postheadhook}{}%
+}
+\newcommand\thmt@generic@preheadhook{\refstepcounter{thmt@dummyctr}}
+\newcommand\thmt@generic@postheadhook{}
+
+\newcommand\addtotheoremprehook[1][generic]{%
+ \expandafter\g@addto@macro\csname thmt@#1@preheadhook\endcsname%
+}
+\newcommand\addtotheoremposthook[1][generic]{%
+ \expandafter\g@addto@macro\csname thmt@#1@postheadhook\endcsname%
+}
+
+% \end{macrocode}
+%\iffalse
+%</patch>
+%\fi
diff --git a/Master/texmf-dist/source/latex/thmtools/thm-restate.dtx b/Master/texmf-dist/source/latex/thmtools/thm-restate.dtx
new file mode 100644
index 00000000000..54e8ecc7325
--- /dev/null
+++ b/Master/texmf-dist/source/latex/thmtools/thm-restate.dtx
@@ -0,0 +1,178 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2008 by Ulrich M. Schwarz
+%
+% This file may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, version 1.3a.
+% The license can be obtained from
+% http://www.latex-project.org/lppl/lppl-1-3a.txt
+%
+% \fi
+%
+%\iffalse (hide this from DocInput)
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage[T1]{fontenc}
+\usepackage{fourier}
+\usepackage[scaled=0.8]{helvet}
+\usepackage{luximono}
+
+\usepackage{amsmath, amsthm}
+\usepackage{thm-restate}
+\newtheorem{lemma}{Lemma}
+\GetFileInfo{thm-restate.sty}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{thm-restate.dtx}
+\end{document}
+%</driver>
+%<*restate>
+%\fi
+%
+% \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 \~}
+% \CheckSum{160}
+%
+% \DoNotIndex{\@for,\addtocounter,\arabic,\csname,\endcsname,\cup,\CurrentOption}
+% \DoNotIndex{\{,\},\do,\define@key,\def,\DeclareOption,\else,\ensuremath,\expandafter}
+% \DoNotIndex{\hspace,\fi,\rule,\ifcase,\ifx,\in,\InputIfFileExists,\leq,\let,\mathpalette}
+% \DoNotIndex{\NeedsTeXFormat,\ldots,\ldotp,\newcommand,\newcounter,\or}
+% \DoNotIndex{\PackageInfo,\PackageWarning,\parm,\ProcessOptions,\protected@edef}
+% \DoNotIndex{\providecommand,\ProvidesPackage,\relax,\renewcommand,\RequirePackage}
+% \DoNotIndex{\setcounter,\setkeys,\rlap,\setminus,\widthof,\mathrm}
+%
+% \newcommand\thmrestate{\textsf{thm-restate}}
+% \title{The \thmrestate\ package\thanks{%
+% This file documents version~\fileversion\ of~\filedate,
+% RCS ${}$Id: thm-restate.dtx,v 1.8 2008/02/17 21:08:04 ulmi Exp ulmi ${}$.
+% }}
+% \author{Ulrich M. Schwarz\thanks{ulmi@absatzen.de}}
+%
+% \maketitle
+%
+%\begin{abstract}
+% This package provides one single environment, restatable, which lets you
+% repeat whole theorems without retyping them.
+%\end{abstract}
+%\section{Usage}
+%\DescribeEnv{restatable}
+%Only one environment is provided: \verb|restatable|, which takes one
+%optional and two mandatory arguments. The first mandatory argument is the
+%type of the theorem, i.e. if you want \verb|\begin{lemma}| to be called on
+%the inside, give \verb|lemma|. The second argument is the name of the macro
+%that the text should be stored in, for example \verb|mylemma|. Be careful
+%not to specify existing command names! The optional argument will become the
+%optional argument to your theorem command. Consider the following example:
+%\begin{verbatim}
+% \documentclass{article}
+% \usepackage{amsmath, amsthm, thm-restate}
+% \newtheorem{lemma}{Lemma}
+% \begin{document}
+% \begin{restatable}[Zorn]{lemma}{zornlemma}\label{thm:zorn}
+% If every chain in $X$ is upper-bounded,
+% $X$ has a maximal element.
+%
+% It's true, you know!
+% \end{restatable}
+% \begin{lemma}
+% This is some other lemma of no import.
+% \end{lemma}
+% And now, here's Mr. Zorn again: \zornlemma
+% \end{document}
+%\end{verbatim}
+%which yields
+% \begin{restatable}[Zorn]{lemma}{zornlemma}\label{thm:zorn}
+% If every chain in $X$ is upper-bounded, $X$ has a maximal element.
+%
+% It's true, you know!
+% \end{restatable}
+% \begin{lemma}
+% This is some other lemma of no import.
+% \end{lemma}
+% Actually, we have set a label in the environment, so we know that
+% it's Lemma~\ref{thm:zorn} on page~\ref{thm:zorn}.
+% And now, here's Mr. Zorn again: \zornlemma
+% Since we prevent the label from being set again, we find that
+% it's still Lemma~\ref{thm:zorn} on page~\ref{thm:zorn}, even though
+% it occurs later also. Maybe at some point, there'll be a way to control
+% which instance gets its labels executed.
+%
+% \subsection{Restrictions}
+% The only counter that is saved is the one for the theorem number. So,
+% putting floats inside a restatable is not advised. You cannot nest
+% restatables either. The first occurrence is the priviledged one that
+% determines the number and the label/page info, you cannot change that
+% at the moment. hyperref will get confused, too, so currently, links
+% won't work.
+%
+%\section{Implementation}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{thm-restate}[2008/02/17 BETA thm-restate (ulmi)]
+
+\let\@xa\expandafter
+\let\@nx\noexpand
+\@ifundefined{c@thmt@dummyctr}{%
+ \newcounter{thmt@dummyctr}%
+ }{}
+\gdef\theHthmt@dummyctr{dummy.\arabic{thmt@dummyctr}}%
+
+\newtoks\thmt@toks
+\long\def\thmt@collect@body#1#2\end#3{%
+ \@xa\thmt@toks\@xa{\the\thmt@toks #2}%
+ \def\thmttmpa{#3}\def\thmttmpb{restatable}%
+ \ifx\thmttmpa\thmttmpb
+ \@xa\@firstoftwo% this is the end of the environment.
+ \else
+ \@xa\@secondoftwo% go on collecting
+ \fi{%
+ \@xa#1\@xa{\the\thmt@toks}%
+ }{%
+ \@xa\thmt@toks\@xa{\the\thmt@toks\end{#3}}%
+ \thmt@collect@body{#1}%
+ }%
+}
+
+\newenvironment{restatable}[3][]{%
+ \def\thmrst@type{#2}%
+ \long\def\thmrst@store##1{%
+ \protected@edef\thmrst@nmbr{\csname the#2\endcsname}%
+ \@xa\long\@xa\gdef\csname #3\@xa\endcsname\@xa{%
+ \@xa\begingroup
+ \@xa\def\csname the#2\@xa\endcsname\@xa{\thmrst@nmbr}%
+ \@xa\let\csname c@#2\endcsname\c@thmt@dummyctr
+ \@xa\let\csname theH#2\endcsname\theHthmt@dummyctr
+ \let\label=\@gobble
+ %\def\@currenvir{#2}%
+ \csname #2\@xa\endcsname\ifx\@nx#1\@nx\else[#1]\fi
+ ##1
+ \csname end#2\endcsname
+ \endgroup
+ }##1\end{restatable}}%
+ %\def\@currenvir{#2}%
+ \csname #2\@xa\endcsname\ifx\@nx#1\@nx\else[#1]\fi
+ \thmt@collect@body\thmrst@store
+}{%
+ \csname end\thmrst@type\endcsname
+ %\def\@currenvir{restatable}%
+}
+% \end{macrocode}
+%\iffalse
+%</restate>
+%\fi
diff --git a/Master/texmf-dist/source/latex/thmtools/thmtools.ins b/Master/texmf-dist/source/latex/thmtools/thmtools.ins
new file mode 100644
index 00000000000..2a974e839e4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/thmtools/thmtools.ins
@@ -0,0 +1,46 @@
+%%
+%% This is a bog-standard .ins file: thmtools.ins
+%%
+\input docstrip.tex
+\keepsilent
+\preamble
+This is a generated file.
+
+This file is part of the `thmtools' package.
+The `thmtools' package has the LPPL maintenance status: maintained.
+Current Maintainer is Ulrich M. Schwarz, ulmi@absatzen.de
+
+Copyright (C) 2008 by Ulrich M. Schwarz.
+
+This file may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, version 1.3a.
+This version is obtainable at
+http://www.latex-project.org/lppl/lppl-1-3a.txt
+
+\endpreamble
+
+\generate{%
+ \file{thm-restate.sty}{\from{thm-restate.dtx}{restate}}
+ \file{thm-patch.sty}{\from{thm-patch.dtx}{patch}}
+ \file{thm-autoref.sty}{\from{thm-autoref.dtx}{autoref}}
+ \file{thm-listof.sty}{\from{thm-listof.dtx}{listof}}
+ \file{thm-kv.sty}{\from{thm-kv.dtx}{kv}}
+ \file{aliasctr.sty}{\from{aliasctr.dtx}{code}}
+ \file{unique.sty}{\from{unique.dtx}{code}}
+ }
+\Msg{*********************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the}
+\Msg{* following files into a directory searched by TeX:}
+\Msg{*}
+\Msg{* \space\space thm-restate.sty}
+\Msg{* \space\space thm-patch.sty}
+\Msg{* \space\space thm-autoref.sty}
+\Msg{* \space\space thm-listof.sty}
+\Msg{* \space\space thm-kv.sty}
+\Msg{* \space\space aliasctr.sty}
+\Msg{* \space\space unique.sty}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*********************************************************}
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/thmtools/unique.dtx b/Master/texmf-dist/source/latex/thmtools/unique.dtx
new file mode 100644
index 00000000000..ee045b08e40
--- /dev/null
+++ b/Master/texmf-dist/source/latex/thmtools/unique.dtx
@@ -0,0 +1,190 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2005-7 by Ulrich M. Schwarz
+%
+%Redistribution and use in source and binary forms, with or without
+%modification, are permitted provided that the following conditions
+%are met:
+%1. Redistributions of source code must retain the above copyright
+% notice, this list of conditions and the following disclaimer.
+%2. Redistributions in binary form must reproduce the above copyright
+% notice, this list of conditions and the following disclaimer in the
+% documentation and/or other materials provided with the distribution.
+%3. All advertising materials mentioning features or use of this software
+% must display the following acknowledgement:
+% This product includes software developed by Ulrich M. Schwarz
+%4. Neither the name of the author nor the names of his contributors
+% may be used to endorse or promote products derived from this software
+% without specific prior written permission.
+%
+%THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+%INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+%FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+%AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+%OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+%SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+%INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+%CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+%ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+%POSSIBILITY OF SUCH DAMAGE.
+%
+%
+% \fi
+%
+%\iffalse
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{unique}
+
+\usepackage[T1]{fontenc}
+\usepackage{fourier}
+\usepackage[scaled=0.87]{luximono, helvet}
+\newcommand\pkg{\textsf}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{unique.sty}
+\author{Ulrich M. Schwarz\thanks{ulmi at absatzen dot de}}
+\title{The \pkg{unique} package\thanks{%
+ This documents \pkg{unique}~\fileversion, dated~\filedate.
+ Newer versions might be found at http://absatzen.de
+}}
+\begin{document}
+ \maketitle
+ \DocInput{unique.dtx}
+\end{document}
+%</driver>
+%<*code>
+%\fi
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{unique}[2007/07/29 v0.1 test for uniqueness (ulmi)]
+% \end{macrocode}
+%
+% \section{Implementation and Usage}
+%
+% \iffalse $Id: unique.dtx,v 1.2 2008/02/10 10:23:32 ulmi Exp $\fi
+% \begin{macro}{\setuniqmark}
+% Call this with a name to set the corresponding uniqmark. The name must
+% be suitable for |\csname|-constructs, i.e. fully expansible to a
+% string of characters. If you use some counter values to generate this,
+% it might be a good idea to try and use hyperref's |\theH...| macros,
+% which have similar restrictions. You can check whether a particular
+% |\setuniqmark| was called more than once during \emph{the last run}
+% with |\ifuniq|.
+% \begin{macrocode}
+\newcommand\setuniqmark[1]{%
+ \expandafter\ifx\csname uniq@now@#1\endcsname\relax
+ \global\@namedef{uniq@now@#1}{\uniq@ONE}%
+ \else
+ \expandafter\ifx\csname uniq@now@#1\endcsname\uniq@MANY\else
+ \immediate\write\@auxout{%
+ \string\uniq@setmany{#1}%
+ }%
+ \ifuniq{#1}{%
+ \uniq@warnnotunique{#1}%
+ }{}%
+ \fi
+ \global\@namedef{uniq@now@#1}{\uniq@MANY}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifuniq}
+% Companion to |\setuniqmark|: if the uniqmark given in the first
+% argument was called more than once, execute the second argument,
+% otherwise execute the first argument. Note than no call to
+% |\setuniqmark| for a particular uniqmark at all means that this
+% uniqmark is unique.
+%
+% This is a lazy version: we could always say false if we already had two calls
+% to setuniqmark this run, but we have to rerun for any ifuniq prior
+% to the first setuniqmark anyway, so why bother?
+% \begin{macrocode}
+\newcommand\ifuniq[1]{%
+ \expandafter\ifx\csname uniq@last@#1\endcsname\uniq@MANY
+ \expandafter \@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Two quarks to signal if we have seen an uniqmark more than once.
+% \begin{macrocode}
+\def\uniq@ONE{\uniq@ONE}
+\def\uniq@MANY{\uniq@MANY}
+% \end{macrocode}
+% Flag: suggest a rerun?
+% \begin{macrocode}
+\newif\if@uniq@rerun
+% \end{macrocode}
+%
+% Helper macro: a call to this is written to the .aux file when we see
+% an uniqmark for the second time. This sets the right information for
+% the next run. It also checks on subsequent runs if the number of
+% uniqmarks drops to less than two, so that we'll need a rerun.
+% \begin{macrocode}
+\def\uniq@setmany#1{%
+ \global\@namedef{uniq@last@#1}{\uniq@MANY}%
+ \AtEndDocument{%
+ \uniq@warnifunique{#1}%
+ }%
+}
+% \end{macrocode}
+%
+% Warning if something is unique now. This always warns if the
+% setting for this run is not ``many'', because it was generated
+% by a setmany from the last run.
+% \begin{macrocode}
+\def\uniq@warnifunique#1{%
+ \expandafter\ifx\csname uniq@now@#1\endcsname\uniq@MANY\else
+ \PackageWarningNoLine{uniq}{%
+ `#1' is unique now.\MessageBreak
+ Rerun LaTeX to pick up the change%
+ }%
+ \@uniq@reruntrue
+ \fi
+}
+% \end{macrocode}
+%
+% Warning if we have a second uniqmark this run around. Since this is
+% checked immediately, we could give the line of the second
+% occurence, but we do not do so for symmetry.
+% \begin{macrocode}
+\def\uniq@warnnotunique#1{%
+ \PackageWarningNoLine{uniq}{%
+ `#1' is not unique anymore.\MessageBreak
+ Rerun LaTeX to pick up the change%
+ }%
+ \@uniq@reruntrue
+}
+% \end{macrocode}
+%
+% Maybe advise a rerun (duh!). This is executed at the end of the
+% second reading of the aux-file. If you manage to set uniqmarks
+% after that (though I cannot imagine why), you might need reruns
+% without being warned, so don't to that.
+% \begin{macrocode}
+\def\uniq@maybesuggestrerun{%
+ \if@uniq@rerun
+ \PackageWarningNoLine{uniq}{%
+ Uniquenesses have changed. \MessageBreak
+ Rerun LaTeX to pick up the change%
+ }%
+ \fi
+}
+% \end{macrocode}
+%
+% Make sure the check for rerun is pretty late in processing, so it
+% can catch all of the uniqmarks (hopefully).
+% \begin{macrocode}
+\AtEndDocument{%
+ \immediate\write\@auxout{\string\uniq@maybesuggestrerun}%
+}
+% \end{macrocode}
+%\iffalse
+%</code>
+%\fi