В следующем минимальном примере, что не так с моим dmath
уравнением? Почему hyperref называет его Figure, в то время как 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}