[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Disposition of groff 1.23.0.rc4 feedback issues

From: G. Branden Robinson
Subject: Re: Disposition of groff 1.23.0.rc4 feedback issues
Date: Thu, 20 Apr 2023 22:31:50 -0500

[dropping Bruno Haible from CC, on the assumption that he's not
interested in ms(7) details]

At 2023-04-21T00:02:54+0200, Christof Meerwald wrote:
> On Thu, Apr 20, 2023 at 03:00:45PM -0500, G. Branden Robinson wrote:
> > 2. addressed in documentation on master (NEWS) prior to RC4
> >    (f9e84954174); reporter remains unhappy, but does not respond to
> >    requests for more precise information
> I guess the technical details should be well understood by now and are
> pretty obvious anyway.

Excellent--we start out with an implied insult.  Only a moron would have
made the changes to ms(7) that I did.  Championship rhetoric!

> A simple test case has been posted in

Your choice of the passive voice conceals the fact that _you_ composed
that message.

When you're complaining about a bug and a software developer
volunteering to work on the problem asks you for more information, it's
not simply polite but more efficacious to _respond to that request_.

The fact that you neglected to reply combined with the suggestion that
any response is not worth of the time of a person intelligent enough to
apprehend the "obvious" "technical details" is a tactic I've seen
employed many times by brogrammers and (bad) managers.  Typically what
it attempts to conceal is that the speaker doesn't, in fact, know what
they're talking about.

Is this how you want to be regarded by your peers?  Wait--let me guess,
you are without peer.  Fine, then--is this how you want to be regarded
by people who have _elected_, _voluntarily_, to field your hectoring

If you think my patience for your attitude is infinite, you have
miscalculated.  But I still have enough for the nonce to meet you on
your own ground--that of scope creep.

[relocated from the end]
> BTW, the NEWS entry doesn't mention ".TE" and also doesn't mention
> that pre-heading space is then also omitted (which is actually the
> most obvious/annoying difference). And while we are at it - what about
> ".PE"?
> And in documents where PD is significantly larger than DD, why would I
> only want DD spacing? If accumulation of DD+PD spacing is too big,
> maybe just using the maximum of DD and PD would be the more desirable
> option?
> And yes, maybe next week I'll notice more differences/regression in
> other documents... (I just haven't looked at any other documents yet)

Well, then, yes, let's play, and ramble all over the place with a
thoroughly annotated discussion of the "Typesetting Mathematics --
User's Guide (Second Edition); see below.

> together with the output from groff 1.22.4 and 1.23.0.rc4 that shows a
> significant difference in vertical spacing.

"Significant" is a subjective term.  But I'll grant that it beats your
pixel measurements, which are inescapably dependent on factors like how
far you've zoomed the document view (even if scaling is linear, there
are always integer rounding issues to bedevil us).  Your use of the `nl`
register in message #137 (above) however, was a good step toward
detection of and remedy of a potential defect.  So good on you for that.

> In it
> has been pointed out

Again, the use of passive voice to suggest a chorus of dissatisfied
users when, so far, only you have complained, is deceitful rhetoric.

> how these changes affect the formatting of "Typesetting Mathematics -
> User's Guide (Second Edition)" by Kernighan and Cherry with 1.23.0.rc4
> and where 1.23.0.rc4 now shows formatting differences that weren't
> there with 1.22.4.

Well, then, let us see how groff 1.22.4 did with this document.

First I will present a diff of the two trees I used to prepare it.  I
chose to create a Makefile and make some minor changes to the document's
original source for reasons that are (mostly) annotated and, to use your
term, "obvious".

Let us peruse.  I trust that you (or anyone else reading this
discussion) will point out if I have made changes to the document that
are ruinously deceptive.

Two points to make:

1.  The sources can be obtained from TUHS.

2.  We're interested for the time being only in the "g" document, the
    User's Guide.  That is the one that appeared in the Volume 2 of the
    Version 7 Unix Programmer's Manual and scans of which I consulted,
    motivating my changes to groff ms.

    Not that, as we've seen (and as we will again below), any attempts
    to get you to control the scope of your complaints so that one can
    be addressed before you raise several others ever does any good.

diff -urN eqn-v7-pure/Makefile eqn-v7-hacked/Makefile
--- eqn-v7-pure/Makefile        1969-12-31 18:00:00.000000000 -0600
+++ eqn-v7-hacked/Makefile      2022-07-12 18:32:50.395729199 -0500
@@ -0,0 +1,21 @@
+# Set this macro to where your groff executable is located.  For best
+# results, ensure that it locates an s.tmac file with some fixes applied
+# (Savannah #62686, #62687, #62688).
+GROFFOPTS:=-ww -e -ms -M . -m sbtl -P -e -P -pletter -T pdf
+ALL=eqnsystem.pdf eqnuser.pdf
+all: $(ALL)
+EQNSYSTEMSRCS:=e.mac e0 e1 e2 e3 e4 e5 e6 e7
+EQNUSERSRCS:=g.mac g0 g1 g2 g3 g4 g5
+eqnsystem.pdf: sbtl.tmac $(EQNSYSTEMSRCS)
+eqnuser.pdf: sbtl.tmac $(EQNUSERSRCS)
+       rm -f $(ALL)

[e0 removed from diff]

diff -urN eqn-v7-pure/g.mac eqn-v7-hacked/g.mac
--- eqn-v7-pure/g.mac   2022-06-30 16:28:19.984161912 -0500
+++ eqn-v7-hacked/g.mac 2022-07-01 11:44:16.157564585 -0500
@@ -2,6 +2,7 @@
 .de SC
 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 
+.pdfbookmark 1 \\$*
 .de UC

This is a feature addition, as PDF obviously didn't exist in the late
1970s.  Larry McVoy liked this one.  It turns the section headings
(specified through the above document-private macro `SC`) into PDF
bookmarks, enabling them to be placed into a navigation pane in a PDF

diff -urN eqn-v7-pure/g0 eqn-v7-hacked/g0
--- eqn-v7-pure/g0      2022-06-30 18:38:30.234150358 -0500
+++ eqn-v7-hacked/g0    2022-07-12 18:34:32.767246144 -0500
@@ -1,9 +1,27 @@
+.\" Adapted for groff by G. Branden Robinson, 2022-06-30/07-02.  Thanks
+.\" to Deri James for PDF support.
+.\" These values, used with URW Times fonts at 10 points, produce column
+.\" and page breaks nearly identical to the C/A/T typeset original. LL 5.4i PO 1.55i

One can of course charge the foregoing with some form of treason to
fidelity.  The practical reason for these register settings is that the
PostScript fonts we use to render the document don't have identical
metrics to those used my the Graphic Systems C/A/T phototypesetter used
to set the print of the manual where this "Typesetting Mathematics"
document was (most?) widely published in the 1979-1983 time frame.

Every year or so when I endorse the goal of faithful reproduction of
historical documents, Ralph Corderoy takes a run at me to try to get me
to embrace the objective of pixel-perfect reproduction.  Because the
C/A/T's fonts weren't even digitally encoded (they were on photographic
plates), and in any case due to the preponderance of digital fonts being
subject to copyright licensing[1], this objective is, in general,
impossible to meet.

Since you attempt to freight your personal whims with the weight of the
Groff Mission Statement below, I will point out that it does not make
sense to identify an impossible goal as a "top priority".  (That
ideologues do so anyway does nothing to rehabilitate the principle.)

+.\" Define a fake Bell System logo.
+.char \[bs] \o'\[ci]|'

The Bell logo is trademarked.  We can't just traffic in it without
permission.  Well, maybe the one from the 1970s isn't.  Which one is
correct to render?  That depends on when the document was typeset.
We'll meet another example of this sort of problem below, with the Unix

Next I replace some "document description information".

 delim $$
-\".ND "June 2, 1976"
-\".TM "76-1273-4 76-1271-4" 39199 39199-11
+. year 0000 mo 00 dy 00
+.ND "August 15, 1978 \fI(retypeset with \fPgroff\fI\
+ \n[year]-\n(mo-\n(dy)"
+.\" GBR: Suppress repetition of doc info and don't alter page numbering.
+.RP no-repeat-info no-renumber
+.\" Force page 1 to be numbered; it follows the cover page and the Unix
+.\" Programmer's Manual page headings (which these sources don't produce
+.\" anyway) are not appropriate for this document in isolation.
+.\"nr pg*P1 1
+.\"TM "76-1273-4 76-1271-4" 39199 39199-11

groff ms does not support the `TM` macro and never has.  We do not
support the cover sheet styles where technical memorandum identifiers
would be placed, and never have.

It remains to be seen whether my attempt at frankness regarding what was
doing the typesetting, and when, also offends your principle of rigid
fidelity to "the original".

 Typesetting Mathematics _ User's Guide
 \&\ \ \ \ \ (Second\ Edition)
@@ -12,13 +30,18 @@
+.\" This document uses the full page width for the abstract.
+.\"ll 0:li 0 0:ri 0

You could certainly yell about this.  But I wouldn't (not that you'll
listen to _me_); Lesk 1978 does not endorse the usage of `in` and `ll`
requests in ms documents.[2]

