Da wurde mal wieder eine interessante Frage an mich herangetragen, bei der sich der Fragesteller nicht traute, sie hier selbst öffentlich zu stellen. Es geht darum, dass ein Anwender die Kapiteleinträge auch in den Gleitumgebungsverzeichnissen – namentlich dem Abbildungsverzeichnis – haben will. Allerdings will er nur die Kapiteleinträge der Kapitel haben, die auch eine entsprechende Gleitumgebung – namentlich eine Abbildung – haben. Die Frage dabei ist, ob man diese Anforderung manuell oder sogar automatisch umsetzen kann.
chapteratlists=entry manuell nur für Kapitel mit Einträgen
Manuell gibt es eine recht einfache Lösung. Dazu setzt man ohne
chapteratlists=entry
nach der\chapter-
Anweisung betroffener Kapitel einfach einUnschön ist dabei, dass man den Text für den Eintrag selbst wiederholen muss. Daher könnte man auf die Idee kommen, die entsprechende Überschrift als
zu setzen. Das funktioniert, solange man nur ein Gleitumgebungsverzeichnis hat. Sobald man aber beispielsweise sowohl ein Abbildungs- als auch ein Tabellenverzeichnis hat, geht es nicht mehr, weil die Option sozusagen eine Alles-oder-Nichts-Option ist, sich also immer auf alle Verzeichnisse bezieht.
Da das ganze jedoch über TOC-Eigenschaften (siehe tocbasic-Kapitel in der Anleitung oder im Buch) gelöst ist, kann man tatsächlich die entsprechende Eigenschaft lokal setzen:
Wie man sieht, muss man dabei auch Option
listof=chapterentry
verwenden, danach jedoch erst einmal für alle Endungen die TOC-Eigenschaftchapteratlist
wieder wegnehmen. Man setzt sie dann nur individuell bei den Kapiteln, bei denen man sie haben will.Aber natürlich ist das ganze anfällig für Fehler, wenn man in einem Kapitel Gleitumgebungen hinzufügt oder weg nimmt.
chapteratlists=entry automatisch nur für Kapitel mit Einträgen
Da die manuelle Lösung fehleranfällig ist, stellt sich die Frage, wie man das ganze automatisch machen könnte. Dazu müsste man zunächst einmal bei jedem Kapitel wissen, ob es eine entsprechende nummerierte Gleitumgebung hat. Ich klinke mich dazu in die Anweisung
\addcontentsline
ein. Wird darüber ein Eintrag in das entsprechende Gleitumgebungsverzeichnis geschrieben, ist klar, dass auch der Kapiteleintrag geschrieben werden muss. Dieses Wissen schreibe ich einfach in der Form\chapterhas{
Kapitelnummer}{
Dateiendung}
in die aux-Datei:Jetzt müssen die
chapterhas
-Anweisungen natürlich auch noch beim Lesen der aux-Datei ausgewertet werden. Ich definiere in diesem Fall einfach eine Art Markeranweisung\chapterhas@
Kapitelnummer@
Dateiendung:Später kann dann geprüft werden, ob die entsprechende Anweisung definiert ist.
\global
ist hier notwendig, weil alle Definitionen aus der aux-Datei sonst lokal zum Einlesen der aux-Datei sind.Jetzt muss noch die Erzeugung des Kapiteleintrags in das jeweilige Gleitumgebungsverzeichnis geregelt werden. Das passiert bei KOMA-Script über die Anweisung
\addchaptertocentry
. In die Originaldefinitionmuss nun noch ein Test auf die Markeranweisung eingefügt werden:
Wie man sieht, ist die Änderung nicht sehr groß (man könnte sie übrigens auch mit xpatch hineinpatchen).
Hier noch ein Gesamtbeispiel:
Nach dem zweiten LaTeX-Lauf ergibt das Abbildungs- und Tabellenverzeichnis noch ohne Kapiteleinträge, nach dem dritten Lauf werden auch die Kapiteleinträge angezeigt.
hyperref
Nur der Vollständigkeit halbe und weil ich grad ne ganze Weile suchen musste, um rauszufinden, warum deine Lösung in meinem Dokument nicht geht: Wenn das Paket hyperref benutzt wird, müssen die von dir gezeigten Anpassungen nach dem Laden dieses Paketes gemacht werden.
Viele Grüße
Tobi
Tobi W_
Grafikdesign und TeX-Beratung
tobiw.de
mail@tobiw.de
Mein Blog: TeX-Beispiel des Monats
Nicht alle
Aber natürlich die Umdefinierung/Erweiterung von
\addcontentsline
. Da hyperref nicht auf die vorhandene Anweisung aufbaut (und leider nicht einmal testet, ob diese den Erwartungen entspricht und ggf. eine Warnung ausgibt), sondern\addcontentsline
einfach hart neu definiert.Ungenau …
So genau hatte ich nicht getestet, ich hab einfach immer den ganzen Code-Block verschoben …
Und noch eine Anmerkung: Deine Lösung funktioniert nur mit nummerierten Kapiteln, aber nicht, wenn man
\addchap
benutzt. Ich habe sie deswegen wie folgt angepasst:Ist das sinnvoll? Oder habe ich was vergessen, was später vielleicht Probleme machen könnte?
Tobi W_
Grafikdesign und TeX-Beratung
tobiw.de
mail@tobiw.de
Mein Blog: TeX-Beispiel des Monats
Kann man so machen
Ich selbst würde den zusätzlichen Zähler allerdings schlicht in
\addchaptertocentry
hochzählen.Dass meine ursprüngliche Lösung ein Problem mit nicht nummerierten Kapiteln hat, liegt daran, dass ich nummerierte Elemente in nicht nummerierten Kapiteln allgemein für problematisch halte (jedenfalls, solange deren Nummer von der Kapitelnummer abhängt). Deshalb vergesse ich die gerne.
Danke für Deinen Erweiterungsvorschlag. Es gibt sicher immer mal wieder jemanden, der den brauchen kann.
Floats in nichtnummerierten Abschnitten …
… kommen auch nicht vor. (Finde ich auch unsinnig) – aber die unnumerierten Überschriften landen/landeten trotzdem mit im Abbildungsverzeichnis. Man könnte vielleicht alternativ auf deiner Lösung aufsatteln und bei den nummerierten Abschnitten verbinden, das diese überhaupt einen Eintrag erzeugen. Je nachdem, was weniger aufwändig ist.
Der Nachteil meiner Lösung ist übrigens, dass diese nur funktioniert, wenn alle Kapitel eingebunden werden. E geht nicht, wenn
\includeonly
benutzt wird, aber das kommt ja für den finalen Satz meistens auch nicht vor und während man am Dokument arbeitet muss das Verzeichnis ja nicht unbedingt stimmen.Insgesamt wäre es vielleicht ein feines Feature für eine zukünftige Version von KOMA-Script :-)
Tobi W_
Grafikdesign und TeX-Beratung
tobiw.de
mail@tobiw.de
Mein Blog: TeX-Beispiel des Monats