删除自定义定义后的空格

删除自定义定义后的空格

由于科学物种名称应写成斜体,我采用了一种快捷方式,通过在序言中创建定义来在 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

相关内容