From 40471dd95ca8782212c5d63ee5f2085b105ed7e8 Mon Sep 17 00:00:00 2001 From: Marius Date: Tue, 8 Nov 2011 16:20:15 +0200 Subject: beta 2011.11.08 15:20 --- tex/context/base/strc-flt.mkiv | 1887 ---------------------------------------- 1 file changed, 1887 deletions(-) delete mode 100644 tex/context/base/strc-flt.mkiv (limited to 'tex/context/base/strc-flt.mkiv') 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 -- cgit v1.2.3