如果激活了 \numberwithin{table}{section},则对 longtable 的引用会出错

如果激活了 \numberwithin{table}{section},则对 longtable 的引用会出错

我在将 longtable 包与\numberwithin{table}{section}或一起使用时遇到了一些奇怪的事情\counterwithin{table}{section}:如果 longtable 是某个部分中的第一个表,则无法正确引用它(使用\ref{});相反,引用将指向文档中最后一个部分中的第一个 longtable。请注意,该错误会延续到依赖 longtable 的其他包,例如 tabu (longtabu)。

在寻找解决方案时,我发现辅助文件中第一节长表的条目重复,这就是我怀疑这是一个错误的原因。但是,我的 LaTeX 知识有限,我很高兴被证明是错的。

这是我的 MWE:

\documentclass{article}
\usepackage{amsmath} 
\numberwithin{table}{section}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage[hidelinks]{hyperref}

\begin{document}
Reference to Table \ref{tab:Label1}\\
Reference to Table \ref{tab:Label2}\\

\clearpage
\section{}

\begin{longtable}{ll}
\caption{Caption.}
\label{tab:Label1}\\
\toprule 
\multicolumn{2}{l}{\textbf{Header}}  \\
\midrule 
\endfirsthead
\multicolumn{2}{c}{\begin{footnotesize}\tablename\ \thetable\ -- \textit{Continued from previous page}\end{footnotesize}} \\
\toprule
\multicolumn{2}{l}{\textbf{Header}}  \\
\midrule
\endhead
\bottomrule
\multicolumn{2}{r}{\begin{footnotesize}\textit{Continued on next page}\end{footnotesize}} \\
\endfoot
\bottomrule
\endlastfoot
some variable & some explaination\\
\midrule
some variable & some explaination \\
\end{longtable}

\clearpage
\section{}

\begin{longtable}{ll}
\caption{Caption.}
\label{tab:Label2}\\
\toprule 
\multicolumn{2}{l}{\textbf{Header}}  \\
\midrule 
\endfirsthead
\multicolumn{2}{c}{\begin{footnotesize}\tablename\ \thetable\ -- \textit{Continued from previous page}\end{footnotesize}} \\
\toprule
\multicolumn{2}{l}{\textbf{Header}}  \\
\midrule
\endhead
\bottomrule
\multicolumn{2}{r}{\begin{footnotesize}\textit{Continued on next page}\end{footnotesize}} \\
\endfoot
\bottomrule
\endlastfoot
some variable & some explanation\\
\midrule
some variable & some explanation \\
\end{longtable}

\end{document}

在我的计算机上,两个引用都指向后一个表。

  • 您的计算机是否重复了该错误?
  • 有人知道什么可能导致这个错误吗?
  • 有人知道解决方法吗?

答案1

作为一般规则,应进行设置加载包(有一些例外);这是这种情况:由于hyperref修改了管理计数器的宏,您\numberwithin在加载包之前给出的指令会导致出现问题。

\documentclass{article}
\usepackage{amsmath}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage[hidelinks]{hyperref}

\numberwithin{table}{section}

相关内容