即使未指定,也始终以 1 开始节标签

即使未指定,也始终以 1 开始节标签

我想确保1无论是否指定了章节,章节编号始终从 开始。例如,以下代码片段将生成子章节编号为0.1。目标是生成子1.1章节编号,并遵循子章节编号、图表/表格编号等。

\documentclass[12pt]{article}

\begin{document}
% \section{The beginning}
\subsection{Getting Started}
Some text
\end{document}

答案1

要从任意级别的节开始,并进行任意计数,您必须更改该节级别的计数器(以及每个更高级别,如果有的话)。图表和表格可以以相同的方式操作。

根据您的具体需求,您可以使用 将计数器设置为固定数字,\setcounter或者使用 将某个数字添加到计数器 x 次(求和)\addtocounter。示例:

\documentclass{article}
\begin{document}

\section{Whatever}

\addtocounter{section}{1}
\setcounter{subsection}{5}
\setcounter{subsubsection}{8}

\subsubsection{Getting finished}

Some text

\end{document}

这会产生2.5.9但在该设置之前添加部分,计数器将为3.5.94.5.9依此类推。

答案2

(在原帖者阐明了他/她想要实现的目标后,我重写了我的答案。)

  • 如果有\section第一个命令之前的指令,\subsection必须注意“不要做任何特殊的事情” - 特别是不要增加计数器section

  • 相反,如果有 \section第一个\subsection命令之前的指令,section 柜台设置为。因此,即使没有执行任何指令1,分配给第一个子节级标题的编号也是 。根据设计,这不仅会影响子节的编号,还会影响和环境的标题编号。LaTeX 将第一个“真实”节标题的编号设置为。1.1\sectionfiguretable2

\section请注意,尽管此时尚未发出任何指令,但以下屏幕截图中的小节级标题和两个标题的编号为“1.1” 。

在此处输入图片描述

\documentclass{article}

\counterwithin{table}{section}  % per the OP's write-up
\counterwithin{figure}{section}

\usepackage{xpatch} % for '\pretocmd' macro
\pretocmd{\subsection}{\ifnum\value{section}=0\stepcounter{section}\fi}{}{}
\pretocmd{\caption}{\ifnum\value{section}=0\stepcounter{section}\fi}{}{}

\begin{document}

%\section{The beginning} % <-- uncomment to revert to standard setup
\subsection{Getting started}
\begin{figure}[h] \caption{First figure} \end{figure}
\begin{table}[h] \caption{First table} \end{table}

\section{The end}
\subsection{Leaving}
\begin{figure}[h] \caption{Second figure} \end{figure}
\begin{table}[h!] \caption{Second table} \end{table}

\end{document}

相关内容