É possível suprimir hiperlinks que apontam para a mesma página do hiperlink?
Atualmente uso os pacotes hyperref e intelligentef para os hiperlinks, mas não encontro nenhuma opção para desativar os hiperlinks que apontam para a página atual (sem usar a opção \ref*). Isso é possível com estes ou quaisquer outros pacotes, ou alguém tem alguma outra solução?
Responder1
Aqui está uma solução usando oetoolbox
erefcount
pacotes:
\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}
O comando \myref
usa \ifnumequal
from etoolbox
para verificar se o número da página atual e o número da página referenciada são iguais (usando refcount
para obter esses números de página como números em vez de strings).
Se os dois forem iguais, ele usa o formulário desvinculado \ref*
; caso contrário, ele usa \ref
. Isso significa que a referência na primeira página não é clicável, mas a segunda página é.
Você precisaria configurar macros correspondentes para quaisquer outros comandos de referência usados, e eu sugiro usar nomes diferentes. ( \mypageref
, \myhref
, e assim por diante). Tentar substituir nomes de macros hyperref
torna o pacote infeliz.
Tenho certeza de que você poderia adaptar esta solução da mesma forma para trabalhar com o cleverref
.