Christine Roemer schrieb:
> Am 08.12.2012 16:12, schrieb Magnus Warker:
>
> > Mir f�llt auf, dass man die Leerzeichen ausgleichen muss, z. B. so:
> > \textborn\ 28.5.1884
> >
> > Das ist mir bei \texteuro schon aufgefallen.
> > Warum ist das eigentlich so?
>
> TeX verschluckt bei Symbolen wohl in der Regel das nachfolgende
> Leerzeichen
\textborn ist eine Kontrollsequenz, genauer gesagt
ein Kontrollwort.
Kontrollsequenzen lassen sich in zwei Kategorien einteilen:
1. Kontrollsymbole. Ihr Name besteht aus einem Zeichen, welches
nicht den Kategoriecode 11 hat. Zum Beispiel \. oder \\ oder \@ .
2. Kontrollw�rter. Zum Beispiel: \A oder \TeX oder \WeissDerGeier .
Wenn der Leseapparatus von TeX ein Kontrollwort aus dem
Quelltext einliest, schaltet er in den Modus "S", d.h.
"skipping blanks", und im Quelltext hinter dem Kontrollwort
stehende Leerzeichen werden beim Einlesen "verschluckt".
Leerzeichen hinter Kontrollsymbolen und hinter Character
werden hingegen beim Einlesen und Tokenizen des Quelltextes
nicht verschluckt, sondern zu Space-Token.
Steht alles irgendwo im TeXBook.
Mit dem Makro
\newcommand\Foo[1]{#1} %Foo= First of one
k�nnte man auch schreiben:
\Foo{\textborn} 28.5.1884
{\textborn} 28.5.1884
\textborn{} 28.5.1884
Grund: Die schliessende geschweifte Klammer wird beim Einlesen
des Quelltextes als ein Character-Token "getokenized". Da schaltet
der Leseapparatus nicht auf S (skipping blanks) und das im Quelltext
folgende Leerzeichen wird als Space-Token "getokenized".
Bzw, wenn man zwischen dem Zeichen und dem Datum
keinen Zeilenumbruch zulassen will, was ich empfehlenswert
finde, kann man "tie marks" verwenden:
\textborn~28.5.1884
Zwischen normalen Leerzeichen ( ), control space (\ )
und tie mark (~) gibt es noch einen subtilen Unterschied:
Wenn man \nonfrenchspacing verwendet, will man zwischen
S�tzen bzw hinter Satzzeichen gr�ssere Leerr�ume haben
als zwischen Worten.
Wenn man \nonfrenchspacing verwendet, rechnet TeX
deshallb bei dem f�r ein Leerzeichen einzuf�genden
horizontalen Leerraum noch den sog. "Space Factor"
des vor dem Leerzeichen stehenden Zeichens drauf.
ZB ist der Space Factor beim Punkt anders als der
Space Factor bei einem Kleinbuchstaben.
Das funktioniert aber nur bei normalen Leerzeichen.
Bei control space und tie mark wird immer ein Zwischenraum
so erzeugt als w�re der Space Factor des davorstehenden
Zeichens gleich 1000.
Deshalb ist im folgenden Beispiel nur in der obersten Zeile
die L�cke zwischen "Satzende." und "Satzanfang" etwas
gr�sser, was man sieht, wenn man beim Betrachten einen
stark vergr�ssernden Zoom einstellt:
\documentclass{article}
\nonfrenchspacing
\parindent=0pt
\begin{document}
\Huge
Satzende. Satzanfang.\\
Satzende.\ Satzanfang.\\
Satzende.~Satzanfang.\\
\end{document}
Was auch lustig ist:
Wenn man ein Kontrollwort unexpandiert in eine
externe Datei schreiben l�sst, dann h�ngt TeX
beim Schreiben immer ein Leerzeichen hinter
den Namen des Kontrollwortes.
TeX geht wohl davon aus, dass beim eventuell
irgendwann mal erfolgenden Einlesen der
externen Datei, wenn daraus das besagte
Kontrollwort eingelesen wird, der Leseapparatus
eh wieder auf "S" �gestellt und somit das
eingef�gte Leerzeichen ignoriert wird.
Beispiel dazu:
\newwrite\mywrite
\immediate\openout\mywrite MeinText.txt
\immediate\write\mywrite{%
\noexpand\TeX\noexpand\relax\noexpand\undefiniert%
\noexpand\\\noexpand\.\noexpand\@\noexpand\,%
}
\immediate\closeout\mywrite
\bye
Im entstehenden MeinText.txt stehen jeweils Leerzeichen
hinter den Kontrollw�rtern, aber nicht hinter den
Kontrollsymbolen.
Ulrich