如何在新的部分更改表格编号方案?

如何在新的部分更改表格编号方案?

我正在尝试实现一种样式,根据论文的章节来命名表格和图形,但不知道如何用 LaTeX 来实现。

最后它看起来应该是这样的: 在此处输入图片描述

和我的文件:

\documentclass{article}

\begin{document}

\section{Start}
Start text
\section{Middle}
Middle text
\begin{table}[h]
    \centering
    \begin{tabular}{l}
    first table\\
    \end{tabular}
\caption{A normal table}
\end{table}

\section*{Supplemental}

\begin{table}[h]
    \centering
    \begin{tabular}{l}
        table in supplemental part\\
    \end{tabular}
\caption{This should read: ``Table S1: caption text''}
\end{table}

\end{document}   

我不想永久更改命名,它应该在下一章中正常继续。有没有什么简单的方法可以实现这样的事情?

答案1

以下解决方案不是支持hyperref因为它重新使用与补充表(或图形)相关的计数器。

在此处输入图片描述

\documentclass{article}
\usepackage{titlesec}% http://ctan.org/pkg/titlesec
\newcounter{mytable}\newcounter{myfigure}
\titleformat{\section}% <command>
  [hang]% <shape>
  {\setcounter{mytable}{\value{table}}\setcounter{myfigure}{\value{figure}}% Store table/figure counters
   \setcounter{table}{0}\global\def\thetable{S\arabic{table}}%
   \setcounter{figure}{0}\global\def\thefigure{S\arabic{figure}}%
   \normalfont\Large\bfseries}% <format>
  {\setcounter{table}{\value{mytable}}\setcounter{figure}{\value{myfigure}}% Restore table/figure counters
   \global\def\thetable{\arabic{table}}%
   \global\def\thefigure{\arabic{figure}}%
   \thesection}% <label>
  {2.3ex plus.2ex}% <sep>
  {}% <before code>
  %[]% <after code>
\begin{document}

\tableofcontents
\listoftables

\section{Start}
Start text

\section{Middle}
Middle text
\begin{table}[ht]
    \centering STUFF
\caption{A normal table}
\end{table}

\begin{table}[ht]
    \centering STUFF
\caption{A normal table}
\end{table}

\section*{Supplemental}

\begin{table}[ht]
    \centering SUPPLEMENTAL STUFF
\caption{A supplemental table}
\end{table}

\begin{table}[ht]
    \centering SUPPLEMENTAL STUFF
\caption{A supplemental table}
\end{table}

\section{Last}
End text
\begin{table}[ht]
    \centering STUFF
\caption{A normal table}
\end{table}

\begin{table}[ht]
    \centering STUFF
\caption{A normal table}
\end{table}

\section*{Supplemental}

\begin{table}[ht]
    \centering SUPPLEMENTAL STUFF
\caption{A supplemental table}
\end{table}

\begin{table}[ht]
    \centering SUPPLEMENTAL STUFF
\caption{A supplemental table}
\end{table}

\end{document}

我用过titlesec挂接到\section有条件地执行标题排版的某些部分的分段单元(设置与原始article格式保持相似)。标题的标签和分隔符部分仅在使用时调用\section,因此不会在中“调用”或使用\section*

这个概念是基于将table(and figure) 计数器的当前值存储在mytable( myfigure) 中,之后将其设置为0。然后,仅有的如果您正在使用,则\section其值将被恢复。在这两种情况下,计数器的显示都会更新为前置S或不前置。

答案2

如果我正确理解了您的目的,您打算将表格(和图表?)编号为文本“主体”中从 1 开始的纯整数,并从 1 重新开始编号,但现在以“S”为前缀,一旦您进入文档的补充部分。

您没有指出是否已经定义了一个特殊命令来对文档布局和其他方面的外观进行修改,因此我假设您没有这样做。一个相对干净的方法是定义一个新命令,比如\startsupplement在序言中,并在文档该部分的开头调用此命令。这个新命令可以定义如下:

\newcommand\startsupplement{%
    \makeatletter 
       \setcounter{table}{0}
       \renewcommand{\thetable}{S\arabic\c@table}
       \setcounter{figure}{0}
       \renewcommand{\thefigure}{S\@arabic\c@figure}
    \makeatother}

相关内容