为什么使用 \numberwithin 时,方程式和表格的超链接工作方式不同?

为什么使用 \numberwithin 时,方程式和表格的超链接工作方式不同?

这是一个关于幕后发生了什么的问题,因为我已经知道一些获得所需输出的方法。我的问题是,numberwithin/hyperref 组合对方程式和表格的行为不同,原因是什么。也就是说,以下代码存在表 3.1 的超链接实际上指向表 2.1 的问题。但方程式 3.1 的超链接正确地指向方程式 3.1。我知道可以通过将 \numberwithin 命令移到 \usepackage{hyperref} 之后(或通过其他方法)来解决这个问题。但我不明白为什么以下代码对方程式和表格的行为不同,我想知道这是否是一些更普遍的事情的一个例子,我应该了解一下。(La)TeX 处理方程式和表格的方式是否有一些通用的不同之处?

\documentclass{amsart}
\usepackage{amsmath}

\numberwithin{equation}{section}
\numberwithin{table}{section}

\usepackage[colorlinks]{hyperref}

\begin{document}

\section{Introduction}

Cite equations \eqref{eq1} and \eqref{eq2}, and Tables \ref{table1} and \ref{table2}.

\newpage

\section{Body}

\begin{equation}\label{eq1}
2+2=4
\end{equation}

\begin{table}[htbp]
\caption{}
\label{table1}
\begin{tabular}{|c|c|}
\hline
1&2 \\ \hline
3&4 \\ \hline
\end{tabular}
\end{table}

\newpage
\section{Conclusion}

\begin{equation}\label{eq2}
4+4=8
\end{equation}

\begin{table}[htbp]
\caption{}
\label{table2}
\begin{tabular}{|c|c|}
\hline
5&6 \\ \hline
7&8 \\ \hline
\end{tabular}
\end{table}

\end{document}

答案1

您会收到来自 pdftex 的有关目标名称重复的警告:

pdfTeX warning (ext4): destination with the same identifier (name{table.1}) has
 been already used, duplicate ignored

原因是 hyperref 假定表具有唯一编号,并为目标创建table.1

如果移动\numberwithin{table}{section}后面的超引用,超引用也可以启动并调整目标名称(然后它将使用table.1.1table.2.1)。

另一种方法是手动调整目的地名称:

\renewcommand\theHtable{\thetable}

方程式有所不同,因为历史上某个时候 hyperref 认为无论如何添加节号都是更安全的。因此它包含定义

\providecommand\theHequation{\theHsection.\arabic{equation}

相关内容