hyperref 与 fancyhdr 结合使用时 colorlinks=true 的奇怪行为

hyperref 与 fancyhdr 结合使用时 colorlinks=true 的奇怪行为

我发现了一些看起来像是错误的东西hyperref,即,我在页面底部添加了可点击的标签fancyhdr(请参阅tex.stackexchange.com/q/51574),并且中的一个选项hypersetyp,它应该只是在盒装和彩色链接之间切换,如果我不添加解决方法,它会添加一行额外的行。

编辑:为了更容易找到:这个pdflatex 不会出现此问题(感谢 karlkoeller,见评论)。

梅威瑟:

\documentclass{article}
\usepackage[english]{babel}
\usepackage{fancyhdr}
\usepackage{hyperref}
\hypersetup{
    colorlinks=true, % false: boxed links; true: colored links
    linkcolor=black  % color of internal links
}

\pagestyle{fancy}
\makeatletter
\renewcommand{\sectionmark}[1]{
  \markboth{\protect\hyperlink{\@currentHref}{\thesection.\ #1}}{}
}
% writes section title to \leftmark; see fancyhdr documentation. The hyperlink-construct
% is so that the fancyhdr is clickable - \@currentHref contains current link
\makeatother
\lfoot{\leftmark}\cfoot{}\rfoot{Page \thepage}
\lhead{}\chead{}\rhead{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0.4pt}

\begin{document}
\section{Test}
\end{document}

如果colorlinks=true被注释掉,那么花哨的页脚中的附加行就会消失,就像\sectionmark定义略有不同的情况一样:

\renewcommand{\sectionmark}[1]{
  \markboth{\hspace{0cm}\protect\hyperlink{\@currentHref}{\thesection.\ #1}}{}
}

我不知道我是否犯了一个明显的错误,但对我来说,-optioncolorlinks不应该这样做。

编辑:我正在使用机构机器,可能没有所有东西的最新版本,但出于这个原因,我不久前要求更新所有内容,但结果没有改变。编辑 2:收到 IT 部门的回复,根据 CTAN,fancyhdr 和 hyperref 是最新的。

下面是一个图片比较(用普通 LaTeX 和 dvi2pdf 编译): 无需额外的线路

加上附加行

答案1

使垂直模式下的颜色特效不影响文本的位置是一件好事,但在 TeX 中很难做到。如果可能的话,最好将它们保持在水平模式(例如\textcolor而不是\color),或者在这里您可以强制段落以或开头,\leavevmode就像您所做的\hspace{0pt}那样,虽然效率稍低,但在这里可以完成相同的工作。您可能会争辩说 hyperref 应该为您做到这一点,但如果我在维护 hyperref,我会谨慎地更改可能改变曾经生成的每个超链接 latex 文档的内容:-)

相关内容