fancyhdr、truncate 和 xcolor 包之间的冲突

fancyhdr、truncate 和 xcolor 包之间的冲突

使用此代码:

\documentclass[12pt,letterpaper,twoside,openright]{report}
\usepackage{xcolor}
\usepackage{fourier}
\usepackage[fit, breakwords]{truncate}

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead{}
\renewcommand{\chaptermark}[1]{\markboth{\small\textsc{\color{blue}{\thechapter.\ #1}}}{}}
\renewcommand{\sectionmark}[1]{\markright{\small\textsc{\color{blue}{\thesection.\ #1}}}{}}
\fancyhead[RE]{\truncate{0.9 \textwidth}{\leftmark}}
\fancyhead[LO]{\truncate{0.9 \textwidth}{\rightmark}}
\fancyhead[LE,RO]{\small\color{blue}\textsc{\thepage}}
\fancyfoot{}
\renewcommand\headrule{\color{blue}%
    \rule{6.4cm}{.4pt}%
    \raisebox{-2.1pt}[10pt][10pt]{\quad\decofourleft\decotwo\decofourright\quad}%
    \rule{6.4cm}{.4pt}}

\usepackage{blindtext}
\begin{document}
    \chapter{This is a chapter title}
    \section{This is a section title}
    \Blindtext
    \section{This is a a very long section title that employs three lines of text.
             This is a a very long section title that employs three lines of text.} 
    \Blindtext
\end{document}

我遇到了图中所示的问题:在彩色标题中截断的长标题之后,文本的颜色也会发生变化。我希望它保持黑色。

颜色问题

答案1

这不是fancyhdr问题。

正如@daleif所说,你不应该把\color命令放在\chaptermark\sectionmark我认为发生的情况是,在 TeX 输出\color中写入的命令\mark泄漏到了其余输出中。

更新:经过一些实验,我发现问题是由命令\color内部的命令引起的\truncate。由于某种原因\truncate导致\color命令脱离自身(可能是因为它切断了在最后重置颜色堆栈的内部命令)。因此命令\color应该在命令之外\truncate

换句话说:(1)不要使用\color在标记中使用命令。(2)不要在参数\color中使用命令\truncate

这是您文档的更正版本。我做了以下更正:

  • \color命令从...marks 移至标题
  • 改变了\headheight,并对 做了相应修改 \textheight
  • 太长\headrule了。我将显式的 改为\rule\hfillrule这样它们就会自动获得正确的长度。
  • 我把\color命令放在了 之外\truncate。见上文。
\documentclass[12pt,letterpaper,twoside,openright]{report}
\usepackage{xcolor}
\usepackage{fourier}
\usepackage[fit, breakwords]{truncate}

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead{}
\renewcommand{\chaptermark}[1]{\markboth{\thechapter.\ #1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection.\ #1}}
\fancyhead[RE]{\color{blue}\truncate{0.9 \textwidth}{\small\textsc{\leftmark}}}
\fancyhead[LO]{\color{blue}\truncate{0.9 \textwidth}{\small\textsc{\rightmark}}}
\fancyhead[LE,RO]{\color{blue}\small\textsc{\thepage}}
\fancyfoot{}
\renewcommand\headrule{\color{blue}%
    \hrulefill
    \raisebox{-2.1pt}[10pt][10pt]{\quad\decofourleft\decotwo\decofourright\quad}%
    \hrulefill}

\usepackage{blindtext}
\begin{document}
    \chapter{This is a chapter title}
    \section{This is a section title}
    \Blindtext
    \section{This is a a very long section title that employs three lines of text.
             This is a a very long section title that employs three lines of text.} 
    \Blindtext
\end{document}

在此处输入图片描述

相关内容