Posso injetar \xspace em todos os comandos do pacote de complexidade?

Posso injetar \xspace em todos os comandos do pacote de complexidade?

O complexitypacote é muito útil para um Cientista da Computação. Recentemente, descobri o xspacepacote, que fornece a \xspacemacro que ajuda a definir macros que não precisam de \escape para evitar a globulação de um espaço em branco subsequente:

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

Agora, eu uso ummuitode comandos do pacote complexidade, que define dezenas de comandos que são comumente usados ​​dentro de texto para que a necessidade de escape seja muito frequente. Eu gostaria que eles fossem usados \xspace​​por padrão, mas redefinir, digamos, \ComplexityFontnão funciona, porque aparentemente \xspacedeve ser colocado exatamente no final da macro que está sendo invocada (e não uma macro expandida a partir dela). O pacote define todas as suas macros com \newcommands simples, então não acho que haja uma maneira de conectá-lo.

É possível automatizar essa redefinição de alguma forma ou devo sugerir esse recurso diretamente ao autor do pacote?

Responder1

Como essencialmente todos os comandos são definidos em termos de \ComplexityFont, é bastante fácil:

\documentclass{article}
\usepackage[small]{complexity}
\usepackage{etoolbox,xspace}

\robustify\ComplexityFont
\apptocmd\ComplexityFont{\xspace}{}{}


\begin{document}

\section{An \NP problem}

An \NP problem

\end{document}

Também robustifiquei o comando principal, para que você não precise \protectna frente das complexitymacros ao mover argumentos, como os de \sectione \caption.

No entanto, meu conselho é seguir o que o autor diz no manual:

Portanto, é melhor sempre usar complexitycomandos dentro do modo matemático.

LerDesvantagens do xspacepor razões pelas quais não usar \xspace.

\documentclass{article}
\usepackage[small]{complexity}
\usepackage{etoolbox}

\robustify\ComplexityFont    

\begin{document}

\section{An $\NP$ problem}

An $\NP$ problem

\end{document}

insira a descrição da imagem aqui

informação relacionada