+.pdfinfo /Title Typesetting Mathematics - User's Guide (Second Edition)
+.pdfinfo /Author Brian W. Kernighan and Lorinda L. Cherry

Again, I decided to add support for PDF features, for user convenience.

 This is the user's guide for a system for typesetting
-the phototypesetters on the
+the \%photo\%typesetters on the

This is the first of several similar changes.  It is somewhat well known
that AT&T troff and GNU troff use different hyphenation systems.  In the
absence of TeX hyphenation patterns for English that happen to exactly
reproduce those selected by AT&T's "suftab" system (developed by Molly
Wagner, I think), differences in hyphenation breaking are inevitable.

This would be a good project for you to undertake.

@@ -28,35 +51,42 @@
 designed to be easy to use
 by people who know neither mathematics nor typesetting.
 Enough of the language to set in-line expressions like
-$lim from {x-> pi /2} ( tan~x) sup{sin~2x}~=~1$
+.\" Correct missing space after n for GNU eqn.  GBR, 2022.
+$lim from {x -> pi /2} ( tan~x) sup{sin~2x}~=~1$

There are some other fine details of how equations are set in this
document that I don't like, but I haven't chased them down yet, or even
opened a Savannah ticket for them, but I'm aware of them.

I do observe that it may be a poor use of my time to engage with you
when I could pursing that activity, which might improve the experience
of many more users.

 or display equations like .5i
