Inconsistent behaviour of placefigure[left] for math and text
Hi, When I use \placefigure[left] with some test, the text wraps around the figure. But if the paragraph, contains some formula, it does not wrap even after the figure is complete. How can I prevent such a behaviour. Example \startbuffer[figure] \placefigure [left] {}{} \stopbuffer \startbuffer[test] \dorecurse{3}{\input knuth} \stopbuffer \startbuffer[mathtest] \dorecurse{3}{ This is a dummy paragraph to support a little bit of math to show the trouble with placefigure \startformula a = b \stopformula This is a dummy paragraph to support a little bit of math to show the trouble with placefigure This is a dummy paragraph to support a little bit of math to show the trouble with placefigure} \stopbuffer \starttext \getbuffer[figure] \getbuffer[test] \page \getbuffer[figure] \getbuffer[mathtest] \stoptext Thanks, Aditya -- Aditya Mahajan, EECS Systems, University of Michigan http://www.eecs.umich.edu/~adityam || Ph: 7342624008
Aditya Mahajan wrote:
Hi, When I use \placefigure[left] with some test, the text wraps around the figure. But if the paragraph, contains some formula, it does not wrap even after the figure is complete. How can I prevent such a behaviour.
Example \startbuffer[figure] \placefigure [left] {}{} \stopbuffer
\startbuffer[test] \dorecurse{3}{\input knuth} \stopbuffer
\startbuffer[mathtest] \dorecurse{3}{ This is a dummy paragraph to support a little bit of math to show the trouble with placefigure \startformula a = b \stopformula This is a dummy paragraph to support a little bit of math to show the trouble with placefigure This is a dummy paragraph to support a little bit of math to show the trouble with placefigure} \stopbuffer
\starttext \getbuffer[figure] \getbuffer[test]
\page
\getbuffer[figure] \getbuffer[mathtest]
\stoptext
add empty lines around the \start\stop pair (somehow display does not go well with the parshape (i must discuss this with taco) Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
Hans Hagen wrote:
Aditya Mahajan wrote:
Hi, When I use \placefigure[left] with some test, the text wraps around the figure. But if the paragraph, contains some formula, it does not wrap even after the figure is complete. How can I prevent such a behaviour.
btw, can you make three (or more) examples: (yes|nocheck|text) with left/bottom/fallback placement for the testsuits (see other threads)
Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
On Fri, 14 Apr 2006, Hans Hagen wrote:
Hans Hagen wrote:
Aditya Mahajan wrote:
Hi, When I use \placefigure[left] with some test, the text wraps around the figure. But if the paragraph, contains some formula, it does not wrap even after the figure is complete. How can I prevent such a behaviour.
btw, can you make three (or more) examples: (yes|nocheck|text) with left/bottom/fallback placement for the testsuits (see other threads)
I tried playing around with the fallback option, but had unexpected results. When I give fallback=left (does that make sense?) I get text in the right margin!! See example below. % first a new key \unprotect \startconstants dutch english german czech italian romanian french fallback: terugval fallback fallback fallback fallback fallback fallback \stopconstants % use that key \long\def\dofloat#1#2#3#4% {\dosetfloatbox{#1}{#2}{#3}{#4}% \doifelsevaluenothing{\??fl#4\c!criterium} {\dogetfloatbox{#1}\empty} {\ifdim\wd\floatbox>\getvalue{\??fl#4\c!criterium}\relax \postcenterfloatbox{\wd\floatbox}% else we get left aligned %dogetfloatbox{#1}\v!here % see details/pascal \dogetfloatbox{#1}{\executeifdefined{\??fl#4\c!fallback}\v!here}% PATCHED \else \dogetfloatbox{#1}\empty \fi}} % pass the new location (will be done differently, hack \def\dogetfloatbox#1#2% {\ifvisible \doifelsenothing{#2} {\getfromcommalist[#1][1]% \@EA\beforesplitstring\commalistelement\at:\to\floatmethod \@EA\aftersplitstring \commalistelement\at:\to\floatcolumn \@EA\aftersplitstring \floatcolumn\at*\to\floatrow \@EA\beforesplitstring\floatcolumn\at*\to\floatcolumn % todo: nog algemeen otr \ifx\OTRSETsetpreferedcolumnslot\undefined\else \OTRSETsetpreferedcolumnslot\floatcolumn\floatrow \fi} {\let\floatcolumn\empty \let\floatrow\empty \edef\floatmethod{#2}}% \doifundefined{\string\floatmethod\floatmethod} {\let\floatmethod\v!here}% \getvalue{\string\floatmethod\floatmethod}[\floatmethod,#1]% PATCHED \fi} \def\redofloatorder#1% {\doifnotinset\@@bknumbering{\v!nocheck,\v!text} {\doglobal\increment\nofplacedfloats\relax \gettwopassdata\s!float \iftwopassdatafound \doifnot\composedsectionnumber\twopassdata {\edef\oldcomposedsectionnumber{\composedsectionnumber}% \xdef\composedsectionnumber{\twopassdata}% \showmessage\m!floatblocks1{\nofplacedfloats,#1 \oldcomposedsectionnumber,\composedsectionnumber}}% \fi}} \protect \setupfloats[numbering=text] % we use the marginwidth as criterium \setupfloat[figure][criterium=\marginwidth,fallback=left] \starttext \placefigure[bottom]{1}{\framed[width=.9\marginwidth]{}} \input tufte \placefigure[bottom]{2}{} \input tufte \placefigure[left]{3}{} \input tufte \placefigure[left]{4}{\framed[width=.9\marginwidth]{}} \input tufte \stoptext Aditya -- Aditya Mahajan, EECS Systems, University of Michigan http://www.eecs.umich.edu/~adityam || Ph: 7342624008
Aditya Mahajan wrote:
On Fri, 14 Apr 2006, Hans Hagen wrote:
Hans Hagen wrote:
Aditya Mahajan wrote:
Hi, When I use \placefigure[left] with some test, the text wraps around the figure. But if the paragraph, contains some formula, it does not wrap even after the figure is complete. How can I prevent such a behaviour.
btw, can you make three (or more) examples: (yes|nocheck|text) with left/bottom/fallback placement for the testsuits (see other threads)
first of all, take the beta in order to get renumbering right the next variant let's fallbacks step in earlier \long\def\dofloat#1#2#3#4% {\dosetfloatbox{#1}{#2}{#3}{#4}% \dogetfloatbox{#1}\empty} \def\dodocomplexplacefloat[#1][#2][#3]#4% {\flushnotes \flushsidefloats % here ! \ifsomefloatwaiting % this was \checkwaitingfloats spread all over \doifinsetelse\v!always{#2} {\showmessage\m!floatblocks5\empty} {\expanded{\doifcommonelse{#2}{\flushfloatslist}}\doflushfloats\donothing}% % but which should be done before using box \floatbox \fi \ifmargeblokken % waarschijnlijk gebroken ! ! ! ! \doifinset\v!margin{#2} {\endgraf \bgroup\everypar{\egroup\the\everypar}% \hsize\@@mbwidth}% \fi \global\insidefloattrue \begingroup % ** \the\everyinsidefloat \let\@@extrafloat\empty \presetmorefloatvariables{#2}% \dowithnextboxcontent % better a \the\everyfloattoks {\setlocalfloathsize \getvalue{\??fl#1\c!inner}% \fuzzysnappingfalse \postponenotes} % new {% \doifvaluesomething{\??fl#1\c!criterium} {\ifdim\wd\nextbox>\getvalue{\??fl#1\c!criterium}\relax \edef\forcedfloatmethod{\executeifdefined{\??fl#1\c!fallback}\v!here}% \fi}% \xdocompletefloat{#1}{#3}{#1}{#2}{#1}{#4}% ** not yet done % we need to carry over the par because of side floats \doifnotinset\v!text{#2}{\carryoverpar\endgroup}% \global\sidefloatdownshift \zeropoint \global\sidefloatextrashift\zeropoint \ifparfloat \doifinset\v!reset{#2}\forgetsidefloats \doinhibitblank \fi}% better move this to side floats \vbox}
I tried playing around with the fallback option, but had unexpected results. When I give fallback=left (does that make sense?) I get text in the right margin!! See example below.
% first a new key
\unprotect \startconstants dutch english german czech italian romanian french
fallback: terugval fallback fallback fallback fallback fallback fallback \stopconstants
% use that key
\long\def\dofloat#1#2#3#4% {\dosetfloatbox{#1}{#2}{#3}{#4}% \doifelsevaluenothing{\??fl#4\c!criterium} {\dogetfloatbox{#1}\empty} {\ifdim\wd\floatbox>\getvalue{\??fl#4\c!criterium}\relax \postcenterfloatbox{\wd\floatbox}% else we get left aligned %dogetfloatbox{#1}\v!here % see details/pascal \dogetfloatbox{#1}{\executeifdefined{\??fl#4\c!fallback}\v!here}% PATCHED \else \dogetfloatbox{#1}\empty \fi}}
% pass the new location (will be done differently, hack
\def\dogetfloatbox#1#2% {\ifvisible \doifelsenothing{#2} {\getfromcommalist[#1][1]% \@EA\beforesplitstring\commalistelement\at:\to\floatmethod \@EA\aftersplitstring \commalistelement\at:\to\floatcolumn \@EA\aftersplitstring \floatcolumn\at*\to\floatrow \@EA\beforesplitstring\floatcolumn\at*\to\floatcolumn % todo: nog algemeen otr \ifx\OTRSETsetpreferedcolumnslot\undefined\else \OTRSETsetpreferedcolumnslot\floatcolumn\floatrow \fi} {\let\floatcolumn\empty \let\floatrow\empty \edef\floatmethod{#2}}% \doifundefined{\string\floatmethod\floatmethod} {\let\floatmethod\v!here}% \getvalue{\string\floatmethod\floatmethod}[\floatmethod,#1]% PATCHED \fi}
\def\redofloatorder#1% {\doifnotinset\@@bknumbering{\v!nocheck,\v!text} {\doglobal\increment\nofplacedfloats\relax \gettwopassdata\s!float \iftwopassdatafound \doifnot\composedsectionnumber\twopassdata {\edef\oldcomposedsectionnumber{\composedsectionnumber}% \xdef\composedsectionnumber{\twopassdata}% \showmessage\m!floatblocks1{\nofplacedfloats,#1 \oldcomposedsectionnumber,\composedsectionnumber}}% \fi}}
\protect
\setupfloats[numbering=text]
% we use the marginwidth as criterium
\setupfloat[figure][criterium=\marginwidth,fallback=left]
\starttext
\placefigure[bottom]{1}{\framed[width=.9\marginwidth]{}} \input tufte \placefigure[bottom]{2}{} \input tufte \placefigure[left]{3}{} \input tufte \placefigure[left]{4}{\framed[width=.9\marginwidth]{}} \input tufte
\stoptext
Aditya
-- ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
On Tue, 18 Apr 2006, Hans Hagen wrote:
Aditya Mahajan wrote:
On Fri, 14 Apr 2006, Hans Hagen wrote:
Hans Hagen wrote:
Aditya Mahajan wrote:
Hi, When I use \placefigure[left] with some test, the text wraps around the figure. But if the paragraph, contains some formula, it does not wrap even after the figure is complete. How can I prevent such a behaviour.
btw, can you make three (or more) examples: (yes|nocheck|text) with left/bottom/fallback placement for the testsuits (see other threads)
first of all, take the beta in order to get renumbering right
the next variant let's fallbacks step in earlier
Using the beta, the numbering is correct. What is fallback=left supposed to do? I thought that with \setupfloat[figure][criterium=\marginwidth,fallback=left] \placefigure[bottom]{1}{\framed[width=.9\marginwidth]{}} \input tufte \placefigure[bottom]{2}{} \input tufte the first figure should float to the left, while the second will go to the bottom. But both of them float to the bottom. I am completely misunderstanding the feature. Aditya -- Aditya Mahajan, EECS Systems, University of Michigan http://www.eecs.umich.edu/~adityam || Ph: 7342624008
Aditya Mahajan wrote:
On Tue, 18 Apr 2006, Hans Hagen wrote:
Aditya Mahajan wrote:
On Fri, 14 Apr 2006, Hans Hagen wrote:
Hans Hagen wrote:
Aditya Mahajan wrote:
Hi, When I use \placefigure[left] with some test, the text wraps around the figure. But if the paragraph, contains some formula, it does not wrap even after the figure is complete. How can I prevent such a behaviour.
btw, can you make three (or more) examples: (yes|nocheck|text) with left/bottom/fallback placement for the testsuits (see other threads)
first of all, take the beta in order to get renumbering right
the next variant let's fallbacks step in earlier
Using the beta, the numbering is correct. What is fallback=left supposed to do? I thought that with
\setupfloat[figure][criterium=\marginwidth,fallback=left]
\placefigure[bottom]{1}{\framed[width=.9\marginwidth]{}} \input tufte \placefigure[bottom]{2}{} \input tufte
the first figure should float to the left, while the second will go to the bottom. But both of them float to the bottom. I am completely misunderstanding the feature.
left means left of text; you should test with the beta + the patch i sent a few mails ago (the problem is that otherwise the width is set to the hsize (centered)) Hans -- ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
participants (2)
-
Aditya Mahajan
-
Hans Hagen