未编号章节中的每节数字

未编号章节中的每节数字

我正在尝试编写一份包含未编号部分(即\setcounter{secnumdepth}{0})和编号图表的文档,其中图表在部分内编号。我无法让secnumdepthchngcntr一起工作。我能得到的最好的结果是:

\documentclass{article}

\usepackage{chngcntr}
\counterwithin*{figure}{section}
%\setcounter{secnumdepth}{0}    

\begin{document}

\section{Section the First }

\begin{figure}[h]
  \centering
  \caption{Figure A}
\end{figure}

\begin{figure}[h]
  \centering
  \caption{Figure B}
\end{figure}

\section{Section the Second}

\begin{figure}[h]
  \centering
  \caption{Figure C}
\end{figure}

\end{document}

这样图形编号就正确了,但我有章节编号:

在此处输入图片描述

如果我取消注释该行\setcounter{secnumdepth}{0},那么正如我所希望的那样,这些部分将不再编号,但现在这些数字又变成了“counterwithout”:

在此处输入图片描述

如何在未编号的部分中实现每个部分的数字编号?

答案1

计数器不重置的原因在于通用\@sect代码(参见latex.ltx

\def\@sect#1#2#3#4#5#6[#7]#8{%
  \ifnum #2>\c@secnumdepth
    \let\@svsec\@empty
  \else
    \refstepcounter{#1}%
    \protected@edef\@svsec{\@seccntformat{#1}\relax}%
  \fi
....

代码测试节级别 ( #2) 是否大于 的值secnumdepth。如果不是,则节计数器将重新步进,并且计数器重置列表中的所有其他计数器也将重置。

但是,如果计数器没有重置,\counterwithout这里无论如何都是无用的(无论是否使用\counterwithout*或)\counterwithout

一种可能性是强制\section将数字计数器自动设置为零,但是,这也会被使用\section*。不过,我认为这不是一个真正的问题。

\documentclass{article}

%\usepackage{chngcntr}
\usepackage{xpatch}
\setcounter{secnumdepth}{0}    
%\counterwithin*{figure}{section} Not needed any longer


\xpretocmd{\section}{\setcounter{figure}{0}}{}{} % Prepend the \section code with a figure counter reset. 

\begin{document}

\section{Section the First }

\begin{figure}[h]
  \centering
  \caption{Figure A}
\end{figure}

\begin{figure}[h]
  \centering
  \caption{Figure B}
\end{figure}

\section{Section the Second}

\begin{figure}[h]
  \centering
  \caption{Figure C}
\end{figure}

\end{document}

在此处输入图片描述

相关内容