关于 TeXbook 练习 17.16 的问题

关于 TeXbook 练习 17.16 的问题

练习的答案是:

\def\sqr#1#2{{\vcenter{\vbox{
  \hrule height.#2pt
  \hbox{\vrule width.#2pt height#1pt \kern#1pt \vrule width.#2pt}
  \hrule height.#2pt}}}}
\def\square{\mathchoice\sqr34\sqr34\sqr{2.1}3\sqr{1.5}3}

我想知道为什么\vbox要使用 extra。它的缺失会以某种方式影响结果吗?

答案1

A 的\vcenter处理方式与 不同\vbox,只不过vcent原子被包裹在构造周围,这最终意味着最终的盒子被调整,因此其高度+深度以数学轴为中心。然而,正如 Udo 在评论中指出的那样,TeXBook 附录 G 的细节确实意味着\scriptspace处理方式存在一些差异。

在此处输入图片描述

\scriptspace=5pt % excessive ammount to make things clearer

\def\sqr#1#2{{\vcenter{\vbox{
  \hrule height.#2pt
  \hbox{\vrule width.#2pt height#1pt \kern#1pt \vrule width.#2pt}
  \hrule height.#2pt}}}}
\def\square{\mathchoice\sqr34\sqr34\sqr{2.1}3\sqr{1.5}3}


\def\sqrb#1#2{{\vcenter{
  \hrule height.#2pt
  \hbox{\vrule width.#2pt height#1pt \kern#1pt \vrule width.#2pt}
  \hrule height.#2pt}}}
\def\squareb{\mathchoice\sqrb34\sqrb34\sqrb{2.1}3\sqrb{1.5}3}


$|A_{ \square}|\, |A_{\squareb }|$

\bye

Udo 在附录 G 中重点介绍了相关规则如下:

它的性质\hrule延伸至封闭框的宽度。

这里是 hbox 的宽度加上\scriptspace\vbox的宽度\hrule正好是 的宽度\hbox\scriptspace稍后应用。

(附录 G:规则 1 跳过了 hrule,规则 18 中的后处理将其应用于\scriptspacehbox 或 vbox。)

具体来说是 18b,引用自 TeXBook:

18b. 如果上标字段为空(因此只有下标),则设置框X到样式 C↓ 的下标,并添加 \scriptspace瓦特(x)

这意味着只有一个框时,水平规则会延伸,但对于嵌套框(任何类型),内部列表的宽度保持不变。

相关内容