amsmath.sty
定义\mspace
如下:
\newcommand{\mspace}[1]{\mskip#1\relax}
这个定义的目的是什么?
amsmath.pdf
说这\mspace
是“相当于\hspace
数学模式的使用”。
我知道 LaTeX 有一个使用括号括住每个参数的原则。这就是重点吗?还是说这\mskip
是 TeX 命令,因此不应该在 LaTeX 中使用?我假设的目的\relax
是为了防止出现以下plus
或minus
(对于可拉伸/可收缩的长度)。这个明确的安全是命令的目的吗?
有关的:
答案1
LaTeX 的方法是,所有命令都应尽可能共享类似的输入语法。对于\hskip
和类似原语,语法并不“类似 LaTeX”:它们会以“通常的 LaTeX 规则”无法预测的方式选择后面没有括号的数字。同时,正如您所观察到的,原语语法允许可选的尾随拉伸组件(还有可选的尾随空格和收缩组件)。包含可防止 TeX 意外地从“其他内容”中解析它\relax
。
AMS添加的\mspace
完全符合 LaTeX 语法,并且\hspace
与 解决了相同的问题\hskip
。在 LaTeX2e 发布时,内核团队可能认为使用额外的宏来处理这种略微不寻常的用例是合理的(当时有非常我们今天可能已经想到,这样的命令将会被添加为“开箱即用”的。