如果我在 \hyperref 命令中不使用 *,会发生什么问题?

如果我在 \hyperref 命令中不使用 *,会发生什么问题?

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此显示为:

两个超链接均已加框

使用hidelinkscolorlinks似乎可以解决这个问题:

\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构建文档,则会发生相反的情况。latexdvipsps2pdf

相关内容