Sanjoy Mahajan wrote: >>> It would be nice if placefigure can be able to detect if the best >>> place is the top or the bottom of the page accordingly to its call, >>> > > A related point, which I didn't fiugre out how for my own TeX > figure-placement macros, is correct sequential numbering when some > figures are at the top of the page. Some pseudocode on one page: > > =============== snip =================== > \ref{figure:narrow} is a narrow figure. > > \figuremacro{figure:narrow}{narrowfig.1}{A narrow figure.} > > \ref{figure:wide} is a wide figure. > > \figuremacro{figure:wide}{widefig.1}{A wide figure} > =============== snip =================== > > Here \figuremacro figures out (sorry) that narrow figures go in the > margin and wide figures go at the top of the page. But the page will > look funny: The narrow figure will be numbered, say, Figure 10, and > the wide figure will be Figure 11, but Figure 11 will appear before > Figure 10 on the page. Which is disconcerting to the reader. > this 'choose between locations' feature is kind of present but only with 'here' as fallback but it's trivial to make that configurable:
% first a new key \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]% [EMAIL PROTECTED]:\to\floatmethod [EMAIL PROTECTED] \commalistelement\at:\to\floatcolumn [EMAIL PROTECTED] \floatcolumn\at*\to\floatrow [EMAIL PROTECTED] % 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} \setupfloats[numbering=nocheck] % we use the marginwidth as criterium \setupfloat[figure][criterium=\marginwidth,fallback=bottom] \starttext \placefigure[bottom]{}{} \input tufte \placefigure[left]{}{} \input tufte \placefigure[left]{}{\framed[width=.8\marginwidth]{}} \input tufte \stoptext (we needed that feature a couple of years ago in a project -) 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 ----------------------------------------------------------------- _______________________________________________ ntg-context mailing list ntg-context@ntg.nl http://www.ntg.nl/mailman/listinfo/ntg-context