我有一个宏:
\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 将单词识别为以任何非字母结尾的字母字符串,则要复杂得多。