Suprimir hipervínculos a la página actual

Suprimir hipervínculos a la página actual

¿Es posible suprimir los hipervínculos que apuntan a la misma página que el hipervínculo?

Actualmente uso los paquetes hyperref y Cleveref para los hipervínculos, pero no encuentro ninguna opción para deshabilitar los hipervínculos que apuntan a la página actual (sin usar la opción \ref*). ¿Es esto posible con estos o cualquier otro paquete, o alguien tiene alguna otra solución?

Respuesta1

Aquí hay una solución usando eletoolboxyrefcountpaquetes:

\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}

El comando \myrefusa \ifnumequalfrom etoolboxpara verificar si el número de página actual y el número de página referenciado son los mismos (usando refcountpara obtener estos números de página como números en lugar de cadenas).

Si los dos son iguales, entonces utiliza la forma no vinculada \ref*; en caso contrario se utiliza \ref. Esto significa que no se puede hacer clic en la referencia de la primera página, pero sí en la segunda.

Necesitará configurar las macros correspondientes para cualquier otro comando de referencia que use, y sugeriría usar nombres diferentes. ( \mypageref, \myhref, etcétera). Intentar sobrescribir los nombres de las macros hyperreflo convierte en un paquete infeliz.

Estoy seguro de que podrías adaptar esta solución de manera similar para que funcione con cleverref.

información relacionada