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
-----------------------------------------------------------------
next prev parent 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).