Sie sind hier

Beispiel: »Anhang« vor jedem Anhang im Inhaltsverzeichnis

In letzter Zeit häufen sich bei mir im Support die Nachfragen, wie man das Wort »Anhang« nicht nur den Überschriften der Anhänge (aka Kapitel im Anhang) voranstellen kann, sondern auch im Inhaltsverzeichnis vor die Nummern bekommt.

Seit KOMA-Script 3.10 werden die Einträge ins Inhaltsverzeichnis nicht mehr direkt vorgenommen, sondern über \addchaptertocentry. Diese, in der KOMA-Script-Anleitung dokumentierte Anweisung kann man innerhalb von \appendix nun einfach so umdefinieren, dass sie nummerierte Einträge in der gewünschten Form erstellt:

\usepackage{etoolbox}
\providecommand*{\appendixmore}{}% Falls Option headings=appendixprefix nicht verwendet wurde.
\newcommand*{\SavedOriginaladdchaptertocentry}{}
\appto\appendixmore{%
  \let\SavedOriginaladdchaptertocentry\addchaptertocentry
  \renewcommand*{\addchaptertocentry}[2]{%
    \ifstr{#1}{}{% Eintrag ohne Nummer
      \SavedOriginaladdchaptertocentry{}{#2}%
    }{% Eintrag mit Nummer
      \SavedOriginaladdchaptertocentry{}{\appendixname~#1:\enskip#2}%
    }%
  }%
}

Das angehängte Beispiel verwendet außerdem noch Option headings=appendixprefix, funktioniert aber auch ohne und trifft Vorbereitungen für den Fall, dass \appendixname ein Wort in Kleinbuchstaben liefert, der Eintrag aber natürlich mit einem Großbuchstaben beginnen soll. Zu beachten ist ggf. noch, dass der von \autodot normalerweise gesetzte Punkt hier durch einen expliziten Doppelpunkt ersetzt wurde.

Es ist zu beachten, dass die Nummer in diesem Beispiel nicht mehr als Nummer, sondern als Text gesetzt wird. Damit hat sie auch keine Auswirkungen auf die Nummernbreite im Fall von toc=flat.

Außerdem werden nicht nummerierte Kapitel ohne den Präfix gesetzt. Ich denke, das ist im Sinne der Anwender, weil sonst beispielsweise das Literaturverzeichnis oder das Stichwortverzeichnis ebenfalls den Präfix hätte. Man kann das aber auch einfach ändern, indem man für den Eintrag ohne Nummer, also das dritte Argument von \ifstr

      \SavedOriginaladdchaptertocentry{}{\appendixname~#2}%

verwendet. Dann muss man aber ggf. vor dem Literatur- oder Stichwortverzeichnis zusätzlich ein

\let\addchaptertocentry\SavedOriginaladdchaptertocentry

einfügen, um ab dieser Stelle den Präfix wieder abzuschalten.

Für den Fall der Verwendung von scrartcl sei hier lediglich darauf hingewiesen, dass eine Anpassung durch Verwendung von \addsectiontocentry problemlos möglich sein sollte.

Kommentare

Hi,
du hast in dem Code leider einen Tippfehler. Du hast dreimal \SavedOriginalchaptertocentry und einmal \SavedOriginaladdchaptertocentry geschrieben. Ich hoffe es ist in Ordnung, dass ich dein Beispiel neben meiner eigenen Lösung auf TeXWelt weiter verbreitet habe. Im dem angehängten Quellcode ist es übrigens korrekt.

Danke für den Hinweis. Da hatte ich glatt vergessen, die Korrekturen, die ich im tatsächlich verwendeten Code des Beispiels vorgenommen habe, wieder zurück zu kopieren.

Interessant wird nun natürlich, welcher Code sich verbreiten wird: der vereinfachte, den ich aus didaktischen Gründen hier im Beitrag verwende und den Du auch für TeXwelt kopiert hast, oder der verbesserte, der im Beispiel verwendet wird. Dort ist übrigens auch die Lizenzfrage für das Beispiel selbst geklärt.

Ich empfehle die Verwendung des Codes aus dem angehängten Beispiel.

BTW: Dem Verfasser ToF-SIMS auf TeXwelt könnte man noch erklären, dass er auch mit fancyhdr \chaptermarkformat verwenden kann. Wenn er sich dazu durchringen könnte scrpage2 statt fancyhdr zu verwenden, käme er eventuell sogar in den Genuss der automatischen Verwendung von \chaptermarkformat einschl. ggf. der Beachtung von Option heading=appendixprefix.

Ich habe vergessen darauf hinzuweisen, dass ich solche Einträge ins Inhaltsverzeichnis nicht wirklich empfehlen kann. Das Inhaltsverzeichnis wird so inkonsistent (schließlich steht vor den Kapiteln im Hauptteil auch nicht »Kapitel« und umbrochene Überschriften unterscheiden sich auch) und der Nutzen der ständigen Wiederholung des Wortes »Anhang« ist marginal.

Gezeigt habe ich das eher, weil es nun einmal von diversen Laien und solchen, die sich nach von Laien erstellten Formatierungsvorschriften richtigen müssen, nachgefragt wird …

Danke für das super Beispiel. Das ist, was ich gesucht habe.

Leider verwende ich für meine Hausarbeit den Type "scrartcl" und nicht "scrbook". Da sind keine Chapter vorgesehen, aber durch die kleine Anpassung in addsectiontocentry klappt's auch mit dem Inhaltsverzeichnis.

Aber leider wird damit im Text selbst nicht mehr "Anhang A" hingeschrieben, sondern einfach nur "A. Überschrift".

Hast du dafür noch eine Lösung? Vielen Dank!

Für die Gliederungsnummer der Abschnitte ist \sectionformat zuständig. Das kannst Du analog umdefinieren:

\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{mwe}% für Fülltext
 
\usepackage{etoolbox}
\providecommand*{\appendixmore}{}% Falls Option headings=appendixprefix nicht verwendet wurde.
\newcommand*{\SavedOriginaladdsectiontocentry}{}
\newcommand*\SavedOriginalsectionformat{}
\appto\appendixmore{%
  \let\SavedOriginaladdsectiontocentry\addsectiontocentry
  \renewcommand*{\addsectiontocentry}[2]{%
    \ifstr{#1}{}{% Eintrag ohne Nummer
      \SavedOriginaladdsectiontocentry{}{#2}%
    }{% Eintrag mit Nummer
      \SavedOriginaladdsectiontocentry{}{\appendixname~#1:\enskip#2}%
    }%
  }%
  \let\SavedOriginalsectionformat\sectionformat
  \renewcommand*{\sectionformat}{%
    %\def\autodot{:}% falls der automatische Punkt hier auch durch einen Doppelpunkt ersetzt werden soll
    \appendixname~\SavedOriginalsectionformat
  }%
}
\begin{document}
\tableofcontents
\blinddocument\blinddocument
\appendix
\blinddocument\blinddocument
\end{document}

Falls der Präfix irgendwo wieder abgeschaltet werden muss, dann muss an der Stelle noch zusätzlich

\let\addsectiontocentry\SavedOriginaladdsectiontocentry
\let\sectionformat\SavedOriginalsectionformat

eingefügt werden.

Mit aktuellem KOMA-Script kann man übrigens auch einen eigenen Eintragungsstil für die Abschnitte im Anhang definieren:

\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{mwe}% für Fülltext
 
\usepackage{xpatch}
\newcommand*{\SavedOriginaladdsectiontocentry}{}
\newcommand*\SavedOriginalsectionformat{}
 
\newcommand*{\entrywithprefix}[2]{%
  \def\autodot{:}% falls der automatische Punkt durch einen Doppelpunkt ersetzt werden soll
  #1~#2%
}
\DeclareTOCStyleEntry[
  level=\sectiontocdepth,
  indent=0pt,
  numwidth=1.5em,
  dynnumwidth,% automatisches Anpassen der Nummernbreite
  entrynumberformat=\entrywithprefix{\appendixname},
]{section}{appendixsection}
 
\xapptocmd\appendix{%
  \let\SavedOriginaladdsectiontocentry\addsectiontocentry
  \xpatchcmd\addsectiontocentry
    {\addtocentrydefault{section}}
    {\addtocentrydefault{appendixsection}}
    {}{\PatchFailed}%
  \let\SavedOriginalsectionformat\sectionformat
  \renewcommand*{\sectionformat}{%
    \def\autodot{:}% falls der automatische Punkt durch einen Doppelpunkt ersetzt werden sol
    \appendixname~\SavedOriginalsectionformat
  }%
}{}{}
 
\begin{document}
\tableofcontents
\blinddocument\blinddocument
\appendix
\blinddocument\blinddocument
\end{document}

Damit wird die Gliederungsnummer im Inhaltsverzeichnis auch für die Anhangsabschnitte als Nummer gesetzt, weshalb ein eventuelles toc=flat auch auf diese Einträge wirkt. Außerdem unterscheiden sich umbrochene Überschriften dort nicht mehr.

Danke für die schnelle, tolle Lösung! Respekt!

Warum wird aber (sowohl bei der "scrartcl"- als auch bei der "scrbook"-Variante) nach der Kapitelnummer immer ein Punkt gesetzte? Also "1.2.3." statt "1.2.3", analog "A.1.2." statt "A.1.2"?
Mit der Option \documentclass[pointlessnumbers]{scrartcl} wird der Punkt zwar entfernt, aber dann fehlt wieder das "Anhang A" im Text :-(

Woher der Punkt kommt, steht in der Anleitung bei der Erklärung zu Option numbers=Einstellung.

Quellen, die nach über 12 Jahren noch immer pointlessnumbers verwenden, solltest Du misstrauen. scrartcl gibt bei ihrer Verwendung übrigens auch eine Warnung mit Erklärung, wie man es besser macht, aus. Genau das solltest Du auch beachten, weil sonst nämlich diverse Verbesserungen von KOMA-Script aus Kompatibilitätsgründen deaktiviert werden. Genau das ist hier auch das Problem.

Die Verwendung veralteter Optionen legt nahe, dass es sich um ein altes Dokument handelt. Um für ältere Dokumente Kompatibilität zu ermöglichen, stellt KOMA-Script dann automatisch version=first ein. Bis einschließlich Version 3.16 wurde aber die alte, kompliziertere Anweisung \othersectionlevelsformat für die Formatierung der Gliederungsnummern von Abschnitten und tiefer liegenden Gliederungsebenen genutzt. Aus Kompatibilitätsgründen ist das auch jetzt noch so, wenn für version etwas bis einschließlich 3.16 eingestellt ist. Damit hat die Umdefinition von \sectionformat mit dem von der veralteten Option verursachten version=first keinen Einfluss mehr auf das Ergebnis.

Das ist ein Beispiel dafür, dass man auch Warnungen immer anschauen sollte. Wie Markus schon geschrieben hat, wird man dort auf das Problem aufmerksam gemacht und erhält den Hinweis, dass die veraltete Option durch numbers=noenddot ersetzt werden muss.

Im KOMA-Script Buch gibt es übrigens auch eine Tabelle der obsoleten Optionen mit den zugehörigen aktuellen Einstellungen, die statt dessen verwendet werden müssen.

Überschriften mit Präfixzeile sind unterhalb der Kapitelebene so unüblich, dass keine der KOMA-Script-Klassen das unterstützt. Natürlich könnte man \sectionlinesformat für section entsprechend umdefinieren. Ich würde davon aber abraten und das wirklich nur auf Kapitelebene also mit scrbook oder scrreprt verwenden (und dann auch nur entweder im Hauptteil und im Anhang oder gar nicht).

Comments for "Beispiel: »Anhang« vor jedem Anhang im Inhaltsverzeichnis" abonnieren