Sie sind hier

Anhangsverzeichnis?

Hallo Welt;

ich stecke gerade in meiner Diplomarbeit und lerne mit wachsender Begeisterung die Features von Komascript zu schätzen; nichtsdestotrotz gibt es eine Funktionalität, deren Realisierbarkeit mir noch nicht so recht klar ist:

Unsere Form-Vorgaben erfordern, daß die Anhänge im "Inhaltsverzeichnis" nur als "Anhang" referenziert werden und der Teil "Anhang" mit einem separaten Verzeichnis aller existenten Anhänge beginnt.

Kann man sowas realisieren, ohne dafür allzu große Verrenkungen machen zu müssen? Hat jemand derartiges schon einmal versucht / gebraucht?

Danke schon im Voraus und bis dann,
Kristian

Zum einen muss man irgendwie das Inhaltsverzeichnis zweimal einlesen. Das funktioniert mit \tableofcontents normalerweise nicht, da innerhalb von \tableofcontents nach dem Lesen der toc-Datei diese neu zum Schreiben angelegt wird. LaTeX verfügt aber über den internen Schalter \if@filesw, der angibt, ob Hilfsdateien neu angelegt werden dürfen oder nicht. Man kann also eine neue Anweisung definieren, die diesen Schalter innerhalb einer Gruppe zuerst so einstellt, dass Hilfsdateien nicht neu angelegt werden und dann \tableofcontents ausgeführt wird.

Mit dem zweimaligen Einlesen ist es aber nicht getan. Es muss auch dafür gesorgt werden, dass beim ersten Einlesen nur die Einträge bis zum Anhang ausgegeben werden und beim zweiten Einlesen die Einträge ab dem Anhang. Bei LaTeX regelt der Zähler tocdepth bis zu welcher Gliederungsebene Einträge im Verzeichnis ausgegeben werden. Man müsste also im Hauptverzeichnis ab dem Anhang tocdepth auf einen so kleinen Wert setzen, dass gar nichts mehr ausgegeben wird. Beim Anhangsverzeichnis müsste man umgekehrt erst tocdepth auf den kleinen Wert setzen und dann aber dem Anhang wieder auf den normalen Wert. Das erreicht man am besten, indem man in die toc-Datei eine Anweisung schreibt, die man je nach Verzeichnis umdefinieren kann.

Insgesamt könnte das dann wie folgt aussehen:

\documentclass{scrbook}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
 
\makeatletter% --> De-TeX-FAQ
\newcommand*{\maintoc}{% Hauptinhaltsverzeichnis
  \begingroup
    \@fileswfalse% kein neues Verzeichnis öffnen
    \renewcommand*{\appendixattoc}{% Trennanweisung im Inhaltsverzeichnis
      \value{tocdepth}=-10000 % lokal tocdepth auf sehr kleinen Wert setzen
    }%
    \tableofcontents% Verzeichnis ausgeben
  \endgroup
}
\newcommand*{\appendixtoc}{% Anhangsinhaltsverzeichnis
  \begingroup
    \edef\@alltocdepth{\the\value{tocdepth}}% tocdepth merken
    \setcounter{tocdepth}{-10000}% Keine Verzeichniseinträge
    \renewcommand*{\contentsname}{% Verzeichnisname ändern
      Verzeichnis der Anh\"ange}%
    \renewcommand*{\appendixattoc}{% Trennanweisung im Inhaltsverzeichnis
      \setcounter{tocdepth}{\@alltocdepth}% tocdepth wiederherstellen
    }%
    \tableofcontents% Verzeichnis ausgeben
    \setcounter{tocdepth}{\@alltocdepth}% tocdepth wiederherstellen
  \endgroup
}
\newcommand*{\appendixattoc}{% Trennanweisung im Inhaltsverzeichnis
}
\g@addto@macro\appendix{% \appendix erweitern
  \if@openright\cleardoublepage\else\clearpage\fi% Neue Seite
  \addcontentsline{toc}{chapter}{\appendixname}% Eintrag ins Hauptverzeichnis
  \addtocontents{toc}{\protect\appendixattoc}% Trennanweisung in die toc-Datei
}
\makeatother
 
\begin{document}
\maintoc
\blinddocument
\blinddocument
\appendix
\appendixtoc
\blinddocument
\blinddocument
 
\end{document}

Es ist zu beachten, dass \maintoc nur funktioniert, wenn \appendixtoc ebenfalls vorhanden ist. Anderenfalls wird das Inhaltsverzeichnis nie aktualisiert. Sobald also \appendixtoc entfernt wird, sollte man statt \maintoc auch wieder \tableofcontents direkt verwenden.

Hmm... das funktioniert ja beeindruckend. Ich danke herzlich für die ausführliche Hilfe! :)

Kristian

Das Anhangsverzeichnis klappt in der Tat super, auch von mir Danke.

Allerdings ist bei Benutzung des hyperef-Paketes der Link im Inhaltsverzeichnis auf das Anhangsverzeichnis fehlerhaft (zeigt auf das Kapitel vor dem Anhang).

Als Lösung habe ich gefunden, den Befehl
\phantomsection
unmittelbar vor der Zeile
\addcontentsline{toc}{chapter}{\appendixname}% Eintrag ins Hauptverzeichnis
einzufügen.

Meine Frage nun: Ist es damit getan oder muss ich mit Problemen / weiteren Inkompabilitäten rechnen?

Danke für eine kurze Antwort.

