列表编号不会重新开始

列表编号不会重新开始

我对列表编号有疑问主题。编号不会重新开始,而是继续。

\AtBeginDocument{%
  \renewcommand{\thelstlisting}{%
    \ifnum\value{subsection}=0
      \thesection.\arabic{lstlisting}%
    \else
      \ifnum\value{subsubsection}=0
        \thesubsection.\arabic{lstlisting}%
      \else
        \thesubsubsection.\arabic{lstlisting}%
      \fi
    \fi
  }
}

对于小节 4.2.1,它应该从头开始,但它继续,所以我得到 4.2.1.2(因为有一个先前的列表)。

在此处输入图片描述 在此处输入图片描述

答案1

这与我已经建议你回答的问题没有什么不同标题和章节、小节和小小节

唯一的补充是\AtBeginDocument必要的,因为listings在那里定义了计数器。

\documentclass{article}
\usepackage{listings,chngcntr}

\AtBeginDocument{%
  \counterwithin*{lstlisting}{section}
  \counterwithin*{lstlisting}{subsection}
  \counterwithin*{lstlisting}{subsubsection}
  \renewcommand{\thelstlisting}{%
    \ifnum\value{subsection}=0
      \thesection.\arabic{lstlisting}%
    \else
      \ifnum\value{subsubsection}=0
        \thesubsection.\arabic{lstlisting}%
      \else
        \thesubsubsection.\arabic{lstlisting}%
      \fi
    \fi
  }%
}

\begin{document}
\section{A section}
\begin{lstlisting}[caption=Caption]
\caption{section.lstlisting}
\end{lstlisting}
\subsection{A subsection}
\begin{lstlisting}[caption=Caption]
\caption{subsection.lstlisting}
\end{lstlisting}
\begin{lstlisting}[caption=Caption]
\caption{subsection.lstlisting}
\end{lstlisting}
\subsubsection{A subsubsection}
\begin{lstlisting}[caption=Caption]
\caption{subsubsection.lstlisting}
\end{lstlisting}
\subsection{A subsection}
\begin{lstlisting}[caption=Caption]
\caption{subsection.lstlisting}
\end{lstlisting}
\section{A section}
\begin{lstlisting}[caption=Caption]
\caption{section.lstlisting}
\end{lstlisting}

\end{document}

在此处输入图片描述

答案2

我找到了答案,这要感谢@LudovicC. 发布的链接。由于我的所有列表都在里面,所以subsubsections我在序言中添加了这行代码

\AtBeginDocument{\counterwithin{lstlisting}{subsubsection}}

我不认为这是正确的解决方案,但就我而言它有效!

相关内容