如果我有一个,\newcommand*{\foo}{foo}
它会“吃掉”后面的空间。有没有办法告诉它先吃掉前面的空间,这样结果bar \foo bar
就会是“barfoobar”?
答案1
您可以使用以下方式定义\foo
之前\unskip
和foo
之后的空格\ignorespaces
:
\newcommand*{\foo}{\leavevmode\unskip foo\ignorespaces}
如果您使用内联,则不需要后者。请注意,后面的强制空格\foo
仍然适用:
\documentclass{article}
\newcommand*{\foo}{\leavevmode\unskip foo\ignorespaces}
\begin{document}
Here is~\foo some text \foo~with spaces\foo{}and nothing\ \foo\ else.
\end{document}
\leavevmode
防止段落开头出现异常。