summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-08-07 22:18:43 +0000
committerKarl Berry <karl@freefriends.org>2020-08-07 22:18:43 +0000
commitd7359b696521401de6deaa4f70a6b40319cfa2a0 (patch)
tree8d45b41c17197de7a8514fb22f9c305a6ae9865d
parentd6a7e0e5536b4924edec286797ed38021b94509d (diff)
thmtools
git-svn-id: svn://tug.org/texlive/trunk@56068 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/thmtools/README.md4
-rw-r--r--Master/texmf-dist/doc/latex/thmtools/VERSION.tex2
-rw-r--r--Master/texmf-dist/doc/latex/thmtools/changes.txt35
-rw-r--r--Master/texmf-dist/doc/latex/thmtools/thmtools-manual.pdfbin227619 -> 237505 bytes
-rw-r--r--Master/texmf-dist/doc/latex/thmtools/thmtools-manual.tex125
-rw-r--r--Master/texmf-dist/source/latex/thmtools/thm-kv.dtx206
-rw-r--r--Master/texmf-dist/source/latex/thmtools/thm-listof.dtx58
-rw-r--r--Master/texmf-dist/source/latex/thmtools/thm-llncs.dtx2
-rw-r--r--Master/texmf-dist/source/latex/thmtools/thmdef-mdframed.dtx3
-rw-r--r--Master/texmf-dist/source/latex/thmtools/unique.dtx53
-rw-r--r--Master/texmf-dist/tex/latex/thmtools/aliasctr.sty2
-rw-r--r--Master/texmf-dist/tex/latex/thmtools/parseargs.sty2
-rw-r--r--Master/texmf-dist/tex/latex/thmtools/thm-amsthm.sty2
-rw-r--r--Master/texmf-dist/tex/latex/thmtools/thm-autoref.sty2
-rw-r--r--Master/texmf-dist/tex/latex/thmtools/thm-beamer.sty2
-rw-r--r--Master/texmf-dist/tex/latex/thmtools/thm-kv.sty191
-rw-r--r--Master/texmf-dist/tex/latex/thmtools/thm-listof.sty60
-rw-r--r--Master/texmf-dist/tex/latex/thmtools/thm-llncs.sty4
-rw-r--r--Master/texmf-dist/tex/latex/thmtools/thm-ntheorem.sty2
-rw-r--r--Master/texmf-dist/tex/latex/thmtools/thm-patch.sty2
-rw-r--r--Master/texmf-dist/tex/latex/thmtools/thm-restate.sty2
-rw-r--r--Master/texmf-dist/tex/latex/thmtools/thmdef-mdframed.sty5
-rw-r--r--Master/texmf-dist/tex/latex/thmtools/thmdef-shaded.sty2
-rw-r--r--Master/texmf-dist/tex/latex/thmtools/thmdef-thmbox.sty2
-rw-r--r--Master/texmf-dist/tex/latex/thmtools/thmtools.sty2
-rw-r--r--Master/texmf-dist/tex/latex/thmtools/unique.sty45
26 files changed, 586 insertions, 229 deletions
diff --git a/Master/texmf-dist/doc/latex/thmtools/README.md b/Master/texmf-dist/doc/latex/thmtools/README.md
index ffcfb135d3a..5314288e980 100644
--- a/Master/texmf-dist/doc/latex/thmtools/README.md
+++ b/Master/texmf-dist/doc/latex/thmtools/README.md
@@ -12,6 +12,6 @@ Provided features:
License: LPPL 1.3c
-Currently the package is maintained by Yukai Chou, <span>muzimuzhi@gmail.com</span>
+Currently the package is maintained by Yukai Chou, muzimuzhi at gmail<span></span>.com
-Previous Maintainer was Ulrich M. Schwarz, <span>ulmi@absatzen.de</span>
+Previous Maintainer was Ulrich M. Schwarz, ulmi at absatzen<span></span>.de
diff --git a/Master/texmf-dist/doc/latex/thmtools/VERSION.tex b/Master/texmf-dist/doc/latex/thmtools/VERSION.tex
index 9bfeb6f8900..68d76a77e34 100644
--- a/Master/texmf-dist/doc/latex/thmtools/VERSION.tex
+++ b/Master/texmf-dist/doc/latex/thmtools/VERSION.tex
@@ -1 +1 @@
-\def\VERSION{2020/07/16 v69}
+\def\VERSION{2020/08/01 v0.72}
diff --git a/Master/texmf-dist/doc/latex/thmtools/changes.txt b/Master/texmf-dist/doc/latex/thmtools/changes.txt
index c16fb63e78b..7eae39f61a7 100644
--- a/Master/texmf-dist/doc/latex/thmtools/changes.txt
+++ b/Master/texmf-dist/doc/latex/thmtools/changes.txt
@@ -2,11 +2,40 @@
* thm-kv.dtx:
removed dependency on etexcmds package
-
-2020-07-16 Yukai Chou <muzimuzhi@gmail.com>
+
+2020-07-16 Yukai Chou <muzimuzhi@gmail.com>
* thm-restate.dtx:
made compatible with cleveref's \label[]{} syntax
-
+
* thmtools-manual.tex (and comment part of dtx files):
refined manual
+
+ * general:
+ updated license and maintenance status
+
+2020-07-24 Yukai Chou <muzimuzhi@gmail.com>
+
+ * thm-kv.dtx:
+ made \declaretheorem[<option list>]{<thmname>} accept a clist in <thmname>, #2
+ made \declarethemrem accept an extra optional arg
+ made "numbered=unless unique" compatible with and aware of "numberwithin=<counter>", #3 & #4
+
+ * unique.dtx:
+ adjusted indent
+
+2020-07-29 Yukai Chou <muzimuzhi@gmail.com>
+
+ * thm-list.dtx:
+ provided new option "swapnumber" for \listoftheorems, #5
+
+ * thm-kv.dtx:
+ fixed wrong default value of option "numbered"
+
+2020-08-01 Yukai Chou <muzimuzhi@gmail.com>
+
+ * thm-list.dtx:
+ made \listoftheorems compatible with ams classes, #6
+
+ * thmtools-manual.tex:
+ documented new changes and keys of \listoftheorems
diff --git a/Master/texmf-dist/doc/latex/thmtools/thmtools-manual.pdf b/Master/texmf-dist/doc/latex/thmtools/thmtools-manual.pdf
index 8d9ff5fc016..cb908e17df9 100644
--- a/Master/texmf-dist/doc/latex/thmtools/thmtools-manual.pdf
+++ b/Master/texmf-dist/doc/latex/thmtools/thmtools-manual.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/thmtools/thmtools-manual.tex b/Master/texmf-dist/doc/latex/thmtools/thmtools-manual.tex
index 47f1235f5fc..dc357480ed2 100644
--- a/Master/texmf-dist/doc/latex/thmtools/thmtools-manual.tex
+++ b/Master/texmf-dist/doc/latex/thmtools/thmtools-manual.tex
@@ -28,17 +28,17 @@
\usepackage{amsmath, amsthm}
\usepackage{enumitem}
-\setlist[description, 1]{labelindent=2em, leftmargin=2em, rightmargin=2em, labelwidth=!}
+ \setlist[description, 1]{labelindent=2em, leftmargin=2em, rightmargin=2em, labelwidth=!}
\usepackage{tikz}
-\usetikzlibrary{tikzmark}
+ \usetikzlibrary{tikzmark}
\usepackage{nameref}
\usepackage{hyperref}
-\hypersetup{
- colorlinks,
- linkcolor=RoyalBlue,
- linktocpage
-}
+ \hypersetup{
+ colorlinks,
+ linkcolor=RoyalBlue,
+ linktoc=all
+ }
\usepackage{cleveref}[2010/05/01]
\usepackage{thmtools, thm-restate}
@@ -58,6 +58,10 @@
\paragraph*{\texttt{#2}}
}
+\newcommand\change[2]{%
+ (\textbf{#1: \textsf{#2}})%
+}
+
\lstloadlanguages{[LaTeX]TeX}
\lstset{language=[LaTeX]TeX,basicstyle=\small\ttfamily,keywordstyle=\mdseries,aboveskip=0pt}
@@ -77,8 +81,10 @@
}
\newenvironment{result}{%
\hfill\minipage[t]{0.37\linewidth}
+ \vspace{1pt}%
}{%
\endminipage\strut\par
+ \vspace{3pt}%
}
%\MakeShortVerb{\|}
\lstMakeShortInline{|}
@@ -119,6 +125,36 @@
\declaretheorem[name=Theorem, refname={theorem,theorems},
Refname={Theorem,Theorems}]{callmeal}
+% make the full toc entry clickable while only the page number part is colored
+% based on my own TeX-SX answer https://tex.stackexchange.com/a/555695
+\usepackage{xpatch}
+
+\makeatletter
+
+\xpatchcmd\contentsline
+ {%
+ \csname l@#1\endcsname{%
+ \hyper@linkstart{link}{\Hy@tocdestname}{#2}\hyper@linkend
+ }{%
+ \hyper@linkstart{link}{\Hy@tocdestname}{#3}\hyper@linkend
+ }%
+ }
+ {%
+ \csname l@#1\endcsname{%
+ \begingroup
+ \def\@linkcolor{black}%
+ \hyper@linkstart{link}{\Hy@tocdestname}{#2}\hyper@linkend
+ \endgroup
+ }{%
+ \hyper@linkstart{link}{\Hy@tocdestname}{#3}\hyper@linkend
+ }%
+ }
+ {}{\fail}
+
+% set default input path
+\def\input@path{{../source/}}
+\makeatother
+
\input{VERSION.tex}
@@ -258,7 +294,7 @@
\end{result}
To save you from having to look up the name of the key every time, you can
- also use ``title='' and ``heading='' instead of ``name=''; they do exactly
+ also use |title=| and |heading=| instead of |name=|; they do exactly
the same and hopefully one of these will be easy to remember for you.
Of course, you do not have to follow the abominal practice of numbering
@@ -347,7 +383,20 @@
Buck \& Britta
\end{couple}
\end{result}
-
+
+ \change{New}{2020/08/01} Actually, the mandatory argument of |\declaretheorem| accepts a list of environment names, so you can define similar theorems at once. Moreover, similar to |\setmainfont| from \pkg{fontspec} package, the key-value interface can be used both before and after the mandatory argument.
+ \begin{source}
+ \begin{preamble}[gobble=4]
+ \declaretheorem[numberwithin=section]
+ {theorem, definition}
+ \declaretheorem{lemma, proposition, corollary}[
+ style=plain,
+ numberwithin=theorem
+ ]
+ \end{preamble}
+ \end{source}
+
+ \clearpage
\section{Frilly references}
In case you didn't know, you should: \pkg{hyperref}, \pkg{nameref} and
@@ -366,8 +415,6 @@
\begin{preamble}[gobble=6]
\usepackage{amsthm, thmtools}
\usepackage{
- % nameref,%\nameref
- % n.b. usually nameref is autoloaded by hyperref
hyperref,%\autoref
% n.b. \Autoref is defined by thmtools
cleveref,% \cref
@@ -426,13 +473,15 @@
\end{source}
\begin{result}
\begin{Theorem}
- This is a theorem.
+ Note how it still retains the default style,
+ `plain'.
\end{Theorem}
\begin{remark}
- Note how it still retains the default style, `plain'.
+ This is a remark.
\end{remark}
\end{result}
+ \newpage
Thmtools also supports the \pkg{shadethm} and \pkg{thmbox} packages:
\begin{source}
\begin{preamble}[gobble=4]
@@ -470,8 +519,8 @@
name of a color that is already defined, without curly braces, or it can
start with a curly brace, in which case it is assumed that
|\definecolor{colorname}|$\langle$\textsl{what you said}$\rangle$ will be
- valid \LaTeX\ code. In our case, we use the rbg model to manually specify
- white. (|shadethm|'s default value is {\fboxsep=0pt \fcolorbox{black}[gray]{0.92}{\phantom{XX}}} |[gray]{0.92}|)
+ valid \LaTeX\ code. In our case, we use the |rgb| model to manually specify
+ white. (|shadethm|'s default background color is {\fboxsep=0pt \fcolorbox{black}[gray]{0.92}{\phantom{XX}}} |[gray]{0.92}|)
For the \pkg{thmbox} package, use the |thmbox| key:
\begin{source}
@@ -717,6 +766,7 @@
\end{result}
As might be expected, the heading given is defined in |\listtheoremname|.
+ %And finally, you can configure |\listoftheorems| in advance by |\setlisttheoremstyle{keys}|.
\section{Extended arguments to theorem environments}
@@ -837,11 +887,11 @@
\DocInput{thmdef-shaded.dtx}
- \section{Case in point: the thmbox key}
+ \section{Case in point: the \texttt{thmbox} key}
\DocInput{thmdef-thmbox.dtx}
- \section{Case in point: the mdframed key}
+ \section{Case in point: the \texttt{mdframed} key}
\DocInput{thmdef-mdframed.dtx}
\section{How \thmtools\ finds your extensions}
@@ -983,16 +1033,15 @@
this if your title starts with an accented character, for example.
\key{name}
- (Same as title.)
+ (Same as |title|.)
\key{heading}
- (Same as title.)
+ (Same as |title|.)
\key{numbered}
Value: one of the keywords |yes|, |no| or |unless unique|. The theorem
will be numbered, not numbered, or only numbered if it occurs more than
- once in the document. (The latter requires another \LaTeX\ run and will
- not work well combined with |sibling|.)
+ once in the document. (The latter requires another \LaTeX\ run and works well combined with |sibling|.)
\key{style}
Value: the name of a style defined with |\declaretheoremstyle| or
@@ -1077,6 +1126,40 @@
An all-around |listhack| that handles both situations might come in a
cleaner rewrite of the style system.
+ \section{Known keys to \texttt{\textbackslash listoftheorems}}
+ \def\keydefaultcontext{listof}
+
+ \key{title} Value: title of |\listoftheorems|. Initially |List of Theorems|.
+
+ \key{ignore} Value: list of theorem environment names. Filter out things by environment names. Default value is list of all defined theorem environments.
+
+ \key{ignoreall} Ignore every theorem environment. This key is usually followed by keys |show| and |onlynamed|.
+
+ \key{show} Value: list of theorem environments. Leave theorems that belong to specified list and filter out others. Default value is list of all defined theorem environments.
+
+ \key{showall} The opposite effect of |ignoreall|.
+
+ \key{onlynamed} Value: list of theorem environments. Leave things that are given an optional argument and belong to specified list, and filter out others. Default value is list of all defined theorem environments.
+
+ \key{swapnumber} Value: |true| or |false|. Initially |false| and default value is |true|. No default.
+ \begin{source}
+ \begin{body}[gobble=6]
+ \listoftheorems[ignoreall, onlynamed={lemma}]
+ \listoftheorems[ignoreall, onlynamed={lemma},
+ swapnumber
+ ]
+ \end{body}
+ \end{source}
+ \begin{result}
+ \let\chapter\section
+ \let\clearpage\relax
+ \listoftheorems[ignoreall, onlynamed={lemma}]
+ \vspace{-1ex}
+ \listoftheorems[ignoreall, onlynamed={lemma}, swapnumber]
+ \end{result}
+
+ \key{numwidth} Value: a length. If |swapnumber=false|, the theorem number is typeset in a box of of width |numwidth|. Initially |1.5pc| for AMS classes and |2.3em| for others.
+
\section{Restatable -- hints and caveats}
TBD.
diff --git a/Master/texmf-dist/source/latex/thmtools/thm-kv.dtx b/Master/texmf-dist/source/latex/thmtools/thm-kv.dtx
index bdac30899d8..78591262743 100644
--- a/Master/texmf-dist/source/latex/thmtools/thm-kv.dtx
+++ b/Master/texmf-dist/source/latex/thmtools/thm-kv.dtx
@@ -210,25 +210,47 @@
}
\@for\tmp@keyname:=parent,numberwithin,within\do{%
-\define@key{thmdef}{\tmp@keyname}{\thmt@trytwice{\thmt@setparent{#1}}{}}%
+ \define@key{thmdef}{\tmp@keyname}{%
+ \thmt@trytwice{%
+ \thmt@setparent{#1}
+ \thmt@setsibling{}%
+ }{}%
+ }%
+}
+\newcommand\thmt@setparent{%
+ \def\thmt@parent
}
\@for\tmp@keyname:=sibling,numberlike,sharenumber\do{%
-\define@key{thmdef}{\tmp@keyname}{\thmt@trytwice{\thmt@setsibling{#1}}{}}%
+ \define@key{thmdef}{\tmp@keyname}{%
+ \thmt@trytwice{%
+ \thmt@setsibling{#1}%
+ \thmt@setparent{}%
+ }{}%
+ }%
+}
+\newcommand\thmt@setsibling{%
+ \def\thmt@sibling
}
\@for\tmp@keyname:=title,name,heading\do{%
-\define@key{thmdef}{\tmp@keyname}{\thmt@trytwice{\thmt@setthmname{#1}}{}}%
+ \define@key{thmdef}{\tmp@keyname}{\thmt@trytwice{\thmt@setthmname{#1}}{}}%
+}
+\newcommand\thmt@setthmname{%
+ \def\thmt@thmname
}
\@for\tmp@keyname:=unnumbered,starred\do{%
-\define@key{thmdef}{\tmp@keyname}[]{\thmt@trytwice{\thmt@isnumberedfalse}{}}%
+ \define@key{thmdef}{\tmp@keyname}[]{\thmt@trytwice{\thmt@isnumberedfalse}{}}%
}
\def\thmt@YES{yes}
\def\thmt@NO{no}
\def\thmt@UNIQUE{unless unique}
-\define@key{thmdef}{numbered}[\thmt@YES]{
+\newif\ifthmt@isnumbered
+\newif\ifthmt@isunlessunique
+
+\define@key{thmdef}{numbered}[yes]{
\def\thmt@tmp{#1}%
\thmt@trytwice{%
\ifx\thmt@tmp\thmt@YES
@@ -237,27 +259,38 @@
\thmt@isnumberedfalse
\else\ifx\thmt@tmp\thmt@UNIQUE
\RequirePackage[unq]{unique}
- \ifuniq{\thmt@envname}{%
- \thmt@isnumberedfalse
- }{%
- \thmt@isnumberedtrue
- }%
+ \thmt@isunlessuniquetrue
\else
\PackageError{thmtools}{Unknown value `#1' to key numbered}{}%
\fi\fi\fi
}{% trytwice: after definition
\ifx\thmt@tmp\thmt@UNIQUE
- \addtotheorempreheadhook[\thmt@envname]{\setuniqmark{\thmt@envname}}%
- \addtotheorempreheadhook[\thmt@envname]{\def\thmt@dummyctrautorefname{\thmt@thmname\@gobble}}
+ \ifx\thmt@parent\@empty
+ \addtotheorempreheadhook[\thmt@envname]{\setuniqmark{\thmt@envname}}%
+ \else
+ \protected@edef\thmt@tmp{%
+ % expand \thmt@envname and \thmt@parent
+ \@nx\addtotheorempreheadhook[\thmt@envname @unique]{\@nx\setuniqmark{\thmt@envname.\@nx\@nameuse{the\thmt@parent}}}%
+ \@nx\addtotheorempreheadhook[\thmt@envname @numbered]{\@nx\setuniqmark{\thmt@envname.\@nx\@nameuse{the\thmt@parent}}}%
+ \@nx\addtotheorempreheadhook[\thmt@envname @unique]{\def\@nx\thmt@dummyctrautorefname{\thmt@thmname\@nx\@gobble}}%
+ \@nx\addtotheorempreheadhook[\thmt@envname @numbered]{\def\@nx\thmt@dummyctrautorefname{\thmt@thmname\@nx\@gobble}}%
+ }%
+ \thmt@tmp
+ \fi
+ % \addtotheorempreheadhook[\thmt@envname]{\def\thmt@dummyctrautorefname{\thmt@thmname\@gobble}}%
\fi
}%
}
-\define@key{thmdef}{preheadhook}{\thmt@trytwice{}{\addtotheorempreheadhook[\thmt@envname]{#1}}}
-\define@key{thmdef}{postheadhook}{\thmt@trytwice{}{\addtotheorempostheadhook[\thmt@envname]{#1}}}
-\define@key{thmdef}{prefoothook}{\thmt@trytwice{}{\addtotheoremprefoothook[\thmt@envname]{#1}}}
-\define@key{thmdef}{postfoothook}{\thmt@trytwice{}{\addtotheorempostfoothook[\thmt@envname]{#1}}}
+\define@key{thmdef}{preheadhook}{%
+ \thmt@trytwice{}{\addtotheorempreheadhook[\thmt@envname]{#1}}}
+\define@key{thmdef}{postheadhook}{%
+ \thmt@trytwice{}{\addtotheorempostheadhook[\thmt@envname]{#1}}}
+\define@key{thmdef}{prefoothook}{%
+ \thmt@trytwice{}{\addtotheoremprefoothook[\thmt@envname]{#1}}}
+\define@key{thmdef}{postfoothook}{%
+ \thmt@trytwice{}{\addtotheorempostfoothook[\thmt@envname]{#1}}}
\define@key{thmdef}{style}{\thmt@trytwice{\thmt@setstyle{#1}}{}}
@@ -296,52 +329,116 @@
}
\fi
-\newif\ifthmt@isnumbered
-\newcommand\thmt@setparent[1]{%
- \def\thmt@parent{#1}%
-}
-\newcommand\thmt@setsibling{%
- \def\thmt@sibling
-}
-\newcommand\thmt@setthmname{%
- \def\thmt@thmname
-}
\thmt@mkextendingkeyhandler{thmdef}{thmdef}{\string\declaretheorem\space key}
\let\thmt@newtheorem\newtheorem
+% \declaretheorem[option list 1]{thmname list}[option list 1]
+% #1 = option list 1
+% #2 = thmname list
\newcommand\declaretheorem[2][]{%
+ % TODO: use \NewDocumentCommand from xparse?
+ % xparse will be part of latex2e format from latex2e 2020 Oct.
+ \@ifnextchar[%
+ {\declaretheorem@i{#1}{#2}}
+ {\declaretheorem@i{#1}{#2}[]}%
+}
+\@onlypreamble\declaretheorem
+
+% #1 = option list 1
+% #2 = thmname list
+% #3 = option list 2
+\def\declaretheorem@i#1#2[#3]{%
+ \@for\thmt@tmp:=#2\do{%
+ % strip spaces, \KV@@sp@def is defined in keyval.sty
+ \@xa\KV@@sp@def\@xa\thmt@tmp\@xa{\thmt@tmp}%
+ \@xa\declaretheorem@ii\@xa{\thmt@tmp}{#1,#3}%
+ }%
+}
+
+% #1 = single thmname (#1 and #2 are exchanged)
+% #2 = option list
+\def\declaretheorem@ii#1#2{%
% why was that here?
%\let\thmt@theoremdefiner\thmt@original@newtheorem
- \def\thmt@envname{#2}%
- \thmt@setthmname{\thmt@modifycase #2}%
+ % init options
\thmt@setparent{}%
\thmt@setsibling{}%
- \thmt@isnumberedtrue%
- \@thmt@firstkeysettrue%
- \kvsetkeys{thmdef0}{#1}%
- \kvsetkeys{thmdef}{#1}%
+ \thmt@isnumberedtrue
+ \thmt@isunlessuniquefalse
+ \def\thmt@envname{#1}%
+ \thmt@setthmname{\thmt@modifycase #1}%
+ % use true code in \thmt@trytwice{<true>}{<false>}
+ \@thmt@firstkeysettrue
+ % parse options
+ \kvsetkeys{thmdef0}{#2}% parse option "style" first
+ \kvsetkeys{thmdef}{#2}%
+ % call patched \newtheorem
+ \ifthmt@isunlessunique
+ \ifx\thmt@parent\@empty
+ % define normal "unless unique" thm env
+ \ifuniq{#1}{\thmt@isnumberedfalse}{\thmt@isnumberedtrue}%
+ \declaretheorem@iii{#1}%
+ \else
+ % define special "unless unique" thm env,
+ % when "numbered=unless unique" and "numberwithin=<counter>" are both used
+ \declaretheorem@iv{#1}%
+ \thmt@isnumberedtrue
+ \declaretheorem@iii{#1@numbered}%
+ \thmt@isnumberedfalse
+ \declaretheorem@iii{#1@unique}%
+ \fi
+ \else
+ % define normal thm env
+ \declaretheorem@iii{#1}%
+ \fi
+ % use false code in \thmt@trytwice{<true>}{<false>}
+ \def\thmt@envname{#1}%
+ \@thmt@firstkeysetfalse
+ % uniquely ugly kludge: some keys make only sense afterwards.
+ % and it gets kludgier: again, the default-inherited
+ % keys need to have a go at it.
+ \kvsetkeys{thmdef0}{#2}%
+ \kvsetkeys{thmdef}{#2}%
+}
+
+% define normal thm env, call \thmt@newtheorem
+\def\declaretheorem@iii#1{%
\protected@edef\thmt@tmp{%
\@nx\thmt@newtheorem
- \ifthmt@isnumbered\else *\fi
- {#2}%
- \ifx\thmt@sibling\@empty\else [\thmt@sibling]\fi
- {\thmt@thmname}%
- \ifx\thmt@parent\@empty\else [\thmt@parent]\fi
+ \ifthmt@isnumbered
+ {#1}%
+ \ifx\thmt@sibling\@empty\else [\thmt@sibling]\fi
+ {\thmt@thmname}%
+ \ifx\thmt@parent\@empty\else [\thmt@parent]\fi
+ \else
+ *{#1}{\thmt@thmname}%
+ \fi
\relax% added so we can delimited-read everything later
- % (recall newtheorem is patched)
- }%\show\thmt@tmp
+ }%
+ \thmt@debug{Define theorem `#1' by ^^J\meaning\thmt@tmp}%
+ \thmt@tmp
+}
+
+% define special thm env
+\def\declaretheorem@iv#1{%
+ \protected@edef\thmt@tmp{%
+ % expand \thmt@envname and \thmt@parent
+ \@nx\newenvironment{#1}{%
+ \@nx\ifuniq{\thmt@envname.\@nx\@nameuse{the\thmt@parent}}{%
+ \def\@nx\thmt@rawenvname{#1@unique}%
+ }{%
+ \def\@nx\thmt@rawenvname{#1@numbered}%
+ }%
+ \begin{\@nx\thmt@rawenvname}%
+ }{%
+ \end{\@nx\thmt@rawenvname}%
+ }%
+ }%
+ \thmt@debug{Define special theorem `#1' by ^^J\meaning\thmt@tmp}%
\thmt@tmp
- % uniquely ugly kludge: some keys make only sense
- % afterwards.
- % and it gets kludgier: again, the default-inherited
- % keys need to have a go at it.
- \@thmt@firstkeysetfalse%
- \kvsetkeys{thmdef0}{#1}%
- \kvsetkeys{thmdef}{#1}%
}
-\@onlypreamble\declaretheorem
\providecommand\thmt@quark{\thmt@quark}
@@ -379,13 +476,14 @@
\def\thmt@shortoptarg{#1}%
\fi
}
-\def\thmt@splitopt#1=#2\thmt@quark{%
- \def\thmt@tmpkey{#1}%
- \ifx\thmt@tmpkey\@empty
- \def\thmt@tmpkey{\thmt@quark}%
- \fi
- \@onelevel@sanitize\thmt@tmpkey
-}
+% FIXME: not used?
+% \def\thmt@splitopt#1=#2\thmt@quark{%
+% \def\thmt@tmpkey{#1}%
+% \ifx\thmt@tmpkey\@empty
+% \def\thmt@tmpkey{\thmt@quark}%
+% \fi
+% \@onelevel@sanitize\thmt@tmpkey
+% }
\def\thmt@thmuse@families{thm@track@keys}
diff --git a/Master/texmf-dist/source/latex/thmtools/thm-listof.dtx b/Master/texmf-dist/source/latex/thmtools/thm-listof.dtx
index 39603b4341d..cb5b7e380a4 100644
--- a/Master/texmf-dist/source/latex/thmtools/thm-listof.dtx
+++ b/Master/texmf-dist/source/latex/thmtools/thm-listof.dtx
@@ -80,16 +80,15 @@
\newcommand\listoftheorems[1][]{%
%% much hacking here to pick up the definition from the class
%% without oodles of conditionals.
- \bgroup
+ \begingroup
\setlisttheoremstyle{#1}%
\let\listfigurename\listtheoremname
\def\contentsline##1{%
\csname thmt@contentsline@##1\endcsname{##1}%
}%
\@for\thmt@envname:=\thmt@allenvs\do{%
- \@xa\protected@edef\csname l@\thmt@envname\endcsname{% CHECK: why p@edef?
- \@nx\@dottedtocline{1}{1.5em}{\@nx\thmt@listnumwidth}%
- }%
+ % CHECK: is \cs{l@\thmt@envname} repeatedly defined?
+ \thmtlo@newentry
}%
\let\thref@starttoc\@starttoc
\def\@starttoc##1{\thref@starttoc{loe}}%
@@ -108,7 +107,7 @@
}%
%\expandafter
\listoffigures
- \egroup
+ \endgroup
}
\newcommand\setlisttheoremstyle[1]{%
@@ -123,25 +122,60 @@
% FMi 2019-09-31 allow local title
\define@key{thmt-listof}{title}{\def\listtheoremname{#1}}
% -- FMi
+\newif\ifthmt@listswap
+\def\thmt@TRUE{true}
+\def\thmt@FALSE{false}
+\define@key{thmt-listof}{swapnumber}[true]{%
+ \def\thmt@tmp{#1}%
+ \ifx\thmt@tmp\thmt@TRUE
+ \thmt@listswaptrue
+ \else\ifx\thmt@tmp\thmt@FALSE
+ \thmt@listswapfalse
+ \else
+ \PackageError{thmtools}{Unknown value `#1' to key swapnumber}{}%
+ \fi\fi
+}
-\providecommand\thmt@listnumwidth{2.3em}
+\ifdefined\@tocline
+ % for ams classes (amsart.cls, amsproc.cls, amsbook.cls) which
+ % don't use \@dottedtocline and don't provide \@dotsep
+ \def\thmtlo@newentry{%
+ \@xa\def\csname l@\thmt@envname\endcsname{% CHECK: why p@edef?
+ % similar to \l@figure defined in ams classes
+ \@tocline{0}{3pt plus2pt}{0pt}{\thmt@listnumwidth}{}%
+ }%
+ }
+ \providecommand*\thmt@listnumwidth{1.5pc}
+\else
+ \def\thmtlo@newentry{%
+ \@xa\def\csname l@\thmt@envname\endcsname{% CHECK: why p@edef?
+ \@dottedtocline{1}{1.5em}{\thmt@listnumwidth}%
+ }%
+ }
+ \providecommand*\thmt@listnumwidth{2.3em}
+\fi
\providecommand\thmtformatoptarg[1]{ (#1)}
\newcommand\thmt@mklistcmd{%
- \@xa\protected@edef\csname l@\thmt@envname\endcsname{% CHECK: why p@edef?
- \@nx\@dottedtocline{1}{1.5em}{\@nx\thmt@listnumwidth}%
- }%
+ \thmtlo@newentry
\ifthmt@isstarred
\@xa\def\csname ll@\thmt@envname\endcsname{%
- \protect\numberline{\protect\let\protect\autodot\protect\@empty}%
+ \protect\ifthmt@listswap
+ \protect\else
+ \protect\numberline{\protect\let\protect\autodot\protect\@empty}%
+ \protect\fi
\thmt@thmname
\ifx\@empty\thmt@shortoptarg\else\protect\thmtformatoptarg{\thmt@shortoptarg}\fi
}%
\else
\@xa\def\csname ll@\thmt@envname\endcsname{%
- \protect\numberline{\csname the\thmt@envname\endcsname}%
- \thmt@thmname
+ \protect\ifthmt@listswap
+ \thmt@thmname~\csname the\thmt@envname\endcsname
+ \protect\else
+ \protect\numberline{\csname the\thmt@envname\endcsname}%
+ \thmt@thmname
+ \protect\fi
\ifx\@empty\thmt@shortoptarg\else\protect\thmtformatoptarg{\thmt@shortoptarg}\fi
}%
\fi
diff --git a/Master/texmf-dist/source/latex/thmtools/thm-llncs.dtx b/Master/texmf-dist/source/latex/thmtools/thm-llncs.dtx
index 134acb18b7c..994067050e9 100644
--- a/Master/texmf-dist/source/latex/thmtools/thm-llncs.dtx
+++ b/Master/texmf-dist/source/latex/thmtools/thm-llncs.dtx
@@ -71,7 +71,7 @@
{\thmt@thmname}%
\ifthmt@hasparent [\thmt@parent]\fi
{\thmt@style@headfont}{\thmt@style@bodyfont}%
- }
+ }%
\thmt@args
\thmt@newtheorem@postdefinition
}
diff --git a/Master/texmf-dist/source/latex/thmtools/thmdef-mdframed.dtx b/Master/texmf-dist/source/latex/thmtools/thmdef-mdframed.dtx
index 85c5d9bd2d1..cae264b04eb 100644
--- a/Master/texmf-dist/source/latex/thmtools/thmdef-mdframed.dtx
+++ b/Master/texmf-dist/source/latex/thmtools/thmdef-mdframed.dtx
@@ -24,8 +24,7 @@
\thmt@trytwice{}{%
\RequirePackage{mdframed}%
\RequirePackage{thm-patch}%
- \addtotheorempreheadhook[\thmt@envname]{%
- \begin{mdframed}[#1]}%
+ \addtotheorempreheadhook[\thmt@envname]{\begin{mdframed}[#1]}%
\addtotheorempostfoothook[\thmt@envname]{\end{mdframed}}%
}%
}
diff --git a/Master/texmf-dist/source/latex/thmtools/unique.dtx b/Master/texmf-dist/source/latex/thmtools/unique.dtx
index bf013ca6d48..f2fff48a07e 100644
--- a/Master/texmf-dist/source/latex/thmtools/unique.dtx
+++ b/Master/texmf-dist/source/latex/thmtools/unique.dtx
@@ -15,7 +15,7 @@
%<*code>
%\fi
% Two macros are provided: |\setuniqmark| takes a single parameter,
-% the name, which should be a string of letters. |\ifuniqmark| takes
+% the name, which should be a string of letters. |\ifuniq| takes
% three parameters: a name, a true-part and a false-part. The true
% part is executed if and only if there was exactly one call to
% |\setuniqmark| with the given name during the previous \LaTeX\ run.
@@ -58,17 +58,18 @@
% \begin{macrocode}
\newcommand\setuniqmark[1]{%
\expandafter\ifx\csname uniq@now@#1\endcsname\relax
- \global\@namedef{uniq@now@#1}{\uniq@ONE}%
+ \global\@namedef{uniq@now@#1}{\uniq@ONE}%
\else
- \expandafter\ifx\csname uniq@now@#1\endcsname\uniq@MANY\else
- \immediate\write\uniq@channel{%
- \string\uniq@setmany{#1}%
- }%
- \ifuniq{#1}{%
- \uniq@warnnotunique{#1}%
- }{}%
- \fi
- \global\@namedef{uniq@now@#1}{\uniq@MANY}%
+ \expandafter\ifx\csname uniq@now@#1\endcsname\uniq@MANY
+ \else
+ \immediate\write\uniq@channel{%
+ \string\uniq@setmany{#1}%
+ }%
+ \ifuniq{#1}{%
+ \uniq@warnnotunique{#1}%
+ }{}%
+ \fi
+ \global\@namedef{uniq@now@#1}{\uniq@MANY}%
\fi
}
% \end{macrocode}
@@ -77,19 +78,19 @@
% \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
+% otherwise execute the third argument. Note that 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?
+% 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
+ \expandafter\@secondoftwo
\else
- \expandafter\@firstoftwo
+ \expandafter\@firstoftwo
\fi
}
% \end{macrocode}
@@ -124,11 +125,11 @@
% \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
+ \PackageWarningNoLine{uniq}{%
+ `#1' is unique now.\MessageBreak
+ Rerun LaTeX to pick up the change%
+ }%
+ \@uniq@reruntrue
\fi
}
% \end{macrocode}
@@ -153,10 +154,10 @@
% \begin{macrocode}
\def\uniq@maybesuggestrerun{%
\if@uniq@rerun
- \PackageWarningNoLine{uniq}{%
- Uniquenesses have changed. \MessageBreak
- Rerun LaTeX to pick up the change%
- }%
+ \PackageWarningNoLine{uniq}{%
+ Uniquenesses have changed. \MessageBreak
+ Rerun LaTeX to pick up the change%
+ }%
\fi
}
% \end{macrocode}
diff --git a/Master/texmf-dist/tex/latex/thmtools/aliasctr.sty b/Master/texmf-dist/tex/latex/thmtools/aliasctr.sty
index bd1ee1a5a29..12a94a030a5 100644
--- a/Master/texmf-dist/tex/latex/thmtools/aliasctr.sty
+++ b/Master/texmf-dist/tex/latex/thmtools/aliasctr.sty
@@ -22,7 +22,7 @@
%%
%%
\NeedsTeXFormat {LaTeX2e}
-\ProvidesPackage {aliasctr}[2020/07/16 v69]
+\ProvidesPackage {aliasctr}[2020/08/01 v0.72]
\def\aliasctr@f@llow#1#2\@nil#3{%
\ifx#1\@elt
\noexpand #3%
diff --git a/Master/texmf-dist/tex/latex/thmtools/parseargs.sty b/Master/texmf-dist/tex/latex/thmtools/parseargs.sty
index 701bc1d06d2..81a1b4740ee 100644
--- a/Master/texmf-dist/tex/latex/thmtools/parseargs.sty
+++ b/Master/texmf-dist/tex/latex/thmtools/parseargs.sty
@@ -22,7 +22,7 @@
%%
%%
\NeedsTeXFormat {LaTeX2e}
-\ProvidesPackage {parseargs}[2020/07/16 v69]
+\ProvidesPackage {parseargs}[2020/08/01 v0.72]
\newtoks\@parsespec
\def\parse@endquark{\parse@endquark}
diff --git a/Master/texmf-dist/tex/latex/thmtools/thm-amsthm.sty b/Master/texmf-dist/tex/latex/thmtools/thm-amsthm.sty
index 98a44a995b1..a2a09cfc803 100644
--- a/Master/texmf-dist/tex/latex/thmtools/thm-amsthm.sty
+++ b/Master/texmf-dist/tex/latex/thmtools/thm-amsthm.sty
@@ -22,7 +22,7 @@
%%
%%
\NeedsTeXFormat {LaTeX2e}
-\ProvidesPackage {thm-amsthm}[2020/07/16 v69]
+\ProvidesPackage {thm-amsthm}[2020/08/01 v0.72]
\providecommand\thmt@space{ }
\define@key{thmstyle}{spaceabove}{%
diff --git a/Master/texmf-dist/tex/latex/thmtools/thm-autoref.sty b/Master/texmf-dist/tex/latex/thmtools/thm-autoref.sty
index bed1719f64c..64448e1e184 100644
--- a/Master/texmf-dist/tex/latex/thmtools/thm-autoref.sty
+++ b/Master/texmf-dist/tex/latex/thmtools/thm-autoref.sty
@@ -22,7 +22,7 @@
%%
%%
\NeedsTeXFormat {LaTeX2e}
-\ProvidesPackage {thm-autoref}[2020/07/16 v69]
+\ProvidesPackage {thm-autoref}[2020/08/01 v0.72]
\RequirePackage{thm-patch, aliasctr, parseargs, keyval}
diff --git a/Master/texmf-dist/tex/latex/thmtools/thm-beamer.sty b/Master/texmf-dist/tex/latex/thmtools/thm-beamer.sty
index 11d079608ec..f9b31deafdc 100644
--- a/Master/texmf-dist/tex/latex/thmtools/thm-beamer.sty
+++ b/Master/texmf-dist/tex/latex/thmtools/thm-beamer.sty
@@ -22,7 +22,7 @@
%%
%%
\NeedsTeXFormat {LaTeX2e}
-\ProvidesPackage {thm-beamer}[2020/07/16 v69]
+\ProvidesPackage {thm-beamer}[2020/08/01 v0.72]
\newif\ifthmt@hasoverlay
\def\thmt@parsetheoremargs#1{%
\parse{%
diff --git a/Master/texmf-dist/tex/latex/thmtools/thm-kv.sty b/Master/texmf-dist/tex/latex/thmtools/thm-kv.sty
index d6c16edd724..9c118ff5a98 100644
--- a/Master/texmf-dist/tex/latex/thmtools/thm-kv.sty
+++ b/Master/texmf-dist/tex/latex/thmtools/thm-kv.sty
@@ -22,7 +22,7 @@
%%
%%
\NeedsTeXFormat {LaTeX2e}
-\ProvidesPackage {thm-kv}[2020/07/16 v69]
+\ProvidesPackage {thm-kv}[2020/08/01 v0.72]
\let\@xa\expandafter
\let\@nx\noexpand
@@ -208,25 +208,47 @@
}
\@for\tmp@keyname:=parent,numberwithin,within\do{%
-\define@key{thmdef}{\tmp@keyname}{\thmt@trytwice{\thmt@setparent{#1}}{}}%
+ \define@key{thmdef}{\tmp@keyname}{%
+ \thmt@trytwice{%
+ \thmt@setparent{#1}
+ \thmt@setsibling{}%
+ }{}%
+ }%
+}
+\newcommand\thmt@setparent{%
+ \def\thmt@parent
}
\@for\tmp@keyname:=sibling,numberlike,sharenumber\do{%
-\define@key{thmdef}{\tmp@keyname}{\thmt@trytwice{\thmt@setsibling{#1}}{}}%
+ \define@key{thmdef}{\tmp@keyname}{%
+ \thmt@trytwice{%
+ \thmt@setsibling{#1}%
+ \thmt@setparent{}%
+ }{}%
+ }%
+}
+\newcommand\thmt@setsibling{%
+ \def\thmt@sibling
}
\@for\tmp@keyname:=title,name,heading\do{%
-\define@key{thmdef}{\tmp@keyname}{\thmt@trytwice{\thmt@setthmname{#1}}{}}%
+ \define@key{thmdef}{\tmp@keyname}{\thmt@trytwice{\thmt@setthmname{#1}}{}}%
+}
+\newcommand\thmt@setthmname{%
+ \def\thmt@thmname
}
\@for\tmp@keyname:=unnumbered,starred\do{%
-\define@key{thmdef}{\tmp@keyname}[]{\thmt@trytwice{\thmt@isnumberedfalse}{}}%
+ \define@key{thmdef}{\tmp@keyname}[]{\thmt@trytwice{\thmt@isnumberedfalse}{}}%
}
\def\thmt@YES{yes}
\def\thmt@NO{no}
\def\thmt@UNIQUE{unless unique}
-\define@key{thmdef}{numbered}[\thmt@YES]{
+\newif\ifthmt@isnumbered
+\newif\ifthmt@isunlessunique
+
+\define@key{thmdef}{numbered}[yes]{
\def\thmt@tmp{#1}%
\thmt@trytwice{%
\ifx\thmt@tmp\thmt@YES
@@ -235,26 +257,37 @@
\thmt@isnumberedfalse
\else\ifx\thmt@tmp\thmt@UNIQUE
\RequirePackage[unq]{unique}
- \ifuniq{\thmt@envname}{%
- \thmt@isnumberedfalse
- }{%
- \thmt@isnumberedtrue
- }%
+ \thmt@isunlessuniquetrue
\else
\PackageError{thmtools}{Unknown value `#1' to key numbered}{}%
\fi\fi\fi
}{% trytwice: after definition
\ifx\thmt@tmp\thmt@UNIQUE
- \addtotheorempreheadhook[\thmt@envname]{\setuniqmark{\thmt@envname}}%
- \addtotheorempreheadhook[\thmt@envname]{\def\thmt@dummyctrautorefname{\thmt@thmname\@gobble}}
+ \ifx\thmt@parent\@empty
+ \addtotheorempreheadhook[\thmt@envname]{\setuniqmark{\thmt@envname}}%
+ \else
+ \protected@edef\thmt@tmp{%
+ % expand \thmt@envname and \thmt@parent
+ \@nx\addtotheorempreheadhook[\thmt@envname @unique]{\@nx\setuniqmark{\thmt@envname.\@nx\@nameuse{the\thmt@parent}}}%
+ \@nx\addtotheorempreheadhook[\thmt@envname @numbered]{\@nx\setuniqmark{\thmt@envname.\@nx\@nameuse{the\thmt@parent}}}%
+ \@nx\addtotheorempreheadhook[\thmt@envname @unique]{\def\@nx\thmt@dummyctrautorefname{\thmt@thmname\@nx\@gobble}}%
+ \@nx\addtotheorempreheadhook[\thmt@envname @numbered]{\def\@nx\thmt@dummyctrautorefname{\thmt@thmname\@nx\@gobble}}%
+ }%
+ \thmt@tmp
+ \fi
+ % \addtotheorempreheadhook[\thmt@envname]{\def\thmt@dummyctrautorefname{\thmt@thmname\@gobble}}%
\fi
}%
}
-\define@key{thmdef}{preheadhook}{\thmt@trytwice{}{\addtotheorempreheadhook[\thmt@envname]{#1}}}
-\define@key{thmdef}{postheadhook}{\thmt@trytwice{}{\addtotheorempostheadhook[\thmt@envname]{#1}}}
-\define@key{thmdef}{prefoothook}{\thmt@trytwice{}{\addtotheoremprefoothook[\thmt@envname]{#1}}}
-\define@key{thmdef}{postfoothook}{\thmt@trytwice{}{\addtotheorempostfoothook[\thmt@envname]{#1}}}
+\define@key{thmdef}{preheadhook}{%
+ \thmt@trytwice{}{\addtotheorempreheadhook[\thmt@envname]{#1}}}
+\define@key{thmdef}{postheadhook}{%
+ \thmt@trytwice{}{\addtotheorempostheadhook[\thmt@envname]{#1}}}
+\define@key{thmdef}{prefoothook}{%
+ \thmt@trytwice{}{\addtotheoremprefoothook[\thmt@envname]{#1}}}
+\define@key{thmdef}{postfoothook}{%
+ \thmt@trytwice{}{\addtotheorempostfoothook[\thmt@envname]{#1}}}
\define@key{thmdef}{style}{\thmt@trytwice{\thmt@setstyle{#1}}{}}
@@ -288,52 +321,105 @@
}
\fi
-\newif\ifthmt@isnumbered
-\newcommand\thmt@setparent[1]{%
- \def\thmt@parent{#1}%
-}
-\newcommand\thmt@setsibling{%
- \def\thmt@sibling
-}
-\newcommand\thmt@setthmname{%
- \def\thmt@thmname
-}
-
\thmt@mkextendingkeyhandler{thmdef}{thmdef}{\string\declaretheorem\space key}
\let\thmt@newtheorem\newtheorem
\newcommand\declaretheorem[2][]{%
+ % TODO: use \NewDocumentCommand from xparse?
+ % xparse will be part of latex2e format from latex2e 2020 Oct.
+ \@ifnextchar[%
+ {\declaretheorem@i{#1}{#2}}
+ {\declaretheorem@i{#1}{#2}[]}%
+}
+\@onlypreamble\declaretheorem
+
+\def\declaretheorem@i#1#2[#3]{%
+ \@for\thmt@tmp:=#2\do{%
+ % strip spaces, \KV@@sp@def is defined in keyval.sty
+ \@xa\KV@@sp@def\@xa\thmt@tmp\@xa{\thmt@tmp}%
+ \@xa\declaretheorem@ii\@xa{\thmt@tmp}{#1,#3}%
+ }%
+}
+
+\def\declaretheorem@ii#1#2{%
% why was that here?
%\let\thmt@theoremdefiner\thmt@original@newtheorem
- \def\thmt@envname{#2}%
- \thmt@setthmname{\thmt@modifycase #2}%
+ % init options
\thmt@setparent{}%
\thmt@setsibling{}%
- \thmt@isnumberedtrue%
- \@thmt@firstkeysettrue%
- \kvsetkeys{thmdef0}{#1}%
- \kvsetkeys{thmdef}{#1}%
+ \thmt@isnumberedtrue
+ \thmt@isunlessuniquefalse
+ \def\thmt@envname{#1}%
+ \thmt@setthmname{\thmt@modifycase #1}%
+ % use true code in \thmt@trytwice{<true>}{<false>}
+ \@thmt@firstkeysettrue
+ % parse options
+ \kvsetkeys{thmdef0}{#2}% parse option "style" first
+ \kvsetkeys{thmdef}{#2}%
+ % call patched \newtheorem
+ \ifthmt@isunlessunique
+ \ifx\thmt@parent\@empty
+ % define normal "unless unique" thm env
+ \ifuniq{#1}{\thmt@isnumberedfalse}{\thmt@isnumberedtrue}%
+ \declaretheorem@iii{#1}%
+ \else
+ % define special "unless unique" thm env,
+ % when "numbered=unless unique" and "numberwithin=<counter>" are both used
+ \declaretheorem@iv{#1}%
+ \thmt@isnumberedtrue
+ \declaretheorem@iii{#1@numbered}%
+ \thmt@isnumberedfalse
+ \declaretheorem@iii{#1@unique}%
+ \fi
+ \else
+ % define normal thm env
+ \declaretheorem@iii{#1}%
+ \fi
+ % use false code in \thmt@trytwice{<true>}{<false>}
+ \def\thmt@envname{#1}%
+ \@thmt@firstkeysetfalse
+ % uniquely ugly kludge: some keys make only sense afterwards.
+ % and it gets kludgier: again, the default-inherited
+ % keys need to have a go at it.
+ \kvsetkeys{thmdef0}{#2}%
+ \kvsetkeys{thmdef}{#2}%
+}
+
+\def\declaretheorem@iii#1{%
\protected@edef\thmt@tmp{%
\@nx\thmt@newtheorem
- \ifthmt@isnumbered\else *\fi
- {#2}%
- \ifx\thmt@sibling\@empty\else [\thmt@sibling]\fi
- {\thmt@thmname}%
- \ifx\thmt@parent\@empty\else [\thmt@parent]\fi
+ \ifthmt@isnumbered
+ {#1}%
+ \ifx\thmt@sibling\@empty\else [\thmt@sibling]\fi
+ {\thmt@thmname}%
+ \ifx\thmt@parent\@empty\else [\thmt@parent]\fi
+ \else
+ *{#1}{\thmt@thmname}%
+ \fi
\relax% added so we can delimited-read everything later
- % (recall newtheorem is patched)
- }%\show\thmt@tmp
+ }%
+ \thmt@debug{Define theorem `#1' by ^^J\meaning\thmt@tmp}%
+ \thmt@tmp
+}
+
+\def\declaretheorem@iv#1{%
+ \protected@edef\thmt@tmp{%
+ % expand \thmt@envname and \thmt@parent
+ \@nx\newenvironment{#1}{%
+ \@nx\ifuniq{\thmt@envname.\@nx\@nameuse{the\thmt@parent}}{%
+ \def\@nx\thmt@rawenvname{#1@unique}%
+ }{%
+ \def\@nx\thmt@rawenvname{#1@numbered}%
+ }%
+ \begin{\@nx\thmt@rawenvname}%
+ }{%
+ \end{\@nx\thmt@rawenvname}%
+ }%
+ }%
+ \thmt@debug{Define special theorem `#1' by ^^J\meaning\thmt@tmp}%
\thmt@tmp
- % uniquely ugly kludge: some keys make only sense
- % afterwards.
- % and it gets kludgier: again, the default-inherited
- % keys need to have a go at it.
- \@thmt@firstkeysetfalse%
- \kvsetkeys{thmdef0}{#1}%
- \kvsetkeys{thmdef}{#1}%
}
-\@onlypreamble\declaretheorem
\providecommand\thmt@quark{\thmt@quark}
@@ -370,13 +456,6 @@
\def\thmt@shortoptarg{#1}%
\fi
}
-\def\thmt@splitopt#1=#2\thmt@quark{%
- \def\thmt@tmpkey{#1}%
- \ifx\thmt@tmpkey\@empty
- \def\thmt@tmpkey{\thmt@quark}%
- \fi
- \@onelevel@sanitize\thmt@tmpkey
-}
\def\thmt@thmuse@families{thm@track@keys}
diff --git a/Master/texmf-dist/tex/latex/thmtools/thm-listof.sty b/Master/texmf-dist/tex/latex/thmtools/thm-listof.sty
index 69286d9eb42..f0856dd0eff 100644
--- a/Master/texmf-dist/tex/latex/thmtools/thm-listof.sty
+++ b/Master/texmf-dist/tex/latex/thmtools/thm-listof.sty
@@ -22,7 +22,7 @@
%%
%%
\NeedsTeXFormat {LaTeX2e}
-\ProvidesPackage {thm-listof}[2020/07/16 v69]
+\ProvidesPackage {thm-listof}[2020/08/01 v0.72]
\let\@xa=\expandafter
\let\@nx=\noexpand
\RequirePackage{thm-patch,keyval,kvsetkeys}
@@ -45,16 +45,15 @@
\newcommand\listoftheorems[1][]{%
%% much hacking here to pick up the definition from the class
%% without oodles of conditionals.
- \bgroup
+ \begingroup
\setlisttheoremstyle{#1}%
\let\listfigurename\listtheoremname
\def\contentsline##1{%
\csname thmt@contentsline@##1\endcsname{##1}%
}%
\@for\thmt@envname:=\thmt@allenvs\do{%
- \@xa\protected@edef\csname l@\thmt@envname\endcsname{% CHECK: why p@edef?
- \@nx\@dottedtocline{1}{1.5em}{\@nx\thmt@listnumwidth}%
- }%
+ % CHECK: is \cs{l@\thmt@envname} repeatedly defined?
+ \thmtlo@newentry
}%
\let\thref@starttoc\@starttoc
\def\@starttoc##1{\thref@starttoc{loe}}%
@@ -73,7 +72,7 @@
}%
%\expandafter
\listoffigures
- \egroup
+ \endgroup
}
\newcommand\setlisttheoremstyle[1]{%
@@ -86,25 +85,60 @@
\define@key{thmt-listof}{ignoreall}[true]{\ignoretheorems{\thmt@allenvs}}
\define@key{thmt-listof}{showall}[true]{\showtheorems{\thmt@allenvs}}
\define@key{thmt-listof}{title}{\def\listtheoremname{#1}}
+\newif\ifthmt@listswap
+\def\thmt@TRUE{true}
+\def\thmt@FALSE{false}
+\define@key{thmt-listof}{swapnumber}[true]{%
+ \def\thmt@tmp{#1}%
+ \ifx\thmt@tmp\thmt@TRUE
+ \thmt@listswaptrue
+ \else\ifx\thmt@tmp\thmt@FALSE
+ \thmt@listswapfalse
+ \else
+ \PackageError{thmtools}{Unknown value `#1' to key swapnumber}{}%
+ \fi\fi
+}
-\providecommand\thmt@listnumwidth{2.3em}
+\ifdefined\@tocline
+ % for ams classes (amsart.cls, amsproc.cls, amsbook.cls) which
+ % don't use \@dottedtocline and don't provide \@dotsep
+ \def\thmtlo@newentry{%
+ \@xa\def\csname l@\thmt@envname\endcsname{% CHECK: why p@edef?
+ % similar to \l@figure defined in ams classes
+ \@tocline{0}{3pt plus2pt}{0pt}{\thmt@listnumwidth}{}%
+ }%
+ }
+ \providecommand*\thmt@listnumwidth{1.5pc}
+\else
+ \def\thmtlo@newentry{%
+ \@xa\def\csname l@\thmt@envname\endcsname{% CHECK: why p@edef?
+ \@dottedtocline{1}{1.5em}{\thmt@listnumwidth}%
+ }%
+ }
+ \providecommand*\thmt@listnumwidth{2.3em}
+\fi
\providecommand\thmtformatoptarg[1]{ (#1)}
\newcommand\thmt@mklistcmd{%
- \@xa\protected@edef\csname l@\thmt@envname\endcsname{% CHECK: why p@edef?
- \@nx\@dottedtocline{1}{1.5em}{\@nx\thmt@listnumwidth}%
- }%
+ \thmtlo@newentry
\ifthmt@isstarred
\@xa\def\csname ll@\thmt@envname\endcsname{%
- \protect\numberline{\protect\let\protect\autodot\protect\@empty}%
+ \protect\ifthmt@listswap
+ \protect\else
+ \protect\numberline{\protect\let\protect\autodot\protect\@empty}%
+ \protect\fi
\thmt@thmname
\ifx\@empty\thmt@shortoptarg\else\protect\thmtformatoptarg{\thmt@shortoptarg}\fi
}%
\else
\@xa\def\csname ll@\thmt@envname\endcsname{%
- \protect\numberline{\csname the\thmt@envname\endcsname}%
- \thmt@thmname
+ \protect\ifthmt@listswap
+ \thmt@thmname~\csname the\thmt@envname\endcsname
+ \protect\else
+ \protect\numberline{\csname the\thmt@envname\endcsname}%
+ \thmt@thmname
+ \protect\fi
\ifx\@empty\thmt@shortoptarg\else\protect\thmtformatoptarg{\thmt@shortoptarg}\fi
}%
\fi
diff --git a/Master/texmf-dist/tex/latex/thmtools/thm-llncs.sty b/Master/texmf-dist/tex/latex/thmtools/thm-llncs.sty
index fab0ac860bf..d1eb924ba75 100644
--- a/Master/texmf-dist/tex/latex/thmtools/thm-llncs.sty
+++ b/Master/texmf-dist/tex/latex/thmtools/thm-llncs.sty
@@ -22,7 +22,7 @@
%%
%%
\NeedsTeXFormat {LaTeX2e}
-\ProvidesPackage {thm-llncs}[2020/07/16 v69]
+\ProvidesPackage {thm-llncs}[2020/08/01 v0.72]
\@ifclasslater{llncs}{2010/04/15}{}{%
\PackageWarningNoLine{thmtools}{%
LLNCS.cls too old, not supported by thmtools
@@ -70,7 +70,7 @@
{\thmt@thmname}%
\ifthmt@hasparent [\thmt@parent]\fi
{\thmt@style@headfont}{\thmt@style@bodyfont}%
- }
+ }%
\thmt@args
\thmt@newtheorem@postdefinition
}
diff --git a/Master/texmf-dist/tex/latex/thmtools/thm-ntheorem.sty b/Master/texmf-dist/tex/latex/thmtools/thm-ntheorem.sty
index f940da8c5ca..516468a1cac 100644
--- a/Master/texmf-dist/tex/latex/thmtools/thm-ntheorem.sty
+++ b/Master/texmf-dist/tex/latex/thmtools/thm-ntheorem.sty
@@ -22,7 +22,7 @@
%%
%%
\NeedsTeXFormat {LaTeX2e}
-\ProvidesPackage {thm-ntheorem}[2020/07/16 v69]
+\ProvidesPackage {thm-ntheorem}[2020/08/01 v0.72]
\providecommand\thmt@space{ }
diff --git a/Master/texmf-dist/tex/latex/thmtools/thm-patch.sty b/Master/texmf-dist/tex/latex/thmtools/thm-patch.sty
index 53f866efd15..0e965779859 100644
--- a/Master/texmf-dist/tex/latex/thmtools/thm-patch.sty
+++ b/Master/texmf-dist/tex/latex/thmtools/thm-patch.sty
@@ -22,7 +22,7 @@
%%
%%
\NeedsTeXFormat {LaTeX2e}
-\ProvidesPackage {thm-patch}[2020/07/16 v69]
+\ProvidesPackage {thm-patch}[2020/08/01 v0.72]
\RequirePackage{parseargs}
\newif\ifthmt@isstarred
diff --git a/Master/texmf-dist/tex/latex/thmtools/thm-restate.sty b/Master/texmf-dist/tex/latex/thmtools/thm-restate.sty
index 708e37d7e73..21b999c2d11 100644
--- a/Master/texmf-dist/tex/latex/thmtools/thm-restate.sty
+++ b/Master/texmf-dist/tex/latex/thmtools/thm-restate.sty
@@ -22,7 +22,7 @@
%%
%%
\NeedsTeXFormat {LaTeX2e}
-\ProvidesPackage {thm-restate}[2020/07/16 v69]
+\ProvidesPackage {thm-restate}[2020/08/01 v0.72]
\RequirePackage{thmtools}
\let\@xa\expandafter
\let\@nx\noexpand
diff --git a/Master/texmf-dist/tex/latex/thmtools/thmdef-mdframed.sty b/Master/texmf-dist/tex/latex/thmtools/thmdef-mdframed.sty
index 35f78ad903a..1dde5be1bb2 100644
--- a/Master/texmf-dist/tex/latex/thmtools/thmdef-mdframed.sty
+++ b/Master/texmf-dist/tex/latex/thmtools/thmdef-mdframed.sty
@@ -22,13 +22,12 @@
%%
%%
\NeedsTeXFormat {LaTeX2e}
-\ProvidesPackage {thmdef-mdframed}[2020/07/16 v69]
+\ProvidesPackage {thmdef-mdframed}[2020/08/01 v0.72]
\define@key{thmdef}{mdframed}[{}]{%
\thmt@trytwice{}{%
\RequirePackage{mdframed}%
\RequirePackage{thm-patch}%
- \addtotheorempreheadhook[\thmt@envname]{%
- \begin{mdframed}[#1]}%
+ \addtotheorempreheadhook[\thmt@envname]{\begin{mdframed}[#1]}%
\addtotheorempostfoothook[\thmt@envname]{\end{mdframed}}%
}%
}
diff --git a/Master/texmf-dist/tex/latex/thmtools/thmdef-shaded.sty b/Master/texmf-dist/tex/latex/thmtools/thmdef-shaded.sty
index d22b541024f..5263d8fa47a 100644
--- a/Master/texmf-dist/tex/latex/thmtools/thmdef-shaded.sty
+++ b/Master/texmf-dist/tex/latex/thmtools/thmdef-shaded.sty
@@ -22,7 +22,7 @@
%%
%%
\NeedsTeXFormat {LaTeX2e}
-\ProvidesPackage {thmdef-shaded}[2020/07/16 v69]
+\ProvidesPackage {thmdef-shaded}[2020/08/01 v0.72]
\define@key{thmdef}{shaded}[{}]{%
\thmt@trytwice{}{%
\RequirePackage{shadethm}%
diff --git a/Master/texmf-dist/tex/latex/thmtools/thmdef-thmbox.sty b/Master/texmf-dist/tex/latex/thmtools/thmdef-thmbox.sty
index b545267594e..d6bbbc2b641 100644
--- a/Master/texmf-dist/tex/latex/thmtools/thmdef-thmbox.sty
+++ b/Master/texmf-dist/tex/latex/thmtools/thmdef-thmbox.sty
@@ -22,7 +22,7 @@
%%
%%
\NeedsTeXFormat {LaTeX2e}
-\ProvidesPackage {thmdef-thmbox}[2020/07/16 v69]
+\ProvidesPackage {thmdef-thmbox}[2020/08/01 v0.72]
\define@key{thmdef}{thmbox}[L]{%
\thmt@trytwice{%
\let\oldproof=\proof
diff --git a/Master/texmf-dist/tex/latex/thmtools/thmtools.sty b/Master/texmf-dist/tex/latex/thmtools/thmtools.sty
index a8e0b2d90e1..bdc0b63cf7b 100644
--- a/Master/texmf-dist/tex/latex/thmtools/thmtools.sty
+++ b/Master/texmf-dist/tex/latex/thmtools/thmtools.sty
@@ -22,7 +22,7 @@
%%
%%
\NeedsTeXFormat {LaTeX2e}
-\ProvidesPackage {thmtools}[2020/07/16 v69]
+\ProvidesPackage {thmtools}[2020/08/01 v0.72]
\DeclareOption{debug}{%
\def\thmt@debug{\typeout}%
}
diff --git a/Master/texmf-dist/tex/latex/thmtools/unique.sty b/Master/texmf-dist/tex/latex/thmtools/unique.sty
index 7e054a518b7..8914828f34b 100644
--- a/Master/texmf-dist/tex/latex/thmtools/unique.sty
+++ b/Master/texmf-dist/tex/latex/thmtools/unique.sty
@@ -22,7 +22,7 @@
%%
%%
\NeedsTeXFormat {LaTeX2e}
-\ProvidesPackage {unique}[2020/07/16 v69]
+\ProvidesPackage {unique}[2020/08/01 v0.72]
\DeclareOption{unq}{%
\newwrite\uniq@channel
@@ -38,24 +38,25 @@
\newcommand\setuniqmark[1]{%
\expandafter\ifx\csname uniq@now@#1\endcsname\relax
- \global\@namedef{uniq@now@#1}{\uniq@ONE}%
+ \global\@namedef{uniq@now@#1}{\uniq@ONE}%
\else
- \expandafter\ifx\csname uniq@now@#1\endcsname\uniq@MANY\else
- \immediate\write\uniq@channel{%
- \string\uniq@setmany{#1}%
- }%
- \ifuniq{#1}{%
- \uniq@warnnotunique{#1}%
- }{}%
- \fi
- \global\@namedef{uniq@now@#1}{\uniq@MANY}%
+ \expandafter\ifx\csname uniq@now@#1\endcsname\uniq@MANY
+ \else
+ \immediate\write\uniq@channel{%
+ \string\uniq@setmany{#1}%
+ }%
+ \ifuniq{#1}{%
+ \uniq@warnnotunique{#1}%
+ }{}%
+ \fi
+ \global\@namedef{uniq@now@#1}{\uniq@MANY}%
\fi
}
\newcommand\ifuniq[1]{%
\expandafter\ifx\csname uniq@last@#1\endcsname\uniq@MANY
- \expandafter \@secondoftwo
+ \expandafter\@secondoftwo
\else
- \expandafter\@firstoftwo
+ \expandafter\@firstoftwo
\fi
}
\def\uniq@ONE{\uniq@ONE}
@@ -69,11 +70,11 @@
}
\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
+ \PackageWarningNoLine{uniq}{%
+ `#1' is unique now.\MessageBreak
+ Rerun LaTeX to pick up the change%
+ }%
+ \@uniq@reruntrue
\fi
}
\def\uniq@warnnotunique#1{%
@@ -85,10 +86,10 @@
}
\def\uniq@maybesuggestrerun{%
\if@uniq@rerun
- \PackageWarningNoLine{uniq}{%
- Uniquenesses have changed. \MessageBreak
- Rerun LaTeX to pick up the change%
- }%
+ \PackageWarningNoLine{uniq}{%
+ Uniquenesses have changed. \MessageBreak
+ Rerun LaTeX to pick up the change%
+ }%
\fi
}
\AtEndDocument{%