带有超链接的脚注中的标签位置错误

带有超链接的脚注中的标签位置错误

hyperref 包尝试以一种有用的方式处理脚注,但实现似乎有误,我正在寻找修复它的方法。请考虑以下 MWE:

\documentclass{article}
\usepackage{lipsum}
\usepackage{hyperref}

\begin{document}

\lipsum[2-4]\footnote{\lipsum[1]}
\lipsum[5-10]

\end{document}

每当我单击文档中的脚注标记时,它都会将我带到页脚,靠近相关脚注的位置,但注释的第一行不可见 - 好像超链接标签放置得太低(第一行的底部而不是顶部)。我相信应该看到整个脚注,如下所示:

预期行为

然而,我得到的却是(编辑:将其与之前的图片进行比较,这样就更有意义了): 当我点击 MWE 中的脚注时会发生什么

我常用的工具包是 LaTeX+dvips+gs,取决于所需的输出格式。我确保不使用 MWE 的附加参数。没有这样的事(编辑:我在这里犯了一个错误,并注意到了这一点,感谢@Ulrike Fischer)pdfLaTeX 会发生这种情况。我已经用 acroread 和 Evince 检查过了。我没有找到任何可以改变它的包或选项,但我可能只是错过了一些显而易见的东西。任何帮助我都会很感激!

答案1

它看起来相当复杂(@UrlikeFischer 的建议很棒,但对我来说,实现和支持它需要做更多的研究)。暂时,我可以提供一个 hack:

\newcommand{\fnprocesscounter}{\fnsymbol} % \arabic, \fnsymbol, ...
\newcounter{footlabel}
\newcommand{\footlabel}[2][0]{%
    \addtocounter{footnote}{#1}%
    \phantomsection\label{footlabelback\thefootlabel}%
    \renewcommand\thefootnote{}%
    \footnotetext[0]{%
        \renewcommand\thefootnote{\fnprocesscounter{footnote}}%
        \phantomsection\label{footlabelfront\thefootlabel}%
        \hyperref[footlabelback\thefootlabel]{\footnotemark}%
        #2%
    }%
    \renewcommand\thefootnote{\fnprocesscounter{footnote}}%
    \addtocounter{footnote}{-1}%
    \hyperref[footlabelfront\thefootlabel]{\footnotemark}%
    \stepcounter{footlabel}%
}

\fnprocesscounter是可配置的,它使用计数器工作。所呈现的\footlabel命令采用代表额外跳转的可选数字和脚注本身所需的文本。确保使用hyperref和设置hyperfootnotes=false。在预期的情况下,您只有一个对脚注的引用,并且您获得双向超链接。除此之外的任何事情(在某个方向上删除超链接,在其他地方使用 footlabelfrontX/footlabelbackX 标签,...)都取决于您的黑客行为。祝您尽职尽责!

相关内容