禁止指向当前页面的超链接

禁止指向当前页面的超链接

是否可以抑制指向与超链接相同的页面的超链接?

我目前使用 hyperref 和 cleveref 包来制作超链接,但我找不到任何选项来禁用指向当前页面的超链接(不使用 \ref* 选项)。使用这些包或其他包可以实现这一点吗?或者有人有其他解决方案吗?

答案1

这是一个使用的解决方案etoolboxrefcount包装:

\documentclass{article}

\usepackage{etoolbox}
\usepackage{hyperref}
\usepackage{refcount}

\newcommand*{\myref}[1]{
  \ifnumequal{\thepage}{\getpagerefnumber{#1}}
    {\ref*{#1}}{\ref{#1}}
}

\begin{document}

\begin{figure}
  \caption{An empty figure}
  \label{fig:empty}
\end{figure}

This is a reference on the same page.~[\myref{fig:empty}]

  \pagebreak

This is a reference on a different page.~[\myref{fig:empty}]

\end{document}

该命令\myref使用\ifnumequalfrom 来etoolbox检查当前页码和引用的页码是否相同(使用refcount以数字而不是字符串的形式获取这些页码)。

如果两者相同,则使用非链接形式\ref*;否则使用\ref。这意味着第一页上的引用不可点击,但第二页可以点击。

您需要为使用的任何其他参考命令设置相应的宏,我建议使用不同的名称。(\mypageref\myhref等等)。尝试覆盖宏名称会使hyperref它成为一个不愉快的包。

我确信您可以类似地采用该解决方案来处理cleverref

相关内容