Da es immer wieder Nachfragen zu dem Anhangsverzeichnis gab, habe ich mich heute hingesetzt und eine Version gebastelt, die flexibler ist. Diese Version basiert auf tocstyle. Theoretisch könnte man die Verzeichnisverdopplung auch mit dem \@fileswfalse-Trick aus dem ursprünglichen Code erreichen. Das eigentlich neue an der neuen Version ist, dass man nach dem Anhang auch wieder Kapitel wie das Literaturverzeichnis oder den Index dem Hauptverzeichnis zuordnen kann, statt sie dem Anhangsverzeichnis zuzuordnen. Und hier kommt das Minimalbeispiel mit dem Code:

% Dies ist Datei `appendixtocexample.tex'
% Copyright (c) Markus Kohm, 2010-2013
% Diese Datei steht unter LPPL 1.3c.
% Wird diese Datei abgeändert, so handelt es sich um ein abgeleitetes Werk
% im Sinne der LPPL. Dies bedeutet u. a. dass in diesem Fall darauf
% hinzuweisen ist, dass der hier im Copyright-Vermerk angegebene Autor,
% Markus Kohm, für den Inhalt nicht verantwortlich und für keinerlei
% Support oder Auskünfte heranzuziehen ist!
%
% Originalquelle dieser Datei: <http://www.komascript.de/comment/3447#comment-3447>
%
% Changelog:
% 2013-06-15 (mjk): Funktioniert mit allen Standard- oder KOMA-Script-Klassen.
% 2014-01-22 (mjk): Unterstützung für diverse Dialekte von Englisch und Deutsch.
%
\documentclass{scrbook}% bliebige Standard- oder KOMA-Script-Klasse
\usepackage[ngerman]{babel}
\usepackage{blindtext}
 
\usepackage{filecontents}
\begin{filecontents}{appendixtoc.sty}
%
% appendixtoc.sty
% Copyright (c) Markus Kohm, 2013-2014
% See `appendixtocexample.tex' for license informations. Distribution without
% `appendixtocexample.tex' is forbidden!
% See <http://www.komascript.de/comment/3447#comment-3447> for more information.
\ProvidesPackage{appendixtoc}[2014/01/22 unsupported LaTeX2e package]
\RequirePackage{scrbase}[2013/12/19]% frühere Versionen unterstützen keine Sprachliste bei \providecaptionname
\RequirePackage{tocstyle}
\usetocstyle{KOMAlike}
% Die folgende Umgebung wird verwendet, um innerhalb der toc-Datei einzelne
% Bereiche ein- und ausschalten zu können. In die toc-Datei wird die Umgebung
% dabei jeweils als \begin{tocconditional}{BEREICH}...\end{tocconditional}
% eingefügt.
\newenvironment*{tocconditional}[1]{%
  \expandafter\ifx\csname if@toccond@#1\expandafter\endcsname
                  \csname iftrue\endcsname
  \else
    \value{tocdepth}=-10000\relax
  \fi
  \typeout{tocdepth in `#1': \the\c@tocdepth}%
}{%
}
 
% Gleich nach dem Öffnen der toc-Datei beginnen wir den Haupt-Bereich "main":
\AtBeginDocument{%
  \addtocontents{toc}{\string\begin{tocconditional}{main}}
}
% Und der letzte Bereich endet am Ende der toc-Datei.
\BeforeClosingMainAux{%
  \addtocontents{toc}{\string\end{tocconditional}}%
}
 
% Hier können nun neue Bereiche definiert (wie man das
% macht zeigen wir gleich im Anschluss) ...
\newcommand*{\newtocconditional}[2][false]{%
  \expandafter\newif\csname if@toccond@#2\endcsname
  \csname @toccond@#2#1\endcsname
}
% ... und ein- oder ausgeschaltet werden.
% (Beispiele für die Verwendung von \settocconditional sind
% weiter unten bei der Definition von \appendixtableofcontents
% zu finden.)
\newcommand*{\settocconditional}[2]{%
  \csname @toccond@#1#2\endcsname
}
 
% Neben dem (bereits aktivierten) Hauptbereich ...
\newtocconditional[true]{main}
% ... definieren wir noch einen (noch nicht aktivierten)
% Bereich für den Anhang.
\newtocconditional{appendix}
 
% Mit dem Anhang geben wir einerseits das Anhangsverzeichnis aus,
% andererseits beenden wir den aktuellen Bereich in der toc-Datei und beginnen
% den neuen Bereich "appendix". Damit im Haupt-Inhaltsverzeichnis ein Eintrag
% für das Anhangsverzeichnis erscheint, verwenden wir \addchap und zwar noch
% bevor der letzte Bereich geschlossen wird. Wenn wir es ganz sicher machen
% wollten, müssten wir die auskommentierten Zeilen noch aktivieren. So
% verlassen wir uns einfach darauf, dass vor dem appendix-Bereich der
% main-Bereich lag.
\g@addto@macro\appendix{%
%  \addtocontents{toc}{\string\end{tocconditional}^^J
%    \string\begin{tocconditional}{main}}%
  \begingroup
    \@ifundefined{tocbasic@listhead}{% Falls \tocbasic@listhead (wird von
                               % KOMA-Script-Klassen verwendet) nicht
                               % definiert ist
      \@ifundefined{chapter}{% und falls \chapter nicht definiert ist,
        \section*{\listofappendixname}% \section* verwenden
      }{% aber falls \chapter definiert ist,
        \chapter*{\listofappendixname}% \chapter* verwenden
      }%
      % und noch die Kolumnentitel passend setzen.
      \@mkboth{\csname MakeMarkcase\endcsname{\listofappendixname}}%
              {\csname MakeMarkcase\endcsname{\listofappendixname}}%
    }{% Falls \toc@heading definiert ist,
      \def\@currext{appendix}% initialisieren
      \tocbasic@listhead{\listofappendixname}% und verwenden
    }%
  \endgroup
  \addtocontents{toc}{\string\end{tocconditional}^^J
    \string\begin{tocconditional}{appendix}}%
  \appendixtableofcontents
}
 
