diff options
author | Hans Hagen <pragma@wxs.nl> | 2018-07-13 10:51:35 +0200 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2018-07-13 10:51:35 +0200 |
commit | a8f63ee70a866cce43ee4b1bb5ba95ef8044243f (patch) | |
tree | 713c9d172e5e441ae131d6902d9e27f4cd9e89c8 /tex/context/base/mkiv/page-sid.mkiv | |
parent | ff693671b6540fa81d2ad7aecdbe786a4df97335 (diff) | |
download | context-a8f63ee70a866cce43ee4b1bb5ba95ef8044243f.tar.gz |
2018-07-13 09:55:00
Diffstat (limited to 'tex/context/base/mkiv/page-sid.mkiv')
-rw-r--r-- | tex/context/base/mkiv/page-sid.mkiv | 64 |
1 files changed, 63 insertions, 1 deletions
diff --git a/tex/context/base/mkiv/page-sid.mkiv b/tex/context/base/mkiv/page-sid.mkiv index 9ac95472a..e983455bc 100644 --- a/tex/context/base/mkiv/page-sid.mkiv +++ b/tex/context/base/mkiv/page-sid.mkiv @@ -48,6 +48,7 @@ \newcount \c_page_sides_n_of_lines \newcount \c_page_sides_n_of_hang \newconstant \c_page_sides_float_type +\newcount \c_page_sides_hangafter \newconditional \c_page_sides_short \newconditional \c_page_sides_flag @@ -656,12 +657,40 @@ \fi \endgroup} +% \def\page_sides_analyse_progress +% {\d_page_sides_progress\d_page_sides_vsize +% \ifconditional\c_page_sides_flag +% \advance\d_page_sides_progress-\d_page_sides_page_total +% \global\setfalse\c_page_sides_flag +% \else +% \advance\d_page_sides_progress-\pagetotal +% \fi} + +% test case +% +% \usemodule[art-01] +% \starttext +% \dorecurse{40}{\line{#1}} +% \placefigure[left]{}{} +% \input ward +% \startitemize +% \item word \item word \item word \item word +% \stopitemize +% \input ward +% \page +% \stoptext + \def\page_sides_analyse_progress {\d_page_sides_progress\d_page_sides_vsize \ifconditional\c_page_sides_flag \advance\d_page_sides_progress-\d_page_sides_page_total \global\setfalse\c_page_sides_flag \else + \ifdim\dimexpr\d_page_sides_progress+\d_page_sides_bottomtotal\relax>\pagegoal + % we adapt pagegoal because we can already have placed something with + % everypar and we hope that it triggers a flush, see test above + \pagegoal\dimexpr\pagegoal-\d_page_sides_bottomtotal\relax + \fi \advance\d_page_sides_progress-\pagetotal \fi} @@ -793,6 +822,24 @@ \fi \endgroup} +% tricky test: + +% \starttext +% \dorecurse{33}{\line{#1}} +% \placefigure[left]{}{} +% \input ward +% \startitemize +% \item word \item word \item word \item word +% \stopitemize +% \input ward +% \page +% \placefigure[left]{}{} +% \dontleavehmode \begingroup \input ward \par \endgroup +% \dontleavehmode \begingroup \input ward \par \endgroup +% \dontleavehmode \begingroup \input ward \par \endgroup +% \input ward +% \stoptext + \unexpanded\def\page_sides_check_floats_set {\edef\p_sidethreshold{\floatparameter\c!sidethreshold}% \ifx\p_sidethreshold\v!old @@ -807,8 +854,14 @@ \dimexpr\d_page_sides_progress-\p_sidethreshold\relax \fi \getnoflines\d_page_sides_progression + % this can be an option + \ifdim\dimexpr\noflines\lineheight>\dimexpr\pagegoal-\pagetotal\relax + \getrawnoflines\d_page_sides_progression + \fi + % \c_page_sides_n_of_hang\noflines \fi + \global\c_page_sides_hangafter\zerocount \ifnum\c_page_sides_n_of_hang>\zerocount \ifcase\c_page_sides_n_of_lines \else @@ -844,6 +897,7 @@ \else \hangindent \ifnum\c_page_sides_float_type>\plusfour -\fi\d_page_sides_width \hangafter-\c_page_sides_n_of_hang + \global\c_page_sides_hangafter\hangafter \fi \fi \global\advance\c_page_sides_checks_done \plusone @@ -852,7 +906,15 @@ \fi} \unexpanded\def\page_sides_check_floats_reset - {\global\c_page_sides_checks_done\zerocount} + {\ifcase\c_page_sides_checks_done\else + \ifcase\c_page_sides_hangafter\else + % we need to deal with par's ending in a group which would restore + % hang parameters + \global\c_page_sides_hangafter\zerocount + \hangindent\zeropoint + \fi + \global\c_page_sides_checks_done\zerocount + \fi} \unexpanded\def\page_sides_synchronize_floats {\ifinner \else |