Wenn ich einen Befehl definiere, dann verschluckt er Leerraum, wenn ich ihn verwende:
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
\bla123 => Befehlsname = \bla Folgt dem Escape-Zeichen ein Nicht-Buchstabe, wird nur dieses Zeichen als Befehlsname interpretiert: Open in Online-Editor
\123 => Befehlsname = \1 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
\bla bla ist bequemer als \bla{}bla und erlaubt außerdem eventuelles Kerning zwischen dem letzten Buchstaben der Expansion von \bla und dem folgenden `bla' 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
\bla{} bla \bla\ bla Man kann -- wie topskip schon erwähnt hat -- auch auf das Paket Open in Online-Editor
\usepackage{xspace} \newcommand*\bla{bla\xspace} jetzt geht auch \bla bla Dazu folgendes Caveat von David Carlisle persönlich:
Ein Beispiel, warum man mit Open in Online-Editor
\documentclass{article} \usepackage{xspace} \newcommand*\bla{bla\xspace} \begin{document} \bla -- hoppla! -- blubber \end{document} 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
\newcommand*\bla{} % nur, um nicht einen vorhandenen Befehl zu überschreiben \def\bla/{bla} \bla/ bla \bla bla => gibt jetzt eine Fehlermeldung 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
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.