Hi onf, At 2024-12-01T23:06:41+0100, onf wrote: > I have discovered recently that `ne` and `bp` behave differently in > regards to pending input lines. `bp` breaks such lines, while `ne` > does not. In practice this means that `ne` does not behave like a > conditional `bp` as one would reasonably expect. This issue has been > discussed extensively on groff's bug tracker.[1] > > I propose the following changes to make their behavior consistent: > > 1. `ne` breaks line before breaking the page as `bp` does > 2. `ne` does not break line before breaking the page if called with > the no-break control character (which currently doesn't modify > its behavior in any way) > > The second point means that the old behavior of .ne can be recovered > via 'ne. This matches the behavior of 'bp, which breaks page without > breaking the line as well.
I don't agree with this change, because it's not necessary. Formatter
requests are primitive things. Most requests don't also perform breaks.
Only a handful do. Those that do support the no-break control character
to _schedule_ a change to formatter state at the next break, when that
happens for some other reason.
With `ne` in particular, this was a point I had to learn when getting
windows and orphans under control in groff's man pages. But after a
little while, the light came on. I added a caveat to our Texinfo manual
about it:
This method is reliable only if no output line is pending when 'ne'
is invoked. When macro packages are used, this is often not the
case: their paragraphing macros perform the break. You may need to
experiment with placing the 'ne' after the paragraphing macro, or
'br' and 'ne' before it.
...but I now think I can recast that. There's nothing wrong with or
weird about having a `ne` request when an output line is pending.
> Note that this change would break compatibility with other troff
> implementations. However, it would be easy to fix any documents
> which rely on the current behavior by substituting[2] any .ne
> for 'ne, which, as pointed out above, behaves exactly like .ne
> in other troff implementations.
>
> I invite anyone who disagrees with this proposal to raise any
> objections they might have, either here or on the bug tracker.
I don't exactly object, but I'm pretty deeply uncertain about it.
And we'd need to retain traditional handling of `ne` for AT&T
compatibility mode, anyway. If you disagree with that, then I _do_
object.
> [1] https://savannah.gnu.org/bugs/?66447
Regards,
Branden
signature.asc
Description: PGP signature
