
該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}