diff options
author | Karl Berry <karl@freefriends.org> | 2008-11-12 00:44:32 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2008-11-12 00:44:32 +0000 |
commit | e0fa36719ae8b943d0c515ccc2a4f1e2670cc614 (patch) | |
tree | cfd7d451101897cf222cd885a36573ccacd922c4 /Master/texmf-dist/source/latex/koma-script/doc/ngerman/tocbasic.tex | |
parent | 6d06dddb5a2041f7c07b6502a3bfa973f0d86635 (diff) |
koma-script update (11nov08)
git-svn-id: svn://tug.org/texlive/trunk@11262 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/doc/ngerman/tocbasic.tex')
-rw-r--r-- | Master/texmf-dist/source/latex/koma-script/doc/ngerman/tocbasic.tex | 936 |
1 files changed, 936 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/doc/ngerman/tocbasic.tex b/Master/texmf-dist/source/latex/koma-script/doc/ngerman/tocbasic.tex new file mode 100644 index 00000000000..795d6ff7fba --- /dev/null +++ b/Master/texmf-dist/source/latex/koma-script/doc/ngerman/tocbasic.tex @@ -0,0 +1,936 @@ +% ====================================================================== +% tocbasic.tex +% Copyright (c) Markus Kohm, 2002-2008 +% +% 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.3b of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3b 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. +% ---------------------------------------------------------------------- +% tocbasic.tex +% Copyright (c) Markus Kohm, 2002-2008 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3b, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3b 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. +% ====================================================================== +% +% Package tocbasic for Package and Class Authors +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Paket tocbasic für Paket- und Klassenautoren +% Verwaltet von Markus Kohm +% +% ====================================================================== + +\ProvidesFile{tocbasic.tex}[2008/07/31 KOMA-Script package tocbasic] + +\chapter{Verzeichnisse verwalten mit Hilfe von \Package{tocbasic}} +\labelbase{tocbasic} + +\BeginIndex{Package}{tocbasic}% + +Das Paket \Package{tocbasic} ist neu in \KOMAScript~3.00. Sein Hauptzweck +besteht darin, Paket- und Klassenautoren die Möglichkeit zu geben, eigene +Verzeichnisse vergleichbar mit dem Abbildungs- und Tabellenverzeichnis zu +erstellen und dabei Klassen und anderen Paketen einen Teil der Kontrolle über +diese Verzeichnisse zu erlauben. Dabei sorgt das Paket \Package{tocbasic} auch +dafür, dass diese Verzeichnisse von \Package{babel}\IndexPackage{babel} (siehe +\cite{package:babel}) bei der Sprachumschaltung mit berücksichtigt +werden. Durch Verwendung von \Package{tocbasic} soll dem Paketautor die Mühe +genommen werden, selbst solche Anpassungen an andere Pakete oder an Klassen +vornehmen zu müssen. + +\KOMAScript{} verwendet \Package{tocbasic} sowohl für das Inhaltsverzeichnis +als auch für die bereits erwähnten Verzeichnisse für Abbildungen und Tabellen. + + +\section{Grundlegende Anweisungen} +\label{sec:tocbasic.basics} + +Die grundlegenden Anweisungen dienen in erster Linie dazu, eine Liste aller +bekannten Dateierweiterungen, die für Verzeichnisse stehen, zu +verwalten. Einträge in Dateien mit solchen Dateierweiterungen werden +typischerweise mit \Macro{addtocontents} oder \Macro{addcontentsline} +vorgenommen. Darüber hinaus gibt es Anweisungen, mit denen eine Aktion für +all diese Dateierweiterungen durchgeführt werden können. Außerdem gibt es +Anweisungen, um Einstellungen für die Datei vorzunehmen, die zu einer +gegebenen Dateierweiterung gehört. Typischerweise hat so eine Dateierweiterung +auch einen Besitzer. Dieser Besitzer kann eine Klasse oder ein Paket oder ein +Bezeichner sein, den der Autor der Klasse oder des Pakets, das +\Package{tocbasic} verwendet, selbst gewählt hat. \KOMAScript{} selbst +verwendet beispielsweise den Besitzer \PValue{float} für die +Dateierweiterungen \File{lof} und \File{lot}, die für das Abbildungs- und das +Tabellenverzeichnis stehen. Für das Inhaltsverzeichnis verwendet \KOMAScript{} +als Besitzer den Dateiname der Klasse. + +\begin{Declaration} + \Macro{ifattoclist}\Parameter{Dateierweiterung}\Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +\BeginIndex{Cmd}{ifattoclist}% +Mit dieser Anweisung wird überprüft, ob die \PName{Dateierweiterung} bereits +in der Liste der bekannten Dateierweiterungen vorhanden ist, oder nicht. Ist +die \PName{Dateierweiterung} bereits über diese Liste bekannt, so wird der +\PName{Dann-Teil} ausgeführt. Anderenfalls wird der \PName{Sonst-Teil} +ausgeführt. +\begin{Example} + Angenommen, Sie wollen wissen, ob die Dateierweiterung »\File{foo}« bereits + verwendet wird, um in diesem Fall einen Fehlermeldung auszugeben, weil diese + damit nicht mehr verwendet werden kann: + \begin{lstcode} + \ifattoclist{foo}{% + \PackageError{bar}{% + extension `foo' already in use% + }{% + Each extension may be used only + once.\MessageBreak + The class or another package already + uses extension `foo'.\MessageBreak + This error is fatal!\MessageBreak + You should not continue!}% + }{% + \PackageInfo{bar}{using extension `foo'}% + } + \end{lstcode} +\end{Example} +% +\EndIndex{Package}{tocbasic} + + +\begin{Declaration} + \Macro{addtotoclist}\OParameter{Besitzer}\Parameter{Dateierweiterung} +\end{Declaration} +\BeginIndex{Cmd}{addtotoclist}% +Diese Anweisung fügt die \PName{Dateierweiterung} zu der Liste der bekannten +Dateierweiterungen. Wenn das optionale Argument \OParameter{Besitzer} +angegeben wurde, wird der angegebene \PName{Besitzer} für diese +Dateierweiterung mit gespeichert. Wurde das optionale Argument weg gelassen, +dann versucht \Package{tocbasic} den Dateinamen der aktuell abgearbeiteten +Klasse oder des Pakets herauszufinden und als \PName{Besitzer} zu +speichern. Dies funktioniert nur, wenn \Macro{addtotoclist} während des Ladens +der Klasse oder des Pakets aufgerufen wird. Es funktioniert nicht, wenn +\Macro{addtoclist} erst später Aufgrund der Verwendung einer Anweisung durch +den Benutzer aufgerufen wird. In diesem Fall wird als \PName{Besitzer} +»\PValue{.}« eingetragen. Beachten Sie, dass ein leeres Argument +\PName{Besitzer} nicht das gleiche ist, wie das Weglassen des kompletten +optionalen Arguments einschließlich der eckigen Klammern. Ein leeres Argument +würde auch einen leeren \PName{Besitzer} ergeben. +\begin{Example} + Angenommen, Sie wollen die Dateierweiterung »\File{foo}« zu der Liste der + bekannten Dateierweiterungen hinzufügen, während Ihr Paket mit dem + Dateinamen »\File{bar.sty}« geladen wird: + \begin{lstcode} + \addtotoclist{foo} + \end{lstcode} + Dies fügt die Dateierweiterung »\PValue{foo}« mit dem Besitzer + »\PValue{bar.sty}« zur Liste der bekannten Dateierweiterung, wenn diese + Erweiterung nicht bereits in der Liste ist. Wenn bereits die verwendete + Klasse oder ein anderes Paket diese Dateierweiterung angemeldet hat, + erhalten Sie den Fehler: + \begin{lstoutput} + Package tocbasic Error: file extension `#2' cannot be used twice + + See the tocbasic package documentation for explanation. + Type H <return> for immediate help. + \end{lstoutput} + Wenn Sie dann tatsächlich die Taste »\texttt{H}« gefolgt von der + Return-Taste drücken, erhalten Sie als Hilfe: + \begin{lstoutput} + File extension `foo' is already used by a toc-file, while bar.sty + tried to use it again for a toc-file. + This may be either an incompatibility of packages, an error at a package, + or a mistake by the user. + \end{lstoutput} + + Aber vielleicht stellt Ihr Paket auch eine Anweisung bereit, mit der ein + Verzeichnis dynamisch erzeugt werden kann. In diesem Fall sollten Sie das + optionale Argument von \Macro{addtotoclist} verwenden, um den + \PName{Besitzer} anzugeben: + \begin{lstcode} + \newcommand*{\createnewlistofsomething}[1]{% + \addtotoclist[bar.sty]{#1}% + % Weitere Aktionen, um dieses Verzeichnis + % verfügbar zu machen + } + \end{lstcode} + Wenn jetzt der Anwender diese Anweisung aufruft, beispielsweise mit + \begin{lstcode} + \createnewlistofsomething{foo} + \end{lstcode} + dann wird die Dateierweiterung »\PValue{foo}« ebenfalls mit dem Besitzer + »\PValue{bar.sty}« zur Liste der bekannten Dateierweiterungen hinzugefügt + oder aber ein Fehler gemeldet, wenn diese Dateierweiterung bereits verwendet + wird. +\end{Example} +Sie können als \PName{Besitzer} angeben, was immer Sie wollen, aber es sollte +eindeutig sein! Wenn Sie beispielsweise der Autor des Pakets \Package{float} +wären, könnten Sie als \PName{Besitzer} auch »\PValue{float}« an Stelle von +»\PValue{float.sty}« angeben. In diesem Fall würden die \KOMAScript-Optionen +für das Verzeichnis der Abbildungen und das Verzeichnis der Tabellen auch Ihre +Verzeichnisse betreffen, die zum Zeitpunkt der Verwendung der Option bereits +zur Liste der bekannten Dateierweiterungen hinzugefügt sind. Das liegt daran, +dass \KOMAScript{} die Dateierweiterungen »\PValue{lof}« für das +Abbildungsverzeichnis und »\PValue{lot}« für das Tabellenverzeichnis mit dem +Besitzer »\PName{float}« anmeldet und die Optionen für diese Besitzer setzt.% +% +\EndIndex{Cmd}{addtotoclist}% + + +\begin{Declaration} + \Macro{AtAddToTocList}\OParameter{Besitzer}\Parameter{Anweisungen} +\end{Declaration} +\BeginIndex{Cmd}{AtAddToTocList}% +Auf diese Weise können die \Parameter{Anweisungen} zu einer internen Liste von +Anweisungen hinzugefügt werden, die immer dann auszuführen sind, wenn eine +Dateierweiterung mit dem angegebenen \PName{Besitzer} zur Liste der bekannten +Dateierweiterungen hinzugefügt wird. Bezüglich des optionalen Argument wird wie +in der Erklärung von \Macro{addtotoclist} beschrieben verfahren. Wird das +optionale Argument leer gelassen, werden in diesem Fall die Aktionen unabhängig +vom Besitzer immer ausgeführt, wenn die Dateierweiterung zu der Liste der +bekannten Dateierweiterungen hinzugefügt wird. Während der Ausführung der +\PName{Anweisungen} ist außerdem \Macro{@currext} die Dateierweiterung, die +gerade hinzugefügt wird. +\begin{Example} + \Package{tocbasic} selbst verwendet + % Umbruchkorrektur (schließende Klammer verschoben) + \begin{lstcode} + \AtAddToTocList[]{% + \expandafter\tocbasic@extend@babel + \expandafter{\@currext}} + \end{lstcode} + um jede Dateierweiterung zu der in \Package{tocbasic} vorhandenen + Erweiterung für das Paket \Package{babel} hinzuzufügen. Die zweimalige + Verwendung von \Macro{expandafter} ist an dieser Stelle erforderlich, weil + das Argument von \Macro{tocbasic@extend@babel} unbedingt expandiert sein + muss. Siehe dazu die Erklärung zu \Macro{tocbasic@extend@babel} in + \autoref{sec:tocbasic.internals}, + \autopageref{desc:tocbasic.cmd.tocbasic@extend@babel}. +\end{Example} +% +\EndIndex{Cmd}{AtAddToTocList}% + + +\begin{Declaration} + \Macro{removefromtoclist}\OParameter{Besitzer}\Parameter{Dateierweiterung} +\end{Declaration} +\BeginIndex{Cmd}{removefromtoclist}% +Man kann eine \PName{Dateierweiterung} auch wieder aus der Liste der bekannten +Dateierweiterungen entfernen. Ist das optionale Argument \OParameter{Besitzer} +angegeben, so wird die Dateierweiterung nur entfernt, wenn sie für den +angegebenen \PName{Besitzer} angemeldet wurde. Wie der Besitzer beim Weglassen +des optionalen Argument bestimmt wird, ist der Erklärung zu +\Macro{addtotoclist} zu entnehmen. Wird ein leerer \PName{Besitzer} angegeben, +findet kein Besitzertest statt, sondern die \PName{Dateierweiterung} wird +unabhängig vom Besitzer entfernt.% +\EndIndex{Cmd}{removefromtoclist}% + + +\begin{Declaration} + \Macro{doforeachtocfile}\OParameter{Besitzer}\Parameter{Anweisungen} +\end{Declaration} +\BeginIndex{Cmd}{doforeachtocfile}% +Bisher haben Sie nur Anweisungen kennen gelernt, die für Klassen- und +Paketautoren eher zusätzlichen Aufwand bedeuten. Mit \Macro{doforeachtocfile} +kann man die erste Ernte dafür einfahren. Diese Anweisung erlaubt es die +angegebenen \PName{Anweisungen} für jede von dem \PName{Besitzer} angemeldete +Dateierweiterung auszuführen. Während der Ausführung der \PName{Anweisungen} +ist \Macro{@currext} die aktuell verarbeitete Dateierweiterung. Wird das +optionale Argument \OParameter{Besitzer} weggelassen, so werden alle +Dateierweiterungen unabhängig vom Besitzer abgearbeitet. Ein leeres optionales +Argument würde hingegen nur die Dateierweiterungen mit leerem Besitzer +verarbeiten. +\begin{Example} + Wenn Sie die Liste aller bekannten Dateierweiterungen auf das Terminal und + in die \File{log}-Datei ausgeben wollen, ist dies einfach mit + \begin{lstcode} + \doforeachtocfile{\typeout{\@currext}} + \end{lstcode} + möglich. Wollen Sie hingegen nur die Dateierweiterungen des Besitzer + »\PValue{foo}«, dann geht das einfach mit: + \begin{lstcode} + \doforeachtocfile[foo]{\typeout{\@currext}} + \end{lstcode} +\end{Example} +Die \KOMAScript-Klassen \Class{scrbook} und \Class{scrreprt} verwenden diese +Anweisung übrigens, um für jedes Verzeichnis, für das die Eigenschaft +\PValue{chapteratlist} gesetzt ist, optional einen vertikalen Abstand oder die +Kapitelüberschrift in dieses Verzeichnis einzutragen. Wie Sie diese +Eigenschaft setzen können, ist in \autoref{sec:tocbasic.toc}, +\autopageref{desc:tocbasic.cmd.setuptoc} zu finden.% +\EndIndex{Cmd}{doforeachtocfile} + + +\begin{Declaration} + \Macro{tocbasicautomode} +\end{Declaration} +\BeginIndex{Cmd}{tocbasicautomode}% +Diese Anweisung definiert die Anweisung \Macro{@starttoc}, die der \LaTeX-Kern +bereit stellt, so um, dass bei jedem Aufruf von \Macro{@starttoc} die dabei +angegebene Dateierweiterung in die Liste der bekannten Dateierweiterungen +eingefügt wird, soweit sie dort noch nicht vorhanden ist. Außerdem wird dann +\Macro{tocbasic@starttoc} an Stelle von \Macro{@starttoc} verwendet. Näheres +zu \Macro{tocbasic@starttoc} und \Macro{@starttoc} ist +\autoref{sec:tocbasic.internals}, +\autopageref{desc:tocbasic.cmd.tocbasic@starttoc} zu entnehmen. + +Mit Hilfe von \Macro{tocbasicautomode} wird also sozusagen jedes Verzeichnis, +das mit Hilfe von \Macro{@starttoc} erstellt wird, automatisch zumindest +teilweise unter die Kontrolle von \Package{tocbasic} gestellt. Ob das zum +gewünschten Ergebnis führt, hängt jedoch sehr von den jeweiligen +Verzeichnissen ab. Immerhin funktioniert damit schon einmal die Erweiterung +für das \Package{babel}-Paket für alle Verzeichnisse. Es ist jedoch +vorzuziehen, wenn der Paketautor selbst \Package{tocbasic} explizit +verwendet. Er kann dann auch die weiteren Vorteile nutzen, die ihm das Paket +bietet und die in den nachfolgenden Abschnitten beschrieben werden.% +\EndIndex{Cmd}{tocbasicautomode} + + +\section{Erzeugen eines Verzeichnisses} +\label{sec:tocbasic.toc} + +Im vorherigen Abschnitt haben Sie erfahren, wie eine Liste bekannter +Dateierweiterungen geführt werden kann und wie automatisch Anweisungen beim +Hinzufügen von Dateierweiterungen zu dieser Liste ausgeführt werden +können. Des Weiteren haben Sie eine Anweisung kennen gelernt, mit der man für +jede einzelne bekannte Dateierweiterung oder einen spezifischen Teil davon +Anweisungen ausführen kann. In diesem Abschnitt werden Sie Anweisungen kennen +lernen, die sich auf die Datei beziehen, die mit dieser Dateierweiterung +verbunden ist. + + +\begin{Declaration} + \Macro{addtoeachtocfile}\OParameter{Besitzer}\Parameter{Inhalt} +\end{Declaration} +\BeginIndex{Cmd}{addtoeachtocfile}% +Die Anweisung \Macro{addtoeachtocfile} arbeitet ähnlich zu +\Macro{addtotocfile} aus dem \LaTeX-Kern mit dem Unterschied, dass +es \Parameter{Inhalt} in jede Datei schreibt, die für den angegebenen +\PName{Besitzer} in der Liste der bekannten Dateierweiterungen zu finden +ist. Wird das optionale Argument weggelassen, wird in jede Datei aus der Liste +der bekannten Dateierweiterungen geschrieben. Der konkrete Dateiname setzt +sich dabei übrigens aus \Macro{jobname} und der Dateierweiterung +zusammen. Während des Schreibens von \PName{Inhalt} ist \Macro{@currext} die +Dateierweiterung der Datei, in die aktuell geschrieben wird. +\begin{Example} + Sie wollen einen vertikalen Abstand von einer Zeile in alle Dateien aus der + Liste der bekannten Dateierweiterungen schreiben. + \begin{lstcode} + \addtoeachtocfile{% + \protect\addvspace{\protect\baselineskip}% + }% + \end{lstcode} + Wenn Sie das hingegen nur für die Dateien mit dem definierten Besitzer + »\PValue{foo}« machen wollen, verwenden Sie: + \begin{lstcode} + \addtoeachtocfile[foo]{% + \protect\addvspace{\protect\baselineskip}% + } + \end{lstcode} +\end{Example} +Anweisungen, die nicht bereits beim Schreiben expandiert werden sollen, sollte +wie bei \Macro{addtotocfile} mit \Macro{protect} geschützt werden. +\EndIndex{Cmd}{addtoeachtocfile}% + + +\begin{Declaration} + \Macro{addcontentslinetoeachtocfile}\OParameter{Besitzer}\Parameter{Ebene}\Parameter{Inhalt} +\end{Declaration} +\BeginIndex{Cmd}{addcontentslinetoeachtocfile}% +Diese Anweisung ist mit der \LaTeX-Kern-Anweisung \Macro{addcontentsline} +vergleichbar. Der Unterschied besteht darin, dass auch diese Anweisung nicht +nur in eine einzelne Datei, sondern in alle Dateien eines angegebenen +Besitzers und bei Verzicht auf das optionale Argument in alle Dateien aus der +Liste der bekannten Dateierweiterungen schreibt. +\begin{Example} + Angenommen, Sie sind Klassen-Autor und wollen den Kapiteleintrag nicht nur in + das Inhaltsverzeichnis, sondern in alle Verzeichnisdateien schreiben. Nehmen + wir weiter an, dass aktuell \PName{\#1} den Titel enthält, der geschrieben + werden soll. + \begin{lstcode} + \addcontentslinetoeachtocfile{chapter}{% + \protect\numberline{\thechapter}#1}% + \end{lstcode} + In diesem Fall soll natürlich die aktuelle Kapitelnummer direkt beim + Schreiben in die Verzeichnisdatei expandiert werden, weshalb sie nicht mit + \Macro{protect} vor der Expansion geschützt wurde. +\end{Example} +% +\EndIndex{Cmd}{addcontentslineroeachtocfile}% + + +\begin{Declaration} + \Macro{listoftoc}\OParameter{Titel}\Parameter{Dateierweiterung}\\ + \Macro{listoftoc*}\Parameter{Dateierweiterung}\\ + \Macro{listofeachtoc}\OParameter{Besitzer}\\ + \Macro{listof\PName{Dateierweiterung}name} +\end{Declaration} +\BeginIndex{Cmd}{listoftoc}% +\BeginIndex{Cmd}{listoftoc*}% +\BeginIndex{Cmd}{listofeachtoc}% +\BeginIndex{Cmd}{listof\PName{Dateierweiterung}name}% +Mit diesen Anweisungen werden die Verzeichnisse ausgegeben. Die Sternvariante +\Macro{listoftoc*} benötigt als einziges Argument die \PName{Dateierweiterung} +der Datei mit den Daten zu dem Verzeichnis. Die Anweisung setzt zunächst die +vertikalen und horizontalen Abstände, die innerhalb von Verzeichnissen gelten +sollen, führt die Anweisungen aus, die vor dem Einlesen der Datei ausgeführt +werden sollen, liest dann die Datei und führt zum Schluss die Anweisungen aus, +die nach dem Einlesen der Datei ausgeführt werden sollen. Damit kann +\Macro{listoftoc*} als direkter Ersatz der \LaTeX-Kern-Anweisung +\Macro{@starttoc} verstanden werden. + +Die Version von \Macro{listoftoc} ohne Stern setzt das komplette Verzeichnis +und veranlasst auch einen optionalen Eintrag in das Inhaltsverzeichnis und den +Kolumnentitel. Ist das optionale Argument \OParameter{Titel} gegeben, so wird +diese Angabe sowohl als Überschrift als auch als optionaler Eintrag in +Inhaltsverzeichnis und Kolumnentitel verwendet. Ist das Argument \PName{Titel} +lediglich leer, so wird auch eine leere Angabe verwendet. Wird hingegen das +komplette Argument einschließlich der eckigen Klammern weggelassen, so wird +die Anweisung \Macro{listof\PName{Dateierweiterung}name} verwendet, wenn diese +definiert ist. Ist sie nicht definiert, wird ein Standard-Ersatzname verwendet +und eine Warnung ausgegeben. + +Die Anweisung \Macro{listofeachtoc} gibt alle Verzeichnisse des angegebenen +Besitzers oder alle Verzeichnisse aller bekannten Dateinamenerweiterungen +aus. Dabei sollte \Macro{listof\PName{Dateierweiterung}name} definiert sein, +damit der korrekte Titel ausgegeben werden kann. Da eventuell auch der +Anwender selbst die Anweisungen \Macro{listoftoc*} und \Macro{listofeachtoc} +verwenden könnte, wird empfohlen \Macro{listof\PName{Dateierweiterung}name} +immer passend zu definieren. +\begin{Example} + Angenommen, Sie haben ein neues »Verzeichnis der Algorithmen« mit der + Dateierweiterung »\PValue{loa}« und wollen dieses anzeigen lassen: + \begin{lstcode} + \listoftoc[Verzeichnis der Algorithmen]{loa} + \end{lstcode} + erledigt das für Sie. Wollen Sie das Verzeichnis hingegen ohne Überschrift + ausgegeben haben, dann genügt: + \begin{lstcode} + \listoftoc*{loa} + \end{lstcode} + In diesem Fall würde natürlich auch ein optional aktivierter Eintrag in das + Inhaltsverzeichnis nicht gesetzt. Näheres zur Eigenschaft des Eintrags in + das Inhaltsverzeichnis ist bei der Anweisung \Macro{setuptoc}, + \autopageref{desc:tocbasic.cmd.setuptoc} zu finden. +\end{Example} +% +\EndIndex{Cmd}{listof\PName{Dateierweiterung}name}% +\EndIndex{Cmd}{listofeachtoc}% +\EndIndex{Cmd}{listoftoc*}% +\EndIndex{Cmd}{listoftoc}% + + +\begin{Declaration} + \Macro{BeforeStartingTOC}\OParameter{Dateierweiterung}\Parameter{Anweisungen}\\ + \Macro{AfterStartingTOC}\OParameter{Dateierweiterung}\Parameter{Anweisungen} +\end{Declaration} +\BeginIndex{Cmd}{BeforeStartingTOC}% +\BeginIndex{Cmd}{AfterStartingTOC}% +Manchmal ist es nützlich, wenn unmittelbar vor dem Einlesen der Datei mit den +Verzeichnisdaten \PName{Anweisungen} ausgeführt werden können. Mit Hilfe von +\Macro{BeforeStartingTOC} können Sie genau solche \PName{Anweisungen} +wahlweise für eine einzelne \PName{Dateierweiterung} oder alle Dateien, die +mit Hilfe von \Macro{listoftoc*}, \Macro{listoftoc} oder \Macro{listofeachtoc} +eingelesen werden, erreichen. Ebenso können Sie \PName{Anweisungen} nach dem +Einlesen der Datei ausführen, wenn Sie diese mit \Macro{AfterStartingTOC} +definieren. Während der Ausführung der \PName{Anweisungen} ist +\Macro{@currext} die Dateierweiterung der Datei, die eingelesen wird +bzw. gerade eingelesen wurde.% +\EndIndex{Cmd}{AfterStartingTOC}% +\EndIndex{Cmd}{BeforeStartingTOC}% + + +\begin{Declaration} + \Macro{BeforeTOCHead}\OParameter{Dateierweiterung}\Parameter{Anweisungen}\\ + \Macro{AfterTOCHead}\OParameter{Dateierweiterung}\Parameter{Anweisungen} +\end{Declaration} +\BeginIndex{Cmd}{BeforeTOCHead}% +\BeginIndex{Cmd}{AfterTOCHead}% +Es können auch \PName{Anweisungen} definiert werden, die unmittelbar vor oder +nach dem Setzen der Überschrift bei Verwendung von \Macro{listoftoc} oder +\Macro{listofeachtoc}, ausgeführt werden. Bezüglich des optionalen Arguments +und der Bedeutung von \Macro{@currext} gilt, was bereits bei +\Macro{BeforeStartingTOC} und \Macro{AfterStartingTOC} oben erklärt wurde.% +\EndIndex{Cmd}{AfterTOCHead}% +\EndIndex{Cmd}{BeforeTOCHead}% + + +\begin{Declaration} + \Macro{MakeMarkcase} +\end{Declaration} +\BeginIndex{Cmd}{MakeMarkcase}% +Wenn das Paket \Package{tocbasic} eine Marke für einen Kolumnentitel setzt, +dann setzt sie diese immer als Argument der Anweisung +\Macro{MakeMarkcase}. Diese Anweisung ist dazu gedacht, bei Bedarf die +Groß-/Kleinschreibung des Kolumnentitels zu ändern. In der Voreinstellung ist +diese Anweisung bei Verwendung einer \KOMAScript-Klasse \Macro{@firstofone} +und bei Verwendung einer anderen Klasse \Macro{MakeUppercase}. Die Anweisung +wird von \Package{tocbasic} jedoch nur definiert, wenn sie noch nicht bereits +definiert ist. Sie kann also in einer Klasse in der gewünschten Weise +vorbelegt werden und wird dann von \Package{tocbasic} nicht umdefiniert, +sondern verwendet wie vorgefunden. +\begin{Example} + Sie wollen aus unerfindlichen Gründen, dass die Kolumnentitel in Ihrer + Klasse in Kleinbuchstaben ausgegeben werden. Damit dies auch für die + Kolumnentitel gilt, die von \Package{tocbasic} gesetzt werden, definieren + Sie: + \begin{lstcode} + \let\MakeMarkcase\MakeLowercase + \end{lstcode} +\end{Example} +% +\EndIndex{Cmd}{MakeMarkcase}% + + +\begin{Declaration} + \Macro{deftocheading}\Parameter{Dateierweiterung}\Parameter{Definition} +\end{Declaration} +\BeginIndex{Cmd}{deftocheading}% +Das Paket \Package{tocbasic} enthält eine Standarddefinition für das Setzen +von Überschriften von Verzeichnissen. Diese Standarddefinition ist durch +verschiedene Eigenschaften, die bei der Anweisung \Macro{setuptoc} erläutert +werden, konfigurierbar. Sollte diese Möglichkeit einmal nicht ausreichen, so +besteht die Möglichkeit, mit \Macro{deftocheading} eine alternative +Überschriftenanweisung für ein Verzeichnis mit einer bestimmten +\PName{Dateierweiterung} zu definieren. Die Definition kann als einzigen +Parameter \PName{\#1} enthalten. Beim Aufruf der Anweisung innerhalb von +\Macro{listoftoc} oder \Macro{listofeachtoc} wird als dieses Argument dann der +Titel für das Verzeichnis übergeben. +% +\EndIndex{Cmd}{deftocheading}% + + +\begin{Declaration} + \Macro{setuptoc}\Parameter{Dateierweiterung}\Parameter{Liste von + Eigenschaften}\\ + \Macro{unsettoc}\Parameter{Dateierweiterung}\Parameter{Liste von + Eigenschaften} +\end{Declaration} +\BeginIndex{Cmd}{setuptoc}% +\BeginIndex{Cmd}{unsettoc}% +Mit diesen Anweisungen können \PName{Eigenschaften} für eine +\PName{Dateierweiterung} bzw. das Verzeichnis, das dazu gehört, gesetzt +werden. Die \PName{Liste von Eigenschaften} ist dabei eine durch Komma +getrennte Aneinanderreihung von \PName{Eigenschaften}. Das Paket +\Package{tocbasic} wertet folgende Eigenschaften aus: +\begin{description} +\item[\PValue{totoc}] bedeutet, dass der Titel des Verzeichnisses in das + Inhaltsverzeichnis aufgenommen werden soll. Diese Eigenschaft wird von der + internen Überschriftenanweisung ausgewertet. Wird hingegen eine eigene + Überschriftenanweisung mit \Macro{deftocheading} definiert, liegt die + Auswertung der Eigenschaft in der Verantwortung dessen, der die Definition + vornimmt. Die \KOMAScript-Klassen setzen diese Eigenschaft bei Verwendung + der Option \OptionValue{listof}{totoc} für alle Dateierweiterungen des + Besitzers \Package{float}. +\item[\PValue{numbered}] bedeutet, dass das Verzeichnis nummeriert und damit + ebenfalls in das Inhaltsverzeichnis aufgenommen werden soll. Diese + Eigenschaft wird von der internen Überschriftenanweisung ausgewertet. Wird + hingegen eine eigene Überschriftenanweisung mit \Macro{deftocheading} + definiert, liegt die Auswertung der Eigenschaft in der Verantwortung dessen, + der die Definition vornimmt. Die \KOMAScript-Klassen setzen diese + Eigenschaft bei Verwendung der Option \OptionValue{listof}{numbered} für + alle Dateierweiterungen des Besitzers \Package{float}. +\item[\PValue{leveldown}] bedeutet, dass das Verzeichnis nicht mit der + obersten Gliederungsebene (wenn vorhanden \Macro{chapter}, sonst + \Macro{section}) erstellt wird, sondern mit einer Überschrift der nächst + tieferen Gliederungsebene. Diese Eigenschaft wird von der internen + Überschriftenanweisung ausgewertet. Wird hingegen eine eigene + Überschriftenanweisung mit \Macro{deftocheading} definiert, liegt die + Auswertung der Eigenschaft in der Verantwortung dessen, der die Definition + vornimmt. Die \KOMAScript-Klassen setzen diese Eigenschaft bei Verwendung + der Option \OptionValue{listof}{leveldown} für alle Dateierweiterungen des + Besitzers \Package{float}. +\item[\PValue{nobabel}] bedeutet, dass die normalerweise automatisch + verwendete Erweiterung für die Sprachumschaltung mit \Package{babel} für + diese Dateierweiterung nicht verwendet wird. Diese Eigenschaft sollte nur + für Verzeichnisse verwendet werden, die nur in einer festen Sprache erstellt + werden, in denen also Sprachumschaltungen im Dokument nicht zu + berücksichtigen sind. +\end{description} +Die \KOMAScript-Klassen kennen eine weitere Eigenschaft: +\begin{description} +\item[\PValue{chapteratlist}] sorgt dafür, dass in dieses Verzeichnis bei + jedem neuen Kapitel eine optionale Gliederung eingefügt wird. In der + Voreinstellung ist diese Untergliederung dann ein vertikaler + Abstand. Näheres zu den Möglichkeiten ist Option \Option{listof} in + \autoref{sec:maincls.floats}, \autopageref{desc:maincls.option.listof} zu + entnehmen. +\end{description} +\begin{Example} + Da \KOMAScript{} für das Abbildungs- und das Tabellenverzeichnis auf + \Package{tocbasic} aufbaut, gibt es nun eine weitere Möglichkeit, jegliche + Kapiteluntergliederung dieser Verzeichnisse zu verhindern: + \begin{lstcode} + \unsettoc{lof}{chapteratlist} + \unsettoc{lot}{chapteratlist} + \end{lstcode} + + Wollen Sie hingegen, dass das von Ihnen definierte Verzeichnis mit der + Dateierweiterung »\PName{loa}« ebenfalls von der Kapiteluntergliederung der + \KOMAScript-Klassen betroffen ist, so verwenden Sie + \begin{lstcode} + \setuptoc{loa}{chapteratlist} + \end{lstcode} + Sollte Ihr Paket mit einer anderen Klasse verwendet werden, so schadet es + trotzdem nicht, dass Sie diese Eigenschaft setzen, im Gegenteil: wertet eine + andere Klasse diese Eigenschaft ebenfalls aus, so nutzt Ihr Paket dann eben + automatisch die Möglichkeiten jener Klasse. +\end{Example} +Wie Sie hier sehen, unterstützt ein Paket, das \Package{tocbasic} verwendet, +bereits ohne nennenswerten Aufwand diverse Möglichkeiten für die dadurch +realisierten Verzeichnisse, die sonst einigen Implementierungsaufwand +bedeuteten und deshalb in vielen Paketen leider fehlen.% +\EndIndex{Cmd}{unsettoc}% +\EndIndex{Cmd}{setuptoc}% + + +\begin{Declaration} + \Macro{iftocfeature}\Parameter{Dateierweiterung}\Parameter{Eigenschaft}\Parameter{Dann-Teil}\Parameter{Sonst-Teil} +\end{Declaration} +\BeginIndex{Cmd}{iftocfeature}% +Mit dieser Anweisung können Sie feststellen, ob eine bestimmte +\PName{Eigenschaft} für eine \PName{Dateierweiterung} gesetzt ist. Ist sie +gesetzt, so wird der \PName{Dann-Teil} ausgeführt, anderenfalls der +\PName{Sonst-Teil}. Dies ist beispielsweise dann nützlich, wenn Sie eigene +Überschriftenanweisungen mit \Macro{deftocheading} definieren, aber die oben +beschriebene Eigenschaft \PValue{totoc}, \PValue{numbered} oder +\PValue{leveldown} ebenfalls unterstützen wollen. +% +\EndIndex{Cmd}{iftocfeature}% + + +\section{Interne Anweisungen für Klassen- und Paketautoren} +\label{sec:tocbasic.internals} + +Das Paket \Package{tocbasic} bietet einige interne Anweisungen, deren Benutzung +durch Klassen- und Paketautoren freigegeben ist. Diese Anweisungen +beginnen alle mit \Macro{tocbasic@}. Aber auch Klassen- und Paketautoren +sollten diese Anweisungen nur verwenden und nicht etwas umdefinieren! Ihre +interne Funktion kann jederzeit geändert oder erweitert werden, so dass +Umdefinierung der Anweisungen die Funktion von \Package{tocbasic} erheblich +beschädigen könnte! + + +\begin{Declaration} + \Macro{tocbasic@extend@babel}\Parameter{Dateierweiterung} +\end{Declaration} +\BeginIndex{Cmd}{tocbasic@extend@babel}% +Das Paket \Package{babel}\IndexPackage{babel} (siehe \cite{package:babel}) +bzw. ein \LaTeX-Kern, der um die Sprachverwaltung von \Package{babel} +erweitert wurde, schreibt bei jeder Sprachumschaltung am Anfang oder innerhalb +eines Dokuments in die Dateien mit den Dateierweiterungen \File{toc}, +\File{lof} und \File{lot} Anweisungen, um diese Sprachumschaltung in diesen +Dateien mit zu führen. \Package{tocbasic} erweitert diesen Mechanismus so, +dass mit Hilfe von \Macro{tocbasic@extend@babel} auch andere +\PName{Dateierweiterungen} davon profitieren. Das Argument +\PName{Dateierweiterung} sollte dabei vollständig expandiert sein! +Anderenfalls besteht die Gefahr, dass etwa die Bedeutung eines Makros zum +Zeitpunkt der tatsächlichen Auswertung bereits geändert wurde. + +Normalerweise wird diese Anweisung für alle \PName{Dateierweiterungen}, die mit +\Macro{addtotoclist} zur Liste der bekannten Dateierweiterungen hinzugefügt +werden, aufgerufen. Über die Eigenschaft \PValue{nobabel} (siehe +\Macro{setuptoc}, \autoref{sec:tocbasic.toc}, +\autopageref{desc:tocbasic.cmd.setuptoc}) kann dies unterdrückt werden. Für +die Dateinamenerweiterungen \File{toc}, +\File{lof} und \File{lot} unterdrückt \Package{tocbasic} dies bereits selbst, +damit die Umschaltung nicht mehrfach in die zugehörigen Dateien eingetragen +wird. + +Normalerweise gibt es keinen Grund, diese Anweisung selbst aufzurufen. Es sind +allerdings Verzeichnisse denkbar, die nicht unter der Kontrolle von +\Package{tocbasic} stehen, also nicht in der Liste der bekannten +Dateierweiterungen geführt werden, aber trotzdem die Spracherweiterung für +\Package{babel} nutzen sollen. Für diese ist die Anweisung explizit +aufzurufen. Bitte achten Sie jedoch darauf, dass dies für jede Dateierweiterung +nur einmal geschieht! +% +\EndIndex{Cmd}{tocbasic@extend@babel}% + + +\begin{Declaration} + \Macro{tocbasic@starttoc}\Parameter{Dateierweiterung} +\end{Declaration} +\BeginIndex{Cmd}{tocbasic@starttoc}% +Diese Anweisung ist der eigentlich Ersatz der Anweisung \Macro{@starttoc} aus +dem \LaTeX-Kern. Es ist die Anweisung, die sich hinter \Macro{listoftoc*} +verbirgt. Klassen- oder Paketautoren, die Vorteile von \Package{tocbasic} +nutzen wollen, sollten zumindest diese Anweisung, besser jedoch +\Macro{listoftoc} verwenden. Die Anweisung baut selbst auf \Macro{@starttoc} +auf, setzt allerdings zuvor \Length{parskip} und \Length{parindent} auf 0 und +\Length{parfillskip} auf 0 bis unendlich. Außerdem wird \Macro{@currext} auf +die aktuelle Dateierweiterung gesetzt, damit diese in den nachfolgend +ausgeführten Haken ausgewertet werden können. +% +\EndIndex{Cmd}{tocbasic@starttoc}% + + +\begin{Declaration} + \Macro{tocbasic@@before@hook}\\ + \Macro{tocbaisc@@after@hook} +\end{Declaration} +\BeginIndex{Cmd}{tocbasic@@before@hook}% +\BeginIndex{Cmd}{tocbasic@@after@hook}% +Der Haken \Macro{tocbasic@@before@hook} wird unmittelbar vor dem Einlesen der +Verzeichnisdatei, aber noch vor den mit \Macro{BeforeStartingTOC} definierten +Anweisungen ausgeführt. Es ist erlaubt, diesen Haken mit Hilfe von +\Macro{g@addto@macro} zu erweitern. + +Ebenso wird \Macro{tocbaisc@@after@hook} unmittelbar nach der Verzeichnisdatei +aber noch vor den mit \Macro{AfterStartingTOC} definieren Anweisungen +ausgeführt. Es ist erlaubt, diesen Haken mit Hilfe von \Macro{g@addto@macro} +zu erweitern. + +\KOMAScript{} nutzt diese Haken, um die Verzeichnisse mit dynamischer +Anpassung an die Breite der Gliederungsnummern zu ermöglichen. Ihre Verwendung +ist Klassen und Paketen vorbehalten. Anwender sollten sich auf +\Macro{BeforeStartingTOC} und \Macro{AfterStartingTOC} beschränken. Paketautoren +sollten ebenfalls vorzugsweise diese beiden Anwenderanweisungen verwenden! +Ausgaben innerhalb der beiden Haken sind nicht gestattet! + +Werden für die Ausgabe der Verzeichnisse die Anweisungen \Macro{listoftoc}, +\Macro{listoftoc*} und \Macro{listofeachtoc} nicht verwendet, sollten die +beiden Anweisungen für die Haken trotzdem aufgerufen werden. +% +\EndIndex{Cmd}{tocbasic@@after@hook}% +\EndIndex{Cmd}{tocbasic@@before@hook}% + + +\begin{Declaration} + \Macro{tb@\PName{Dateierweiterung}@before@hook}\\ + \Macro{tb@\PName{Dateierweiterung}@after@hook} +\end{Declaration} +\BeginIndex{Cmd}{tb@\PName{Dateierweiterung}@before@hook}% +\BeginIndex{Cmd}{tb@\PName{Dateierweiterung}@after@hook}% +Diese Anweisungen werden unmittelbar nach \Macro{tocbasic@@before@hook} +bzw. vor \Macro{tocbaisc@@after@hook} für die einzelnen +\PName{Dateierweiterungen} ausgeführt. Sie dürfen keinesfalls von Klassen- und +Paketautoren verändert werden. Werden für die Ausgabe der Verzeichnisse die +Anweisungen \Macro{listoftoc}, \Macro{listoftoc*} und \Macro{listofeachtoc} +nicht verwendet, sollte diese die beiden Anweisungen für die Haken trotzdem +aufgerufen werden, soweit sie definiert sind. Die Anweisungen können auch +undefiniert sein. +% +\EndIndex{Cmd}{tb@\PName{Dateierweiterung}@after@hook}% +\EndIndex{Cmd}{tb@\PName{Dateierweiterung}@before@hook}% + + +\begin{Declaration} + \Macro{tocbasic@listhead}\Parameter{Titel} +\end{Declaration} +\BeginIndex{Cmd}{tocbasic@listhead}% +Diese Anweisung wird von \Macro{listoftoc} und \Macro{listofeachtoc} +verwendet, um die Anweisung zum Setzen der Überschrift eines Verzeichnisses +aufzurufen. Das kann entweder die vordefinierte Anweisung des Pakets +\Package{tocbasic} oder eine individuelle Anweisung sein. Wenn Sie Ihre eigene +Anweisung für die Überschrift definieren, können Sie ebenfalls +\Macro{tocbasic@listhead} verwenden. In diesem Fall sollte vor dem Aufruf von +\Macro{tocbasic@listhead} die Anweisung \Macro{@currext} auf die +Dateinamenerweiterung, die zu diesem Verzeichnis gehört, gesetzt werden. +% +\EndIndex{Cmd}{tocbasic@listhead} + + +\begin{Declaration} + \Macro{tocbasic@listhead@\PName{Dateierweiterung}}\Parameter{Titel} +\end{Declaration} +\BeginIndex{Cmd}{tocbasic@listhead@\PName{Dateierweiterung}}% +Ist diese individuelle Anweisung für das Setzen einer Verzeichnisüberschrift +definiert, so verwendet \Macro{tocbasic@listhead} diese. Anderenfalls +definiert \Macro{tocbasic@listhead} diese und ruft sie dann auf. +% +\EndIndex{Cmd}{tocbasic@listhead@\PName{Dateierweiterung}} + + +\section{Ein komplettes Beispiel} +\label{sec:tocbasic.example} + +In diesem Abschnitt finden Sie ein komplettes Beispiel, wie eine eigene +Gleitumgebung einschließlich Verzeichnis und \KOMAScript-Integration mit Hilfe +von \Package{tocbasic} definiert werden kann. In diesem Beispiel werden +interne Anweisungen, also solche mit »\texttt{@}« im Namen verwendet. Das +bedeutet, dass die Anweisungen entweder in einem eigenen Paket, einer Klasse +oder zwischen \Macro{makeatletter} und \Macro{makeatother} verwendet werden +müssen. + +Als erstes wird eine Umgebung benötigt, die diese neue Gleitumgebung +bereitstellt. Das geht ganz einfach mit: +% Umbruchkorrektur: listings korrigiert! +\begin{lstcode}[belowskip=\dp\strutbox] + \newenvironment{remarkbox}{% + \@float{remarkbox}% + }{% + \end@float + } +\end{lstcode} +Die neue Umgebung heißt also \Environment{remarkbox}. + +Jede Gleitumgebung hat eine Standardplatzierung. Diese setzt sich aus +bekannten Platzierungsoptionen zusammen: +% Umbruchkorrektur: listings korrigiert! +\begin{lstcode}[belowskip=\dp\strutbox] + \newcommand*{\fps@remarkbox}{tbp} +\end{lstcode} +Die neue Gleitumgebung soll also in der Voreinstellung nur oben, unten oder +auf einer eigenen Seite platziert werden dürfen. + +Gleitumgebungen haben außerdem einen nummerischen Gleittyp. Umgebungen, bei +denen das gleiche Bit im Gleittyp gesetzt ist, dürfen sich nicht gegenseitig +überholen. Abbildungen und Tabellen haben normalerweise den Typ~1 und 2. Sie +dürfen sich also gegenseitig überholen. +% Umbruchkorrektur: listings korrigiert! +\begin{lstcode}[belowskip=\dp\strutbox] + \newcommand*{\ftype@remarkbox}{4} +\end{lstcode} +Die neue Umgebung hat den Typ~4, darf also Tabellen und Abbildungen überholen +und von diesen überholt werden. + +Gleitumgebungen haben außerdem eine Nummer. +% Umbruchkorrektur: listings korrigiert! +\begin{lstcode}[belowskip=\dp\strutbox] + \newcounter{remarkbox} + \newcommand*{\remarkboxformat}{% + Merksatz~\theremarkbox\csname autodot\endcsname} + \newcommand*{\fnum@remarkbox}{\remarkboxformat} +\end{lstcode} +Hier wird zunächst ein neuer Zähler definiert, der unabhängig von Kapiteln +oder sonstigen Gliederungszählern ist. Dabei definiert \LaTeX{} auch gleich +\Macro{theremarkbox} mit der Standardausgabe als arabische Zahl. Diese wird +dann in der Definition der formatierten Ausgabe verwendet. Die formatierte +Ausgabe wird wiederum als Gleitumgebungsnummer für die Verwendung in +\Macro{caption} definiert. + +Gleitumgebungen haben Verzeichnisse und diese haben eine Datei mit dem Namen +\Macro{jobname} und einer Dateierweiterung. +% Umbruchkorrektur: listings korrigiert! +\begin{lstcode}[belowskip=\dp\strutbox] + \newcommand*{\ext@remarkbox}{lor} +\end{lstcode} +Als Dateierweiterung verwenden wir also »\File{lor}«. + +Die Umgebung selbst steht damit. Es fehlt allerdings das Verzeichnis. Damit +wir dabei möglichst wenig selbst machen müssen, verwenden wir das Paket +\Package{tocbasic}. Dieses wird in Dokumenten mit +% Umbruchkorrektur: listings korrigiert! +\begin{lstcode}[belowskip=\dp\strutbox] + \usepackage{tocbasic} +\end{lstcode} +geladen. Ein Klassen- oder Paketautor würde hingegen +% Umbruchkorrektur: listings korrigiert! +\begin{lstcode}[belowskip=\dp\strutbox] + \RequirePackage{tocbasic} +\end{lstcode} +verwenden. + +Nun machen wir die neue Dateierweiterung dem Paket \Package{tocbasic} +bekannt. +% Umbruchkorrektur: listings korrigiert! +\begin{lstcode}[belowskip=\dp\strutbox] + \addtotoclist[float]{lor} +\end{lstcode} +Dabei verwenden wir als Besitzer \PValue{float}, damit sich alle +anschließend aufgerufenen Optionen von \KOMAScript, die sich auf Verzeichnisse +von Gleitumgebungen beziehen, auch auf das neue Verzeichnis beziehen. + +Jetzt definieren wir noch einen Titel für dieses Verzeichnis: +% Umbruchkorrektur: listings korrigiert! +\begin{lstcode}[belowskip=\dp\strutbox] + \newcommand*{\listoflorname}{Verzeichnis der Merksätze} +\end{lstcode} +Normalerweise würde man in einem Paket übrigens zunächst einen englischen +Titel definieren und dann beispielsweise mit Hilfe des Pakets +\Package{scrbase} Titel für andere Sprachen. + +Jetzt müssen wir nur noch definieren, wie ein einzelner Eintrag in dem +Verzeichnis aussehen soll: +% Umbruchkorrektur: listings korrigiert! +\begin{lstcode}[belowskip=\dp\strutbox] + \newcommand*{\l@remarkbox}{\l@figure} +\end{lstcode} +Weil das die einfachste Lösung ist, wurde hier festgelegt, dass Einträge in +das Verzeichnis der Merksätze genau wie Einträge in das Abbildungsverzeichnis +aussehen sollen. Man hätte auch eine explizite Festlegung wie +% Umbruchkorrektur: listings korrigiert! +\begin{lstcode}[belowskip=\dp\strutbox] + \newcommand*{\l@remarkbox}{\@dottedtocline{1}{1em}{1.5em}} +\end{lstcode} +verwenden können. + +Außerdem wollen Sie, das Kapiteleinträge sich auf das Verzeichnis auswirken. +% Umbruchkorrektur: listings korrigiert! +\begin{lstcode}[belowskip=\dp\strutbox] + \setuptoc{lor}{chapteratlist} +\end{lstcode} +Das Setzen dieser Eigenschaft ermöglicht dies bei Verwendung einer +\KOMAScript-Klasse und jeder anderen Klasse, die diese Eigenschaft +unterstützt. Leider gehören die Standardklassen nicht dazu. + +Das genügt bereits. Der Anwender kann nun bereits wahlweise mit Hilfe der +Optionen einer \KOMAScript-Klasse oder \Macro{setuptoc} verschiedene Formen +der Überschrift (ohne Inhaltsverzeichniseintrag, mit +Inhaltsverzeichniseintrag, mit Nummerierung) wählen und das Verzeichnis mit +\Macro{listoftoc}\PParameter{lor} ausgeben. Mit einem schlichten +% Umbruchkorrektur: listings korrigiert! +\begin{lstcode}[belowskip=\dp\strutbox] + \newcommand*{\listofremarkboxes}{\listoftoc{lor}} +\end{lstcode} +kann man die Anwendung noch etwas vereinfachen. + +Wie Sie gesehen haben, beziehen sich gerade einmal fünf einzeilige +Anweisungen, von denen nur drei bis vier wirklich notwendig sind, auf das +Verzeichnis selbst. Trotzdem bietet dieses Verzeichnis bereits die +Möglichkeit, es zu nummerieren oder auch nicht nummeriert in das +Inhaltsverzeichnis aufzunehmen. Es kann sogar per Eigenschaft bereits eine +tiefere Gliederungsebene gewählt werden. Kolumnentitel werden für \KOMAScript, +die Standardklassen und alle Klassen, die \Package{tocbasic} explizit +unterstützen angepasst gesetzt. Unterstützende Klassen beachten das neue +Verzeichnis sogar beim Wechsel zu einem neuen Kapitel. Sprachumschaltungen +durch Babel werden in dem Verzeichnis ebenfalls berücksichtigt. + +Natürlich kann ein Paketautor weiteres hinzufügen. So könnte er explizit +Optionen anbieten, um die Verwendung von \Macro{setuptoc} vor dem Anwender zu +verbergen. Andererseits kann er auch auf diese Anleitung zu \Package{tocbasic} +verweisen, wenn es darum geht, die entsprechenden Möglichkeiten zu +erklären. Vorteil ist dann, dass der Anwender automatisch von etwaigen +zukünftigen Erweiterungen von \Package{tocbasic} profitiert. Soll der Anwender +aber nicht mit der Tatsache belastet werden, dass für die Merksätze die +Dateierweiterung \File{lor} verwendet wird, so genügt +% Umbruchkorrektur: listings korrigiert! +\begin{lstcode}[belowskip=\dp\strutbox] + \newcommand*{\setupremarkboxes}{\setuptoc{lor}} +\end{lstcode} +um eine als Argument an \Macro{setupremarkboxes} übergebene Liste von +Eigenschaften direkt als Liste von Eigenschaften für \File{lor} zu setzen. +% +\EndIndex{Package}{tocbasic}% + + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% coding: iso-latin-1 +%%% TeX-master: "guide.tex" +%%% End: + |