![如果某个组内的 TEX 内部参数发生改变,则当该组在 TeX? 中结束时,该参数的先前内容将被恢复。](https://linux22.com/image/470778/%E5%A6%82%E6%9E%9C%E6%9F%90%E4%B8%AA%E7%BB%84%E5%86%85%E7%9A%84%20TEX%20%E5%86%85%E9%83%A8%E5%8F%82%E6%95%B0%E5%8F%91%E7%94%9F%E6%94%B9%E5%8F%98%EF%BC%8C%E5%88%99%E5%BD%93%E8%AF%A5%E7%BB%84%E5%9C%A8%20TeX%3F%20%E4%B8%AD%E7%BB%93%E6%9D%9F%E6%97%B6%EF%BC%8C%E8%AF%A5%E5%8F%82%E6%95%B0%E7%9A%84%E5%85%88%E5%89%8D%E5%86%85%E5%AE%B9%E5%B0%86%E8%A2%AB%E6%81%A2%E5%A4%8D%E3%80%82.png)
我在书的第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
与页面制作相关的。