Extra space with \ensuremath in acro

acrospacing

Following this previous question, I have in my acronyms the same pattern I define in a \newcommand\BS.

However, when I use \ensuremath and type my acronym with no math environment, I get an obvious extra space before and after, whereas it's alright if I put it in math mode.

enter image description here

It has to do with When not to use \ensuremath for math macro but even if I follow the advice to put extra { } inside \ensuremath{} to surround my expression, I still get extra spacing.

NB :If you tell me "well put your acronym in math mode then", i'd reply "well I have to do that along my 1500 pages, so how can I avoid that ? 🙂 " and get the proper spacing in text ?

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{acro}
%\usepackage{xspace}

% with extra {} inside \ensuremath{ } 
\newcommand{\BS}[2]{ \ensuremath{ { \mathcal{#1}_{\mathcal{#2} } } } }

\DeclareAcronym{ki}{
short= \BS{K}{I},
long = Knock-In
}
\begin{document}

When I use \acs{ki} in text there is obviously extra space before and after my acronym.

When I use $\acs{ki}$ in math there is the right space before and after my acronym.

\printacronyms

\end{document}

Best Answer

You're responsible of those spaces. I denote by ! the significant ones and with x those that are ignored because they are processed in math mode:

\newcommand{\BS}[2]{ \ensuremath{ { \mathcal{#1}_{\mathcal{#2} } } } }
                    !            x x                          x x x !

Don't use \ensuremath in the definition of \BS: you gain nothing in being able to type some \BS{K}{I} text instead of the clearer and more semantic some $\BS{K}{I}$ text. There are also useless braces that are better removed.

\documentclass[12pt,a4paper]{article}
\usepackage{acro}

\newcommand{\BS}[2]{\mathcal{#1}_{\mathcal{#2}}}

\DeclareAcronym{ki}{
  short= \ensuremath{\BS{K}{I}},
  long = Knock-In
}

\begin{document}

When I use \acs{ki} in text

When I use $\acs{ki}$ in math

\printacronyms

\end{document}

enter image description here

Related Question