如何使用 fancyhdr 制作彩色的英尺尺?

如何使用 fancyhdr 制作彩色的英尺尺?

我在网上找到了这个:

\renewcommand{\footrule}{\hbox to \headwidth{\color{red}\leaders\hrule height \footrulewidth\hfill}}

所以我想知道是否还有其他更简单或更容易理解的解决方案。

梅威瑟:

\documentclass[11pt]{article}
\usepackage{color}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{1pt}
\renewcommand{\footrule}{\hbox to \headwidth{\color{red}\leaders\hrule height \footrulewidth\hfill}}

答案1

不确定这是否真的比将颜色添加到脚线定义中更容易,但另一种方法可能是通过之前添加红色并在之后切换回黑色来修补命令:

\documentclass[11pt]{article}
\usepackage{color}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{1pt}

\usepackage{xpatch}
\xapptocmd{\footrule}{\color{black}}{}{}
\xpretocmd{\footrule}{\color{red}}{}{}


\begin{document}

x

\newpage

x

\end{document}

答案2

您使用的定义\footrule实际上与中包含的默认定义略有不同fancyhdr.sty,即:

\def\footrule{{\if@fancyplain\let\footrulewidth\plainfootrulewidth\fi
    \vskip-\footruleskip\vskip-\footrulewidth
    \hrule\@width\headwidth\@height\footrulewidth\vskip\footruleskip}}

其实,并不需要理解这一点就可以使用它。这只是包的一半意义所在。

要使其有颜色,您需要将其放在\color{red}命令的开头,但在紧接之前的括号之后\if@fancyplain。将其放在组内将确保颜色不会超出规则。

我会通过\footnoterule使用etoolbox软件包进行修补来实现这一点。类似这样(我也更喜欢xcolorcolor更好的功能):

\documentclass[11pt]{article}
\usepackage{xcolor}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{1pt}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\footrule}
  {\if@fancyplain}
  {\color{red}\if@fancyplain}
  {}
  {}
\makeatother
\begin{document}
\null
\end{document}

输出

相关内容