autoref a dmath (del paquete breqn) genera un texto de enlace incorrecto

autoref a dmath (del paquete breqn) genera un texto de enlace incorrecto

En el siguiente ejemplo mínimo, ¿qué hay de malo en mi dmathecuación? ¿Por qué Hyperref lo llama Figura, mientras que autorefobtiene el texto del enlace correcto para una ecuación definida con\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}

El documento tiene tres hipervínculos a las ecuaciones y uno a la figura. Pero el resultado dice "Figura" tres veces y "Ecuación" sólo una vez. Todos los enlaces a entornos breqn son incorrectos.

Está utilizando el número correcto, pero el texto incorrecto, combinado para formar la "Figura 2" que en realidad no existe en el documento.

Cambiar el orden de \usepackagelas líneas no hace ninguna diferencia.

Resultado extraño, contiene "Figura" en tres enlaces y "Ecuación" en uno, exactamente opuesto al material original.

¿Cuál es la forma correcta de utilizarlo \labelen entornos \begin{dmath}y \begin{dgroup}?

Respuesta1

El entorno dmathdel paquete breqnno se utiliza \refstepcounterpara el incremento del contador equation. El paquete hyperrefse engancha \refstepcounterpara agregar un hiperancla como destino del enlace. Por lo tanto, su ejemplo utiliza el ancla antes de ( figure.1) y obtiene la figura anterior como destino del enlace.

\eq@setnumberSolución alternativa: se deben utilizar los siguientes parches de ejemplo \refstepcounteren lugar de \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}

Resultado

información relacionada