删除命令后的空格

删除命令后的空格

为了简化一些文本,我创建了一些命令。一个命令没有参数。它使用数学模式,但在普通文本中使用。我想删除命令和后面的文本之间的任何尾随空格。这将允许我简单地调用诸如而\cmd sometext不是{\cmd}sometext。有什么方法可以创建负空间吗?

答案1

如果您的命令确实是单个没有参数的宏,即\cmd,那么它无论如何都会吞噬后面的空格。要确保任何命令都能吸收后面的空格,只需将命令中最后出现的内容设置为\ignorespaces,这会导致 TeX 有意识地丢弃空格字符,直到出现第一个非空格。

顺便说一句:{\cmd}sometext如果 的操作的一部分\cmd是进行某种定义,则 不会像您想象的那样。{...}除非您将这些定义设为全局定义,否则这些定义将在 创建的组内被丢弃。让两个项目相互碰撞但单独解析的方法是编写\cmd{}sometext。但是,正如我所说,\cmd无论您如何定义它,它本身都会占用空格。

答案2

这是默认行为,如\foo bar下面的输出所示(第一行)。要引入负水平空间,您可以使用\kern

在此处输入图片描述

\documentclass{article}
\newcommand*{\foo}{foo}%
\newcommand*{\fooWithKern}{foo\kern-1ex}%
\begin{document}
\foo bar

\fooWithKern bar
\end{document}

相关内容