我可以在複雜性包的所有指令中註入 \xspace 嗎?

我可以在複雜性包的所有指令中註入 \xspace 嗎?

complexity軟體包對於計算機科學家來說非常有用。最近,我發現了這個xspace包,它提供了\xspace幫助定義不需要\轉義以避免通配後續空格的巨集的巨集:

\newcommand{\myname}{Nicola\xspace}
...
\myname is walking on the street % No need to write \myname\ or \myname{}

現在,我使用一個很多複雜度包中的命令,它定義了數十個文字中常用的命令,因此轉義的需要非常頻繁。我想讓它們\xspace預設使用,但是重新定義是\ComplexityFont行不通的,因為顯然\xspace必須完全放在被呼叫的巨集的末尾(而不是從中擴展的巨集)。該套件用簡單的\newcommands 定義了它的所有宏,所以我認為沒有辦法掛鉤它。

這種重新定義是否可以以某種方式自動化,或者我應該直接向套件作者建議此功能?

答案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}

在此輸入影像描述

相關內容