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.

Attachment: signature.asc
Description: PGP signature

Reply via email to