在剥离了数百行代码以达到这个 MWE 之后,我发现我的“A «box» 应该在这里”似乎是由与\renewcommand{\headrule}
结合引起的fancyhdr
。
\leaders
此外,如果我从规范中删除,错误就会消失\box
。
这个重新定义是我在某个时候拼凑起来的,无疑是受到一些我不完全理解的例子的启发。
我希望能够了解为什么会出现这个错误,以及如何重写它以消除该错误。
\documentclass[12pt,final]{article}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\headrule}{%
\hbox to\headwidth{\leaders\rule[5pt]{\headwidth}{0.4pt}\hfill}%
% \hbox to\headwidth{\rule[5pt]{\headwidth}{0.4pt}\hfill}%
}%
\begin{document}
Hello, world.
\end{document}
PS,错误信息实际上不是“«box»”,而是应该用小于号和大于号替换“和”。当我在这里输入它们时,它们被拒绝了。
答案1
\hbox to \headwidth
请注意,该规则是在垂直模式下设置的,这就是您在使用(类似于\makebox[\headwidth]
)方法时遇到问题的地方。
这是什么fancyhdr
看起来\headrule
像(使用\show\headrule
):
\def\headrule{{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi
\hrule\@height\headrulewidth\@width\headwidth
\vskip-\headrulewidth}}
除了插入条件\hrule
和规则厚度不足(垂直)之外。我只需使用类似的东西来复制行为
\makeatletter
\renewcommand{\headrule}{%
\vskip -5pt % Move head rule up by 5pt
\hrule \@height 0.4pt \@width \headwidth % Place head rule
\vskip \dimexpr-0.4pt + 5pt\relax % Remove space inserted by raise and rule
}
\makeatother