> In groff 1.22.4.rc2:
>
> $ echo '\n[.Y]' | nroff | grep .
> 4.rc2
>
> I can see why this happens, of course; but it seems odd for a number
> register to contain non-numeric data.
Not at all. There are many number registers that return strings.
> Failing that, can anyone suggest an improved version of this code
> emitted by man-db that doesn't trip over this ("(4.rc2 >= 2)" in a
> conditional doesn't work and ends up emitting noise to the output)?
Here it is.
.ds Ystring \n[.Y]
.while (\B'\*[Ystring]' = 0) .chop Ystring
.nr Ynumber \*[Ystring]
.
.if (\n[.g] \
& ((\n[.x] > 1) \
: ((\n[.x] == 1) & (\n[.y] > 20)) \
: ((\n[.x] == 1) & (\n[.y] == 20) & (\n[Ynumber] >= 2)))) \{\
. warn (\n[.warn] - (\n[.warn] / 1048576 % 2 * 1048576))
. mso %s.tmac
.\}
Werner