% Jetzt definieren wir das Anhangsverzeichnis selbst als Alias für die
% toc-Datei. Dabei wird aber der Hauptbereich "main" deaktiviert und der
% Anhangsbereich "appendix" aktiviert.
\newcommand*{\appendixtableofcontents}{%
  \showtoc[{ %
    \aliastoc{\tocstyleTOC}{toc}%
    \settocconditional{main}{false}%
    \settocconditional{appendix}{true}%
  }]{toc}%
}
 
% Auch wenn man einen Anhang normalerweise nicht beenden kann, so ist es
% ggf. erwünscht, dass Literaturverzeichnis, Index etc. zwar nach den Kapiteln
% des Anhangs kommen, aber dem Hauptverzeichnis zugeordnet werden sollen. Also
% benötigen wir eine Anweisung, um in der toc-Datei den aktuellen Bereich zu
% beenden und wieder einen Hauptbereich einzuschalten:
\newcommand*{\postappendix}{%
  \addtocontents{toc}{\string\end{tocconditional}^^J%
      \string\begin{tocconditional}{main}}%
}
 
% Den Namen definieren:
\newcommand*{\listofappendixname}{Table of appendices}
\AtBeginDocument{%
  \providecaptionname{american,australien,british,canadian,english,UKenglish,USenglish}\listofappendixname{Table of appendices}%
  \providecaptionname{german,ngerman,austrian,naustrian,swissgerman,nswissgerman}\listofappendixname{Anhangsverzeichnis}%
}%
\end{filecontents}
 
\usepackage{appendixtoc}
% Wir wollen das Anhangsverzeichnis im Inhaltsverzeichnis, also sorgen wir
% dafür, dass das Paket tocbasic geladen ist (auch, wenn keine
% KOMA-Script-Klasse verwendet wird). Das muss unbedingt _vor_ dem Laden von
% appendixtoc passieren!
\usepackage{tocbasic}
\usepackage{appendixtoc}
\setuptoc{appendix}{totoc}% dank tocbasic geht das jetzt so einfach
 
\begin{document}
\tableofcontents
\blinddocument
 
\appendix
\blinddocument
 
\postappendix
\makeatletter
\@ifundefined{addchap}{%
  \@ifundefined{addsec}{%
    \@ifundefined{chapter}{%
      \section*{Testabschnitt halbwegs nach dem Anhang}%
      \addcontentsline{toc}{section}{Testabschnitt halbwegs nach dem Anhang}%
    }{%
      \chapter*{Testkapitel halbwegs nach dem Anhang}
      \addcontentsline{toc}{chapter}{Testkapitel halbwegs nach dem Anhang}%
    }%
  }{%
    \addsec{Testabschnitt halbwegs nach dem Anhang}%
  }%
}{%
  \addchap{Testkapitel halbwegs nach dem Anhang}%
}
\makeatother
\blindtext
 
\end{document}

Ich denke, die Kommentare genügen für's erste zur Dokumentation. Achja: Die \typeout-Anweisungen dienen derzeit noch dem Debugging. Man kann die natürlich auch weglassen. Wenn etwas nicht funktioniert, können sie aber nützliche Anhaltspunkte liefern.

Edit 2013-06-15: Beispiel weiter verallgemeinert (siehe Changelog).
Edit 2014-01-22: Unterstützung für diverse neue Dialekte von Englisch und Deutsch.

Hallo Markus,

das Beispiel ist super, vielen Dank für diese Lösung!
Ist es noch möglich, die Position des Anhangsverzeichnisses zu ändern? Ich bräuchte es bereits vor dem eigentlichen Text - der Anhang an sich muss allerdings weiterhin nach dem Text kommen!

Viele Grüße
Vincent

Du musst dazu nur \addchap{Anhangsvereichnis} und \appendixtableofcontents aus der Erweiterung von \appendix entfernen und die beiden Anweisungen an der Stelle einbauen, an der das Verzeichnis stehen soll. Statt \addchap kannst Du natürlich auch \chapter* ggf. gefolgt von \markboth{Anhangsverzeichnis}{Anhangsverzeichnis} o. ä. verwenden.

Natürlich kann man die jeweils gewählte Erzeugung der Überschrift für das Verzeichnis auch noch in die Definition von \appendixtableofcontents mit einbauen. Dann kann man gewünschte Änderungen wieder einfach in der Definition in der Präambel vornehmen.

Achso: Vielleicht wäre der Makroname \tableofappendixcontents sinnvoller. Ich muss zugeben, dass ich mir bei der raschen Implementierung über die Namen von Makros oft wenig Gedanken mache …

Wenn man weiß, wo man ansetzen muss ist das eine Sache von 10 Sekunden....aber wehe, wenn nicht... :-)

Vielen Dank!!!!

Tja, »Gewusst wie« ist inzwischen das Hauptkapital, über das wir verfügen können. Vielleicht ist es ja dumm, wenn ich versuche, anderen dieses Kapital ebenfalls zu bilden. Trotzdem ist mein Hauptzweck hier Fortgeschrittenen- und Expertenwissen bei anderen zu bilden, nicht es bei mir eifersüchtig zu bewahren.

Hallo Expertengemeinde!

Ich bin zurück mit einem neuen (alten) Problem:
Heute ist mir aufgefallen, dass von Anfang an die Seitenzahlen im Anhangsverzeichnis falsch waren. Bei jeder Abbildung im Anhang steht die Seitenzahl der ersten Anhangsseite.
Beispiel: Der Text endet auf Seite 80. Auf Seite 81 steht: "A. ANHANG"
Auf S. 82 ist die erste Anhangsabbildung usw...
Im Anhangsverzeichnis steht allerdings:
Anhang A.1......81
Anhang A.2......81
Anhang A.3......81

