Wie kann ich einen neuen Befehl hinzufügen, der zwischen dem ersten Wort einer Zeile und allen anderen Fällen unterscheidet?
Beispielsweise das Makro \etc
zum Drucken von „etcetera“, wenn es der Zeilenanfang ist, andernfalls wird nur „etc.“ gedruckt.
Antwort1
Dies ist nicht wirklich allgemein möglich, da TeX einen Absatz in Zeilen aufteilt, nachdem alle Makros erweitert und die Zeichen in einer horizontalen Liste gesetzt wurden.
Sie können dies tun, der Hauptnachteil dabei besteht darin, dass der Leerraum vor dem Wort im Fall eines fehlenden Zeilenumbruchs nicht so dehnbar ist wie andere Leerräume in der Zeile.
\documentclass{article}
\newcommand\etc{\ifhmode\unskip\fi\discretionary{}{etcetera}{\hbox{ etc.}}}
\begin{document}
word \etc\ wordword \etc\ wordword \etc\ word
word \etc\ wordword \etc\ wordword \etc\ word
word \etc\ wordword \etc\ wordword \etc\ word
word \etc\ wordword \etc\ wordword \etc\ word
word \etc\ wordword \etc\ wordword \etc\ word
\end{document}