\prevdepth と \noalign

\prevdepth と \noalign

TeXBook についてそれは言う

\prevdepthの時点でのの値は\halign内部の垂直リストの先頭で使用され、 の最終値は \prevdepth配置が完了したときに囲む垂直リストに引き継がれます。これにより、行間グルーは配置の最初と最後で適切に計算されます。

15.2節ではトピック別TeXと書いてある

垂直リストの先頭では\prevdepthが に設定されます-1000pt。ただし、そこに含まれる\halignおよび\noalignコードでは、周囲のリストから引き継がれます。

私は次の文を理解することができますTeXBook について、しかし、トピック別TeX\prevdepthとについていくつか例を挙げていただけますか\noalign?

答え1

このプレーンTEXファイル

\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

2冊の本からの2つの引用は、少し異なる問題を解決します。最初の引用(TeXbookから)は、からの垂直素材が\halign(より大きな)垂直リスト内の「通常の」垂直素材として動作すると述べています。前後の行スキップを個別に解決する必要がある素材としては動作しません\unvbox。2番目の引用(トピックによるTeXから)は、からの行が\halign \noalign素材から作られたオブジェクトを含むそれぞれが右の行間スキップによって次の行に接続されています。\noalignこの観点から見ると、資料は個別の垂直リストではありません。

関連情報