summaryrefslogtreecommitdiff
path: root/tex/context/base/strc-flt.mkiv
diff options
context:
space:
mode:
authorMarius <mariausol@gmail.com>2011-11-08 16:20:15 +0200
committerMarius <mariausol@gmail.com>2011-11-08 16:20:15 +0200
commit40471dd95ca8782212c5d63ee5f2085b105ed7e8 (patch)
tree5fed44546f9fff4ea69168cf16e839b9d7c83e6c /tex/context/base/strc-flt.mkiv
parente39e55fe08653b79084655b91e468940b9495a59 (diff)
downloadcontext-40471dd95ca8782212c5d63ee5f2085b105ed7e8.tar.gz
beta 2011.11.08 15:20
Diffstat (limited to 'tex/context/base/strc-flt.mkiv')
-rw-r--r--tex/context/base/strc-flt.mkiv1887
1 files changed, 0 insertions, 1887 deletions
diff --git a/tex/context/base/strc-flt.mkiv b/tex/context/base/strc-flt.mkiv
deleted file mode 100644
index 4d94018ca..000000000
--- a/tex/context/base/strc-flt.mkiv
+++ /dev/null
@@ -1,1887 +0,0 @@
-%D \module
-%D [ file=strc-flt,
-%D version=2008.10.20,
-%D title=\CONTEXT\ Structure Macros,
-%D subtitle=Float Numbering,
-%D author=Hans Hagen,
-%D date=\currentdate,
-%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
-%C
-%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
-%C details.
-
-\writestatus{loading}{ConTeXt Structure Macros / Float Numbering}
-
-\registerctxluafile{strc-flt}{1.001}
-
-\unprotect
-
-%D This module needs a cleanup and will be split in
-%D strc-flt.tex and page-flt.mkiv cq. page-flt.mkii.
-
-\ifdefined\addlocalbackgroundtobox\else \def\addlocalbackgroundtobox{\resetglobal\gobbleoneargument} \fi
-
-\unexpanded\def\placefloats{\doflushfloats} % keep this one
-
-\installframedcommandhandler \??fl {float} \??fl
-\installframedcommandhandler \??kj {floatcaption} \??kj
-
-\let\setupfloats \setupfloat
-\let\setupcaption \setupfloatcaption
-\let\setupcaptions\setupfloatcaption
-
-\def\dohandlenextfloatindent
- {\checknextindentation[\floatparameter\c!indentnext]%
- \dorechecknextindentation}
-
-\setupcaptions
- [\c!location=\v!bottom,
- \c!grid=,
- \c!before=, % not used (yet)
- \c!inbetween={\blank[\v!medium]},
- \c!after=, % not used (yet)
- \c!spacebefore=,
- \c!spaceinbetween=, % replaces fuzzy inbetween dual usage
- \c!spaceafter=,
- \c!width=\v!fit,
- \c!minwidth=\v!fit, % id est: the width of the floatbox in some cases
- \c!headstyle=\v!bold,
- \c!headcolor=,
- \c!leftmargin=\zeropoint,
- \c!rightmargin=\zeropoint,
- \c!outermargin=\zeropoint,
- \c!innermargin=\zeropoint,
- \c!setups=,
- \c!style=\v!normal,
- \c!color=,
- \c!textstyle=,
- \c!textcolor=,
- \c!align=,
- \c!number=\v!yes,
- % \c!prefix=\v!no,
- % \c!prefixconnector=.,
- % \c!way=\v!by\v!chapter,
- % \c!prefixsegments=2:2,
- % \c!way=\@@nrway,
- % \c!blockway=\@@nrblockway,
- % \c!sectionnumber=\@@nrsectionnumber,
- % \c!separator=\@@koseparator,
- % \c!starter=\@@kostarter,
- % \c!stopper=\@@kostopper,
- \c!suffixseparator=, % currently rather hard coded
- \c!suffix=\floatcaptionsuffix,
- \c!distance=1em,
- \c!conversion=\v!numbers,
- \c!command=]
-
-% we can comment some of these
-
-\setupfloats
- [\c!location=\v!middle,
- \c!width=8\lineheight,
- \c!height=6\lineheight,
- \c!offset=\v!overlay,
- \c!frame=\v!off,
- \c!strut=\v!no,
- \c!radius=.5\bodyfontsize,
- \c!corner=\v!rectangular,
- %\c!background=,
- %\c!backgroundcolor=,
- \c!backgroundoffset=\!!zeropoint,
- %\c!topframe=,
- %\c!bottomframe=,
- %\c!leftframe=,
- %\c!rightframe=,
- \c!frameoffset=\!!zeropoint,
- %\c!before=,
- %\c!after=,
- \c!spacebefore=\v!big,
- \c!spaceafter=\v!big,
- \c!sidespacebefore=\rootfloatparameter\c!spacebefore,
- \c!sidespaceafter=\rootfloatparameter\c!spaceafter,
- \c!sidealign=\v!normal,
- \c!textmethod=\ifgridsnapping2\else0\fi, % 0=raw 1=safe (.99pg) 2=tight (-1pt) % THIS WILL CHANGE
- \c!sidemethod=\ifgridsnapping2\else1\fi, % 0=raw 1=safe (.99pg) 2=tight (-1pt) % THIS WILL CHANGE
- \c!indentnext=\v!no,
- \c!margin=1em,
- \c!method=1,
- \c!cache=\v!yes, % when no, then intermediate flush
- \c!leftmargin=\zeropoint, % displacement in 'normal floats'
- \c!rightmargin=\zeropoint, % idem
- \c!innermargin=\zeropoint, % idem
- \c!outermargin=\zeropoint, % idem
- \c!leftmargindistance=\zeropoint,
- \c!rightmargindistance=\floatparameter\c!leftmargindistance,
- \c!ntop=2,
- \c!nbottom=0,
- \c!nlines=4,
- %\c!local=,
- %\c!bottombefore=, % e.g. \vfill
- %\c!bottomafter=,
- %\c!default=, % default location
- \c!numbering=\v!yes]
-
-%D Individial settings:
-
-\presetstructurecountersetup\setupcaption\sharedstructurecounterparameter
-
-\appendtoks
- \let\currentfloat\currentfloatcaption
- \ifx\currentfloat\empty \else
- \dostructurecountersetup\currentfloatcaption\floatcaptionparameter
- \docheckstructurecountersetup\currentfloatcaption
- \fi
-\to \everysetupfloatcaption
-
-%D Definitions:
-
-\let\saveddefinefloat\definefloat
-
-\unexpanded\def\definefloat
- {\dotripleempty\dodefinefloat}
-
-\def\dodefinefloat[#1][#2][#3]% #1=naam #2=meervoud #3=parent
- {\ifthirdargument
- \redodefinefloat[#1][#2][#3]%
- \else\ifsecondargument
- \dododefinefloat[#1][#2]%
- \else
- \dododefinefloat[#1][#1]%
- \fi\fi}
-
-\def\dododefinefloat[#1][#2]%
- {\definefloatcaption[#1]%
- \definestructurecounter[#1]%
- \definelist[#1]%
- \presetlabeltext[#1=\Word{#1}~]%
- \presetheadtext[#2=\Word{#2}]%
- \saveddefinefloat[#1]%
- \dodefinefloatcommands[#1][#2]}
-
-\def\redodefinefloat[#1][#2][#3]%
- {\definefloatcaption[#1][#3]%
- \definestructurecounter[#1][#3]%
- \definelist[#1][#3]%
- \presetlabeltext[#1=\Word{#3}~]%
- \presetheadtext[#2=\Word{#2}]%
- \saveddefinefloat[#1][#3]%
- \dodefinefloatcommands[#1][#2]}
-
-\def\dodefinefloatcommands[#1][#2]%
- {\setuvalue {\e!place\e!listof#2}{\dodoubleempty\doplacelist[#1]}%
- \setuvalue {\e!complete\e!listof#2}{\dotripleempty\dodocompletelist[#1][#2]}%
- \setuvalue {\e!place#1}{\dotripleempty\docomplexplacefloat[#1]}%
- \setuvalue {\e!start\e!place#1}{\dodoubleempty\dostartplacefloat[#1]}%
- \setuvalue {\e!stop\e!place#1}{\dostopplacefloat}%
- \setuvalue {\e!reserve#1}{\doquadrupleempty\docomplexreserveblock[#1]}%
- \setuvalue {\e!start#1\e!text}{\dotripleempty\docomplexstarttextblock[#1]}%
- \setuvalue {\e!stop#1\e!text}{\dostoptextfloat}%
- \setuvalue{\e!start\e!reserve#1\e!text}{\doquadrupleempty\docomplexstartreservetextblock[#1]}%
- \setuvalue {\e!stop\e!reserve#1\e!text}{\dostoptextfloat}%
- \setuvalue {\e!emptyone#1}{\doemptyfloatblock{#1}}%
- \setuvalue {\e!emptytwo#1}{\doemptyfloatblock{#1}}}
-
-%D Fallback float body:
-
-\def\doemptyfloatblock#1%
- {\framed
- [\c!frame=\v!on,
- \c!width=\rootfloatparameter\c!width,
- \c!height=\rootfloatparameter\c!height,
- \c!location=\v!normal,
- \c!offset=\rootfloatparameter\c!offset]%
- {\getmessage\m!floatblocks{12}\empty}}
-
-%D Data. We can generalize this to lists.
-
-\newif\ifnofloatcaption
-\newif\ifnofloatnumber
-\newif\ifemptyfloatcaption
-
-\installstructurelistprocessor{float}{\usestructurelistprocessor{number+title}}
-
-\unexpanded\def\thecurrentfloatnumbersuffix
- {\doifsomething{\floatcaptionparameter\c!suffix}
- {\floatcaptionparameter\c!suffixseparator
- \floatcaptionparameter\c!suffix}}
-
-\def\thecurrentfloatnumber
- {\ifnofloatcaption \else \ifnofloatnumber \else
- \ifx\currentfloatnumber\relax\else
- \namedtaggedlabeltexts
- \t!floatlabel \currentfloat
- \t!floatnumber\currentfloat
- {\ctxlua{structures.lists.savedprefixednumber("\currentfloat",\currentfloatnumber)}%
- \thecurrentfloatnumbersuffix}%
- \fi
- \fi \fi}
-
-\def\thecurrentfloatcaption
- {\ifnofloatcaption \else
- \ifx\currentfloatnumber\relax\else
- \dostarttagged\t!floattext\empty
- \ctxlua{structures.lists.savedtitle("\currentfloat",\currentfloatnumber)}%
- \dostoptagged
- \fi
- \fi}
-
-%D Captions.
-
-\let\floatcaptionsuffix\empty % an optional suffix
-\let\floatcaptionnumber\empty % a logical counter
-
-% the split is needed when for instance the float goes into
-% a multi page field and the list of figs becomes larger than
-% one page: cycle between 'only flush when object ref ok'
-% and 'one/many page fig list'; see "uguide finometer"
-%
-% potential sync bug with sectionblocks, see uguide.tex
-
-% begin of todo
-
-\unexpanded\def\placefloatcaption{\dodoubleempty\doplacefloatcaption}
-\unexpanded\def\setfloatcaption {\dodoubleempty\dodosetfloatcaption}
-
-\def\doplacefloatcaption[#1][#2]#3{[not supported]}
-\def\dodosetfloatcaption[#1][#2]#3{[not supported]} % \dosetfloatcaption already in use
-
-\unexpanded\def\placefloatcaptiontext [#1]{[not suported yet]}
-\unexpanded\def\placefloatcaptionnumber [#1]{[not suported yet]}
-\unexpanded\def\placefloatcaptionreference[#1]{[not suported yet]}
-
-\let\placefloatlabel \placefloatcaption
-\let\placefloatlabeltext \placefloatcaptiontext
-\let\placefloatlabelreference\placefloatcaptionreference
-
-% end of todo
-
-\newbox\captionbox
-
-\long\def\putcompletecaption#1#2%
- {\doifsomething{\floatcaptionparameter\c!spacebefore}{\blank[\floatcaptionparameter\c!spacebefore]}%
- %\floatcaptionparameter\c!before % test for side effects first
- \synchronizedisplaydirection % temp hack, till we have a proper model
- \noindent
- \gdef\lastcaptiontag{\strut#1}% was xdef
- \begingroup
- \dosetfloatcaptionattributes\c!style\c!color
- \ifnofloatnumber
- \else
- \hbox{\dosetfloatcaptionattributes\c!headstyle\c!headcolor\strut#1}%
- \ifnofloatcaption \else \ifemptyfloatcaption \else
- \doifelsenothing{\floatcaptionparameter\c!spaceinbetween}
- {\scratchskip\floatcaptionparameter\c!distance\relax
- \dotfskip\scratchskip\emergencystretch.5\scratchskip}
- {\blank[\floatcaptionparameter\c!spaceinbetween]}%
- \fi \fi
- \fi
- \ifnofloatcaption
- \globallet\lastcaptionht\!!zeropoint
- \globallet\lastcaptiondp\!!zeropoint
- \else
- \dosetfloatcaptionattributes\c!textstyle\c!textcolor
- \xdef\lastcaptionht{\strutheight}%
- \xdef\lastcaptiondp{\strutdepth}%
- \begstrut#2\endstrut\endgraf
- \fi
- \endgroup
- %\floatcaptionparameter\c!after % test for side effects first
- \doifsomething{\floatcaptionparameter\c!spaceafter}{\blank[\floatcaptionparameter\c!spaceafter]}}
-
-\let\lastcaptionht\!!zeropoint
-\let\lastcaptiondp\!!zeropoint
-
-\newbox\tempcaptionbox
-
-\newif\iftracecaptions
-
-\def\settracedcaptionbox
- {\iftracecaptions\setbox\tempcaptionbox\ruledhbox{\box\tempcaptionbox}\fi}
-
-% \definefloat [figure-1] [figure]
-% \definefloat [figure-2] [figure]
-% \setupfloat [figure-1] [location=left,leftmargin=10mm]
-% \setupfloat [figure-2] [location=left,leftmargin=-5mm]
-% \setupcaption [figure-1] [align=flushleft]
-% \setupcaption [figure-2] [align=flushleft,leftmargin=15mm]
-%
-% \startsetups somefigure
-% \ifdim\wd\nextbox>\textwidth
-% \placefloat[figure-2][][]{}{\box\nextbox}
-% \else
-% \placefloat[figure-1][][]{}{\box\nextbox}
-% \fi
-% \stopsetups
-%
-% \unexpanded\def\setupswithbox[#1]{\dowithnextbox{\setups[#1]}\vbox}
-%
-% test \setupswithbox[somefigure]{\framed[width=3cm] {}} test
-% test \setupswithbox[somefigure]{\framed[width=\dimexpr\textwidth+3cm\relax]{}} test
-
-\def\dosetcaptionthings
- {\doprocesslocalsetups{\floatcaptionparameter\c!setups}% expanded ?
- %\advance\leftskip \floatcaptionparameter\c!leftmargin
- %\advance\rightskip\floatcaptionparameter\c!rightmargin
- \relax}
-
-\def\dofakecaptionthings
- {\hbox{\dosetcaptionthings\hskip\leftskip\hskip\rightskip}}
-
-\long\def\docheckcaptioncontent#1#2% side floats
- {\ifnofloatcaption \else
- \setbox\tempcaptionbox\hbox
- {\settrialtypesetting
- \notesenabledfalse
- \putcompletecaption{#1}{#2}}%
- % new, \placefigure{\xmlfirst{#1}{somecaption}}{} passes earlier empty check
- % so here we misuse the scratch box; actually this means that the previous
- % test can go away (some day, when i redo this module)
- \ifdim\wd\tempcaptionbox=\zeropoint
- \global\emptyfloatcaptiontrue
- \ifnofloatnumber
- \global\nofloatcaptiontrue
- \fi
- \else
- \setbox\tempcaptionbox\hbox{\dosetcaptionthings\hskip\leftskip\box\tempcaptionbox}% yet incomplete
- \fi
- \fi}
-
-% the tricky part of getting float related two pass data is
-% that we should fetch is early but can only save it with
-% the composed float box; this determines the order: get it
-% before saving it
-
-\definetwopasslist{\s!float\s!data} \newcounter\noffloatdata
-
-\let\twopassfloatdata\realpageno % used for odd/even determination, can be combined with nodelocation
-
-\def\dosavefloatdata % \expanded ... will change in mkiv
- {\doglobal\increment\noffloatdata
- \lazysavetaggedtwopassdata{\s!float\s!data}{\noffloatdata}{\noffloatpages}{\noexpand\realfolio}}% later {}{}{}{} and \getfirst...
-
-\def\dogetfloatdata % precedes save !
- {\doglobal\increment\noffloatpages
- \findtwopassdata{\s!float\s!data}{\noffloatpages}%
- \iftwopassdatafound
- \globallet\twopassfloatdata\twopassdata
- \else
- \globallet\twopassfloatdata\realpageno % \realfolio
- \fi}
-
-\def\tracefloatnumber#1%
- {\doifnot{\rootfloatparameter\c!numbering}\v!nocheck{\tagnodelocation{\v!float\@@thenumber{#1}}}}
-
-%D test case:
-%D
-%D \starttyping
-%D \setupfloat[figure][criterium=\marginwidth,fallback=bottom]
-%D \dorecurse{3}{
-%D \chapter{test}
-%D \placefigure[bottom]{1}{\framed{bottom}}
-%D test
-%D \placetable[bottom]{1}{\framed{table}}
-%D test
-%D \placetable{2}{\framed{table}}
-%D test
-%D \placefigure[left]{2}{\framed{left but way too wide}}
-%D \input tufte
-%D \placefigure[left]{3}{\framed{left but ok}}
-%D \input tufte }
-%D \stoptyping
-
-% A complication is that we may have to handle a pagebreak
-% first, which in turn may issue a (postponed) float.
-% Therefore we may not trust on variable assignments before
-% we're really dealing with the float. Some day I'll root out
-% the global settings.
-
-\unexpanded\def\docomplexplacefloat[#1][#2]% [#3]#4%
- {\edef\currentfloat{#1}%
- \doifnothing\currentfloat{\let\currentfloat\v!figure}% hack
- \let\currentfloatcaption\currentfloat
- \doifelsenothing{#2}
- {\edef\floatlocation{\floatparameter\c!default}}
- {\edef\floatlocation{#2}}%
- \doifinsetelse\v!split{#2}
- {\normalexpanded{\dodocomplexsplitfloat[\currentfloat][\floatlocation]}}
- {\normalexpanded{\dodocomplexplacefloat[\currentfloat][\floatlocation]}}}
-
-\unexpanded\def\dodocomplexsplitfloat[#1][#2][#3]#4%
- {\splitfloat{\dodocomplexplacefloat[#1][#2][#3]{#4}}}
-
-\unexpanded\def\dostartplacefloat[#1][#2]% will be done the other way around but okay for now
- {\begingroup
- \getparameters[\??fl\??fl][\c!location=,\c!reference=,\c!title=,#2]%
- \normalexpanded{\docomplexplacefloat[#1][\@@fl@@fllocation][\@@fl@@flreference]{\@@fl@@fltitle}}%
- \bgroup
- \ignorespaces}
-
-\unexpanded\def\dostopplacefloat
- {\removeunwantedspaces
- \egroup
- \endgroup}
-
-
-\def\flushfloatslist
- {\v!left,\v!right,\v!inner,\v!outer,%
- \v!backspace,\v!cutspace,%
- \v!inleft,\v!inright,\v!inmargin,%
- \v!leftmargin,\v!rightmargin,\v!leftedge,\v!rightedge,%
- \v!innermargin,\v!outermargin,\v!inneredge,\v!outeredge,%
- \v!text,\v!opposite}% \v!page
-
-\unexpanded\def\dodocomplexplacefloat[#1][#2][#3]#4%
- {\flushnotes
- \flushsidefloats % here !
- \ifsomefloatwaiting
- % this was \checkwaitingfloats spread all over
- \doifinsetelse\v!always{#2}
- {\showmessage\m!floatblocks5\empty}
- {\normalexpanded{\noexpand\doifcommonelse{#2}{\flushfloatslist}}\doflushfloats\donothing}%
- % but which should be done before using box \floatbox
- \fi
- \ifmarginblocks
- \doifinset\v!margin{#2}\endgraf
- \fi
- \global\insidefloattrue
- \begingroup % **
- \dostarttagged\t!float\currentfloat
- \ifmarginblocks
- \doifinset\v!margin{#2}{\hsize\@@mbwidth}%
- \fi
- \the\everyinsidefloat
- \let\@@extrafloat\empty
- \presetmorefloatvariables{#2}%
- \dostarttagged\t!floatcontent\empty
- \dowithnextboxcontent % better a \the\everyfloattoks
- {\setlocalfloathsize
- \floatparameter\c!inner
-% \dostarttagged\t!floatcontent\empty
-% \aftergroup\dostoptagged % tricky, never change \dowithnextboxcontent
- \postponenotes} % new
- {\dostoptagged
- \doifsomething{\floatparameter\c!criterium}
- {\ifdim\wd\nextbox>\floatparameter\c!criterium\relax
- \edef\forcedfloatmethod{\floatparameter\c!fallback}%
- \ifx\forcedfloatmethod\empty\let\forcedfloatmethod\v!here\fi
- \fi}%
- \xdocompletefloat{#1}{#3}{#2}{#4}% ** not yet done
- % we need to carry over the par because of side floats
- \doifnotinset\v!text{#2}{\dostoptagged\carryoverpar\endgroup}% **
- \global\sidefloatdownshift \zeropoint
- \global\sidefloatextrashift\zeropoint
- \ifparfloat
- \doifinset\v!reset{#2}\forgetsidefloats
- \doinhibitblank
- \fi}% better move this to side floats
- \vbox}
-
-\def\xxdocompletefloat#1#2%
- {\rightorleftpageaction{\let\@@extrafloat#1}{\let\@@extrafloat#2}}
-
-\setnewconstant\sidefloatalign \zerocount
-\setnewconstant\textfloatmethod\zerocount % 0=raw 1=safe (.99) 2=tight (-1pt)
-\setnewconstant\sidefloatmethod\plusone % 0=raw 1=safe (.99) 2=tight (-1pt)
-
-\let\floatrotation\!!zerocount
-
-\unexpanded\def\presetfloatvariables#1#2#3#4%
- {\doifcommonelse
- {#2}
- {\v!left,\v!right,\v!inner,\v!outer,%
- \v!inleft,\v!inright,\v!inmargin,%
- \v!backspace,\v!cutspace,%
- \v!innermargin,\v!outermargin,\v!inneredge,\v!outeredge,%
- \v!leftmargin,\v!leftedge,\v!rightmargin,\v!rightedge}
- {\global\parfloattrue}
- {\global\parfloatfalse}%
- \ifinsidecolumns
- \global\parfloatfalse
- \fi
- \global\sidefloatshift\zeropoint
- \global\sidefloatmaximum\zeropoint
- \global\sidefloatmethod\floatparameter\c!sidemethod
- \global\textfloatmethod\floatparameter\c!textmethod
- \global\sidefloatalign\zerocount
- \globallet\floatrotation\!!zerocount
- \calculatefloatskips
- \ifparfloat
- \processaction
- [\floatparameter\c!sidealign]
- [\v!height=>\global\sidefloatalign\plusone,%
- \v!line=>\global\sidefloatalign\plustwo,% (***)
- \v!depth=>\global\sidefloatalign\plusthree,%
- \v!grid=>\global\sidefloatalign\plusfour,%
- \v!halfline=>\global\sidefloatalign\plusfive]%
- % todo (test first): \doifinset\v!lokaal{#2}{\global\sidefloatalign\zerocount}%
- \ifcase\sidefloatalign\relax % todo: optie v!lokaal => \else
- \doifinset\v!height {#2}{\global\sidefloatalign\plusone}%
- \doifinset\v!line {#2}{\global\sidefloatalign\plustwo}%
- \doifinset\v!depth {#2}{\global\sidefloatalign\plusthree}%
- \doifinset\v!grid {#2}{\global\sidefloatalign\plusfour}%
- \doifinset\v!halfline{#2}{\global\sidefloatalign\plusfive}% meant for 'none'
- \fi
- \doifinset\v!high{#2}{\global\sidefloattopskip \zeropoint}%
- \doifinset\v!low {#2}{\global\sidefloatbottomskip\zeropoint}%
- \doifinset\v!fit {#2}
- {\global\sidefloattopskip \zeropoint
- \global\sidefloatbottomskip\zeropoint
- \global\floatsideskip \zeropoint}%
- \else
- \processallactionsinset
- [#2]
- [ 90=>\globallet\floatrotation\commalistelement,%
- 180=>\globallet\floatrotation\commalistelement,%
- 270=>\globallet\floatrotation\commalistelement]%
- \fi
- \doifinsetelse\v!nonumber{#2}
- {\global\nofloatnumbertrue}
- {\doifelse{\floatcaptionparameter\c!number}\v!yes
- {\global\nofloatnumberfalse}
- {\global\nofloatnumbertrue}}%
- % this has to change
- \ConvertToConstant\doifelse{#4}{}
- {\global\emptyfloatcaptiontrue}
- {\global\emptyfloatcaptionfalse}%
- \doifinsetelse\v!none{#2}
- {\global\nofloatcaptiontrue}
- {\global\nofloatcaptionfalse}%
- \doif{\floatcaptionparameter\c!number}\v!none % new
- {\global\nofloatcaptiontrue}%
- \ifemptyfloatcaption \ifnofloatnumber
- \global\nofloatcaptiontrue
- \fi \fi}
-
-% documenteren in details
-
-\def\presetmorefloatvariables#1%
- {\doifelse{\floatparameter\c!local}\v!yes % fout keyword
- \globalcenterfloatboxtrue
- \globalcenterfloatboxfalse
- \ifglobalcenterfloatbox
- \localcenterfloatboxtrue
- \else
- \doifinsetelse\v!local{#1}
- \localcenterfloatboxtrue
- \localcenterfloatboxfalse
- \fi
- \doifnotcommon{\v!always,\v!here,\v!force}{#1} % ! ! ! ! ! !
- {\globalcenterfloatboxfalse
- \localcenterfloatboxfalse}}
-
-\let\naturalfloatheight\!!zeropoint
-\let\naturalfloatwidth \!!zeropoint
-\let\naturalfloatdepth \!!zeropoint
-
-\def\setnaturalfloatdimensions#1%
- {\xdef\naturalfloatheight{\the\ht#1}%
- \xdef\naturalfloatwidth {\the\wd#1}%
- \xdef\naturalfloatdepth {\the\dp#1}}
-
-\def\doifelsemainfloatbody#1#2%
- {\ifinsidesplitfloat\ifconditional\splitfloatfirstdone#2\else#1\fi\else#1\fi}
-
-% todo: optional user pars
-
-\let\currentfloatattribute\empty % to be checked
-
-\def\floatcaptionattribute
- {\iflocation
- \ifnofloatnumber
- \else
- \ifnofloatcaption
- \else
- \ifinsidesplitfloat
- \ifconditional\splitfloatfirstdone
- \else
- attr \destinationattribute \currentfloatattribute
- \fi
- \else
- attr \destinationattribute \currentfloatattribute
- \fi
- \fi
- \fi
- \fi}
-
-\newconditional\usesamefloatnumber
-
-\long\def\docompletefloat#1#2#3#4#5% #1:floatclass #2:reference #3:optionlist #4:caption #5:box number
- {\presetfloatvariables{#1}{#3}{#2}{#5}% check this one
- \bgroup
- % prepare structure data
- %
- % \dofloatcomponent[\c!name=#1,\c!reference=#2,\c!bookmark=,\c!title={#4}][]% ifnofloatnumber ifnofloatcaption \tracefloatnumber{#1}%
- %
- \ifconditional\usesamefloatnumber
- \globallet\currentfloatnumber \previousfloatnumber
- \globallet\currentfloatattribute \empty
- \globallet\currentfloatsynchronize\relax
- \else
- \dostructurecountercomponent
- {float}%
- \setupcurrentfloatcaption
- \floatcaptionparameter
- \detokenizedfloatcaptionparameter
- \relax
- \relax
- \relax
- [\c!name=\currentfloat,\s!counter=\@@thestructurecounter\currentfloat,%
- \s!hascaption=\ifnofloatcaption \v!no\else\v!yes\fi,%
- \s!hasnumber=\ifnofloatnumber \v!no\else\v!yes\fi,%
- \s!hastitle=\ifemptyfloatcaption\v!no\else\v!yes\fi,%
- \c!reference=#2,\c!title={#4},\c!bookmark=]%
- []%
- \globallet\previousfloatnumber \laststructurecounternumber
- \globallet\currentfloatnumber \laststructurecounternumber
- \globallet\currentfloatattribute \laststructurecounterattribute
- \globallet\currentfloatsynchronize\laststructurecountersynchronize
- \fi
- %
- \global\setfalse\usesamefloatnumber % one shot
- % check float box
- \setnaturalfloatdimensions#5%
- \global\setbox\floatbox\vbox{\floatparameter\c!command{\box#5}}%
- \setnaturalfloatdimensions\floatbox
- \ifdim\htdp\floatbox=\zeropoint
- \showmessage\m!floatblocks{11}\empty
- \global\setbox\floatbox\vbox{\doemptyfloatblock{#1}}%
- \fi
- % deal with lack of caption
- \global\setbox\floatbox\vbox \floatcaptionattribute
- {\doifelsemainfloatbody\currentfloatsynchronize\donothing
- \unvbox\floatbox
- \ifnofloatcaption
- \vss
- \fi}% gets rid of the depth (unless tabulate)
- \egroup
- % place the float
- \dofloat{#3}{\thecurrentfloatnumber}{\thecurrentfloatcaption}%
-% \dostoptagged % tricky here, we need an extra mechanism (add to previous or so)
- \global\insidefloatfalse}
-
-\def\setlocalfloathsize
- {\iflocalcenterfloatbox
- \seteffectivehsize
- \hsize\localhsize
- \fi}
-
-\ifdefined\everyinsidefloat \else \newevery \everyinsidefloat \relax \fi
-
-\appendtoks
- \everyinsidefloat\emptytoks % in case it's called earlier
- \dogetfloatdata
-\to \everyinsidefloat
-
-\def\doifrightpagefloatelse
- {\ifdoublesided
- \ifsinglesided
- \@EAEAEA\firstoftwoarguments
- \else
- \@EAEAEA\doifoddfloatpageelse
- \fi
- \else
- \@EA\firstoftwoarguments
- \fi}
-
-\def\doifoddfloatpageelse
- {\ifodd\purenumber\twopassfloatdata\space
- \@EA\firstoftwoarguments
- \else
- \@EA\secondoftwoarguments
- \fi}
-
-\appendtoks
- \let\rightorleftpageaction\doifrightpagefloatelse
-\to \everyinsidefloat
-
-\newif\ifextrafloatactions \extrafloatactionstrue
-
-% \let\movesidefloat\gobbleoneargument
-
-% new : \place...[leftmargin,-2*line]; we need to catch fxtb:2*3
-% watch out: line alone aligns on the line ! ! !
-
-\def\movesidefloat[#1]% (-)n*line|x=,y=
- {\global\sidefloatdownshift \zeropoint
- \global\sidefloatextrashift\zeropoint
- \doifassignmentelse{#1}%
- {\bgroup
- \getparameters[\??fl\??fl][\c!x=\zeropoint,\c!y=\zeropoint,#1]%
- \ifgridsnapping
- \getnoflines\@@fly
- \global\sidefloatdownshift\noflines\lineheight
- \else
- \global\sidefloatdownshift\@@fl@@fly
- \fi
- \global\sidefloatextrashift\@@fl@@flx
- \egroup}
- {\movedownsidefloat[#1]}}
-
-\def\movedownsidefloat[#1]% already in core
- {\bgroup
- \cleanupfeatures
- \doifinstringelse{:}{#1}
- \donothing
- {\def\docommand##1%
- {\processaction
- [##1]%
- [ \v!line=>\dodocommand+,%
- +\v!line=>\dodocommand+,%
- -\v!line=>\dodocommand-]}%
- \def\dodocommand##1%
- {\ifdone\else\global\sidefloatdownshift\zeropoint\donetrue\fi
- \global\advance\sidefloatdownshift##1\lineheight}%
- \donefalse\normalexpanded{\noexpand\dorepeatwithcommand[#1]}\docommand
- \def\docommand##1%
- {\processaction
- [##1]%
- [ \v!hang=>\dodocommand\plusone,%
- +\v!hang=>\dodocommand\plusone,%
- -\v!hang=>\dodocommand\minusone]}%
- \def\dodocommand##1% inefficient but who cares
- {\ifdone\else\global\sidefloatsidelines\zerocount\donetrue\fi
- \global\advance\sidefloatsidelines##1\relax}%
- \donefalse\normalexpanded{\noexpand\dorepeatwithcommand[#1]}\docommand}%
- \egroup}
-
-\def\hangsidefloat[#1]%
- {\global\sidefloatsidelines#1\relax}
-
-\long\def\xdocompletefloat#1#2#3#4%
- {\ifextrafloatactions
- \doifinsetelse\v!text{#3}
- {% fuzzy, text overloads left, since then it's a directive
- \docompletefloat{#1}{#2}{#3}{#4}\nextbox}
- {\let\@@extrafloat\empty
- % \sidefloatdownshift will be reset afterwards, and can
- % already be set at this point
- \processallactionsinset
- [#3] % ininner/inouter : for old times sake
- [ \v!inner=>\xxdocompletefloat\v!left \v!right,
- \v!outer=>\xxdocompletefloat\v!right \v!left,
- \v!innermargin=>\xxdocompletefloat\v!leftmargin \v!rightmargin,
- \v!outermargin=>\xxdocompletefloat\v!rightmargin\v!leftmargin,
- \v!inneredge=>\xxdocompletefloat\v!leftedge \v!rightedge,
- \v!outeredge=>\xxdocompletefloat\v!rightedge \v!leftedge,
- \v!backspace=>\xxdocompletefloat\v!backspace \v!cutspace,
- \v!cutspace=>\xxdocompletefloat\v!cutspace \v!backspace,
-% \v!margin=>\xxdocompletefloat\v!cutspace \v!backspace,
- \v!left=>\xxdocompletefloat\v!left \v!left,
- \v!right=>\xxdocompletefloat\v!right \v!right,
- \v!line=>, % only -n*line is handled (see ***)
- \s!unknown=>{\movedownsidefloat[\commalistelement]}]%
- \ifx\@@extrafloat\empty
- \docompletefloat{#1}{#2}{#3}{#4}\nextbox
- \else
- \docompletefloat{#1}{#2}{\@@extrafloat,#3}{#4}\nextbox
- \fi}%
- \else % downward compatible
- \docompletefloat{#1}{#2}{#3}{#4}\nextbox
- \fi}
-
-% pas op, maxbreedte niet instellen als plaats=links/rechts
-
-\def\setlocalfloatdimensions#1%
- {\global\sidefloatshift \zeropoint % duplicate
- \global\sidefloatmaximum\zeropoint\relax % duplicate
- \ifextrafloatactions
- \ifdim\sidefloatdownshift=\zeropoint\else
- \global\setbox\floatbox\vbox
- {\vskip\sidefloatdownshift\nointerlineskip\box\floatbox}%
- \fi
- \doifsomething{\floatparameter\c!minwidth}
- {\scratchdimen\floatparameter\c!minwidth\relax
- \ifdim\wd\floatbox<\scratchdimen
- \global\setbox\floatbox\hbox to \scratchdimen
- {\doifnot{\floatparameter\c!location}\v!left \hss
- \box\floatbox
- \doifnot{\floatparameter\c!location}\v!right\hss}%
- \fi}%
- % todo: rand / rug
- \doifinset\v!hanging{#1}
- {\doifcommonelse{\v!inleft,\v!leftmargin}{#1}
- {\letfloatparameter\c!maxwidth\leftmarginwidth}%
- {\doifcommon{\v!inright,\v!rightmargin}{#1}
- {\letfloatparameter\c!maxwidth\rightmarginwidth}}}%
- \doifsomething{\floatparameter\c!maxwidth}
- {\scratchdimen\floatparameter\c!maxwidth\relax
- \ifdim\wd\floatbox>\scratchdimen
- \doifcommonelse{\v!inright,\v!rightmargin,\v!rightedge,\v!inleft,\v!leftmargin,\v!leftedge}{#1}
- {\global\sidefloatmaximum\scratchdimen}
- {\global\setbox\floatbox\hbox to \scratchdimen
- {\doifcommonelse{\v!right,\v!left}{#1}
- {\doifnotinset\v!right{#1}\hss
- \box\floatbox
- \doifnotinset\v!left{#1}\hss}%
- {\doifnot{\floatparameter\c!location}\v!left\hss
- \box\floatbox
- \doifnot{\floatparameter\c!location}\v!right\hss}}}%
- \fi}%
- \fi}
-
-\def\docomplexstarttextblock[#1][#2][#3]%
- {\flushnotes
- \flushsidefloats % hoort eigenlijk niet hier
- \docomplexplacefloat[#1][\v!text,#2,\v!left][#3]}
-
-\def\dodocomplexreserveblock#1#2%
- {\begingroup
- \edef\currentfloat{#1}%
- \let\currentfloatcaption\currentfloat
- \setupcurrentfloat[#2]%
- \inheritedfloatframed{#1}%
- \endgroup}
-
-\def\docomplexreserveblock[#1][#2][#3][#4]#5%
- {\getvalue{\e!place#1}[#3][#4]{#5}{\dodocomplexreserveblock{#1}{#2}}}
-
-\def\docomplexstartreservetextblock[#1][#2][#3][#4]%
- {\flushsidefloats % hoort eigenlijk niet hier
- \docomplexreserveblock[#1][#2][\v!text,#3,\v!left][#4]}
-
-\unexpanded\def\placefloat
- {\dotripleempty\docomplexplacefloat}
-
-\installinsertion\topins
-\installinsertion\botins
-
-\newdimen\botinserted
-\newdimen\topinserted
-
-\newif\iftopofinsert
-\newif\iftestfloatbox
-
-\newdimen\floatsideskip \floatsideskip =12pt
-\newdimen\floattopskip \floattopskip =\floattopskip
-\newdimen\floatbottomskip \floatbottomskip=\floattopskip
-
-\newdimen\sidefloattopskip \sidefloattopskip =\floattopskip
-\newdimen\sidefloatbottomskip \sidefloatbottomskip=\floatbottomskip
-
-\newskip\sidefloatdownshift
-\newskip\sidefloatleftshift
-\newskip\sidefloatrightshift
-
-\def\sidefloattopoffset {\openstrutdepth} % {\strutdp}
-
-\newcount\noftopfloats \noftopfloats=2
-\newcount\nofbotfloats \nofbotfloats=0
-
-\def\docalculatefloatskip#1#2%
- {\doifelsenothing{#2}
- {\global#1\zeropoint}
- {\doifelse{#2}\v!none
- {\global#1\zeropoint}
- {\setbox\scratchbox\vbox{\whitespace\normalexpanded{\noexpand\blank[#2]}}%
- \global#1\ht\scratchbox}}}
-
-\def\calculatefloatskips
- {\begingroup
- \docalculatefloatskip\floattopskip{\rootfloatparameter\c!spacebefore}%
- \docalculatefloatskip\floatbottomskip{\rootfloatparameter\c!spaceafter}%
- \docalculatefloatskip\sidefloattopskip{\rootfloatparameter\c!sidespacebefore}%
- \docalculatefloatskip\sidefloatbottomskip{\rootfloatparameter\c!sidespaceafter}%
- \gdef\sidefloattopoffset{\openstrutdepth}% was \def
- \global\floatsideskip\rootfloatparameter\c!margin
- \global\sidefloatleftshift\floatparameter\c!leftmargindistance
- \global\sidefloatrightshift\floatparameter\c!rightmargindistance
- \global\noftopfloats\rootfloatparameter\c!ntop\relax
- \global\nofbotfloats\rootfloatparameter\c!nbottom\relax
- \endgroup}
-
-% beter de laatste skip buiten de \insert uitvoeren,
-% bovendien bij volle flush onder baseline.
-
-% \def\betweenfloatblanko% assumes that spaceafter is present
-% {\bgroup
-% \setbox0\vbox{\strut\blank[\rootfloatparameter\c!spacebefore]\strut}%
-% \setbox2\vbox{\strut\blank[\rootfloatparameter\c!spaceafter]\strut}%
-% \ifdim\ht0>\ht2
-% \blank[-\rootfloatparameter\c!spaceafter,\rootfloatparameter\c!spacebefore]%
-% \fi
-% \egroup}
-
-\def\betweenfloatblanko% assumes that spaceafter is present
- {\blank[\rootfloatparameter\c!spacebefore]} % or v!back,....
-
-\def\doplacefloatbox
- {%\forgetall % NO
- \whitespace
- \blank[\rootfloatparameter\c!spacebefore]
- \flushfloatbox
- \blank[\rootfloatparameter\c!spaceafter]}
-
-\ifdefined\someherefloat\else \let\someherefloat\doplacefloatbox \fi
-\ifdefined\someslotfloat\else \let\someslotfloat\doplacefloatbox \fi
-\ifdefined\somefixdfloat\else \let\somefixdfloat\doplacefloatbox \fi
-\ifdefined\sometopsfloat\else \let\sometopsfloat\doplacefloatbox \fi
-\ifdefined\somebotsfloat\else \let\somebotsfloat\doplacefloatbox \fi
-\ifdefined\somesidefloat\else \let\somesidefloat\doplacefloatbox \fi
-
-% test case:
-%
-% \placefigure[page,none]{}{\blackrule[width=\textwidth,height=0.9\textheight,color=green]}
-% \placefigure[page,none]{}{\blackrule[width=\textwidth,height=1.0\textheight,color=green]}
-% \placefigure[page,none]{}{\blackrule[width=\textwidth,height=1.1\textheight,color=green]}
-
-\def\sometextfloat[#1]% lang, links, rechts, hoog, midden, laag, offset
- {%\checkwaitingfloats{#1}%
- \gdef\dostoptextfloat{\dodostoptextfloat[#1]}% brr global
- \global\floattextwidth\hsize
- \global\floatwidth\wd\floatbox
- \global\floatheight\ht\floatbox % forget about the depth
- \global\advance\floattextwidth -\floatwidth
- \global\advance\floattextwidth -\rootfloatparameter\c!margin\relax % was \tfskipsize
- \doifinsetelse\v!tall{#1}
- {\floattextheight\pagegoal
- \advance\floattextheight -\pagetotal
- \advance\floattextheight -\bigskipamount % lelijk
- \ifdim\floattextheight>\textheight
- \floattextheight\textheight
- \fi
- \boxmaxdepth\zeropoint \relax % toegevoegd
- \ifdim\floattextheight<\floatheight
- \floattextheight\floatheight
- \fi
- \setbox\floattext\vbox to \floattextheight}
- {\setbox\floattext\vbox}%
- \bgroup
- \forgetall \setupblank \setupwhitespace % new, also needed for footnotes
- \blank[\v!disable]
- \hsize\floattextwidth
- \ignorespaces}
-
-\def\dodostoptextfloat[#1]% % de tekst kan beter in een soort
- {\egroup % kadertekst zonder kader, is flexibeler
- \doifnotinset\v!tall{#1}% en beter
- {\ifdim\ht\floattext<\floatheight
- \floattextheight\floatheight
- \else
- \floattextheight\ht\floattext
- \fi}%
- \setbox\floatbox\vbox to \floattextheight
- {\hsize\floatwidth
- \doifinsetelse\v!both{#1}%
- {\doifinsetelse\v!low{#1}
- {\vfill\box\floatbox}
- {\doifinsetelse\v!middle{#1}
- {\vfill\box\floatbox\vfill}
- {\box\floatbox\vfill}}}
- {\box\floatbox\vfill}}%
- \setbox\floattext\vbox to \floattextheight
- {\hsize\floattextwidth
- \doifinsetelse\v!low{#1}
- {\vfill
- \box\floattext
- \doifinset\c!offset{#1}{\whitespace\blank}}
- {\doifinsetelse\v!middle{#1}
- {\vfill
- \box\floattext
- \vfill}
- {\doifinset\v!offset{#1}{\whitespace\blank}%
- \box\floattext
- \vfill}}}%
- \doifinsetelse\v!right{#1}% \floatmethod
- {\setbox\floatbox\hbox to \hsize
- {\box\floattext
- \hfill
- \box\floatbox}}
- {\setbox\floatbox\hbox to \hsize
- {\box\floatbox
- \hfill
- \box\floattext}}%
- \baselinecorrection
- \whitespace
- \blank[\rootfloatparameter\c!spacebefore]%
- \doifnotinset\v!tall{#1}%
- {\dp\floatbox\openstrutdepth}% dp\strutbox}% % toegevoegd
- \box\floatbox
- \dostoptagged
- \blank[\rootfloatparameter\c!spaceafter]%
- \endgroup % **
-% \dostoptagged
- \doinsertfloatinfo}
-
-\def\somefacefloat[#1]% links, rechts, midden, hoog, midden, laag
- {%\checkwaitingfloats{#1}%
- \startopposite\box\floatbox\stopopposite
- \doinsertfloatinfo}
-
-\def\someelsefloat[#1]%
- {\doifinsetelse\v!here{#1}
- {\doifinsetelse\v!always{#1}
- {\page[\v!preference]%
- \docheckiffloatfits
- \ifroomforfloat
- \placesomeherefloat[#1]%
- \else
- \showmessage\m!floatblocks9\empty
- \doreversesavefloat
- \fi}
- {\ifsomefloatwaiting
- \dosavefloat
- \else
- \page[\v!preference]%
- \docheckiffloatfits
- \ifroomforfloat
- \placesomeherefloat[#1]%
- \else
- \dosavefloat
- \fi
- \fi}}
- {\doifinsetelse\v!always{#1}
- {\docheckiffloatfits
- \ifroomforfloat
- \sometopbottomfloat[#1]
- \else
- \showmessage\m!floatblocks9\empty
- \doreversesavefloat
- \fi}
- {\docheckiffloatfits
- \ifroomforfloat
- \sometopbottomfloat[#1]
- \else
- \dosavefloat
- \fi}}}
-
-\def\floatautofactor{.5}
-
-\def\sometopbottomfloat[#1]%
- {\doifelse\floatmethod\v!auto
- {\ifdim\pagetotal<\floatautofactor\pagegoal % when empty page, maxdimen
- \placesometopsfloat[#1]%
- \else
- \placesomebotsfloat[#1]%
- \fi}
- {\doifelse\floatmethod\v!top
- {\placesometopsfloat[#1]}
- {\doifelse\floatmethod\v!bottom
- {\placesomebotsfloat[#1]}
- {\placesomeherefloat[#1]}}}}
-
-\def\borderedfloatbox
- {\begingroup
- \setupcurrentfloat[\c!location=\v!normal,\c!width=\v!fit,\c!height=\v!fit]%
- \inheritedfloatframed{\box\floatbox}%
- \endgroup}
-
-\newbox\tempfloatbox
-
-% minwidth=fit,width=max : no overshoot, as wide as graphic
-
-\ifdefined\moveboxontogrid\else \let\movecaptionontogrid\gobblethreearguments \fi
-
-% \def\locatefloatbox
-% {\alignstrutmode\zerocount
-% \shiftalignedline
-% {\floatparameter\c!leftmargin }{\floatparameter\c!rightmargin}%
-% {\floatparameter\c!innermargin}{\floatparameter\c!outermargin}%
-% \alignedline{\floatparameter\c!location}\v!middle}
-%
-% A quick hack by WS:
-
-\def\locatefloatbox
- {\alignstrutmode\zerocount
- \doifnotcommon{\floatcaptionparameter\c!location}{\v!outermargin,\v!innermargin,\v!leftmargin,\v!rightmargin}
- {\shiftalignedline
- {\floatparameter\c!leftmargin }{\floatparameter\c!rightmargin}%
- {\floatparameter\c!innermargin}{\floatparameter\c!outermargin}}%
- \alignedline{\floatparameter\c!location}\v!middle}
-
-\def\locatecaptionbox
- {\alignstrutmode\zerocount
- \shiftalignedline
- {\floatcaptionparameter\c!leftmargin }{\floatcaptionparameter\c!rightmargin}%
- {\floatcaptionparameter\c!innermargin}{\floatcaptionparameter\c!outermargin}%
- \alignedline{\floatparameter\c!location}\v!middle}
-
-\long\def\dosetpagfloat#1#2#3% \copy wegwerken
- {\bgroup
- \setlocalfloathsize
- \ifnum\floatrotation>0
- \swapdimens\hsize\vsize
- \fi
- \forgetall
- \postponenotes
- \dontcomplain
- \setbox\tempfloatbox\vbox{\borderedfloatbox}%
- \let\locatefloat \locatefloatbox
- \let\locatecaption\locatecaptionbox
- \docheckcaptioncontent{#2}{#3}%
- \ifcase\floatparameter\c!method
- \or % automatic
- \ifnofloatcaption
- \dopreparenocaption{#1}{#2}{#3}%
- \edef\width{\the\wd\floatbox}%
- \doglobal\addlocalbackgroundtobox\floatbox
- \else
- % todo: installable maken, variant/method=auto vs macro
- \dopreparepagecaption{#1}{#2}{#3}%
- \settracedcaptionbox
- \edef\width{\the\wd\tempfloatbox}%
- \addlocalbackgroundtobox\tempfloatbox
- \setbox\tempcaptionbox\hbox
- {\dosetcaptionthings
- \floatcaptionparameter\c!command{\box\tempcaptionbox}}%
- \moveboxontogrid\tempcaptionbox{\floatcaptionparameter\c!grid}\lastcaptionht
- \addlocalbackgroundtobox\tempcaptionbox
- \buildfloatbox
- \fi
- \or % semi automatic
- \or % manual
- \fi
- \ifnum\floatrotation>0
- \global\setbox\floatbox\vbox
- {\rotate[\c!rotation=\floatrotation]{\box\floatbox}}%
- \edef\width{\the\wd\tempfloatbox}%
- \else
- \postcenterfloatbox\width
- \fi
- \egroup}
-
-\def\captionminwidth {15\bodyfontsize}
-\def\captionovershoot {2em}
-
-\def\dopreparenocaption#1#2#3%
- {\global\setbox\floatbox\vbox % pas op als wd groter dan hsize
- {\ifinsidecolumns\ifdim\wd\tempfloatbox>\hsize
- \let\locatefloat\relax
- \fi\fi
- \locatefloat{\copy\tempfloatbox}}}
-
-\def\dopreparepagecaption#1#2#3%
- {\dostarttagged\t!floatcaption\empty
- \doifinsetelse{\floatcaptionparameter\c!location}{\v!top,\v!bottom}
- {\doifinsetelse{\floatcaptionparameter\c!width}{\v!fit,\v!max}
- {\doifelse{\floatcaptionparameter\c!minwidth}\v!fit
- {\doifelse{\floatcaptionparameter\c!width}\v!max
- {\dopreparestackcaptionmax{#1}{#2}{#3}}
- {\ifdim\wd\tempcaptionbox>\wd\tempfloatbox % wider caption
- \doifelse{\floatcaptionparameter\c!width}\v!fit
- {\dopreparestackcaptionaut{#1}{#2}{#3}}
- {\dopreparestackcaptionwid{#1}{#2}{#3}}%
- \else
- \dopreparestackcaptionmin{#1}{#2}{#3}%
- \fi}}
- {\dopreparestackcaptionfix{#1}{#2}{#3}}}%
- {\dopreparesidewidthcaption{#1}{#2}{#3}}}% new, special effects (see icare)
- {\doifinsetelse{\floatcaptionparameter\c!width}{\v!fit,\v!max}
- {\dopreparesideautocaption{#1}{#2}{#3}}
- {\dopreparesidewidthcaption{#1}{#2}{#3}}}%
- \dostoptagged}
-
-% \def\dosettempcaptionbox
-% {\dosetraggedvbox{\floatcaptionparameter\c!align}%
-% \setbox\tempcaptionbox\raggedbox}
-
-\def\dosettempcaptionbox
- {\setbox\tempcaptionbox\vbox\bgroup
- %expanded{\setupalign[\v!new,\v!reset,\floatcaptionparameter\c!align,\v!old]}% wrong! see icare
- \normalexpanded{\noexpand\setupalign[\v!reset,\floatcaptionparameter\c!align]}% i need to check what reset does
- \dosetcaptionthings
- \let\next}
-
-\def\dopreparesideautocaption#1#2#3%
- {\scratchdimen\dimexpr\hsize-\wd\tempfloatbox-\floatparameter\c!margin\relax % was \tfskipsize\relax
- \ifdim\wd\tempcaptionbox>\scratchdimen
- \ifdim\wd\tempcaptionbox<1.3\scratchdimen
- \scratchdimen0.8\scratchdimen
- \fi
- \fi
- \dosettempcaptionbox
- {\hsize\scratchdimen
- \putcompletecaption{#2}{#3}}}
-
-\def\dopreparesidewidthcaption#1#2#3%
- {\dosettempcaptionbox
- {\hsize\floatcaptionparameter\c!width
- \putcompletecaption{#2}{#3}}}
-
-\def\dopreparestackcaptionfix#1#2#3%
- {\dosettempcaptionbox
- {\hsize\floatcaptionparameter\c!minwidth % special effects
- \putcompletecaption{#2}{#3}}}
-
-\def\dopreparestackcaptionmax#1#2#3%
- {\dosettempcaptionbox
- {\hsize\wd\tempfloatbox
- \putcompletecaption{#2}{#3}}}
-
-\def\dopreparestackcaptionwid#1#2#3%
- {\dosettempcaptionbox
- {\hsize\floatcaptionparameter\c!width
- \putcompletecaption{#2}{#3}}}
-
-\def\dopreparestackcaptionmin#1#2#3%
- {\dosettempcaptionbox
- {\hsize\wd\tempfloatbox
- \doifnothing{\floatcaptionparameter\c!align}\raggedcenter % on purpose overloads align !
- \putcompletecaption{#2}{#3}}}
-
-\def\dopreparestackcaptionaut#1#2#3%
- {\doifsomething{\floatcaptionparameter\c!align}
- {\doifnotinset{\v!middle}{\floatcaptionparameter\c!align}%
- {\let\captionovershoot\!!zeropoint}}%
- \edef\captionhsize{\the\wd\tempfloatbox}%
- \ifdim\captionhsize>\hsize
- % float is wider than \hsize
- \dosettempcaptionbox
- {\settrialtypesetting
- \hsize\captionhsize
- \notesenabledfalse
- \putcompletecaption{#2}{#3}}%
- \ifdim\ht\scratchbox>\lineheight % more lines
- \dosettempcaptionbox
- {\hsize\captionhsize
- \advance\hsize -\captionovershoot\relax
- \ifdim\hsize<\captionminwidth\relax
- \hsize\captionhsize
- \fi
- \putcompletecaption{#2}{#3}}%
- \else
- \dosettempcaptionbox
- {\hsize\captionhsize
- \putcompletecaption{#2}{#3}}%
- \fi
- \else
- % float is smaller of equal to \hsize
- \ifdim\captionhsize<\captionminwidth\relax
- \scratchdimen\captionminwidth % float smaller than min width
- \edef\captionhsize{\the\scratchdimen}%
- \fi
- \setbox\scratchbox\vbox % test with overshoot
- {\settrialtypesetting
- \scratchdimen\captionhsize
- \advance\scratchdimen \captionovershoot
- \advance\scratchdimen 3em % an average word length
- \ifdim\scratchdimen<\hsize \hsize\scratchdimen \fi
- \notesenabledfalse
- \putcompletecaption{#2}{#3}}%
- \ifdim\ht\scratchbox>\lineheight
- % at least an average word longer than a line
- \dosettempcaptionbox
- {\scratchdimen\captionhsize
- \advance\scratchdimen \captionovershoot
- \ifdim\scratchdimen<\hsize \hsize\scratchdimen \fi
- \putcompletecaption{#2}{#3}}%
- \else
- % just over a line, don't use an overshoot % % % todo: outer/inner and such
- \doifcommonelse{\floatcaptionparameter\c!align}{\v!left,\v!right,\v!flushleft,\v!flushright}
- {\dosettempcaptionbox
- {\hsize\captionhsize
- % strange : \raggedcenter
- \putcompletecaption{#2}{#3}}}
- {% nicer
- \dosettempcaptionbox
- {\hsize\captionhsize
- \doifnothing{\floatcaptionparameter\c!align}\raggedcenter% overloads
- \putcompletecaption{#2}{#3}}}%
- \fi
- \fi}
-
-\newdimen\tempfloatheight
-\newdimen\tempfloatwidth
-
-\def\dofloatboxbetweenstack
- {\endgraf\nointerlineskip\floatcaptionparameter\c!inbetween\endgraf}
-
-\def\dofloatboxdefaultbuilder % done
- {\locatefloat{\box\tempfloatbox}}
-
-\def\dofloatboxnextrightbuilder#1%
- {\ifparfloat \hbox \else \expandafter \locatefloat \fi
- {\tempfloatheight\ht\tempfloatbox
- \box\tempfloatbox
- \normalexpanded{\noexpand\doifnotinset{\v!hang}{\floatcaptionparameter\c!location}}{\dotfskip{\floatcaptionparameter\c!distance}}%
- \vbox to\tempfloatheight{#1}}}
-
-\def\dofloatboxnextleftbuilder#1%
- {\ifparfloat \hbox \else \expandafter \locatefloat \fi
- {\tempfloatheight\ht\tempfloatbox
- \vbox to\tempfloatheight{#1}%
- \normalexpanded{\noexpand\doifnotinset{\v!hang}{\floatcaptionparameter\c!location}}{\dotfskip{\floatcaptionparameter\c!distance}}%
- \box\tempfloatbox}}
-
-\def\dofloatboxnextouterbuilder
- {\doifrightpagefloatelse\dofloatboxnextrightbuilder\dofloatboxnextleftbuilder}
-\def\dofloatboxnextinnerbuilder
- {\doifrightpagefloatelse\dofloatboxnextleftbuilder\dofloatboxnextrightbuilder}
-
-\def\dofloatboxnextrighthangbuilder#1%
- {\ifparfloat \hbox \else \expandafter \locatefloat \fi
- {\tempfloatheight\ht\tempfloatbox
- \box\tempfloatbox
- \vbox to\tempfloatheight{#1}}}
-
-\def\dofloatboxnextlefthangbuilder#1%
- {\ifparfloat \hbox \else \expandafter \locatefloat \fi
- {\tempfloatheight\ht\tempfloatbox
- \vbox to\tempfloatheight{#1}%
- \box\tempfloatbox}}
-
-\def\dodofloatboxnextrightmarginbuilder#1#2%
- {\ifparfloat
- \hbox\bgroup
- \tempfloatheight\ht\tempfloatbox
- \box\tempfloatbox
- \hsmash{\hskip#1\vbox to\tempfloatheight{#2}}%
- \egroup
- \else
- \begingroup
- \tempfloatheight\ht\tempfloatbox
- \everyrightofalignedline{\hsmash{\hskip#1\vbox to\tempfloatheight{#2}}}%
- \locatefloat{\box\tempfloatbox}%
- \endgroup
- \fi}
-
-\def\dodofloatboxnextleftmarginbuilder#1#2%
- {\ifparfloat
- \hbox\bgroup
- \tempfloatheight\ht\tempfloatbox
- \hsmash{\hskip-\dimexpr#1+\wd\tempcaptionbox\relax\vbox to\tempfloatheight{#2}}%
- \box\tempfloatbox
- \egroup
- \else
- \begingroup
- \tempfloatheight\ht\tempfloatbox
- \everyleftofalignedline{\hsmash{\hskip-\dimexpr#1+\wd\tempcaptionbox\relax\vbox to\tempfloatheight{#2}}}%
- \locatefloat{\box\tempfloatbox}%
- \endgroup
- \fi}
-
-\def\dofloatboxnextrightmarginbuilder{\dodofloatboxnextrightmarginbuilder\rightmargindistance}
-\def\dofloatboxnextleftmarginbuilder {\dodofloatboxnextleftmarginbuilder \leftmargindistance }
-
-\def\dofloatboxnextoutermarginbuilder
- {\doifrightpagefloatelse
- {\dodofloatboxnextrightmarginbuilder\rightmargindistance}
- {\dodofloatboxnextleftmarginbuilder \rightmargindistance}}
-
-\def\dofloatboxnextinnermarginbuilder
- {\doifrightpagefloatelse
- {\dodofloatboxnextleftmarginbuilder \leftmargindistance}
- {\dodofloatboxnextrightmarginbuilder\leftmargindistance}}
-
-\def\dofloatboxnextbuilder % beware, we first check on left/rightmargin because there can be left/right also
- {\let\next\dofloatboxnextleftbuilder
- \normalexpanded{\noexpand\processallactionsinset[\floatcaptionparameter\c!location]}
- [ \v!outermargin=>\let\next\dofloatboxnextoutermarginbuilder,
- \v!innermargin=>\let\next\dofloatboxnextinnermarginbuilder,
- \v!leftmargin=>\let\next\dofloatboxnextleftmarginbuilder,
- \v!rightmargin=>\let\next\dofloatboxnextrightmarginbuilder,
- \v!lefthanging=>\let\next\dofloatboxnextlefthangbuilder,
- \v!righthanging=>\let\next\dofloatboxnextrighthangbuilder,
- \v!outer=>\let\next\dofloatboxnextouterbuilder,
- \v!inner=>\let\next\dofloatboxnextinnerbuilder,
- \v!left=>\let\next\dofloatboxnextleftbuilder,
- \v!right=>\let\next\dofloatboxnextrightbuilder]%
- \next}
-
-\def\dofloatboxsidebuilder
- {\ifparfloat
- \let\next\dofloatboxhighbuilder
- \else
- \let\next\dofloatboxmiddlebuilder
- \expanded{\processallactionsinset[\floatcaptionparameter\c!location]}
- [ \v!low=>\let\next\dofloatboxlowbuilder,
- \v!middle=>\let\next\dofloatboxmiddlebuilder,
- \v!high=>\let\next\dofloatboxhighbuilder]%
- \fi
- \next}
-
-\def\doflushfloatleftcaptionhang
- {\hsmash{\llap{\box\tempcaptionbox\dotfskip{\floatcaptionparameter\c!distance}}}}
-\def\doflushfloatrightcaptionhang
- {\hsmash{\rlap{\dotfskip{\floatcaptionparameter\c!distance}\box\tempcaptionbox}}}
-
-\def\doflushfloatcaptionhang
- {\expanded{\doifinsetelse{\v!righthanging}{\floatcaptionparameter\c!location}}
- {\doflushfloatrightcaptionhang}
- {\expanded{\doifinsetelse{\v!lefthanging}{\floatcaptionparameter\c!location}}
- {\doflushfloatleftcaptionhang}
- {\expanded{\doifinsetelse{\v!hang}{\floatcaptionparameter\c!location}}
- {\expanded{\doifinsetelse{\v!outer}{\floatcaptionparameter\c!location}}
- {\doifrightpagefloatelse{\doflushfloatrightcaptionhang}{\doflushfloatleftcaptionhang}}
- {\expanded{\doifinsetelse{\v!right}{\floatcaptiondirectives}}
- {\doflushfloatrightcaptionhang}
- {\doflushfloatleftcaptionhang}}}
- {\box\tempcaptionbox}}}}
-
-\def\dofloatboxhighbuilder
- {\dofloatboxnextbuilder{\dofloatboxbetweenstack\doflushfloatcaptionhang\vfill}}
-
-\def\dofloatboxlowbuilder
- {\dofloatboxnextbuilder{\vfill\doflushfloatcaptionhang\dofloatboxbetweenstack}}
-
-\def\dofloatboxmiddlebuilder
- {\dofloatboxnextbuilder{\vfill\box\tempcaptionbox\vfill}}
-
-% \definefloat
-% [lefty][lefties][figure]
-% \setupfloat
-% [lefty]
-% [default=left,
-% rightmargindistance=-2cm,
-% leftmargindistance=-2cm]
-% \setupcaption
-% [lefty]
-% [location={bottom,overlay}]
-%
-% \starttext
-% \placelefty{}{} \input tufte \input tufte
-% \placelefty{}{} \input tufte \input tufte
-% \stoptext
-
-\def\bothangfloat#1{\ruledvbox to \ht\tempfloatbox{#1\vss}}
-\def\tophangfloat#1{\ruledvbox to \ht\tempfloatbox{\vss#1}}
-
-\def\dofloatboxnormaltopstackbuilder
- {\expanded{\doifinset{\v!overlay}{\floatcaptionparameter\c!location}}\tophangfloat
- {\tempfloatwidth\wd\tempfloatbox
- \ifparfloat
- \hbox{\locatesidefloat{\box\tempcaptionbox}}%
- \dofloatboxbetweenstack
- \hbox{\hbox {\box\tempfloatbox }}%
- \else
- \hbox{\locatetextfloat{\box\tempcaptionbox}}
- \dofloatboxbetweenstack
- \hbox{\locatefloat {\box\tempfloatbox }}%
- \fi}}
-
-\def\dofloatboxnormalbotstackbuilder
- {\expanded{\doifinset{\v!overlay}{\floatcaptionparameter\c!location}}\bothangfloat
- {\tempfloatwidth\wd\tempfloatbox
- \ifparfloat
- \hbox{\hbox {\box\tempfloatbox }}%
- \dofloatboxbetweenstack
- \hbox{\locatesidefloat{\box\tempcaptionbox}}%
- \else
- \hbox{\locatefloat {\box\tempfloatbox }}%
- \dofloatboxbetweenstack
- \hbox{\locatetextfloat{\box\tempcaptionbox}}%
- \fi}}
-
-\def\dofloatboxgridtopstackbuilder
- {\dp\tempcaptionbox\strutdepth
- \setbox\scratchbox\vbox
- {\tempfloatwidth\wd\tempfloatbox
- \ifparfloat
- \locatesidefloat{\box\tempcaptionbox}%
- \vss\dofloatboxbetweenstack
- \hbox {\box\tempfloatbox }%
- \else
- \locatetextfloat{\box\tempcaptionbox}%
- \vss\dofloatboxbetweenstack
- \locatefloat {\box\tempfloatbox }%
- \fi}%
- \getnoflines{\dimexpr\htdp\scratchbox-10\scaledpoint\relax}% get rid of inaccuracy
- \vbox to \noflines\lineheight{\unvbox\scratchbox}}
-
-\def\dofloatboxgridbotstackbuilder
- {\dp\tempcaptionbox\strutdepth
- \setbox\scratchbox\vbox
- {\tempfloatwidth\wd\tempfloatbox
- \ifparfloat
- \hbox {\box\tempfloatbox }%
- \vss\dofloatboxbetweenstack
- \locatesidefloat{\box\tempcaptionbox}%
- \else
- \locatefloat {\box\tempfloatbox }%
- \vss\dofloatboxbetweenstack
- \locatetextfloat{\box\tempcaptionbox}%
- \fi}%
- \getnoflines{\dimexpr\htdp\scratchbox-10\scaledpoint\relax}% get rid of inaccuracy
- \vbox to \noflines\lineheight{\unvbox\scratchbox}}
-
-\def\dofloatboxstretchtopstackbuilder
- {\dp\tempcaptionbox\strutdepth
- \setbox\scratchbox\vbox
- {\locatecaption{\copy\tempcaptionbox}%
- \locatefloat {\copy\tempfloatbox }}%
- \getnoflines{\dimexpr\htdp\scratchbox-10\scaledpoint\relax}% get rid of inaccuracy
- \vbox to \noflines\lineheight
- {\tempfloatwidth\wd\tempfloatbox
- \ifparfloat
- \locatesidefloat{\box\tempcaptionbox}%
- \vss\dofloatboxbetweenstack\vss
- \hbox {\box\tempfloatbox }%
- \else
- \locatetextfloat{\box\tempcaptionbox}%
- \vss\dofloatboxbetweenstack\vss
- \locatefloat {\box\tempfloatbox }%
- \fi}}
-
-\def\dofloatboxstretchbotstackbuilder
- {\dp\tempcaptionbox\strutdepth
- \setbox\scratchbox\vbox
- {\locatefloat {\copy\tempfloatbox }%
- \locatecaption{\copy\tempcaptionbox}}%
- \getnoflines{\dimexpr\htdp\scratchbox-10\scaledpoint\relax}% get rid of inaccuracy
- \vbox to \noflines\lineheight
- {\tempfloatwidth\wd\tempfloatbox
- \ifparfloat
- \hbox {\box\tempfloatbox }%
- \vss\dofloatboxbetweenstack\vss
- \locatesidefloat{\box\tempcaptionbox}
- \else
- \locatefloat {\box\tempfloatbox }%
- \vss\dofloatboxbetweenstack\vss
- \locatetextfloat{\box\tempcaptionbox}%
- \fi}}
-
-\def\dofloatboxtopbuilder
- {\let\next\dofloatboxnormaltopstackbuilder
- \expanded{\processfirstactioninset[\floatcaptionparameter\c!location]}
- [ \v!grid=>\let\next\dofloatboxgridstackbuilder,
- \v!stretch=>\let\next\dofloatboxstretchstackbuilder]%
- \next}
-
-\def\dofloatboxbottombuilder
- {\let\next\dofloatboxnormalbotstackbuilder
- \expanded{\processfirstactioninset[\floatcaptionparameter\c!location]}
- [ \v!grid=>\let\next\dofloatboxgridstackbuilder,
- \v!stretch=>\let\next\dofloatboxstretchstackbuilder]%
- \next}
-
-\def\relocatecaptionright#1{\locatecaption{\hbox to \tempfloatwidth{\hss#1}}}
-\def\relocatecaptionleft #1{\locatecaption{\hbox to \tempfloatwidth{#1\hss}}}
-
-\long\def\installfloatboxbuilder#1#2{\setvalue{\??kj:#1}{#2}}
-
-\def\buildfloatbox
- {\global\setbox\floatbox\vbox
- {\setlocalfloathsize
- \forgetall
- \let\floatcaptionarrangement\s!default
- \def\docommand##1%
- {\doifdefined{\??kj:##1}{\def\floatcaptionarrangement{##1}\quitcommalist}}%
- \processcommacommand[\floatcaptionparameter\c!location]\docommand
- \executeifdefined{\??kj:\floatcaptionarrangement}{\getvalue{\??kj:\s!default}}}}
-
-\def\locatetextfloat
- {\let\next\locatecaption
- \expanded{\processallactionsinset[\floatcaptionparameter\c!location]}
- [ \v!left=>\let\next\relocatecaptionleft,
- \v!right=>\let\next\relocatecaptionright,
- \v!inner=>\doifrightpagefloatelse{\let\next\relocatecaptionleft }{\let\next\relocatecaptionright},
- \v!outer=>\doifrightpagefloatelse{\let\next\relocatecaptionright}{\let\next\relocatecaptionleft }]%
- \next}
-
-\installfloatboxbuilder \v!none \dofloatboxdefaultbuilder
-\installfloatboxbuilder \s!default \dofloatboxdefaultbuilder
-\installfloatboxbuilder \v!high \dofloatboxhighbuilder
-\installfloatboxbuilder \v!low \dofloatboxlowbuilder
-\installfloatboxbuilder \v!middle \dofloatboxmiddlebuilder
-
-\installfloatboxbuilder \v!left \dofloatboxsidebuilder
-\installfloatboxbuilder \v!right \dofloatboxsidebuilder
-
-\installfloatboxbuilder \v!top \dofloatboxtopbuilder
-\installfloatboxbuilder \v!bottom \dofloatboxbottombuilder
-
-% \setuplayout[grid=yes] \showgrid \setupcaptions[style=smallbodyfont,location=grid,inbetween=]
-%
-% \starttext
-% test \placefigure{} {\externalfigure[cow.pdf][frame=on,grid=yes]} test \page
-% test \placefigure{\input zapf\relax}{\externalfigure[cow.pdf][frame=on,grid=yes]} test \page
-% test \placefigure{} {\externalfigure[cow.pdf][frame=on,grid=depth]} test \page
-% test \placefigure{\input zapf\relax}{\externalfigure[cow.pdf][frame=on,grid=depth]} test \page
-% \stoptext
-
-\newif\ifpostponecolumnfloats \postponecolumnfloatsfalse % don't change
-
-\setnewconstant\postcenterfloatmethod\plusone
-
-\def\postcenterfloatbox#1%
- {\scratchdimen
- \ifcase\postcenterfloatmethod
- #1% \wd\floatbox
- \or\ifinsidecolumns
- \ifpostponecolumnfloats\makeupwidth\else#1\fi
- \else\ifdim#1>\hsize
- \hsize
- \else
- \wd\floatbox
- \fi\fi\fi
- \global\setbox\floatbox\hbox to \scratchdimen
- % {\hfill\box\floatbox\hfill}} % geen \hss, gaat mis in kolommen !
- % {\hss \box\floatbox\hss }} % wel \hss, anders mis in colset
- {\ifglobalcenterfloatbox
- \donetrue
- \else\iflocalcenterfloatbox
- \donetrue
- \else
- \donefalse
- \fi\fi
- \ifdim\scratchdimen>\effectivehsize
- \donefalse
- \fi
- \hss\ifdone\hskip\effectiveleftskip\fi
- \box\floatbox
- \ifdone\hskip\effectiverightskip\fi\hss}}
-
-\long\def\dosetparfloat#1#2#3%
- {\bgroup
- \forgetall
- \postponenotes
- \dontcomplain
- %\showcomposition
- \setbox\tempfloatbox\vbox{\borderedfloatbox}%
- \addlocalbackgroundtobox\tempfloatbox % no \doglobal
- \ifnofloatcaption
- \global\setbox\floatbox\vbox{\box\tempfloatbox}%
- \else
- \docheckcaptioncontent{#2}{#3}%
- \dopreparesidecaption{#1}{#2}{#3}%
- \settracedcaptionbox
- \setbox\tempcaptionbox\hbox{\floatcaptionparameter\c!command{\box\tempcaptionbox}}%
- \moveboxontogrid\tempcaptionbox{\floatcaptionparameter\c!grid}\lastcaptionht
- \addlocalbackgroundtobox\tempcaptionbox % no \doglobal
- \buildsidefloatbox
- \fi
- \egroup}
-
-\def\dopreparesidecaption#1#2#3% will be enhanced
- {\doifelse{\floatcaptionparameter\c!width}\v!max
- {\dosettempcaptionbox
- {\hsize\wd\tempfloatbox
- \putcompletecaption{#2}{#3}}}%
- {\doifelse{\floatcaptionparameter\c!width}\v!fit
- {\ifdim\wd\tempcaptionbox>\wd\tempfloatbox\relax
- \setbox\tempcaptionbox\vbox
- {\forgetall % needed?
- \hsize\wd\tempfloatbox
- \dosetcaptionthings
- \putcompletecaption{#2}{#3}}%
- \else
- \setbox\tempcaptionbox\hbox to \wd\tempfloatbox
- {\hss\box\tempcaptionbox\hss}%
- \fi}
- {\dosettempcaptionbox
- {\hsize\floatcaptionparameter\c!width % \wd\tempfloatbox
- \putcompletecaption{#2}{#3}}}}}
-
-\def\buildsidefloatbox
- {\let\locatefloat \relax
- \let\locatecaption\relax
- \def\locatesidefloat##1%
- {\begingroup
- \alignstrutmode\zerocount
- \hsize\tempfloatwidth \forgetall
- \alignedline{\floatparameter\c!location}\v!middle{##1}%
- \endgroup}%
- \buildfloatbox}
-
-\newif\ifparfloat
-
-\long\def\dosetfloatbox#1#2#3% todo : \global\setbox, currently messy
- {\ifvisible
- \par
- \edef\floatcaptiondirectives{\floatparameter\c!location,\floatcaptionparameter\c!location}%
- \ifparfloat\@EA\dosetparfloat\else\@EA\dosetpagfloat\fi{#1}{#2}{#3}%
- \setlocalfloatdimensions{#1}%
- \global\advance\totalnoffloats\plusone
- \setbox\floatbox\hbox{\dosavefloatdata\box\floatbox}% still needed? we will do renumbering differently
- \global\floatheight\htdp\floatbox
- \global\floatwidth\wd\floatbox
- \doifnotinset\v!margin{#1} % gaat namelijk nog fout
- {\setbox\floatbox\vbox
- {\parindent\zeropoint
- \doifconcepttracing{\inleftmargin{\framed{\infofont\the\totalnoffloats}}}%
- \box\floatbox}}%
- \wd\floatbox\floatwidth
- \ifdim\dimexpr\floatheight+\lineheight\relax<\textheight \else
- \global\floatheight\dimexpr\textheight-\lineheight\relax
- \ht\floatbox\floatheight
- \dp\floatbox\zeropoint
- \showmessage\m!floatblocks{10}{\the\totalnoffloats}%
- \fi
- \fi}
-
-\newcounter\noxfloatlocations
-
-\long\def\dofloat#1#2#3% #1 is optionlist
- {\dosetfloatbox{#1}{#2}{#3}%
- \dogetfloatbox{#1}\empty}
-
-\def\dooutput{\sidefloatoutput} % redefinition of \dooutput
-
-\definefloat
- [\v!figure]
- [\v!figures]
-
-\definefloat
- [\v!table]
- [\v!tables]
-
-\setupfloat
- [\v!table]
- [\c!frame=\v!off]
-
-\definefloat
- [\v!intermezzo]
- [\v!intermezzi]
-
-\definefloat
- [\v!graphic]
- [\v!graphics]
-
-% float strategy, replaces some of the above macros
-
-\let\floatmethod \empty
-\let\floatlabel \empty
-\let\floatcolumn \empty
-\let\floatrow \empty
-\let\forcedfloatmethod\empty
-
-\def\setfloatmethodvariables#1% \floatmethod \floatlabel \floatrow \floatcolumn
- {\ctxcommand{analysefloatmethod("#1")}}
-
-\def\dogetfloatbox#1#2%
- {\ifvisible
- \let \floatlabel \empty
- \let \floatcolumn\empty
- \let \floatrow \empty
- \edef\floatmethod{#2}%
- \ifx\floatmethod\empty
- \setfloatmethodvariables{#1}%
- % todo: nog algemeen otr
- \ifdefined\OTRSETsetpreferedcolumnslot
- \OTRSETsetpreferedcolumnslot\floatcolumn\floatrow
- \fi
- \fi
- \doifundefined{\string\floatmethod\floatmethod}
- {\let\floatmethod\v!here}%
- \doifsomething\forcedfloatmethod
- {\edef\floatmethod{\forcedfloatmethod}}%
- %\getvalue{\string\floatmethod\floatmethod}[#1]%
- \getvalue{\string\floatmethod\floatmethod}[\floatmethod,#1]%
- \fi}
-
-\def\installfloathandler#1#2% #1=keyword #2=handler
- {\setvalue{\string\floatmethod#1}{#2}}
-
-\def\somesomewherefloat[#1]%
- {\dofloatssavesomewherefloat\s!somewhere{#1}}
-
-\installfloathandler \v!here \someherefloat
-\installfloathandler \v!force \somefixdfloat
-\installfloathandler \v!left \someleftsidefloat
-\installfloathandler \v!right \somerightsidefloat
-\installfloathandler \v!text \sometextfloat
-\installfloathandler \v!top \sometopfloat
-\installfloathandler \v!bottom \somebottomfloat
-\installfloathandler \v!auto \someautofloat
-\installfloathandler \v!margin \somemarginfloat
-\installfloathandler \v!opposite \somefacefloat
-\installfloathandler \v!page \somepagefloat
-\installfloathandler \v!leftpage \someleftpagefloat
-\installfloathandler \v!rightpage \somerightpagefloat
-\installfloathandler \v!inmargin \someinmarginfloat
-\installfloathandler \v!inleft \someinleftmarginfloat
-\installfloathandler \v!inright \someinrightmarginfloat
-\installfloathandler \v!leftmargin \someinleftmarginfloat
-\installfloathandler \v!rightmargin \someinrightmarginfloat
-\installfloathandler \v!leftedge \someinleftedgefloat
-\installfloathandler \v!rightedge \someinrightedgefloat
-
-\installfloathandler \v!somewhere \somesomewherefloat
-
-\installfloathandler \v!backspace \somebackspacefloat
-\installfloathandler \v!cutspace \somecutspacefloat
-
-\installfloathandler {tblr} \someslotfloat
-\installfloathandler {lrtb} \someslotfloat
-\installfloathandler {tbrl} \someslotfloat
-\installfloathandler {rltb} \someslotfloat
-\installfloathandler {btlr} \someslotfloat
-\installfloathandler {lrbt} \someslotfloat
-\installfloathandler {btrl} \someslotfloat
-\installfloathandler {rlbt} \someslotfloat
-\installfloathandler {fxtb} \someslotfloat
-\installfloathandler {fxbt} \someslotfloat
-
-% no \registerotrcommand\placesome* here!, this has to be cleaned up:
-
-\def\somesidefloat{\OTRcommand\somesidefloat}
-
-\def\someleftsidefloat [#1]{\somesidefloat[#1]\presetindentation}
-\def\somerightsidefloat [#1]{\somesidefloat[#1]}
-\def\sometopfloat [#1]{\someelsefloat[#1]\nonoindentation}
-\def\somebottomfloat [#1]{\someelsefloat[#1]}
-\def\someautofloat [#1]{\someelsefloat[#1]}
-\def\somemarginfloat [#1]{\somenextfloat[#1]\nonoindentation}
-\def\someinleftmarginfloat [#1]{\somesidefloat[#1]}
-\def\someinrightmarginfloat[#1]{\somesidefloat[#1]}
-\def\someinleftedgefloat [#1]{\somesidefloat[#1]}
-\def\someinrightedgefloat [#1]{\somesidefloat[#1]}
-\def\someinmarginfloat [#1]{\somesidefloat[#1]}
-\def\someherefloat [#1]{\someelsefloat[\v!here,#1]}
-\def\somebackspacefloat [#1]{\somesidefloat[#1]}
-\def\somecutspacefloat [#1]{\somesidefloat[#1]}
-
-\unexpanded\def\placesomeslotfloat {\OTRcommand\someslotfloat}
-\unexpanded\def\placesomeherefloat {\OTRcommand\someherefloat}
-\unexpanded\def\placesomefixdfloat {\OTRcommand\somefixdfloat}
-\unexpanded\def\placesomepagefloat {\OTRcommand\somepagefloat}
-\unexpanded\def\placesomeleftpagefloat {\OTRcommand\someleftpagefloat}
-\unexpanded\def\placesomerightpagefloat{\OTRcommand\somerightpagefloat}
-\unexpanded\def\placesometopsfloat {\OTRcommand\sometopsfloat}
-\unexpanded\def\placesomebotsfloat {\OTRcommand\somebotsfloat}
-\unexpanded\def\placesomesidefloat {\OTRcommand\somesidefloat}
-\unexpanded\def\placesomefacefloat {\OTRcommand\somefacefloat}
-%unexpanded\def\placesomesomewherefloat{\OTRcommand\somesomewherefloat}
-
-\def\somefixdfloat {\placesomefixdfloat}
-\def\somepagefloat {\placesomepagefloat}
-\def\someleftpagefloat {\placesomeleftpagefloat}
-\def\somerightpagefloat{\placesomerightpagefloat}
-\def\somefacefloat {\placesomefacefloat}
-\def\someslotfloat {\placesomeslotfloat}
-
-%D Local floats:
-
-\def\setuplocalfloats
- {\getparameters[\??lf]}
-
-\setuplocalfloats
- [%\c!before=\blank,
- %\c!after=\blank,
- \c!inbetween=\blank]
-
-\installfloathandler \v!local \somelocalfloat
-
-\initializeboxstack{localfloats}
-
-\newcounter\noflocalfloats
-
-\def\resetlocalfloats
- {\doglobal\newcounter\noflocalfloats
- \initializeboxstack{localfloats}}
-
-\def\somelocalfloat[#1]%
- {\doglobal\increment\noflocalfloats
- \savebox{localfloats}{\noflocalfloats}{\box\floatbox}}
-
-\def\getlocalfloats
- {\dorecurse\noflocalfloats
- {\ifnum\recurselevel=\plusone % 1\relax
- \getvalue{\??lf\c!before}%
- \else
- \getvalue{\??lf\c!inbetween}%
- \fi
- \dontleavehmode\hbox{\foundbox{localfloats}\recurselevel}%
- \ifnum\recurselevel=\noflocalfloats\relax
- \getvalue{\??lf\c!after}%
- \fi}}
-
-\def\flushlocalfloats
- {\getlocalfloats
- \resetlocalfloats}
-
-\def\getlocalfloat#1{\expanded{\foundbox{localfloats}{\number#1}}}
-
-\def\forcelocalfloats{\let\forcedfloatmethod\v!local}
-
-\protect \endinput