diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/page-sid.tex')
-rw-r--r-- | Master/texmf-dist/tex/context/base/page-sid.tex | 308 |
1 files changed, 176 insertions, 132 deletions
diff --git a/Master/texmf-dist/tex/context/base/page-sid.tex b/Master/texmf-dist/tex/context/base/page-sid.tex index 499f34f936f..02c4261fb59 100644 --- a/Master/texmf-dist/tex/context/base/page-sid.tex +++ b/Master/texmf-dist/tex/context/base/page-sid.tex @@ -15,6 +15,24 @@ \unprotect +% problem: when too small, side effects; we need to determine the +% shift earlier so that we can act when shift < size +% +% \definefloat[edgefigure] +% \setupfloat +% [edgefigure] +% [rightmargindistance=-\rightmargintotal, +% leftmargindistance=-\rightmargintotal, +% default=outer] +% \starttext +% \placeedgefigure{}{\framed[width=12cm]{}} \input tufte +% \placeedgefigure{}{\framed[width=5cm]{}} \input tufte +% \placeedgefigure{}{\framed[width=4cm]{}} \input tufte +% \placeedgefigure{}{\framed[width=2cm]{}} \input tufte +% \stoptext + +% todo: dimexpr an dnumexpr + % These macro deal with side floats. We started with Daniel % Comenetz macros as published in TUGBoat Volume 14 (1993), % No.\ 1: Anchored Figures at Either Margin. I extended and @@ -89,6 +107,37 @@ \newdimen\sidefloatrightskip \newdimen\sidefloatmaximum +% \def\checksidefloatshift +% {\ifdim\sidefloatmaximum>\zeropoint +% \ifcase\sidefloattype +% % invalid +% \or +% % backspace +% \or +% \global\sidefloatshift-\sidefloatmaximum +% \global\advance\sidefloatshift-\rightorleftpageaction \leftedgedistance \rightedgedistance +% \global\advance\sidefloatshift-\rightorleftpageaction \leftmarginwidth \rightmarginwidth +% \global\advance\sidefloatshift-\rightorleftpageaction \leftmargindistance \rightmargindistance +% \or +% \global\sidefloatshift-\sidefloatmaximum +% \global\advance\sidefloatshift-\rightorleftpageaction \leftmargindistance \rightmargindistance +% \or +% % left +% \or +% % right +% \or +% \global\sidefloatshift-\sidefloatmaximum +% \global\advance\sidefloatshift-\rightorleftpageaction \leftmargindistance \rightmargindistance +% \or +% \global\sidefloatshift-\sidefloatmaximum +% \global\advance\sidefloatshift-\rightorleftpageaction \leftedgedistance \rightedgedistance +% \global\advance\sidefloatshift-\rightorleftpageaction \leftmarginwidth \rightmarginwidth +% \global\advance\sidefloatshift-\rightorleftpageaction \leftmargindistance \rightmargindistance +% \or +% % cutspace +% \fi +% \fi} + \def\checksidefloatshift {\ifdim\sidefloatmaximum>\zeropoint \ifcase\sidefloattype @@ -96,59 +145,118 @@ \or % backspace \or - \global\sidefloatshift-\sidefloatmaximum - \global\advance\sidefloatshift-\rightorleftpageaction \leftedgedistance \rightedgedistance - \global\advance\sidefloatshift-\rightorleftpageaction \leftmarginwidth \rightmarginwidth - \global\advance\sidefloatshift-\rightorleftpageaction \leftmargindistance \rightmargindistance + \global\sidefloatshift\dimexpr + -\sidefloatmaximum + -\rightorleftpageaction \leftedgedistance \rightedgedistance + -\rightorleftpageaction \leftmarginwidth \rightmarginwidth + -\rightorleftpageaction \leftmargindistance \rightmargindistance + -\compensatedinnermakeupmargin + \relax \or - \global\sidefloatshift-\sidefloatmaximum - \global\advance\sidefloatshift-\rightorleftpageaction \leftmargindistance \rightmargindistance + \global\sidefloatshift\dimexpr + -\sidefloatmaximum + -\rightorleftpageaction \leftmargindistance \rightmargindistance + -\compensatedinnermakeupmargin + \relax \or % left \or % right \or - \global\sidefloatshift-\sidefloatmaximum - \global\advance\sidefloatshift-\rightorleftpageaction \leftmargindistance \rightmargindistance + \global\sidefloatshift\dimexpr + -\sidefloatmaximum + -\rightorleftpageaction \leftmargindistance \rightmargindistance + -\compensatedinnermakeupmargin + \relax \or - \global\sidefloatshift-\sidefloatmaximum - \global\advance\sidefloatshift-\rightorleftpageaction \leftedgedistance \rightedgedistance - \global\advance\sidefloatshift-\rightorleftpageaction \leftmarginwidth \rightmarginwidth - \global\advance\sidefloatshift-\rightorleftpageaction \leftmargindistance \rightmargindistance + \global\sidefloatshift\dimexpr + -\sidefloatmaximum + -\rightorleftpageaction \leftedgedistance \rightedgedistance + -\rightorleftpageaction \leftmarginwidth \rightmarginwidth + -\rightorleftpageaction \leftmargindistance \rightmargindistance + -\compensatedinnermakeupmargin + \relax \or % cutspace \fi \fi} +% \def\setsidefloatskips +% {\global\sidefloatrightskip\zeropoint +% \global\sidefloatleftskip \zeropoint +% \ifcase\sidefloattype +% \or % backspace +% \global \sidefloatleftskip \rightorleftpageaction \backspace \cutspace +% \or % leftedge +% \global \sidefloatleftskip \rightorleftpageaction \leftmargindistance\rightmargindistance +% \global\advance\sidefloatleftskip \rightorleftpageaction \leftmarginwidth\rightmarginwidth +% \global\advance\sidefloatleftskip \rightorleftpageaction \leftedgedistance\rightedgedistance +% \or % leftmargin +% \global \sidefloatleftskip \rightorleftpageaction \leftmargindistance\rightmargindistance +% \or % leftside +% \or % rightside +% \or % rightmargin +% \global \sidefloatrightskip\rightorleftpageaction \rightmargindistance\leftmargindistance +% \or % rightedge +% \global \sidefloatrightskip\rightorleftpageaction \rightmargindistance\leftmargindistance +% \global\advance\sidefloatrightskip\rightorleftpageaction \rightmarginwidth\leftmarginwidth +% \global\advance\sidefloatrightskip\rightorleftpageaction \rightedgedistance\leftedgedistance +% \or % cutspace +% \global \sidefloatrightskip\rightorleftpageaction \cutspace\backspace +% \fi +% \ifdim\sidefloatrightskip>\zeropoint +% \doglobal\advance\sidefloatrightskip\rightskip +% \fi +% \ifdim\sidefloatleftskip>\zeropoint +% \doglobal\advance\sidefloatleftskip\leftskip +% \fi} + + +% use \outermarginwidth etc here + \def\setsidefloatskips {\global\sidefloatrightskip\zeropoint \global\sidefloatleftskip \zeropoint \ifcase\sidefloattype \or % backspace - \global \sidefloatleftskip \rightorleftpageaction \backspace \cutspace + \global\sidefloatleftskip\dimexpr + +\rightorleftpageaction \backspace \cutspace + +\compensatedinnermakeupmargin + \relax \or % leftedge - \global \sidefloatleftskip \rightorleftpageaction \leftmargindistance\rightmargindistance - \global\advance\sidefloatleftskip \rightorleftpageaction \leftmarginwidth\rightmarginwidth - \global\advance\sidefloatleftskip \rightorleftpageaction \leftedgedistance\rightedgedistance + \global\sidefloatleftskip\dimexpr + +\rightorleftpageaction \leftmargindistance \rightmargindistance + +\rightorleftpageaction \leftmarginwidth \rightmarginwidth + +\rightorleftpageaction \leftedgedistance \rightedgedistance + +\compensatedinnermakeupmargin + \relax \or % leftmargin - \global \sidefloatleftskip \rightorleftpageaction \leftmargindistance\rightmargindistance + \global\sidefloatleftskip\dimexpr + +\rightorleftpageaction \leftmargindistance \rightmargindistance + +\compensatedinnermakeupmargin + \relax \or % leftside \or % rightside \or % rightmargin - \global \sidefloatrightskip\rightorleftpageaction \rightmargindistance\leftmargindistance + \global\sidefloatrightskip\dimexpr + +\rightorleftpageaction \rightmargindistance \leftmargindistance + +\compensatedinnermakeupmargin + \relax \or % rightedge - \global \sidefloatrightskip\rightorleftpageaction \rightmargindistance\leftmargindistance - \global\advance\sidefloatrightskip\rightorleftpageaction \rightmarginwidth\leftmarginwidth - \global\advance\sidefloatrightskip\rightorleftpageaction \rightedgedistance\leftedgedistance + \global\sidefloatrightskip\dimexpr + +\rightorleftpageaction \rightmargindistance \leftmargindistance + +\rightorleftpageaction \rightmarginwidth \leftmarginwidth + +\rightorleftpageaction \rightedgedistance \leftedgedistance + +\compensatedinnermakeupmargin + \relax \or % cutspace - \global \sidefloatrightskip\rightorleftpageaction \cutspace\backspace - \fi - \ifdim\sidefloatrightskip>\zeropoint - \doglobal\advance\sidefloatrightskip\rightskip + \global\sidefloatrightskip\dimexpr + +\rightorleftpageaction \cutspace \backspace + +\compensatedinnermakeupmargin + \relax \fi - \ifdim\sidefloatleftskip>\zeropoint - \doglobal\advance\sidefloatleftskip\leftskip - \fi} + \ifdim\sidefloatrightskip>\zeropoint \doglobal\advance\sidefloatrightskip\rightskip \fi + \ifdim\sidefloatleftskip >\zeropoint \doglobal\advance\sidefloatleftskip \leftskip \fi} % eq is still crap @@ -405,117 +513,53 @@ \fi -% \def\putsidefloat#1% grid (4) is rather experimental -% {\par -% \witruimte -% % moved here dec 2001 -% {\everypar\emptytoks\forgetall\verticalstrut\vskip-\struttotal}% moved -% \checksidefloatshift -% \ifdim\sidefloatshift=\zeropoint \relax -% \ifnum\sidefloattype=4 -% \global\advance\sidefloatshift\sidefloatextrashift -% \global\sidefloatextrashift\zeropoint -% \else\ifnum\sidefloattype=5 -% \global\advance\sidefloatshift\sidefloatextrashift -% \global\sidefloatextrashift\zeropoint -% \fi\fi -% \else -% \ifnum\sidefloattype<4 -% \global\chardef\sidefloattype4 -% \else\ifnum\sidefloattype>5 -% \global\chardef\sidefloattype5 -% \fi\fi -% \fi -% \previoussidefloat -% \stallsidefloat -% %\global\setbox\floatbox\hbox -% % {\ifmarginfloat\else\ifrightfloat\else\kern\sidefloatleftshift\fi\fi -% % \hskip\ifrightfloat-\sidefloatextrashift\else\sidefloatshift\fi -% % \vbox{#1\ifnum\sidefloatalign=4 \removedepth\fi}% -% % \kern\ifrightfloat\sidefloatshift\else-\sidefloatextrashift\fi -% % \ifmarginfloat\else\ifrightfloat\kern\sidefloatrightshift\fi\fi}% +% externfiguur -> grid =ja|hoogte|diepte|halveregel|passend -> helemaal in details +% stelplaatsblokin -> zijuitlijnen=hoogte|diepte|regel|halveregel|grid -> halveregel in 'details' + +% replacement for below +% % \global\setbox\floatbox\hbox % no \hskip, but \kern here -% {\ifnum\sidefloattype=4 +% {\ifcase\sidefloattype +% \vbox{#1}% +% \or % 1 % \hskip\sidefloatleftshift -% \else\ifnum\sidefloattype=1 +% \hskip\sidefloatshift +% \vbox{#1}% +% \kern-\sidefloatextrashift +% \or % 2 +% \hskip\sidefloatshift +% \vbox{#1}% +% \kern-\sidefloatextrashift +% \or % 3 +% \hskip\sidefloatshift +% \vbox{#1}% +% \kern-\sidefloatextrashift +% \or % 4 % \hskip\sidefloatleftshift -% \fi\fi -% \ifnum\sidefloattype>4 -% \hskip-\sidefloatextrashift -% \else % \hskip\sidefloatshift -% \fi -% \vbox{#1\ifnum\sidefloatalign=4 \removedepth\fi}% -% \ifnum\sidefloattype>4 -% \kern\sidefloatshift -% \else +% \vbox{#1\removedepth}% % \kern-\sidefloatextrashift -% \fi -% \ifnum\sidefloattype=8 +% \or % 5 +% \hskip-\sidefloatextrashift +% \vbox{#1}% +% \kern\sidefloatshift % \kern\sidefloatrightshift -% \else\ifnum\sidefloattype=5 +% \or % 6 +% \hskip-\sidefloatextrashift +% \vbox{#1}% +% \kern\sidefloatshift +% \or % 7 +% \hskip-\sidefloatextrashift +% \vbox{#1}% +% \kern\sidefloatshift +% \or % 8 +% \hskip-\sidefloatextrashift +% \vbox{#1}% +% \kern\sidefloatshift % \kern\sidefloatrightshift -% \fi\fi}% -% \ifnum\sidefloatalign=4 -% \getnoflines{\ht\floatbox}% -% \scratchdimen\noflines\lineheight -% \advance\scratchdimen-\strutdepth -% \getrawnoflines\sidefloattopskip -% \advance\scratchdimen\noflines\lineheight -% % todo: maybe rounding problem here -% % \global\setbox\floatbox\hbox{\lower\lineheight\box\floatbox}% -% \global\setbox\floatbox\hbox{\lower\strutdepth\box\floatbox}% -% \global\ht\floatbox\scratchdimen -% \global\dp\floatbox\zeropoint -% \fi -% \ifcase\sidefloatalign \else -% \global\sidefloattopskip\zeropoint -% \fi -% \scratchdimen -% \ifnum\sidefloattype<4 -% \sidefloattopskip -% \else\ifnum\sidefloattype>5 -% \sidefloattopskip -% \else -% \zeropoint -% \fi\fi -% % the top of the box is at the previous baseline -% \ifcase\sidefloatalign -% % 0 normal -% \advance\scratchdimen\strutdepth % == \sidefloattopoffset -% \or % 1 height -% \advance\scratchdimen\strutdepth % == \sidefloattopoffset -% \or % 2 line -% \or % 3 depth -% \advance\scratchdimen\lineheight -% \advance\scratchdimen\strutdepth -% \or % 4 grid -% \scratchdimen\zeropoint -% \fi -% % new -% \global\sidefloatlinesdone\zerocount -% \ifnum\sidefloatsidelines>\zerocount -% \advance\scratchdimen\sidefloatsidelines\lineheight -% \fi -% % new -% \global\setbox\floatbox\hbox -% {\vbox{\vskip\scratchdimen\nointerlineskip\box\floatbox}}% -% \ifnum\sidefloattype<4 -% \global\sidefloattopskip\zeropoint -% \else\ifnum\sidefloattype>5 -% \global\sidefloattopskip\zeropoint -% \fi\fi -% \global\sidefloatdownshift\zeropoint -% \measuresidefloat -% \ifroomforfloat \else -% \tosssidefloat -% \measuresidefloat -% \stallsidefloat -% \fi -% \setsidefloat} - -% externfiguur -> grid =ja|hoogte|diepte|halveregel|passend -> helemaal in details -% stelplaatsblokin -> zijuitlijnen=hoogte|diepte|regel|halveregel|grid -> halveregel in 'details' +% \fi}% +% +% keep this ^ \def\putsidefloat#1% grid (4) is rather experimental {\par |