Como funciona \headline?

Como funciona \headline?

Eu entendo que o TeX usa \headlinepara colocar cabeçalhos. Se \headlinenão existisse, como implementar uma versão simples do mesmo? Além disso, onde podemos encontrar documentação simples de como \headlineé implementado alémO TeXbook? Deuminteresse particular é o uso dos comandos usados ​​para posicionar o texto do cabeçalho (ou a caixa na qual o cabeçalho está definido).

Responder1

\headlineé um registro de token nomeado em plain.tex, atribuído com \newtoks\headlinee definido como \headline={\hfil}(em branco). Seu conteúdo é então utilizado na rotina de saída através da \makeheadlinemacro (simplificada e escrita "aberta"):

\def\makeheadline{\vbox to 0pt{\vskip-22.5pt
  \hbox to \hsize{\vbox to 8.5pt{}\the\headline}\vss}\nointerlineskip}

Ou seja, o padrão contém "constantes rígidas" para uso com uma configuração de 10 pontos. E o conteúdo do registro é usado no modo horizontal (portanto, não pode ter material no modo vertical se não estiver dentro de a \vbox), abrangendo oh horizontaltamanhodo bloco de texto. Toda essa caixa é configurada de forma que não ocupe nenhum espaço vertical e é apoiada pela constante de 22,5pt acima do bloco de texto real.

Knuth escreve no TeXbook sobre essa constante de 22,5 pontos:

A constante mágica -22,5pt é igual a (topskip - altura da escora - 2(baselineskip)), ou seja, 10pt - 8,5pt - 24pt; isso coloca o ponto de referência do título exatamente 24 pontos acima do ponto de referência da linha superior da página, a menos que o título ou a linha superior sejam excessivamente grandes.

A macro também evita inserir o interlineskip normal entre o título e o bloco de tipo.

Então definindo por exemplo:

\headline={Testing headline\hfill \folio}

teria "Título de teste" à esquerda e a cola empurrando o número da página para a direita.

Agora, isso seria o mesmo para todas as páginas, mas digamos que você queira ter um cabeçalho diferente para verso e reto, você poderia fazer algo como

\newtoks\versohead \versohead={\folio\hfill Testing headline}
\newtoks\rectohead \rectohead={Testing headline\hfill \folio}
\headline={\ifodd\pageno\the\versohead\else\the\rectohead\fi}

informação relacionada