summaryrefslogtreecommitdiff
path: root/tex/context/base/mkxl/page-one.mkxl
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkxl/page-one.mkxl')
-rw-r--r--tex/context/base/mkxl/page-one.mkxl65
1 files changed, 55 insertions, 10 deletions
diff --git a/tex/context/base/mkxl/page-one.mkxl b/tex/context/base/mkxl/page-one.mkxl
index 4a4ce6014..116f2146d 100644
--- a/tex/context/base/mkxl/page-one.mkxl
+++ b/tex/context/base/mkxl/page-one.mkxl
@@ -35,6 +35,39 @@
\protected\def\page_one_command_set_float_hsize
{\global\hsize\textwidth}
+%D It's complicated:
+
+\newconditional\c_page_one_set_vsize_tmp
+
+\installtextracker{otr.insertheights}
+ {\settrue\c_page_one_set_vsize_tmp}
+ {\setfalse\c_page_one_set_vsize_tmp}
+
+\def\page_one_command_set_vsize_tmp
+ {\settotalinsertionheight
+ \writestatus
+ {set vsize one}
+ {insert heights=\the\insertheights,
+ total insertion height=\the\totalinsertionheight,
+ delta=\the\dimexpr\insertheights-\totalinsertionheight}%
+ \page_one_command_set_vsize_new}
+
+\def\page_one_command_set_vsize_old
+ {\settotalinsertionheight
+ \pagegoal\dimexpr
+ \vsize
+ -\totalinsertionheight
+ \relax}
+
+\def\page_one_command_set_vsize_new
+ {\pagegoal\dimexpr
+ \vsize
+ -\d_page_floats_inserted_top
+ -\d_page_floats_inserted_bottom
+ -\insertheights
+ \relax
+ \insertheights\zeropoint}
+
\protected\def\page_one_command_set_vsize
{\ifgridsnapping
\ifcase\layoutlines
@@ -49,12 +82,14 @@
\global\advance\vsize\d_page_adapts_delta
% alternatively we could set it in builders.buildpage_filter
% \ifdim\pagegoal<\maxdimen .. \fi
- \pagegoal\dimexpr
- \vsize
- -\d_page_floats_inserted_top
- -\d_page_floats_inserted_bottom
- -\insertheights
- \relax}
+ % \writestatus{!!!!!!!!}{\the\vsize-> v:\the\pagevsize,g:\the\pagegoal,t:\the\pagetotal,i:\the\insertheights}%
+ \ifconditional\c_page_one_set_vsize_tmp
+ \page_one_command_set_vsize_tmp
+ \orelse\ifzeropt\insertheights
+ \page_one_command_set_vsize_old
+ \else
+ \page_one_command_set_vsize_new
+ \fi}
% 1 = partial page, 2 = whole page, 3 = partial page
@@ -581,14 +616,24 @@
% \page_floats_report_total
% \dohandlenextfloatindent}
+% \def\page_one_place_float_here_indeed
+% {\ifgridsnapping
+% % otherwise real bad outcome
+% \else
+% % this was not really applied (delayed)
+% % \baselinecorrection % this has to be done better (and definitely not in column mode)
+% % so we now use this:
+% \checkprevdepth
+% \fi
+% \doplacefloatbox
+% \page_floats_report_total
+% \dohandlenextfloatindent}
+
\def\page_one_place_float_here_indeed
{\ifgridsnapping
% otherwise real bad outcome
\else
- % this was not really applied (delayed)
- % \baselinecorrection % this has to be done better (and definitely not in column mode)
- % so we now use this:
- \checkprevdepth
+ \forcestrutdepth
\fi
\doplacefloatbox
\page_floats_report_total