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}

文档中有三个指向方程的超链接和一个指向图形的超链接。但输出显示“图形”三次,而“方程”仅一次。指向 breqn 环境的所有链接都是错误的。

它使用了正确的数字,但使用了错误的文本,组合形成了文档中实际上不存在的“图 2”。

交换行的顺序\usepackage没有什么区别。

奇怪的输出,三个链接中包含“图形”,一个链接中包含“公式”,与源材料完全相反

\label\begin{dmath}和环境下正确的使用方法是什么\begin{dgroup}

答案1

dmath包的环境breqn不用于\refstepcounter计数器的递增equation。包hyperref挂钩\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}

结果

相关内容