在 Latex 附录中使用 \setcounter{table}{0} 时表格引用无法正常工作

在 Latex 附录中使用 \setcounter{table}{0} 时表格引用无法正常工作

我正在尝试修复我的乳胶文档的问题,需要帮助。

我在 Latex 中使用\documentclass[12pt]{article}环境。问题如下:

我已经使用添加了附录

\appendix
\section{Appendix}\label{appendix_a}

并使用

\setcounter{table}{0}
\renewcommand{\thetable}{A\arabic{table}}

生成表名如表 A1 等。

但是,当我使用\setcounter重新开始表格编号时,我的标签会停止工作。但是,如果我删除该\setcounter命令,我的标签可以正常工作,但表格编号会从附录之前我离开的位置继续,即表格 A6 而不是表格 A1。

这是我的最小工作示例:

\documentclass[12pt]{article}

\usepackage{amssymb,amsmath,amsfonts,eurosym,geometry,ulem,graphicx,caption,color,setspace,sectsty,comment,footmisc,caption,pdflscape,subfigure,array,hyperref,booktabs,dcolumn,threeparttable, adjustbox,apacite,dirtytalk,multirow,tabularx,booktabs}

\usepackage{ulem}

\usepackage{float}
\restylefloat{table}


\begin{document}

\section{Section A}

Table \ref{tab_main} is the first table.

\begin{table}
\centering
 \input{Main_Table}
\caption{Main Table}
\label{tab_main}
\end{table}

See table \ref{tab_appendix} in the appendix.

\appendix
\section{Appendix}\label{appendix_a}

%\setcounter{table}{0}
\renewcommand{\thetable}{A\arabic{table}}

\begin{table}
    \input{Appendix_Table}
    \caption{Appendix Table}
\label{tab_appendix}
\end{table}

\end{document}

以下是我使用过的表格:Main_Table.tex

\begin{centre}
\begin{table}[H]
\\[-1.8ex]\hline 
\hline \\[-1.8ex] 
\begin{tabularx}{1\textwidth}{>{\raggedright\arraybackslash}X >{\centering\arraybackslash}X >{\centering\arraybackslash}X >{\centering\arraybackslash}X >{\centering\arraybackslash}X}
\small
& & \multicolumn{3}{c}{Heading} \\ 
\midrule
\multicolumn{2}{l}{Koo} & 1 & 2 & 3 \\ 
\multicolumn{2}{l}{Koo} & 1 & 2 & 3 \\ 
\midrule
\multicolumn{2}{l}{Koo} & A & B & C \\
\multicolumn{2}{l}{Koo} & A & B & C \\
\multicolumn{2}{l}{Koo} & A & B & C \\
\multicolumn{2}{l}{Koo} & A & B & C \\
\tiny
\end{tabularx}
\hline 
\hline \\[-1.8ex]
\smallskip
\multicolumn{5}{l}{\parbox[t]{\textwidth}{\footnotesize{\emph{Notes}: Main}}}
\end{table}
\end{centre}

附录_表格.tex

\begin{centre}
\begin{table}[H]
\\[-1.8ex]\hline 
\hline \\[-1.8ex] 
\begin{tabularx}{1\textwidth}{>{\raggedright\arraybackslash}X >{\centering\arraybackslash}X >{\centering\arraybackslash}X >{\centering\arraybackslash}X >{\centering\arraybackslash}X}
\small
& & \multicolumn{3}{c}{Heading} \\ 
\midrule
\multicolumn{2}{l}{Foo} & 1 & 2 & 3 \\ 
\multicolumn{2}{l}{Foo} & 1 & 2 & 3 \\ 
\midrule
\multicolumn{2}{l}{Foo} & A & B & C \\
\multicolumn{2}{l}{Foo} & A & B & C \\
\multicolumn{2}{l}{Foo} & A & B & C \\
\multicolumn{2}{l}{Foo} & A & B & C \\
\tiny
\end{tabularx}
\hline 
\hline \\[-1.8ex]
\smallskip
\multicolumn{5}{l}{\parbox[t]{\textwidth}{\footnotesize{\emph{Notes}: Appendix}}}
\end{table}
\end{centre}

任何在这方面提供的帮助都将不胜感激。

谢谢

答案1

该指令\setcounter{table}{0}确实不是导致编译问题。

相反,主要问题似乎是您的代码试图将一个table环境嵌套在另一个table环境中。这根本行不通。例如,在主 tex 文件中,可以找到以下代码块:

\begin{table}
\centering
 \input{Main_Table}
\caption{Main Table}
\label{tab_main}
\end{table}

Main_Table.tex

\begin{centre}
\begin{table}[H]
...
\end{table}
\end{centre}

顺便说一下,环境的名称是center,而不是centre

table顺便说一句,将环境封闭在环境中绝对是错误的center。并且,请学会使用\toprule\bottomrule而不是\hline \hline \\[-1.8ex]。最后,该subfigure包已被弃用约 20 年。不要使用它。相反,请使用subfigsubcaption包。

