Ich habe die Antworten gelesen auf
Leerzeichen nach LaTeX-Befehlen
aber die Alternative, die ich derzeit verwende, wird nicht erwähnt:
\newcommand{\arnold}{Arnold Schwarzenegger{}}
Das bedeutet natürlich weniger Tipparbeit und ist weniger fehleranfällig als das Hinzufügen {}
nach dem Aufruf des Befehls. Bisher sind mir keine Probleme begegnet; im Gegenteil, ich habe festgestellt, dass es in einigen komplexen Fällen, in denen \xspace
ein unerwünschtes Leerzeichen eingefügt wird, {}
richtig funktioniert.
Ich habe mich also nur gefragt, warum dies anscheinend niemand sonst verwendet und ob es möglicherweise Probleme verursacht, von denen ich nichts weiß.
Bearbeiten: Nach den Kommentaren wurde mir klar, dass ich diesen Ansatz immer mit einem Befehl verwendet habe, der einen Parameter hat. Mein Beispiel hätte also lauten sollen
\newcommand{\arnold}[1]{Arnold #1 Schwarzenegger}
Das wird mir eine Lehre sein, meine Beispiele immer zu überprüfen, egal wie ähnlich sie meinem Code zu sein scheinen.
Es ist also tatsächlich das Argument, das die korrekte Leerzeichen bewirkt, und nicht das {}. Wenn mir jemand erklären könnte, warum das Argument einen Unterschied macht, wäre ich sehr glücklich.
Antwort1
Die Frage ist, warum ein Leerzeichen in der Quelle kein Leerzeichen in der Ausgabe erzeugt. Ein Leerzeichen danach \arnold
wird verwendet, um den Befehlsnamen zu beenden und wird nicht tokenisiert, sodass keine Ausgabe erzeugt wird. In der Form ohne Argumente
\arnold text
erweitert sich zu
Arnold Schwarzenegger{}text
das als „Arnold Schwarzeneggertext“ gesetzt wird, wobei {}
nichts Nützliches getan wird.
Umgekehrt gilt in der Form mit einem Argument immer noch, dass ein Leerzeichen danach \arnold
nicht tokenisiert wird, also
\arnold {} text
Und
\arnold{} text
werden auf die gleiche Weise analysiert und beide werden zu
Arnold␣␣Schwarzenegger␣text
Daher wird das Leerzeichen nach dem Argument einfach als normales Wortleerzeichen behandelt, Sie erhalten jedoch zwei Leerzeichentoken zwischen Arnold und Schwarzenegger.