% \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.8 2008/05/10 15:34:06 ulmi Exp ${}$.
 }}
 \author{Ulrich M. Schwarz\thanks{ulmi@absatzen.de}}

 \maketitle

\begin{abstract}
\end{abstract}

  \DocInput{thm-listof.dtx}
\end{document}
%</driver>
%<*listof>
%\fi
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
% Digits \0\1\2\3\4\5\6\7\8\9
% Exclamation \! Double quote \" Hash (number) \#
% Dollar \$ Percent \% Ampersand \&
% Acute accent \' Left paren \( Right paren \)
% Asterisk \* Plus \+ Comma \,
% Minus \- Point \. Solidus \/
% Colon \: Semicolon \; Less than \<
% Equals \= Greater than \> Question mark \?
% Commercial at \@ Left bracket \[ Backslash \\
% Right bracket \] Circumflex \^ Underscore \_
% Grave accent \` Left brace \{ Vertical bar \|
% Right brace \} Tilde \~}
% \CheckSum{160}
%
% \DoNotIndex{\@for,\addtocounter,\arabic,\csname,\endcsname,\cup,\CurrentOption}
% \DoNotIndex{\{,\},\do,\define@key,\def,\DeclareOption,\else,\ensuremath,\expandafter}
% \DoNotIndex{\hspace,\fi,\rule,\ifcase,\ifx,\in,\InputIfFileExists,\leq,\let,\mathpalette}
% \DoNotIndex{\NeedsTeXFormat,\ldots,\ldotp,\newcommand,\newcounter,\or}
% \DoNotIndex{\PackageInfo,\PackageWarning,\parm,\ProcessOptions,\protected@edef}
% \DoNotIndex{\providecommand,\ProvidesPackage,\relax,\renewcommand,\RequirePackage}
% \DoNotIndex{\setcounter,\setkeys,\rlap,\setminus,\widthof,\mathrm}
%
%\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.
% \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}[2008/05/10 v0.1beta3 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{%
  %% much hacking here to pick up the definition from the class
  %% without oodles of conditionals.
  \bgroup
  \let\listfigurename\listtheoremname
  \let\thref@starttoc\@starttoc
  \def\@starttoc##1{\thref@starttoc{loe}}%
  \expandafter\listoffigures
  \egroup
}

\newcommand\thmt@mklistcmd{%
  \@xa\protected@edef\csname l@\thmt@envname\endcsname{%
    \@nx\@dottedtocline{1}{1.5em}{2.3em}%
  }%
}
\g@addto@macro\thmt@newtheorem@predefinition{%
  \thmt@mklistcmd
}

\addtotheorempostheadhook{%
  \thmtlo@chaptervspacehack
  \addcontentsline{loe}{\thmt@envname}{%
    \numberline{\csname the\thmt@envname\endcsname}%
    \thmt@thmname
    \ifx\@empty\thmt@optarg\else\protect\space(\thmt@optarg)\fi
  }%
}
\newcommand\ignoretheorems[1]{%
  \@for\thm:=#1\do{%
    \@xa\let\csname l@\thm\endcsname=\@gobbletwo
  }%
}
%    \end{macrocode}
%\iffalse
%</listof>
%\fi
