summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/mkiv/page-sid.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mkiv/page-sid.mkiv')
-rw-r--r--Master/texmf-dist/tex/context/base/mkiv/page-sid.mkiv153
1 files changed, 15 insertions, 138 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkiv/page-sid.mkiv b/Master/texmf-dist/tex/context/base/mkiv/page-sid.mkiv
index 8033812447b..6f5d9f3571f 100644
--- a/Master/texmf-dist/tex/context/base/mkiv/page-sid.mkiv
+++ b/Master/texmf-dist/tex/context/base/mkiv/page-sid.mkiv
@@ -41,9 +41,6 @@
\newdimen \d_page_sides_progress
\newdimen \d_page_sides_page_total
-\newdimen \d_page_sides_leftoffset
-\newdimen \d_page_sides_rightoffset
-
%newbox \b_page_sides_bottom
\newcount \c_page_sides_lines_done
@@ -51,7 +48,6 @@
\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
@@ -81,9 +77,6 @@
\newdimen \d_page_sides_progression
-\newcount \c_page_sides_m_of_lines
-\newconditional \c_page_sides_delayed
-
\newif \iftracesidefloats % public (might change)
%D Defaults:
@@ -223,8 +216,6 @@
+\compensatedinnermakeupmargin
\relax
\fi
- \global\d_page_sides_leftoffset \d_page_sides_rightskip
- \global\d_page_sides_rightoffset\d_page_sides_leftskip
\ifdim\d_page_sides_rightskip>\zeropoint
\global\advance\d_page_sides_rightskip\rightskip
\fi
@@ -403,8 +394,7 @@
\endgroup
\else
\forcestrutdepth
- \fi
- \page_otr_command_set_vsize} % new
+ \fi}
\def\page_sides_flush_floats
{\par
@@ -551,43 +541,30 @@
\def\page_sides_inject_dummy_lines
{\par
\nointerlineskip
- % \ifnum\lastpenalty>\zerocount
- % \penalty\plustenthousand
- % \fi
\dontleavehmode
\iftracesidefloats
\page_sides_inject_dummy_line_traced
\else
\page_sides_inject_dummy_line_normal
\fi
- \par
- % on an empty page we have topskip, say 12pt
- \ignoreparskip
- % this can be 18.5pt
- \kern-\dimexpr\lineheight+\strutdp\relax
- % so we can actually have a -2.5pt skip on top
+ \vskip-\dimexpr\lineheight+\strutdp\relax
\ignoreparskip
\blank[\v!samepage]
- \blank[\v!disable]
- % now say we are negative now
- \ifdim\pagetotal<\zeropoint
- % then we're at the top of the page ... quite messy .. i really need to
- % make the page builder a bit more flexible .. should we do something now?
- \fi}
+ \blank[\v!disable]}
%D Checkers:
\def\page_sides_check_floats_after_par
{\page_sides_check_floats_indeed
\ifdim\d_page_sides_pagetotal=\pagetotal \else
- \glet\page_sides_check_floats\page_sides_check_floats_indeed
+ \global\let\page_sides_check_floats\page_sides_check_floats_indeed
\page_sides_flush_floats
\global\c_page_sides_n_of_lines\zerocount % here !
\fi}
\unexpanded\def\page_sides_flush_floats_after_par
{\global\d_page_sides_pagetotal\pagetotal
- \glet\page_sides_check_floats\page_sides_check_floats_after_par}
+ \global\let\page_sides_check_floats\page_sides_check_floats_after_par}
\unexpanded\def\page_sides_forget_floats
{\global\d_page_sides_vsize\d_page_sides_vsize_reset
@@ -674,49 +651,18 @@
\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
- {%\page_otr_command_set_vsize % this is new, otherwise topfloats are not taken into account
- \d_page_sides_progress\d_page_sides_vsize
+ {\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}
\def\page_sides_analyse_space
{\global\settrue\c_page_sides_flag
-% \ifdim\pagegoal=\maxdimen
-% \pagegoal\textheight % maybe
-% \fi
+ \page_sides_force_depth
\global\d_page_sides_page_total \pagetotal % global
\ifnum\c_page_sides_float_type<\plusfour
\global\d_page_sides_width \zeropoint
@@ -770,18 +716,8 @@
%D As we have no clear end of one or more paragraphs we only have pre float
%D skips.
-\newconstant\c_page_sides_page_method % will be: \c_page_sides_page_method\plusone
-
-\def\page_otr_force_new_page_one
- {\vskip\d_page_sides_height
- \penalty\outputpenalty
- \vskip-\dimexpr\d_page_sides_height-\strutdp\relax
- \prevdepth\strutdp}
- %\ignoreparskip}
-
-\def\page_sides_handle_float#1%
- {\page_sides_initialize_checker
- \page_sides_check_horizontal_skips
+\def\page_sides_handle_float#1% grid (4) is rather experimental
+ {\page_sides_check_horizontal_skips
\page_sides_check_vertical_skips
\page_sides_apply_horizontal_shift
\page_sides_check_previous_float
@@ -790,26 +726,13 @@
\page_sides_relocate_float{#1}%
\page_sides_apply_vertical_shift
\page_sides_analyse_space
- \ifconditional\c_page_floats_room
- \global\setfalse\c_page_sides_delayed
- % we're ok
- \else
- \global\settrue\c_page_sides_delayed
- \global\c_page_sides_m_of_lines\c_page_sides_n_of_lines
- \ifcase\c_page_sides_page_method
- \page_otr_fill_and_eject_page
- \or
- \page_otr_force_new_page_one
- \else
- \page_otr_fill_and_eject_page
- \fi
- \global\c_page_sides_n_of_lines\c_page_sides_m_of_lines
+ \ifconditional\c_page_floats_room \else
+ \page_otr_fill_and_eject_page
\page_sides_analyse_space
%\page_sides_inject_before
\page_sides_inject_dummy_lines
\fi
\page_sides_place_float
- \global\setfalse\c_page_sides_delayed
\page_sides_check_floats_reset
\page_sides_wrapup}
@@ -817,7 +740,8 @@
{% we need to do this aftergroup
\aftergroup\par
\aftergroup\ignoreparskip
- \aftergroup\ignorespaces}
+ \aftergroup\ignorespaces
+ }
\def\page_sides_check_floats_indeed
{\page_sides_analyse_progress
@@ -828,16 +752,7 @@
\fi
\parskip\s_spac_whitespace_parskip} % not needed
-% \let\page_sides_check_floats\page_sides_check_floats_indeed
-
-\let\page_sides_check_floats\relax
-
-\def\page_sides_initialize_checker
- {\ifx\page_sides_check_floats\relax
- \glet\page_sides_check_floats\page_sides_check_floats_indeed
- \clf_enablesidefloatchecker
- \glet\page_sides_initialize_checker\relax
- \fi}
+\let\page_sides_check_floats\page_sides_check_floats_indeed
\unexpanded\def\page_sides_check_floats_tracer
{\begingroup
@@ -856,30 +771,8 @@
\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}%
- \ifconditional\c_page_sides_delayed
- % For Alan's hanging right float that moved to the next page.
- \d_page_sides_progress\zeropoint
- \fi
\ifx\p_sidethreshold\v!old
\d_page_sides_progression\dimexpr\d_page_sides_progress+\strutht-\roundingeps\relax
\c_page_sides_n_of_hang\d_page_sides_progression
@@ -892,14 +785,8 @@
\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
@@ -935,7 +822,6 @@
\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
@@ -944,16 +830,7 @@
\fi}
\unexpanded\def\page_sides_check_floats_reset
- {\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 % no, otherwise a next hangindent won't work
- \c_page_sides_checks_done\zerocount
- \fi}
+ {\global\c_page_sides_checks_done\zerocount}
\unexpanded\def\page_sides_synchronize_floats
{\ifinner \else