Die Verwendung von \xspace innerhalb von \bm (Paket bm) führt zum Fehler „unvollständiges \iffalse“

Die Verwendung von \xspace innerhalb von \bm (Paket bm) führt zum Fehler „unvollständiges \iffalse“

Ich möchte den Befehl „space \xspace“ innerhalb des Befehls für fette Mathematik verwenden: \bm des bm-Pakets. Aber ich erhalte die Fehlermeldung „Unvollständiges \iffalse“, wie im folgenden Beispiel.

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

Der Grund, warum ich \xspace im Mathematikmodus benötige, ist, dass ich damit Befehle definiere, die sowohl innerhalb als auch außerhalb des Mathematikmodus einwandfrei funktionieren. Der Grund ist, dass ich beim Schreiben von Textsätzen zu faul bin, jedes Mal, wenn ich über ein Konzept spreche, in den Mathematikmodus und wieder zurück zu wechseln. Hier ist ein Beispiel (entmutigt durch die Antwort von Herrn Carlisle):

\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}

Antwort1

\xspaceIch würde es generell vermeiden (trotz der Tatsache, dass ich es geschrieben habe) und auf jeden Fall sicherstellen, dass es nie im Mathematikmodus erscheint. Es ist generell ein schlechter Stil \ensuremath, es in Befehlen auf Dokumentebene zu verwenden. TeX ist so konzipiert, dass es eine klare Unterscheidung zwischen Mathematik und Text gibt. Die Tatsache, dass es in der Mathematik zu Fehlern \sinkommt sinund im Text ein Fehler auftritt, ist eine Funktion, kein Problem.

Wenn es wirklich sein muss, können Sie

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

aber ich würde es nicht tun.

verwandte Informationen