\pagestyle{fancy} 和 xcolor 包之间的冲突

\pagestyle{fancy} 和 xcolor 包之间的冲突
\documentclass{article}
\usepackage{xcolor,fancyhdr}

\pagestyle{fancy}
% This line causes error message "Package xcolor Error: Undefined color `RED'".
% If this line is removed, or replaced by \pagestyle{empty}, everything goes all right.
% Does that mean the fancy style and xcolor can not go together?  

\begin{document}
\section{\color{red}AAA\hrule} %Removing "\color{red}" outside of \section causes the section number also be colored red, I only want the section text is in red.
section
\end{document}

答案1

这不是由fancyhdr标准 LaTeX 类引起的,而是由标准 LaTeX 类引起的。这些类以适用于它们的方式定义标题\MakeUppercase。这会将标题中的所有内容(包括“红色”)大写。为了表明这不是fancyhdrs 的错误,请fancyhdr从 中删除\usepackage并改用\pagestyle{headings}。它将给出相同的错误。

正如@UlrikeFischer 所说,您不应该将颜色直接放在章节标题中。这并不被禁止,但这是一种不好的做法,正如您的示例所示。

如果您不想听从 Ulrike 的建议使用类似的东西,titlesec有两种方法可以解决它。但请注意,您可能仍会遇到其他问题。例如,您的\hrule意志会干扰fancyhdrs \headrule

  1. 定义REDred\colorlet{RED}{red}
  2. \sectionmark通过重新定义或使用fancyhdrs删除大写字母\nouppercase。这将导致您的页面标题不为大写。当然,如果已经全部为大写,您将不会注意到这一点。
\documentclass{article}
\usepackage{xcolor,fancyhdr}
%\colorlet{RED}{red} % not necessary with \nouppercase

\pagestyle{fancy}
\fancyhead[R]{\nouppercase{\leftmark}}

\begin{document}
\section{\color{red}AAA\hrule} %Removing "\color{red}" outside of \section causes the section number also be colored red, I only want the section text is in red.
section
\end{document}

相关内容