附录中的图表/列表的正确编号

附录中的图表/列表的正确编号

\section{First Appendix}在我的论文中,我有几个附录,它们通过、等 latex 语句定义\section{Second Appendix}。附录具有以下标题(因此,在目录中显示如下):第一个附录B 第二附录, ETC。

这些附录包括清单和图表。目前,附录中的清单编号如下:

  • A.1 附录 A 的第一个清单
  • A.2 附录 A 的第二次清单
  • B.3 附录 B 的首次列出
  • C.4 附录 C 的首次列出

不过,我希望有以下编号(我认为它更直观,看起来更美观):

  • A.1 附录 A 的第一个清单
  • A.2 附录 A 的第二次清单
  • B.1 附录 B 的首次列出
  • C.1 附录 C 的首次列出

换句话说,\section{Second Appendix}我希望在每次添加新的附录(通过 定义)后重置列表/图表/表格计数器。在论文的主要内容中,这是自动完成的。我不知道为什么附录中没有这种情况。

请注意,我使用以下命令来实现附录中图形/列表/表格的所需编号:

\renewcommand{\thelstlisting}{\Alph{section}.\arabic{lstlisting}}
\renewcommand\thetable{\Alph{section}.\arabic{table}}
\renewcommand\thefigure{\Alph{section}.\arabic{figure}}

答案1

使用以下命令将计数器添加lstlisting到计数器的重置列表中section

\counterwithout*{lstlisting}{section}

——*阻止重新定义\thelstlisting

\makeatletter
\g@addto@macro\appendix{%
  \counterwithin*{lstlisting}{section}%
}
\makeatother

\appendix如果使用的话,这将自动启用这种特定的重置样式。

\documentclass{article}

\usepackage{listings}
\usepackage{chngcntr}

\AtBeginDocument{%
\renewcommand{\thelstlisting}{\Alph{section}.\arabic{lstlisting}}
\renewcommand\thetable{\Alph{section}.\arabic{table}}
\renewcommand\thefigure{\Alph{section}.\arabic{figure}}


}


%Automatically change the driver counter for reset:
\makeatletter
\g@addto@macro\appendix{%
  \counterwithin*{lstlisting}{section}%
}
\makeatother


\begin{document}

\appendix
\section{Foo}

\begin{lstlisting}[language={C},caption={Foo}]
#include<stdio.h>

int main(int argc,char **argv)
{
  printf("Hello World!\n");
  return(0);
}
\end{lstlisting}

\begin{lstlisting}[language={C},caption={Foo}]
#include<stdio.h>

int main(int argc,char **argv)
{
  printf("Hello World!\n");
  return(0);
}

\end{lstlisting}

\section{Foobar}

\begin{lstlisting}[language={C},caption={Foo}]
#include<stdio.h>

int main(int argc,char **argv)
{
  printf("Hello World!\n");
  return(0);
}
\end{lstlisting}

\section{More foobar}

\begin{lstlisting}[language={C},caption={Foo}]
#include<stdio.h>

int main(int argc,char **argv)
{
  printf("Hello World!\n");
  return(0);
}


\end{lstlisting}


\end{document}

在此处输入图片描述

答案2

我刚刚在论文中遇到了同样的“问题”,即非直观的编号。解决方案(灵感来自\appendix) 是在 之后,但在 第一个section和之前重置计数器lstlisting

\renewcommand\thesection{\Alph{section}}
\renewcommand\thelstlisting{\thesection.\arabic{lstlisting}}

\setcounter{lstlisting}{0}

此外,因为我不想手动重置每个计数器section,所以我使用\sectionbreak包中的titlesec,它允许人们在每个部分开始之前定义命令。我添加了计数器重置,如下所示

\newcommand{\sectionbreak}{\setcounter{lstlisting}{0}}

完整的 MWE 会喜欢这个(也感谢@Christian Hupfer)

\documentclass{article}

\usepackage{listings}
\usepackage{titlesec}

\begin{document}
\appendix

\renewcommand\thesection{\Alph{section}}
\renewcommand\thelstlisting{\thesection.\arabic{lstlisting}}

\newcommand{\sectionbreak}{\setcounter{lstlisting}{0}} % to reset counter for listings before each new section

\section{First appendix}
Some text.

\begin{lstlisting}[language={C},caption={Foo1}]
    #include<stdio.h>

    int main(int argc,char **argv)
    {
      printf(``Hello World!\n'');
      return(0);
    }
\end{lstlisting}

\begin{lstlisting}[language={C},caption={Foo2}]
    #include<stdio.h>

    int main(int argc,char **argv)
    {
      printf(``Hello World!\n'');
      return(0);
    }
\end{lstlisting}


\section{Second appendix}
Some more text.

\begin{lstlisting}[language={C},caption={Foo3}]
    #include<stdio.h>

    int main(int argc,char **argv)
    {
      printf(``Hello World!\n'');
      return(0);
    }
\end{lstlisting}

\end{document}

重要的提示:看来你需要一些文字即可section开始\sectionbreak工作。

图像

我不太确定这是一个解决方案还是一个变通方法,但它对我来说是有效的。

顺便说一句,这也适用于figuretable

相关内容