Wenn ich einen Befehl definiere, dann verschluckt er Leerraum, wenn ich ihn verwende: Code, hier editierbar zum Übersetzen:
Das Ergebnis:
Ist das normal? Wie geht man damit am besten um? gefragt 10 Jun '13, 11:55 cgnieder |
Ein bisschen Hintergrund: TeXs Befehlsequenzen können entweder aus einem oder mehreren Buchstaben bestehen. Buchstaben sind Zeichen mit Kategorie-Code Open in Online-Editor
Folgt dem Escape-Zeichen ein Nicht-Buchstabe, wird nur dieses Zeichen als Befehlsname interpretiert: Open in Online-Editor
Das bedeutet, dass nach einer Befehlsequenz aus Buchstaben durch Nicht-Buchstaben angezeigt werden muss, wo sie aufhört. Das kann auch ein Leerzeichen sein. Warum aber wird das Leerzeichen verschluckt. Man könnte doch auch mit einer leeren Gruppe Open in Online-Editor Code, hier editierbar zum Übersetzen:
Fazit: das Verschlucken von Leerzeichen nach Befehlssequenzen aus Buchstaben muss man einfach akzeptieren. Was kann man machen, wenn man eine Befehlssquenz hat und möchte folgende Leerzeichen nicht unterdrücken? Vier Möglichkeiten. Die traditionelle Lösung ist eine der folgenden: Open in Online-Editor Code, hier editierbar zum Übersetzen:
Man kann -- wie topskip schon erwähnt hat -- auch auf das Paket Open in Online-Editor Code, hier editierbar zum Übersetzen:
Dazu folgendes Caveat von David Carlisle persönlich:
Ein Beispiel, warum man mit Open in Online-Editor Code, hier editierbar zum Übersetzen:
Als vierte Möglichkeit wird manchmal empfohlen, den Befehl mit einem sogenannten begrenzten Argument zu definieren. Der Vorteil ist, dass man eine Fehlermeldung bekommt, wenn man den Begrenzer vergisst: Open in Online-Editor Code, hier editierbar zum Übersetzen:
Allerdings habe ich nicht nie gesehen, dass das jemand tatsächlich verwendet. beantwortet 10 Jun '13, 16:17 cgnieder Für dein Negativbeispiel gibt es natürlich ein
(26 Aug '15, 18:20)
Herbert
|
Dazu gibt es einen Eintrag in der FAQ: Eine Lösung besteht darin, das Ende des Befehls durch geschweifte Klammern zu markieren: „ Die andere Möglichkeit ist, das Paket Code, hier editierbar zum Übersetzen:
Der Befehl beantwortet 10 Jun '13, 13:48 topskip |
Wann Leerzeichen (und Zeilenenden) eine Rolle spielen und wann nicht, ist übrigens unter http://www.komascript.de/signifikanteLeerzeichen zusammengefasst.