amsmath
在环境aligned
和gathered
(以及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/doc:amstex.txt
和amsppt.txt
。]
稍后,将讨论一些具体功能:
\matrix
与之前使用的非常相似\multilimits@
。但是,现在有两个\bgroup
s,分别对应于{
和 的\vcenter{
;\halign{
和\endmatrix
贡献了两个\egroup
s。[...]还有两个新功能。首先,我们
\,
在 周围 放置了\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.16a
。amsmath
如果环境前面有负空间,则只会添加它,以便经过更正的现有文档能够\!\begin{aligned}
继续正常工作。
此行为可以通过三个包选项控制:
alignedleftspaceyes
保留添加此空间的旧行为。alignedleftspaceno
禁用添加空格。alignedleftspaceyesifneg
新的默认行为是,除非环境前面有负跳过或 kern,否则不会添加空格,这样就可以\!\begin{aligned}
像以前一样工作。