% \CheckSum{242}
% \iffalse meta-comment
% ======================================================================
% scrkernel-index.dtx
% Copyright (c) Markus Kohm, 2002-2019
%
% This file is part of the LaTeX2e KOMA-Script bundle.
%
% This work may be distributed and/or modified under the conditions of
% the LaTeX Project Public License, version 1.3c of the license.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of LaTeX 
% version 2005/12/01 or later and of this work.
%
% This work has the LPPL maintenance status "author-maintained".
%
% The Current Maintainer and author of this work is Markus Kohm.
%
% This work consists of all files listed in manifest.txt.
% ----------------------------------------------------------------------
% scrkernel-index.dtx
% Copyright (c) Markus Kohm, 2002-2019
%
% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
% Version 1.3c, verteilt und/oder veraendert werden.
% Die neuste Version dieser Lizenz ist
%   http://www.latex-project.org/lppl.txt
% und Version 1.3c ist Teil aller Verteilungen von LaTeX
% Version 2005/12/01 oder spaeter und dieses Werks.
%
% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained"
% (allein durch den Autor verwaltet).
%
% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm.
% 
% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien.
% ======================================================================
% \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         \~}
%
% \iffalse
%%% From File: $Id: scrkernel-index.dtx 3262 2019-10-10 08:25:29Z kohm $
%<option>%%%            (run: option)
%<body>%%%            (run: body)
%<*dtx>
% \fi
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
  \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
  \filedate$Date: 2019-10-10 10:25:29 +0200 (Thu, 10 Oct 2019) $
  \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
  \filerevision$Revision: 1872 $
  \edef\reserved@a{%
    \noexpand\endgroup
    \noexpand\ProvidesFile{scrkernel-index.dtx}%
                          [\filedate\space\filerevision\space
                           KOMA-Script source
                           (index)]%
  }%
\reserved@a
% \iffalse
\documentclass[parskip=half-]{scrdoc}
\usepackage[english,ngerman]{babel}
\CodelineIndex
\RecordChanges
\GetFileInfo{scrkernel-index.dtx}
\title{\KOMAScript{} \partname\ \texttt{\filename}%
  \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}}
\date{\filedate}
\author{Markus Kohm}

\begin{document}
  \maketitle
  \tableofcontents
  \DocInput{\filename}
