参数文本获取器

参数文本获取器

至此片段

\def\arg#1#2{\#1 = #1 and \#2 = #2\par}
\arg A B C
\end

我认为输出像这样

#1 = A 且 #2 =
BC

但我得到(使用 PDFTeX)

#1 = A 和 #2 = B
C。

为什么会有这样的行为?我知道在某些情况下(例如,在宏之后)空格会被忽略,但根据我的理解,在这种情况下不会。Knuth 先生的想法是什么,但没有人告诉我?

答案1

在 TeXbook 的第 201 页,你会发现

您可以在参数之间添加空格(例如,' \row x n'),因为 TeX 不使用单个空格作为未分隔的参数。

第 204 页还有另一点值得注意

参数#1将是标记Look,因为#1是一个未限定的参数(在定义中它紧接着#2);在这种情况下,TeX 会忽略后面的空格B,并去掉 的括号{\Look}

要点是,如果空格位于未限定的参数之前,则空格会被有效忽略。不能除非您用括号括起来(并且括号将被剥离),否则将空格作为未限定的参数。

\def\arg#1#2{\#1 = $\langle$#1$\rangle$ and \#2 = $\langle$#2$\rangle$\par}

\arg A{ }B C

\arg A { } B C

\end

在此处输入图片描述

相关内容