
Estoy intentando escribir un documento con secciones no numeradas (es decir, \setcounter{secnumdepth}{0}
) y figuras numeradas, con las figuras numeradas dentro de la sección. No puedo conseguir secnumdepth
y chngcntr
trabajar juntos. Lo mejor que puedo conseguir es:
\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}
Esto hace que los números de las figuras sean correctos, pero tengo números de sección:
Si descomento la línea \setcounter{secnumdepth}{0}
, las secciones no están numeradas, como quiero, pero las figuras ahora están 'contrasin' nuevamente:
¿Cómo logro la numeración de figuras por sección en secciones no numeradas?
Respuesta1
La razón por la cual los contadores no se reinician está en el \@sect
código común (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
....
El código prueba si el nivel de sección ( #2
) es mayor que el valor de secnumdepth
. Si este no es el caso, el contador de la sección se reinicia y todos los demás contadores en la lista de reinicio del contador también se reinician.
Sin embargo, si el contador no se reinicia, \counterwithout
aquí de todos modos es inútil (independientemente de si se usa \counterwithout*
o )\counterwithout
Una posibilidad podría ser forzar \section
el ajuste del contador de cifras a cero automáticamente; sin embargo, esto también se usaría \section*
. Sin embargo, creo que esto no es realmente un problema.
\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}