acro 中带有 \ensuremath 的额外空格

acro 中带有 \ensuremath 的额外空格

下列的先前这个问题,我的缩写词中的模式与我在 中定义的模式相同\newcommand\BS

但是,当我\ensuremath在没有数学环境的情况下使用和输入我的首字母缩略词时,前后会出现明显的额外空格,而如果我将其置于数学模式下则没问题。

在此处输入图片描述

这与何时不应使用 \ensuremath 进行数学宏但即使我听从建议,{ }在里面放一些额外的\ensuremath{}空间来包围我的表情,我仍然会得到额外的空间。

注意:如果您告诉我“那么就将您的首字母缩略词放入数学模式中”,我会回答“好吧,我必须在我的 1500 页中这样做,那么我该如何避免呢?:)“并在文本中获得适当的间距?

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

答案1

您负责处理这些空格。我用!有效空格和x被忽略的空格来表示,因为它们是在数学模式下处理的:

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

不要\ensuremath在 的定义中使用 :与更清晰、更语义化的 相比,这样\BS做对键入没有任何好处。还有无用的括号,最好删除。some \BS{K}{I} textsome $\BS{K}{I}$ text

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

在此处输入图片描述

相关内容