ms Headers and Footers (The GNU Troff Manual)

#### 4.6.6.1 Headers and footers

There are multiple ways to produce headers and footers. One is to define the strings `LH`, `CH`, and `RH` to set the left, center, and right headers, respectively; and `LF`, `CF`, and `RF` to set the left, center, and right footers. This approach suffices for documents that do not distinguish odd- and even-numbered pages.

Another method is to call macros that set headers or footers for odd- or even-numbered pages. Each such macro takes a delimited argument separating the left, center, and right header or footer texts from each other. You can replace the neutral apostrophes (`'`) shown below with any character not appearing in the header or footer text. These macros are Berkeley extensions.

Macro: `.OH` `'`left`'`center`'`right`'` ¶
Macro: `.EH` `'`left`'`center`'`right`'` ¶
Macro: `.OF` `'`left`'`center`'`right`'` ¶
Macro: `.EF` `'`left`'`center`'`right`'` ¶

  The `OH` and `EH` macros define headers for odd- (recto) and even-numbered (verso) pages, respectively; the `OF` and `EF` macros define footers for them.

With either method, a percent sign `%` in header or footer text is replaced by the current page number. By default, `ms` places no header on a page numbered “1” (regardless of its number format).

Macro: `.P1` ¶

  Typeset the header even on page 1. To be effective, this macro must be called before the header trap is sprung on any page numbered “1”; in practice, unless your page numbering is unusual, this means that you should call it early, before `TL` or any heading or paragraphing macro. This is a Berkeley extension.

For even greater flexibility, `ms` is designed to permit the redefinition of the macros that are called when the `groff` traps that ordinarily cause the headers and footers to be output are sprung. `PT` (“page trap”) is called by `ms` when the header is to be written, and `BT` (“bottom trap”) when the footer is to be. The `groff` page location trap that `ms` sets up to format the header also calls the (normally undefined) `HD` macro after `PT`; you can define `HD` if you need additional processing after setting the header (for example, to draw a line below it). The `HD` hook is a Berkeley extension. Any such macros you (re)define must implement any desired specialization for odd-, even-, or first numbered pages.