我在将 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}