ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Hans Hagen <pragma@wxs.nl>
Subject: Re: XML and Multipage table
Date: Thu, 13 Apr 2006 10:46:49 +0200	[thread overview]
Message-ID: <443E0FF9.8010505@wxs.nl> (raw)
In-Reply-To: <e1kief$53f$1@sea.gmane.org>

Johannes Graumann wrote:
> Hello,
>
> Does anybody have an insight into why a table created with the following
> mapping rule for XML code does not present it's caption and is not split?
>
> Thanks Joh
>
> \defineXMLnested
>   [table]
>   {\bgroup
>    \defineXMLsave[caption]
>    \defineXMLsave[header]
>    \defineXMLsave[body]
>    %\defineXMLnested[header]{\bTABLEhead} {\eTABLEhead}
>    %\defineXMLnested[body]  {\bTABLEbody} {\eTABLEbody}
>    \placetable
>       [\XMLpar{table}{location}{here}]
>       [\XMLpar{table}{label}{unknown}]
>       {\XMLflush{caption}}
>       \bgroup
>      
> \setupTABLE[frame=off,split=repeat,style={\switchtobodyfont[small]\setupinterlinespace[line=2.8ex]}]
>        
> \framed[frame=off,topframe=on,bottomframe=on,offset=none,rulethickness=0.75pt]
>         \bgroup \bTABLE[distance=7.5pt]
>         \bTABLEhead
>           \XMLflush{header}
>         \eTABLEhead
>         \bTABLEbody
>           \XMLflush{body}
>         \eTABLEbody
>         \bTABLEfoot\eTABLEfoot
>         }
>   {\eTABLE
>    \egroup
>    \egroup
>    \egroup}
>   
first of all, putting a \framed around it makes it unsplittable; best use the framed options that come with the floats 

second, there's a problem in signaling the splitter, which demands a patch

\unprotect

% in core-ntb : we check the flag 

\def\splittblbox#1%
  {\ifinsidesplitfloat
     \donetrue
   \else\ifinsidefloat
     \donefalse
   \else
     \donetrue
   \fi\fi
   \ifdone
     \executeifdefined{splittblbox\tbltblsplitmethod}\splittblboxa{#1}%
   \else
     \notsplittblbox{#1}%
   \fi}

% in page-flt : we add a flag 

\newif\ifinsidesplitfloat % will become chardef

\def\dosplitfloat[#1]#2% nog dubbele refs
  {\ifinsidecolumns    % tzt ook nog figuren splitten
     % not yet supported
   \else
     \bgroup
     \insidefloattrue
     \insidesplitfloattrue
     \getparameters[\??si][#1]%
     \resetnumber[\??si]%
     \def\floatcaptionsuffix{\convertednumber[\??si]}%
     \TABLEcaptionheight\@@silines\lineheight % brrr
     \simplifypagebreak % \page becomes \goodbreak
     \dowithnextbox
       {\forgetall
        \dontcomplain
        \doloop
          {\setbox2\vsplit\nextbox to \lineheight
           \setbox2\vbox{\unvbox2}
           \ifdim\ht2>\lineheight
             \incrementnumber[\??si]%
             \ifcase\rawnumber[\??si]\or \ifdim\nextboxht=\zeropoint
               \let\floatcaptionsuffix\empty
             \fi \fi
             \bgroup
             #2{\unvbox2}
             \egroup
             \ifdim\nextboxht>\zeropoint
               \page
               \decrementnumber[\floatcaptionnumber]%
             \fi
           \fi
           \ifdim\nextboxht>\zeropoint\else
             \expandafter\exitloop
           \fi}%
        \egroup}
     \vbox
   \fi}

% beware: you need to set the splitmethod to b (boxed split) 

\starttext

\splitfloat
  {\placetable{test}}
  {\bTABLE[split=repeat,splitmethod=b]
     \dorecurse{100}{\bTR \bTD test \eTD \eTR}
   \eTABLE}

\stoptext

this whole splitting has to be revised (although a two way singaling is not that trivial here) 

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

  reply	other threads:[~2006-04-13  8:46 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-04-13  3:56 Johannes Graumann
2006-04-13  8:46 ` Hans Hagen [this message]
2006-04-19  5:46   ` Johannes Graumann
2006-04-19  7:19     ` Hans Hagen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=443E0FF9.8010505@wxs.nl \
    --to=pragma@wxs.nl \
    --cc=ntg-context@ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).