You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
448 lines
15 KiB
448 lines
15 KiB
% \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:
|
|
|