为什么通过{}改变间距?

为什么通过{}改变间距?

上次我用的时候蒂克兹我对一些节点的间距感到有点惊讶,

\documentclass{standalone}
\begin{document}
$-\alpha \qquad 
 {}-\alpha \qquad 
 \underbrace{\alpha}\cdot \omega \qquad 
 \underbrace{\alpha} {} \cdot \omega$
\end{document} 

这让我

在此处输入图片描述

其中第二个解决方案是所需的解决方案。David 在聊天中提到,这{}会变成一个二进制表达式,从而为我提供中缀间距。但我仍然对以下内容感到困惑,为什么

{\underbrace{\alpha}}\cdot \omega

给出的结果与

\underbrace{\alpha} {} \cdot \omega

\underbrace{\alpha} \cdot \omega

给出了不同的间距。

答案1

egreg 抢在我之前找到了答案,但我要提的一件事是调试这类东西的辅助工具。如果你将 MWE 修改为

\documentclass{standalone}
\begin{document}
\showboxdepth1
\showboxbreadth100
\tracingonline1
$-\alpha \qquad 
 -{} \alpha \qquad 
 \underbrace{\alpha}\cdot \omega \qquad 
 \underbrace{\alpha} {} \cdot \omega
\showlists$
\end{document} 

您可以在日志中看到

### math mode entered at line 6
\mathbin
.\fam2 ^^@
\mathord
.\fam1 
\glue 20.00003
\mathbin
.\fam2 ^^@
\mathord
.{}
\mathord
.\fam1 
\glue 20.00003
\mathop\limits
.\vbox(4.30554+7.19997)x18.00018 []
\mathbin
.\fam2 ^^A
\mathord
.\fam1 !
\glue 20.00003
\mathop\limits
.\vbox(4.30554+7.19997)x18.00018 []
\mathord
.{}
\mathbin
.\fam2 ^^A
\mathord
.\fam1 !
### restricted horizontal mode entered at line 2

它会告诉您mathbin mathop数学列表中每个原子的等状态。

答案2

数学模式中的A{}插入一个(空的)普通原子,它可以影响间距。让我们看看它是如何影响的。

$ - \alpha {} - \alpha \underbrace{\alpha} \cdot 
  \omega \underbrace{\alpha} {} \cdot \omega $

请注意,\quad空格不会影响自动数学间距,因此我们可以忽略它们。这将成为以下原子序列:

Bin Ord Ord Bin Ord Op Bin Ord Op Ord Bin Ord

并且两个“Bin”原子被转换为“Ord”,因为它们不在两个可以操作的原子之间。实际上,\underbrace宏创建了一个 Op 原子:

\def\underbrace#1{\mathop{\vtop{\m@th\ialign{##\crcr
   $\hfil\displaystyle{#1}\hfil$\crcr
   \noalign{\kern3\p@\nointerlineskip}%
   \upbracefill\crcr\noalign{\kern3\p@}}}}\limits}

因此间距是由规则规定的:

{二进制} 0 顺序 0 顺序 2 二进制 2 顺序 1 操作 1 {二进制} 0 顺序 1 操作 1 顺序 2 二进制 2 顺序

其中{Bin}表示一个Bin原子转化为Ord,0表示无空间,1表示稀疏空间,2表示中等空间。

让我们看看你的最后的例子:

  1. ${\underbrace{\alpha}}\cdot \omega$
    这是“Ord Bin Ord”,因为 Op 原子周围的括号将其转换为 Ord 原子。

    订单 2 箱 2 订单

  2. $\underbrace{\alpha} {} \cdot \omega$
    这是“Op Ord Bin Ord”,因此我们在 Op 之后得到一个细空格,在 Ord 之后得到一个中等空格,在 Bin 之后得到一个中等空格:

    操作 1 订单 2 仓位 2 订单”

  3. $\underbrace{\alpha} \cdot \omega$
    这有点难。我们有“Op Bin Ord”,但为了留出空间,Bin 变成了 Ord,因为它与 相似$\log+2$。因此,我们在下括号字母后得到了一个细小的空格,而\cdot和之间没有空格\omega

    Op 1 {Bin} 0 Ord

相关内容