\headline은 어떻게 작동하나요?

\headline은 어떻게 작동하나요?

TeX이 헤더를 배치하는 데 사용된다는 것을 이해합니다 \headline. 존재하지 않는다면 \headline동일한 버전을 어떻게 구현합니까? 또한, \headline그 이상으로 구현되는 방법에 대한 간단한 문서를 어디에서 찾을 수 있습니까?TeXbook? 의하나특히 흥미로운 점은 헤더 텍스트(또는 헤더가 설정된 상자)의 위치를 ​​지정하는 데 사용되는 명령을 사용하는 것입니다.

답변1

\headline는 의 명명된 토큰 레지스터이며 plain.tex로 할당 되고 (공백) \newtoks\headline으로 설정됩니다 . \headline={\hfil}그 내용은 매크로를 통해 출력 루틴에서 사용됩니다 \makeheadline(단순화되고 "open"으로 작성됨).

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

즉, 기본값에는 10pt 설정과 함께 사용하기 위한 "하드 상수"가 포함되어 있습니다. 그리고 레지스터의 내용은 수평 모드에서 사용됩니다(따라서 내부에 있지 않으면 수직 모드 자료를 가질 수 없습니다 \vbox).시간 동양의크기텍스트 블록의 전체 상자는 세로 공간을 차지하지 않도록 설정되었으며 실제 텍스트 블록 위의 22.5pt 상수로 백업됩니다.

Knuth는 22.5pt 상수에 관해 TeXbook에 다음과 같이 썼습니다.

매직 상수 -22.5pt는 (topskip - 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}

관련 정보