我正在写一本书,其中包含长脚注和许多链接,所有这些都是用 \hyperlink 创建的。如果脚注中的链接文本换行到下一页,则会发生以下情况:脚注中链接文本的颜色在第二页上消失,第二页的整个正文现在链接到目标。这种情况发生在书籍和文章类中,但不发生在 amdbook 和 amsart 类中。有没有可能避免这种情况?
这是一个最小的代码:
\documentclass[11pt]{book}
\usepackage{lipsum}
\usepackage[colorlinks]{hyperref}
%
\begin{document}
\lipsum[2-5]\footnote{\hyperlink{target}{\lipsum[2-3]}}
\lipsum[2-3]
\newpage
\hypertarget{target}{THIS IS THE TARGET!}
%
\end{document}
答案1
为了改善颜色,您可以加载pdfcolfoot
包。
但对于链接,目前还没有好的解决方案。你为 pdftex 跨行和跨页断开链接的能力付出了代价:为了做到这一点,它将起点和终点之间的所有内容添加到链接区域,这包括文本主体。
当前的 texlive 提供了中断链接的命令,对于页眉和页脚,新 PDF 管理中提供了使用它们的代码:https://tex.stackexchange.com/a/578405/2388。
但这不能轻易用于脚注。在你的例子中,例如,可以使用以下方法更正链接
\documentclass[11pt]{book}
\usepackage{lipsum}
\usepackage[colorlinks]{hyperref}
\usepackage{pdfcolfoot}
\usepackage{etoolbox}
\makeatletter
\patchcmd\@makecol
{\pdfcolfoot@current\unvbox\footins}
{\pdfcolfoot@current\pdfrunninglinkon \unvbox \footins \pdfrunninglinkoff}
{}{\fail}
\makeatletter
\begin{document}
\lipsum[2-5]\footnote{\hyperlink{target}{\lipsum[2-3]}}
\lipsum[2-3]
\newpage
\hypertarget{target}{THIS IS THE TARGET!}
%
\end{document}
但是如果正文中还包含带分页符的链接,则链接目标会混淆,脚注的第二部分会链接到 URL:
\documentclass[11pt]{book}
\usepackage{lipsum}
\usepackage[colorlinks]{hyperref}
\usepackage{pdfcolfoot}
%
\usepackage{etoolbox}
\makeatletter
\patchcmd\@makecol
{\pdfcolfoot@current\unvbox\footins}
{\pdfcolfoot@current\pdfrunninglinkon \unvbox \footins \pdfrunninglinkoff}
{}{\fail}
\makeatletter
\begin{document}
\lipsum[2-3]
\footnote{\hyperlink{target}{\lipsum[1-4]}}%
\href{https://www.latex-project.org}{\lipsum[3-5]}%
\lipsum[2]
\newpage
\hypertarget{target}{THIS IS THE TARGET!}
%
\end{document}
所以这不是一个稳定的解决方案。我怀疑有人能在 pdftex 中修复这个问题。在我看来,需要 luatex 和基于属性的新链接代码。
附注:我非常讨厌包含大量大链接区域的文档。我经常在触摸屏上阅读,如果一个人只想滚动或缩放时触发链接,那就太麻烦了。