1

我将 xspace 放在大多数宏的末尾,例如

\newcommand*{\foobar}{foobar\index{foobar}\xspace}

但我刚刚发现,如果宏放在里面textit,它不会按预期工作,例如

Test 1: \foobar. Test 2: \textit{\foobar}.

生产

测试 1:foobar。测试 2:foobar

字符前有一个额外的空格.。当然,我可以为这些情况制作一个重复的非 xspace 宏,但我能以某种方式更正确地解决这个问题吗?

4

1 回答 1

3

我在 /usr/share/texmf/doc/latex/tools/xspace.pdf 中找到了“隐藏”的答案:

有时 \xspace 可能会做出错误的决定,并在不需要时添加一个空格。此行为可能有不同的原因,但始终可以通过使用 {} 跟随宏来处理,因为这具有抑制空格的效果。

所以

Test 3: \textit{\foobar{}}.

生产

Test 3: foobar.

于 2010-11-24T00:16:55.310 回答