[NTG-context] placefigure feature request ?

Sanjoy Mahajan sanjoy at mrao.cam.ac.uk
Thu Apr 13 00:12:08 CEST 2006


> this 'choose between locations' feature is kind of present but only
> with 'here' as fallback but it's trivial to make that configurable:

I've been experimenting a bit with the code, and it is much appreciated.

I added \unprotect..\protect and it compiled fine.  The figure numbering
is the order in the source files, thanks to the numbering=nocheck;
reading down the page it is 3->1->2.  Then I felt bold and commented out
the numbering=nocheck.  It does one clockwise rotation of the numbers:

floatblocks     : no block given
floatblocks     : 1 renumbered / figure 1 => 3
(/home/sanjoy/texmf/tex/context/base/pdfr-ec.tex)
floatblocks     : 1 placed
(/home/sanjoy/texmf/tex/context/sample/tufte.tex)
floatblocks     : no block given
floatblocks     : 2 renumbered / figure 2 => 1
floatblocks     : 2 placed
(/home/sanjoy/texmf/tex/context/sample/tufte.tex)
floatblocks     : 3 renumbered / figure 3 => 2
floatblocks     : 3 placed

If it had done a anticlockwise rotation, the figure numbers would have
been right (1->2->3 reading down the page).  Is it because the figure
renumbering does not know of the change to fallback=bottom (from
fallback=here)?

               texexec : TeXExec 5.4.3 - ConTeXt / PRAGMA ADE 1997-2005
               texutil : TeXUtil 9.0.1 - ConTeXt / PRAGMA ADE 1992-2006
                   tex : pdfeTeX, 3.141592-1.21a-2.2 (Web2C 7.5.4)
               context : ver: 2006.03.25 13:21
               cont-en : ver: 2006.03.25 13:21  fmt: 2006.4.11  mes: english


Here's the .tex file itself with the above modifications:

======================================================================
% first a new key

\startconstants            dutch                     english
                           german                    czech
                           italian                   romanian
                           french

                 fallback: terugval                  fallback
                           fallback                  fallback
                           fallback                  fallback
                           fallback
\stopconstants

% use that key

\unprotect

\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}

\protect

% \setupfloats[numbering=nocheck]

% we use the marginwidth as criterium

\setupfloat[figure][criterium=\marginwidth,fallback=bottom]

\starttext

\placefigure[bottom]{1}{} \input tufte
\placefigure[left]{2}{} \input tufte
\placefigure[left]{3}{\framed[width=.9\marginwidth]{}} \input tufte

\stoptext
======================================================================

-Sanjoy

`A society of sheep must in time beget a government of wolves.'
   - Bertrand de Jouvenal


More information about the ntg-context mailing list