\headline 如何工作?

\headline 如何工作?

我知道 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}

相关内容