我试图编写一个宏来将名称加粗。我使用了:
\newcommand{\authorship}[2]{\textbf{#1 #2}}
然后在文本中使用
\authorship{Dave Bridges}
不幸的是,当通过 pdflatex 运行时,我在名称后面得到了一个额外的空格。例如,
\authorship{Bridges, D.}, M. E. Fraser and G. B. G. Moorhead. 2005. Cyclic Nucleotide Binding Domains in the Arabidopsis thaliana and Oryza satviva Genomes. BMC Bioinformatics 6(1): 6.
在 D 后的句号和逗号之间添加了一个额外的空格。如何删除该额外的空格?
答案1
尽管您指定命令\authorship
采用两个参数,但实际上在调用期间只为其提供了一个参数,例如:
\authorship{Dave Bridges}
因此,#2
以下是令牌(,
在本例中为 a),但 TeX 仍然会打印#1
,后跟一个空格,后跟#2
(a大胆的逗号)。使用这样的宏
\newcommand{\authorship}[1]{\textbf{#1}}%
或者甚至只是
\let\authorship\textbf
就足够了。当然,如果你想要突出(大胆的) 名称的某些部分,则需要做其他事情,例如保留原始定义,但使用以下形式:
\authorship{Bridges}{Dave}
答案2
尽管 Werner 已经发现了这个问题并提供了解决方案,但您也可以查看xspace
CTAN 上提供的软件包。在定义可能后跟某种标点符号的命令时,该软件包特别有用。
xspace
但是,根据提供的示例代码,无法解决这个问题,因为正如@Andrey Vihrov 指出的那样,逗号仍然会被解释为第二个参数。