números por seção em seções não numeradas

números por seção em seções não numeradas

Estou tentando escrever um documento com seções não numeradas (ou seja, \setcounter{secnumdepth}{0}) e figuras numeradas, com as figuras numeradas dentro da seção. secnumdepthNão consigo chngcntrtrabalhar juntos. O melhor que posso conseguir é:

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

Isso acerta os números das figuras, mas tenho números de seção:

insira a descrição da imagem aqui

Se eu descomentar a linha \setcounter{secnumdepth}{0}, as seções não serão numeradas, como eu quero, mas os números agora serão 'contrasem' novamente:

insira a descrição da imagem aqui

Como consigo a numeração de figuras por seção em seções não numeradas?

Responder1

A razão pela qual os contadores não são zerados está no \@sectcódigo comum (ver 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
....

O código testa se o nível da seção ( #2) é maior que o valor de secnumdepth. Se este não for o caso, o contador de seção será reinicializado e todos os outros contadores na lista de reinicialização do contador também serão redefinidos.

No entanto, se o contador não for zerado, \counterwithouté inútil aqui de qualquer maneira (independentemente de ser usado \counterwithout*ou \counterwithoutnão)

Uma possibilidade poderia ser forçar \sectiona definição automática do contador de números para zero, no entanto, isso também seria usado \section*. Acho que isso não é realmente um problema, no entanto.

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

insira a descrição da imagem aqui

informação relacionada