summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/page-ini.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/page-ini.mkiv')
-rw-r--r--Master/texmf-dist/tex/context/base/page-ini.mkiv164
1 files changed, 112 insertions, 52 deletions
diff --git a/Master/texmf-dist/tex/context/base/page-ini.mkiv b/Master/texmf-dist/tex/context/base/page-ini.mkiv
index 6beba4492c5..07d3422829c 100644
--- a/Master/texmf-dist/tex/context/base/page-ini.mkiv
+++ b/Master/texmf-dist/tex/context/base/page-ini.mkiv
@@ -128,7 +128,7 @@
\ifx\dosetuplayout\undefined % overloaded in page-lay !
- \def\setuplayout{\dodoubleempty\getparameters[\??ly]}
+ \unexpanded\def\setuplayout{\dodoubleempty\getparameters[\??ly]}
\fi
@@ -187,13 +187,13 @@
{\appendtoks\dowithotrcommand#1\to\registeredotrcommands}
\def\dopresetotrcommand#1%
- {\expandafter\let\expandafter#1\csname\@@OTR
- \ifcsname\@@OTR\OTRidentifier\expandafter\gobbleoneargument\string#1\endcsname
- \OTRidentifier
- \else\ifcsname\@@OTR\OTRdefault\expandafter\gobbleoneargument\string#1\endcsname % fallback
- \OTRdefault
- \fi\fi
- \expandafter\gobbleoneargument\string#1\endcsname}
+ {\expandafter\let\expandafter#1\csname\@@OTR
+ \ifcsname\@@OTR\OTRidentifier\expandafter\gobbleoneargument\string#1\endcsname
+ \OTRidentifier
+ \else\ifcsname\@@OTR\OTRdefault\expandafter\gobbleoneargument\string#1\endcsname % fallback
+ \OTRdefault
+ \fi\fi
+ \expandafter\gobbleoneargument\string#1\endcsname}
\def\activateotr#1#2%
{\def\OTRidentifier{#1}%
@@ -222,17 +222,20 @@
\registerotrcommand\doflushfloats % \def\doflushfloats {\OTRcommand\doflushfloats}
\registerotrcommand\flushfloatbox % \def\flushfloatbox {\OTRcommand\flushfloatbox}
\registerotrcommand\docheckiffloatfits % \def\docheckiffloatfits {\OTRcommand\docheckiffloatfits}
-\registerotrcommand\someherefloat % \def\someherefloat {\OTRcommand\someherefloat}
-\registerotrcommand\somefixdfloat % \def\somefixdfloat {\OTRcommand\somefixdfloat}
-\registerotrcommand\somepagefloat % \def\somepagefloat {\OTRcommand\somepagefloat}
-\registerotrcommand\sometopsfloat % \def\sometopsfloat {\OTRcommand\sometopsfloat}
-\registerotrcommand\somebotsfloat % \def\somebotsfloat {\OTRcommand\somebotsfloat}
-\registerotrcommand\somesidefloat % \def\somesidefloat {\OTRcommand\somesidefloat}
\registerotrcommand\flushsavedfloats % \def\flushsavedfloats {\OTRcommand\flushsavedfloats}
\registerotrcommand\synchronizehsize % \def\synchronizehsize {\OTRcommand\synchronizehsize}
\registerotrcommand\gotonextpage % \def\gotonextpage {\OTRcommand\gotonextpage }
\registerotrcommand\gotonextpageX % \def\gotonextpageX {\OTRcommand\gotonextpageX} % will become obsolete
+% wrong, will be redone
+%
+% \registerotrcommand\someherefloat % \def\someherefloat {\OTRcommand\someherefloat}
+% \registerotrcommand\somefixdfloat % \def\somefixdfloat {\OTRcommand\somefixdfloat}
+% \registerotrcommand\somepagefloat % \def\somepagefloat {\OTRcommand\somepagefloat}
+% \registerotrcommand\sometopsfloat % \def\sometopsfloat {\OTRcommand\sometopsfloat}
+% \registerotrcommand\somebotsfloat % \def\somebotsfloat {\OTRcommand\somebotsfloat}
+% \registerotrcommand\somesidefloat % \def\somesidefloat {\OTRcommand\somesidefloat}
+
% beter een \installotr#1 met #1 = macro en auto test
\newif \iftraceotr
@@ -243,7 +246,7 @@
% When issuing two \par\penalty-\plustenthousand's, only the first
% triggers the otr; obscure feature or optimization?
-\def\outputcounter{-100010} % -10010
+\newcount\outputcounter \outputcounter=-100010 % -10010
\def\doinvokeoutput
{\iftraceotr
@@ -252,35 +255,50 @@
\expandafter\dodoinvokeoutput
\fi}
-\def\outputmessage#1#2#3%
- {\iftraceotr\writestatus\m!otr{#1 #2 \number#3}\fi}
+\def\doshowoutputmessage#1#2#3%
+ {\writestatus\m!otr{#1 #2 \number#3}}
\def\dodoinvokeoutput#1%
- {\outputmessage+{special}{#1}%
- \bgroup\par\penalty#1\relax\egroup
- \outputmessage-{special}{#1}}
+ {\bgroup\par\penalty#1\egroup}
\def\dodotracedoutput#1%
- {\outputmessage+{traced}{#1/\the\outputpenalty}%
+ {\doshowoutputmessage+{traced}{#1/\the\outputpenalty}%
\writestatus\m!otr{c:\number\mofcolumns,v:\the\vsize,g:\the\pagegoal,t:\the\pagetotal}%
\dodoinvokeoutput{#1}%
\writestatus\m!otr{c:\number\mofcolumns,v:\the\vsize,g:\the\pagegoal,t:\the\pagetotal}%
- \outputmessage-{traced}{#1/\the\outputpenalty}}
+ \doshowoutputmessage-{traced}{#1/\the\outputpenalty}}
\def\installoutput#1#2% \invoke \action
- {\decrement\outputcounter
- \edef#1{\noexpand\doinvokeoutput{\outputcounter}}%
- \setvalue{\@@OTR\outputcounter}{#2}}
+ {\global\advance\outputcounter\minusone
+ \edef#1{\noexpand\doinvokeoutput{\number\outputcounter}}%
+ \setvalue{\@@OTR\number\outputcounter}{#2}}
+
+\def\invoketracedoutputroutine
+ {\doshowoutputmessage+{trying}\outputpenalty
+ \ifcsname\@@OTR\the\outputpenalty\endcsname
+ \doshowoutputmessage+{special}\outputpenalty
+ \csname\@@OTR\the\outputpenalty\endcsname
+ \doshowoutputmessage-{special}\outputpenalty
+ \else
+ \doshowoutputmessage+{normal}\outputpenalty
+ \the\OTRcommand\output
+ \doshowoutputmessage-{normal}\outputpenalty
+ \fi
+ \doshowoutputmessage-{trying}\outputpenalty}
-\def\invokeoutputroutine
- {\outputmessage+{trying}\outputpenalty
- \executeifdefined{\@@OTR\the\outputpenalty}\dodonormaloutput
- \outputmessage-{trying}\outputpenalty}
+\def\invokenormaloutputroutine
+ {\ifcsname\@@OTR\the\outputpenalty\endcsname
+ \csname\@@OTR\the\outputpenalty\endcsname
+ \else
+ \the\OTRcommand\output
+ \fi}
-\def\dodonormaloutput
- {\outputmessage+{normal}\outputpenalty
- \the\OTRcommand\output
- \outputmessage-{normal}\outputpenalty}
+\def\invokeoutputroutine
+ {\iftraceotr
+ \expandafter\invoketracedoutputroutine
+ \else
+ \expandafter\invokenormaloutputroutine
+ \fi}
\mainoutput{\invokeoutputroutine} \output{\inotrtrue\the\mainoutput}
@@ -425,8 +443,6 @@
\newif\ifbalancingcolumns
\newif\ifcollectingcontent
\newif\ifcolumnoverflow
-\newif\iffinalflushingfloats
-\newif\ifpackflushedfloats \packflushedfloatstrue % for the moment
\newdimen\intercolumnwidth
\newdimen\localcolumnwidth
@@ -505,8 +521,7 @@
% but does not hurt either (we're still in the otr!)
\inpagebodytrue % needed for enabling \blank !
\flushsavedfloats % was \dosetbothinserts; only otr one !
- \setvsize % this is needed for interacting components, like floats and multicolumns
- \adaptfuzzypagegoal} % watch this hack!
+ \setvsize} % this is needed for interacting components, like floats and multicolumns
\def\dofinaloutput#1#2% \vbox: prevents spurious spaces in every..pagebody
{\forgetall
@@ -521,7 +536,6 @@
{\forgetall
\beforefinaloutput
\the\everybeforeshipout
- \setpagecounters
\message{[-\the\realpageno]}%
\setbox\scratchbox\hbox{\dopagebody#1#2}%
\deadcycles\zerocount
@@ -549,12 +563,13 @@
\fi#1#2%
\resetselectiepagina
\incrementpagenumber
+ \incrementsubpagenumber
\checkpagedimensions
\ifnum\outputpenalty>\superpenalty \else
\dosupereject
\fi
\doflushspread
- \dopostponeblock}
+ \doflushpostponedcontent}
\def\dooutput
{\finaloutput\unvbox\normalpagebox}
@@ -571,7 +586,7 @@
\space#1:\space\ascii\space
\!!doneatrue}}
-\def\placeversioninfo % nog engels maken
+\unexpanded\def\placeversioninfo % nog engels maken
{\ifcase\conceptmode
% 0 : nothing
\or
@@ -704,7 +719,48 @@
\v!frame=>\chardef\gridboxlinemode \plusthree,
\v!nonumber=>\chardef\gridboxlinenomode\zerocount,
\v!right=>\chardef\gridboxlinenomode\plusone,
- \v!left=>\chardef\gridboxlinenomode\plustwo]}
+ \v!left=>\chardef\gridboxlinenomode\plustwo,
+ \v!outer=>\chardef\gridboxlinenomode\plusthree]%
+ \ifcase\showgridstate
+ \let\addtextgridlayer\gobbleoneargument
+ \else % 1=bottom 2=top
+ \let\addtextgridlayer\doaddtextgridlayer
+ \fi}
+
+\definepalet
+ [layout]
+ [grid=red,
+ page=green]
+
+% if really needed for speed we can cache the grid
+
+\let\addtextgridlayer\gobbleoneargument
+
+\def\doaddtextgridlayer#1% to be checked for color and layer
+ {\startcolor[layout:grid]%
+ \setgridbox\scratchbox\makeupwidth\textheight % todo: check color
+ \global\setbox#1\hbox
+ {\ifcase\showgridstate\or\or\box#1\hskip-\makeupwidth\fi
+ \bgroup % color
+ \ifcase\layoutcolumns\else
+ \gray
+ \setlayoutcomponentattribute\v!grid\v!columns
+ \hbox \layoutcomponentboxattribute to \makeupwidth
+ {\dorecurse\layoutcolumns
+ {\hskip\layoutcolumnwidth
+ \ifnum\recurselevel<\layoutcolumns
+ \vrule
+ \!!height\ht\scratchbox
+ \!!depth\dp\scratchbox
+ \!!width\layoutcolumndistance
+ \fi}}%
+ \hskip-\makeupwidth
+ \fi
+ \setlayoutcomponentattribute\v!grid\v!lines
+ \hbox \layoutcomponentboxattribute{\box\scratchbox}%
+ \egroup
+ \ifcase\showgridstate\or\hskip-\makeupwidth\box#1\fi}%
+ \stopcolor}
\def\buildpagebox#1%
{\setbox#1\vbox to \paperheight
@@ -840,10 +896,10 @@
{%\getallmarks % now in following token register
\the\everybeforepagebody
\starttextproperties
- \setnextsubpageno % nog eens: als in pagina (tbv standaard opmaak)
+% \setnextsubpageno % nog eens: als in pagina (tbv standaard opmaak)
\dontshowboxes % dan hier blokkeren en verderop resetten
-% \shipoutfacingpage
- \checkmargeblokken
+% \shipoutfacingpage
+ \checkmarginblocks
\the\beforeeverypage
\normalexpanded{\global\beforepage\emptytoks\the\beforepage}% \scratchtoks\beforepage\global\beforepage\emptytoks\the\scratchtoks % was \flushtoks\beforepage
\inpagebodytrue\buildpagebody#1#2%
@@ -1009,7 +1065,13 @@
\executepagebreakhandler\v!yes
\fi
\ifnum\prevrealpageno<\realpageno
- \global\chardef\pageornamentstate\zerocount
+ % there must have been a reason why i added the ifcase
+ % but it fails on tests/mkiv/pages/ornaments-001.tex
+ % as WS found out so we have to wait till the next side
+ % effect shows up
+ % \ifcase\pageornamentstate\or
+ \global\chardef\pageornamentstate\zerocount
+ % \fi
\fi
\egroup}
@@ -1182,14 +1244,12 @@
% \definepagebreak[instance][forsure]
% \definepagebreak[forsure][yes,+4]
-\def\definepagebreak
+\unexpanded\def\definepagebreak
{\dodoubleargument\dodefinepagebreak}
\def\dodefinepagebreak[#1][#2]% non recursive, meant for simple mappings
{\setvalue{\??pe::#1}{#2}}
-% hier nog uti blokkeren
-
% don't change this / test case:
%
% \setupbackgrounds[state=repeat]
@@ -1201,7 +1261,7 @@
\long\def\installcolumnbreakhandler#1#2#3% #1=otr-id #2=tag
{\long\setvalue{\??cn:#1:#2}{#3}}
-\def\definecolumnbreak
+\unexpanded\def\definecolumnbreak
{\dodoubleargument\dodefinecolumnbreak}
\def\dodefinecolumnbreak[#1][#2]% non recursive, meant for simple mappings
@@ -1402,10 +1462,10 @@
\newbox\facingpage
-\def\setupoppositeplacing
+\unexpanded\def\setupoppositeplacing
{\dodoubleargument\getparameters[\??np]}
-\def\startopposite
+\unexpanded\def\startopposite
{\dowithnextboxcontent
{\hsize\makeupwidth}%
{\global\setbox\facingpage\vbox
@@ -1418,7 +1478,7 @@
\box\nextbox}}%
\vbox\bgroup}
-\def\stopopposite
+\unexpanded\def\stopopposite
{\egroup}
\def\finishfacingpage