xspace 出现在不该出现的地方

xspace 出现在不该出现的地方

在此示例中

\documentclass{article}
\newcommand{\Tt}{\ensuremath{t}}
\begin{document}
We study \Tt as single items.
\end{document}

我定义了一个\newcommand \Tt我使用的位置\ensuremath,以便\Tt具有在纯文本和数学模式中插入的双重功能。然而在文本中,之前的空格\Tt消失了

在此处输入图片描述

xspace我通过添加(需要)来解决问题\usepackage{xspace}

\newcommand{\Tt}{\ensuremath{t}\xspace}

结果很吸引人:

在此处输入图片描述

当我写下以下内容时,问题就变得明显了:

We study \Tt\Tt pairs.

\Tt'之间出现了一个空格

在此处输入图片描述

如果我真的想在\Tt' 之间留一个空格,我会自己添加。如何解决这个问题?

答案1

你可以告诉前面xspace不要添加空格\Tt

\xspaceaddexceptions{\Tt}

正如指出的那样评论经过大卫·卡莱尔这将在所有情况下停止xspace添加空格\Tt,即使你想看到它,比如说因为你有

\newcommand\study{\study\xspace}

进而

We \study \Tt.

(大卫的例子。)

由于这个问题和答案下的评论中都提到了这一点,我还要在这个答案中提到,在这种情况下最好不要使用\ensuremath\xspace。强迫自己进入适合数学模式的数学模式的好处是你可能不会\Tt - \Tt在文本模式下写出类似的东西,这几乎总是不是你想要的。你可能会节省一些击键,但会失去清晰度,并冒着产生不幸构造的风险,如\Tt - \Tt。另外,如果你被迫使用数学模式,宏占用以下空间的问题就会消失……关于不使用的原因,xspace另请参阅xspace 的缺点,因为\ensuremath何时不应使用 \ensuremath 作为数学宏?

\Ttm我强烈建议您在下面的示例中使用,即 no\xspace和 no \ensuremath

\documentclass{article}

\usepackage{xspace}
\newcommand{\Tt}{\ensuremath{t}\xspace}
\xspaceaddexceptions{\Tt}

\newcommand{\Ttm}{t}

\begin{document}
We study \Tt pairs.

We study $\Ttm$ pairs.

We study \Tt\Tt pairs.

We study $\Ttm\Ttm$ pairs.
\end{document}

相关内容