Das complexity
Paket ist für Informatiker sehr nützlich. Ich habe kürzlich das xspace
Paket entdeckt, das das Makro bereitstellt \xspace
, das beim Definieren von Makros hilft, die kein \
Escape benötigen, um das Globbing eines nachfolgenden Leerzeichens zu vermeiden:
\newcommand{\myname}{Nicola\xspace}
...
\myname is walking on the street % No need to write \myname\ or \myname{}
Jetzt benutze ich einvielvon Befehlen aus dem Complexity-Paket, das Dutzende von Befehlen definiert, die häufig in Texten verwendet werden, sodass die Notwendigkeit des Escapens sehr häufig besteht. Ich würde sie gerne \xspace
standardmäßig verwenden, aber eine Neudefinition \ComplexityFont
funktioniert beispielsweise nicht, da sie anscheinend \xspace
genau am Ende des aufgerufenen Makros stehen müssen (nicht an einem daraus erweiterten Makro). Das Paket definiert alle seine Makros mit einfachen \newcommand
s, daher glaube ich nicht, dass es eine Möglichkeit gibt, sich daran zu hängen.
Kann diese Neudefinition irgendwie automatisiert werden oder sollte ich diese Funktion dem Paketautor direkt vorschlagen?
Antwort1
Da im Wesentlichen alle Befehle in Bezug auf definiert sind \ComplexityFont
, ist es ganz einfach:
\documentclass{article}
\usepackage[small]{complexity}
\usepackage{etoolbox,xspace}
\robustify\ComplexityFont
\apptocmd\ComplexityFont{\xspace}{}{}
\begin{document}
\section{An \NP problem}
An \NP problem
\end{document}
Ich habe außerdem den Hauptbefehl robuster gemacht, sodass Sie ihn beim Verschieben von Argumenten, wie denen von und , nicht \protect
vor den Makros benötigen .complexity
\section
\caption
Ich rate jedoch dazu, die Anweisungen des Autors im Handbuch zu befolgen:
Daher ist es am besten,
complexity
Befehle immer im Mathematikmodus zu verwenden.
LesenNachteile von xspaceaus Gründen, warum nicht verwendet wird \xspace
.
\documentclass{article}
\usepackage[small]{complexity}
\usepackage{etoolbox}
\robustify\ComplexityFont
\begin{document}
\section{An $\NP$ problem}
An $\NP$ problem
\end{document}