Parser und Scanner von TeX sind eng miteinander verknüpft. Gehen wir davon aus, dass alle Zeichen ihre üblichen catcodes haben, dann gilt:
\par) aufgefasst.\setcounter, \addtocounter, \value, \roman, \Roman, \arabic, \Alph und \theZählername arbeitet.\normalsize \normalfont« wird als »\normalsize« und »\normalfont« interpretiert).\normalsize9 wird als »\normalsize« und »9« interpetiert; »\textbf9« wird als »\textbf« mit Argument »9« und »\textbf98« als »\textbf« mit Argument »9« und als »8« interpretiert).\makeatletter und \makeatother ist das at-Zeichen (»@«) ein Nicht-Buchstabe.\index{foo}). Das funktioniert jedoch nicht immer.Das bedeutet beispielsweise, dass bei einem Makro, das wie folgt definiert ist:
\newcommand*{\Beispiel}[1]{{ \sffamily{ \bfseries#1}}}
Drei signifikante Leerzeichen vor dem Argument und zwei danach eingefügt werden. Zu besseren Verdeutlichung hier die Definition noch einmal, wobei ich die signifikanten Leerzeichen als »\ « und die Zeilenenden, die zu signifikanten Leerzeichen werden, durch »¶« markiert habe:
\newcommand*{\Beispiel}[1]{¶{\\sffamily{\\bfseries#1}¶}¶}
Will man diese Leerzeichen nun wegbekommen, so muss man die einen schlicht weglassen, die anderen auskommentieren:
\newcommand*{\Beispiel}[1]{%{\sffamily{\bfseries#1}%}%}
Das war es schon fast. Als letztes bleibt zu erwähnen, dass eine Verschiebung eines ganzen Blocks wie beispielsweise einer tabular, \parbox oder einer minipage manchmal einfach nur durch den normalen Absatzeinzug entsteht. Das ist immer dann der Fall, wenn dieser Block am Anfang des Absatzes oder auch ganz alleine im Absatz steht. In diesem Fall hilft ein schlichtes \noindent am Anfang des Absatzes.