+.\"in .5i

Again, Lesk doesn't endorse use of `in` requests.  Should this do
something?  Even if the resulting indentation is the same without it?

 .EQ I
 G(z)~mark =~ e sup { ln ~ G(z) }
 ~=~ exp left ( 
 sum from k>=1 {S sub k z sup k} over k right )
 ~=~  prod from k>=1 e sup {S sub k z sup k /k}
+.\" Use "cdots" for ellipses on the math axis; "ldots" on the baseline.
+.\" Redefine them to space them more widely.  Use ~ more generously than
+.\" K&C; groff eqn tends to horizontally pack more tightly.  Keep the
+.\" copy of this in file "g4" in sync.

The difference between AT&T eqn and GNU eqn's handling of the "..."
token has been documented since February 2007, in commit 62248e78a3 by
Eric Raymond.

 .EQ I
+define cdots "{ \[md]~\[md]~\[md] }"
+define ldots "{ .~.~. }"
 lineup = left ( 1 + S sub 1 z + 
-{ S sub 1 sup 2 z sup 2 } over 2! + ... right )
-left ( 1+ { S sub 2 z sup 2 } over 2
+{ S sub 1 sup 2 z sup 2 } over 2! + ~ cdots right )
+~ left ( 1+ { S sub 2 z sup 2 } over 2
 + { S sub 2 sup 2 z sup 4 } over { 2 sup 2 cdot 2! }
-+ ... right ) ...
++ ~ cdots right ) ~ cdots

The foregoing is the natural consequence of the aforementioned
difference, plus some conveniences.  The special character \[md] did not
exist in AT&T troff (at least not Ossanna troff).  (Not even if you
spell it as "\(md".)

 .EQ I
 lineup =  sum from m>=0 left (
 sum from
-pile { k sub 1 ,k sub 2 ,..., k sub m  >=0
+pile { k sub 1 ,k sub 2 , ~ ldots ~ , k sub m  >=0
-k sub 1 +2k sub 2 + ... +mk sub m =m}
+k sub 1 +2k sub 2 + ~ cdots ~ +mk sub m =m}
 { S sub 1 sup {k sub 1} } over {1 sup k sub 1 k sub 1 ! } ~
 { S sub 2 sup {k sub 2} } over {2 sup k sub 2 k sub 2 ! } ~
 { S sub m sup {k sub m} } over {m sup k sub m k sub m ! } 
-right ) z sup m
+right ) ~ z sup m

