Makro, das den Zeilenanfang überprüft

Makro, das den Zeilenanfang überprüft

Wie kann ich einen neuen Befehl hinzufügen, der zwischen dem ersten Wort einer Zeile und allen anderen Fällen unterscheidet?

Beispielsweise das Makro \etczum 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.

Bildbeschreibung hier eingeben

\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}

verwandte Informationen