\relax 和 % 结束一行的区别

\relax 和 % 结束一行的区别

什么时候我应该使用其中一个?它们一样吗?

答案1

它们完全不同:%将注释掉该行的其余部分,包括换行符,而\relax基本上只是无操作,并且在控制序列被丢弃后使用这些空格(包括换行符)。

坦率地说,我看不出有任何你不想使用的情况%

答案2

我认为你忘记了“一个空格”。当你写的时候, %它是在空格后面还是不在空格后面?就像 Ulrich 说的%\relax不一样。%会注释掉该行的其余部分,但你可以在前面放一个空格%。现在的问题是使用一个\relax还是一个空格。我试图找到关于这个问题的答案,我读了一些关于这个的内容,但我找不到它。

接下来的例子来自 D Salomon 所著的《Advanced TexBook》一书:

 \def\step{\advance\temp by\ifodd\pageno 1\else2\fi} 

此宏以 结尾\fi\relax如果

的展开式\step为 或\advance by 1\advance by 2数字后面\relax必须有一个 a。

 \def\step{\advance\temp by\ifodd\pageno 1\else2\fi\relax}

空间不够,因为

\def\step{\advance\temp by\ifodd\pageno 1\else2\fi }

\step 的扩展将不包含空格。

备注:当 TeX 遇到数字时,它期望数字后面跟着一个明确的终止符(文本、空格、标点符号)。如果数字后面有一个命令,则会立即执行该命令以尝试查找其他数字。

相关内容