<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=FR link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>BTW, I could write a MWE for the case when \prevgraf aggregates number of lines for 2 paragraphs (sometimes).</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>\starttext</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>\dorecurse{15}{</p><p class=MsoNormal>One line par.\par\nobreak A\\ B\\ C\\ D\\ E\\ F\\ G\\ H\\ I\\ J\\ K\\ L \\M\\ N.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>\the\prevgraf</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>}</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>\stoptext</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>In some cases when « One line par » appears at first line of page (except the first one in this MWE output at least), you might see « 15 » after N. line.</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='border:none;padding:0cm'><b>De : </b><a href="mailto:josephcanedo@gmail.com">Joseph Canedo</a><br><b>Envoyé le :</b>lundi 5 mars 2018 16:32<br><b>À : </b><a href="mailto:ntg-context@ntg.nl">mailing list for ConTeXt users</a><br><b>Objet :</b>RE: [NTG-context] prevgraf change if page break occurs in a paragraph</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>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.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I use grid typesetting so normally all lines have same height ?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b>De : </b><a href="mailto:pragma@wxs.nl">Hans Hagen</a><br><b>Envoyé le :</b>lundi 5 mars 2018 16:06<br><b>À : </b><a href="mailto:ntg-context@ntg.nl">ntg-context@ntg.nl</a><br><b>Objet :</b>Re: [NTG-context] prevgraf change if page break occurs in a paragraph<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>On 3/5/2018 3:51 PM, Joseph Canedo wrote:<o:p></o:p></p><p class=MsoNormal>> If I have a callback called just after paragraph has been split into <o:p></o:p></p><p class=MsoNormal>> lines, would not be enough to count the number of hboxes in the vbox the <o:p></o:p></p><p class=MsoNormal>> paragraph itself is contained ? Cannot say it’s ideal (easier to simply <o:p></o:p></p><p class=MsoNormal>> read tex.prevgraf for sure), but might be possible, unless I missed <o:p></o:p></p><p class=MsoNormal>> something (totally possible).<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> In a couple of cases I see \prevgraf being larger than number of lines <o:p></o:p></p><p class=MsoNormal>> of previous paragraph, including lines for paragraph before than one as <o:p></o:p></p><p class=MsoNormal>> well. Could not create a MWE unfortunately to reproduce this case so far.<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> I’ll try to amend my dropcaps/lettrine logic then. What are the reasons <o:p></o:p></p><p class=MsoNormal>> behind this change in \prevgraf TeX primitive which AFAIK exists since <o:p></o:p></p><p class=MsoNormal>> TeX has been written ? I thought that one of the strong points in TeX <o:p></o:p></p><p class=MsoNormal>> was overall stability of its behaviour among versions. Here with this <o:p></o:p></p><p class=MsoNormal>> semantic change in \prevgraf in recent luatex, this stability is a bit <o:p></o:p></p><p class=MsoNormal>> broken IMO.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>it's *not changed* in luatex .. context *itself* sets the prevgraf at <o:p></o:p></p><p class=MsoNormal>the next page as indicator of the left-over lines<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>say that you have:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>XXX ------------------<o:p></o:p></p><p class=MsoNormal>XXX ------------------<o:p></o:p></p><p class=MsoNormal>----------------------<o:p></o:p></p><p class=MsoNormal>----------------------<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>- a page break between the first and second line is a bug in your code<o:p></o:p></p><p class=MsoNormal>- a page break after the second line is harmless and as we're on a new <o:p></o:p></p><p class=MsoNormal>page then there is nothing to be done i.e. prevgraf then is set to 2 (as <o:p></o:p></p><p class=MsoNormal>we have two lines if we look back)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>say that you have:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>XXX ------------------<o:p></o:p></p><p class=MsoNormal>XXX<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>- if you get a page break here, again there is nothing to be done as <o:p></o:p></p><p class=MsoNormal>you're on a next page<o:p></o:p></p><p class=MsoNormal>- if you need to pick up in the next pagagraph (on the same page) then<o:p></o:p></p><p class=MsoNormal>prevgraf is 1<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>so, what in your case does it mean that when your next paragraph is on <o:p></o:p></p><p class=MsoNormal>the next page you look at prevgraf? there is no need to hangindent as <o:p></o:p></p><p class=MsoNormal>your hanging stuff is on the previous page<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>also, in general prevgraf is kind of useless when you have lines higher <o:p></o:p></p><p class=MsoNormal>than lineheight so if you use a callback, you also should calculate the <o:p></o:p></p><p class=MsoNormal>real accumulated drop so far<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>> Joseph<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> *De : *Hans Hagen <mailto:pragma@wxs.nl><o:p></o:p></p><p class=MsoNormal>> *Envoyé le :*lundi 5 mars 2018 10:15<o:p></o:p></p><p class=MsoNormal>> *À : *ntg-context@ntg.nl <mailto:ntg-context@ntg.nl><o:p></o:p></p><p class=MsoNormal>> *Objet :*Re: [NTG-context] prevgraf change if page break occurs in a <o:p></o:p></p><p class=MsoNormal>> paragraph<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> On 3/5/2018 9:43 AM, Joseph Canedo wrote:<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>  > I see. I use prevgraf to get number of lines in most recent paragraph to<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>  > compute eventually hangindent if there is a lettrine in paragraph (in<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>  > case first paragraph has fewer lines than the lettrine itself, of course<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>  > next paragraph needs to setup hangindent properly).<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> but .. that one is then still on the same page; in fact, you should<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> check for realpage being changed then<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>  > I guess as an alternative, I could use the callback after paragraph is<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>  > split in N lines to count the number of lines, or is this number can be<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>  > accessed via some other existing variable in tex lua « table » ?<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>  > Currently I access prevgraf value Inside lua. Probably better than<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>  > making things more complicated in luatex itself.<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> prevgraf is still ok after a 7 line paragraph but ... when you cross a<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> page, and have say 4 lines moved to the next one, then a 7 line<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> hangafter would be wrong (you can check if a par is on the same page)<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> with callbacks after breaking in lines you still don't know ...<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> Hans<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> -----------------------------------------------------------------<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>                                             Hans Hagen | PRAGMA ADE<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>                 Ridderstraat 27 | 8061 GH Hasselt | The Netherlands<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>          tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> -----------------------------------------------------------------<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> ___________________________________________________________________________________<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> If your question is of interest to others as well, please add an entry <o:p></o:p></p><p class=MsoNormal>> to the Wiki!<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> maillist : ntg-context@ntg.nl / <o:p></o:p></p><p class=MsoNormal>> http://www.ntg.nl/mailman/listinfo/ntg-context<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> webpage  : http://www.pragma-ade.nl / http://context.aanhet.net<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> archive  : https://bitbucket.org/phg/context-mirror/commits/<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> wiki     : http://contextgarden.net<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> ___________________________________________________________________________________<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> ___________________________________________________________________________________<o:p></o:p></p><p class=MsoNormal>> If your question is of interest to others as well, please add an entry to the Wiki!<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context<o:p></o:p></p><p class=MsoNormal>> webpage  : http://www.pragma-ade.nl / http://context.aanhet.net<o:p></o:p></p><p class=MsoNormal>> archive  : https://bitbucket.org/phg/context-mirror/commits/<o:p></o:p></p><p class=MsoNormal>> wiki     : http://contextgarden.net<o:p></o:p></p><p class=MsoNormal>> ___________________________________________________________________________________<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>-- <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>-----------------------------------------------------------------<o:p></o:p></p><p class=MsoNormal>                                           Hans Hagen | PRAGMA ADE<o:p></o:p></p><p class=MsoNormal>               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands<o:p></o:p></p><p class=MsoNormal>        tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl<o:p></o:p></p><p class=MsoNormal>-----------------------------------------------------------------<o:p></o:p></p><p class=MsoNormal>___________________________________________________________________________________<o:p></o:p></p><p class=MsoNormal>If your question is of interest to others as well, please add an entry to the Wiki!<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context<o:p></o:p></p><p class=MsoNormal>webpage  : http://www.pragma-ade.nl / http://context.aanhet.net<o:p></o:p></p><p class=MsoNormal>archive  : https://bitbucket.org/phg/context-mirror/commits/<o:p></o:p></p><p class=MsoNormal>wiki     : http://contextgarden.net<o:p></o:p></p><p class=MsoNormal>___________________________________________________________________________________<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>