为了简化一些文本,我创建了一些命令。一个命令没有参数。它使用数学模式,但在普通文本中使用。我想删除命令和后面的文本之间的任何尾随空格。这将允许我简单地调用诸如而\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}