\prevdepth и \noalign

\prevdepth и \noalign

ВTeXBookон говорит

Значение \prevdepthна момент используется \halignв начале внутреннего вертикального списка, а окончательное значение \prevdepthпереносится в охватывающий вертикальный список после завершения выравнивания, чтобы межстрочный клей рассчитывался правильно в начале и в конце выравнивания.

В разделе 15.2TeX по теме, он говорит

В начале вертикального списка \prevdepthустанавливается значение -1000pt, за исключением содержащегося в нем кода \halignи \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 в начале основного вертикального списка и в начале a, \vboxно не в \noalign.

решение2

Ваши две цитаты из двух книг решают немного разную проблему. Первая (из TeXbook) говорит, что вертикальный материал из \halignведет себя как "обычный" вертикальный материал внутри (может быть большего) вертикального списка. Он не ведет себя как \unvboxматериал, где пропуск строки до и после должен решаться индивидуально. Вторая (из TeX по темам) говорит, что строки из\halign включая объекты из \noalignматериаласоединены друг с другом правым межстрочным пропуском. \noalignС этой точки зрения материал не является индивидуальным вертикальным списком.

Связанный контент