由于科学物种名称应写成斜体,我采用了一种快捷方式,通过在序言中创建定义来在 LaTex 中执行此操作:
\def\GM{{\it Gadus morhua~}}
然后很容易调用\GM is a fish
,它返回“大西洋鳕鱼是一条鱼”。请注意,我在定义中添加了~
,这样我就不需要写\GM~
。这很有效,但如果我想写The fish is called \GM.
,则会返回“这条鱼叫大西洋鳕鱼。”(morhua 和 period 之间有一个空格)。为了最大限度地发挥我懒惰的写作风格,我想找到一种方法来“吃掉”我之前定义的那个空间。我知道数学模式中存在负空间,但写作$\GM\!$
并不能产生正确的结果。有没有办法在文本模式中添加负空间?
答案1
这正是该xspace
软件包的用途。手册上说:
»定义 \newcommand{\gb}{Great Britain\xspace} 后,命令 \gb 将确定何时在其后插入空格,何时不插入空格。«
答案2
除了已经说过的内容之外,在使用 时xspace
,我发现如果包含 的宏\xspace
作为最后一个参数,后面跟着 中的文本{}
,则它不会在两者之间插入空格。在这种情况下,必须先使用 宏,\
然后是 中的文本{}
。
例如,如果我有一个定义为 -- 的宏\newcommand{\sdst}{steady-state\xspace}
,并且我将其用作 --\sdst {DYNAMICS}
那么结果将是"steady-stateDYNAMICS"
(请注意没有空格);而如果我将其用作 -- \sdst\xspace {DYNAMICS}
OR\sdst\ {DYNAMICS}
那么我将得到所需的结果 --"steady-state DYNAMICS"
(请注意插入的空格)。我只是想提一下xspace
我在使用它时注意到的这个怪癖!
请参阅软件包作者的深刻评论大卫·卡莱尔,关于“奇怪之处xspace
”。