Как работает \headline?

Как работает \headline?

Я понимаю, что TeX использует \headlineдля размещения заголовков. Если \headlineбы не существовало, как бы можно было реализовать простую версию того же самого? Кроме того, где можно найти простую документацию о том, как это \headlineреализовано за пределамиTeXbook? ИзодинОсобый интерес представляет использование команд, используемых для позиционирования текста заголовка (или поля, в котором находится заголовок).

решение1

\headlineявляется именованным регистром маркера в plain.tex, назначенным с помощью \newtoks\headlineи установленным в \headline={\hfil}(пустое). Его содержимое затем используется в выходной процедуре через \makeheadlineмакрос (упрощенно и написано "открыто"):

\def\makeheadline{\vbox to 0pt{\vskip-22.5pt
  \hbox to \hsize{\vbox to 8.5pt{}\the\headline}\vss}\nointerlineskip}

То есть, по умолчанию содержатся "жесткие константы" для использования с настройкой 10pt. А содержимое регистра используется в горизонтальном режиме (поэтому не может иметь материал вертикального режима, если не находится внутри \vbox), охватываячас горизонтальныйразмертекстового блока. Весь этот блок установлен так, чтобы не занимать никакого вертикального пространства, и подкреплен константой 22,5pt над самим текстовым блоком.

Кнут пишет в TeXbook относительно константы в 22,5 пункта:

Магическая константа -22,5pt равна (topskip - height of strut - 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}

Связанный контент