如何将 thmmarks 与 addtag 结合用于 \[\]?

如何将 thmmarks 与 addtag 结合用于 \[\]?

我有一个问题,我的文本中有相当多的方程式。由于我经常不确定以后是否需要它们作为参考,所以我寻找了一种避免\[...\]equation环境或类似环境交换的方法。

我在答案中找到了解决方案,可以添加新命令

\newcommand\addtag{\refstepcounter{equation}\tag{\theequation}}

回到序言。到目前为止一切顺利。一切都顺利。

现在我想使用enabledntheorem来启用thmmarks。现在看来,上面的命令与选项相冲突。这是一个最小(非)工作示例(使用两个包含项之一ntheorem):

\documentclass[a4paper,10pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\newcommand\addtag{\refstepcounter{equation}\tag{\theequation}}
% \usepackage[amsmath]{ntheorem}
\usepackage[amsmath,thmmarks]{ntheorem}
\newtheorem{Proof}{Proof}
\begin{document}
\begin{Proof}
We assume weknow the solution. Thus we know it.
\end{Proof}

An equation
\[ a = b + c. \addtag \]
\end{document}

我认为有几种可能性:

  • 找到一些方法来修改\addtag宏,使其兼容;这里我不知道从哪里开始。也许你可以给我一个提示....
  • 替换环境所需\[...\]equation
  • \[...\]用环境替换所有equation内容并使用mathtools以获得正确的编号。

对于最后两个选项,我不知道它是否适用ntheorem于所有情况。因此,如果您知道存在问题,请在我替换所有文本之前告知我。

编辑:我刚刚用我的 MWE 和数学工具做了实验。不幸的是,方程计数器有点混乱。empheq它似乎(!)可以工作,但只在 MWE 上测试过。这是修改版本使用empheq

答案1

amsmath(或)所做的最后一件事mathtools是将设置\[...\]\begin{equation*}...\end{equation*}。现在thmtools修补程序equation*可以使用thmmarks,但它也会重新定义\[...\]。因此,最简单的解决方案是重新声明 ams 别名:

示例输出

\documentclass[a4paper,10pt]{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage{mathtools}
\newcommand\addtag{\refstepcounter{equation}\tag{\theequation}}

\usepackage[amsmath,thmmarks]{ntheorem}
\newtheorem{Proof}{Proof}

\DeclareRobustCommand{\[}{\begin{equation*}}
\DeclareRobustCommand{\]}{\end{equation*}}

\begin{document}

\begin{Proof}
  Use induction on~\( j \).
\end{Proof}

An equation
\[ a = b + c. \addtag \]

\end{document}

相关内容