breqn 패키지의 dmath에 대한 autoref가 잘못된 링크 텍스트를 생성합니다.

breqn 패키지의 dmath에 대한 autoref가 잘못된 링크 텍스트를 생성합니다.

다음 최소 예에서 내 dmath방정식에 어떤 문제가 있습니까? 하이퍼레프가 이를 그림이라고 부르는 이유는 무엇이며, autoref다음으로 정의된 방정식에 대해 올바른 링크 텍스트를 가져오는 것입니다.\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}

이 문서에는 방정식에 대한 하이퍼링크 3개와 그림에 대한 하이퍼링크 1개가 있습니다. 그러나 출력에는 "Figure"가 세 번 표시되고 "Equation"은 한 번만 표시됩니다. breqn 환경에 대한 모든 링크가 잘못되었습니다.

올바른 숫자를 사용하고 있지만 잘못된 텍스트가 결합되어 실제로 문서에 존재하지 않는 "그림 2"를 형성합니다.

줄 순서를 바꿔도 \usepackage아무런 차이가 없습니다.

이상한 출력, 세 개의 링크에 "그림"이 포함되어 있고 하나에 "방정식"이 포함되어 있으며 소스 자료와 정반대입니다.

환경 \label에 사용하는 올바른 방법은 무엇입니까 ?\begin{dmath}\begin{dgroup}

답변1

dmath패키지 환경 은 카운터 증가에 breqn사용되지 않습니다 . 패키지는 하이퍼 앵커를 링크 대상으로 추가하기 위해 연결됩니다 . 따라서 귀하의 예에서는 ( ) 이전에 앵커를 사용 하고 이전 그림을 링크 대상으로 얻습니다.\refstepcounterequationhyperref\refstepcounterfigure.1

해결 방법: 대신 다음 예제 패치를 \eq@setnumber사용하십시오 .\refstepcounter\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}

결과

관련 정보