我正在努力将表引用与 endfloat 和 longtable 结合起来。不知何故,它们引用的不是正确的表。
我收到以下报告的问题(我认为这就是问题所在):
具有相同标识符(name{table.2})的目标已被使用,重复项已忽略 \relax l.127 \end{longtable} \end{spacing}\end{landscape}
我曾看到有人报告同样的错误,但从未与我正在使用的软件包结合使用。
这是我正在运行的代码:
\documentclass[12pt, a4paper, notitlepage]{article}
\usepackage{ragged2e,array,longtable, afterpage}
\usepackage{lscape,booktabs}
\usepackage{pdflscape}
\usepackage{fullpage}
\usepackage[colorlinks=true,citecolor=blue,linkcolor=blue,urlcolor=green, filecolor=green, plainpages=false]{hyperref}
\usepackage[doublespacing]{setspace} % double spacing
\usepackage[nolists,tablesfirst]{endfloat} % place figures at the end
\newenvironment{ltable}
{\footnotesize\begin{landscape}\begin{spacing}{1}\begin{longtable}}
{\end{longtable}\end{spacing}\end{landscape}}
\DeclareDelayedFloatFlavor*{ltable}{table}
\begin{document}
\begin{titlepage}
THIS IS THE TITLE PAGE
\end{titlepage}
\makeatother
\newpage
\hypersetup{pageanchor=true} % removes "destination with the same identifier (name{page.1})"
%\listoftodos
\section{Introduction}
\begin{table}[h!tb]\centering \caption{Table 1}\label{Tab: 1}
\footnotesize
\begin{spacing}{1}
\begin{tabular}{l r r r}\toprule
Variable & Mean & S.D. & N \\
\end{tabular}
\end{spacing}
\end{table}
\begin{ltable}[l]
{
>{\RaggedRight\arraybackslash}p{3.3cm} >{\RaggedRight\arraybackslash}p{3.3cm} >{\RaggedRight\arraybackslash}p{3.3cm} >{\RaggedRight}p{3.3cm} >{\RaggedRight}p{3.3cm} >{\RaggedRight}p{3.3cm} >{\RaggedRight}p{3.3cm}}
\caption{Table 2}\label{Tab: 2} \\ \toprule
&(1) & (2) & (3) & (4) & (5) & (6)\\
\end{ltable}
Table~\ref{Tab: 1}
Table~\ref{Tab: 2}.
Table~\ref{Tab: A1}.
Table~\ref{Tab: A2}.
\clearpage
% % %APPENDIX % % % % % % % % % % % % %
\processdelayedfloats
\makeatletter
\efloat@restorefloats
\makeatother
\appendix
\renewcommand{\thefigure}{A\arabic{figure}}
\renewcommand{\thepostfigure}{A\arabic{postfigure}}
\setcounter{figure}{0}
\setcounter{postfigure}{0}
\renewcommand{\thetable}{A\arabic{table}}
\renewcommand{\theposttable}{A\arabic{posttable}}
\setcounter{table}{0}
\setcounter{posttable}{0}
\footnotesize\begin{landscape}\begin{spacing}{1}\begin{longtable}{
>{\RaggedRight\arraybackslash}p{3.3cm} >{\RaggedRight\arraybackslash}p{3.3cm} >{\RaggedRight\arraybackslash}p{3.3cm} >{\RaggedRight}p{3.3cm} >{\RaggedRight}p{3.3cm} >{\RaggedRight}p{3.3cm} >{\RaggedRight}p{3.3cm}}
\caption{Table A1}\label{Tab: A1} \\ \toprule
&(1) & (2) & (3) & (4) & (5) & (6)\\
\end{longtable}\end{spacing}\end{landscape}
\newpage
\footnotesize\begin{landscape}\begin{spacing}{1}\begin{longtable}{
>{\RaggedRight\arraybackslash}p{3.3cm} >{\RaggedRight\arraybackslash}p{3.3cm} >{\RaggedRight\arraybackslash}p{3.3cm} >{\RaggedRight}p{3.3cm} >{\RaggedRight}p{3.3cm} >{\RaggedRight}p{3.3cm} >{\RaggedRight}p{3.3cm}}
\caption{Table A2}\label{Tab: A2} \\ \toprule
&(1) & (2) & (3) & (4) & (5) & (6)\\
\end{longtable}\end{spacing}\end{landscape}
\end{document}
我希望此代码适合解决我的问题。我很感激任何帮助。
谢谢你!
答案1
包hyperref
需要唯一的锚点名称。由于计数器有时没有唯一的名称,因此它引入了配套的“计数器”形式\theH<counter>
。那么\the<counter>
不必是唯一的,但\theH<counter>
必须如此。
示例重新定义了\thetable
,但\theHtable
没有改变。\theHtable
再次使 unique 后,错误消失:
\renewcommand{\thetable}{A\arabic{table}}
\renewcommand*{\theHtable}{A\arabic{table}}