是否可以禁止與超連結指向同一頁面的超連結?
我目前使用 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
frometoolbox
檢查目前頁碼和引用的頁碼是否相同(用於refcount
以數字而不是字串形式取得這些頁碼)。
如果兩者相同,則使用非連結形式\ref*
;否則它使用\ref
.這意味著第一頁的引用不可單擊,但第二頁上的引用可以。
您需要為您使用的任何其他參考命令設定相應的宏,我建議使用不同的名稱。 (\mypageref
,\myhref
, 等等)。嘗試覆蓋巨集名稱會使hyperref
它成為一個不愉快的套件。
我相信您可以類似地調整此解決方案以與cleverref
.