我建议您按照以下示例清理并简化您的代码。

在此处输入图片描述

\documentclass[12pt]{article}

\usepackage{amssymb,amsmath,amsfonts,eurosym,geometry,
graphicx,caption,color,setspace,sectsty,comment,
footmisc,caption,pdflscape,%subfigure, %% 'subfigure' is deprecated
array,hyperref,
booktabs,dcolumn,threeparttable,adjustbox,apacite, 
dirtytalk,multirow,tabularx,booktabs}
\usepackage[normalem]{ulem}
\usepackage{float}
\restylefloat{table}

\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\newcolumntype{C}{>{\centering\arraybackslash}X}

\begin{filecontents}[overwrite]{MainTable.tex}
\begingroup\small
\begin{tabularx}{1\textwidth}{@{} LCCCC @{}}
\toprule
& & \multicolumn{3}{c@{}}{Heading} \\ 
\cmidrule(l){3-5}
\multicolumn{2}{@{}l}{Koo} & 1 & 2 & 3 \\ 
\multicolumn{2}{@{}l}{Koo} & 1 & 2 & 3 \\ 
\midrule
\multicolumn{2}{@{}l}{Koo} & A & B & C \\
\multicolumn{2}{@{}l}{Koo} & A & B & C \\
\multicolumn{2}{@{}l}{Koo} & A & B & C \\
\multicolumn{2}{@{}l}{Koo} & A & B & C \\
\bottomrule
\end{tabularx}

\smallskip
\footnotesize{\emph{Notes}: Main}
\endgroup
\end{filecontents}


\begin{filecontents}[overwrite]{AppendixTable.tex}
\begingroup\small
\begin{tabularx}{1\textwidth}{@{} LCCCC @{}}
\toprule
& & \multicolumn{3}{c@{}}{Heading} \\ 
\cmidrule(l){3-5}
\multicolumn{2}{@{}l}{Foo} & 1 & 2 & 3 \\ 
\multicolumn{2}{@{}l}{Foo} & 1 & 2 & 3 \\ 
\midrule
\multicolumn{2}{@{}l}{Foo} & A & B & C \\
\multicolumn{2}{@{}l}{Foo} & A & B & C \\
\multicolumn{2}{@{}l}{Foo} & A & B & C \\
\multicolumn{2}{@{}l}{Foo} & A & B & C \\
\bottomrule
\end{tabularx}

\smallskip
\footnotesize{\emph{Notes}: Appendix}
\endgroup
\end{filecontents}


\begin{document}

\section{First Section}

Table \ref{tab_main} is the first table.

\begin{table}[h!]
  \input MainTable
  \caption{Main Table}
  \label{tab_main}
\end{table}

\noindent
See table \ref{tab_appendix} in the appendix.


\appendix
\setcounter{table}{0} % <-- this doesn't cause an error
\renewcommand{\thetable}{\thesection\arabic{table}}

\section{Appendix}\label{appendix_a}

\begin{table}[h!]
  \input AppendixTable
  \caption{Appendix Table}
  \label{tab_appendix}
\end{table}

\end{document}

附录解决 OP 的后续评论。感谢您澄清“我的标签停止工作”的意思。我认为您有两种选择可以修复交叉引用练习中的超链接方面。

  • 如果你同意你的表格被编号为A.1A.2等,那么你需要做的就是添加说明

    \counterwithin{table}{section}
    

    紧接着\appendix——当然,放弃指令\setcounter{table}{0}\renewcommand{\thetable}{\thesection\arabic{table}}

  • 如果附录 A 中的表格必须编号为A1A2,我建议你使用说明

    \renewcommand{\thetable}{\thesection\arabic{table}}
    \renewcommand{\theHtable}{\thesection\arabic{table}} % for 'hyperref'
    \setcounter{table}{0}
    

    之后立马\appendix

B如果该文档也有附录,并且该附录还包含table环境,则还需要在附录中的\setcounter{table}{0}第二个命令后运行。\section

答案2

这是 MWE 的一个例子。不幸的是,它没有重现您的问题。

\documentclass[12pt]{article}

%\usepackage{mssymb, dirtytalk}% not found
\usepackage{amsmath,amsfonts,eurosym,geometry,ulem,graphicx,caption,
color,setspace,sectsty,comment,footmisc,caption,pdflscape,subfigure,array,
hyperref,booktabs,dcolumn,threeparttable, adjustbox,apacite,multirow,tabularx,booktabs}

\usepackage{ulem}

\usepackage{float}
\restylefloat{table}

\begin{document}
\section{First}
\begin{table}[H]
\caption{Test 1}
\label{tab_main}
\end{table}

See table \ref{tab_appendix} in the appendix.

\appendix
\setcounter{table}{0}
\renewcommand{\thetable}{A\arabic{table}}

\section{Second}
\begin{table}[H]
\caption{Test 2}
\label{tab_appendix}
\end{table}

\end{document}

相关内容