为什么在“aligned”环境的开头有一个\,空格?

为什么在“aligned”环境的开头有一个\,空格?

amsmath在环境alignedgathered(以及mathtools' )定义的开头附近,multlined有一个明确的细空格\,。这通常必须用 来取消 \!,正如多次观察到的那样: 1 2 3 4 5 6 7

我想知道为什么\,有这个明确的规定——如果没有它,会发生什么问题?


amsmath.dtx

\newcommand{\start@aligned}[2]{%
    \RIfM@\else
        \nonmatherr@{\begin{\@currenvir}}%
    \fi
    \savecolumn@ % Assumption: called inside a group
%    \end{macrocode}
%    The \cs{null} here is to keep the \cs{,} glue from causing the
%    invocation of the clause in \tex/'s built-in tag placement
%    algorithm that can cause an equation to be shifted all the way over
%    to the margin.
%    \begin{macrocode}
    \null\,%

答案1

我可能还需要尝试几次才能彻底解决这个问题,但目前为止可以确定的是:

amsmath源自amstex迈克尔·斯皮瓦克 (michael spivak) 的 。 \,已经在amstex \aligned定义中,并且改编为amsmath并没有将其删除。

我正在尝试发掘(有些稀疏的)amstex文档来确定它是否在任何地方得到解释。(这类似于考古挖掘。)

更新: 字符串\null\,在整个定义中都是特有的,用于表示amstex 矩阵类的任何事物。来自(内部,未分发的)文档:

\aligned@类似于\matrix, [...]

[更新(2019/10/25):
在从 AMS 退休之前,我获得了amstex在 CTAN 上发布原始文档的许可。它由两个文件组成,均位于https://ctan.org/tex-archive/macros/amstex/docamstex.txtamsppt.txt。]

稍后,将讨论一些具体功能:

\matrix与之前使用的非常相似\multilimits@。但是,现在有两个\bgroups,分别对应于{和 的\vcenter{\halign{\endmatrix贡献了两个\egroups。[...]

还有两个新功能。首先,我们\,在 周围 放置了\vcenter;这样看起来更好,尤其是使用分隔符时。第二个功能是\null位于第一个 之前\, 这是因为 TB 上关于编号公式的规则,第 189 页---如果\matrix在带有 的公式中使用了非常宽的\tag,我们不希望 TeX 假设我们在 之前放置了粘连,\matrix以便控制其相对于该标签的定位!

因此,我们必须得出这样的结论:\,假设对齐结构通常(?)/通常(?)在分隔符内使用,就像矩阵一样。

在迁移到的过程中质疑这一假设是合理的amsmath,但我找不到任何证据证明这一点。

我会将此事放入下次大修的“研究”列表中 amsmath,但(像往常一样)不能做出任何承诺。

答案2

我进入了我的档案馆(必须使用纸质版本,因为 AMS-LaTeX 的开发早于我的电子版本),看起来这很可能是源自 amstex(即 Mike Spivak)的设计决策。

当 Rainer 和我接到任务为 LaTeX(2e 或者当时的 2.09 加 NFSS)制作一个与 LaTeX 兼容的 amsTeX 版本时,目标是提供 amsTeX 字体并将其转换为 LaTeX 约定和扩展字体设置等。

最初,当我看到这个问题时,我以为我们可能搞砸了,忘了\,在右边添加相应的内容,但从 1990 年的资料来看,这才是 amstex 最初的设计方式。(并不一定意味着这是正确的 :-)

我还查阅了 amstex 的记录来源(不幸的是,我只能得到纸质版 --- 还有人有这个记录或者知道互联网上的来源吗?)但这没有帮助,因为没有记录这种级别的细节或者说没有记录做出这一决定的原因。

看到这个,我觉得这只是代码中 20 多年的一个 bug:起源于 amstex,并添加到 amsmath 版本中。在“aligned”或“gathered”等结构周围留出更多空间可能很有意义,但我认为没有任何理由认为这个空间应该只在左侧。

因此,回答您的问题:如果它不存在,会发生什么问题:肯定不会出错,除了所有“对齐”或“聚集”或任何环境都会在左侧稍微紧密地排版。

我实在看不出有什么理由只把它放在左边。把它放在两边可能有意义,事实上,对于数学中典型的斜体字体,把它放在右边可能也有意义,但只放在左边,看起来真的不对(所以向 AMS 提交错误报告 :-)

答案3

默认情况下不会添加额外的空间2016/11/05 v2.16aamsmath

如果环境前面有负空间,则只会添加它,以便经过更正的现有文档能够\!\begin{aligned}继续正常工作。

此行为可以通过三个包选项控制:

  • alignedleftspaceyes保留添加此空间的旧行为。

  • alignedleftspaceno禁用添加空格。

  • alignedleftspaceyesifneg新的默认行为是,除非环境前面有负跳过或 kern,否则不会添加空格,这样就可以\!\begin{aligned}像以前一样工作。

相关内容