Estoy usando el paquete tocloft para cambiar el estilo de mi ToC. Me gustaría escribir los números de los capítulos en números romanos. Sin embargo, para la ToC los componería usando el romanbars
paquete.
Este paquete proporciona un comando que toma su entrada (un número romano) y la formatea con barras horizontales en la línea base y superior, lo cual me resulta agradable a la vista. El comando toma un solo argumento. Sin embargo, el tocloft
comando solo proporciona comandos para cambiar el formato del número (de capítulo) utilizando un comando sin argumentos (como \bfseries
).
Mi MWE es:
\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}
que produce:
Como puede ver, la primera letra de cada número romano se formatea correctamente usando el comando, mientras que cualquier letra posterior se formatea usando la fuente normal.
¿Es posible ajustar el \Romanbar
comando de alguna manera para que lea el siguiente número completo? ¿O configurarlo de otro modo tocloft
para lograr el formato deseado?
Respuesta1
Una pequeña solución hacky:
\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}
Respuesta2
Podrías parchear \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}
Tenga en cuenta que he utilizado el comando KOMA-Script \RedeclareSectionCommand
para cambiar el color del número del capítulo en TOC. tocloft
No se recomienda el uso de un paquete con una clase KOMA-Script. Pero si realmente desea utilizar el paquete tocloft
, agregue el paquete xpatch
y el parche \addchaptertocentry
a su MWE.