Palavra inteira como argumento de macro quando a macro é chamada sem colchetes

Palavra inteira como argumento de macro quando a macro é chamada sem colchetes

Eu tenho uma macro:

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

Então eu posso fazer:

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

com este resultado:

insira a descrição da imagem aqui

Mas se eu omitir os colchetes apenas a letra b fica azul, assim:

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

insira a descrição da imagem aqui

P:Existe uma maneira de fazer minha macro funcionar com palavrassem utilizaraparelho ortodôntico?

Responder1

Você pode ir

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

então \zztem seu argumento delimitado por um espaço

\zz word like this

fará com que wordfique azul, mas deve ser delimitado por um espaço explícito.

 \zz word\ like this

faria word\ likeazul e

... \zz word}..

gerará um erro.

Um dos principais objetivos de design do LaTeX é fornecer sintaxe consistente para todos os comandos, argumentos obrigatórios em {}argumentos opcionais, []etc., portanto, o LaTeX não fornece suporte real para esses argumentos delimitados e geralmente é uma má ideia usá-los no nível superior do documento.

Responder2

Uma solução fácil é a seguinte: \def\sEmph#1+{\textbf{\textcolor{NavyBlue}{#1}}}, mas você deve usar o caractere + para finalizar a palavra. Se você precisar que o (La)TeX reconheça palavras como sequências de letras terminadas por qualquer não-letra, é muito mais complicado.

informação relacionada