在 \bm(包 bm)中使用 \xspace 会导致错误“不完整的 \iffalse”

在 \bm(包 bm)中使用 \xspace 会导致错误“不完整的 \iffalse”

我想在 bm 包的粗体数学命令:\bm 中使用间距 \xspace 命令。但我收到“不完整的 \iffalse”错误,如下例所示。

\documentclass{article}
\usepackage{xspace}
\usepackage{bm}
\begin{document}
$\bm{x^2 \xspace}$
\end{document}

我在数学模式中需要 \xspace 的原因在于,我用它来定义在数学模式内外调用时都能正常工作的命令。原因是,在写文本句子时,我懒得每次谈论一个概念时都切换到数学模式,下面是一个例子(卡莱尔先生的回答让我很失望):

\usepackage{xspace}
\newcommand{\adva}{\ensuremath{\mathrm{Adv}^A}\xspace}
\begin{document}
Denote \adva the advantage of adversary A in the game.

We have: $\adva<\epsilon$.
\end{document}

答案1

\xspace一般会避免使用它(尽管我写了它),并且肯定会确保它永远不会出现在数学模式中。\ensuremath在文档级命令中使用这种风格通常很糟糕,TeX 的设计明确区分了数学和文本,在数学中\sin犯错sin和在文本中犯错是一个功能,而不是问题。

如果你真的必须这样做

\newcommand{\xtwo}{%
  \ensuremath{x^2}%
  \ifmmode\else\expandafter\xspace\fi
}

但我不会。

相关内容