这个complexity
包对于计算机科学家来说非常有用。最近,我发现了这个xspace
包,它提供了一个\xspace
宏,可以帮助定义不需要\
转义的宏,以避免出现后续空格:
\newcommand{\myname}{Nicola\xspace}
...
\myname is walking on the street % No need to write \myname\ or \myname{}
现在,我使用很多来自复杂度包的命令,它定义了数十个在文本中常用的命令,因此转义的需求非常频繁。我希望\xspace
默认使用它们,但重新定义\ComplexityFont
不起作用,因为显然\xspace
必须放在被调用的宏的末尾(而不是从它扩展的宏)。该包用简单的\newcommand
s 定义其所有宏,所以我认为没有办法将其挂钩。
这种重新定义是否可以以某种方式自动化,或者我应该直接向包作者建议这个功能?
答案1
由于基本上所有命令都是根据 定义的\ComplexityFont
,因此这很容易:
\documentclass{article}
\usepackage[small]{complexity}
\usepackage{etoolbox,xspace}
\robustify\ComplexityFont
\apptocmd\ComplexityFont{\xspace}{}{}
\begin{document}
\section{An \NP problem}
An \NP problem
\end{document}
我还增强了主命令,因此在移动参数(例如和)时不需要\protect
在宏前面。complexity
\section
\caption
不过,我的建议是遵循作者在手册中所说的内容:
因此,最好始终使用
complexity
数学模式内的命令。
读xspace 的缺点不使用的原因\xspace
。
\documentclass{article}
\usepackage[small]{complexity}
\usepackage{etoolbox}
\robustify\ComplexityFont
\begin{document}
\section{An $\NP$ problem}
An $\NP$ problem
\end{document}