![为什么 LaTeX 有 \newtherorem,而不是定义定理、引理等的环境?](https://linux22.com/image/429443/%E4%B8%BA%E4%BB%80%E4%B9%88%20LaTeX%20%E6%9C%89%20%5Cnewtherorem%EF%BC%8C%E8%80%8C%E4%B8%8D%E6%98%AF%E5%AE%9A%E4%B9%89%E5%AE%9A%E7%90%86%E3%80%81%E5%BC%95%E7%90%86%E7%AD%89%E7%9A%84%E7%8E%AF%E5%A2%83%EF%BC%9F.png)
在我看来,各种定理类环境的样式(包括编号)很可能是根据出版风格确定的,而不是因作者而异。我注意到,AMS 出版物至少部分如此,这要归功于 Barbara Beeton 对为什么 AMS 文档类要合并 amsthm 而不是加载它?
\newtheorem
那么,除了遗留/惯性之外,是否还有其他令人信服的理由来通过文档类来定义而不是提供类似定理的环境?
答案1
“为什么”的问题总是可以用几种不同的方式回答,但并不是所有的方式都能给出一致的结论。以下是几种不同的回答,没有特定的顺序。
Leslie Lamport 在 LaTeX 2.0x 中就是这样做的,我们在 2e 中也没有改变它。
latex + article class + amsmath 与 emtex 在哈希表已满之前还剩下 50 个命令名称,并且您可能没有更多定义或
\label
等\cite
。LaTeX2e 的大小确实是因为这个限制。这是一个错误的问题:LaTeX(格式)没有定义许多文档级命令或环境,它没有定义
figure
或table
或\section
。模型是格式定义构建此类结构的命令,而特定文档类将定义它们所需的命令。所以问题实际上是“为什么类不article
定义theorem
环境?”定理在布局和所需标记方面确实存在很多变化,例如,您是只需要
theorem
还是还需要corollary
和lemma
和proof
。您可能会争辩说,标准类本来可以有一个简单的版本,从而实现一致的文档标记和更好的跨文档类兼容性,但目前尚不清楚是否如此。他们尝试使用\author
/\title
/\maketitle
但大多数期刊类都会使用更结构化的作者命令重写它,因此在期刊类之间移动文档仍然通常意味着调整该标记。相反,因为定理环境在文档中确实有它们的定义,所以它们更有可能在文档类之间转移,而不需要更改每个定理的标记。
答案2
theorem
一些 LaTeX 包确实提供了、等的内置定义definition
。我最初以为您问的是amsthm
和包,但 Don Hosek 纠正了我: LaTeX 内核中ntheorem
有一个命令。\newtheorem
即使您有一长串的默认定义,您仍然需要允许您定义自己的构建块。不同的作者会想要不同的环境(例如,不同的语言),不同的出版商会有不同的内部风格。并且从现有模板定义新环境的代码只有一行。
因此,我想象amsthm
并ntheorem
认为每个出版商都会根据自己的风格、在自己的包装中定义这些环境,而他们自己只会提供构建模块,以使这些环境尽可能容易定义。