文档主体中使用“newcommand”进行宏定义会插入空格

文档主体中使用“newcommand”进行宏定义会插入空格

有时我会出于各种原因在文档中间创建临时宏。但是,这些定义有时会导致插入额外的空间。我的问题是:

  • 为什么会发生这种情况?
  • 我怎样才能防止这种情况发生?

以下是一个例子:

\documentclass[varwidth]{standalone}

\begin{document}
  Lorem ipsum sit amet. Lorem ipsum dolor sit amet.

  Lorem ipsum
  \newcommand\dolor{dolor}
  sit amet. Lorem ipsum \dolor{} sit amet.
\end{document}

pdflatex 输出

答案1

您正在插入两个空格:一个在定义之前,一个在定义之后(末尾的新行)。

 Lorem ipsum   %<--- end of line =  space
 \newcommand\dolor{dolor}  %<--- end of line =  space
 sit amet. Lorem ipsum \dolor{} sit amet.

通常 tex 会将两个空格合并为一个,但是 会\newcommand阻止这种情况发生,因为您现在有了<space><something><space>,而不是简单的<space><space>,即使 不会<something>导致一些视觉输出。

使用 % 抑制其中一个空格:

 Lorem ipsum
 \newcommand\dolor{dolor}%
 sit amet. Lorem ipsum \dolor{} sit amet.

或者最好将 `\newcommand 移到更好的位置。在段落中间使用它会导致代码混乱。

相关内容