在此示例中
\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}