autoref 到 dmath(來自 breqn 套件)產生錯誤的連結文本

autoref 到 dmath(來自 breqn 套件)產生錯誤的連結文本

在下面的最小範例中,我的dmath方程式有什麼問題?為什麼 hyperref 稱之為“圖形”,而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}

該文件具有三個到方程式的超連結和一個到圖的超連結。但輸出顯示「Figure」三次,「Equation」僅顯示一次。所有到 breqn 環境的連結都是錯誤的。

它使用了正確的數字,但使用了錯誤的文本,組合在一起形成了文件中實際不存在的「圖 2」。

交換行的順序\usepackage沒有什麼差別。

奇怪的輸出,在三個連結中包含“圖形”,在一個連結中包含“方程式”,與來源材料完全相反

\label正確的使用方法\begin{dmath}\begin{dgroup}環境是什麼?

答案1

dmath包的環境breqn不用於\refstepcounter計數器的增量equationhyperref將掛鉤打包\refstepcounter以新增超級錨點作為連結目標。因此,您的範例在 ( ) 之前使用錨點figure.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}

結果

相關內容