Built-in Registers (The GNU Troff Manual)

#### 5.8.5 Built-in Registers

Predefined registers whose identifiers start with a dot are read-only. Many are Boolean-valued, interpolating a true or false value testable with the `if`, `ie`, or `while` requests. Some read-only registers are string-valued, meaning that they interpolate text.

Caution: Built-in registers are subject to removal like others; once removed, they can be recreated only as normal writable registers and will not reflect formatter state.

A register name (without the dot) is often associated with a request of the same name. A complete listing of all built-in registers can be found in Register Index.

We present here a few built-in registers that are not described elsewhere in this manual; they have to do with invariant properties of GNU `troff`, or obtain information about the formatter’s command-line options, processing progress, or the operating environment.

`\n[.A]` ¶

  Approximate output is being formatted (Boolean-valued); see `groff` `-a` option (Options).

`\n[.c]` ¶
`\n[c.]`

  Input line number. ‘`c.`’ is a writable synonym, affecting subsequent interpolations of both ‘`.c`’ and ‘`c.`’.

`\n[.F]` ¶

  Name of input file (string-valued).

`\n[.g]` ¶

  Always true in GNU `troff` (Boolean-valued). Documents can use this to ask the formatter if it claims `groff` compatibility.

`\n[.P]` ¶

  Output page selection status (Boolean-valued); see `groff` `-o` option (Options).

`\n[.R]` ¶

  Count of available unused registers; always 10,000 in GNU `troff`.52

`\n[.T]` ¶

  Indicator of output device selection (Boolean-valued); see `groff` `-T` option (Options).

`\n[.U]` ¶

  Unsafe mode enablement status (Boolean-valued); see `groff` `-U` option (Options).

`\n[.x]` ¶

  Major version number of the running GNU `troff` formatter. For example, if the version number is 1.23.0, then `.x` contains ‘`1`’.

`\n[.y]` ¶

  Minor version number of the running GNU `troff` formatter. For example, if the version number is 1.23.0, then `.y` contains ‘`23`’.

`\n[.Y]` ¶

  Revision number of the running GNU `troff` formatter. For example, if the version number is 1.23.0, then `.Y` contains ‘`0`’.

`\n[$$]` ¶

  Process identifier (PID) of the GNU `troff` program in its operating environment.

Date- and time-related registers are set per the local time as determined by localtime(3) when the formatter launches. This initialization can be overridden by `SOURCE_DATE_EPOCH` and `TZ`; see Environment.

`\n[seconds]` ¶

  Count of seconds elapsed in the minute (0–60).

`\n[minutes]` ¶

  Count of minutes elapsed in the hour (0–59).

`\n[hours]` ¶

  Count of hours elapsed since midnight (0–23).

`\n[dw]` ¶

  Day of the week (1–7; 1 is Sunday).

`\n[dy]` ¶

  Day of the month (1–31).

`\n[mo]` ¶

  Month of the year (1–12).

`\n[year]` ¶

  Gregorian year.

`\n[yr]` ¶

  Gregorian year minus 1900. This register is incorrectly documented in the AT&T `troff` manual as storing the last two digits of the current year. That claim stopped being true in 2000. Old `troff` input that looks like:

      '\" The year number is a surprise after 1999.
      This document was formatted in 19\n(yr.

  can be corrected to:

      This document was formatted in \n[year].

  or, for portability across many `roff` programs, to the following.

      .nr y4 1900+\n(yr
      This document was formatted in \n(y4.