diff options
author | Karl Berry <karl@freefriends.org> | 2020-08-07 22:18:43 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-08-07 22:18:43 +0000 |
commit | d7359b696521401de6deaa4f70a6b40319cfa2a0 (patch) | |
tree | 8d45b41c17197de7a8514fb22f9c305a6ae9865d /Master/texmf-dist | |
parent | d6a7e0e5536b4924edec286797ed38021b94509d (diff) |
thmtools
git-svn-id: svn://tug.org/texlive/trunk@56068 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
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 Binary files differindex 8d9ff5fc016..cb908e17df9 100644 --- a/Master/texmf-dist/doc/latex/thmtools/thmtools-manual.pdf +++ b/Master/texmf-dist/doc/latex/thmtools/thmtools-manual.pdf 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{% |