From 87020c1d54ea9608876f219ba4a2be5949e21916 Mon Sep 17 00:00:00 2001 From: Marius Date: Thu, 15 Dec 2011 15:20:16 +0200 Subject: beta 2011.12.15 13:56 --- tex/context/base/anch-pos.mkiv | 307 +++++++++++---------- tex/context/base/back-pdf.mkiv | 21 +- tex/context/base/cont-new.mkii | 2 +- tex/context/base/cont-new.mkiv | 39 +-- tex/context/base/context-version.pdf | Bin 4075 -> 4075 bytes tex/context/base/context-version.png | Bin 105850 -> 106211 bytes tex/context/base/context.mkii | 2 +- tex/context/base/context.mkiv | 2 +- tex/context/base/core-mis.mkiv | 134 +++++---- tex/context/base/grph-inc.mkiv | 4 + tex/context/base/grph-trf.mkiv | 112 +++++--- tex/context/base/mult-low.lua | 3 +- tex/context/base/pack-bck.mkvi | 33 ++- tex/context/base/pack-box.mkiv | 53 ++-- tex/context/base/pack-lyr.mkiv | 8 +- tex/context/base/page-flt.mkiv | 25 ++ tex/context/base/page-ini.mkiv | 2 +- tex/context/base/page-mul.mkiv | 75 ++--- tex/context/base/spac-ali.mkiv | 8 +- tex/context/base/spac-ver.mkiv | 11 +- tex/context/base/status-files.pdf | Bin 24000 -> 24019 bytes tex/context/base/status-lua.pdf | Bin 169694 -> 169698 bytes tex/context/base/strc-itm.mkvi | 2 +- tex/context/base/syst-ini.mkiv | 4 +- tex/context/base/tabl-tbl.mkiv | 8 +- tex/context/base/tabl-tsp.mkiv | 70 ++--- tex/generic/context/luatex/luatex-fonts-merged.lua | 2 +- 27 files changed, 515 insertions(+), 412 deletions(-) (limited to 'tex') diff --git a/tex/context/base/anch-pos.mkiv b/tex/context/base/anch-pos.mkiv index 57e8808dc..da6e25f87 100644 --- a/tex/context/base/anch-pos.mkiv +++ b/tex/context/base/anch-pos.mkiv @@ -214,93 +214,111 @@ \dosetpositionpapersize\printpaperwidth\printpaperheight \fi} -\def\setpositiononly#1% +\unexpanded\def\setpositiononly {\iftrialtypesetting - % nothing + \expandafter\gobbleoneargument \else - \initializenextposition - \def\currentposition{#1}% - \dosetposition\currentposition + \expandafter\positions_set_only_indeed \fi} -\def\setposition#1% +\def\positions_set_only_indeed#1% + {\initializenextposition + \edef\currentposition{#1}% + \dosetposition\currentposition} + +\unexpanded\def\setposition {\iftrialtypesetting - % nothing + \expandafter\gobbleoneargument \else - \initializenextposition - \def\currentposition{#1}% - \dosetposition\currentposition - \traceposstring\llap\green{\currentposition>}% - \dopositionaction\currentposition + \expandafter\positions_set_indeed \fi} -\def\setpositiondata#1#2#3#4% - {\iftrialtypesetting \else - \initializenextposition - \hbox - {\def\currentposition{#1}% - \dosetpositionwhd\currentposition - {\the\dimexpr#2\relax}% - {\the\dimexpr#3\relax}% - {\the\dimexpr#4\relax}% - \traceposstring\llap\green{\currentposition>}% - \dopositionaction\currentposition - \hss}% +\def\positions_set_indeed#1% + {\initializenextposition + \edef\currentposition{#1}% + \dosetposition\currentposition + \traceposstring\llap\green{\currentposition>}% + \dopositionaction\currentposition} + +\unexpanded\def\setpositiondata + {\iftrialtypesetting + \expandafter\gobblefourarguments + \else + \expandafter\positions_set_data_indeed \fi} -\def\setpositionbox#1% - {\dowithnextbox - {\iftrialtypesetting - \flushnextbox - \else - \initializenextposition - \hbox to \nextboxwd - {\edef\currentposition{#1}% - \dosetpositionwhd\currentposition - {\the\nextboxwd}% - {\the\nextboxht}% - {\the\nextboxdp}% - \traceposstring\llap\green{\currentposition>}% - \setbox\positionbox\flushnextbox - \dopositionaction\currentposition - \box\positionbox - \hss}% - \fi}} - -\def\setpositiondataplus#1#2#3#4#5% - {\iftrialtypesetting \else - \initializenextposition - \hbox % bug: to \nextboxwd - {\edef\currentposition{#1}% - \dosetpositionplus\currentposition - {\the\dimexpr#2\relax}% - {\the\dimexpr#3\relax}% - {\the\dimexpr#4\relax}% - {#5}% - \traceposstring\rlap\magenta{<\currentposition}% - \dopositionaction\currentposition - \hss}% +\def\positions_set_data_indeed#1#2#3#4% + {\initializenextposition + \hbox + {\edef\currentposition{#1}% + \dosetpositionwhd\currentposition{#2}{#3}{#4}% already \the\dimexpr + \traceposstring\llap\green{\currentposition>}% + \dopositionaction\currentposition + \hss}} + +\unexpanded\def\setpositionbox + {\iftrialtypesetting + \expandafter\positions_set_box_nop + \else + \expandafter\positions_set_box_yes + \fi} + +\def\positions_set_box_nop#1% + {\dowithnextboxcs\flushnextbox} + +\def\positions_set_box_yes#1% + {\dowithnextbox{\positions_set_box_finish{#1}}} + +\def\positions_set_box_finish#1% + {\initializenextposition + \hbox to \wd\nextbox + {\edef\currentposition{#1}% + \dosetpositionwhd\currentposition{\wd\nextbox}{\ht\nextbox}{\dp\nextbox}% already \the\dimexpr + \traceposstring\llap\green{\currentposition>}% + \setbox\positionbox\box\nextbox + \dopositionaction\currentposition + \box\positionbox + \hss}} + +\def\setpositiondataplus + {\iftrialtypesetting + \expandafter\gobblefivearguments + \else + \expandafter\positions_set_plus_indeed + \fi} + +\def\positions_set_plus_indeed#1#2#3#4#5% + {\initializenextposition + \hbox % just package + {\edef\currentposition{#1}% + \dosetpositionplus\currentposition{#2}{#3}{#4}{#5}% already \the\dimexpr + \traceposstring\rlap\magenta{<\currentposition}% + \dopositionaction\currentposition + \hss}} + +\def\setpositionplus + {\iftrialtypesetting + \expandafter\positions_set_plus_nop + \else + \expandafter\positions_set_plus_yes \fi} -\def\setpositionplus#1#2% - {\dowithnextbox - {\iftrialtypesetting - \flushnextbox - \else - \initializenextposition - \hbox to \nextboxwd - {\edef\currentposition{#1}% - \dosetpositionplus\currentposition - {\the\nextboxwd}% - {\the\nextboxht}% - {\the\nextboxdp}% - {#2}% - \traceposstring\rlap\magenta{<\currentposition}% - \setbox\positionbox\flushnextbox - \dopositionaction\currentposition - \box\positionbox - \hss}% - \fi}} +\def\positions_set_plus_nop#1#2% + {\dowithnextboxcs\flushnextbox} + +\def\positions_set_plus_yes#1#2% + {\dowithnextbox{\positions_set_plus_yes_finish{#1}{#2}}} + +\def\positions_set_plus_yes_finish#1#2% + {\initializenextposition + \hbox to \nextboxwd + {\edef\currentposition{#1}% + \dosetpositionplus\currentposition{\wd\nextbox}{\ht\nextbox}{\dp\nextbox}{#2}% + \traceposstring\rlap\magenta{<\currentposition}% + \setbox\positionbox\flushnextbox + \dopositionaction\currentposition + \box\positionbox + \hss}} \let\currentposition\s!unknown @@ -314,7 +332,7 @@ \let\POSactionprefix\POSprefix -\def\dosetpositionaction#1% +\unexpanded\def\dosetpositionaction#1% {\setgvalue{\POSactionprefix#1::}} %D The lists can become quite long (also because there can @@ -325,16 +343,16 @@ \def\doifpositionaction#1% {\ifcsname\POSactionprefix#1::\endcsname - \@EA\firstofoneargument + \expandafter\firstofoneargument \else - \@EA\gobbleoneargument + \expandafter\gobbleoneargument \fi} \def\doifpositionactionelse#1% {\ifcsname\POSactionprefix#1::\endcsname - \@EA\firstoftwoarguments + \expandafter\firstoftwoarguments \else - \@EA\secondoftwoarguments + \expandafter\secondoftwoarguments \fi} %D We can copy a position with: @@ -383,39 +401,40 @@ \let\xypos\setpositiononly -\def\hpos#1{\dontleavehmode\setpositionbox{#1}\hbox} -\def\vpos#1{\setpositionbox{#1}\vbox} +\unexpanded\def\hpos#1{\dontleavehmode\setpositionbox{#1}\hbox} +\unexpanded\def\vpos#1{\setpositionbox{#1}\vbox} -\def\bpos#1{\hpos{b:#1}{\strut}\ignorespaces} -\def\epos#1{\removelastspace\hpos{e:#1}{\strut}} +\unexpanded\def\bpos#1{\hpos{b:#1}{\strut}\ignorespaces} +\unexpanded\def\epos#1{\removelastspace\hpos{e:#1}{\strut}} -\def\fpos#1% +\unexpanded\def\fpos#1% {\setpositionplus{b:#1}{\number\parposcounter}\horizontalstrut \ignorespaces} -\def\tpos#1% +\unexpanded\def\tpos#1% {\removelastspace \setpositionplus{e:#1}{\number\parposcounter}\horizontalstrut} -\def\ffpos#1% +\unexpanded\def\ffpos#1% {\setpositionplus{b:#1}{\number\parposcounter}\horizontalstrut\wpos{#1}% \ignorespaces} -\def\ttpos#1% +\unexpanded\def\ttpos#1% {\removelastspace \setpositionplus{e:#1}{\number\parposcounter}\horizontalstrut} -\def\wpos#1% +\unexpanded\def\wpos#1% {\dontleavehmode\vadjust % may disappear if buried - {\setbox0\hbox{\raise\strutdp\hbox{\rawwpos{#1}}}% - \rlap{\smashedbox0}}} + {\setbox\scratchbox\hbox{\raise\strutdp\hbox{\rawwpos{#1}}}% + \rlap + {\smashedbox\scratchbox}}} -\def\wwpos#1% \hsmashed{\llap{\rawwpos{#1}}} +\unexpanded\def\wwpos#1% \hsmashed{\llap{\rawwpos{#1}}} {\rlap - {\setbox0\hbox{\rawwpos{#1}}% - \smashedbox0}} + {\setbox\scratchbox\hbox{\rawwpos{#1}}% + \smashedbox\scratchbox}} -\def\rawwpos#1% +\unexpanded\def\rawwpos#1% {\hpos{w:#1} {\strut \hskip-\leftskip @@ -425,7 +444,7 @@ % the next macro disables par positions (in inner boxes) and % only registers the width -\def\setinnerparpositions +\unexpanded\def\setinnerparpositions {\let\fpos\ffpos \let\tpos\ttpos \let\wpos\wwpos} @@ -448,54 +467,49 @@ % we can check for used entries, and if not, then not add one -\def\enableparpositions % global +\unexpanded\def\enableparpositions % global {\global\let\registerparoptions\doregisterparoptions \global\positioningtrue \global\positioningpartrue} -\def\disableparpositions % local +\unexpanded\def\disableparpositions % local {\positioningparfalse} \let\registerparoptions\relax -\def\doregisterparoptions +\unexpanded\def\doregisterparoptions {\iftrialtypesetting \else \ifinpagebody \else \ifmmode \else \ifinformula \else - \dodoregisterparoptions + \positions_register_par_options \fi \fi \fi \fi} -\def\dodoregisterparoptions +\def\positions_register_par_options {\global\advance\parposcounter\plusone \setpositiondataplus - {p:\number\parposcounter}% identifier - {\the\zeropoint}% - {\the\strutht}% - {\the\strutdp}% + {p:\number\parposcounter}\zeropoint\strutht\strutdp {\the\hsize,\the\dimexpr\leftskip\relax,\the\dimexpr\rightskip\relax,\the\hangindent,\the\hangafter,\the\parindent}% %\normalhbox{\registerparsymbol}% \iftracepositions\registerparsymbol\fi} -\def\traceposstring#1#2#3% +\unexpanded\def\traceposstring#1#2#3% {\iftracepositions \smashedhbox {#1{\infofont#2#3}% - \scratchdimen.5\points - \kern-2\scratchdimen - \vrule\!!width4\scratchdimen\!!height\scratchdimen\!!depth\scratchdimen}% + \kern-\onepoint + \vrule\!!width2\onepoint\!!height\halfapoint\!!depth\halfapoint}% \fi} -\def\registerparsymbol +\unexpanded\def\registerparsymbol {\iftracepositions \smashedhbox to \zeropoint {\hss \startcolor[blue]% \llap{\infofont\number\parposcounter}% - \scratchdimen\onepoint \vrule - \!!width 4\scratchdimen - \!!height2\scratchdimen - \!!depth 2\scratchdimen + \!!width 4\onepoint + \!!height2\onepoint + \!!depth 2\onepoint \stopcolor \hss}% \fi} @@ -542,10 +556,10 @@ \def\analyzenodelocation#1% {\ifcsname\@@noden#1\endcsname - \doanalyzenodelocation{#1}{\getnodelocationn{#1}}\zerocount + \positions_node_location_analyze{#1}{\getnodelocationn{#1}}\zerocount \fi} -\def\doanalyzenodelocation#1#2#3% class n default +\def\positions_node_location_analyze#1#2#3% class n default {\begingroup \donefalse \ifcase\nodelocationmode @@ -564,37 +578,16 @@ \edef\nodelocationotherx{\numnodelocationx{#1}\recurselevel}% \edef\nodelocationothery{\numnodelocationy{#1}\recurselevel}% \ifcase\nodelocationmode + % \exitloop \or % ok for single column - \ifcase\nodelocationotherp\relax - \exitloop - \else\ifnum\nodelocationotherp<\nodelocationselfp\relax - \donetrue \advance\scratchcounter\plusone - \else\ifnum\nodelocationotherp>\nodelocationselfp\relax - % skip - \else\ifdim\nodelocationothery>\nodelocationselfy\relax - \donetrue \advance\scratchcounter\plusone - \else\ifdim\nodelocationothery<\nodelocationselfy\relax - % skip - \else\ifdim\nodelocationotherx<\nodelocationselfx\relax - \donetrue \advance\scratchcounter\plusone - \fi\fi\fi\fi\fi\fi + \positions_node_location_analyze_one \or % acceptable for double column - \ifcase\nodelocationotherp\relax - \exitloop - \else\ifnum\nodelocationotherp<\nodelocationselfp\relax - \donetrue \advance\scratchcounter\plusone - \else\ifnum\nodelocationotherp>\nodelocationselfp\relax - % skip - \else\ifnum\recurselevel>\nodelocationselfn\relax - \donetrue \exitloop - \else - \donetrue \advance\scratchcounter\plusone - \fi\fi\fi\fi - \else - \exitloop - \fi + \positions_node_location_analyze_two + \else + \exitloop + \fi \fi}% \fi \ifdone \else @@ -603,6 +596,34 @@ \setxvalue{\@@nodeo#1}{\the\scratchcounter}% \endgroup} +\def\positions_node_location_analyze_one + {\ifcase\nodelocationotherp\relax + \exitloop + \else\ifnum\nodelocationotherp<\nodelocationselfp\relax + \donetrue \advance\scratchcounter\plusone + \else\ifnum\nodelocationotherp>\nodelocationselfp\relax + % skip + \else\ifdim\nodelocationothery>\nodelocationselfy\relax + \donetrue \advance\scratchcounter\plusone + \else\ifdim\nodelocationothery<\nodelocationselfy\relax + % skip + \else\ifdim\nodelocationotherx<\nodelocationselfx\relax + \donetrue \advance\scratchcounter\plusone + \fi\fi\fi\fi\fi\fi} + +\def\positions_node_location_analyze_two + {\ifcase\nodelocationotherp\relax + \exitloop + \else\ifnum\nodelocationotherp<\nodelocationselfp\relax + \donetrue \advance\scratchcounter\plusone + \else\ifnum\nodelocationotherp>\nodelocationselfp\relax + % skip + \else\ifnum\recurselevel>\nodelocationselfn\relax + \donetrue \exitloop + \else + \donetrue \advance\scratchcounter\plusone + \fi\fi\fi\fi} + \unexpanded\def\shownodelocation#1% {\ifcsname\@@noden#1\endcsname \analyzenodelocation{#1}% diff --git a/tex/context/base/back-pdf.mkiv b/tex/context/base/back-pdf.mkiv index fd90f9213..f84f83fe5 100644 --- a/tex/context/base/back-pdf.mkiv +++ b/tex/context/base/back-pdf.mkiv @@ -182,15 +182,18 @@ \unexpanded\def\dotransformnextbox#1#2#3#4#5#6% sx rx ry sy tx ty (will change) / basepoints ! {\advance\backendtransformlevel\plusone - \dowithnextbox % fixing ht/dp/wd should happen elsewhere - {\hbox - {\hskip#5\onebasepoint - \raise#6\onebasepoint\hbox - {\pdfsave - \pdfsetmatrix{#1 #2 #3 #4}% 0 0 (no #5 #6 yet) - \box\nextbox - \pdfrestore - \advance\backendtransformlevel\minusone}}}} + % fixing ht/dp/wd should happen elsewhere + \dowithnextbox{\dodotransformnextbox{#5}{#6}{#1 #2 #3 #4}}} + +\unexpanded\def\dodotransformnextbox#1#2#3% + {\hbox + {\hskip#1\onebasepoint + \raise#2\onebasepoint\hbox + {\pdfsave + \pdfsetmatrix{#3}% 0 0 (no #5 #6 yet) + \box\nextbox + \pdfrestore + \advance\backendtransformlevel\minusone}}} \unexpanded\def\dostartclipping#1#2#3% todo (still needed?) (can move to lua) {\PointsToBigPoints{#2}\width diff --git a/tex/context/base/cont-new.mkii b/tex/context/base/cont-new.mkii index bc5fb9716..7f31e795b 100644 --- a/tex/context/base/cont-new.mkii +++ b/tex/context/base/cont-new.mkii @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2011.12.15 09:22} +\newcontextversion{2011.12.15 13:56} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv index 558ddda8b..d9d2817ec 100644 --- a/tex/context/base/cont-new.mkiv +++ b/tex/context/base/cont-new.mkiv @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2011.12.15 09:22} +\newcontextversion{2011.12.15 13:56} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new @@ -21,43 +21,6 @@ \writestatus\m!system{beware: some patches loaded from cont-new.mkiv} - -\def\fastscale#1% - {\begingroup - \ifnum#1=1000\relax - \setfalse\scaleboxdone - \else - \settrue\scaleboxdone - \edef\finalscaleboxxscale{\withoutpt\the\dimexpr#1pt/1000\relax}% - \let\finalscaleboxyscale\finalscaleboxxscale - \fi - \dowithnextbox{\doscaleboxindeed\flushnextbox\endgroup}\hbox} - -% \setupcaption [figure] [align=flushleft] -% \setupcaption [figure-1] [align=flushleft,leftmargin=10mm] -% \setupcaption [figure-2] [align=flushleft,leftmargin=10mm,rightmargin=-10mm,width=\textwidth] -% -% \startsetups somefigure -% \ifdim\floatsetupwidth>\textwidth -% \placesetupfloat[figure-2] -% \else -% \placesetupfloat[figure-1] -% \fi -% \stopsetups -% -% \placefloatwithsetups[somefigure]{}{\externalfigure[dummy][width=5cm,height=2cm]} - -\def\placefloatwithsetups - {\dotripleempty\doplacefloatwithsetups} - -\long\def\doplacefloatwithsetups[#1][#2][#3]#4% - {\def\floatsetupcaption {#4}% - \def\floatsetupcontent {\copy\nextbox}% - \def\floatsetupwidth {\wd\nextbox}% - \def\floatsetupheight {\ht\nextbox}% - \def\placesetupfloat[##1]{\placefloat[##1][#2][#3]{#4}{\floatsetupcontent}}% #4 and not \floatsetupcaption (unexpanded) - \dowithnextbox{\setups[#1]}\vbox} - \def\dividedsize#1#2#3% size gap n {\dimexpr \ifnum\dimexpr#1\relax>\plusone diff --git a/tex/context/base/context-version.pdf b/tex/context/base/context-version.pdf index 2cb34c4cd..4dd332d82 100644 Binary files a/tex/context/base/context-version.pdf and b/tex/context/base/context-version.pdf differ diff --git a/tex/context/base/context-version.png b/tex/context/base/context-version.png index a69c11acf..b67d9988f 100644 Binary files a/tex/context/base/context-version.png and b/tex/context/base/context-version.png differ diff --git a/tex/context/base/context.mkii b/tex/context/base/context.mkii index 8d38aa0e9..d19abf5a7 100644 --- a/tex/context/base/context.mkii +++ b/tex/context/base/context.mkii @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2011.12.15 09:22} +\edef\contextversion{2011.12.15 13:56} %D For those who want to use this: diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv index bd32d2bf1..1044d2eb5 100644 --- a/tex/context/base/context.mkiv +++ b/tex/context/base/context.mkiv @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2011.12.15 09:22} +\edef\contextversion{2011.12.15 13:56} %D For those who want to use this: diff --git a/tex/context/base/core-mis.mkiv b/tex/context/base/core-mis.mkiv index 93f3d2061..d0f418991 100644 --- a/tex/context/base/core-mis.mkiv +++ b/tex/context/base/core-mis.mkiv @@ -1736,11 +1736,11 @@ \edef\currentcombinationspec{2*1*}}}% \fi \forgetall -\dostarttagged\t!combination\currentcombination + \dostarttagged\t!combination\currentcombination \doifelse{\combinationparameter\c!height}\v!fit \vbox {\vbox to \combinationparameter\c!height}% \bgroup -\let\combination\empty % permits \combination{}{} handy for cld + \let\combination\empty % permits \combination{}{} handy for cld \setuphorizontaldivision [\c!n=\v!fit,\c!distance=\combinationparameter\c!distance]% \expanded{\dodostartcombination[\currentcombinationspec]}} @@ -1750,7 +1750,7 @@ \long\def\dodostartcombination[#1*#2*#3]% {\global\horcombination#1% \global\totcombination#2% -\dotagcombination + \dotagcombination \global\setbox\combinationstack\emptybox \xdef\maxhorcombination{\the\horcombination}% \multiply\totcombination\horcombination @@ -1772,31 +1772,34 @@ \def\docombination % we want to add struts but still ignore an empty box {\dostarttagged\t!combinationpair\empty \dostarttagged\t!combinationcontent\empty + \dowithnextboxcs\docombinationfinish\hbox} + +\def\docombinationfinish % we want to add struts but still ignore an empty box + {\dostoptagged + \setbox0\flushnextbox + \dostarttagged\t!combinationcaption\empty \dowithnextbox {\dostoptagged - \setbox0\flushnextbox - \dostarttagged\t!combinationcaption\empty - \dowithnextbox - {\dostoptagged - \dostoptagged - \setbox2\flushnextbox - \dodocombination}% - \vtop\bgroup - \def\next - {\futurelet\nexttoken\nextnext}% - \def\nextnext - {\ifx\nexttoken\egroup \else % the next box is empty - \hsize\wd0 - \setupalign[\combinationparameter\c!align]% - \dousestylehashparameter{\??co\currentcombination}\c!style - \dousecolorhashparameter{\??co\currentcombination}\c!color - \bgroup - \aftergroup\endstrut - \aftergroup\egroup - \begstrut - \fi}% - \afterassignment\next\let\nexttoken=} - \hbox} + \dostoptagged + \setbox2\flushnextbox + \dodocombination}% + \vtop\bgroup + \afterassignment\donextcombination\let\nexttoken=} + +\def\donextcombination + {\futurelet\nexttoken\donextnextcombination} + +\def\donextnextcombination + {\ifx\nexttoken\egroup \else % the next box is empty + \hsize\wd0 + \setupalign[\combinationparameter\c!align]% + \dousestylehashparameter{\??co\currentcombination}\c!style + \dousecolorhashparameter{\??co\currentcombination}\c!color + \bgroup + \aftergroup\endstrut + \aftergroup\egroup + \begstrut + \fi} \def\depthonlybox {\dowithnextbox{\vtop{\hsize\wd\nextbox\kern\zeropoint\box\nextbox}}\vbox} @@ -1815,30 +1818,35 @@ \global\advance\totcombination\minusone \global\advance\horcombination\minusone \ifnum\horcombination=\zerocount - \def\next - {\cr - \flushcombinationstack - \noalign - {\forgetall % \setupwhitespace[\v!none]% no - \global\setbox\combinationstack\emptybox - \nointerlineskip - \combinationparameter\c!after - \combinationparameter\c!before - \vss - \nointerlineskip}% - \global\horcombination\maxhorcombination\relax - \docombination}% + \doubleexpandafter\docombination_a \else - \def\next - {&&&\hskip\combinationparameter\c!distance&\docombination}% + \doubleexpandafter\docombination_b \fi \else - \def\next - {\cr - \flushcombinationstack - \egroup}% - \fi - \next} + \expandafter\docombination_c + \fi} + +\def\docombination_a + {\cr + \flushcombinationstack + \noalign + {\forgetall % \setupwhitespace[\v!none]% no + \global\setbox\combinationstack\emptybox + \nointerlineskip + \combinationparameter\c!after + \combinationparameter\c!before + \vss + \nointerlineskip}% + \global\horcombination\maxhorcombination\relax + \docombination} + +\def\docombination_b + {&&&\hskip\combinationparameter\c!distance&\docombination} + +\def\docombination_c + {\cr + \flushcombinationstack + \egroup} % formally ok: % @@ -1870,7 +1878,7 @@ \def\flushcombinationstack {\noalign {\ifdim\ht\combinationstack>\zeropoint -\nointerlineskip % nieuw + \nointerlineskip % nieuw \combinationparameter\c!inbetween \global\horcombination\maxhorcombination \globallet\doflushcombinationstack\dodoflushcombinationstack @@ -1887,13 +1895,13 @@ \box1% \ruledhbox{\box1}% \global\advance\horcombination\minusone\relax \ifnum\horcombination>\zerocount - \def\next{&&&&\doflushcombinationstack}% + \expandafter\dodoflushcombinationstacknext \else \global\setbox\combinationstack\emptybox - %\let\next\relax - \@EA\gobbleoneargument - \fi - \next} + \fi} + +\def\dodoflushcombinationstacknext + {&&&&\doflushcombinationstack} \setupcombinations [\c!width=\v!fit, @@ -1930,19 +1938,23 @@ \unexpanded\def\startfloatcombination {\dodoubleempty\dostartfloatcombination} +\let\startfloatcombination\relax + \def\dostartfloatcombination[#1][#2]% {\vbox\bgroup %\insidecolumnstrue % trick, forces no centering, todo: proper switch/feature \postcenterfloatmethod\zerocount \forcelocalfloats - \unexpanded\def\stopfloatcombination - {\scratchtoks\emptytoks - \dorecurse\noflocalfloats - {\appendetoks{\noexpand\getlocalfloat{\recurselevel}}{}\to\scratchtoks}% - \expanded{\startcombination[#1]\the\scratchtoks}\stopcombination - \resetlocalfloats - \egroup}} - + \unexpanded\def\stopfloatcombination{\dostopfloatcombination{#1}}} + +\unexpanded\def\dostopfloatcombination#1% + {\scratchtoks\emptytoks + \dorecurse\noflocalfloats + {\appendetoks{\noexpand\getlocalfloat{\recurselevel}}{}\to\scratchtoks}% brrr + \expanded{\startcombination[#1]\the\scratchtoks}\stopcombination + \resetlocalfloats + \egroup} + \unexpanded\def\placerelativetoeachother#1#2% {\bgroup \dowithnextbox diff --git a/tex/context/base/grph-inc.mkiv b/tex/context/base/grph-inc.mkiv index 17af235b9..b403fa8e1 100644 --- a/tex/context/base/grph-inc.mkiv +++ b/tex/context/base/grph-inc.mkiv @@ -19,6 +19,8 @@ %D - alternative images %D - a few more obscure things +% use framedcommandhandler + \registerctxluafile{grph-inc}{1.001} \registerctxluafile{grph-fil}{1.001} \registerctxluafile{grph-u3d}{1.001} % this will change @@ -300,6 +302,8 @@ \egroup \egroup} +\newsystemmode\v!figure + \def\signalexternalfigure % global {\ifcase\figurestatus \global\resetsystemmode\v!figure % todo, also: \v!resource diff --git a/tex/context/base/grph-trf.mkiv b/tex/context/base/grph-trf.mkiv index 9b4201116..4801a2aa5 100644 --- a/tex/context/base/grph-trf.mkiv +++ b/tex/context/base/grph-trf.mkiv @@ -14,7 +14,8 @@ %D It may be that some functionality got lost. If it concerns %D defined features, let me know and it will be sorted out. -%D We will move the calculations to lua. +%D We will move the calculations to \LUA\ and clean up this +%D lot anyway. \writestatus{loading}{ConTeXt Graphic Macros / Transformations} @@ -285,34 +286,46 @@ \def\setscaleboxbydimension {\ifdim\scaleboxdimx>\zeropoint \ifdim\scaleboxdimy>\zeropoint - \dosetdimensionscaleboxsize - {\docalculatescaleboxscale\scaleboxdimy\scaleboxsizey\scaleboxscay - \docalculatescaleboxscale\scaleboxdimx\scaleboxsizex\scaleboxscax}% - {\docalculatescaleboxscale\scaleboxdimy\scaleboxsizey\scaleboxscay - \docalculatescaleboxscale\scaleboxdimx\scaleboxsizex\scaleboxscax}% - {\docalculatescaleboxscale\scaleboxdimy\scaleboxsizey\scaleboxscay - \docalculatescaleboxscale\scaleboxdimx\scaleboxsizex\scaleboxscax}% + \setscaleboxbydimension_a \else - \dosetdimensionscaleboxsize - {\docalculatescaleboxscales\scaleboxdimx\scaleboxsizex\scaleboxdimy\scaleboxsizey}% - {\docalculatescaleboxscales\scaleboxdimx\scaleboxsizex\scaleboxdimy\scaleboxsizey}% - {\docalculatescaleboxscales\scaleboxdimx\scaleboxsizex\scaleboxdimy\scaleboxsizey}% + \setscaleboxbydimension_b \fi \else \ifdim\scaleboxdimy>\zeropoint - \dosetdimensionscaleboxsize - {\docalculatescaleboxscales\scaleboxdimy\scaleboxsizey\scaleboxdimx\scaleboxsizex}% - {\docalculatescaleboxscales\scaleboxdimy\scaleboxsizey\scaleboxdimx\scaleboxsizex}% - {\docalculatescaleboxscales\scaleboxdimy\scaleboxsizey\scaleboxdimx\scaleboxsizex}% + \setscaleboxbydimension_c \else - \dosetdimensionscaleboxsize - {\doapplyscaleboxscale\scaleboxdimx\scaleboxsizex\scaleboxscax\c!xscale - \doapplyscaleboxscale\scaleboxdimy\scaleboxsizey\scaleboxscay\c!yscale}% - {\docalculatescaleboxscales\scaleboxdimx\scaleboxsizex\scaleboxdimy\scaleboxsizey}% - {\docalculatescaleboxscales\scaleboxdimy\scaleboxsizey\scaleboxdimx\scaleboxsizex}% + \setscaleboxbydimension_d \fi \fi} +\def\setscaleboxbydimension_a + {\dosetdimensionscaleboxsize + {\docalculatescaleboxscale\scaleboxdimy\scaleboxsizey\scaleboxscay + \docalculatescaleboxscale\scaleboxdimx\scaleboxsizex\scaleboxscax}% + {\docalculatescaleboxscale\scaleboxdimy\scaleboxsizey\scaleboxscay + \docalculatescaleboxscale\scaleboxdimx\scaleboxsizex\scaleboxscax}% + {\docalculatescaleboxscale\scaleboxdimy\scaleboxsizey\scaleboxscay + \docalculatescaleboxscale\scaleboxdimx\scaleboxsizex\scaleboxscax}} + +\def\setscaleboxbydimension_b + {\dosetdimensionscaleboxsize + {\docalculatescaleboxscales\scaleboxdimx\scaleboxsizex\scaleboxdimy\scaleboxsizey}% + {\docalculatescaleboxscales\scaleboxdimx\scaleboxsizex\scaleboxdimy\scaleboxsizey}% + {\docalculatescaleboxscales\scaleboxdimx\scaleboxsizex\scaleboxdimy\scaleboxsizey}} + +\def\setscaleboxbydimension_c + {\dosetdimensionscaleboxsize + {\docalculatescaleboxscales\scaleboxdimy\scaleboxsizey\scaleboxdimx\scaleboxsizex}% + {\docalculatescaleboxscales\scaleboxdimy\scaleboxsizey\scaleboxdimx\scaleboxsizex}% + {\docalculatescaleboxscales\scaleboxdimy\scaleboxsizey\scaleboxdimx\scaleboxsizex}} + +\def\setscaleboxbydimension_d + {\dosetdimensionscaleboxsize + {\doapplyscaleboxscale\scaleboxdimx\scaleboxsizex\scaleboxscax\c!xscale + \doapplyscaleboxscale\scaleboxdimy\scaleboxsizey\scaleboxscay\c!yscale}% + {\docalculatescaleboxscales\scaleboxdimx\scaleboxsizex\scaleboxdimy\scaleboxsizey}% + {\docalculatescaleboxscales\scaleboxdimy\scaleboxsizey\scaleboxdimx\scaleboxsizex}} + \def\dosetdimensionscaleboxsize#1#2#3% {#1\relax \doifsomething{\scaleparameter\c!maxwidth} @@ -326,15 +339,41 @@ #3\relax \fi}} -\def\docalculatescaleboxnorm#1#2#3#4#5% 2 3 parameters (dodo:speedup) - {\processaction - [\scaleparameter#2] - [ \v!max=>\global#1\dimexpr#4\relax, - \v!fit=>\global#1\dimexpr#5\relax, - \v!broad=>\global#1\dimexpr#5-4\@@exbodyfont\relax, - \v!auto=>\doifsomething{\scaleparameter#3}{\global#1\dimexpr\scaleparameter#3\relax}, - \s!default=>\doifsomething{\scaleparameter#3}{\global#1\dimexpr\scaleparameter#3\relax}, - \s!unknown=>\global#1\dimexpr\scaleparameter#2\dimexpr\@@exbodyfont/10\relax\relax]} +% \def\docalculatescaleboxnorm#1#2#3#4#5% 2 3 parameters (dodo:speedup) +% {\processaction +% [\scaleparameter#2] +% [ \v!max=>\global#1\dimexpr#4\relax, +% \v!fit=>\global#1\dimexpr#5\relax, +% \v!broad=>\global#1\dimexpr#5-4\@@exbodyfont\relax, +% \v!auto=>\doifsomething{\scaleparameter#3}{\global#1\dimexpr\scaleparameter#3\relax}, +% \s!default=>\doifsomething{\scaleparameter#3}{\global#1\dimexpr\scaleparameter#3\relax}, +% \s!unknown=>\global#1\dimexpr\scaleparameter#2\dimexpr\@@exbodyfont/10\relax\relax]} + +\def\docalculatescaleboxnorm#1#2% todo: swap 1 and 2 and pass one less + {\edef\askedscaleboxnorm{\scaleparameter#2}% + \csname\??ef:n:\ifcsname\??ef:n:\askedscaleboxnorm\endcsname + \askedscaleboxnorm\else\s!unknown + \fi\endcsname{#1}} + +\setvalue{\??ef:n:\v!max}#1#2#3#4% + {\global#1#3} + +\setvalue{\??ef:n:\v!fit}#1#2#3#4% + {\global#1#4} + +\setvalue{\??ef:n:\v!broad}#1#2#3#4% + {\global#1\dimexpr#4-4\@@exbodyfont\relax} + +\setvalue{\??ef:n:\s!unknown}#1#2#3#4% + {\global#1\dimexpr\askedscaleboxnorm\dimexpr\@@exbodyfont/10\relax\relax} + +\def\docalculatescaleboxnormauto#1#2#3#4% + {\edef\askedscaleboxnorm{\scaleparameter#2}% + \ifx\askedscaleboxnorm\empty\else\global#1\askedscaleboxnorm\fi} + +\letvalue{\??ef:n:\v!auto }\docalculatescaleboxnormauto +\letvalue{\??ef:n:\empty }\docalculatescaleboxnormauto +\letvalue{\??ef:n:\s!default}\docalculatescaleboxnormauto \def\docalculatescaleboxscales#1#2#3#4% {\scratchdimen\dimexpr#1/\dimexpr#2/\plusthousand\relax\relax @@ -426,7 +465,18 @@ \ifdim\ht\nextbox<\scratchdimen \setbox\nextbox\vbox to \scratchdimen{\vss\box\nextbox\vss}% \fi}} - + +\def\fastscale#1% + {\begingroup + \ifnum#1=1000\relax + \setfalse\scaleboxdone + \else + \settrue\scaleboxdone + \edef\finalscaleboxxscale{\withoutpt\the\dimexpr#1pt/1000\relax}% + \let\finalscaleboxyscale\finalscaleboxxscale + \fi + \dowithnextbox{\doscaleboxindeed\flushnextbox\endgroup}\hbox} + %D \macros %D {clip, setupclipping} %D diff --git a/tex/context/base/mult-low.lua b/tex/context/base/mult-low.lua index d09317253..7ea99322a 100644 --- a/tex/context/base/mult-low.lua +++ b/tex/context/base/mult-low.lua @@ -14,7 +14,8 @@ return { "zerocount", "minusone", "minustwo", "plusone", "plustwo", "plusthree", "plusfour", "plusfive", "plussix", "plusseven", "pluseight", "plusnine", "plusten", "plussixteen", "plushundred", "plusthousand", "plustenthousand", "plustwentythousand", "medcard", "maxcard", - "zeropoint", "onepoint", "onebasepoint", "maxdimen", "scaledpoint", "thousandpoint", "points", + "zeropoint", "onepoint", "halfapoint", "onebasepoint", "maxdimen", "scaledpoint", "thousandpoint", + "points", "halfpoint", "zeroskip", "pluscxxvii", "pluscxxviii", "pluscclv", "pluscclvi", -- diff --git a/tex/context/base/pack-bck.mkvi b/tex/context/base/pack-bck.mkvi index db7cd7bee..ed742421a 100644 --- a/tex/context/base/pack-bck.mkvi +++ b/tex/context/base/pack-bck.mkvi @@ -176,10 +176,12 @@ \background_direct_ignore} \def\background_direct_indeed - {\dowithnextbox - {\setupcurrentbackground[\c!offset=\v!overlay]% - \inheritedbackgroundframed{\flushnextbox}\endgroup} - \vbox} + {\dowithnextboxcs\background_direct_finish\vbox} + +\def\background_direct_finish + {\setupcurrentbackground[\c!offset=\v!overlay]% + \inheritedbackgroundframed{\flushnextbox}% + \endgroup} \def\background_direct_ignore {\endgroup} @@ -237,16 +239,17 @@ \unexpanded\def\backgroundline[#color]% {\dontleavehmode - \dowithnextbox - {\hbox - {\faststartcolor[#color]% - \vrule - \!!width \nextboxwd - \!!height\nextboxht - \!!depth \nextboxdp - \faststopcolor - \hskip-\nextboxwd - \flushnextbox}}% - \hbox} + \dowithnextbox{\background_add_to_nextbox{#color}}\hbox} + +\unexpanded\def\background_add_to_nextbox#color% handy helper + {\hbox + {\faststartcolor[#color]% + \vrule + \!!width \nextboxwd + \!!height\nextboxht + \!!depth \nextboxdp + \faststopcolor + \hskip-\nextboxwd + \flushnextbox}} \protect \endinput diff --git a/tex/context/base/pack-box.mkiv b/tex/context/base/pack-box.mkiv index a7a025a15..7469a55f8 100644 --- a/tex/context/base/pack-box.mkiv +++ b/tex/context/base/pack-box.mkiv @@ -559,35 +559,48 @@ % \setlayerframed[layer id][layer settings][framed setting]{data} % \setlayerframed[layer id][combined settings]{data} +% tricky: offsets apply to both the layer and the framed; it makes sense to +% only apply the offset to ... + \def\setlayerframed {\dotripleempty\dosetlayerframed} +% \def\dosetlayerframed +% {\ifthirdargument +% \expandafter\dosetlayerframedT +% \else +% \expandafter\dosetlayerframedS +% \fi} +% +% \def\dosetlayerframedT[#1][#2][#3]% +% {\dowithnextbox{\setlayer[#1][#2]{\flushnextbox}}% +% \hbox\framed[#3]} +% +% \def\dosetlayerframedS[#1][#2][#3]% +% {\dowithnextbox % we could use a local setlayer command (no doif..empty) which also saves a nextbox +% {\setlayer[#1][\c!width=\nextboxwd,\c!height=\nextboxht,#2,\c!offset=\!!zeropoint]{\flushnextbox}}% +% \hbox\normalframedwithsettings[\c!location=\v!normal,#2]}% fast call (no arg check) + \def\dosetlayerframed {\ifthirdargument \expandafter\dosetlayerframedT + \else\ifsecondargument + \doubleexpandafter\dosetlayerframedD \else - \expandafter\dosetlayerframedS - \fi} + \doubleexpandafter\dosetlayerframedS + \fi\fi} -\def\dosetlayerframedT[#1][#2][#3]% - {\dowithnextbox{\setlayer[#1][#2]{\flushnextbox}}% - \hbox\framed[#3]} +\def\dosetlayerframedS[#1][#2][#3]% + {\setlayer[#1][\c!width=\wd\nextbox,\c!height=\ht\nextbox,\c!offset=\zeropoint]% + \normalframedwithsettings[\c!location=\v!normal]} % diffrent kind of location -% tricky: offsets apply to both the layer and the framed; it makes sense to -% only apply the offset to ... +\def\dosetlayerframedD[#1][#2][#3]% + {\setlayer[#1][\c!width=\wd\nextbox,\c!height=\ht\nextbox,#2,\c!offset=\zeropoint]% + \normalframedwithsettings[\c!location=\v!normal,#2]} % diffrent kind of location -% \def\dosetlayerframedS[#1][#2][#3]% -% {\dowithnextbox % we could use a local setlayer command (no doif..empty) which also saves a nextbox -% {\setlayer[#1][\c!width=\nextboxwd,\c!height=\nextboxht,\c!offset=\!!zeropoint,#2]{\flushnextbox}}% -% \hbox\framed[\c!location=\v!normal,#2]}% could be a fast one -% -% better (2011-09-06) - -\def\dosetlayerframedS[#1][#2][#3]% - {\dowithnextbox % we could use a local setlayer command (no doif..empty) which also saves a nextbox - {\setlayer[#1][\c!width=\nextboxwd,\c!height=\nextboxht,#2,\c!offset=\!!zeropoint]{\flushnextbox}}% -% \hbox\framed[\c!location=\v!normal,#2]}% could be a fast one (no #2,\c!offset=\defaultframeoffset) - \hbox\normalframedwithsettings[\c!location=\v!normal,#2]}% fast call (no arg check) +\def\dosetlayerframedT[#1][#2][#3]% + {\setlayer[#1][#2]% + \normalframedwithsettings[#3]} \def\setlayertext {\dotripleempty\dosetlayertext} @@ -604,7 +617,7 @@ \dowithnextboxcontent {\forgetall \hsize\@@lxwidth - \expanded{\setupalign[\@@lxalign]}% + \normalexpanded{\setupalign[\@@lxalign]}% \dousestyleparameter\@@lxstyle} {\setlayer[#1][#2]{\strut\dousecolorparameter\@@lxcolor\flushnextbox}% \egroup}% diff --git a/tex/context/base/pack-lyr.mkiv b/tex/context/base/pack-lyr.mkiv index 69cce43cb..2bba60df7 100644 --- a/tex/context/base/pack-lyr.mkiv +++ b/tex/context/base/pack-lyr.mkiv @@ -142,7 +142,7 @@ \def\dosetlayer[#1][#2][#3]% #4 == box do \fi is ok {\doifelsevalue{\??ll#1\c!state}\v!stop - {\dowithnextbox\donothing\hbox} + {\dowithnextboxcs\donothing\hbox} {\ifthirdargument \dodosetlayer[#1][#2][#3]% \else @@ -274,9 +274,9 @@ \setbox\layerbox\emptybox \globallet\lastlayerxpos\!!zeropoint \globallet\lastlayerypos\!!zeropoint - \normalexpanded{\noexpand\doifinset{\v!bottom}{\layerparameter\c!corner}}\dosetlayerbottompositions - \normalexpanded{\noexpand\doifinset{\v!right }{\layerparameter\c!corner}}\dosetlayerrightpositions - \normalexpanded{\noexpand\doifinset{\v!middle}{\layerparameter\c!corner}}\dosetlayermiddlepositions + \normalexpanded{\doifinset{\v!bottom}{\layerparameter\c!corner}}\dosetlayerbottompositions + \normalexpanded{\doifinset{\v!right }{\layerparameter\c!corner}}\dosetlayerrightpositions + \normalexpanded{\doifinset{\v!middle}{\layerparameter\c!corner}}\dosetlayermiddlepositions \edef\layerpage{\layerparameter\c!page}% \fi \ifx\layerpage\empty \else % is expanded diff --git a/tex/context/base/page-flt.mkiv b/tex/context/base/page-flt.mkiv index 29de9acd4..f2b183f2d 100644 --- a/tex/context/base/page-flt.mkiv +++ b/tex/context/base/page-flt.mkiv @@ -148,6 +148,31 @@ \blank[\rootfloatparameter\c!spaceafter] \fi}} +% \setupcaption [figure] [align=flushleft] +% \setupcaption [figure-1] [align=flushleft,leftmargin=10mm] +% \setupcaption [figure-2] [align=flushleft,leftmargin=10mm,rightmargin=-10mm,width=\textwidth] +% +% \startsetups somefigure +% \ifdim\floatsetupwidth>\textwidth +% \placesetupfloat[figure-2] +% \else +% \placesetupfloat[figure-1] +% \fi +% \stopsetups +% +% \placefloatwithsetups[somefigure]{}{\externalfigure[dummy][width=5cm,height=2cm]} + +\def\placefloatwithsetups + {\dotripleempty\doplacefloatwithsetups} + +\long\def\doplacefloatwithsetups[#1][#2][#3]#4% + {\def\floatsetupcaption {#4}% + \def\floatsetupcontent {\copy\nextbox}% + \def\floatsetupwidth {\wd\nextbox}% + \def\floatsetupheight {\ht\nextbox}% + \def\placesetupfloat[##1]{\placefloat[##1][#2][#3]{#4}{\floatsetupcontent}}% #4 and not \floatsetupcaption (unexpanded) + \dowithnextbox{\setups[#1]}\vbox} + %D The following code is in transition as we don't want to break the %D current single column, multi column, and columnset mechanism. %D diff --git a/tex/context/base/page-ini.mkiv b/tex/context/base/page-ini.mkiv index 8cb146505..d423a5d8a 100644 --- a/tex/context/base/page-ini.mkiv +++ b/tex/context/base/page-ini.mkiv @@ -340,7 +340,7 @@ \fi} \def\page_otr_add_special_content - {\dowithnextbox\page_otr_add_special_content_indeed\hbox} + {\dowithnextboxcs\page_otr_add_special_content_indeed\hbox} \def\page_otr_add_special_content_indeed {\wd\nextbox\zeropoint diff --git a/tex/context/base/page-mul.mkiv b/tex/context/base/page-mul.mkiv index f00dec89b..91342f6c4 100644 --- a/tex/context/base/page-mul.mkiv +++ b/tex/context/base/page-mul.mkiv @@ -1673,43 +1673,44 @@ \hsize\@@ksn\hsize \advance\hsize -\intercolumnwidth \fi - \dowithnextbox - {\setbox\columnspanbox\flushnextbox - \ifinsidecolumns\wd\columnspanbox\hsize\fi - \postprocesscolumnspanbox\columnspanbox - \scratchdimen\ht\columnspanbox - \setbox\columnspanbox\hbox % depth to be checked, probably option! - {\localframed[\??ks][\c!offset=\v!overlay]{\box\columnspanbox}}% - \ht\columnspanbox\scratchdimen - \dp\columnspanbox\strutdp - \wd\columnspanbox\hsize - \ifinsidecolumns - \ifnum\@@ksn>1 - \setvsize - \dohandleallcolumns - {\ifnum\currentcolumn>\@@ksn\else - \global\setbox\currenttopcolumnbox=\vbox - {\ifnum\currentcolumn=1 - \snaptogrid\vbox{\copy\columnspanbox} - \else - \snaptogrid\vbox{\vphantom{\copy\columnspanbox}} - \fi}% - \wd\currenttopcolumnbox\hsize - \global\advance\vsize -\ht\currenttopcolumnbox - \fi} - \global\pagegoal\vsize - \else - \snaptogrid\vbox{\box\columnspanbox} - \fi - \else - \snaptogrid\vbox{\box\columnspanbox} - \fi - \endgraf - \ifvmode\prevdepth\strutdp\fi - \egroup} - \vbox\bgroup - %\topskipcorrection % becomes an option ! - \EveryPar{\begstrut\EveryPar{}}} % also ! + \dowithnextboxcs\dofinishcolumnsetspan\vbox\bgroup + %\topskipcorrection % becomes an option ! + \EveryPar{\begstrut\EveryPar{}}} % also ! + +\def\dofinishcolumnsetspan + {\setbox\columnspanbox\flushnextbox + \ifinsidecolumns\wd\columnspanbox\hsize\fi + \postprocesscolumnspanbox\columnspanbox + \scratchdimen\ht\columnspanbox + \setbox\columnspanbox\hbox % depth to be checked, probably option! + {\localframed[\??ks][\c!offset=\v!overlay]{\box\columnspanbox}}% + \ht\columnspanbox\scratchdimen + \dp\columnspanbox\strutdp + \wd\columnspanbox\hsize + \ifinsidecolumns + \ifnum\@@ksn>1 + \setvsize + \dohandleallcolumns + {\ifnum\currentcolumn>\@@ksn\else + \global\setbox\currenttopcolumnbox=\vbox + {\ifnum\currentcolumn=1 + \snaptogrid\vbox{\copy\columnspanbox} + \else + \snaptogrid\vbox{\vphantom{\copy\columnspanbox}} + \fi}% + \wd\currenttopcolumnbox\hsize + \global\advance\vsize -\ht\currenttopcolumnbox + \fi} + \global\pagegoal\vsize + \else + \snaptogrid\vbox{\box\columnspanbox} + \fi + \else + \snaptogrid\vbox{\box\columnspanbox} + \fi + \endgraf + \ifvmode\prevdepth\strutdp\fi + \egroup} \unexpanded\def\startcolumnspan {\dosingleempty\dostartcolumnspan} diff --git a/tex/context/base/spac-ali.mkiv b/tex/context/base/spac-ali.mkiv index c60dbbc3d..b50ee59f6 100644 --- a/tex/context/base/spac-ali.mkiv +++ b/tex/context/base/spac-ali.mkiv @@ -429,7 +429,7 @@ \let\updateraggedskips\relax -\unexpanded\def\setraggedskips#1#2#3#4#5#6#7% never change this name +\unexpanded\def\setraggedskips#1#2#3#4#5#6#7% never change this name (todo: inline this one .. less tracingall) {\unexpanded\def\updateraggedskips{\dosetraggedskips{#1}{#2}{#3}{#4}{#5}{#6}{#7}}% \updateraggedskips} @@ -640,8 +640,8 @@ \installalign \v!new {\@@asraggedfalse} % so new will give you consistency \installalign \v!reset {\notragged\normalbottom} -\installalign \v!tolerant {\tolerance3000 \relax} -\installalign \v!verytolerant {\tolerance4500 \relax} +\installalign \v!tolerant {\tolerance3000\relax} +\installalign \v!verytolerant {\tolerance4500\relax} \installalign \v!stretch {\emergencystretch\bodyfontsize} \installalign \v!righttoleft {\lefttoright} @@ -759,7 +759,7 @@ \def\doalignedline#1{\resetrealignsignal\csname\s!do\v!line#1\endcsname} %D Experimental (will be redone when floats are redone as it's real messy -%D now): +%D now). It can also be made faster (if needed). \def\doxalignline#1#2#3#4#5#6% {\noindentation % was \noindent diff --git a/tex/context/base/spac-ver.mkiv b/tex/context/base/spac-ver.mkiv index c43e49853..2d137d360 100644 --- a/tex/context/base/spac-ver.mkiv +++ b/tex/context/base/spac-ver.mkiv @@ -476,11 +476,12 @@ \egroup} \unexpanded\def\correctwhitespace - {\dowithnextbox - {\startbaselinecorrection - \flushnextbox - \stopbaselinecorrection}% - \vbox} + {\dowithnextboxcs\correctwhitespacefinish\vbox} + +\def\correctwhitespacefinish + {\startbaselinecorrection + \flushnextbox + \stopbaselinecorrection} \unexpanded\def\verticalstrut {\normalvbox{\hsize\zeropoint\forgetall\strut}} \unexpanded\def\horizontalstrut{\normalhbox {\strut}} diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf index 901e46da8..6fd5f7f54 100644 Binary files a/tex/context/base/status-files.pdf and b/tex/context/base/status-files.pdf differ diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf index d75df13e0..544fde0a4 100644 Binary files a/tex/context/base/status-lua.pdf and b/tex/context/base/status-lua.pdf differ diff --git a/tex/context/base/strc-itm.mkvi b/tex/context/base/strc-itm.mkvi index 13f0f1c2d..3d3a7f953 100644 --- a/tex/context/base/strc-itm.mkvi +++ b/tex/context/base/strc-itm.mkvi @@ -933,7 +933,7 @@ % WS: make the distance between items customizable, think about better default values -> see itemize-1.tex \itemgroups_set_text_item_distance% HH: moved out and made configurable (sort of) \removeunwantedspaces - \hskip\textitemdistance\relax + \hskip\m_itemgroups_text_distance\relax \fi \else \itemgroups_between_command diff --git a/tex/context/base/syst-ini.mkiv b/tex/context/base/syst-ini.mkiv index df18f5307..e4cdfbd2b 100644 --- a/tex/context/base/syst-ini.mkiv +++ b/tex/context/base/syst-ini.mkiv @@ -345,12 +345,14 @@ \newskip \zeroskip \zeroskip = 0pt plus 0pt minus 0pt \newdimen\zeropoint \zeropoint = 0pt \newdimen\onepoint \onepoint = 1pt +\newdimen\halfapoint \halfapoint = 0.5pt \newdimen\maxdimen \maxdimen = 16383.99999pt \newdimen\onebasepoint \onebasepoint = 1bp \newdimen\scaledpoint \scaledpoint = 1sp \newdimen\thousandpoint\thousandpoint= 1000pt -\let\points\onepoint +\let\points \onepoint +\let\halfpoint\halfapoint \newtoks \emptytoks diff --git a/tex/context/base/tabl-tbl.mkiv b/tex/context/base/tabl-tbl.mkiv index 0a4aa3690..680e9160a 100644 --- a/tex/context/base/tabl-tbl.mkiv +++ b/tex/context/base/tabl-tbl.mkiv @@ -318,9 +318,11 @@ \unexpanded\def\aftertabulateentry {\unskip\unskip\ifmmode\else\endgraf\fi} \unexpanded\def\beginreshapedtabulatepar - {\dowithnextbox - {\ctxcommand{doreshapeframedbox(\number\nextbox)}\ifvmode\unvbox\else\box\fi\nextbox} - \vbox\bgroup} + {\dowithnextboxcs\beginreshapedtabulateparfinish\vbox\bgroup} + +\def\beginreshapedtabulateparfinish + {\ctxcommand{doreshapeframedbox(\number\nextbox)}% + \ifvmode\unvbox\else\box\fi\nextbox} \let\endreshapedtabulatepar\egroup diff --git a/tex/context/base/tabl-tsp.mkiv b/tex/context/base/tabl-tsp.mkiv index 84ea7d540..f230346bd 100644 --- a/tex/context/base/tabl-tsp.mkiv +++ b/tex/context/base/tabl-tsp.mkiv @@ -107,42 +107,44 @@ \fi} \def\dodowithsplitofffloat - {\dowithnextbox - {\forgetall - \dontcomplain - \global\settrue\splitfloatdone - \nodelocationmode\zerocount % bypass auto-renumbering - \global\advance\noffloatssplits\plusone - \ifcase\noffloatssplits\relax \or - \ifconditional\onlyonesplitofffloat - \let\floatcaptionsuffix\empty - \fi - \fi - \bgroup - \ifconditional\somenextsplitofffloat - \notesenabledfalse % best here, experimental, brrr; test with note in caption - \fi - \splitfloatcommand{\box\nextbox}% - \egroup - \ifconditional\somenextsplitofffloat - \doifelsenothing\@@siinbetween - {\ifconditional\splitfloatfirstdone\else\page\fi} - \@@siinbetween - \else - \@@siafter - \dopopsavedfloats - \doflushsavedfloats - \fi - \global\settrue\splitfloatfirstdone}% - \vbox} + {\dowithnextboxcs\dodowithsplitofffloatfinish\vbox} + +\def\dodowithsplitofffloatfinish + {\forgetall + \dontcomplain + \global\settrue\splitfloatdone + \nodelocationmode\zerocount % bypass auto-renumbering + \global\advance\noffloatssplits\plusone + \ifcase\noffloatssplits\relax \or + \ifconditional\onlyonesplitofffloat + \let\floatcaptionsuffix\empty + \fi + \fi + \bgroup + \ifconditional\somenextsplitofffloat + \notesenabledfalse % best here, experimental, brrr; test with note in caption + \fi + \splitfloatcommand{\box\nextbox}% + \egroup + \ifconditional\somenextsplitofffloat + \doifelsenothing\@@siinbetween + {\ifconditional\splitfloatfirstdone\else\page\fi} + \@@siinbetween + \else + \@@siafter + \dopopsavedfloats + \doflushsavedfloats + \fi + \global\settrue\splitfloatfirstdone} \def\nodowithsplitofffloat - {\dowithnextbox - {\forgetall - \dontcomplain - \box\nextbox % maybe an option to unvbox - \global\settrue\splitfloatfirstdone}% - \vbox} + {\dowithnextboxcs\nodowithsplitofffloatfinish\vbox} + +\def\nodowithsplitofffloatfinish + {\forgetall + \dontcomplain + \box\nextbox % maybe an option to unvbox + \global\settrue\splitfloatfirstdone} \def\dochecksplitofffloat#1% box {\ifinsidesplitfloat diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index a10efd5fb..eac42c455 100644 --- a/tex/generic/context/luatex/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : luatex-fonts-merged.lua -- parent file : luatex-fonts.lua --- merge date : 12/15/11 09:22:46 +-- merge date : 12/15/11 13:56:19 do -- begin closure to overcome local limits and interference -- cgit v1.2.3