Autoref zu dmath (aus dem breqn-Paket) generiert falschen Linktext

Autoref zu dmath (aus dem breqn-Paket) generiert falschen Linktext

Was ist im folgenden Minimalbeispiel falsch an meiner dmathGleichung? Warum nennt hyperref sie eine Abbildung, während autorefder Linktext für eine Gleichung, die mit definiert ist, korrekt ist?\begin{equation}

\documentclass{amsart}

\usepackage{breqn}
\usepackage[colorlinks]{hyperref}

\begin{document}
\begin{equation}
\label{multiplication}
2 * 1 = 2
\end{equation}

\begin{figure}
\caption{Something strange}
\label{fig}
\end{figure}

\begin{dmath}\label{addition}
1 + 1 = 2
\end{dmath}

I want to talk about \autoref{addition}, not \autoref{fig}.

\begin{equation}
\label{subtraction}
2 - 1 = 1
\end{equation}

And \autoref{multiplication} is not very interesting.  Let me speak of \autoref{addition}.
\end{document}

Das Dokument enthält drei Hyperlinks zu Gleichungen und einen zur Abbildung. In der Ausgabe steht jedoch dreimal „Abbildung“ und nur einmal „Gleichung“. Alle Links zu breqn-Umgebungen sind falsch.

Dabei wird die richtige Zahl verwendet, jedoch der falsche Text, kombiniert zu der so genannten „Abbildung 2“, die im Dokument gar nicht vorkommt.

Das Vertauschen der Zeilenreihenfolge \usepackageändert nichts.

Seltsame Ausgabe, enthält "Abbildung" in drei Links und "Gleichung" in einem, genau gegenüber dem Quellmaterial

Wie verwendet man „ \labelon“ \begin{dmath}und „ \begin{dgroup}-Umgebungen“ richtig?

Antwort1

Die Umgebung dmathdes Pakets breqnwird nicht \refstepcounterfür die Erhöhung des Zählers verwendet equation. Das Paket hyperrefgreift zu \refstepcounter, um einen Hyperanker als Linkziel hinzuzufügen. Daher verwendet Ihr Beispiel den Anker vor ( figure.1) und Sie erhalten die vorherige Abbildung als Linkziel.

Problemumgehung: Die folgenden Beispiel-Patches \eq@setnumberkönnen \refstepcounterstattdessen verwendet werden \stepcounter:

\documentclass{amsart}

\usepackage{breqn}
\usepackage{etoolbox}
\usepackage[colorlinks]{hyperref}

\makeatletter
\patchcmd\eq@setnumber{\stepcounter}{\refstepcounter}{}{%
  \errmessage{Patching \noexpand\eq@setnumber failed}%
}
\makeatother

\begin{document}
\begin{figure}
\caption{Something strange}
\label{fig}
\end{figure}

\begin{figure}
\caption{Something strange}
\label{fig2}
\end{figure}

\begin{dmath}\label{addition}
1 + 1 = 2
\end{dmath}

I want to talk about \autoref{addition}, not \autoref{fig}.

\begin{equation}
\label{subtraction}
2 - 1 = 1
\end{equation}

And \autoref{subtraction} is not very interesting.  Let me speak of
\autoref{addition}.
\end{document}

Ergebnis

verwandte Informationen