答案1
使用 的补丁\@chapter
自动提供此功能,并根据章节号切换颜色,在 中定义颜色“表” \currentchaptitlecolor
。颜色顺序当然是完全任意的,可以随意更改。
该补丁仅适用于\mainmatter
- 章节内容(目前)。
\documentclass{book}
\usepackage[x11names,named]{xcolor}
\usepackage{xpatch}
\makeatletter
\xpatchcmd{\@chapter}{%
\addcontentsline{toc}{chapter}%
{\protect\numberline{\thechapter}#1}%
}{%
\addcontentsline{toc}{chapter}%
{\color{\currentchaptitlecolor}\protect\numberline{\thechapter}#1}%
}{}{}
\newcommand{\currentchaptitlecolor}{%
\ifcase\value{chapter}
\or
red% First chapter
\or
blue% Second chapter
\or
green% Third chapter
\or
yellow% etc.
\or
brown%
\fi
}
\makeatother
\begin{document}
\tableofcontents
\chapter{First chapter}
\section{Some section}
\chapter{Second chapter}
\section{Some section}
\end{document}
答案2
使用可选参数\chapter
提供\color{<my color>}
指令以及章节标题的重复。例如,如果您通常写
\chapter{This is the first chapter}
你应该把它改成
\chapter[\color{red}This is the first chapter]{This is the first chapter}
请注意,此更改仅影响目录中的章节标题材料,而不影响关联的章节号或关联的页码。如果您还需要为这两个数字着色,请加载包tocloft
并使用以下示例中显示的代码。
但是,除非你想给人留下绝对华丽的印象,否则请将自己限制在一种额外的颜色上。如果你开始使用多种颜色,你的读者可能会开始大笑……
\documentclass{book}
\usepackage{xcolor}
\colorlet{RED}{black} % don't color running headers
\colorlet{BLUE}{black}
\usepackage[titles]{tocloft}
\renewcommand{\cftchappresnum}{\color{red}}
\renewcommand{\cftchappagefont}{\bfseries\color{red}}
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
\chapter[\color{red}This is the first chapter]{This is the first chapter}
\section{section}
\section{section}
\section{section}
\end{document}
如果要使用该tocloft
包,则可以简化设置:通过修改宏\cftchapfont
以合并\color
相关指令,不再需要在\chapter
指令中提供明确的可选参数,从而节省一些输入。
\documentclass{book}
\usepackage{xcolor}
\colorlet{RED}{black} % don't color running headers
\colorlet{BLUE}{black}
\usepackage[titles]{tocloft}
\renewcommand{\cftchapfont}{\bfseries\color{red}}
\renewcommand{\cftchappagefont}{\bfseries\color{red}}
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
\chapter{This is the first chapter}
\section{section}
\section{section}
\section{section}
\end{document}
答案3
与 Christian 的回答类似,无需使用修补依赖项。此外,颜色更改可立即生效,而不必编译两次:
\documentclass{book}
\usepackage{xcolor}
\makeatletter
\newcounter{ToCchapter}
\let\old@l@chapter\l@chapter
\renewcommand{\l@chapter}[2]{%
\stepcounter{ToCchapter}%
\old@l@chapter{\color{\chaptercolour}#1}{#2}}
\makeatother
\newcommand{\chaptercolour}{%
\ifcase\value{ToCchapter}
\or red% Chapter 1
\or blue% Chapter 2
\or green% Chapter 3
\or yellow% Chapter 4
\else brown% other
\fi
}
\begin{document}
\tableofcontents
\chapter{First chapter}
\section{Some section}
\chapter{Second chapter}
\section{Some section}
\chapter{Third chapter}
\section{Some section}
\chapter{Fourth chapter}
\section{Some section}
\chapter{Fifth chapter}
\section{Some section}
\chapter{Sixth chapter}
\section{Some section}
\end{document}