我知道 TeX 用来\headline
放置标题。如果\headline
不存在,如何实现一个简单的版本?此外,在哪里可以找到关于如何\headline
实现的简单文档TeXbook? 的一特别令人感兴趣的是使用用于定位标题文本(或设置标题的框)的命令。
答案1
\headline
是 中的一个命名令牌寄存器plain.tex
,被赋值为\newtoks\headline
,并设置为(空白)。然后,其内容通过宏(简化,写为“open”)\headline={\hfil}
用于输出例程:\makeheadline
\def\makeheadline{\vbox to 0pt{\vskip-22.5pt
\hbox to \hsize{\vbox to 8.5pt{}\the\headline}\vss}\nointerlineskip}
也就是说,默认值包含用于 10pt 设置的“硬常数”。寄存器的内容用于水平模式(因此,如果不在 内,则不能有垂直模式材料\vbox
),跨越H 水平尺寸文本块。整个框的设置使其不占用任何垂直空间,并且由实际文本块上方 22.5pt 的常数支持。
Knuth 在 TeXbook 中这样描述 22.5pt 常数:
神奇常数 -22.5pt 等于 (topskip - 支柱高度 - 2 (baselineskip)),即 10pt - 8.5pt - 24pt;这会将标题的参考点精确地放置在页面顶线参考点上方 24pt 处,除非标题或顶线过大。
该宏还避免在标题和字块之间插入正常的行间跳转。
例如设置:
\headline={Testing headline\hfill \folio}
将“测试标题”放在左侧,然后将页码粘贴到右侧。
现在,这将保持每一页都相同,但假设你想让背面和正面有不同的标题,你可以这样做
\newtoks\versohead \versohead={\folio\hfill Testing headline}
\newtoks\rectohead \rectohead={Testing headline\hfill \folio}
\headline={\ifodd\pageno\the\versohead\else\the\rectohead\fi}