latex:xspace不与textit组合抑制空格

latex:xspace不与textit组合抑制空格,latex,xspace,Latex,Xspace,我把xspace放在大多数宏的末尾,例如 \newcommand*{\foobar}{foobar\index{foobar}\xspace} 但是我刚刚发现,如果宏放在textit中,它就不能按预期工作,例如 Test 1: \foobar. Test 2: \textit{\foobar}. 产生 测试1:foobar。测试2:foobar 在字符前面加上一个空格。当然,我可以为这些情况创建一个重复的非xspace宏,但我可以用某种方式更正确地修复它吗?我在/usr/share/texm

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

\newcommand*{\foobar}{foobar\index{foobar}\xspace}
但是我刚刚发现,如果宏放在
textit
中,它就不能按预期工作,例如

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

测试1:foobar。测试2:foobar

字符前面加上一个空格。当然,我可以为这些情况创建一个重复的非xspace宏,但我可以用某种方式更正确地修复它吗?

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

有时\x空间可能会出错 决策,并在需要时添加一个空格 不需要。可能会有不同的情况 这种行为的原因,但它可以 始终按照以下步骤进行处理: 带有{}的宏,因为它具有以下效果 抑制空间

所以

产生

测试3:foobar


亲爱的主持人,结束了这个问题,请您描述一下定义latex宏的方式是否“在某种程度上与编程或软件开发无关”?
Test 3: \textit{\foobar{}}.