使用 `\edef` 和 `\noexpand` 与仅使用 `\def` 有什么区别?

使用 `\edef` 和 `\noexpand` 与仅使用 `\def` 有什么区别?

在这个问题中:在旧式英语文本中自动在标点符号前添加空格,接受的答案使用以下定义

\edef!{\unskip\noexpand\,\string!}

和显然更简单的有什么区别

\def!{\thinspace\string!}

除此之外,如果输入正确(即前面没有空格),\unskip我知道是不需要的。!

答案1

之后\def!{\thinspace\string!}的内容!将正是那样,因此,并且在使用时完全展开时,将变成。\thinspace \string !13\string!13!12

另一方面\edef!{\unskip\noexpand\,\string!}将包含,所以已经完成了它的工作,并且的扩展不可能导致另一个。\unskip \,!12\string!!13

相关内容