在目录中显示不同的颜色

在目录中显示不同的颜色

我想知道是否有办法在目录中仅显示具有不同的颜色,例如以下示例:

在此处输入图片描述

答案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}

相关内容