我正在尝试修复我的乳胶文档的问题,需要帮助。
我在 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 年。不要使用它。相反,请使用subfig
或subcaption
包。
我建议您按照以下示例清理并简化您的代码。
\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.1
、A.2
等,那么你需要做的就是添加说明\counterwithin{table}{section}
紧接着
\appendix
——当然,放弃指令\setcounter{table}{0}
和\renewcommand{\thetable}{\thesection\arabic{table}}
。如果附录 A 中的表格必须编号为
A1
等A2
,我建议你使用说明\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}