Целое слово как аргумент макроса при вызове макроса без фигурных скобок

Целое слово как аргумент макроса при вызове макроса без фигурных скобок

У меня есть макрос:

\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 распознавал слова как строки букв, заканчивающиеся любой небуквой, это гораздо сложнее.

Связанный контент