[NTG-context] More on split TABLES: Numbering Scheme and other things
Johannes Graumann
johannes_graumann at web.de
Sat May 6 07:23:13 CEST 2006
Hello,
I'm using the split-TABLE patch below (send - how can it be different - by
Hans) along with the also appended table definition (to read out XML code).
I have two problems here:
1) as posted earlier, the page just before a split TABLE overflows on the
bottom (see
http://www.idyll.org:8081/JohSite/context/page-overflow-preceeding-a-split-table).
2) I also wonder whether the table numbering scheme this is producing may be
changeable: instead of '1.1a', '1.2b' (currently for two parts of a split
TABLE) the more intuitive '1.1a', '1.1b'
Can anybody give me a helping hand for fixing this?
Thanks, Joh
Table definition:
\defineXMLnested
[table]
{
\defineXMLsave[floattitle]
\defineXMLsave[caption]
\defineXMLsave[header]
\defineXMLsave[body]
\defineXMLsave[footer]
}
{
\splitfloat
{
\expanded{%
\placetable
[\XMLpar{table}{location}{here}]
[\XMLpar{table}{label}{unknown}]
{\select{figurecaption}{\XMLflush{floattitle}
{{\bf\XMLflush{floattitle}} \XMLflush{caption}}}
%{\XMLflush{caption}}
}
}
{
\setupTABLE[row][1][topframe=on]
\setupTABLE[row][last][bottomframe=on]
\bTABLE[frame=off,split=repeat,splitmethod=b,style={\switchtobodyfont[small]\setupinterlinespace[line=2.8ex]}]
\bTABLEhead\XMLflush{header}\eTABLEhead
\bTABLEbody\XMLflush{body}\eTABLEbody
\bTABLEfoot\XMLflush{footer}\eTABLEfoot
\eTABLE
}
}
Split TABLE patch:
% Fixing multipage table according to Hans Hagen:
\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}
\protect
% beware: you need to set the splitmethod to b (boxed split)
More information about the ntg-context
mailing list