These are cdots/ldots and (horizontal) equation spacing revisions as
already discussed.

 .EN 0
+.\"in 0

Since we didn't need the manual indentation request before, we won't
need to undo it.

 can be learned in an hour or so.
 The language interfaces directly with
@@ -73,11 +103,13 @@
-to set mathematical expressions on 
+to set mathematical \%expressions on 

The hyphenation issue again.

 and Model 37 teletypes.
+.\" TODO: Force the first body page to be numbered "2" to align with PDF
+.\" page numbers.
-.CS 11 0 11 0 0 3
+.\"CS 11 0 11 0 0 3

groff ms does not support the Labs-specific `CS` macro.  I trust you can
locate the discussion of this in the ms document to which you linked.

diff -urN eqn-v7-pure/g1 eqn-v7-hacked/g1
--- eqn-v7-pure/g1      2022-06-30 16:28:19.984161912 -0500
+++ eqn-v7-hacked/g1    2022-07-01 20:39:52.463882265 -0500
@@ -1,3 +1,6 @@
+.\" Force extra-large blank area at top of page to match original.
+.sp 10v

Be sure and let me know if I mismeasured that. MINGW 5.875n

This is present for the same reason as my adjustments to the line length
and page offset; it accommodated the non-original fonts in use and
caused the page, column, and even line breaks to occur where they did in
the AT&T troff rendering in nearly every case.

 .if t .2C
 .SC Introduction
@@ -400,6 +403,7 @@
 e sup {i omega t}
+.\" This equation got lost in the V7 Volume 2 manual!
 e sup {i omega t}

This is the item you repeatedly refuse to engage with in any way.
Absolute fidelity to AT&T troff/ms rendering will require that I
contrive a means of disposing of this equation.  Furthermore, and as I
have already pointed out to you, its absence could be explained by an
vertical space management error in the original implementation.  An
off-by-one or similar mistake could have caused this one-line equation
to go missing from the bottom of its column, when the assumption of the
code was that it didn't, and that in turn would be why the next column
on the page has apparently spurious vertical space at its _top_, meaning
that the column tops are not in alignment, as one normally desires.

Should backward compatibility with bugs be a "top priority"?

I have confidence in you to express your view on that question in a
manner that comports adequately with your supercilious attitude.

@@ -523,6 +527,7 @@
 sqrt a+b + 1 over sqrt {ax sup 2 +bx+c}
 Warning _ square roots of tall quantities look lousy,
 because a root-sign 
 big enough to cover the quantity is
@@ -534,6 +539,7 @@
 sqrt{a sup 2 over b sub 2}

