我正在使用 fancyhdr。我想将页眉和页脚规则设为红色。当我这样做时,线条会稍微收缩,不再是纸张的宽度。
首先,我使用以下代码时的正常结果:
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}
结果看起来很正常,如下所示显示页面的左上角:
研究表明,以下代码会改变颜色,事实也确实如此:
\renewcommand{\headrulewidth}{1pt}
\renewcommand{\headrule}{\hbox to\headwidth{
\color{red}\leaders\hrule height \headrulewidth\hfill}}
但是现在规则的长度比纸张略小,大约半个字符,这当然看起来不太好:
它也比预期的要低,就像在标题文本后有一个空白行,不知道为什么。使用类似代码的红色页脚也太短了,但没有相同的“额外空间”问题。
非常感谢您的建议。
答案1
\headrule
定义\f@nch@initialise
为
\def\headrule{{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi
\hrule\@height\headrulewidth\@width\headwidth
\vskip-\headrulewidth}}%
您的尝试在几个方面都失败了。例如,由于没有保护的端线,线变得更短;但您也得到了两个不必要的垂直空间,一个在线上方,一个在线下方。这是因为\hrule
没有在前后添加行间空间,但\hbox
确实添加了。
省略该fancyplain
部分也许没问题,但我认为省略它没有任何意义。
\documentclass{article}
\usepackage[a6paper]{geometry}% just for a smaller picture
\usepackage{fancyhdr}
\usepackage{xcolor}
\usepackage{lipsum}
\makeatletter
\renewcommand{\headrule}{{% <--- !!!
\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi
\color{red}% <--- !!!
\hrule\@height\headrulewidth\@width\headwidth
\vskip-\headrulewidth
}}
\renewcommand{\footrule}{{% <--- !!!
\if@fancyplain\let\footrulewidth\plainfootrulewidth\fi
\color{red}% <--- !!!
\hrule\@width\headwidth\@height\footrulewidth
}}
\makeatother
\pagestyle{fancy}
\fancyhead{}\fancyhead[R]{\leftmark}
\renewcommand{\footrulewidth}{0.4pt}
\begin{document}
\section{Test}
\lipsum
\end{document}