在命令前留出空间

在命令前留出空间

如果我有一个,\newcommand*{\foo}{foo}它会“吃掉”后面的空间。有没有办法告诉它先吃掉前面的空间,这样结果bar \foo bar就会是“barfoobar”?

答案1

您可以使用以下方式定义\foo之前\unskipfoo之后的空格\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防止段落开头出现异常。

相关内容