Possibly I could have solved this problem like a Real Programmer,
shoving `sp` requests in and fiddling them until a satisfactory layout
was achieved; but it seemed simpler to--hold on here--use the facilities
of the macro package.

 Big square roots are generally better written as something
 to the power \(12:
@@ -603,6 +609,7 @@
 lim from {n \(mi> inf} x sub n =0
+.\" Correct missing space after n for GNU eqn.  GBR, 2022.
-lim from {n-> inf} x sub n =0
+lim from {n -> inf} x sub n =0

The foregoing arises from a difference in the way the AT&T and GNU eqn
implementations lexically analyze their input streams.

I don't think the very paper we're talking about admits the foregoing
construction, but obviously AT&T eqn accepted it.  Should this be
another "top priority" backwards compatibility item, or should we spill
electrons on more important matters?

diff -urN eqn-v7-pure/g2 eqn-v7-hacked/g2
--- eqn-v7-pure/g2      2022-06-30 16:28:19.984161912 -0500
+++ eqn-v7-hacked/g2    2022-06-30 22:42:34.436500637 -0500
@@ -181,9 +181,11 @@
 is not subject to any of the font changes and spacing
 adjustments normally done by the equation setter.
 This provides a way to do your own spacing and adjusting if needed:
 italic "sin(x)" + sin (x)

Another venial sin, using the facilities Lesk provided instead of
fiddling with `ne` and `sp` requests.

 italic "sin(x)" + sin (x)
@@ -281,6 +283,7 @@
 if at all possible.
 Thus, for example,
 you can say
 ^EQ I
 x+y mark = z
@@ -296,6 +299,7 @@
 .EQ I
 x lineup = 1

Keeps again.

 For reasons too complicated to talk about,
 when you use
@@ -428,11 +432,18 @@
 right ]
 will make
+.\" Cheat #1: AT&T eqn stacked piles more tightly than GNU eqn.
+set baseline_sep 1v
 A ~=~ left [
 pile { a above b above c } ~~ pile { x above y above z }
 right ]
+.\" Reset equation baseline separation to the default, which is not
+.\" documented anywhere and has no syntactical access.  :-/
+set baseline_sep 140
 The elements of the pile (there can be as many as you want)
 are centered one above another, at the right height for
 most purposes.

An explicitly documented, vertical space-relevant cheat!

The next two changes go together.

@@ -466,6 +477,9 @@
 than it is for ordinary piles.
+.\" Cheat #2: Shrink the display distance a bit to fit this display on
+.\" the page. DD -0.25v
 .P1 2
 roman sign (x)~=~ 
 left {
@@ -473,6 +487,7 @@
    ~~ lpile
     {if~x>0 above if~x=0 above if~x<0}
 .P2 DD +0.25v
 roman sign (x)~=~ 

This is how people _should_ do this sort of thing.  Not with `.sp
-0.25v` or some nonsense like that.

diff -urN eqn-v7-pure/g4 eqn-v7-hacked/g4
--- eqn-v7-pure/g4      2022-06-30 16:28:19.984161912 -0500
+++ eqn-v7-hacked/g4    2022-07-01 20:51:50.768616704 -0500
@@ -2,10 +2,10 @@
 Here is the complete source for the three display equations
 in the abstract of this guide.
+.DS L

My God, I yet again used the facilities of the macro package.  Also,
I'll note for those keeping score that while Lesk does admit use of
`sp` in ms document, he doesn't extend that courtesy to `nf`.  (Nor

 .ps -2
 .vs -2
+.\" Keep the copy of this in file "g0" in sync.
  .EQ I
  G(z)~mark =~ e sup { ln ~ G(z) }
  ~=~ exp left ( 
@@ -13,26 +13,27 @@
  ~=~  prod from k>=1 e sup {S sub k z sup k /k}
  .EQ I
+ define cdots "{ \[md]~\[md]~\[md] }"
+ define ldots "{ .~.~. }"
  lineup = left ( 1 + S sub 1 z + 
- { S sub 1 sup 2 z sup 2 } over 2! + ... right )
- left ( 1+ { S sub 2 z sup 2 } over 2
+ { S sub 1 sup 2 z sup 2 } over 2! + ~ cdots right )
+ ~ left ( 1+ { S sub 2 z sup 2 } over 2
  + { S sub 2 sup 2 z sup 4 } over { 2 sup 2 cdot 2! }
- + ... right ) ...
+ + ~ cdots right ) ~ cdots
  .EQ I
  lineup =  sum from m>=0 left (
  sum from
- pile { k sub 1 ,k sub 2 ,..., k sub m  >=0
+ pile { k sub 1 ,k sub 2 , ~ ldots ~ , k sub m  >=0
- k sub 1 +2k sub 2 + ... +mk sub m =m}
+ k sub 1 +2k sub 2 + ~ cdots ~ +mk sub m =m}
  { S sub 1 sup {k sub 1} } over {1 sup k sub 1 k sub 1 ! } ~
  { S sub 2 sup {k sub 2} } over {2 sup k sub 2 k sub 2 ! } ~
- ...
+ cdots
  { S sub m sup {k sub m} } over {m sup k sub m k sub m ! } 
- right ) z sup m
+ right ) ~ z sup m

I have already addressed these changes.

+.DE I have these.

 .ps +2
 .vs +2
 .SC "Keywords, Precedences, Etc."
@@ -61,7 +62,7 @@
 Digits, parentheses, brackets, punctuation marks, and these mathematical words
 are converted
 to Roman font when encountered:
+.P1 3 \" reduce indentation, GBR 2022
 sin  cos  tan  sinh  cosh  tanh  arc
 max  min  lim  log  ln  exp
 Re  Im  and  if  for  det
@@ -140,7 +141,7 @@
 .in .2i
-.ta .7i 1.4i 2.1i
+.ta .7i 1.4i 2.0i \" reduce last tab stop, GBR 2022
 above  17, 18  lpile   17
 back   21      mark    15
 bar    13      matrix  18

This is another case where I think font metrics make a difference.
Possibly the glyphs in Adobe Times Roman were on average a little fatter
than those provided by Graphic Systems.

Finally, I added a new file to the proceedings.

diff -urN eqn-v7-pure/sbtl.tmac eqn-v7-hacked/sbtl.tmac
--- eqn-v7-pure/sbtl.tmac       1969-12-31 18:00:00.000000000 -0600
+++ eqn-v7-hacked/sbtl.tmac     2022-07-12 17:47:22.380362899 -0500
@@ -0,0 +1,16 @@
+.rm MH MH
+Bell Laboratories
+Murray Hill, New Jersey 07974
+.. UX btl*seen-UX-macro 0
+.ds btl*UX-suffix \(dg\"
+.if !\\n[btl*seen-UX-macro] \{\
+.  FS \\*[btl*UX-suffix]
+.  nop UNIX is a Trademark of Bell Laboratories.\" sic
+.  FE
+.  nr btl*seen-UX-macro 1

The foregoing exists for the reason documented in, with which you
claim to be familiar.  (Do I overstep by assuming you've _read_ it, as
opposed to finding vertical space to complain about?)

> As a bonus I should maybe also mention that even the document is
> (in my view, negatively)

An admission of subjectivity!  Keep that up--it's a good look on you.

> affected by these changes (and not just
> because of the .bp request) - compare the vertical space before "5.3
> Paragraphs" with the vertical space before "5.8 Keeps, boxed keeps,
> and displays".

Yes.  I did say previously that post-display vertical spacing should
probably _not_ accumulate with pre-heading spacing, and that moreover we
might want to introduce a new register admitting user tunability of
pre-heading spacing.  This is a worthy point--but it is worth holding up
the groff 1.23.0 release for?

> There is also surprisingly little vertical space before
> "8.2. Berkeley ms accent mark and glyph strings" (when there is a lot
> more vertical space before "8.1. AT&T ms accent mark strings"). That's
> all visible in

Those are additional instances of the same issue: `TE` before `NH`.

> This should all be seen in the context of the Groff Mission Statement:
>   "Backward compatibility with existing documents and usage will
>    remain a top priority, as will avoiding feature-bloat and increased
>    overheads."
> When there are these formatting differences even in its own
> documentation, there really isn't much value in a promise of "backward
> compatibility".

We fix formatting and other problems in our documentation _all the
time_.  Try reading some of the past 4,500 commits to the groff Git
repository to get an idea of how much of this activity takes place.

Both groff 1.22.4 and groff Git render the equation from the K&C paper
(above) that AT&T troff didn't in 1979.  I appreciate that you interpret
the Groff Mission Statement as mandating that we keep groff frozen and
unmaintained, but to hold to that principle you will have to decide
whether it should change to better reproduce AT&T bugs, or to better
reproduce its own historical bad behavior.

I surmise that you sense the tension in these goals, which is why you
keep refusing to engage my point about the missing equation as AT&T
rendered the K&C paper.

> commits responsible for all these changes:
> 3061f20f53e3616a8577fd2ecce1b068d0d66dd4 and
> 783f3c2745b8132a9b7fa99bd1b241d2e34f4398
> BTW, the NEWS entry doesn't mention ".TE" and also doesn't mention
> that pre-heading space is then also omitted (which is actually the
> most obvious/annoying difference).

I asked you--or an anonymous Savannah user whose concerns uncannily
coincide with yours in both topic and timing--directly whether you
thought documenting this would be an adequate remedy for the release[3]
(since Bertrand, our maintainer, desired only documentation changes for
1.23.0.rc4), and you, as usual, did not answer.

> And while we are at it - what about ".PE"?

Another fabulous example of Christof Meerwald scope control.

At any rate, I see no reason not to handle pic(1) inclusions like other
displays.  So what I envision is applying DD display distance to them
(before and after), not permitting that space to accumulate with
pargraph distance (PD), _but_ allowing it to accumulate with pre-heading
distance (for which we have no register as yet--and AT&T ms obviously
did not [not one that was documented, anyway]).

> And in documents where PD is significantly larger than DD, why would I
> only want DD spacing? If accumulation of DD+PD spacing is too big,
> maybe just using the maximum of DD and PD would be the more desirable
> option?

These are good questions.  One wonders why Lesk 1978 (the document) or
Version 7 Unix ms doesn't address these questions with perfect clarity.

Oh, I think I know your answer--whatever it did is perfect.  We'll treat
it as a TRIP test even though it was neither designed that way nor
intended to serve as an immutable model.[4]  (We know that from 4.2BSD's
ms as well as Research Unix's.)

...which leads us right back to the missing equation problem...again.

> And yes, maybe next week I'll notice more differences/regression in
> other documents... (I just haven't looked at any other documents yet)

You might need to find another groff developer to advocate for your
issues.  At this point I find my supply of patience with you is spent.

So that other people can help, I'm also attaching PDFs of the K&C
document as rendered by groff 1.22.4 and 1.23.0.  I made a couple of
other small changes to the source document (involving the `RP` macro
call and defining `CF` to get a page footer identifying the renderer).
I'm also attaching a scan of the document as rendered (presumably) by V7
Unix troff.  The page headers and footers were replaced by the publisher
Holt, Reinhart, and Winston.  I hope that these resources will permit an
informed discussion of which aspects of backward compatibility, a "top
priority" (with which version of which formatter?) to retain at the
expense of others.

To avoid getting lost in a mountain of details, I would pose some simple
tests that the reader can evaluate, recognizing that errors in vertical
space amounts tend to accumulate: what text is on the last page of
"Typesetting Mathematics" in the trade press version?  What text is on
groff 1.23.0's rendering of the document?  How do those compare?  What
text does groff 1.22.4 put on the last page?  How well does _that_
compare to the trade press version?  (You may, if you wish, repeat this
procedure for page 10, page 9, ...)

On net, is groff 1.23.0(.rc4)'s rendering of the document a regression
from that of groff 1.22.4, or not?

That is the essential question we must ask ourselves in a thread
entitled "Disposition of groff 1.23.0.rc4 feedback issues".

I think Christof Meerwald will gate our release forever if we let him.
That is why he keeps pivoting from one purported defect to another, and
promises to find more next week.

I say, don't let him gate our release forever.

Optimistically, if every groff release cycle has a Michael F. Witten,
that we've found ours for 1.23.0 reassures me that soon we really will
be able to get this thing out the door.


[1] Simple bitmap fonts excepted in some jurisdictions (like the U.S.)
    but not, as I understand it, in others (like Japan).



[4] I think I am beginning to understand at last the bifurcation between
    ms and mm, which occurred far earlier (ca. 1976) than my imagination
    could justify.  People doing Unix typesetter support must have faced
    a never-ending stream of demands from users who had wildly divergent
    mental models of how the macro package should work.  These users
    therefore needed a macro package with a more detailed and explicit
    specification, a lot more configuration knobs (because they "need
    the icon in cornflower blue"), and convenience macros for formatting
    itemized lists in 7 different ways instead of trusting the user to
    write their own.  I checked, and ms was indeed absent from Unix
    System III (1980).  You had mv(7) for slides (and "viewgraphs") and
    mm for everything else.  The Unix Room/CSRC/Room 1127 environment
    must have been very different from Unix Support.  It was a research
    lab.  One was expected to figure things out for oneself, and exhibit
    a bit of deference[5] to those with more longevity who had
    implemented the thing you were trying to use, and worked just down
    the hall.  (And even if you didn't want to "defer" to them, you
    could _go ask them_ why a thing was the way it was.)  Thanks to
    Damian McGuckin for gently steering me in the direction of this
    insight without expressing it in the gauche manner that I have.

[5] Albeit, perhaps, sometimes too much--but I'll practice my Thompson
    iconoclasm on another occasion.  I have no fear that one will arise.

Attachment: retypesetting.diff
Description: Text Data

Attachment: typesetting-mathematics-HRW.pdf
Description: typesetting-mathematics-HRW.pdf

Attachment: eqnuser-1.22.4.pdf
Description: Adobe PDF document

Attachment: eqnuser-1.23.0.rc4.pdf
Description: Adobe PDF document

Attachment: signature.asc
Description: PGP signature

reply via email to

[Prev in Thread] Current Thread [Next in Thread]