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.