在 \bm (包 bm)中使用 \xspace 會導致錯誤“不完整 \iffalse”

在 \bm (包 bm)中使用 \xspace 會導致錯誤“不完整 \iffalse”

我想在指令中使用間距 \xspace 指令來進行粗體數學運算: bm 套件的 \bm 。但我收到“Incomplete \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 的設計目的是在數學和文字之​​間有明確的區別,事實上,數學中\sinsin錯誤和文字中的錯誤是一個功能而不是問題。

如果你真的必須你可以這樣做

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

但我不會。

相關內容