Hi Russ, At 2025-08-24T15:21:23-0700, Russ Allbery wrote: > "G. Branden Robinson" <[email protected]> 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
