wikibooks 上的 Latex 手册指出您应该使用\hyperref
以下命令:
We use \hyperref[mainlemma]{lemma \ref*{mainlemma} }.
其中“mainlemma”是标签名称。然后它说:
请注意
*
避免\ref
嵌套超链接。
我在我的文档中实现了这一行,一次有,一次没有*
,我没有注意到任何区别。
那么不使用会有什么危害呢*
?
答案1
关键问题是,如果不使用带星号的版本,文档最终会带有嵌套超链接。由于 PDF 查看器没有一致的方式来处理嵌套超链接,这可能会导致意外结果。
为了说明这一点,请考虑 MWE:
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\section{Sample}
\label{sample}
\section{Another Sample}
\hyperref[sample]{section~\ref{sample}}
\end{document}
在okular
此显示为:
使用hidelinks
或colorlinks
似乎可以解决这个问题:
\documentclass{article}
\usepackage[colorlinks]{hyperref}
\begin{document}
\section{Sample}
\label{sample}
\section{Another Sample}
\hyperref[sample]{section~\ref{sample}}
\end{document}
这okular
看起来像:
但如果我更改okular
的辅助功能设置,使链接有边框,则它会显示为
由于内部和外部链接都指向同一位置,因此实际的超链接okular
会将您发送到同一位置,但这可能会使其他 PDF 查看者感到困惑。如果内部链接指向与外部链接不同的位置,则会产生更大的混乱。当\ref
在目录中的分段命令中使用时,可能会发生这种情况。
例如:
\documentclass{article}
\usepackage[colorlinks]{hyperref}
\begin{document}
\tableofcontents
\section{Sample}
\label{sample}
\section{Another Sample Following on from section \ref{sample}}
\end{document}
现在目录有一个嵌套链接,但该链接将带您到哪里取决于 PDF 查看器以及您是使用 PDF 还是 DVI 格式来生成文档。如果我使用 进行编译pdflatex
,然后使用 查看文档,okular
如果我单击内部链接,我会被发送到第 2 节,但如果我在内部链接中查看文档,我会被发送到第 1 节。如果我使用++evince
构建文档,则会发生相反的情况。latex
dvips
ps2pdf