定理包:使用哪一个,哪些会冲突?

定理包:使用哪一个,哪些会冲突?

据我所知,可以使用以下任何一种创建定理环境amsthmntheoremthmtools甚至可能更多。

我应该如何定义我的定理环境?是否有一个包明显更优越?哪些包有冲突?是否有一个包可以做所有事情?(出于某种原因,我正在使用ntheorem但我记不清为什么了)。

例如,thmtools它看起来有一些不错的功能,但我担心会破坏我ntheorem定义的自定义环境......

答案1

要回答你的问题,即是否ntheorem明显优于amsthm(或相反),答案是否定的,因为两者都有优点和缺点。

从功能上讲,ntheorem显然领先于amsthm,但amsthm设计更为稳健,因此错误更少(当然,取决于您如何使用该ntheorem包,您可能永远不会遇到这些错误,但最好还是注意它们)。

ntheorem 与 amsthm 特点比较

下表是根据法语常见问题解答关于定理的条目并显示了每个包的功能列表,清楚地表明ntheorem可以做比更多的事情amsthm

替代文本

ntheorem 错误示例

这里列出了 ntheorem 中可能出现的几个错误,在决定是否使用ntheorem或 之前,您应该注意这些amsthm错误。所有这些错误都是 特有的ntheorem,不会出现在 中amsthm

打破风格与高材质的碰撞

当使用中断样式时,如果在定理的开始处放置某些内容太高,它将与定理标题重叠:

替代文本

\documentclass{article}
\usepackage{ntheorem}
\theoremstyle{break}
\newtheorem{theorem}{Theorem}
\begin{document}
\begin{theorem}
$\displaystyle \sum_{n=1}^{+\infty}{\frac{1}{n^2}} = \frac{\pi^2}{6}$
\end{theorem}
\end{document}

定理注释中的脚注

虽然将脚注放在定理可选参数中可能不是一个很好的做法,但有时可能会需要它,但却不起作用ntheorem(脚注文本将丢失;您必须使用 \footnotemark/\footnotetext 技巧):

\begin{theorem}[Fermat's little theorem\footnote{First stated in a letter dated October 18, 1640.}]
...
\end{theorem}

长定理注释

如果定理的可选参数太长(因为文档是双列模式,或者因为注释确实很长),它将超出边距。以下是双列模式下的示例:

替代文本

\documentclass[twocolumn]{article}
\usepackage{lipsum}
\usepackage{ntheorem}
\newtheorem{theorem}{Theorem}
\begin{document}
\lipsum[1]
\begin{theorem}[A very very very very long optional argument]
\lipsum[2]
\end{theorem}
\lipsum[3-5]
\end{document}

amsthm 错误示例

虽然错误较少,但amsthm并非完全没有错误。这是“定理可选参数太长”ntheorem错误的变体,但只有amsthm当列表紧跟在定理头之后时才会发生:

替代文本

\documentclass[twocolumn]{article}
\usepackage{lipsum}
\usepackage{amsthm}
\newtheorem{theorem}{Theorem}
\begin{document}
\lipsum[1]
\begin{theorem}[A very very very very long optional argument]
\begin{enumerate}
\item Bla bla bla.
\item Bla bla bla.
\item Bla bla bla.
\end{enumerate}
\end{theorem}
\lipsum[3-6]
\end{document}

答案2

ntheorem干扰,但如果您指定为选项,amsthm它会提供一些兼容性。amsthmntheorem

ntheorem在处理诸如框或符号之类的结束标记时效果更好\qed,尤其是当环境以显示的公式结尾并且结束标记应放在一行中时。

thmtools可以另外使用,它应该与其他定理包一起工作。

总结一下,使用thmtoolsntheorem可能是最好的选择,特别是当你需要结束标记的时候。虽然我更喜欢amsthm,可能是因为我习惯了它的\newtheoremstyle宏。

答案3

我喜欢和很多人ntheorem在一起。有amsmath然而,据我所知,有些问题从未得到解决。我经常遇到的一个例子是,我已经学会了如何解决它:如果你(像我一样)喜欢将方程式数字放在左边(即使用leqno),那么你必须将环境的内容equation放在一个分割中,如下所示:

\begin{equation}
  \begin{split} %% ntheorem kludge
     2 + 3 = 5
  \end{split}
\end{equation}

如果等式是证明的最后一行,你也必须做同样的事情。但除了一些类似的烦恼之外,我认为ntheorem效果很好。

相关内容