在 TeX 和 LaTeX 中,数学二进制关系(例如,,,=
... )的两侧都有默认(橡胶长度)间距,这对我来说太大了。如何减少它?\parallel
<
\le
答案1
这个答案不鼓励修改空格,因为 TeX 已经做得很好了。它只是讨论了数学元素周围的间距概念。
数学运算符周围的间距在mathmode
文档(部分11 空间,第 28 页)。以下是一个例子:
\documentclass{article}
\newcommand{\func}{f(x) = x^2 + 3x_0 \cdot \sin x}% Function
\begin{document}
\[
\renewcommand{\arraystretch}{1.5}
\begin{array}{rl}
\mbox{default} & \func \\
\verb|\thinmuskip=0mu| & \setlength{\thinmuskip}{0mu} \func \\
\verb|\medmuskip=0mu| & \setlength{\medmuskip}{0mu} \func \\
\verb|\thickmuskip=0mu| & \setlength{\thickmuskip}{0mu} \func \\
\mbox{all set to zero} & \setlength{\thinmuskip}{0mu}\setlength{\medmuskip}{0mu}
\setlength{\thickmuskip}{0mu} \func
\end{array}
\]
\end{document}
要手动调整符号周围的空间量,您可以将其更改为序数符号,方法是将其括在括号中 - 例如{=}
- 然后在它周围添加所需的空间:\,{=}\,
。这是另一个示例:
\documentclass{article}
\begin{document}
\[
\begin{array}{rc}
\mbox{default} & x = x \\
\verb|\mathbin| & x \mathbin{=} x \\
\verb|\mathrel| & x \mathrel{=} x \\
\verb|\mathord| & x \mathord{=} x \\
\verb|{ }| & x {=} x \\
\verb|\,{ }\,| & x\,{=}\,x \\
\verb|\;{ }\;| & x\;{=}\;x \\
\verb|\:{ }\:| & x\:{=}\:x
\end{array}
\]
\end{document}
负空间,虽然没有显示,但可以通过 获得\!
。当然,您也可以使用其他间距宏,例如\hspace
。
另请参阅\mathbin
vs. 和有什么不一样\mathrel
?讨论二进制和关系运算符之间的间距差异。
答案2
Werner 已经解释过,如果你想改变默认设置,你必须改变\thickmuskip
。然而,我不太同意 Werner 的观点,TeX 已经做得很好了;我还认为有时两边的间距太大了。默认值\thickmuskip
是
5mu plus 5mu
因此它可以从 拉伸5mu
到10mu
。(这种拉伸只会发生在内联数学中,而不会发生在显示的数学中。)虽然我喜欢5mu
,但我认为增加的拉伸太多了,我认为一点收缩也是可以的。所以我的序言通常包含
\thickmuskip=5mu plus 3mu minus 1mu
因此,我不会改变“标准” 5mu
,但空间只能延伸到8mu
,我允许它缩小到4mu
。(如果您想知道 a 是什么:它是来自家族 2(符号家族)mu
的 的 1/18 。)em
为了进行比较,下图第一行显示了默认设置下的效果,第二行显示了我修改后的效果
它不是很多有点不同,但我更喜欢第二行。请注意,默认值\medmuskip
(用于二进制运算)是
4mu plus 2mu minus 4mu
即它可以缩小到零。就我个人而言,我也不喜欢这样,所以我
\medmuskip=4mu plus 2mu minus 3mu
在我的序言中 – 也请看一下图片中的差异!