Menu

HowTo_TocChapterPrefix

Markus Kohm
There is a newer version of this page. You can find it here.

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

Das geht bei KOMA-Script primär über die Umdefinierung von \addchaptertocentry. Dabei muss 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 muss 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. Ich selbst bevorzuge \RedeclareSectionCommand, weil man dabei nicht wissen muss, also in der KOMA-Script-Anleitung nachschlagen muss, dass es für Kapiteleinträge den Stil chapter gibt, der als erstes obligatorisches Argument bei \DeclareTOCStyleEntry anzugeben ist.

Insgesamt ergibt sich also:

\documentclass{scrbook}
\usepackage{blindtext}

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

\RedeclareSectionCommand[tocnumwidth=5.5em]{chapter}

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

Warum \chapapp statt 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[tocnumwidth=5.5em,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{toc}}% use tocbasic for the ToC
\setuptoc{toc}{numberline}
\newcommand*{\chapterentrynumberwithprefix}[1]{\csname @chapapp\endcsname\ #1}% \chapapp is unknown → use \@chapapp
\DeclareTOCStyleEntry[numwidth=5.5em,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}

MongoDB Logo MongoDB