由于我经常以两种形式使用同一份文档,比如说形式 1 和形式 2,我想在章节标题中相应地标记,并将各个部分设置为不同的颜色。因此问题是,如何更改章节标题中的颜色(我知道sectsty
,但这似乎会影响整个章节标题?)?
下面的例子说明了我想要实现的目标,但它不起作用,因为标题中的简单文本颜色似乎不受支持。
\documentclass{book}
\usepackage[english]{babel}
\usepackage{xcolor}
\begin{document}
\chapter{Lions and Birds \textcolor{red}{(Document Form 1)}}
%
\newpage
%
\chapter{Alligators and Storks \textcolor{red}{(Document Form 1)}}
\end{document}
提前致谢,并致以最诚挚的问候,曼努埃尔
答案1
\ref
或\gls
章节等标题中出现问题的原因与以下情况相同:标题处的章节标记的\textcolor
宏转变为第一个,并扩展为其最终含义,试图应用一个名为的未定义(最有可能)的颜色。\MakeUppercase
\textcolor{ref}{...}
\textcolor{RED}{...}
RED
为了防止这种情况,颜色变化必须隐藏在一个强大的宏中(或者一些以 为前缀的宏\protect
,但这可能会变得乏味:
例如
\newrobustcmd{\redtext}[1]{%
\textcolor{red}{#1}%
}
定义用于红色文本的宏。
另一种可能性是使用可选参数\chapter
并省略那里的颜色变化,但这不会为目录中的文本着色。
请注意,文本中混合过多颜色可能会降低可读性。
\documentclass{book}
\usepackage{xcolor}
\usepackage{etoolbox}
\usepackage{blindtext}
\usepackage[english]{babel}
\newrobustcmd{\redtext}[1]{%
\textcolor{red}{#1}%
}
\newrobustcmd{\bluetext}[1]{%
\textcolor{blue}{#1}%
}
\begin{document}
\tableofcontents
\chapter{Lions and Birds \redtext{(Document Form 1)}}
\chapter{Cats and mice \bluetext{(Document Form 2)}}
\chapter[Cows and goats]{Cows and goats \textcolor{brown}{(Document Form 3)}}
\blindtext[5]
\end{document}