![结合使用 amsmath、hyperref 和 \tag 时引用不正确](https://linux22.com/image/300950/%E7%BB%93%E5%90%88%E4%BD%BF%E7%94%A8%20amsmath%E3%80%81hyperref%20%E5%92%8C%20%5Ctag%20%E6%97%B6%E5%BC%95%E7%94%A8%E4%B8%8D%E6%AD%A3%E7%A1%AE.png)
在以下 MWE 中,我收到一条警告,并且引用指向错误的元素。
\documentclass{article}
\usepackage{hyperref}
\usepackage{amsmath}
\begin{document}
\begin{equation}
\label{eq1}
\end{equation}
\begin{equation}\tag{\ref*{eq1}b}
\label{eq1b}
\end{equation}
\begin{equation}
\label{eq2}
\end{equation}
This reference is incorrect: \ref{eq2} points to 1b. Also, this warnings appear:
\begin{verbatim}
pdfTeX warning (ext4): destination with the same identifier
(name{equation.0.2}) has been already used, duplicate ignored
\end{verbatim}
\end{document}
在此变体中equation*
,后一个问题已修复,但又引入了新问题。之前没问题的链接现在出错了:
\documentclass{article}
\usepackage{hyperref}
\usepackage{amsmath}
\begin{document}
\begin{equation}
\label{eq1}
\end{equation}
\begin{equation*}\tag{\ref*{eq1}b}
\label{eq1b}
\end{equation*}
\begin{equation}
\label{eq2}
\end{equation}
This reference is incorrect: \ref{eq1b} points to 1. No warning.
\end{document}
我怎样才能使所有参考资料正确无误?
这些问题类似,但没有帮助:
答案1
正如在回答中所述如果方程式带有 \tag 并且使用了 cleveref,则 Hyperref 会跳转到错误的方程式由 CyberSingularity 提供,应使用星号环境。如果您执行此操作并在所有链接正确hyperref
后加载:amsmath
\documentclass{article}
\usepackage{amsmath}
\usepackage{hyperref}
\begin{document}
Some text
\begin{equation}
0=0 \label{eq1}
\end{equation}
other text
\begin{equation*}\tag{\ref*{eq1}b}
1=1 \label{eq1b}
\end{equation*}
other text
\begin{equation}
2=2 \label{eq2}
\end{equation}
These references are correct: \ref{eq1}, \ref{eq1b} and \ref{eq2}.
\end{document}
请注意,这仅适用于equation
(这可能是 Heiko Oberdiek 提出的功能请求,以便\tag
在 中正常工作equation
)。对于align
和其他多行环境,没有问题:
\documentclass{article}
\usepackage{amsmath}
\usepackage{hyperref}
\begin{document}
\begin{align}
0&=0 \label{eq1} \\
1&=1 \tag{\ref*{eq1}b} \label{eq1b} \\
2&=2 \label{eq2}
\end{align}
These references are correct: \ref{eq1}, \ref{eq1b} and \ref{eq2}.
\end{document}