¿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 eletoolbox
yrefcount
paquetes:
\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 \myref
usa \ifnumequal
from etoolbox
para verificar si el número de página actual y el número de página referenciado son los mismos (usando refcount
para 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 hyperref
lo convierte en un paquete infeliz.
Estoy seguro de que podrías adaptar esta solución de manera similar para que funcione con cleverref
.