Menu

HowTo_TocChapterPrefix

Wie im Inhaltsverzeichnis bei Kapiteleinträgen der Nummer ein „Kapitel“ vorangestellt werden kann

Bei KOMA-Script-Versionen vor 3.46 ging das primär über die Umdefinierung von \addchaptertocentry. Dabei musste für den Fall, dass eine Nummer angegeben wurde, also das erste Argument nicht leer ist, am besten \chapapp gefolgt von einem Leerzeichen eingefügt werden, also:

\renewcommand*{\addchaptertocentry}[2]{%
  \IfArgIsEmpty{#1}{% keine Nummer:
    \addtocentrydefault{chapter}{#1}{#2}% wie bisher
  }{% mit Nummer:
    \addtocentrydefault{chapter}{\chapapp\ #1}{#2}%
  }%
}

Zusätzlich musste allerdings noch dafür gesorgt werden, dass auch entsprechend viel Platz für die Nummer bereit steht. Das kann bei KOMA-Script wahlweise mit Hilfe von \DeclareTOCStyleEntry:

\DeclareTOCStyleEntry[numwidth=5.5em]{chapter}{chapter}

oder \RedeclareSectionCommand:

\RedeclareSectionCommand[tocnumwidth=5.5em]{chapter}

erreicht werden.

Seit KOMA-Script 3.46 gibt es aber mit der \DeclareTOCStyleEntry-Option numberprefix für den Stil tocline – und damit auch für den davon abgeleiteten Stil chapter – die Möglichkeit, der Eintragsnummer direkt einen Präfix voranzustellen:

\DeclareTOCStyleEntry[dynnumwidth,numberprefix=\chapapp\ ]{chapter}{chapter}

oder:

\RedeclareSectionCommand[tocdynnumwidth,tocnumberprefix=\chapapp\ ]{chapter}

Hier habe ich es über dynnumwidth dem Paket tocbasic überlassen, die benötigte Breite für die Nummer einschließlich Präfix selbst zu bestimmen.

Häufig wird bei einem solchen Stil außerdem gewünscht, dass nach der Nummer noch ein Doppelpunkt erfolgt.

Insgesamt ergibt sich also:

\documentclass{scrbook}
\usepackage{blindtext}

\DeclareTOCStyleEntry[%
  dynnumwidth,% automatic detection of needed number width
  numberprefix=\chapapp\ ,% number prefix: "Chapter " resp. "Appendix "
  numberpostfix=:,% number postfix: ":" 
]{chapter}{chapter}

\begin{document}
\tableofcontents
\blinddocument
\addchap{Heading of not numbered chapter}
\blindtext
\end{document}

Warum \chapapp statt \chaptername oder gar einer festen Zeichenfolge „Kapitel“ verwendet wurde, sollte klar werden, wenn man die Erklärung zu dieser Anweisung in der KOMA-Script-Anleitung oder im KOMA-Script-Buch nachliest.

Soll der Präfix auch bei nicht nummerierten Einträgen gesetzt und gleichzeitig der Text der Eintragstext wie bei den nummerierten Einträgen eingezogen werden, so ist eher die Eigenschaft entrynumberformat für \DeclareTOCEntryStyle bzw. tocentrynumberformat für\RedeclareSectionCommand zu verwenden und zusätzlich Option toc=numberline zu setzen:

\documentclass[toc=numberline]{scrbook}
\usepackage{blindtext}

\newcommand*{\chapterentrynumberwithprefix}[1]{\chapapp\ #1}
\RedeclareSectionCommand[tocdynnumwidth,tocentrynumberformat=\chapterentrynumberwithprefix]{chapter}

\begin{document}
\tableofcontents
\blinddocument
\addchap{Heading of not numbered chapter}
\blindtext
\end{document}

Ohne Option toc=numberline hat die Verwendung von tocentrynumberformat dagegen nur eine Wirkung auf die nummerierten Kapiteleinträge.

Die Lösung über entrynumberformat und \DeclareTOCStyleEntry funktioniert mit einigen Anpassungen übrigens auch mit den Standardklassen. Natürlich muss dann Paket tocbasic explizit geladen werden. Die Eigenschaft numberline setzt man für das Inhaltsverzeichnis dann über \setuptoc:

\documentclass{book}
\usepackage{blindtext}
\usepackage{tocbasic}

\renewcommand*{\tableofcontents}{\listoftoc[\contentsname]{toc}}% use tocbasic for the ToC
\setuptoc{toc}{numberline}
\newcommand*{\chapterentrynumberwithprefix}[1]{\csname @chapapp\endcsname\ #1}% \chapapp is unknown → use \@chapapp
\DeclareTOCStyleEntry[dynnumwidth,entrynumberformat=\chapterentrynumberwithprefix]{tocline}{chapter}% style chapter is unknown → use style tocline

\begin{document}
\tableofcontents
\blinddocument
\chapter*{Heading of not numbered chapter}
\addxcontentsline{toc}{chapter}{Heading of not numbered chapter}
\blindtext
\end{document}

Related

Wiki (Deutsch): HowTo_ToCConfiguration
Wiki (Deutsch): HowTo_TocAppendixPrefix
Wiki (Deutsch): HowTo_TocPartPrefix

MongoDB Logo MongoDB