\prevdepth 和 \noalign

\prevdepth 和 \noalign

TeXBook它说

\prevdepth在 时的值\halign用于内部垂直列表的开头,并且 \prevdepth在对齐完成时将 的最终值带入封闭的垂直列表,以便在对齐的开始和结束时正确计算行间粘连。

在第 15.2 条中TeX 按主题分类, 它说

垂直列表的开头\prevdepth设置为-1000pt,但其中包含的\halignand\noalign代码除外,在该代码中,它是从周围列表中延续下来的。

我能理解这句话TeXBook,但无法理解TeX 按主题分类。有人能给出一些关于\prevdepth和的例子\noalign吗?

答案1

这个纯文本文件

\def\foo#1{\edef\tmp{\immediate\write20{#1: \the\prevdepth}}\tmp}


\foo{1}
g


\foo{2}

\vbox{
\foo{3}

Q

\foo{4}
}

\foo{5}

a,

\foo{6}

\halign{#\hfil\cr
\noalign{\foo{7}}
 z\cr}

\foo{8}


\bye

生产

1: -1000.0pt
2: 1.94444pt
3: -1000.0pt
4: 1.94444pt
5: 1.94444pt
6: 1.94444pt
7: 1.94444pt
8: 0.0pt

显示\prevdepth在主垂直列表的开头和的开头具有神奇的 -1000pt 值,\vbox但不在中\noalign

答案2

您对两本书的引用解决了略有不同的问题。第一本(来自 TeXbook)说,垂直材料来自的\halign行为与垂直列表内的“正常”垂直材料相同(可能更大)。它的行为并不像\unvbox材料那样,前后的行跳跃必须单独解决。第二本(来自 TeX by Topics)说,来自的行\halign 包括来自的对象\noalign材质的物体通过右侧的行间跳转将每行连接到下一行。\noalign从这个角度来看,该材料不是单独的垂直列表。

相关内容