TeXがヘッダーを配置するために使用することを理解しています\headline
。存在しない場合、同じものの簡単なバージョンを実装するにはどうすればよいでしょうか?また、どのように実装されている\headline
かの簡単なドキュメントはどこで見つけることができますか?\headline
TeXbook について? の1つ特に興味深いのは、ヘッダー テキスト (またはヘッダーが設定されているボックス) を配置するために使用されるコマンドの使用です。
答え1
\headline
は の名前付きトークン レジスタでplain.tex
、 が割り当てられ\newtoks\headline
、\headline={\hfil}
(空白) に設定されます。その内容は、マクロ (簡略化され、「open」と記述されます) を介して出力ルーチンで使用されます\makeheadline
。
\def\makeheadline{\vbox to 0pt{\vskip-22.5pt
\hbox to \hsize{\vbox to 8.5pt{}\the\headline}\vss}\nointerlineskip}
つまり、デフォルトには10pt設定で使用するための「ハード定数」が含まれています。レジスタの内容は水平モードで使用されます(したがって、内部にない場合は垂直モードのマテリアルを持つことはできません\vbox
)。h 水平方向サイズテキストブロックの。ボックス全体は垂直方向のスペースを取らないように設定されており、実際のテキストブロックの上に 22.5 ポイントの定数でバックアップされています。
Knuth は、22.5pt 定数に関して TeXbook で次のように書いています。
マジック定数 -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}