Hyperlinks zur aktuellen Seite unterdrücken

Hyperlinks zur aktuellen Seite unterdrücken

Ist es möglich, Hyperlinks zu unterdrücken, die auf dieselbe Seite wie der Hyperlink verweisen?

Ich verwende derzeit die Pakete hyperref und cleveref für die Hyperlinks, finde aber keine Option zum Deaktivieren von Hyperlinks, die auf die aktuelle Seite verweisen (ohne die Option \ref* zu verwenden). Ist dies mit diesen oder anderen Paketen möglich, oder hat jemand eine andere Lösung?

Antwort1

Hier ist eine Lösung mit demetoolboxUndrefcountPakete:

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

Der Befehl \myrefüberprüft \ifnumequalmithilfe von „from“ etoolbox, ob die aktuelle Seitenzahl und die referenzierte Seitenzahl identisch sind (mithilfe von „from“, refcountum diese Seitenzahlen als Zahlen und nicht als Zeichenfolgen abzurufen).

Wenn beide gleich sind, wird die unverlinkte Form verwendet \ref*, andernfalls \ref. Das bedeutet, dass der Verweis auf der ersten Seite nicht anklickbar ist, der auf der zweiten Seite jedoch schon.

Sie müssen entsprechende Makros für alle anderen Referenzbefehle einrichten, die Sie verwenden, und ich würde vorschlagen, andere Namen zu verwenden. ( \mypageref, \myhrefusw.). Der Versuch, Makronamen zu überschreiben, hyperrefmacht das Paket unglücklich.

Ich bin sicher, dass Sie diese Lösung entsprechend anpassen können, damit sie mit funktioniert cleverref.

verwandte Informationen