groff: Assigning Formats
5.6.4 Assigning Formats
-----------------------
When a register is used, it is always textually replaced (or
interpolated) with a representation of that number. This output format
can be changed to a variety of formats (numbers, Roman numerals, etc.).
This is done using the 'af' request.
-- Request: .af ident format
Change the output format of a number register. The first argument
IDENT is the name of the number register to be changed, and the
second argument FORMAT is the output format. The following output
formats are available:
'1'
Decimal arabic numbers. This is the default format: 0, 1, 2,
3, ...
'0...0'
Decimal numbers with as many digits as specified. So, '00'
would result in printing numbers as 01, 02, 03, ...
In fact, any digit instead of zero does work; 'gtroff' only
counts how many digits are specified. As a consequence,
'af''s default format '1' could be specified as '0' also (and
exactly this is returned by the '\g' escape, see below).
'I'
Upper-case Roman numerals: 0, I, II, III, IV, ...
'i'
Lower-case Roman numerals: 0, i, ii, iii, iv, ...
'A'
Upper-case letters: 0, A, B, C, ..., Z, AA, AB, ...
'a'
Lower-case letters: 0, a, b, c, ..., z, aa, ab, ...
Omitting the number register format causes a warning of type
'missing'. ⇒Debugging, for more details. Specifying a
nonexistent format causes an error.
The following example produces '10, X, j, 010':
.nr a 10
.af a 1 \" the default format
\na,
.af a I
\na,
.af a a
\na,
.af a 001
\na
The largest number representable for the 'i' and 'I' formats is
39999 (or -39999); Unix 'troff' uses 'z' and 'w' to represent 10000
and 5000 in Roman numerals, and so does 'gtroff'. Currently, the
correct glyphs of Roman numeral five thousand and Roman numeral ten
thousand (Unicode code points 'U+2182' and 'U+2181', respectively)
are not available.
If IDENT doesn't exist, it is created.
Changing the output format of a read-only register causes an error.
It is necessary to first copy the register's value to a writeable
register, then apply the 'af' request to this other register.
-- Escape: \gi
-- Escape: \g(id
-- Escape: \g[ident]
Return the current format of the specified register IDENT
(one-character name I, two-character name ID). For example, '\ga'
after the previous example would produce the string '000'. If the
register hasn't been defined yet, nothing is returned.