Eu entendo que o TeX usa \headline
para colocar cabeçalhos. Se \headline
nã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\headline
e definido como \headline={\hfil}
(em branco). Seu conteúdo é então utilizado na rotina de saída através da \makeheadline
macro (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}