
Ich versuche, ein Dokument mit nicht nummerierten Abschnitten (d. h. \setcounter{secnumdepth}{0}
) und nummerierten Abbildungen zu schreiben, wobei die Abbildungen innerhalb des Abschnitts nummeriert sind. Ich kann secnumdepth
und nicht chngcntr
zusammenarbeiten. Das Beste, was ich hinbekomme, ist:
\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}
Dadurch werden die Abbildungsnummern richtig angezeigt, ich habe jedoch Abschnittsnummern:
Wenn ich die Zeile auskommentiere \setcounter{secnumdepth}{0}
, werden die Abschnitte wie gewünscht unnummeriert, die Abbildungen sind nun jedoch wieder „countwithout“:
Wie erreiche ich eine abschnittsweise Abbildungsnummerierung in nicht nummerierten Abschnitten?
Antwort1
Der Grund, warum die Zähler nicht zurückgesetzt werden, liegt im gemeinsamen \@sect
Code (siehe 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
....
Der Code prüft, ob die Abschnittsebene ( #2
) größer als der Wert von ist secnumdepth
. Wenn dies nicht der Fall ist, wird der Abschnittszähler erneut gestartet und alle anderen Zähler in der Reset-Liste des Zählers werden ebenfalls zurückgesetzt.
Wenn der Zähler jedoch nicht zurückgesetzt wird, \counterwithout
ist dies hier sowieso nutzlos (unabhängig davon, ob \counterwithout*
oder \counterwithout
verwendet wird).
Eine Möglichkeit wäre, \section
den Zahlenzähler automatisch auf Null zu setzen, allerdings würde das \section*
auch mit verwendet werden. Ich denke aber, dass das kein wirkliches Problem ist.
\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}