我希望每个定理中的方程都编号。因此,每个定理中的第一个方程都编号为 (1),一直到它的证明。例如,
定理:方程
(1)x+y=z
是 ...
证明:我们有
(2)x=zy
所以 ...
但在下一个定理中,编号又从 (1) 重新开始。如何产生这样的编号?
答案1
您可以加载etoolbox
包并在序言中提供以下命令——最好后任何与定理相关的包,例如amsthm
或ntheorem
,都已加载,并设置了类似定理的环境。
\usepackage{etoolbox}
\AtBeginEnvironment{theorem}{\setcounter{equation}{0}}
我忍不住注意到,这样的设置很可能会让读者感到困惑,因为可能会有多个方程 (1)、(2) 等,对吧?你如何交叉引用定理 3、4 和 5 中出现的多个方程 (2)?
假设您的文档中的方程式仅出现在定理及其证明的陈述中,并且进一步假设您还加载了该amsmath
包,那么您可能希望发出命令
\numberwithin{equation}{theorem}
这将把定理 1 的方程编号为 (1.1)、(1.2)...,将定理 2 的方程编号为 (2.1)、(2.2)...,等等。
附录部分原因在于 @egreg 的评论:第一种方法除了可能引起读者的困惑之外,如果您恰好也加载了该hyperref
包,还可能导致一些奇怪的事情。默认情况下,Hyperref 的机制会尝试将所有交叉引用链接到equation (1)
文档中的第一个这样的方程式,即使交叉引用命令中使用的标签实际上引用了其他方程式,而这些方程式恰好也编号为“1”。可以通过 @egreg 推荐的方法解决这个直接问题,即使用
\renewcommand{\theHequation}{\thetheorem.\arabic{equation}}
但是,当你的读者遇到诸如“由前面定理中的方程式 (1)、(1) 和 (1) 确定,...”这样的陈述时,你仍然会面临让读者感到非常困惑的风险。