複雑性パッケージのすべてのコマンドに \xspace を挿入できますか?

複雑性パッケージのすべてのコマンドに \xspace を挿入できますか?

このcomplexityパッケージは、コンピュータ サイエンティストにとって非常に便利なものです。最近、私は、後続の空白のグロブを回避するためにエスケープを必要としないマクロを定義するのに役立つマクロxspaceを提供するパッケージを発見しました。\xspace\

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

今、私は多く複雑性パッケージのコマンドの 1 つで、テキスト内でよく使用される数十のコマンドが定義されているため、エスケープが必要になることが非常に多くあります。これらを\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}

ここに画像の説明を入力してください

関連情報