xtables
Extreme Tables
This is just an excerpt from the xtables manual.
“Extreme Tables” (xtable) are a variant of the “natural tables” (TABLE). They are suited for tables that span several pages. The used two-pass mechanism isn’t simple, but fast. It works only in ConTeXt MkIV, because it’s Lua-based.
List of commands
- \definextable[name][parent]]
- \setupxtable[settings] or \setupxtable[defined name][settings]
- \startxtable (with defined name or settings)
- \startxtablehead
- \startxrowgroup
- \startxrow
- \startxcellgroup
- \startxcell
Simple sample
\startxtable \startxrow \startxcell one \stopxcell \startxcell two \stopxcell \stopxrow \startxrow \startxcell alpha \stopxcell \startxcell beta \stopxcell \stopxrow \stopxtable
Since xtables are a bunch of nested \frameds, you can style each unit with the known parameters.
xtables can be nested. Sub-tables inherit the properties of their enclosing cell.
XML
The following example demonstrates that we can use this mechanism in xml too. The example was provided by Thomas Schmitz. First we show how a table looks like in xml:
<table> <tablerow> <tablecell> One </tablecell> <tablecell> Two </tablecell> </tablerow> <tablerow> <tablecell> <b>Three</b> </tablecell> <tablecell> Four </tablecell> </tablerow> </table>
We need to map these elements to setups:
\startxmlsetups xml:testsetups \xmlsetsetup{main}{b|table|tablerow|tablecell}{xml:*} \stopxmlsetups \xmlregistersetup{xml:testsetups}
The setups themselves are rather simple as we don’t capture any attributes.
\startxmlsetups xml:b \bold{\xmlflush{#1}} \stopxmlsetups \startxmlsetups xml:table \startembeddedxtable \xmlflush{#1} \stopembeddedxtable \stopxmlsetups \startxmlsetups xml:tablerow \startxrow \xmlflush{#1} \stopxrow \stopxmlsetups \startxmlsetups xml:tablecell \startxcell \xmlflush{#1} \stopxcell \stopxmlsetups
We now process the example. Of course it will also work for files.
\xmlprocessbuffer{main}{test}{}
Ye olde syntax
For the impatient a small additional module is provided that remaps the natural table commands onto extreme tables:
\usemodule[ntb-to-xtb]
After that:
\bTABLE \bTR \bTD[background=color,backgroundcolor=red] one \eTD \bTD[width=2cm] two \eTD \eTR \bTR \bTD[width=5cm] alpha \eTD \bTD[background=color,backgroundcolor=yellow] beta \eTD \eTR \eTABLE