是否可以抑制指向与超链接相同的页面的超链接?
我目前使用 hyperref 和 cleveref 包来制作超链接,但我找不到任何选项来禁用指向当前页面的超链接(不使用 \ref* 选项)。使用这些包或其他包可以实现这一点吗?或者有人有其他解决方案吗?
答案1
这是一个使用的解决方案etoolbox
和refcount
包装:
\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
使用\ifnumequal
from 来etoolbox
检查当前页码和引用的页码是否相同(使用refcount
以数字而不是字符串的形式获取这些页码)。
如果两者相同,则使用非链接形式\ref*
;否则使用\ref
。这意味着第一页上的引用不可点击,但第二页可以点击。
您需要为使用的任何其他参考命令设置相应的宏,我建议使用不同的名称。(\mypageref
、\myhref
等等)。尝试覆盖宏名称会使hyperref
它成为一个不愉快的包。
我确信您可以类似地采用该解决方案来处理cleverref
。