在下面的最小範例中,我的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
計數器的增量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}