summaryrefslogtreecommitdiff
path: root/tex/context/base/mkxl/page-lay.mkxl
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkxl/page-lay.mkxl')
-rw-r--r--tex/context/base/mkxl/page-lay.mkxl40
1 files changed, 29 insertions, 11 deletions
diff --git a/tex/context/base/mkxl/page-lay.mkxl b/tex/context/base/mkxl/page-lay.mkxl
index 835a3ca4b..4527759b3 100644
--- a/tex/context/base/mkxl/page-lay.mkxl
+++ b/tex/context/base/mkxl/page-lay.mkxl
@@ -123,7 +123,7 @@
\doifnothing{\directlayoutparameter\c!state}{\letlayoutparameter\c!state\v!start}%
\to \everydefinelayout
-\newconditional \layouthaschanged \settrue\layouthaschanged % used in mp
+\newcount\c_page_layouts_changed
\appendtoks
\ifcase\layoutsetupmode
@@ -155,13 +155,9 @@
\page_layouts_synchronize
\page_layouts_check_next
\fi
- \global\settrue\layouthaschanged
+ \global\c_page_layouts_changed\realpageno
\to \everysetuplayout
-\appendtoks
- \global\setfalse\layouthaschanged
-\to \everyaftershipout
-
\permanent\def\doifelselayoutdefined#1%
{\ifcsname\namedlayouthash{#1}\c!state\endcsname % maybe a helper
\expandafter\firstoftwoarguments
@@ -218,12 +214,22 @@
\newtoks\everyswapmargins % watch the order !
+\newconditional\marginsareswapped
+
\appendtoks
+ \ifconditional\marginsareswapped
+ \setfalse\marginsareswapped
+ \else
+ \settrue\marginsareswapped
+ \fi
+ %
\enforced\swapcsvalues\leftmargindistance\rightmargindistance
\enforced\swapcsvalues\leftedgedistance \rightedgedistance
\enforced\swapcsvalues\leftmarginwidth \rightmarginwidth
\enforced\swapcsvalues\leftedgewidth \rightedgewidth
%
+ \enforced\swapcsvalues\backspace \cutspace
+ %
\enforced\swapcsvalues\leftmargintotal \rightmargintotal
\enforced\swapcsvalues\leftedgetotal \rightedgetotal
\enforced\swapcsvalues\leftsidetotal \rightsidetotal
@@ -754,9 +760,9 @@
\ifx\p_direction\v!reverse
\enforced\global\swapcsvalues\naturalleftedgedistance \naturalrightedgedistance
\enforced\global\swapcsvalues\naturalleftmargindistance\naturalrightmargindistance
- \enforced\global\swapcsvalues\leftedgedistance \rightedgedistance
\enforced\global\swapcsvalues\leftmargindistance \rightmargindistance
\enforced\global\swapcsvalues\leftmarginwidth \rightmarginwidth
+ \enforced\global\swapcsvalues\leftedgedistance \rightedgedistance
\enforced\global\swapcsvalues\leftedgewidth \rightedgewidth
\enforced\global\swapcsvalues\backspace \cutspace
\expandafter\setsystemmode
@@ -1256,13 +1262,16 @@
\aliased\let\doifmarginswapelse\doifelsemarginswap
\protected\def\page_layouts_swap_margins % name will change, frozen?
- {\doifelsemarginswap\relax\page_layouts_swap_margins_indeed}
+ {\doifelsemarginswap\gobbleoneargument\page_layouts_swap_margins_indeed}
-\protected\def\page_layouts_swap_margins_indeed
- {\let\page_layouts_swap_margins \relax % to prevent local swapping
- \let\page_layouts_swap_margins_indeed\relax % to prevent local swapping
+\protected\def\page_layouts_swap_margins_indeed#1%
+ {\let\page_layouts_swap_margins\gobbleoneargument % to prevent local swapping
+ %\writestatus\m!layouts{swapping margins for #1}%
\the\everyswapmargins}
+\permanent\protected\def\swapmargindimensions
+ {\page_layouts_swap_margins\v!page}
+
\permanent\def\rightorleftpageaction
{\ifdoublesided
\expandafter\page_layouts_right_or_left_page_action
@@ -1353,6 +1362,15 @@
\glet\page_grids_add_to_one\gobbleoneargument
\glet\page_grids_add_to_mix\gobbleoneargument
+%D Play safe:
+
+\appendtoks
+ \ifnum\realpageno>\plusone
+ \page[\v!odd]%
+ \setuplayout
+ \fi
+\to \everysetuppagenumbering
+
%D The default dimensions are quite old and will not change. The funny fractions
%D were introduced when we went from fixed dimensions to relative ones. Since
%D \CONTEXT\ is a dutch package, the dimensions are based on the metric system. The