Modificar el formato del número de capítulo en ToC con tocloft

Modificar el formato del número de capítulo en ToC con tocloft

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 romanbarspaquete.

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 tocloftcomando 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:

ejemplo

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 \Romanbarcomando de alguna manera para que lea el siguiente número completo? ¿O configurarlo de otro modo tocloftpara 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}

ingrese la descripción de la imagen aquí

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}

ingrese la descripción de la imagen aquí

Tenga en cuenta que he utilizado el comando KOMA-Script \RedeclareSectionCommandpara cambiar el color del número del capítulo en TOC. tocloftNo se recomienda el uso de un paquete con una clase KOMA-Script. Pero si realmente desea utilizar el paquete tocloft, agregue el paquete xpatchy el parche \addchaptertocentrya su MWE.

información relacionada