数学模式中 \text{} 周围的间距

数学模式中 \text{} 周围的间距

灵感来自这个问题,这是我的数学模式间距难题。

我经常会遇到如下这样的方程式:

\begin{equation}
  \text{If}\ B_1 \succeq B_2 \ \text{and}\ B_2 \succeq B_3 \ \text{then}\ B_1 \succeq B_3
\end{equation}

现在,您可能会注意到,每个位之前和之后\text{...}都有一个“正常大小的空格”。我无法想象为什么我不想在那里留出那个空格,但我必须手动添加它。这肯定应该是 mathmode 的文本宏的默认行为吧?

为什么不可以呢?我怎样才能做到这一点?

答案1

这不是默认行为,因为你并不总是需要空间。例如,在你的例子中,你需要在 之前留出空格\text{If},因为这会缩进你的公式。或者考虑

\[ x = \begin{cases}
         1 & \text{if $f(x)$}
         0 & \text{otherwise}
       \end{cases} \]

同样,这不应该间隔开。另外,就像Caramdir 的回答,我重新进入了 中的数学模式\text,这通常也能解决间距问题。您可以定义一个\stext用于间隔文本的命令:

\newcommand*{\stext}[1]{\text{ #1 }}

(我认为,里面的文字空间与外面的文字空间相同。)另一种选择可能是

\newcommand*{\textop}[1]{\mathbin{\text{#1}}}
\newcommand*{\textrel}[1]{\mathrel{\text{#1}}}

然后\textop{foo}将设置foo为二元运算符,并将\textrel{bar}设置bar为二元关系。虽然我不确定这个间距看起来会是什么样子,但它可能可以满足您的需要。

答案2

它可能不会添加空间,因为删除空间比添加空间更难。一种可能的用法是类似3-\text{connected graphs}

附注:也可以将您的示例写为

\begin{equation}
  \text{If $B_1 \succeq B_2$ and $B_2 \succeq B_3$ then $B_1 \succeq B_3$.}
\end{equation}

答案3

如果您想在 之前或之后引入自动间距\text,最好的选择可能是使其\text表现得像运算符 ( \mathop),这是数学模式中最接近文本的东西。引入的间距将比普通文本略小,但仍应可接受。以下是代码(确保\text在文本模式下仍有效):

\newcommand{\textop}[1]{\relax\ifmmode\mathop{\text{#1}}\else\text{#1}\fi}

如果将其与类型为\textbin和的各个命令和(在 Antal 的回答中建议)进行比较,您会发现它在这些典型的用法中效果很好,即使间距很紧:\textrel\mathbin\mathrel\text

替代文本

这些命令在开始时也全部失败{align}(例如\begin{align} & \text{...}):

替代文本

(各命令的顺序与上述相同。)

相关内容