用下面的空格替换等号,或者完全省略该符号
\documentclass{article}
\pagestyle{empty}
\usepackage{lipsum}
\begin{document}
\interlinepenalty=10000
% or \interlinepenalty 10000 or \interlinepenalty10000
\lipsum[1-6]
\end{document}
不会改变结果:无论如何都禁止段落内的分页符。为什么有三个语法选项?有什么区别?
是否存在只有 = 才有效的情况?
是否存在仅空间起作用的情况?
是否存在只有并置才有效的情况?
答案1
没有区别。原始 tex 赋值的语法允许使用选项=
(和可选空格)
注意
\interlinepenalty 10000 or \interlinepenalty10000
由于不同的原因而相同,命令名称后的空格根本不会被标记,它只是终止命令,因此它们会产生相同的标记。
反过来
\interlinepenalty= 10000
= 后面的空格已被标记但被忽略,因为赋值吸收了可选的等号(后跟一个空格)。
答案2
David C. 解释说,这三种选择之间没有区别,因为 TeX 语法规则(可选的=
)或因为 toknizer 在情况 2 和 3 中输出相同的结果。但你会问为什么?原因是:=
使用可选的,因为它更容易被人类理解。在过去(TeX 诞生时),每个字节都是计数的。因此:=
宏体中不使用 ,因为这些标记字符串必须保存到内存中。但这个可选的=
是在宏体之外使用的。今天,没有这样的内存限制,=
建议使用 。
你的第二个问题:是否存在=
不能使用的情况。是的。如果语法上下文不是赋值。例如\penalty 10000
。原始命令\penalty
不是原始寄存器,所以这不是赋值,而是在垂直或水平列表中执行某项操作的命令。你不能在这里使用=
。
我的最后一条评论:可选项=
周围可能有可选的空间( 左右各一个空格)=
。因此,\interlinepenalty= 10000
也是可能的。并且
\interlinepanalty = 10000
也是可能的,因为字符前面没有空格=
,字符后面只有一个空格,=
因为标记器将其转换为\interlinepenalty= 10000
。
答案3
除非我在已经给出的答案中忽略了这一点,否则还有一个悬而未决的问题:是否存在=
需要的情况?是的,例如如果你想做
\let\foo $ % fine
\let\bar = % incomplete
\let\baz !
在上面的例子中\bar
,将设置为等号\let
,而不是等号,因此你需要
\let\bar = =
(带或不带空格)。甚至更棘手:将 \let
某物添加到“空格”标记(供读者练习)。