
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. secnumdepth
Não consigo chngcntr
trabalhar 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:
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:
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 \@sect
có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 \counterwithout
não)
Uma possibilidade poderia ser forçar \section
a 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}