编号方程和 thm 有冲突吗?

编号方程和 thm 有冲突吗?

我尝试按照定理环境对方程进行编号。所以我写

\declaretheorem[name=Theorem,sibling=equation]{thm}

但随后出现了错误:

命令 \@thm 已定义。

没有定义计数器“thm”。

\thm 未定义。

然而,即使我将代码改为

\declaretheorem[name=Theorem,sibling=equation]{theorem}

或者“thm”以外的其他内容,问题就消失了。

我想知道为什么会发生这种情况?

这是我的示例:

\documentclass{article}
\usepackage{amsmath}
\usepackage{thmtools}

\numberwithin{equation}{section}

\declaretheorem[name=Theorem,sibling=equation]{thm}

\begin{document}
\section{MWS}
\begin{thm}
content
\end{thm}
\end{document}

答案1

这暴露了一个严重的错误thmtools。在辅助包的第 59 行,aliasctr.sty我们发现

\@ifdefinable{c@#1}{%

作为 定义的一部分\@counteralias。这是一个严重的错误,因为它\@ifdefinable期望一个标记作为其参数,并且如果执行这部分代码,就会造成严重后果。

解决方案:

\documentclass{article}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{thmtools}
\usepackage{etoolbox}

% fix the bug in aliasctr.sty
\makeatletter
\patchcmd{\@counteralias}
 {\@ifdefinable{c@#1}}
 {\expandafter\@ifdefinable\csname c@#1\endcsname}
 {}{}
\makeatother

\numberwithin{equation}{section}
\declaretheorem[
  name=Theorem,
  sibling=equation,
]{thm}


\begin{document}
\section{MWS}
\begin{thm}
content
\end{thm}
\begin{equation}
1=1
\end{equation}
\end{document}

在此处输入图片描述

相关内容