
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:
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.
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 \zz
wird sein Argument durch ein Leerzeichen abgegrenzt
\zz word like this
wird word
blau, muss aber durch ein explizites Leerzeichen abgegrenzt werden.
\zz word\ like this
würde word\ like
blau 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.