From 63c4f21a5716ebbed11926d0bfbb26d656a766ea Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Sat, 18 Jul 2020 03:01:08 +0000
Subject: CTAN sync 202007180301

---
 .../latex/contrib/thmtools/source/thm-listof.dtx   | 224 +++++++++++++++++++++
 1 file changed, 224 insertions(+)
 create mode 100644 macros/latex/contrib/thmtools/source/thm-listof.dtx

(limited to 'macros/latex/contrib/thmtools/source/thm-listof.dtx')

diff --git a/macros/latex/contrib/thmtools/source/thm-listof.dtx b/macros/latex/contrib/thmtools/source/thm-listof.dtx
new file mode 100644
index 0000000000..39603b4341
--- /dev/null
+++ b/macros/latex/contrib/thmtools/source/thm-listof.dtx
@@ -0,0 +1,224 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2008-2014 by Ulrich M. Schwarz
+% Copyright (C) 2019      by Frank Mittelbach
+% Copyright (C) 2020-     by Yukai Chou
+%
+% This file may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, version 1.3c.
+% The license can be obtained from
+% http://www.latex-project.org/lppl/lppl-1-3c.txt
+%
+% \fi
+%
+%\iffalse (hide this from DocInput)
+%<*listof>
+%\fi
+%
+% This package provides two main commands:
+% \DescribeMacro{\listoftheorems}
+% |\listoftheorems| will generate, well, a list of all theorems, lemmas,
+% etc. in your document. This list is hyperlinked if you use \pkg{hyperref},
+% and it will list the optional argument to the theorem.
+%
+% Currently, some options can be given as an optional argument keyval list:
+% \begin{description}
+%  \item[numwidth] The width allocated for the numbers, default 2.3em. Since
+%  you are more likely to have by-section numbering than with figures, this
+%  needs to be accessible.
+%  \item[ignore=foo,bar] A last-second call to |\ignoretheorems|, see below.
+%  \item[onlynamed=foo,bar] Only list those foo and bar environments that
+%    had an optional title. This weeds out unimportant definitions, for
+%    example. If no argument is given, this applies to all environments
+%    defined by |\newtheorem| and |\declaretheorem|.
+%  \item[show=foo,bar] Undo a previous |\ignoretheorems| and restore default
+%    formatting for these environments. Useful in combination with
+%    ignoreall.
+%  \item[ignoreall]
+%  \item[showall] Like applying ignore or show with a list of all theorems
+%    you have defined.
+%  \item[title]
+%    Provide a title for this list overwriting the default in |\listtheoremname|.
+% \end{description}
+%
+% \DescribeMacro{\listtheoremname}
+% The heading name is stored in the macro |\listtheoremname| and is
+% ``List of Theorems'' by default. All other formatting aspects are taken
+% from |\listoffigures|. (As a matter of fact, |\listoffigures| is called
+% internally.)
+%
+% \DescribeMacro{\ignoretheorems}
+% |\ignoretheorems|\marg{remark,example,...} can be used to suppress some
+% types of theorem from the LoTh. Be careful not to have spaces in the list,
+% those are currently \emph{not} filtered out.
+%
+% There's currently no interface to change the look of the list. If you're
+% daring, the code for the theorem type ``lemma'' is in |\l@lemma| and so on.
+%
+%\StopEventually{}
+%    \begin{macrocode}
+\let\@xa=\expandafter
+\let\@nx=\noexpand
+\RequirePackage{thm-patch,keyval,kvsetkeys}
+
+\def\thmtlo@oldchapter{0}%
+\newcommand\thmtlo@chaptervspacehack{}
+\ifcsname c@chapter\endcsname
+  \ifx\c@chapter\relax\else
+    \def\thmtlo@chaptervspacehack{%
+      \ifnum \value{chapter}=\thmtlo@oldchapter\relax\else
+        % new chapter, add vspace to loe.
+        \addtocontents{loe}{\protect\addvspace{10\p@}}%
+        \xdef\thmtlo@oldchapter{\arabic{chapter}}%
+      \fi
+    }%
+  \fi
+\fi
+  
+
+\providecommand\listtheoremname{List of Theorems}
+\newcommand\listoftheorems[1][]{%
+  %% much hacking here to pick up the definition from the class
+  %% without oodles of conditionals.
+  \bgroup
+  \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}%
+  }%
+  }%
+  \let\thref@starttoc\@starttoc
+  \def\@starttoc##1{\thref@starttoc{loe}}%
+  % new hack: to allow multiple calls, we defer the opening of the
+  % loe file to AtEndDocument time. This is before the aux file is
+  % read back again, that is early enough.
+  % TODO: is it? crosscheck include/includeonly!
+  \@fileswfalse
+  \AtEndDocument{%
+    \if@filesw
+      \@ifundefined{tf@loe}{%
+        \expandafter\newwrite\csname tf@loe\endcsname
+        \immediate\openout \csname tf@loe\endcsname \jobname.loe\relax
+      }{}%
+    \fi
+  }%
+  %\expandafter
+  \listoffigures
+  \egroup
+}
+
+\newcommand\setlisttheoremstyle[1]{%
+  \kvsetkeys{thmt-listof}{#1}%
+}
+\define@key{thmt-listof}{numwidth}{\def\thmt@listnumwidth{#1}}
+\define@key{thmt-listof}{ignore}[\thmt@allenvs]{\ignoretheorems{#1}}
+\define@key{thmt-listof}{onlynamed}[\thmt@allenvs]{\onlynamedtheorems{#1}}
+\define@key{thmt-listof}{show}[\thmt@allenvs]{\showtheorems{#1}}
+\define@key{thmt-listof}{ignoreall}[true]{\ignoretheorems{\thmt@allenvs}}
+\define@key{thmt-listof}{showall}[true]{\showtheorems{\thmt@allenvs}}
+% FMi 2019-09-31 allow local title
+\define@key{thmt-listof}{title}{\def\listtheoremname{#1}}
+% -- FMi
+
+\providecommand\thmt@listnumwidth{2.3em}
+
+\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}%
+  }%
+  \ifthmt@isstarred
+    \@xa\def\csname ll@\thmt@envname\endcsname{%
+      \protect\numberline{\protect\let\protect\autodot\protect\@empty}%
+      \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
+      \ifx\@empty\thmt@shortoptarg\else\protect\thmtformatoptarg{\thmt@shortoptarg}\fi
+    }%
+  \fi
+  \@xa\gdef\csname thmt@contentsline@\thmt@envname\endcsname{%
+    \thmt@contentslineShow% default:show
+  }%
+}
+\def\thmt@allenvs{\@gobble}
+\newcommand\thmt@recordenvname{%
+  \edef\thmt@allenvs{\thmt@allenvs,\thmt@envname}%
+}
+\g@addto@macro\thmt@newtheorem@predefinition{%
+  \thmt@mklistcmd
+  \thmt@recordenvname
+}
+
+\addtotheorempostheadhook{%
+  \thmtlo@chaptervspacehack
+  \addcontentsline{loe}{\thmt@envname}{%
+    \csname ll@\thmt@envname\endcsname
+  }%
+}
+
+\newcommand\showtheorems[1]{%
+  \@for\thmt@thm:=#1\do{%
+    \typeout{showing \thmt@thm}%
+    \@xa\let\csname thmt@contentsline@\thmt@thm\endcsname
+      =\thmt@contentslineShow
+  }%
+}
+
+\newcommand\ignoretheorems[1]{%
+  \@for\thmt@thm:=#1\do{%
+    \@xa\let\csname thmt@contentsline@\thmt@thm\endcsname
+      =\thmt@contentslineIgnore
+  }%
+}
+\newcommand\onlynamedtheorems[1]{%
+  \@for\thmt@thm:=#1\do{%
+    \global\@xa\let\csname thmt@contentsline@\thmt@thm\endcsname
+      =\thmt@contentslineIfNamed
+  }%
+}
+
+\AtBeginDocument{%
+\@ifpackageloaded{hyperref}{%
+  \let\thmt@hygobble\@gobble
+}{%
+  \let\thmt@hygobble\@empty
+}
+\let\thmt@contentsline\contentsline
+}
+
+\def\thmt@contentslineIgnore#1#2#3{%
+  \thmt@hygobble
+}
+\def\thmt@contentslineShow{%
+  \thmt@contentsline
+}
+
+\def\thmt@contentslineIfNamed#1#2#3{%
+  \thmt@ifhasoptname #2\thmtformatoptarg\@nil{%
+    \thmt@contentslineShow{#1}{#2}{#3}%
+  }{%
+    \thmt@contentslineIgnore{#1}{#2}{#3}%
+    %\thmt@contentsline{#1}{#2}{#3}%
+  }
+}
+  
+\def\thmt@ifhasoptname #1\thmtformatoptarg#2\@nil{%
+  \ifx\@nil#2\@nil
+    \@xa\@secondoftwo
+  \else
+    \@xa\@firstoftwo
+  \fi
+}
+%    \end{macrocode}
+%\iffalse
+%</listof>
+%\fi
-- 
cgit v1.2.3

