groff
[Top][All Lists]
Advanced

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

Re: -ms regression


From: G. Branden Robinson
Subject: Re: -ms regression
Date: Fri, 10 Nov 2023 17:56:25 -0600

Hi Doug,

At 2023-11-10T17:55:18-0500, Douglas McIlroy wrote:
> This diagnostic in -ms 1.23.0 breaks a document that works with 1.22.4:
> 
>         error: .AB is not allowed after first .AB, .LP, .PP, .IP, .SH or .NH
> 
> This dictum is unreasonably prescriptive. The "error" is the
> appearance of .LP in a cover sheet for the document.

Where in the cover sheet?  I find I can use it without error or
disruption inside an abstract.  See attachment.

If I abuse `LP` to try to put some space after an author, say to name
another author, then I get similar diagnostics.

--- /tmp/LP-in-abstract-OK.ms   2023-11-10 17:27:48.780369355 -0600
+++ /tmp/LP-in-abstract-BAD.ms  2023-11-10 17:27:48.780369355 -0600
@@ -3,6 +3,8 @@
 The Twin Prime Paradox
 .AU
 I. M. Brilliante
+.LP
+T. S. Clown
 .AI
 Bumblescum College
 .AB

$ nroff -ms -z /tmp/LP-in-abstract-BAD.ms
s.tmac:/tmp/LP-in-abstract-BAD.ms:10: error: .AB is not allowed after first 
.AB, .LP, .PP, .IP, .SH or .NH
s.tmac:/tmp/LP-in-abstract-BAD.ms:22: error: .AE without .AB

But without seeing your input, I can't be sure that's what's going on.

Let me attempt to stick to my prescriptivist guns and see if I am
persuasive.

In ms(7), paragraphing macros have multiple functions.  They end a
previous paragraph, they start a new one, and--importantly for our
purposes--they tell the macro package that the document's front matter
is complete and that the document proper is starting.

   Document description macros
       Define information describing the document by calling the macros
       below in the order shown; .DA or .ND can be called to set the
       document date (or other identifier) at any time before (a) the
       abstract, if present, or (b) its information is required in a
       header or footer.  Use of these macros is optional, except that
       .TL is mandatory if any of .RP, .AU, .AI, or .AB is called, and
       .AE is mandatory if .AB is called.

   [synopses for RP, TL, AU, AI, DA, ND, AB, and AE follow]

So when `LP` or `PP` appears as the next macro call after `TL`,[1] how
is the package to know whether you're using it to get some space in the
output, or inaugurating your main matter?

After my "Retypesetting Mathematics" adventure, where I observed many
differences among ms(7) implementations in vertical placement of cover
sheet material,[2] I decided that only safe way to manage vertical
spacing in ms(7) front matter was with formatter requests--except inside
an abstract, where you have more flexibility because it's
block-structured: there _must_ be an `AE` call to conclude the abstract,
so the macro package does not get into a confused state.

What do you think?

If I am not persuasive, please consider sharing the document source, or
at least the initial part of it, with me and I'll see what happens when
I crash my mental model of The Right Way(tm) up against the work of your
practiced hand.

Regards,
Branden

[1] or `AU`, or `AI`
[2] https://github.com/g-branden-robinson/retypesetting-mathematics

Attachment: LP-in-abstract-OK.ms
Description: Troff MS-macros document

Attachment: signature.asc
Description: PGP signature


reply via email to

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