summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/page-sid.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/page-sid.tex')
-rw-r--r--Master/texmf-dist/tex/context/base/page-sid.tex308
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