Hyperref、Endfloat、Longtable 和附录的问题

Hyperref、Endfloat、Longtable 和附录的问题

我正在努力将表引用与 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}}

相关内容