Ändern Sie das Format der Kapitelnummer im Inhaltsverzeichnis mit tocloft

Ändern Sie das Format der Kapitelnummer im Inhaltsverzeichnis mit tocloft

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 romanbarsPaket 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 tocloftBefehl 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:

Beispiel

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 \RomanbarBefehl irgendwie so zu umschließen, dass er die gesamte folgende Ziffer liest? Oder ihn anderweitig zu konfigurieren, tocloftum 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}

Bildbeschreibung hier eingeben

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}

Bildbeschreibung hier eingeben

Beachten Sie, dass ich den KOMA-Script-Befehl verwendet habe, \RedeclareSectionCommandum die Farbe der Kapitelnummer im Inhaltsverzeichnis zu ändern. Die Verwendung von Paketen tocloftmit einer KOMA-Script-Klasse wird nicht empfohlen. Wenn Sie jedoch wirklich Pakete verwenden möchten, fügen Sie Ihrem MWE tocloftPakete xpatchund den Patch hinzu.\addchaptertocentry

verwandte Informationen