什么时候我应该使用其中一个?它们一样吗?
答案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 遇到数字时,它期望数字后面跟着一个明确的终止符(文本、空格、标点符号)。如果数字后面有一个命令,则会立即执行该命令以尝试查找其他数字。