autoref para dmath (do pacote breqn) gera texto de link errado

autoref para dmath (do pacote breqn) gera texto de link errado

No exemplo mínimo a seguir, o que há de errado com minha dmathequação? Por que o hyperref chama isso de Figura, enquanto autorefcorrige o texto do link para uma equação definida com\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}

O documento possui três hiperlinks para equações e um para a figura. Mas a saída diz “Figura” três vezes e “Equação” apenas uma vez. Todos os links para ambientes breqn estão errados.

Ele está usando o número correto, mas o texto errado, combinado para formar a "Figura 2" que na verdade não existe no documento.

Trocar a ordem das \usepackagelinhas não faz diferença.

Saída estranha, contém "Figura" em três links e "Equação" em um, exatamente oposto ao material de origem

Qual é a maneira correta de usar \labelem \begin{dmath}ambientes \begin{dgroup}?

Responder1

O ambiente dmathdo pacote breqnnão se utiliza \refstepcounterpara a incrementação do contador equation. O pacote hyperrefé conectado \refstepcounterpara adicionar uma hiperâncora como destino do link. Portanto, seu exemplo usa a âncora antes de ( figure.1) e você obtém a figura anterior como destino do link.

Solução alternativa: os seguintes patches de exemplo \eq@setnumberdevem ser usados \refstepcounter​​em vez 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

informação relacionada