
EmO TeXBookdiz
O valor de
\prevdepth
no momento de\halign
é usado no início da lista vertical interna, e o valor final de\prevdepth
é transportado para a lista vertical anexa quando o alinhamento é concluído, para que a colagem entre linhas seja calculada corretamente no início e no final do alinhamento.
Na seção 15.2 deTeX por tópico, diz
No início de uma lista vertical
\prevdepth
é definido como-1000pt
, exceto em um código\halign
e\noalign
contido nela, onde é transferido da lista circundante.
Eu sou capaz de entender a frase emO TeXBook, mas não consegui entender a frase emTeX por tópico. Alguém poderia dar alguns exemplos sobre \prevdepth
e \noalign
?
Responder1
este arquivo tex simples
\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
produz
1: -1000.0pt
2: 1.94444pt
3: -1000.0pt
4: 1.94444pt
5: 1.94444pt
6: 1.94444pt
7: 1.94444pt
8: 0.0pt
mostrando que \prevdepth
tem o valor mágico -1000pt no início da lista vertical principal e no início de a, \vbox
mas não no arquivo \noalign
.
Responder2
Suas duas citações de dois livros resolvem um problema ligeiramente diferente. O primeiro (do TeXbook) diz que o material vertical de \halign
se comporta como material vertical "normal" dentro (pode ser maior) da lista vertical. Não se comporta como \unvbox
um material onde o salto de linha antes e depois deve ser resolvido individualmente. O segundo (do TeX por tópicos) diz que as linhas de\halign
incluindo objetos de \noalign
materialsão conectados um ao próximo por interlineskip direito. Que o \noalign
material não é uma lista vertical individual deste ponto de vista.