Modifique o formato do número do capítulo no ToC com tocloft

Modifique o formato do número do capítulo no ToC com tocloft

Estou usando o pacote tocloft para alterar o estilo do meu ToC. Gostaria de digitar os números dos capítulos em algarismos romanos. No entanto, para o ToC eu gostaria de digitá-los usando o romanbarspacote.

Este pacote fornece um comando que pega sua entrada (um numeral romano) e a formata com barras horizontais na linha base e superior, o que considero agradável à vista. O comando leva um único argumento. No entanto, o tocloftcomando fornece apenas comandos para alterar a formatação do número (capítulo) usando comandos sem argumento (como \bfseries).

Meu MWE é:

\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 produz:

exemplo

como você pode ver, a primeira letra de cada algarismo romano é formatada corretamente usando o comando, enquanto qualquer letra subsequente é formatada usando a fonte normal.

É possível agrupar o \Romanbarcomando de alguma forma para que ele leia todo o numeral a seguir? Ou então configure tocloftpara obter a formatação desejada?

Responder1

Uma pequena solução 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}

insira a descrição da imagem aqui

Responder2

Você poderia corrigir \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}

insira a descrição da imagem aqui

Observe que usei o comando KOMA-Script \RedeclareSectionCommandpara alterar a cor do número do capítulo no TOC. O uso de pacote tocloftcom classe KOMA-Script não é recomendado. Mas se você realmente deseja usar o pacote tocloft, adicione o pacote xpatche o patch \addchaptertocentryao seu MWE.

informação relacionada