Ich verstehe, dass TeX verwendet, \headline
um Header zu platzieren. Wenn \headline
es das nicht gäbe, wie würde man eine einfache Version davon implementieren? Außerdem, wo könnte man eine einfache Dokumentation finden, wie \headline
es implementiert wird, abgesehen vonDas TeXbook? VoneinsBesonders interessant ist dabei die Verwendung der Befehle, die zur Positionierung des Kopftextes (bzw. der Box, in der die Kopfzeile gesetzt wird) dienen.
Antwort1
\headline
ist ein benanntes Token-Register in plain.tex
, dem zugewiesen \newtoks\headline
und das auf \headline={\hfil}
(leer) gesetzt ist. Sein Inhalt wird dann in der Ausgaberoutine über das \makeheadline
Makro verwendet (vereinfacht und als „open“ geschrieben):
\def\makeheadline{\vbox to 0pt{\vskip-22.5pt
\hbox to \hsize{\vbox to 8.5pt{}\the\headline}\vss}\nointerlineskip}
Das heißt, der Standardwert enthält „harte Konstanten“ für die Verwendung mit einer 10pt-Einstellung. Und der Inhalt des Registers wird im horizontalen Modus verwendet (also kann kein Material im vertikalen Modus vorhanden sein, wenn es sich nicht innerhalb eines befindet \vbox
), und erstreckt sich über dieH horizontalGrößedes Textblocks. Diese ganze Box ist so eingestellt, dass sie keinen vertikalen Platz einnimmt, und wird durch die Konstante von 22,5pt über dem eigentlichen Textblock unterstützt.
Knuth schreibt im TeXbook bezüglich dieser 22,5pt-Konstante:
Die magische Konstante -22,5pt ist gleich (Topskip – Höhe der Strebe – 2(Baselineskip)), also 10pt – 8,5pt – 24pt. Dadurch wird der Bezugspunkt der Überschrift genau 24pt über dem Bezugspunkt der oberen Zeile auf der Seite platziert, es sei denn, die Überschrift oder die obere Zeile sind übermäßig groß.
Das Makro verzichtet außerdem darauf, den normalen Interlineskip zwischen der Überschrift und dem Typeblock einzufügen.
So stellen Sie beispielsweise Folgendes ein:
\headline={Testing headline\hfill \folio}
B. links die „Testüberschrift“ stehen und dann der Kleber, der die Seitenzahl nach rechts schiebt.
Dies würde für jede Seite gleich bleiben, aber sagen wir, Sie möchten unterschiedliche Überschriften für die Vorderseite und die Rückseite haben, dann könnten Sie etwas wie
\newtoks\versohead \versohead={\folio\hfill Testing headline}
\newtoks\rectohead \rectohead={Testing headline\hfill \folio}
\headline={\ifodd\pageno\the\versohead\else\the\rectohead\fi}