Sie sind hier

\appendixtableofcontents ; [Kurztitel]

Hallo,
ich habe folgendes Problem: Neben einer \tableofcontents soll es eine \appendixtableofcontents wie in http://www.komascript.de/node/458 beschrieben, geben. Ich habe mit \renewcommand*{\tableofcontents}{\showtoc[{\aliastoc{\tocstyleTOC}{toc}\settocconditional{main}{true}\settocconditional{appendix}{true}}]{toc}} veranlasst, dass die Einträge im mainTOC weiterhin auftauchen. Es ergaben sich bei der Kompilierung allerdings zwei Fehler, die ich noch nicht verstehe (missing no treated as 0, , \tf@toc, \end{document}). Außerdem will ich appendixTOC noch schmaler erscheinen lassen.
Auch wäre ein größerer Abstand, etwa von einem Quad zwischen Ziffer und Bezeichnung im appendixTOC schöner.

Mein Haupt-Problem ergibt sich bei der Definition von Kurztiteln. So soll in den TOC etwa

    Statistische Formeln

ausgegeben werden, während die Überschrift dazu

    Anhang D: Statistische Formeln

lauten soll.

Ich habe es so versucht: \section*[Statistische Formeln]{Anhang D: Statistische Formeln}.

Im PDF steht dann an der Stelle der Überschrift nur

    [

, der Rest erscheint in der ersten Zeile des Texts.

Im Voraus vielen Dank !

Bild von Markus Kohm

Und auch hier habe ich das Problem, das sich mir nicht sicher bin, was genau Du machst. So gibt es unter der angegebenen Diskussion beispielsweise mehrere Lösungsvorschläge. Der neuste davon wäre http://www.komascript.de/comment/3447#comment-3447. Was Du dann genau wo, wie und mit welchem Ziel geändert hast, ist wieder eine Frage, die ich nicht klar beantwortet finde. Ganz klar ist jedoch eines: Die Sternvarianten der Gliederungsbefehle haben kein optionales Argument. Das ist so,war schon immer so und wird auch so bleiben, weil diese nämlich gar keine Einträge in ein Verzeichnis erzeugen sollen. Darüber hinaus erzeugt man nummerierte Überschriften nicht dadurch, dass man die Nummer in den Text der Überschrift einfügt. Die Nummerierung lässt man LaTeX selbst vornehmen. Sorry, aber das ist mir so absolut zu verworren und damit zu heiß, als dass ich mich an eine Antwort wagen würde. Auch in diesem Zusammenhang sei noch einmal darum gebeten, Fragen so zu stellen, dass sie auch jemand verstehen kann, der die letzten zwei Stunden verzweifelten Kampfes um eine Lösung für ein ihm unbekanntes Problem nicht live miterlebt hat. Siehe dazu: »Was kann ich tun, damit meine Probleme schnell eine Lösung finden?«.

Vielen Dank für die Reaktion! Ich bitte, die unpräzisen Darstellungen zu entschuldigen. Ich profitiere stark von der Trennung zwischen Input und Output und will gesetzten Satz, sprich die Vorzüge von LaTeX nicht missen! Daher auch ein großes Dankeschön an alle, die daran entwickeln und solchen armen Pimpfen wie mir helfen. Durch WYSIWYG habe ich hohe Ansprüche an das Output, ohne mich sehr gut mit dem Input auszukennen.

Ich habe mich jetzt an einer Miniversion probiert, leider ist mir dabei nicht klar, warum die zweite Version mißglückte. In diesem zweiten Anlauf versuchte ich, den Anhang mit einzelnen Gliederungsebenen zu gestalten, um das eigentliche Problem darzustellen...
Erster Versuch:

\documentclass{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{blindtext}
 
\usepackage{tocstyle}
\usetocstyle{allwithdot}
 
\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 nun 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
}
 
\renewcommand{\tableofcontents}{
   \showtoc[{
     \aliastoc{\tocstyleTOC}{toc}
     \settocconditional{main}{true}
     \settocconditional{appendix}{true}
   }]{toc}}
 
\makeatother
 
\setcounter{secnumdepth}{3}
 
 
\begin{document}
 
\frontmatter
 
\chapter*{Inhalt}
\tableofcontents
 
\mainmatter
\blinddocument
 
\chapter*{Literatur}
\addcontentsline{toc}{chapter}{Literatur}
 
\appendix
\blinddocument
 
\postappendix
 
\backmatter
 
\end{document}

Zumindest taucht hierbei die bereits oben beschriebene Fehlermeldung auf.
Zweiter Versuch:

\documentclass{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{blindtext}
 
\usepackage{tocstyle}
\usetocstyle{allwithdot}
 
\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 nun 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
}
 
\renewcommand{\tableofcontents}{
   \showtoc[{
     \aliastoc{\tocstyleTOC}{toc}
     \settocconditional{main}{true}
     \settocconditional{appendix}{true}
   }]{toc}}
 
\makeatother
 
\setcounter{secnumdepth}{3}
 
 
\begin{document}
 
\frontmatter
 
\chapter*{Inhalt}
\tableofcontents
 
\mainmatter
\blinddocument
 
\chapter*{Literatur}
\addcontentsline{toc}{chapter}{Literatur}
 
\appendix
\section{Verwendete Chemikalien}
\blindtext[4]
\section{Statistische Formeln}
\subsection{Regressionsanalyse}
\blindtext
\subsection{T"=Test}
\blindtext
 
\postappendix
 
\backmatter
 
\end{document}

Hier bekomme ich gar keine Verzeichnisse mehr zu sehen, weiß aber nicht, woran das liegt. In meinem eigentlichen Dokument hab ich dieses Problem aber nicht.
Jetzt würde mich unabhängig davon interessieren,

  • wie man (beim Beispiel im ersten Versuch etwa), die Breite nur des Anhangverzeichnisses ändern kann (bei keiner Änderung im Inhaltsverzeichnis),
  • wie man beim Anhangverzeichnis den Abstand zwischen Gliederungsnummer und Eintrag vergrößern kann, ohne dass sich dies wiederum auf das Inhaltsverzeichnis auswirkt,
  • ob es eine Möglichkeit gibt, zwar in den Verzeichnissen, einen Eintrag der Form D Statistische Formeln zu Erzeugen, der als Überschrift der Form Anhang D: Statistische Formeln ausgegeben wird.

Beste Grüße
Thomas D.

Bild von Markus Kohm

Bevor ich weitere Stunden für diese Frage investieren: Kannst Du mal erklären, was Du mit den Zeilen

\chapter*{Inhalt}

und

\chapter*{Literatur}

bezweckst? Der Grund für die Frage: Inhaltsverzeichnis und Literaturverzeichnis bekommen doch automatisch eine Überschrift.

Als zweite Frage: Warum verwendest Du nicht Optionen wie appendixprefix oder meinetwegen eine eigene Umdefinierung von \chapterformat im Anhang?

Bild von Markus Kohm

Da Du \tableofcontents so umdefinierst, dass lediglich ein Verzeichnis angezeigt wird, aber keines erzeugt wird, kann das ganze gar nicht funktionieren. Die Anweisung \showtoc heißt aus gutem Grund so. Irgendwo muss die Original-Definition von \tableofcontents aufgerufen werden, damit \@starttoc aufgerufen wird und somit die toc-Datei auch wirklich erzeugt wird. In der tocstyle-Anleitung heißt es dazu:

The internal comand \@startoc is defined by the LaTeX kernel. It is used by package and class authors to build commands like \tableofcontents or \listoffigures. Without using it you will not get a toc file.

und weiter

\showtoc[<preprocession>]{<TOC>} is an addition of tocstyle. Using it will procude a copy of TOC and process this copy. The copy will be done just after creating the original TOC.

Wenn Du schrittweise Deine Änderungen in meinen Originalcode einbaust oder meinetwegen, Deinen Code schrittweise wieder auf meinen Originalcode zurückführst, wirst Du sehen, dass die Fehlermeldung wegen \tf@toc sofort verschwindet, wenn Du \tableofcontents nicht umdefinierst.

Textbreiten verändert man übrigens in der Regel dadurch, dass man eine entsprechende Umgebung verwendet. Vordefiniert sind hier beispielsweise die Umgebungen quote und quotation. Variabel nutzbar ist bei KOMA-Script die Umgebung addmargin. Ob das tatsächlich in die Richtung dessen geht, was Du suchst, kann ich nicht garantieren, da mir die Problembeschreibung diesbezüglich nicht ausreicht.

Zu den Abständen/Einzügen ist AFAIK etwas in der tocstyle-Anleitung gesagt. Die werden in der Voreinstellung automatisch berechnet.

Okay, gut. Mitlerweile hab ich mir auch mal die Pakete minipage und tocloft angesehen, aber das hat auch nichts genutzt...
Ich sehe ja vollkommen ein, dass es so nicht geht. Ich kenn mich ja in der Syntax überhaupt nicht aus!
Eines der drei genannten Probleme konnte ich lösen.
Was ich jetzt noch gerne anders hätte:

  • die oberste Hierarchieebene chapter des Anhangs auch unter Inhalt erscheinen lassen,
  • die Breite des Anhangsverzeichnisses ändern, ohne dass sich dies auch auf das Inhaltsverzeichnis auswirkt, etwa mit einer quote-Umgebung oder mit addmargin,
  • die mit setkomafont geänderten Überschriften im Anhang auch im Anhangsverzeichnis entsprechend geändert anzeigen lassen.

Da ich absoluter Anfänger bin komme ich nicht weiter. Das ganze ist eine Nummer zu groß für mich. Ich weiß auch nicht ob meine Änderungswünsche oben für einen Experten so banal sind, ob sich das Makro von Anhangsverzeichnis? so einfach erweitern lässt. Vor allem wie gewährleistet werden kann, dass sich Änderungen etwa nur auf tableofappendixcontents und nicht auf tableofcontents auswirken.

Danke für Ihre Hilfe! Ich würde mich sehr freuen, falls es Ihnen möglich ist, sich die Sache noch mal kurz anzusehen, wieder zu hören! Bitte stecken Sie aber bloß nicht zu viel Zeit darein, dass ist die Sache am Ende gar nicht wert! Es eilt auch nicht, ich kann warten... Vielen Dank nochmal für die große Hilfe bei der Paginierung!

Mit besten Grüßen
Thomas

\documentclass{scrbook}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
 
%--Inhaltsverzeichnis, Anlagenverzeichnis
\usepackage{tocstyle}
\usetocstyle{allwithdot}
 
\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 nun 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
 
\setcounter{secnumdepth}{3} %Anz Hierarchieebenen im TOC
 
\addto\captionsngerman{%
\renewcommand{\contentsname}{Inhalt}
}% Inhalt statt Inhaltsverzeichnis
 
% Definition der Anhang-Kapitel: "Anhang A" statt "A"
\newcommand*{\appendixmore}{%
\renewcommand*{\chapterformat}{%
\appendixname~\thechapter\autodot\enskip}
\renewcommand*{\chaptermarkformat}{%
\appendixname~\thechapter\autodot\enskip}
}
 
% -------------------------------------------------------------------
\begin{document}
\tableofcontents
 
\blinddocument
 
\appendix
\renewcommand*{\autodot}{:}% Doppelpunkt nur im Anhang
\setkomafont{chapter}{\Large\sffamily}
\setkomafont{section}{\large\sffamily}
\setkomafont{subsection}{\normalsize\sffamily}
 
\blinddocument
 
\end{document}
Bild von Markus Kohm

Nicht böse sein, aber diese Verkleinerung der Überschriftengrößen im Anhang finde ich grauenvoll. Aber, wenn Du darauf bestehst, hier die Lösung:

\documentclass{scrbook}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
 
%--Inhaltsverzeichnis, Anlagenverzeichnis
\usepackage{tocstyle}
\usetocstyle{allwithdot}
 
\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 nun 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}^^J
      % In anderen Verzeichnissen die chapter-Ebene mit anzeigen
      \protect\ifnum\protect\value{tocdepth}=-10000\relax^^J
        \protect\value{tocdepth}=0\relax^^J
        % und dabei auch den Doppelpunkt verwenden
        \protect\renewcommand*{\protect\autodot}{:}%
      \protect\fi
  }%
  \renewcommand*{\autodot}{:}% Doppelpunkt nur im Anhang
  \setkomafont{chapter}{\Large}
  \setkomafont{section}{\large}
  \setkomafont{subsection}{\normalsize}
  \begin{quote}
  \appendixtableofcontents
  \end{quote}
}
 
% 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
 
\setcounter{secnumdepth}{3} %Anz Hierarchieebenen im TOC
 
\addto\captionsngerman{%
\renewcommand{\contentsname}{Inhalt}
}% Inhalt statt Inhaltsverzeichnis
 
% Definition der Anhang-Kapitel: "Anhang A" statt "A"
\newcommand*{\appendixmore}{%
\renewcommand*{\chapterformat}{%
\appendixname~\thechapter\autodot\enskip}
\renewcommand*{\chaptermarkformat}{%
\appendixname~\thechapter\autodot\enskip}
}
 
% -------------------------------------------------------------------
\begin{document}
\tableofcontents
 
\blinddocument
 
\appendix
 
\blinddocument
 
\end{document}

Besondere Maßnahmen zur Begrenzung der Auswirkungen sind dabei nicht notwendig, da die Verzeichnisse bereits in Gruppen stecken und nur lokal wirkende Anweisungen verwendet werden.

Comments for "\appendixtableofcontents  ;  [Kurztitel]" abonnieren