文档amsthm
指出:
如果任何定理元素按节编号,并且(在一本书中)章节中的第一个此类元素位于第一节之前,则编号将从上一章继续。在这种情况下,通过在受影响的元素之前调用此命令来重置计数器:
\setcounter{thm}{0}
但是,我运行了以下 MWE
\documentclass[openany]{book}
\usepackage{amsthm}
\theoremstyle{definition}
\newtheorem{dfn}{Definition}[section]
\begin{document}
\chapter{Elio}
\begin{dfn}
content
\end{dfn}
\section{Bach}
\begin{dfn}
content
\end{dfn}
\chapter{Oliver}
\begin{dfn}
content
\end{dfn}
\end{document}
并发现dfn
第二章中是尽管没有使用,但正确编号为 2.0.1 \setcounter{dfn}{0}
。
这里发生了什么?
答案1
AMS 文档没有考虑到 2015 年的改进\stepcounter
latex 格式源(ltcounts.dtx)说:
% \changes{v1.1h}{2015/01/10}{Reset all within counters in one go (latexrelease)}
%
% Rather than resetting the ``within'' counter to zero we set it to
% $-1$ and then run |\stepcounter| that moves it to $0$ and also
% initiates resetting the next level down.
现在,即使“省略”一个级别,它也可以正确重置嵌套计数器,“启动下一个级别的重置”。这是当时添加的新功能。