[Top][All Lists]

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

Typesetting Mathematics by Kernighan and Cherry, retypeset

From: G. Branden Robinson
Subject: Typesetting Mathematics by Kernighan and Cherry, retypeset
Date: Fri, 1 Jul 2022 00:58:35 -0500

Hi folks,

Joerg van den Hoff's recent question on the bug-groff list motivated me
to look again at eqn.  groff's eqn(1) man page is not useful to learn
the program, even Schwarze-style--it is avowedly incomplete, mostly
documenting only differences from the AT&T implementation.

Also befuddled by the fact that our man page talks about "macros" (for
eqn, not *roff), but the AT&T documentation pointedly doesn't, I decided
to go back to the widely praised User's Guide by Kernighan & Cherry with
as few assumptions as possible and see what I could learn.

I furthermore wanted to retypeset this document with groff since its
source is available and the V7 Unix Programmer's Manual Volume 2 scans
on the Web are caked with flyspecks and other unpleasantness.

So I did.


1. A few bugs in vertical space management in groff ms were exposed.
2. An outright bug (arguably) in groff ms's MINGW register was revealed.
   Its value was ignored if there were only two columns.
3. Some stuff added to groff ms in 2007 was confirmed as being
4. Again arguably, a feature is missing from troff; character
   translations should be properties of the environment, not global.
   You will notice that the puncuation bracketing the page numbers is
   inconsistent.  Please discuss at the Savannah ticket if interested.
5. An equation was missing from the Unix V7 C/A/T-typeset rendition of
   this manual.  It is now restored.  This does not appear to have been
   a problem with the source.  Did something go wrong with old troff?
6. A feature is arguably missing from GNU eqn with respect to its "set"
   extension.  People shouldn't have to source-dive to recover default
   values for these pernickety parameters.

I made some very small changes to the source material, but none to
anything one might consider narrative; they are all commented and
explained.  The most important avoids lying about when the document was
rendered.  I used groff extensions unapologetically (but there wasn't
much to do).

Please find attached:

A. The re-typeset document in PostScript format.  (Until we give ms(7)
   support for pdfmark, I don't see much point in rendering to PDF.)
B. A diff to groff's s.tmac file, fixing issues 1, 2, and 3 above.
C. A diff between the sources as and my hacked-up version.  This
   includes a Makefile for convenience and a new file, "sbtl",
   implementing the only 2 AT&T Unix V7 ms macros it requires that groff
   doesn't implement, or implements differently (MH and UX).
D. A compressed tar(1) archive of this hacked-up version's sources.  You
   will need to alter the `GROFF` macro defined in the Makefile.  If you
   patch s.tmac in your groff installation, defining the macro as simply
   "groff" should work fine.

Feedback is appreciated.



Attachment: s.tmac.diff
Description: s.tmac.diff

Attachment: hacking-typesetting-mathematics-2e.diff
Description: hacking-typesetting-mathematics-2e.diff

Attachment: eqn-v7-hacked.tar.gz
Description: eqn-v7-hacked.tar.gz

Attachment: signature.asc
Description: PGP signature

reply via email to

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