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