groff
[Top][All Lists]
Advanced

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

Re: Proposed GNU troff behavior change: require end-of-input macros to e


From: Deri
Subject: Re: Proposed GNU troff behavior change: require end-of-input macros to exit
Date: Sun, 10 Dec 2023 18:43:42 +0000

On Saturday, 9 December 2023 19:25:27 GMT G. Branden Robinson wrote:
> At 2023-12-09T09:26:16-0500, Douglas McIlroy wrote:
> > > For historical reasons (and for compatibility with AT&T 'troff'),
> > > the end macro exits as soon as it causes a page break and
> > > no remaining data is in the partially collected line.
> > 
> > This isn't the only anomalous behavior at the end of a document. Since
> > day one, troff has occasionally emitted a blank page at the end. I
> > believe this is because a new page is triggered when the previous page
> > is filled rather than when some output needs somewhere to go. A
> > document that exactly fills the last page thus gets an extra page.
> 
> Right.  When a line of output is "finished" and sent to the device
> (device-independent output is prepared for it), the vertical position
> advances by one vee, and, (in groff, if vertical position traps are not
> disabled,) any visible vertical position traps planted between the
> previous text baseline and the new one are sprung.[1]  If one of these
> traps is what I term "the implicit page trap"[2], then the page is
> ejected and a new one started.

Is this the problem? It does not make sense to start a new page until groff 
"knows" there will be further output. So if the implicit page trap is 
triggered it should set a flag to trigger the new page code if further output, 
other than "x trailer", is output. This is an example of troff output:-

x T pdf
x res 72000 1 1
x init
p1
x font 5 TR
f5
s10000
V12000
H72000
mr 0 0 0
DFd
tline
n12000 0
V792000
H72000
tline
n12000 0
V792000
p2
x trailer
V792000
x stop

The V792000 and p2 are unnecessary unless there is further output.

Cheers 

Deri






reply via email to

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