parbox 在数学模式下在字符之间创建额外的空格

parbox 在数学模式下在字符之间创建额外的空格
\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 不会在它和 之间添加空格<。之后是一个普通符号,所以它们之间会添加粗空格。和<之间只插入了标点符号后的空格,但和之间以及和之间添加了粗空格。最后的和之间没有空格,因为它们是关系符号。,<<Or>>>

使用<>作为打开和关闭原子可以固定间距,但不能固定 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}

在此处输入图片描述

相关内容