\framebox{
\parbox[t][2cm]{2cm}{
$S: <NM, <Other> >$
}
}
将会输出: S :< N M, < other >> with extra spaces between '> >' and between 'N M' and '< N'
如何删除这些空格?
答案1
<
这是一个常见的错误>
误认为尖括号。可能使用尖括号的字形,但您需要改变它们的“数学性质”,即关系符号。
公式是否存在这一事实\parbox
并不重要。
\documentclass{article}
\usepackage{amsmath}
\newcommand{\la}{\mathopen<}
\newcommand{\ra}{\mathclose>}
\begin{document}
1. Wrong usage: $S: <NM, <Other> >$
2. Correct spacing: $S: \la NM, \la Other \ra \ra$
3. Better shape: $S: \langle \mathit{NM}, \langle \mathit{Other} \rangle \rangle$
\end{document}
为什么 1 中的空格“奇怪”?其实这并不出乎意料。事实上,冒号:
也是一个关系符号,所以 TeX 不会在它和 之间添加空格<
。之后是一个普通符号,所以它们之间会添加粗空格。和<
之间只插入了标点符号后的空格,但和之间以及和之间添加了粗空格。最后的和之间没有空格,因为它们是关系符号。,
<
<
O
r
>
>
>
使用<
和>
作为打开和关闭原子可以固定间距,但不能固定 2 中的形状。
在这种情况下最常见的符号是\langle
和\rangle
,如 3 所示,其中我还用\mathit
它表示一组字母,而不是变量之间的乘法。
答案2
\parbox
与关系 ( ) 周围的间距无关,\thickmuskip
默认情况下是可拉伸的,因此像单词间空格将拉伸或收缩以对齐段落
\documentclass{article}
\begin{document}
$S: <N$
aaa\linebreak aaa
$S: <N$
aaaaaaaaaaaaaaaaaaaaaa\linebreak aaa
$S: <N$
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\linebreak aaa
$S: <N$
aaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\linebreak aaa
\end{document}
您可以设置\thickmuskip
为固定长度或防止使用{}
组进行拉伸:${S: <N}$
\documentclass{article}
\begin{document}
${S: <N}$
aaa\linebreak aaa
${S: <N}$
aaaaaaaaaaaaaaaaaaaaaa\linebreak aaa
${S: <N}$
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\linebreak aaa
${S: <N}$
aaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\linebreak aaa
\end{document}