微调数学运算符周围的间距

微调数学运算符周围的间距

根据 TeXbook 第 170 页的表格,二元运算符+和类似-,在文本或显示样式中,它们周围会留有中等大小的空格,但在脚本样式中则不会。而且,它们只有在充当二元运算符时才会留有空格:当充当一元运算符(例如-1)时,它们不会留有空格。

这很棒。

但是,我定义了一个自定义二元运算符,它在脚本样式中需要略有不同的间距。在所有其他样式中,默认间距都可以正常工作,并且当我的运算符充当一元运算符时,默认间距也可以正常工作。

但是当我的自定义运算符在脚本样式中充当二元运算符时,它需要1mu在两边添加额外的空格。我该如何实现呢?

作为后续问题,如果我想使该更改全局化,以便它适用于脚本样式中的所有二元运算符,并1mu在每边添加空格,该怎么办?

答案1

关于您的第一个问题,您可以1mu在二元运算符中包含胶水,并在模式-1mu下用胶水进行补偿\nonscript

\def\x{\mathbin x}
\def\y{\mathbin{\nonscript\mskip-1mu\mskip1mu x\nonscript\mskip-1mu\mskip1mu}}
\halign{$#$\hfil\cr
a\x b = d_{a\x b}\cr
a\y b = d_{a\y b}\cr}

但是,您必须始终用作\y二元运算符,并且必须使用\x一元版本。

在此处输入图片描述

改变所有现有 s 的行为\mathbin(您的第二个问题)听起来就像改变 TeX 程序。

答案2

如果您使用的是 LuaTeX,则可以单独设置每对数学原子和每种数学样式的间距。您的任务:“设置1muscriptstyle 中所有二元运算符的间距”可以通过以下方式设置:

\Umathordbinspacing\scriptstyle=1mu
\Umathbinordspacing\scriptstyle=1mu
\Umathordbinspacing\crampedscriptstyle=1mu
\Umathbinordspacing\crampedscriptstyle=1mu

有关更多信息,请参阅 LuaTeX 手册第 7.5.2 节。

相关内容