tocloft를 사용하여 ToC의 장 번호 형식 수정

tocloft를 사용하여 ToC의 장 번호 형식 수정

Tocloft 패키지를 사용하여 ToC 스타일을 변경하고 있습니다. 장 번호를 로마 숫자로 조판하고 싶습니다. 그러나 ToC의 경우 패키지를 사용하여 조판하겠습니다 romanbars.

이 패키지는 입력(로마 숫자)을 받아 기본 라인과 상단 라인에 수평 막대로 형식을 지정하는 명령을 제공하는데, 이는 보기에 좋습니다. 이 명령은 단일 인수를 사용합니다. 그러나 이 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 명령을 사용했습니다 . tocloftKOMA-Script 클래스가 포함된 패키지를 사용하는 것은 권장되지 않습니다. 하지만 정말로 패키지를 사용하고 싶다면 MWE에 tocloft패키지 xpatch와 패치를 추가하세요.\addchaptertocentry

관련 정보