Hi Russ, At 2025-08-24T15:21:23-0700, Russ Allbery wrote: > "G. Branden Robinson" <g.branden.robin...@gmail.com> writes: > > > No--if you mean the two examples I think you do, I was illustrating > > how things go wrong if the amount of supplemental inter-sentence > > space is _not_ the formatter-plus-English-"groff locale"'s default. > > Ah! Thank you, now I think I understand. > > The thing that I had misunderstood was that I thought the change would > cause groff to force the spacing after " to the intersentence spacing, > and what I am understanding now is that the change would cause groff > to preserve the existing spacing after " instead of adjusting it to > the intersentence spacing. Do I now have this correct?
I believe that is a correct statement. > If that's the case, then I'm less concerned about that change since it > sticks a bit closer to the spacing on the input. I think the main > place where it might result in unwanted output is the case where > regular text ends with `."` at the end of a line. Currently, when > reflowing that text, I believe nroff would add two spaces after `."`, > and I think under your proposal it would instead add one space, and > thus would be inconsistent with the default intersentence spacing? Yes, that would be another expected[1] consequence of this change. $ cat ATTIC/double-quoted-sentence-ends-input-line.man .TH foo 1 2025-08-24 "groff test suite" .SH Name foo \- frobnicate a bar .SH Description Some shifty hacker once said, "Let's learn how to use .MR find 1 effectively." in a dubious effort to make some other point entirely. Rendered, with a short line length and adjustment disabled to ensure visibility of inter-sentence spacing... $ nroff -d AD=l -r LL=65n -man ATTIC/double-quoted-sentence-ends-input-line.man foo(1) General Commands Manual foo(1) Name foo - frobnicate a bar Description Some shifty hacker once said, "Let’s learn how to use find(1) effectively." in a dubious effort to make some other point entirely. groff test suite 2025‐08‐24 foo(1) Now simulate the proposed change... $ diff -u ATTIC/double-quoted-sentence-ends-input-line.man ATTIC/double-quoted-sentence-ends-input-line-with-cflags-request.man --- ATTIC/double-quoted-sentence-ends-input-line.man 2025-08-24 17:32:57.531260467 -0500 +++ ATTIC/double-quoted-sentence-ends-input-line-with-cflags-request.man 2025-08-24 17:32:48.563301165 -0500 @@ -1,4 +1,5 @@ .TH foo 1 2025-08-24 "groff test suite" +.cflags 0 " .SH Name foo \- frobnicate a bar .SH Description ...and render the altered document. $ nroff -d AD=l -r LL=65n -man ATTIC/double-quoted-sentence-ends-input-line-with-cflags-request.man foo(1) General Commands Manual foo(1) Name foo - frobnicate a bar Description Some shifty hacker once said, "Let’s learn how to use find(1) effectively." in a dubious effort to make some other point entirely. groff test suite 2025‐08‐24 foo(1) Regards, Branden Under this proposal, the neutral double quote (a literal U+002D) loses its transparency-at-the-end-of-a-sentence mojo. It becomes like `#`, `$`, `@`, or `1`--it's a full-blown sentential character and cancels any pending end-of-sentence state.[2] That's not a severable consequence of this proposal, but at the core of the meaning of the `TRANSPARENT` property implemented in the formatter. https://cgit.git.savannah.gnu.org/cgit/groff.git/tree/src/roff/troff/input.cpp?h=1.23.0#n6960 I furthermore note that if one used idiomatic groff(7) or even historical man(7) quotation facilities, the exhibit would render correctly whether this proposed change is made or not. $ diff -u ATTIC/double-quoted-sentence-ends-input-line-with-cflags-request.man ATTIC/properly-double-quoted-sentence-ends-input-line-with-cflags-request.man --- ATTIC/double-quoted-sentence-ends-input-line-with-cflags-request.man 2025-08-24 17:32:48.563301165 -0500 +++ ATTIC/properly-double-quoted-sentence-ends-input-line-with-cflags-request.man 2025-08-24 17:51:06.701726344 -0500 @@ -4,7 +4,8 @@ foo \- frobnicate a bar .SH Description Some shifty hacker once said, -"Let's learn how to use +.\" Use ultra-portable quotation facility. Only Plan 9 troff lacks it. +\*(lqLet's learn how to use .MR find 1 -effectively." +effectively.\*(rq in a dubious effort to make some other point entirely. $ nroff -d AD=l -r LL=65n -man ATTIC/properly-double-quoted-sentence-ends-input-line-with-cflags-request.man foo(1) General Commands Manual foo(1) Name foo - frobnicate a bar Description Some shifty hacker once said, “Let’s learn how to use find(1) effectively.” in a dubious effort to make some other point entirely. groff test suite 2025‐08‐24 foo(1) Even formatted as ASCII it's correct, because input characters are not output characters. (I have seen people struggle with this distinction.) $ nroff -d AD=l -r LL=65n -man -T ascii ATTIC/properly-double-quoted-sentence-ends-input-line-with-cflags-request.man foo(1) General Commands Manual foo(1) Name foo - frobnicate a bar Description Some shifty hacker once said, "Let's learn how to use find(1) effectively." in a dubious effort to make some other point entirely. groff test suite 2025-08-24 foo(1) As noted, only Plan 9 troff lacks resort to these `lq` and `rq` strings. It's magnificently portable.[3] Today, when not composing emails, I've been working on patches to Plan 9 from User Space to submit as a GitHub pull request. Regards, Branden [1] if you're a *roff nerd [2] I don't use letters as examples here, even if they technically qualify, because letters are also candidates for adjacent hyphenation breaks whereas most punctuation characters are not, and I didn't want to drag in other formatting issues. Also, I acknowledge that I must put a coin in the "nonce terminology swear jar" for "sentential character". :-| [3] https://savannah.gnu.org/bugs/?67448#comment5
signature.asc
Description: PGP signature