%%% LaTeX-Package für (u.a.) einen datumsbezogenen Index
%%% (c) Paul Ebermann

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{dateindex}[2003/03/17 v0.03 Pauls Vorlesungs-Index]

%%% Um den Index auch wirklich erstellen zu können
\RequirePackage{makeidx}
\makeindex
\RequirePackage{ifthen}

\RequirePackage{hyperref}



\newcommand{\paragraphsymbol}{}
\let\paragraphsymbol=§
\newcommand{\nichttrennen}{}
\let\nichttrennen=~

\newcommand*{\index@Def}[2][-]{\ifthenelse{\equal{#1}{-}}{\index{#2|formatDef{\aktuelles@Datum}}}{\index{#2|verweis{#1}}}}
\newcommand*{\index@Satz}[2][-]{\ifthenelse{\equal{#1}{-}}{\index{#2|formatSatz{\aktuelles@Datum}}}{\index{#2|verweis{#1}}}}

\newcommand*{\defi}[1]{\item #1}
\newcommand*{\teoremo}[1]{\item[{\paragraphsymbol}]\emph{#1}}

\newcommand*{\hier@Def}[2][]{\defi{#2 #1} \index@Def{#2}}
\newcommand*{\hier@Satz}[2][]{\teoremo{#2 #1} \index@Satz{#2}}

%%%
%%% Die Umgebung für die Indizierung nach Datum.
%%%
%%% Innerhalb kann per
%%%  ~ eine Definition markiert werden
%%%  § ein Satz markiert werden.
%%%
\newenvironment*{datum}[1]
{%
 \item \hypertarget{datum-#1}{#1}%
   \newcommand*{\aktuelles@Datum}{#1}%
   \catcode`\~\active%
   \newcommand*{~}{\index@Def}%
   \catcode`\§\active%
   \newcommand*{§}{\index@Satz}%
   \catcode`\°\active%
   \newcommand*{°}{\hier@Def}
   \catcode`\²\active%
   \newcommand*{²}{\hier@Satz}
   \begin{itemize}%
}{\end{itemize}}

\newcommand{\index@beschreibung}{(Hier könnte eine Beschreibung für
   den Index auftauchen - verwenden sie \texttt{\string\PrintIndex}.)}

\newcommand{\PrintIndex}[1]
{
   \renewcommand{\index@beschreibung}{#1}
   \printindex
}


%%% Einspaltigen Index anstatt des normalen zweispaltigen:

\newcommand{\paul@idx@item}[2]{\par\hangindent100pt \hspace*{#2}}


%%% \renewenvironment{theindex}
%%% {
%%%    \clearpage
%%%    \section*{Index}
%%%    \index@beschreibung
%%% 
%%%    \indexspace
%%% 
%%%    \renewcommand{\item}{\paul@idx@item{50pt}{0pt}}
%%%    \renewcommand\subitem{\paul@idx@item{80pt}{30pt}}
%%%    \renewcommand\subsubitem{\paul@idx@item{100pt}{50pt}}
%%% }
%%% {}


\renewenvironment{theindex}
{
   \clearpage
   \section*{Index}
   \index@beschreibung

   \indexspace

   \renewcommand{\item}{\paul@idx@item{100pt}{0pt}}
   \renewcommand\subitem{\paul@idx@item{100pt}{30pt}}
   \renewcommand\subsubitem{\paul@idx@item{100pt}{50pt}}
}
{}


%%%
%%% Befehle, die für die Formatierung des Datums
%%% im Index genutzt werden. Sie nehmen offiziell
%%% je zwei Argumente - das zweite ist die Seitenzahl,
%%% die von makeindex übergeben wird. Diese wird
%%% einfach ignoriert.
%%%
%%%%% Definition
\newcommand*{\formatDef}[2]{\hyperlink{datum-#1}{\mbox{#1}}}
%%%%% Satz
\newcommand*{\formatSatz}[2]{\hyperlink{datum-#1}{\mbox{\emph{#1}}}}

\newcommand*{\verweis}{\see}
%\newcommand*{\verweis}[2]{\emph{siehe} \hyperlink{index-#1}{#1}}

\endinput

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "DiffGeo1-index.tex"
%%% End: 
