我在书的第21页看到这句话TeXbook,但我看不懂。你能举个例子解释一下吗?
如果某个组内的 TEX 内部参数发生改变,则当该组以 TeX? 结尾时,该参数的先前内容将被恢复。
我认为该参数的先前内容不需要恢复,因为它从未被参数改变。
答案1
考虑一个内部参数,例如\baselineskip
如果你
\baselineskip=100pt
{ \baselineskip=5pt }
\showthe\baselineskip
然后你会看到\baselineskip
组内是 5pt,但在组结束时恢复为 100pt。
答案2
这取决于你认为的内部参数是什么。对于其中许多,行为是尊重分组。但也有一些微妙之处。
例如,连字符分配始终是全局的,因此您不能说
{\hyphenation{some-long-word}<text of a paragraph containing somelongword>\par}
并期望当组结束时 TeX 会忘记给定的连字异常。
同样,字体分配也总是全局的,TeXbook 的意思是
\fontdimen<number><font>=<dimen>
\hyphenchar<font>=<number>
\skewchar<font>=<number>
其中<font>
是一个字体选择器(参见 TeXbook 中的相关部分)。
在这方面,盒子大小的分配有点奇怪。考虑
This is TeX, Version 3.141592653 (TeX Live 2023) (preloaded format=tex)
**\relax
*\newbox\test
*\setbox\test=\hbox{test}
*\showthe\wd\test
> 16.16669pt.
<*> \showthe\wd\test
?
*\begingroup\wd\test=100pt\endgroup
*\showthe\wd\test
> 100.0pt.
<*> \showthe\wd\test
但看似相似的会议
This is TeX, Version 3.141592653 (TeX Live 2023) (preloaded format=tex)
**\relax
*\newbox\test
*\setbox\test=\hbox{test}
*\showthe\wd\test
> 16.16669pt.
<*> \showthe\wd\test
?
*\begingroup\setbox\test=\hbox{different test}\wd\test=100pt\showthe\wd\test
> 100.0pt.
<*> ...fferent test}\wd\test=100pt\showthe\wd\test
?
*\endgroup
*\showthe\wd\test
> 16.16669pt.
<*> \showthe\wd\test
有不同的结果。将宽度分配给框寄存器会全局影响最后的框的化身。因此,在第一个会话中,分配\wd\test=100pt
会影响上层的框,但在第二个会话中则不会。
赋值本质上也是全局的。和也是\spacefactor
一样。还有一些维度参数不受分组影响,即\prevgraf
\deadcycles
\insertpenalties
\prevdepth \pagegoal \pagetotal \pagestretch \pagefilstretch
\pagefillstretch \pagefilllstretch \pageshrink \pagedepth
与页面制作相关的。