% \iffalse meta-comment % % Copyright (C) 2008 by Ulrich M. Schwarz % % This file may be distributed and/or modified under the conditions of % the LaTeX Project Public License, version 1.3a. % The license can be obtained from % http://www.latex-project.org/lppl/lppl-1-3a.txt % % \fi % %\iffalse (hide this from DocInput) %<*driver> \documentclass{ltxdoc} \usepackage[T1]{fontenc} \usepackage{fourier} \usepackage[scaled=0.8]{helvet} \usepackage{luximono} \usepackage{amsmath, amsthm} \usepackage{thm-patch} \newtheorem{lemma}{Lemma} \GetFileInfo{thm-listof.sty} \providecommand\pkg{\textsf} \EnableCrossrefs \CodelineIndex \RecordChanges \begin{document} \newcommand\thmlistof{\textsf{thm-listof}} \title{The \thmlistof\ package\thanks{% This file documents version~\fileversion\ of~\filedate, RCS ${}$Id: thm-listof.dtx,v 1.11 2009/03/22 18:05:57 ulmi Exp ulmi ${}$. }} \author{Ulrich M. Schwarz\thanks{ulmi@absatzen.de}} \maketitle \begin{abstract} \end{abstract} \DocInput{thm-listof.dtx} \end{document} % %<*listof> %\fi % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z % Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z % Digits \0\1\2\3\4\5\6\7\8\9 % Exclamation \! Double quote \" Hash (number) \# % Dollar \$ Percent \% Ampersand \& % Acute accent \' Left paren \( Right paren \) % Asterisk \* Plus \+ Comma \, % Minus \- Point \. Solidus \/ % Colon \: Semicolon \; Less than \< % Equals \= Greater than \> Question mark \? % Commercial at \@ Left bracket \[ Backslash \\ % Right bracket \] Circumflex \^ Underscore \_ % Grave accent \` Left brace \{ Vertical bar \| % Right brace \} Tilde \~} % \CheckSum{160} % % \DoNotIndex{\@for,\addtocounter,\arabic,\csname,\endcsname,\cup,\CurrentOption} % \DoNotIndex{\{,\},\do,\define@key,\def,\DeclareOption,\else,\ensuremath,\expandafter} % \DoNotIndex{\hspace,\fi,\rule,\ifcase,\ifx,\in,\InputIfFileExists,\leq,\let,\mathpalette} % \DoNotIndex{\NeedsTeXFormat,\ldots,\ldotp,\newcommand,\newcounter,\or} % \DoNotIndex{\PackageInfo,\PackageWarning,\parm,\ProcessOptions,\protected@edef} % \DoNotIndex{\providecommand,\ProvidesPackage,\relax,\renewcommand,\RequirePackage} % \DoNotIndex{\setcounter,\setkeys,\rlap,\setminus,\widthof,\mathrm} % %\section{Usage} % 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. % \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{} %\section{Implementation} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{thm-listof}[2010/04/05 v0.1beta13 thm-listof (ulmi)] \let\@xa=\expandafter \let\@nx=\noexpand \RequirePackage{thm-patch} \def\thmtlo@oldchapter{0}% \newcommand\thmtlo@chaptervspacehack{} \@ifundefined{chapter}{}{% \def\thmtlo@chaptervspacehack{% \ifnum \arabic{chapter}>\thmtlo@oldchapter\relax % new chapter, add vspace to loe. \addtocontents{loe}{\protect\addvspace{10\p@}}% \edef\thmtlo@oldchapter{\arabic{chapter}}% \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 \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]{% \setkeys{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}} \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}% }% \@xa\def\csname ll@\thmt@envname\endcsname{% \protect\numberline{\csname the\thmt@envname\endcsname}% \thmt@thmname \ifx\@empty\thmt@optarg\else\protect\thmtformatoptarg{\thmt@optarg}\fi }% } \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\ignoretheorems[1]{% \@for\thm:=#1\do{% \@xa\let\csname l@\thm\endcsname=\@gobbletwo }% } \newcommand\onlynamedtheorems[1]{% \@for\thm:=#1\do{% \@xa\let\csname l@\thm\endcsname=\thmt@showifnamedtheorem }% } \def\thmt@showifnamedtheorem#1#2{% % check for \thmtformatoptarg on top level of first argument. \thmt@sh@wifnamedtheorem#1\thmtformatoptarg\@nil{% \@dottedtocline{1}{1.5em}{\thmt@listnumwidth}{#1}{#2}% }{}% } \def\thmt@sh@wifnamedtheorem#1\thmtformatoptarg#2\@nil{% \ifx\@nil#2\@nil \@xa\@secondoftwo \else \@xa\@firstoftwo \fi } \newcommand\showtheorems[1]{% \@for\thm:=#1\do{% \@xa\protected@edef\csname l@\thm\endcsname{% CHECK: why p@edef? \@nx\@dottedtocline{1}{1.5em}{\@nx\thmt@listnumwidth}% }% }% } % \end{macrocode} %\iffalse % %\fi