Hi Dave, At 2026-04-05T23:35:30-0500, Dave Kemper wrote: > On Sat, Jan 31, 2026 at 3:06 PM G. Branden Robinson > <[email protected]> wrote: > > The `bp`/`ne` redefition approach has problems with tbl(1) tables > > that are not, as far as I know, surmountable with that technique. > > Nonetheless, it's in use in production code,
Any production code that hasn't been superseded? The only example I
know of was in groff itself.
> so it has utility in some circumstances.
I'm shy of the support burden added when a person employing that
technique starts using tbl(1) and then expresses grief about their
document not rendering correctly to terminals.
> > > Now only the .em method is mentioned, and it's not always the most
> > > suitable.
> >
> > Is there some third technique you're aware of?
>
> No, I know only of those two, but since they each involve tradeoffs,
They both do? What's the downside to the one implemented in groff _man_
and _mdoc_ since 1.24.0?
> I think both are worth mentioning. The passing mention in the
> now-excised footnote at least let readers know there _is_ another
> option.
Unless it has some advantage that the current approach doesn't, I don't
agree. It's both complicated and vulnerable to misrendering when an
emitted diversion causes a page break.
One that Bjarni mooted at some point, of setting an absurdly huge
page length at the beginning of the document, like `.pl 10000i`, then
doing the `.pl \n(nlu` trick at the end, is simple and portable.[1]
It's a close cousin to the one we're using now; it's just that in days
past, the `.R` register didn't interpolate INT_MAX and now it does.
In fact, for that value of "absurdly huge" the approaches are the _same_
except for a scaling unit.
$ for v in 1.22.3 1.22.4 1.23.0 1.24.0 1.24.1; do echo '.tm \n[.R]' \
| ~/groff-$v/bin/groff; done
10000
10000
10000
2147483647
2147483647
Regards,
Branden
[1] Unless your device's resolution is really huge, in which case just
reduce `10000i` to some large value that doesn't overflow INT_MAX
when converted to basic units. Still, `10000i` works with all
device drivers shipped with groff.
signature.asc
Description: PGP signature
