Ich verwende das tocloft-Paket, um den Stil meines Inhaltsverzeichnisses zu ändern. Ich möchte die Kapitelnummern als römische Ziffern setzen. Für das Inhaltsverzeichnis möchte ich sie jedoch mit dem romanbars
Paket setzen.
Dieses Paket bietet einen Befehl, der die Eingabe (eine römische Zahl) entgegennimmt und sie mit horizontalen Strichen auf der Grund- und Oberlinie formatiert, was ich optisch ansprechend finde. Der Befehl nimmt ein einzelnes Argument an. Der tocloft
Befehl bietet jedoch nur Befehle zum Ändern der Formatierung der (Kapitel-)Nummer mithilfe von Befehlen ohne Argumente (wie \bfseries
).
Mein MWE ist:
\documentclass{scrbook}
\renewcommand{\thechapter}{\Roman{chapter}}
\usepackage[usedvipsnames]{xcolor}
\usepackage{tocloft}
\usepackage{romanbar}
\renewcommand{\cftchappresnum}{\color{red}\Romanbar}
\usepackage{lipsum}
\begin{document}
\tableofcontents
\chapter{First Chapter}
\lipsum[2]
\chapter{Second Chapter}
\lipsum[2]
\chapter{Third Chapter}
\lipsum[2]
\end{document}
was ergibt:
wie Sie sehen, wird der erste Buchstabe jeder römischen Ziffer mit dem Befehl richtig formatiert, während alle nachfolgenden Buchstaben mit der normalen Schriftart formatiert werden.
Ist es möglich, den \Romanbar
Befehl irgendwie so zu umschließen, dass er die gesamte folgende Ziffer liest? Oder ihn anderweitig zu konfigurieren, tocloft
um die gewünschte Formatierung zu erreichen?
Antwort1
Eine kleine Hack-Lösung:
\documentclass{scrbook}
\renewcommand{\thechapter}{\Roman{chapter}}
\usepackage[usedvipsnames]{xcolor}
\usepackage{tocloft}
\usepackage{romanbar}
\newsavebox{\tocnr}
\renewcommand{\cftchappresnum}{\color{red}\begin{lrbox}{\tocnr}}
\renewcommand{\cftchapaftersnum}{\end{lrbox}\expandafter\Romanbar\expandafter{\usebox{\tocnr}}\relax}
\usepackage{lipsum}
\begin{document}
\tableofcontents
\chapter{First Chapter}
\lipsum[2]
\chapter{Second Chapter}
\lipsum[2]
\chapter{Third Chapter}
\lipsum[2]
\end{document}
Antwort2
Sie könnten Folgendes patchen \addchaptertocentry
:
\documentclass{scrbook}
\renewcommand{\thechapter}{\Roman{chapter}}
\usepackage[usedvipsnames]{xcolor}
\usepackage{romanbar}
\RedeclareSectionCommand[
tocentrynumberformat=\def\autodot{}\textcolor{red}
]{chapter}
\usepackage{xpatch}
\xpatchcmd{\addchaptertocentry}
{\addtocentrydefault{chapter}{#1}{#2}}
{\ifstr{#1}{}{\addtocentrydefault{chapter}{#1}{#2}}
{\addtocentrydefault{chapter}{\protect\Romanbar{#1}}{#2}}%
}{}{\PatchFailed}
\usepackage{lipsum}
\begin{document}
\tableofcontents
\chapter{First Chapter}
\lipsum[2]
\chapter{Second Chapter}
\lipsum[2]
\chapter{Third Chapter}
\lipsum[2]
\end{document}
Beachten Sie, dass ich den KOMA-Script-Befehl verwendet habe, \RedeclareSectionCommand
um die Farbe der Kapitelnummer im Inhaltsverzeichnis zu ändern. Die Verwendung von Paketen tocloft
mit einer KOMA-Script-Klasse wird nicht empfohlen. Wenn Sie jedoch wirklich Pakete verwenden möchten, fügen Sie Ihrem MWE tocloft
Pakete xpatch
und den Patch hinzu.\addchaptertocentry