Ganzes Wort als Makroargument beim Makroaufruf ohne Klammern

Ganzes Wort als Makroargument beim Makroaufruf ohne Klammern

Ich habe ein Makro:

\newcommand{\sEmph}[1]{\textbf{\textcolor{NavyBlue}{#1}}}

Dann kann ich Folgendes tun:

Some text is in \sEmph{blue}, and some in black.

mit diesem Ergebnis:

Bildbeschreibung hier eingeben

Wenn ich aber die Klammern weglasse, ist nur der Buchstabe „b“ blau, und zwar so:

Some text is in \sEmph blue, and some in black.

Bildbeschreibung hier eingeben

Q:Gibt es eine Möglichkeit, mein Makro auf Wörter anzuwenden?ohne zu benutzenZahnspange?

Antwort1

Du kannst gehen

\def\zz#1 {\textcolor{blue}{#1} }

dann \zzwird sein Argument durch ein Leerzeichen abgegrenzt

\zz word like this

wird wordblau, muss aber durch ein explizites Leerzeichen abgegrenzt werden.

 \zz word\ like this

würde word\ likeblau machen und

... \zz word}..

wird einen Fehler generieren.

Ein wichtiges Designziel von LaTeX besteht darin, allen Befehlen eine konsistente Syntax zu geben, obligatorische Argumente in {}optionalen Argumenten []usw. einzugeben. Daher bietet LaTeX keine echte Unterstützung für diese abgegrenzten Argumente und es ist im Allgemeinen keine gute Idee, sie auf der obersten Ebene im Dokument zu verwenden.

Antwort2

Eine einfache Lösung ist die folgende: \def\sEmph#1+{\textbf{\textcolor{NavyBlue}{#1}}}, aber Sie müssen das Wort mit dem Zeichen + beenden. Wenn (La)TeX Wörter als Buchstabenfolgen erkennen soll, die mit einem beliebigen Nicht-Buchstaben beendet werden, ist es viel komplizierter.

verwandte Informationen