使用\text\ensuremath
,我可以将更改(间距)保留在数学组中。但我希望有更好的方法。它应该可以在有和没有 的情况下工作unicode-math
。
\documentclass{minimal}
\usepackage{amsmath}
\begin{document}
$x A - (x-1)B - (x-1)C$
\newcommand\mgroup[1]{\text{\ensuremath{#1}}} % <-- is there a nicer way to do this?
\newcommand\tight[1]{\mgroup{\thinmuskip=0mu\medmuskip=0mu\thickmuskip=0mu #1}}
$x A - (\tight{x-1})B - (\tight{x-1})C$
\end{document}
答案1
TeX 在开始将数学列表转换为框和胶水时,使用公式结束时有效的和的值。因此,无法在同一公式中将这些参数设置为不同的值。您的技巧使用了不同的公式,这就是它有效的原因\thinmuskip
。\medmuskip
\thickmuskip
这是一个简单的 TeX 示例,显示\thinmuskip
它自动插入到\log
和之间x
:
$\thinmuskip=10mu \log x+
{\thinmuskip=20mu \log x}+
\log x\thinmuskip=3mu$
\bye
如您所见,使用的值是标准值,该值已在最后重新建立:
如果我删除最后一个设置,我们会得到
其中使用的值为 10mu,因为在组结束时忘记了 20mu 的设置。
请注意,您的技巧可以更简单,\text{<settings>$<formula>$}
因为\text
TeX 内部处于(受限)水平模式。