%%
%% This is file `thm-listof.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% thm-listof.dtx  (with options: `listof')
%% This is a generated file.
%% 
%% This file is part of the `thmtools' package.
%% The `thmtools' package has the LPPL maintenance status: maintained.
%% Current Maintainer is Ulrich M. Schwarz, ulmi@absatzen.de
%% 
%% Copyright (C) 2008-2010 by Ulrich M. Schwarz.
%% 
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, version 1.3a.
%% This version is obtainable at
%% http://www.latex-project.org/lppl/lppl-1-3a.txt
%% 
%% 
\NeedsTeXFormat {LaTeX2e}
\ProvidesPackage {thm-listof}[2010/05/18 v24]
\let\@xa=\expandafter
\let\@nx=\noexpand
\RequirePackage{thm-patch,keyval,kvsetkeys}

\def\thmtlo@oldchapter{0}%
\newcommand\thmtlo@chaptervspacehack{}
\ifcsname chapter\endcsname
  \def\thmtlo@chaptervspacehack{%
    \ifnum \value{chapter}>\thmtlo@oldchapter\relax
      % new chapter, add vspace to loe.
      \addtocontents{loe}{\protect\addvspace{10\p@}}%
      \xdef\thmtlo@oldchapter{\arabic{chapter}}%
    \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}%
  }%
  \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}}

\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@optarg\else\protect\thmtformatoptarg{\thmt@optarg}\fi
    }%
  \else
    \@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
    }%
  \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\thm:=#1\do{%
    \typeout{showing \thm}%
    \@xa\let\csname thmt@contentsline@\thm\endcsname
      =\thmt@contentslineShow
  }%
}

\newcommand\ignoretheorems[1]{%
  \@for\thm:=#1\do{%
    \@xa\let\csname thmt@contentsline@\thm\endcsname
      =\thmt@contentslineIgnore
  }%
}
\newcommand\onlynamedtheorems[1]{%
  \@for\thm:=#1\do{%
    \global\@xa\let\csname thmt@contentsline@\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
}
\endinput
%%
%% End of file `thm-listof.sty'.
