%20%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%20%D0%BA%20%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B5%20%C2%ABincomplete%20%5Ciffalse%C2%BB.png)
Я хотел бы использовать команду пробела \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 разработан так, чтобы четко различать математику и текст, тот факт, что \sin
делает sin
в математике и делает ошибку в тексте — это особенность, а не проблема.
Если вам действительно нужно, вы можете сделать
\newcommand{\xtwo}{%
\ensuremath{x^2}%
\ifmmode\else\expandafter\xspace\fi
}
но я бы не стал.