禁止指向當前頁面的超鏈接

禁止指向當前頁面的超鏈接

是否可以禁止與超連結指向同一頁面的超連結?

我目前使用 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使用\ifnumequalfrometoolbox檢查目前頁碼和引用的頁碼是否相同(用於refcount以數字而不是字串形式取得這些頁碼)。

如果兩者相同,則使用非連結形式\ref*;否則它使用\ref.這意味著第一頁的引用不可單擊,但第二頁上的引用可以。

您需要為您使用的任何其他參考命令設定相應的宏,我建議使用不同的名稱。 (\mypageref\myhref, 等等)。嘗試覆蓋巨集名稱會使hyperref它成為一個不愉快的套件。

我相信您可以類似地調整此解決方案以與cleverref.

相關內容