Tengo una macro:
\newcommand{\sEmph}[1]{\textbf{\textcolor{NavyBlue}{#1}}}
Entonces puedo hacer:
Some text is in \sEmph{blue}, and some in black.
con este resultado:
Pero si omito las llaves solo la letra b es azul, así:
Some text is in \sEmph blue, and some in black.
P:¿Hay alguna manera de hacer que mi macro funcione con palabras?sin uso¿tirantes?
Respuesta1
Se puede ir
\def\zz#1 {\textcolor{blue}{#1} }
entonces \zz
tiene su argumento delimitado por un espacio
\zz word like this
se volverá word
azul, pero debe estar delimitado por un espacio explícito.
\zz word\ like this
haría word\ like
azul y
... \zz word}..
generará un error.
Un objetivo principal del diseño de LaTeX es brindar una sintaxis consistente a todos los comandos, argumentos obligatorios en {}
argumentos opcionales, []
etc., por lo que LaTeX no brinda soporte real para estos argumentos delimitados y generalmente es una mala idea usarlos en el nivel superior del documento.
Respuesta2
Una solución fácil es la siguiente:
\def\sEmph#1+{\textbf{\textcolor{NavyBlue}{#1}}}
, pero debes usar el carácter + para terminar la palabra. Si necesita (La)TeX para reconocer palabras como cadenas de letras terminadas en cualquier otra cosa que no sea una letra, es mucho más complicado.