我已经定义了这样的宏:\newcommand{\code}[1]{\texttt{#1}\xspace}
在某些情况下,我想写出某个对象的复数形式,并且结尾的(复数)“s”字符不应标记为代码。因此它应该看起来像这样:ClassInstance
s。
然而,当我这样做时,\code{ClassInstance}s
我会得到一个额外的空格,即它看起来像:ClassInstance
s。
我能做些什么?
编辑
考虑到@egreg的回答,我似乎遗漏了宏的一个重要部分。事实上,的定义\code
也会修改文本颜色。只有这样,使用才\xspace
似乎是必要的。
为了重现该问题,请运行这个最小示例:
\documentclass[10pt,a4paper]{article}
\usepackage{xcolor}
\usepackage{xspace}
\newcommand{\code}[1]{\texttt{#1}}
\newcommand{\colcode}[1]{\color{blue}\texttt{#1}\color{black}}
\newcommand{\colcodex}[1]{\color{blue}\texttt{#1}\color{black}\xspace}
\begin{document}
Bounds are constructed by closed \code{Curve} objects.
Bounds are constructed by closed \colcode{Curve} objects.
Bounds are constructed by closed \colcodex{Curve} objects.
Sometimes we have even two \colcodex{Curve}s.
\end{document}
答案1
唯一\xspace
可能有用的情况是当命令毫无争议正在被定义。
尝试
\newcommand{\code}[1]{\texttt{#1}}
你会看到
The \code{ClassInstance} is ...
\code{ClassInstance}s
在第一种情况下,空格被保留,而在第二种情况下,空格不被添加。
换句话说,\xspace
绝不可在定义带参数的命令时使用。
更新
该\colcode
命令定义错误:相反,执行
\newcommand{\colcode}[1]{\textcolor{blue}{\texttt{#1}}}
这样既可以避免空间占用的问题,又可以避免需要回到“以前”的颜色。