tocloft を使用して目次の章番号の形式を変更する

tocloft を使用して目次の章番号の形式を変更する

私は tocloft パッケージを使用して ToC のスタイルを変更しています。章番号をローマ数字としてタイプセットしたいと思います。ただし、ToC の場合はパッケージを使用してタイプセットしますromanbars

このパッケージは、入力 (ローマ数字) を受け取り、ベースラインとトップラインに見た目に美しい水平バーを付けて書式設定するコマンドを提供します。このコマンドは 1 つの引数を取ります。ただし、このコマンドは、tocloft引数なしのコマンド ( など) を使用して (章) 番号の書式を変更するコマンドのみを提供します\bfseries

私の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}

これにより、次のようになります。

例

ご覧のとおり、各ローマ数字の最初の文字は コマンドを使用して適切にフォーマットされていますが、後続の文字は通常のフォントを使用してフォーマットされています。

\Romanbarコマンドを何らかの方法でラップして、次の数字全体を読み取ることは可能ですか? または、tocloft必要な書式設定を実現するように構成できますか?

答え1

ちょっとしたハッキーな解決策:

\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}

ここに画像の説明を入力してください

答え2

パッチを適用できます\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}

ここに画像の説明を入力してください

\RedeclareSectionCommandTOC の章番号の色を変更するためにKOMA-Script コマンドを使用していることに注意してください。KOMA tocloft-Script クラスでの package の使用は推奨されません。ただし、どうしても package を使用したい場合はtocloft、 packagexpatchと のパッチを\addchaptertocentryMWE に追加してください。

関連情報