El complexity
paquete es muy útil para un informático. Recientemente, descubrí el xspace
paquete, que proporciona la \xspace
macro que ayuda a definir macros que no necesitan el \
escape para evitar que aparezca un espacio en blanco posterior:
\newcommand{\myname}{Nicola\xspace}
...
\myname is walking on the street % No need to write \myname\ or \myname{}
Ahora uso unlotede comandos del paquete complexity, que define decenas de comandos que se usan comúnmente dentro del texto por lo que la necesidad de escapar es muy frecuente. Me gustaría que se usen \xspace
de forma predeterminada, pero redefinir, digamos, \ComplexityFont
no funciona, porque aparentemente \xspace
debe colocarse exactamente al final de la macro que se invoca (no una macro expandida a partir de ella). El paquete define todas sus macros con \newcommand
s simples, por lo que no creo que haya una manera de conectarse a él.
¿Es posible automatizar esta redefinición de alguna manera, o debería sugerir esta característica directamente al autor del paquete?
Respuesta1
Dado que esencialmente todos los comandos se definen en términos de \ComplexityFont
, es 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}
También robusticé el comando principal, por lo que no es necesario \protect
estar delante de las complexity
macros cuando se mueven argumentos, como los de \section
y \caption
.
Sin embargo, mi consejo es seguir lo que dice el autor en el manual:
Por lo tanto, es mejor usar siempre
complexity
comandos dentro del modo matemático.
LeerDesventajas de xspacepor razones por las que no se usa \xspace
.
\documentclass{article}
\usepackage[small]{complexity}
\usepackage{etoolbox}
\robustify\ComplexityFont
\begin{document}
\section{An $\NP$ problem}
An $\NP$ problem
\end{document}