Wie kann ich römische Seitenzahlen im Inhaltsverzeichnis ordentlich untereinander setzen?

Wenn man eine größere Zahl von Seiten mit römischen Zahlen versieht, so werden diese sehr schnell, sehr lang. Da jedoch im Inhaltsverzeichnis nur ein bestimmter Platz für die Seitenzahlen reserviert ist, ragen die römischen Seitenzahlen dann teilweise in den Rand.

Der übliche Weg, um dieses Problem zu lösen, besteht darin mehr Platz für Seitenzahlen im Inhaltsverzeichnis zu reservieren. Dies wäre beispielsweise mit

\makeatletter
\renewcommand*{\@pnumwidth}{4em}
\renewcommand*{\@tocrmarg}{5em}
\makeatother
in der Prämbel möglich.

Dieses übliche Vorgehen hat aber den Nachteil, dass dieser Platz dann auch für arabischen Seitenzahlen reserviert wird und damit in der Regel ein sehr großer Abstand zwischen der Punktlinie und den Seitenzahlen entsteht.

Ein alternativer Weg ist daher, für jede Nummerierungsart einen individuell anderen Platz für die Seitenzahlen zu reservieren. Um dies zu ermöglichen, muss man die gewünschten Änderungen von \@pnumwidth und \@tocrmarg in die Inhaltsverzeichnisdatei – Endung »toc« – schreiben. Wenn die Umschaltung der Nummerierungsart an die Anweisungen \frontmatter, \mainmatter und \backmatter geknüpft ist, wie dies bei Verwendung einer Buch-Klasse üblich ist, liegt es nahe, auch die Umdefinierung daran zu knüpfen:

\documentclass{scrbook}
\usepackage[english]{babel}
\usepackage{blindtext}
\usepackage{ifxetex}
\usepackage{ifluatex}
\ifluatex
\usepackage{fontspec}
\else
\ifxetex
\usepackage{fontspec}
\else
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\fi\fi
 
\makeatletter
\g@addto@macro\frontmatter{%
  \addtocontents{toc}{%
    \protect\renewcommand*\protect\@pnumwidth{3em}
    \protect\renewcommand*\protect\@tocrmarg{4em}
  }%
}
\g@addto@macro\mainmatter{%
  \addtocontents{toc}{%
    \protect\renewcommand*\protect\@pnumwidth{1.55em}
    \protect\renewcommand*\protect\@tocrmarg{2.55em}
  }%
}
\g@addto@macro\backmatter{%
  \addtocontents{toc}{%
    \protect\renewcommand*\protect\@pnumwidth{4.25em}
    \protect\renewcommand*\protect\@tocrmarg{5.25em}
  }%
  \pagenumbering{Roman}%
  \setcounter{section}{0}%
}
\makeatother
 
\begin{document}
\frontmatter
\tableofcontents
\blinddocument\blinddocument\blinddocument
\blinddocument\blinddocument\blinddocument
\blinddocument\blinddocument
 
\mainmatter
\blinddocument\blinddocument\blinddocument
\blinddocument\blinddocument\blinddocument
\blinddocument\blinddocument
 
\backmatter
\blinddocument\blinddocument\blinddocument
\blinddocument\blinddocument\blinddocument
\blinddocument\blinddocument\blinddocument
\blinddocument
\end{document}

Das Beispiel selbst ist natürlich absoluter Unfug. Auch sollte man im Endteil (\backmatter) keine nummerierten Abschnitte einfügen. Aber unsinnige Anforderungen werden des öfteren an mich heran getragen. Außerdem betrachte ich es ohnehin als eher nutzlos und ein Unterfangen aus der Mottenkiste, die Nummerierungsart der Seitenzahlen in eine Dokument mehrfach umzuschalten.

Inhalt abgleichen