我有一個宏:
\newcommand{\sEmph}[1]{\textbf{\textcolor{NavyBlue}{#1}}}
然後我可以這樣做:
Some text is in \sEmph{blue}, and some in black.
結果如下:
但如果我省略大括號,只有字母 b 是藍色的,如下所示:
Some text is in \sEmph blue, and some in black.
問:有沒有辦法讓我的宏對單字起作用不使用大括號?
答案1
你可以走了
\def\zz#1 {\textcolor{blue}{#1} }
然後\zz
其參數由空格分隔
\zz word like this
會使顏色word
變為藍色,但必須以明確的空格分隔。
\zz word\ like this
會使word\ like
藍色和
... \zz word}..
會產生錯誤。
LaTeX 的一個主要設計目標是為所有命令、{}
可選參數中的強制參數[]
等提供一致的語法,因此 LaTeX 沒有為這些分隔參數提供真正的支持,並且在文件的頂層使用它們通常是一個壞主意。
答案2
一個簡單的解決方案如下:
\def\sEmph#1+{\textbf{\textcolor{NavyBlue}{#1}}}
,但必須使用 + 字元來終止該單字。如果您需要 (La)TeX 將單字識別為以任何非字母結尾的字母字串,則情況要複雜得多。