\end{document}
%</dtx>
% \fi
%
% \selectlanguage{ngerman}
%
% \changes{v2.95}{2002/07/01}{%
%   erste Version aus der Aufteilung von \texttt{scrclass.dtx}}
%
% \section{Index}
%
% Der Index unterscheidet sich bei \KOMAScript{} scheinbar nicht
% wesentlich von dem, was die Standardklassen zu bieten haben. In
% Wirklichkeit sind die Unterschiede jedoch erheblich.
%
% Briefe haben keinen Index.
%
% \StopEventually{\PrintIndex\PrintChanges}
%
% \iffalse
%<*!letter>
% \fi
%
% \iffalse
%<*option>
% \fi
%
% \subsection{Anweisungen und Einstellungen für die Optionen}
%
% Einige Anweisungen und Einstellungen werden bereits benötigt, bevor die
% Optionen abgearbeitet werden.
%
% \begin{macro}{\idx@@heading}
% \changes{v2.98c}{2008/03/04}{neu (intern)}%^^A
% \changes{v3.18}{2015/06/15}{Beachtung von \texttt{leveldown}}%^^A
% Diese Anweisung wird verwendet, um nur die Überschrift zu setzen (nichts
% weiter!). Sie hat genau ein Argument, nämlich den Text der Überschrift und
% wird innerhalb von |\idx@heading| verwendet.
%    \begin{macrocode}
\newcommand*{\idx@@heading}{%
  \ifidx@leveldown
%<article>    \expandafter\subsection
%<book|report>    \expandafter\section
  \else
%<article>    \expandafter\section
%<book|report>    \expandafter\chapter
  \fi*%
}
%    \end{macrocode}
% \end{macro}
%
%
% \subsection{Optionen für den Index}
%
% \begin{option}{index}
% \changes{v2.98c}{2008/03/04}{Neue Option}%^^A
% \changes{v3.17}{2015/03/12}{interne Speicherung der Werte}%^^A
% \changes{v3.18}{2015/06/15}{neuer Wert \texttt{numbered}}%^^A
% \changes{v3.18}{2015/06/15}{neuer Wert \texttt{leveldown}}%^^A
% \changes{v3.18}{2015/06/15}{neuer Wert \texttt{standardlevel}}%^^A
% \begin{macro}{\idx@@heading}
% Die Option sorgt dafür, dass der Index auch im Inhaltsverzeichnis
% erscheint. Dazu wird das interne Makro \cs{idx@@heading} umdefiniert, über
% das die Überschrift gesetzt und der Kolumnentitel angepasst wird.
% \changes{v2.4c}{1996/04/04}{Kolumnentitel werden nun korrekt
%     behandelt}%^^A
% \changes{v2.4g}{1996/11/04}{Index auch bei \textsf{scrartcl}%^^A
%     wieder zweispaltig}
% \changes{v2.6c}{2000/06/10}{im Index kann nach der Überschrift
%     eine Präambel gesetzt werden}%^^A
% \changes{v2.7a}{2001/01/04}{für \textsf{scrbook} und
%     \textsf{scrreprt} die Link-Erzeugung mit \texttt{hyperref}
%     verbessert}
% \changes{v2.7j}{2001/05/27}{Setzen der Präambel in die
%     \texttt{theindex}-Umgebung verschoben}
% \changes{v2.9l}{2003/01/19}{\cs{if@twoside} durch
%     \cs{if@openright} ersetzt}
% \changes{v2.98c}{2008/03/04}{statt \cs{idx@heading} wird nun
%     \cs{idx@@heading} umdefiniert}
% \changes{v3.18}{2015/06/15}{Beachtung von \texttt{leveldown}}%^^A
% An dieser Stelle muss dafür gesorgt werden, dass im Falle von
% \textsf{scrbook} und \textsf{scrreprt} das Makro \cs{@schapter}
% verwendet wird. Damit dies hier möglich ist mussten tiefreifendere
% Änderungen am \LaTeX-Kernel bzw. am Gliederungsbefehl \cs{chapter}
% vorgenommen werden.
% \begin{macro}{\ifidx@leveldown}
% \changes{v3.18}{2015/06/15}{neuer Schalter (intern)}%^^A
% Für den ab Version~3.18neuen Wert \texttt{leveldown} und dessen
% Gegenstück \texttt{standardlevel} wird außerdem ein Schalter benötigt.
%    \begin{macrocode}
\newif\ifidx@leveldown
\KOMA@key{index}{%
  \KOMA@set@ncmdkey{index}{@tempa}{%
    {notoc}{0},{nottotoc}{0},{default}{0},{plainheading}{0},%
    {totoc}{1},{toc}{1},{notnumbered}{1},%
    {numbered}{2},{totocnumbered}{2},{numberedtotoc}{2},{tocnumbered}{2},%
    {numberedtoc}{2},%
    {leveldown}{3},%
    {standardlevel}{4}%
  }{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed
    \ifcase \@tempa\relax
      \KOMA@kav@remove{.\KOMAClassFileName}{toc}{noindex}%
      \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indexnumbered}%
      \KOMA@kav@remove{.\KOMAClassFileName}{toc}{index}%
      \KOMA@kav@remove{.\KOMAClassFileName}{index}{notoc}%
      \KOMA@kav@remove{.\KOMAClassFileName}{index}{numbered}%
      \KOMA@kav@remove{.\KOMAClassFileName}{index}{toc}%
      \KOMA@kav@add{.\KOMAClassFileName}{toc}{noindex}%
      \KOMA@kav@add{.\KOMAClassFileName}{index}{notoc}%
      \renewcommand*{\idx@@heading}{%
        \ifidx@leveldown
%<article>        \expandafter\subsection
%<book|report>        \expandafter\section
        \else
%<article>        \expandafter\section
%<book|report>        \expandafter\chapter
        \fi*%
      }%
    \or
      \KOMA@kav@remove{.\KOMAClassFileName}{toc}{noindex}%
      \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indexnumbered}%
      \KOMA@kav@remove{.\KOMAClassFileName}{toc}{index}%
      \KOMA@kav@remove{.\KOMAClassFileName}{index}{notoc}%
      \KOMA@kav@remove{.\KOMAClassFileName}{index}{numbered}%
      \KOMA@kav@remove{.\KOMAClassFileName}{index}{toc}%
      \KOMA@kav@add{.\KOMAClassFileName}{toc}{index}%
      \KOMA@kav@add{.\KOMAClassFileName}{index}{toc}%
      \renewcommand*{\idx@@heading}{%
        \ifidx@leveldown
%<article>        \expandafter\subsection\expandafter*
%<book|report>        \expandafter\addsec
        \else
%<article>        \expandafter\addsec
%<book|report>        \expandafter\addchap
        \fi
      }%
    \or
      \KOMA@kav@remove{.\KOMAClassFileName}{toc}{noindex}%
      \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indexnumbered}%
      \KOMA@kav@remove{.\KOMAClassFileName}{toc}{index}%
      \KOMA@kav@remove{.\KOMAClassFileName}{index}{notoc}%
      \KOMA@kav@remove{.\KOMAClassFileName}{index}{numbered}%
      \KOMA@kav@remove{.\KOMAClassFileName}{index}{toc}%
      \KOMA@kav@add{.\KOMAClassFileName}{toc}{indexnumbered}%
      \KOMA@kav@add{.\KOMAClassFileName}{index}{numbered}%
      \renewcommand*{\idx@@heading}{%
        \ifidx@leveldown
%<article>        \expandafter\subsection
%<book|report>        \expandafter\section
        \else
%<article>        \expandafter\section
%<book|report>        \expandafter\chapter
        \fi
      }%
    \or
      \KOMA@kav@remove{.\KOMAClassFileName}{index}{leveldown}%
      \KOMA@kav@remove{.\KOMAClassFileName}{index}{standardlevel}%
      \KOMA@kav@add{.\KOMAClassFileName}{index}{leveldown}%
      \idx@leveldowntrue
    \or
      \KOMA@kav@remove{.\KOMAClassFileName}{index}{leveldown}%
      \KOMA@kav@remove{.\KOMAClassFileName}{index}{standardlevel}%
      \KOMA@kav@add{.\KOMAClassFileName}{index}{standardlevel}%
      \idx@leveldownfalse
    \fi
  \fi
}
\KOMA@kav@add{.\KOMAClassFileName}{toc}{noindex}
\KOMA@kav@add{.\KOMAClassFileName}{index}{notoc}
\KOMA@kav@add{.\KOMAClassFileName}{index}{standardlevel}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{option}
%
% \begin{option}{idxtotoc}
% \changes{v2.3h}{1995/01/21}{neue Option}%^^A
% \changes{v2.98c}{2008/03/04}{obsolete}%^^A
% \changes{v3.01a}{2008/11/20}{deprecated}%^^A
%    \begin{macrocode}
\KOMA@DeclareDeprecatedOption{idxtotoc}{index=totoc}
%    \end{macrocode}
% \end{option}
%
%
% \iffalse
%</option>
%<*body>
% \fi
%
% \subsection{Definitionen für den Index}
%
% \begin{macro}{\index@preamble}
% \changes{v2.6c}{2000/06/10}{neu (intern)}%^^A
% \begin{macro}{\setindexpreamble}
% \changes{v2.6c}{2000/06/10}{neu}%^^A
% \changes{v2.6d}{2000/07/20}{Befehl funktioniert nachdem \cs{let}%^^A
%      durch \cs{newcommand*} ersetzt wurde}
% \changes{v2.95}{2002/07/01}{\cs{let} und \cs{def}}
% Analog zu \cs{bibpreamble} kann \cs{index@preamble} vom Benutzer mit
% \cs{setindexpreamble} auf einen Text gesetzt werden, der nach der
% Indexüberschrift eingefügt wird. Hier wird ein echtes internes Makro
% verwendet, da nicht auf Kompatibilität geachtet werden muss.
%    \begin{macrocode}
\newcommand*{\index@preamble}{}
\let\index@preamble=\relax
\newcommand{\setindexpreamble}[1]{\def\index@preamble{#1}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\idx@heading}
% \changes{v2.3h}{1995/01/21}{neu (intern)}%^^A
% \changes{v2.4c}{1995/04/04}{Kolumnentitel werden nun korrekt behandelt}%^^A
% \changes{v2.4g}{1996/11/04}{Index auch bei \texttt{scrartcl} wieder
%   zweispaltig}%^^A
% \changes{v2.6c}{2000/06/10}{Verwendung von \cs{index@preamble} eingefügt}%^^A
% \changes{v2.7j}{2001/05/27}{Setzen der Präambel in die
%   \texttt{theindex}-Umgebung verschoben}%^^A
% \changes{v2.9l}{2003/01/19}{\cs{if@twoside} durch \cs{if@openright}
%   ersetzt}%^^A
% \changes{v2.98c}{2008/03/04}{Verwendung von \cs{idx@@heading}}%^^A
% \changes{v3.10}{2011/08/31}{\cs{MakeMarkcase} wird beachtet}%^^A
% \changes{v3.10a}{2012/03/08}{Falsche Klammerung der letzten Änderung
%   behoben}%^^A
% \changes{v3.12}{2013/09/24}{Index wird nie in andere Verzeichnisse
%   eingetragen (außer Inhaltsverzeichnis)}%^^A
% \changes{v3.25}{2017/10/13}{\cs{@mkright} und \cs{@mkdouble} verwenden}%^^A
% Befehl zum Setzen der Überschrift des Indexes. Bis Version 2.7a sah diese
% Definition so aus:
% \begin{verbatim}
% \newcommand*{\idx@heading}{%
%   \if@twoside\cleardoublepage\else\clearpage\fi%
%   \@mkboth{\indexname}{\indexname}%
%   \twocolumn[%
% %<article>  \section*%
% %<report|book>  \@makeschapterhead%
%     {\indexname}\index@preamble]
% }
% \end{verbatim}\vspace{-\baselineskip}
% Dagegen ist grundsätzlich nichts zu sagen. Allerdings gibt es seit
% Version 2.7b die neue Methode der Kapitel-Präambel, die extra
% eingeführt wurde, um die \textsf{hyperref}-Links -- insbesondere
% den des Index -- zumindest bei Verwendung von \texttt{hpdftex.def}
% zu verbessern. Deshalb wurde die Implementierung entsprechend
% abgeändert. Außerdem wurde das Setzen der Präambel aus
% Konsistenzgründen in Version 2.7j übereinstimmten mit der
% \texttt{thebibliography}-Umgebung in die \texttt{theindex}-Umgebung
% verschoben.
% \changes{v3.26}{2018/09/03}{usage of \cs{addsecmark} or \cs{subsectionmark}
%   instead of \cs{@mkright}}%^^A
%    \begin{macrocode}
\newcommand*{\idx@heading}{%
%<report|book>  \if@openright\cleardoublepage\else\clearpage\fi%
  \twocolumn[%
%<report|book>    \@chaptertolistsfalse
                  \idx@@heading{\indexname}]%
  \ifidx@leveldown
%<report|book>    \addsecmark{\indexname}%
%<*article>
    \begingroup
      \c@secnumdepth=-\maxdimen
      \subsectionmark{\indexname}%
    \endgroup
%</article>
  \else
    \@mkdouble{\MakeMarkcase{\indexname}}%
  \fi
}
%    \end{macrocode}
% \end{macro}
%
% \begin{environment}{theindex}
% \changes{v2.8d}{2001/07/05}{\cs{indexpagestyle} statt
%      \texttt{plain}}
% \changes{v2.3h}{1995/01/21}{Verwendung von \cs{idx@heading}}
% \changes{v2.7j}{2001/05/27}{Setzen der Präambel in die
%      \texttt{theindex}-Umgebung verschoben}
% \changes{v3.19}{2015/08/25}{Seitenstil nur ändern wenn nicht leer}%^^A
% Der Index ist wie üblich definiert.
%    \begin{macrocode}
\newenvironment{theindex}{%
  \if@twocolumn
    \@restonecolfalse
  \else
    \@restonecoltrue
  \fi
  \columnseprule \z@
  \columnsep 35\p@
%<book|report>  \setchapterpreamble{\index@preamble}%
  \idx@heading%
%<article>  \index@preamble\par\nobreak
  \ifx\indexpagestyle\@empty\else\thispagestyle{\indexpagestyle}\fi
  \parindent\z@
  \setlength{\parskip}{\z@ \@plus .3\p@}%
  \setlength{\parfillskip}{\z@ \@plus 1fil}%
  \let\item\@idxitem
}{%
  \if@restonecol\onecolumn\else\clearpage\fi
}
%    \end{macrocode}
% \begin{macro}{\@idxitem}
% Hier haben wird den Anfang eines Eintrags in den Index
% \begin{macro}{\subitem}
% \changes{v2.3g}{1996/01/14}{Verwendung von \cs{@idxitem} spart
%      Speicher}
% \begin{macro}{\subsubitem}
% \changes{v2.3g}{1996/01/14}{Verwendung von \cs{@idxitem} spart
%      Speicher}
% \begin{macro}{\indexspace}
% und ebenso Unter- und Unteruntereinträge sowie ein vertikaler
% Abstand.
%    \begin{macrocode}
\newcommand*\@idxitem{\par\hangindent 40\p@}
%    \begin{macrocode}
\newcommand*\subitem{\@idxitem \hspace*{20\p@}}
\newcommand*\subsubitem{\@idxitem \hspace*{30\p@}}
\newcommand*\indexspace{%
  \par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{environment}
%
%
% \subsection{Standardbezeichner}
%
% \begin{macro}{\indexname}
% Names des Index:
%    \begin{macrocode}
\newcommand*\indexname{Index}
%    \end{macrocode}
% \end{macro}
%
%
% \iffalse
%</body>
% \fi
%
% \iffalse
%</!letter>
% \fi
%
%
% \Finale
%
\endinput
%
% end of file `scrkernel-index.dtx'
%%% Local Variables:
%%% mode: doctex
%%% TeX-master: t
%%% End:
