當不帶大括號呼叫巨集時,整個單字作為巨集參數

當不帶大括號呼叫巨集時,整個單字作為巨集參數

我有一個宏:

\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 將單字識別為以任何非字母結尾的字母字串,則情況要複雜得多。

相關內容