根据章节和小节编号创建计数器

根据章节和小节编号创建计数器

我如何创建一个计数器,当在某个部分下使用时,按如下方式进行计数

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}

相关内容