# [NTG-context] prevgraf change if page break occurs in a paragraph

Hans Hagen pragma at wxs.nl
Mon Mar 5 17:28:56 CET 2018

On 3/5/2018 4:33 PM, Joseph Canedo wrote:
> I see. So is it reliable to simply use lua function
> tex.getcount(‘realpageno’) in vertical mode to determine that page has
> changed ? Or do I need some other mechanism please ? If page has changed
> I agree that there is no need to deal with hangindent.

i don't know your logic but say that you have a dropped thingie that is
5 lines high then you can check for available room

\setbox\scratchbox\hbox{...}
\getnoflines{\htdp\scratchbox}
\testpage[\noflines]

then you're for sure on the next page in which case your prevgraf is
what you expect (assuming you stay on that page for a while)

> I use grid typesetting so normally all lines have same height ?

they get snapped so they can take nlines

(the prevgraf variable just counts lines and doesn't look at the
dimensions)

> *De : *Hans Hagen <mailto:pragma at wxs.nl>
> *Envoyé le :*lundi 5 mars 2018 16:06
> *À : *ntg-context at ntg.nl <mailto:ntg-context at ntg.nl>
> *Objet :*Re: [NTG-context] prevgraf change if page break occurs in a
> paragraph
>
> On 3/5/2018 3:51 PM, Joseph Canedo wrote:
>
>  > If I have a callback called just after paragraph has been split into
>
>  > lines, would not be enough to count the number of hboxes in the vbox the
>
>  > paragraph itself is contained ? Cannot say it’s ideal (easier to simply
>
>  > read tex.prevgraf for sure), but might be possible, unless I missed
>
>  > something (totally possible).
>
>  >
>
>  > In a couple of cases I see \prevgraf being larger than number of lines
>
>  > of previous paragraph, including lines for paragraph before than one as
>
>  > well. Could not create a MWE unfortunately to reproduce this case so far.
>
>  >
>
>  > I’ll try to amend my dropcaps/lettrine logic then. What are the reasons
>
>  > behind this change in \prevgraf TeX primitive which AFAIK exists since
>
>  > TeX has been written ? I thought that one of the strong points in TeX
>
>  > was overall stability of its behaviour among versions. Here with this
>
>  > semantic change in \prevgraf in recent luatex, this stability is a bit
>
>  > broken IMO.
>
> it's *not changed* in luatex .. context *itself* sets the prevgraf at
>
> the next page as indicator of the left-over lines
>
> say that you have:
>
> XXX ------------------
>
> XXX ------------------
>
> ----------------------
>
> ----------------------
>
> - a page break between the first and second line is a bug in your code
>
> - a page break after the second line is harmless and as we're on a new
>
> page then there is nothing to be done i.e. prevgraf then is set to 2 (as
>
> we have two lines if we look back)
>
> say that you have:
>
> XXX ------------------
>
> XXX
>
> - if you get a page break here, again there is nothing to be done as
>
> you're on a next page
>
> - if you need to pick up in the next pagagraph (on the same page) then
>
> prevgraf is 1
>
> so, what in your case does it mean that when your next paragraph is on
>
> the next page you look at prevgraf? there is no need to hangindent as
>
> your hanging stuff is on the previous page
>
> also, in general prevgraf is kind of useless when you have lines higher
>
> than lineheight so if you use a callback, you also should calculate the
>
> real accumulated drop so far
>
>  > Joseph
>
>  >
>
>  > *De : *Hans Hagen <mailto:pragma at wxs.nl>
>
>  > *Envoyé le :*lundi 5 mars 2018 10:15
>
>  > *À : *ntg-context at ntg.nl <mailto:ntg-context at ntg.nl>
>
>  > *Objet :*Re: [NTG-context] prevgraf change if page break occurs in a
>
>  > paragraph
>
>  >
>
>  > On 3/5/2018 9:43 AM, Joseph Canedo wrote:
>
>  >
>
>  >  > I see. I use prevgraf to get number of lines in most recent
> paragraph to
>
>  >
>
>  >  > compute eventually hangindent if there is a lettrine in paragraph (in
>
>  >
>
>  >  > case first paragraph has fewer lines than the lettrine itself, of
> course
>
>  >
>
>  >  > next paragraph needs to setup hangindent properly).
>
>  >
>
>  > but .. that one is then still on the same page; in fact, you should
>
>  >
>
>  > check for realpage being changed then
>
>  >
>
>  >  > I guess as an alternative, I could use the callback after paragraph is
>
>  >
>
>  >  > split in N lines to count the number of lines, or is this number
> can be
>
>  >
>
>  >  > accessed via some other existing variable in tex lua « table » ?
>
>  >
>
>  >  > Currently I access prevgraf value Inside lua. Probably better than
>
>  >
>
>  >  > making things more complicated in luatex itself.
>
>  >
>
>  > prevgraf is still ok after a 7 line paragraph but ... when you cross a
>
>  >
>
>  > page, and have say 4 lines moved to the next one, then a 7 line
>
>  >
>
>  > hangafter would be wrong (you can check if a par is on the same page)
>
>  >
>
>  > with callbacks after breaking in lines you still don't know ...
>
>  >
>
>  > Hans
>
>  >
>
>  > -----------------------------------------------------------------
>
>  >
>
>  >                                             Hans Hagen | PRAGMA ADE
>
>  >
>
>  >                 Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
>
>  >
>
>  >          tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
>
>  >
>
>  > -----------------------------------------------------------------
>
>  >
>
>  >
> ___________________________________________________________________________________
>
>  >
>
>
>  > to the Wiki!
>
>  >
>
>  > maillist : ntg-context at ntg.nl /
>
>  > http://www.ntg.nl/mailman/listinfo/ntg-context
>
>  >
>
>  > webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
>
>  >
>
>  > archive  : https://bitbucket.org/phg/context-mirror/commits/
>
>  >
>
>  > wiki     : http://contextgarden.net
>
>  >
>
>  >
> ___________________________________________________________________________________
>
>  >
>
>  >
>
>  >
>
>  >
> ___________________________________________________________________________________
>
> entry to the Wiki!
>
>  >
>
>  > maillist : ntg-context at ntg.nl /
> http://www.ntg.nl/mailman/listinfo/ntg-context
>
>  > webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
>
>  > archive  : https://bitbucket.org/phg/context-mirror/commits/
>
>  > wiki     : http://contextgarden.net
>
>  >
> ___________________________________________________________________________________
>
>  >
>
> --
>
> -----------------------------------------------------------------
>
>                                             Hans Hagen | PRAGMA ADE
>
>                 Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
>
>          tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
>
> -----------------------------------------------------------------
>
> ___________________________________________________________________________________
>
> to the Wiki!
>
> maillist : ntg-context at ntg.nl /
> http://www.ntg.nl/mailman/listinfo/ntg-context
>
> webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
>
> archive  : https://bitbucket.org/phg/context-mirror/commits/
>
> wiki     : http://contextgarden.net
>
> ___________________________________________________________________________________
>
>
>
> ___________________________________________________________________________________
> If your question is of interest to others as well, please add an entry to the Wiki!
>
> maillist : ntg-context at ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
> webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
> archive  : https://bitbucket.org/phg/context-mirror/commits/
> wiki     : http://contextgarden.net
> ___________________________________________________________________________________
>

--

-----------------------------------------------------------------