我如何创建一个计数器,当在某个部分下使用时,按如下方式进行计数
1.1
1.2
1.3
其中1
是章节编号,在子章节下使用时产生
1.1.1
1.1.2
1.1.3
1
章节编号在哪里1
?小节编号在哪里?
以下不是 MWE。它不能编译,而是用于说明我正在寻找的用途。
\documentclass{article}
\begin{document}
\section{Section 1}
\Counter
% Should produce 1.1
\subsection{Subsection 1}
\Counter
% Should produce 1.1.1
\subsection{Subsection 2}
\Counter
% Should produce 1.2.1
\section{Section 2}
\Counter
% Should produce 2.1
\subsection{Subsection 1}
\Counter
% Should produce 2.1.1
\end{document}
答案1
定义计数器,比如,acntr
在的重置列表中subsection
,并查询\theacntr
当前子部分计数器值是否为0
或其他。
如果0
使用\thesection.\arabic{acntr}
,否则使用\thesubsection.\arabic{acntr}
。
由于\stepcounter{section}
或\refstepcounter{section}
也将重置subsection
计数器,因此至少对于 2015 年 4 月之后的 LaTeX 内核会给出正确的值,否则fixltx2e
必须加载(过时的)包。
\documentclass{article}
\newcounter{acntr}[subsection]
\makeatletter
\renewcommand{\theacntr}{\ifnum0=\c@subsection\thesection.\arabic{acntr}\else\thesubsection.\arabic{acntr}\fi}
\makeatother
\newcommand{\Counter}{%
\refstepcounter{acntr}%
\theacntr%
}
\begin{document}
\section{Section 1}
1.1 $\to$ \Counter
% Should produce 1.1
\subsection{Subsection 1}
1.1.1 $\to$ \Counter
% Should produce 1.1.1
\subsection{Subsection 2}
1.2.1 $\to$ \Counter
% Should produce 1.2.1
\section{Section 2}
2.1 $\to$ \Counter
% Should produce 2.1
\subsection{Subsection 1}
2.1.1 $\to$ \Counter
% Should produce 2.1.1
\end{document}
答案2
下面的内容比 Christian 的回答稍微冗长一些,定义了一个宏,该宏提供了一种条件判断您是否调用了 a\section
或 a 的\subsection
方法,并在需要时使用适当的计数器表示:
\documentclass{article}
\let\oldsection\section
\let\oldsubsection\subsection
\renewcommand{\section}{\def\cursectioning{section}\oldsection}
\renewcommand{\subsection}{\def\cursectioning{subsection}\oldsubsection}
\newcounter{seccounter}[subsection]
\renewcommand{\theseccounter}{\csname the\cursectioning\endcsname.\arabic{seccounter}}
\newcommand{\Counter}{\stepcounter{seccounter}\theseccounter}
\begin{document}
\section{Section 1}
\Counter
% Should produce 1.1
\subsection{Subsection 1}
\Counter
% Should produce 1.1.1
\subsection{Subsection 2}
\Counter
% Should produce 1.2.1
\section{Section 2}
\Counter
% Should produce 2.1
\subsection{Subsection 1}
\Counter
% Should produce 2.1.1
\end{document}