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
-----------------------------------------------------------------
_______________________________________________
ntg-context mailing list
[email protected]
http://www.ntg.nl/mailman/listinfo/ntg-context