Suprimir hiperlinks para a página atual

Suprimir hiperlinks para a página atual

É 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 oetoolboxerefcountpacotes:

\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 \myrefusa \ifnumequalfrom etoolboxpara verificar se o número da página atual e o número da página referenciada são iguais (usando refcountpara 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 hyperreftorna o pacote infeliz.

Tenho certeza de que você poderia adaptar esta solução da mesma forma para trabalhar com o cleverref.

informação relacionada