[texhax] output routine question: index "continued" lines

Paul Isambert zappathustra at free.fr
Wed Jun 9 09:44:03 CEST 2010


To be precise: the first box of box 255 is not \topskip in height, but 
is preceded by a glue so that glue+box height =  \topskip. Which doesn't 
matter for the line of reasonning.
Paul

Paul Isambert a écrit :
> Watch out interline glue and baseline distance.
> The first line (hbox) of box  255 is \topskip in height, instead of 
> \baselineskip, and anyway it won't adjust to the height of the added 
> line because \unvbox doesn't do so.
> On the other hand, when you \shipout box 255 with the added line, the 
> later has its naturel height, not \topskip, hence pages with added 
> lines will be shifted upward with respect to pages without.
> (Although \topskip will be added in the content is sent back because 
> \ht255>\pagegoal, reason why you might not see it on full pages.)
>
> And when you do \unvbox255 you should return the \outputpenalty (if 
> not 10000), otherwise the last box of box 255 will be followed by a 
> 10000 penalty, which will probably do no harm unless TeX rebuilds 
> exactly the same page plus the added line by shrinking here and there. 
> (I.e. \ht255 was indeed larger than \pagegoal, but then it was built 
> withouth shrink.)
>
> Paul
>
> Stan a écrit :
>> Thanks for the info, and the example.  I think I've made a macro that 
>> does (almost) what I want.  I'd greatly appreciate any comments you 
>> have, especially about possible shortcomings.  One thing I know it 
>> fails to do is deal properly with the spacing between the added "!" 
>> lines and the lines of text.
>>
>> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
>> \vsize=24pt%just two lines per page for this example
>>
>> \newif\iflineadded% conditional to test whether ! has been added already
>>
>> \output={%
>>     \iflineadded
>>         % if already added, do nothing
>>     \else
>>         \setbox255=\vbox{!\unvbox255}
>>         \global\lineaddedtrue
>>     \fi
>>     \ifdim\ht255>\pagegoal% if \box255 too high
>>         \unvbox255% send contents back to page builder
>>     \else
>>         \shipout\box255
>>         \global\lineaddedfalse
>>     \fi
>> }
>>
>>
>> Now is the time
>>
>> for all good men
>>
>> to come to the aid
>>
>> of the party.
>>
>> \bye
>>
>> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
>>
>>
>>
>> On Mon, 07 Jun 2010 03:34:43 -0500, Philip Taylor (Webmaster, Ret'd) 
>> <P.Taylor at rhul.ac.uk> wrote:
>>
>>>
>>>
>>> Stan wrote:
>>>> I'm trying to set up a basic output routine that will handle automatic
>>>> insertion of "continued" lines at the top of pages where appropriate.
>>>
>>> Let me address your final example first (I have to leave shortly) --
>>>
>>>> All of my attempts have resulted in the same type of error that 
>>>> results,
>>>> for example, from changing
>>>>
>>>> \output={\plainoutput}
>>>>
>>>> to
>>>>
>>>> \output={\plainoutput!}
>>>>
>>>> In other words, pages were ejected until some limitation was hit. 
>>>> (In my
>>>> case, I got a "TeX capacity exceeded, sorry [main memory 
>>>> size=2500000]"
>>>> message.)
>>>
>>> Because every time \output is threaded, it tries to append
>>> a shriek marker to the current page; you would want to
>>> look into the guts of \plainoutput to see how you could
>>> intercalate additional  material without causing this
>>> infinite loop.  A simple example is as follows; this
>>> shews the simplest output routine, followed by one that
>>> append a single line containing "!".
>>>
>>> \output = {\shipout \box 255 }
>>> Now is the time \eject
>>> for all good men \eject
>>> to come to the aid \eject
>>> of the party.
>>> \end
>>>
>>> \output = {\setbox 255 = \vbox {\unvbox 255 \centerline {!}}\shipout 
>>> \box 255 }
>>> Now is the time \eject
>>> for all good men \eject
>>> to come to the aid \eject
>>> of the party.
>>> \end
>> _______________________________________________
>> TeX FAQ: http://www.tex.ac.uk/faq
>> Mailing list archives: http://tug.org/pipermail/texhax/
>> More links: http://tug.org/begin.html
>>
>> Automated subscription management: 
>> http://tug.org/mailman/listinfo/texhax
>> Human mailing list managers: postmaster at tug.org
>
> _______________________________________________
> TeX FAQ: http://www.tex.ac.uk/faq
> Mailing list archives: http://tug.org/pipermail/texhax/
> More links: http://tug.org/begin.html
>
> Automated subscription management: http://tug.org/mailman/listinfo/texhax
> Human mailing list managers: postmaster at tug.org



More information about the texhax mailing list