пораздельные цифры в ненумерованных разделах

пораздельные цифры в ненумерованных разделах

Я пытаюсь написать документ с ненумерованными разделами (т.е. \setcounter{secnumdepth}{0}) и пронумерованными рисунками, с рисунками, пронумерованными внутри раздела. Я не могу заставить secnumdepthи chngcntrработать вместе. Лучшее, что я могу сделать, это:

\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}

введите описание изображения здесь

Связанный контент