Ich hoffe, das Problem wird dadurch klar.

Leider habe ich es bisher trotz 3-stündigen Herumprobierens nicht geschafft, ein MB zu schreiben, in dem der gleiche Fehler auftritt.
Deshalb versuche ich es weiterhin, wollte aber schon einmal fragen, ob jmd ein ähnliches Problem und dessen Lösung kennt oder eine Idee hat?

Viele Grüße
Vincent

So, ich hoffe, ich habe es jetzt geschafft, ein Beispiel zu erzeugen, das den Sachverhalt klar macht...

\documentclass[12pt,a4paper,bibliography=totoc]{scrreprt}
 
\usepackage{lmodern}
\usepackage[latin1,ansinew]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{tocstyle}
\usetocstyle{KOMAlike}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{hyperref}
 
\makeatletter
% Die folgende Anweisung wird vermutlich irgendwann in scrlfile.sty eingebaut.
% Bis dahin ist es notwendig, sie selbst zu definieren, damit man innerhalb
% von \BeforeClosingMainAux \addtocontents verwenden kann:
\providecommand{\protected@immediate@write}[3]{%
  \begingroup
    \let\thepage\relax
    #2%
    \let\protect\@unexpandable@protect
    \edef\reserved@a{\immediate\write#1{#3}}%
    \reserved@a
  \endgroup
  \if@nobreak\ifvmode\nobreak\fi\fi
}
 
% Die folgende Umgebung wird verwendet, um innerhalb der toc-Datei einzelne
% Bereiche ein- und ausschalten zu können. In die toc-Datei wird die Umgebung
% dabei jeweils als \begin{tocconditional}{BEREICH}...\end{tocconditional}
% eingefügt.
\newenvironment*{tocconditional}[1]{%
  \expandafter\ifx\csname if@toccond@#1\expandafter\endcsname
                  \csname iftrue\endcsname
  \else
    \value{tocdepth}=-10000\relax
  \fi
  \typeout{tocdepth in `#1': \the\c@tocdepth}%
}{%
}
 
% Gleich nach dem Öffnen der toc-Datei beginnen wir den Haupt-Bereich "main":
\AtBeginDocument{%
  \addtocontents{toc}{\string\begin{tocconditional}{main}}
}
% Und der letzte Bereich endet am Ende der toc-Datei.
\BeforeClosingMainAux{%
  \begingroup
    \let\protected@write\protected@immediate@write
    \addtocontents{toc}{\string\end{tocconditional}}%
  \endgroup
}
 
% Hier können nunr neue Bereiche definiert ...
\newcommand*{\newtocconditional}[2][false]{%
  \expandafter\newif\csname if@toccond@#2\endcsname
  \csname @toccond@#2#1\endcsname
}
% Und ein- oder ausgeschaltet werden:
\newcommand*{\settocconditional}[2]{%
  \csname @toccond@#1#2\endcsname
}
 
% Neben dem Hauptbereich ...
\newtocconditional[true]{main}
% definieren wir noch einen Bereich für den Anhang.
\newtocconditional{appendix}
 
% Mit dem Anhang geben wir einerseits das Anhangsverzeichnis aus,
% andererseits beenden wir den aktuellen Bereich in der toc-Datei und beginnen
% den neuen Bereich "appendix". Damit im Haupt-Inhaltsverzeichnis ein Eintrag
% für das Anhangsverzeichnis erscheint, verwenden wir \addchap und zwar noch
% bevor der letzte Bereich geschlossen wird. Wenn wir es ganz sicher machen
% wollten, müssten wir die auskommentierten Zeilen noch aktivieren. So
% verlassen wir uns einfach darauf, dass vor dem appendix-Bereich der
% main-Bereich lag.
\g@addto@macro\appendix{%
%  \addtocontents{toc}{\string\end{tocconditional}^^J
%    \string\begin{tocconditional}{main}}%
 
  \addtocontents{toc}{\string\end{tocconditional}^^J
    \string\begin{tocconditional}{appendix}}%
 
}
 
% Jetzt definieren wir das Anhangsverzeichnis selbst als Alias für die
% toc-Datei. Dabei wird aber der Hauptbereich "main" deaktiviert und der
% Anhangsbereich "appendix" aktiviert.
\newcommand*{\appendixtableofcontents}{%
  \showtoc[{ %
    \aliastoc{\tocstyleTOC}{toc}%
    \settocconditional{main}{false}%
    \settocconditional{appendix}{true}%
  }]{toc}%
}
 
% Auch wenn man einen Anhang normalerweise nicht beenden kann, so ist es
% ggf. erwünscht, dass Literaturverzeichnis, Index etc. zwar nach den Kapiteln
% des Anhangs kommen, aber dem Hauptverzeichnis zugeordnet werden sollen. Also
% benötigen wir eine Anweisung, um in der toc-Datei den aktuellen Bereich zu
% beenden und wieder einen Hauptbereich einzuschalten:
\newcommand*{\postappendix}{%
  \addtocontents{toc}{\string\end{tocconditional}^^J%
      \string\begin{tocconditional}{main}}%
  \clearpage
}
 
\makeatother
 
\begin{document}
\thispagestyle{empty}
 
 
\pagenumbering{roman} 
\setcounter{page}{2}
 
\tableofcontents
 
\addchap{Anhangverzeichnis}
\appendixtableofcontents
 
\chapter{Einleitung}
Das ist die Einleitung
 
\chapter{Grundlagen}
Das ist Kapitel 1
\section{Gliederungspunkt}
Mit Unterpunkt 1.1
 
\clearpage
\addcontentsline{toc}{chapter}{Anhang}
 
\appendix
 
 
\chapter{Anhang}
\captionsetup[figure]{list=no}
\captionsetup[table]{list=no}
 
\addcontentsline{toc}{section}{Abbildung \ref{Anhang1} \nameref{Anhang1}}
\begin{figure}
\centering
\rule{5cm}{5cm}
\caption{Anhang1}\label{Anhang1}
\end{figure} 
 
\addcontentsline{toc}{section}{Abbildung \ref{Anhang2} \nameref{Anhang2}}
\begin{figure}
\centering
\rule{5cm}{5cm}
\caption{Anhang2}\label{Anhang2}
\end{figure} 
 
 
\addcontentsline{toc}{section}{Abbildung \ref{Anhang3} \nameref{Anhang3}}
\begin{figure}
\centering
\rule{5cm}{5cm}
\caption{Anhang3}\label{Anhang3}
\end{figure} 
 
 
 
\end{document}

Und da eine \addcontentsline-Anweisung keinen Platz benötigt, passen alle drei noch auf die erste Seite. Wenn Du keine Gleitumgebung willst, solltest Du keine verwenden. Wenn Du wirklich Gleitumgebungen willst, dann müssen alle Anweisungen, die sich auf das Innere der Gleitumgebung beziehen auch innerhalb der Gleitumgebung stehen.

Das Beispiel kann ich problemlos übersetzen. Im Kontext meines eigenen Projekts gibt es allerdings eine Fehlermeldung, laut der \appendix nicht definiert ist. Womit könnte das zusammenhängen?

Du verwendest vermutlich eine Klasse, bei der \appendix nicht definiert ist, also insbesondere keine KOMA-Script-Klasse und keine Standard-Klasse. Bei denen ist \appendix nämlich definiert.

Hallo Markus,
dein Codeschnipsel für das Anhangverzeichnis funktioniert einfach wunderbar, danke dafür!

Nun taucht bei mir jedoch ein kleines Problem mit der Formatierung des Inhaltsverzeichnisses auf.
Ich verwende scrrprt und möchte im Inhaltsverzeichnis die horizontale Punkte-Linie auch auf chapter-Ebene aktivieren.

Das habe ich bislang so gemacht:

%Punkte im TOC auch auf chapter-Ebene
\renewcommand{\cftchapleader}{\cftdotfill{\cftchapdotsep}}% Punkte nicht fett
\renewcommand{\cftchapdotsep}{\cftdotsep}
\renewcommand*{\chapterformat}{%
	\chapappifchapterprefix{\ }\thechapter\autodot~~~~
}

Das Ergebnis war einwandfrei.

Nach dem Einfügen deines Codeschnipsels in die Präambel funktioniert es jedoch nicht mehr. Ungeachtet dessen, ob ich im Dokument den Befehl \appendix nutze oder nicht.
Dabei macht es auch keinen Unterschied, ob ich deinen Code vor oder nach den o.g. Zeilen einfüge.

Dein Code scheint die o.g. Aufrufe irgendwie zu blockieren oder selbst neu zu definieren.
Brauchst du ein Minimalbeispiel oder kannst du ad hoc sagen, ob da codemäßig etwas kollidiert?
Hast du eine Lösung parat?

Viele Grüße,
Michael

Aus Deinem Code-Schnippsel schließe ich, dass Du irgend ein Paket zur Konfiguration von Verzeichnissen verwendest. Da tocstyle selbst auch so ein Paket ist, gibt es dann also mehrere Pakete, die zumindest teilweise an den gleichen Stellen Änderungen vornehmen. Das kann nicht funktionieren.

Das sollte für Dich aber kein Problem sein, denn in der Anleitung zu tocstyle ist dokumentiert, wie man Pünktchen auf Kapitelebene bekommt.

Darüber hinaus ist mein Code im Gegensatz zu Deinem kein Schnippsel, sondern ein vollständiges Minimalbeispiel.

Hallo Markus,
ich habe bislang tocloft verwendet, die Kollisionen kann ich natürlich nachvollziehen. Daher habe ich beschlossen, auf dein tocstyle-Paket umzusteigen, jetzt habe ich allerdings noch 2 Fragen.

Ich würde gern den KOMAlike-Style verwenden, jedoch mit Punkten auf chapter-Ebene. Alternativ den allwithdot-Style, jedoch mit fettgedruckten Seitenzahlen. Letztendlich also eine Mischung aus diesen beiden.

Eine zweite Anpassung die ich gern machen würde bezieht sich auf listoffigures und listoftables.
Ich würde in den Verzeichnissen gern das entsprechende Präfix vor die Nummerierung setzen, also "Abb. 1.1: xyz" bzw. "Tab. 1.1: abc".

Es ist mir als LaTeX-Neuling leider auch nach längerem Studium der Doku nicht gelungen, die korrekten Befehle zu finden, kannst du helfen?

Beste Grüße,
Michael

Folgendes nach dem Laden von tocstyle in meinem Beispiel einfügen:

\newtocstyle[KOMAlike][leaders]{KOMAlikewithdot}{}% Neuen Stil abgeleitet von
                                % KOMAlike erstellen, wobei das Feature
                                % leaders nicht von KOMAlike mit übernommen
                                % wird.
                                % (tocstyle.pdf, 2009/11/09, Seite 9 sowie 
                                % Seite 29, Code-Zeile 772)
\usetocstyle{KOMAlikewithdot}
\settocfeature[lof]{entryhook}{Abb.\nobreakspace}% (tocstyle.pdf, 2009/11/09,
                                % Seite 8)
\settocfeature[lot]{entryhook}{Tab.\nobreakspace}% (tocstyle.pdf, 2009/11/09,
                                % Seite 8)

Dafür dann natürlich die andere \usetocstyle-Anweisung aus meinem Beispiel entfernen.

Hallo Markus,
VIELEN DANK, so funktioniert es super und das Paket tocloft wird vollkommen überflüssig. :)

Für ein optimales Ergebnis noch eine letzte Frage:
Ich möchte Abbildungs-, Tabellen- und Anhangsverzeichnis linksbündig ausrichten, ohne den standardmäßigen Einzug, der sich wahrscheinlich aus der Definition der section-Ebene im TOC ergibt?!

Das Kommando \noindent vor dem Setzen der Präfixe von Abbildungs- und Tabellenverzeichnis hat leider keinen Effekt an dieser Stelle.
Ein funktionierender Workaround wäre die Nutzung von \hspace{-0.72cm}. Das erscheint mir aber etwas zu sehr geschustert. Geht es vielleicht auch eleganter?
Beim Anhangverzeichnis bin ich vollkommen ratlos, an welcher Stelle ich ansetzen muss.

Hier mein angepasstes Minimalbeispiel:

\documentclass[parskip]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{caption}
 
\usepackage{tocstyle}
\newtocstyle[KOMAlike][leaders]{KOMAlikewithdot}{}% Neuen Stil abgeleitet von
                                % KOMAlike erstellen, wobei das Feature
                                % leaders nicht von KOMAlike mit übernommen
                                % wird.
                                % (tocstyle.pdf, 2009/11/09, Seite 9 sowie 
                                % Seite 29, Code-Zeile 772)
\usetocstyle{KOMAlikewithdot}
\settocfeature[lof]{entryhook}{\noindent Abb.\nobreakspace}% (tocstyle.pdf, 2009/11/09,
                                % Seite 8)
\settocfeature[lot]{entryhook}{\noindent Tab.\nobreakspace}% (tocstyle.pdf, 2009/11/09,
                                % Seite 8)
 
\makeatletter
% Die folgende Anweisung wird vermutlich irgendwann in scrlfile.sty eingebaut.
% Bis dahin ist es notwendig, sie selbst zu definieren, damit man innerhalb
% von \BeforeClosingMainAux \addtocontents verwenden kann:
\providecommand{\protected@immediate@write}[3]{%
  \begingroup
    \let\thepage\relax
    #2%
    \let\protect\@unexpandable@protect
    \edef\reserved@a{\immediate\write#1{#3}}%
    \reserved@a
  \endgroup
  \if@nobreak\ifvmode\nobreak\fi\fi
}
 
% Die folgende Umgebung wird verwendet, um innerhalb der toc-Datei einzelne
% Bereiche ein- und ausschalten zu können. In die toc-Datei wird die Umgebung
% dabei jeweils als \begin{tocconditional}{BEREICH}...\end{tocconditional}
% eingefügt.
\newenvironment*{tocconditional}[1]{%
  \expandafter\ifx\csname if@toccond@#1\expandafter\endcsname
                  \csname iftrue\endcsname
  \else
    \value{tocdepth}=-10000\relax
  \fi
  \typeout{tocdepth in `#1': \the\c@tocdepth}%
}{%
}
 
% Gleich nach dem Öffnen der toc-Datei beginnen wir den Haupt-Bereich "main":
\AtBeginDocument{%
  \addtocontents{toc}{\string\begin{tocconditional}{main}}
}
% Und der letzte Bereich endet am Ende der toc-Datei.
\BeforeClosingMainAux{%
  \begingroup
    \let\protected@write\protected@immediate@write
    \addtocontents{toc}{\string\end{tocconditional}}%
  \endgroup
}
 
% Hier können nunr neue Bereiche definiert ...
\newcommand*{\newtocconditional}[2][false]{%
  \expandafter\newif\csname if@toccond@#2\endcsname
  \csname @toccond@#2#1\endcsname
}
% Und ein- oder ausgeschaltet werden:
\newcommand*{\settocconditional}[2]{%
  \csname @toccond@#1#2\endcsname
}
 
% Neben dem Hauptbereich ...
\newtocconditional[true]{main}
% definieren wir noch einen Bereich für den Anhang.
\newtocconditional{appendix}
 
% Mit dem Anhang geben wir einerseits das Anhangsverzeichnis aus,
% andererseits beenden wir den aktuellen Bereich in der toc-Datei und beginnen
% den neuen Bereich "appendix". Damit im Haupt-Inhaltsverzeichnis ein Eintrag
% für das Anhangsverzeichnis erscheint, verwenden wir \addchap und zwar noch
% bevor der letzte Bereich geschlossen wird. Wenn wir es ganz sicher machen
% wollten, müssten wir die auskommentierten Zeilen noch aktivieren. So
% verlassen wir uns einfach darauf, dass vor dem appendix-Bereich der
% main-Bereich lag.
\g@addto@macro\appendix{%
%  \addtocontents{toc}{\string\end{tocconditional}^^J
%    \string\begin{tocconditional}{main}}%
  \addchap{Anhang}%
  \addtocontents{toc}{\string\end{tocconditional}^^J
    \string\begin{tocconditional}{appendix}}%
  \appendixtableofcontents
}
 
% Jetzt definieren wir das Anhangsverzeichnis selbst als Alias für die
% toc-Datei. Dabei wird aber der Hauptbereich "main" deaktiviert und der
% Anhangsbereich "appendix" aktiviert.
\newcommand*{\appendixtableofcontents}{%
  \showtoc[{ %
    \aliastoc{\tocstyleTOC}{toc}%
    \settocconditional{main}{false}%
    \settocconditional{appendix}{true}%
  }]{toc}%
}
 
% Auch wenn man einen Anhang normalerweise nicht beenden kann, so ist es
% ggf. erwünscht, dass Literaturverzeichnis, Index etc. zwar nach den Kapiteln
% des Anhangs kommen, aber dem Hauptverzeichnis zugeordnet werden sollen. Also
% benötigen wir eine Anweisung, um in der toc-Datei den aktuellen Bereich zu
% beenden und wieder einen Hauptbereich einzuschalten:
\newcommand*{\postappendix}{%
  \addtocontents{toc}{\string\end{tocconditional}^^J%
      \string\begin{tocconditional}{main}}%
  \clearpage
}
 
\makeatother
 
\begin{document}
\tableofcontents
\listoffigures
\listoftables
 
\blinddocument
\begin{minipage}{\textwidth}
	\centering
	\captionsetup{type=figure}
	Bild
	\caption{Ein Bild}
\end{minipage}
 
\blindtext
 
\begin{minipage}{\textwidth}
	\centering
	\captionsetup{type=table}
	Tabelle
	\caption{Eine Tabelle}
\end{minipage}
 
\appendix
\renewcommand{\thechapter}{\Alph{chapter}}
\setcounter{chapter}{1}
\newpage
\section{Anhang 1}
\blindtext
\newpage
\section{Anhang 2}
\blindtext
\postappendix
 
\end{document}

Füg mal

\selecttocstyleoption{tocflat}

nach \tableofcontents ein. Die Anweisung ist bisher nur im Implementierungsteil der tocstyle-Anleitung zu finden. Die Optionen, die man hier als Argument angeben kann, sind jedoch dieselben, die auch beim Laden angegeben werden können und die in Anhang A vorgeführt sind.

Funktioniert super.

Vielen, vielen Dank und beste Grüße!
Michael

Hallo Markus,

gibt es eine simple Möglichkeit, die Anhänge sowohl im Anhangs- als auch im regulären Inhaltsverzeichnis aufzuführen?

Viele Grüße,
Michael

Ich verstehe die Frage vermutlich nicht. Was hindert Dich daran mit \settocconditional vor \tableofcontents zusätzlich zum Abschnitt main auch noch den Abschnitt appendix zu aktivieren? Die (inzwischen mehrfach erweiterten) Kommentar zu meinem Beispielcode sollten diesbezüglich eigentlich genügend Erklärung bieten.

Danke Markus! Ganz naheliegend war es für mich als Einsteiger nicht, aber mit deinem Hinweis ist der Groschen gefallen. :)
So funktioniert's: \settocconditional{appendix}{true}\tableofcontents

Viele Grüße,
Michael

Hi,

vielen Dank für diese Lösung - funktioniert super für book/report-Klassen. Gibt es eine Möglichkeit dies auch unter den article-Klassen zum Laufen zu bekommen? Der Thread ist schon etwas älter, aber vllt hat jemand eine Lösung parat. Mit dem Code ergibt der Befehl \appendix¹ die Fehler:¹

*** Extra \else. \appendix (followed by: )
*** Extra \fi. \appendix (followed by: )
*** Undefined control sequence:  \appendix (followed by: )

Gruß,

milo

[Admin-Edit:]

  1. <code></code> Tags eingefügt (siehe Formatierungshinweise)

Wenn man das Originalbeispiel nimmt, scrbook durch scrartcl und \addchap durch \addsec ersetzt, läuft das bei mir ohne Fehler durch.

Vielen Dank für die Antwort erstmal. Ich benutze für book/report-Klassen deinen Beitrag vom Di, 2006-07-25 10:01. Der funktioniert mit dem Einsatz von phantomsection prima. Jedoch finde ich den Befehl addchap nur in deinem Beispiel vom Mi, 2010-08-25 17:05. Dieser erzeugt bei mir, so wie er gepostet ist folgende Fehler:¹

*** \begin{tocconditional} does not have matching end; at least one unbalanced begin-end
*** \end{tocconditional} found with no preceding \begin

die Fehler beziehen sich auf die folgenden Zeilen (90 bis 91):¹

  \addtocontents{toc}{\string\end{tocconditional}^^J
    \string\begin{tocconditional}{appendix}}%

Bekomme das nicht zum Laufen.

[Admin-Edit:]

  1. <code></code> Tags eingefügt (siehe Formatierungshinweise)

Sorry, aber hier geht es um KOMA-Script. Es gibt auch kaum einen vernünftigen Grund an Stelle einer KOMA-Script-Klasse eine Standard-Klasse zu verwenden.

Außerdem wäre es schön, wenn Du Dich an die Tipps zum Verfassen eines Beitrags halten würdest. Die sind eigentlich kaum zu übersehen …

Wobei ich Dein Problem mit article auch nicht nachvollziehen kann. Wenn ich das Uraltbeispiel nehme und darin scrbook durch article ersetze, muss ich natürlich auch "chapter" durch "section" ersetzen. Außerdem will man dann keinen Seitenumbruch am Anfang des Anhängs, also muss die erste Zeile bei der Erweiterung von \appendix raus. Kapitel gibt es ohnehin keine bei article, also auch nicht die Optionen openright und openany und logischer Weise auch nicht die entsprechende Verzweigung. Fehlermeldungen: Keine. Weiteren Support zur Verwendung einer Nicht-KOMA-Script-Klasse gibt es aber auch nicht.

Entschuldige bitte, ich habe mich glaube ich unglücklich ausgedrückt. Ich benutze selbstverständlich die KOMA-Script-Klasse. Die Fehlermeldungen bezogen sich wirklich auf das Beispiel wie es gepostet ist (also mit KOMA-Script-Klasse). Danke für die Infos.

Dann empfehle ich die verallgemeinerte Lösung mit tocstyle, mit den entsprechenden Anpassungen für Klassen ohne Kapitel. Die Lösung ist weit besser dokumentiert. Eigentlich könnte ich die Änderungen, die notwendig sind, damit sie auch mit Klassen ohne Kapitel funktioniert gleich mal einbauen …

Erledigt. Das Beispiel in besagtem Kommentar funktioniert nun außerdem mit allen KOMA-Script- und allen Standardklassen bis auf die Briefklassen.

Hallo und danke für die super dokumentierte Lösung für die getrennten Verzeichnisse. Mein Institut hat jetzt aber die folgende depperte Anforderung: Das Inhaltsverzeichnis des Anhangs ist in das Inhaltsverzeichnis zu Beginn
der Arbeit zu integrieren. Der eigentliche Anhang beginnt aber weiterhin
mit einem eigenen Inhaltsverzeichnis. Wie kann ich das denn nun umsetzen?

Wenn ich recht verstehe, dann brauchst Du doch bei der tocstyle-Lösung nur ein

\settocconditional{appendix}{true}

vor

oder nicht?

Ja stimmt so passt es. Danke!

So weit so gut, allerdings habe ich noch ein paar Probleme mit dem Style. Wie bekomme ich es denn hin, dass das Inhaltsverzeichnis wie auf dem Bild hier aussieht (https://pl.vc/5vke0). Das Anhangsverzeichnis entspricht dann nur dem unteren Teil und wird vor dem Anhang noch mal gezeigt, aber das klappt schon super mit dem Skript.

Wenn also die Seiten im Anhang mit A-1 etc. nummeriert werden, was ich für ganz großen Blödsinn halte, weil es die Orientierung tatsächlich nicht erleichtert, sondern erschwert, dann hat Du auch solche Seitenzahlen im Inhaltsverzeichnis. Ebenso bezüglich der Kapitelnummerierung.

Stimmt, das ist allerdings die Vorgabe meines Instituts. Deswegen nehme ich das Ganze so hin und habe es auch schon umgesetzt.
Die Darstellung der Seitenzahlen passt auch im Inhaltsverzeichnis. Mir geht es jetzt nur noch darum, die "Überschriften" Inhaltsverzeichnis und Anhang mit der selben Formatierung darzustellen. Das Anhangsverzeichnis besitzt aktuell noch eine Seitenzahl und Leader. Außerdem soll die Seite des Anhangsinhaltsverzeichnisses nicht gezählt werden und die Nummerierung des ersten Chapters bei A-1 beginnen.

Sorry, aber das Problem ist für mich im Augenblick nicht nachvollziehbar. Entweder habe ich Tomaten auf den Augen oder verstehe Dich irgendwie nicht. Kann aber auch daran liegen, dass ich etwas überarbeitet bin.

Okay wahrscheinlich habe ich das Ganze nicht ganz verständlich rüber gebracht. Also alles funktioniert super, einzig der Style der Verzeichnisse und die Überschrift des Anhangsverzeichnisses passt noch nicht. Anhang soll in der selben Formatierung wie Inhaltsverzeichnis erscheinen. Schriftgröße 14pt fett, gleicher Abstand zum Verzeichnis etc. ohne irgendwelche Seitenangaben. Außerdem werden aktuell noch die Titel der Chapter fett dargestellt, was auch nicht sein soll. Gibt es für die beiden Sachen eine einfache Lösung?

Muss das sein, dass immer mehrere Probleme miteinander vermischt werden?

Zum einen gibt es in meinem Beispiel keinen Überschrift "Anhang", sondern nur eine Überschrift "Anhangsverzeichnis". Zum anderen ist die exakt gleich gesetzt wie die Überschrift "Inhaltsverzeichnis".

Dass Kapitel im Inhaltsverzeichnis (und im Anhangsverzeichnis) fett gesetzt werden, ist bei KOMA-Script der Standard. Man kann das aber mit \setkomafont{chapterentry}{} leicht ändern.

Der Eintrag "Anhangsverzeichnis" ins Inhaltsverzeichnis hat deshalb eine Seitenzahl, weil alle Kapiteleinträge eine Seitenzahl haben, also auch dieses Kapitel. Natürlich könnte man die Seitenzahlen für das Verzeichnis mit \pagenumbering{gobble} abschalten. Dann wäre auch die Seitenzahl im Inhaltsverzeichnis leer.

Normalerweise würde ich ja Elke fragen, ob sie aus Deinen Auslassungen schlau wird. Leider hat sie derzeit auch nicht weniger um die Ohren als ich, weshalb ich sie nicht damit belästigen will. Ich schlage daher vor, Du machst eine neue Frage auf und stellt die dann so, wie das bei der Anmeldung erklärt wurde, und auch so, dass wirklich klar wird, wo Dein Problem liegt.

Vermutlich hast Du die Frage in der Zwischenzeit als toc plus appendix toc auf tex.sx gestellt? Dann wäre es sinnvoll gewesen, Markus und andere Leser, die sich hier Gedanken um Dein Problem machen, auch darüber zu informieren.

Einen Vorschlag für den sehr speziellen Wunsch habe ich jetzt auf tex.sx gemacht, unter anderem weil ich das Ergebnis, das aber wahrscheinlich einigermaßen dem geforderten Aussehen entspricht, nicht schön finde.

@esdd: Danke für die Verlinkung auf tex.sx. Ich habe die Frage dort noch einmal gestellt, weil Markus Kohm gebeten hatte einen neuen Thread zu erstellen. Das habe ich bei tex.sx gemacht und nicht hier, weil ich dort fast immer eine super Lösung für meine Probleme bekommen habe. So auch dieses Mal. Danke!
Zu meiner Verteidigung, ich finde den Aufbau auch nicht schön oder sinnvoll. Ist aber nun so vom Institut vorgegeben und ich werde mich deswegen nicht mit den zuständigen Personen anlegen.

Comments for "Anhangsverzeichnis?" abonnieren