\prevprofundidade e \noalign

\prevprofundidade e \noalign

EmO TeXBookdiz

O valor de \prevdepthno 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 \haligne \noaligncontido 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 \prevdepthe \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 \prevdepthtem o valor mágico -1000pt no início da lista vertical principal e no início de a, \vboxmas 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 \halignse comporta como material vertical "normal" dentro (pode ser maior) da lista vertical. Não se comporta como \unvboxum 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 \noalignmaterialsão conectados um ao próximo por interlineskip direito. Que o \noalignmaterial não é uma lista vertical individual deste ponto de vista.

informação relacionada