Tvorba tabulek v DocBooku se o mnoho neliší od tabulek v HTML. V současné době se používá standardní XML standard CALS, ovšem má být do budoucna nahrazen modelem OASIS Exchange Table Model. V této kapitole popíšeme tvorbu tabulek z hlediska tohoto standardu, abychom se vyhnuli věcem které budou v budoucnu odstraněny.
Pro vložení tabulek máme dva elementy - table
a
informaltable
. První je pojmenovaná tabulka, tedy tabulka obsahující titulek
(title
) a druhá je tabulka bez titulku. Zatímco table
se
automaticky začleňuje do „seznamu tabulek“ v obsahu,
informaltable
tam nebude.
<table frame="all"> <title>Jednoduchá tabulka</title> <tgroup cols="2"> <colspec colwidth="3cm" align="center"/> <colspec colwidth="5cm" align="center"/> <thead> <row> <entry>Nadpis sloupce 1</entry> <entry>Nadpis sloupce 2</entry> </row> </thead> <tbody> <row> <entry>buňka 1-1</entry> <entry>buňka 1-2</entry> </row> <row> <entry>buňka 2-1</entry> <entry>buňka 2-2</entry> </row> </tbody> </tgroup> </table>
Jak vidíme názorně z příkladu, tabulka vždy obsahuje element tgroup
,
který obsahuje atribut cols
udávající počet sloupců tabulky. Element
colspec
udává definuje vlastnosti sloupců. Jeho atribut
colwidth
stanovuje šířku sloupce, align
, valign
způsob zarovnání a colname
obsahuje identifikátor sloupce.
Poté následuje záhlaví tabulky obsahující nadpisy sloupců, uvozené do elementu
thead
. Každý řádek tabulky uvozuje element row
a sloupec v
řádku pak vnořený element entry
. Tělo tabulky je uvozeno pomocí
tbody
. Zápatí tabulky můžeme uvést do tfoot
.
Všechny uvedené elementy mohou obsahovat celou řadu atributů, určených pro různé
formátování. Lze tak snadno upravit vzhled tabulky přesně podle představ. např. přiřadit
sloupci zarovnání textu vlevo (<colspec align="left"/>
) a pak pouze jedné
buňce přiřadit zarovnání na střed (<entry align="center">
).
Atributem frame
, náležícímu elementu table
definujeme typ okrajů
kolem tabulky, což se ovšem projevuje spíše při generování PDF. Podobně lze vykreslovat čáry pomocí
atributů rowsep
a colsep
. Možností je celá řada, viz dokumentace.
Pokud potřebujeme sloučit buňky horizontálně, provedeme to tak, že sloupcům přiřadíme
identifikátory zmiňovaným atributem colname
v elementu colspec
. Tyto pak
použijeme v atributech elementu entry
, které se nazývají namest
(identifikátor počátečního sloupce) a nameend
(identifikátor koncového sloupce). Buňky
v tomto rozsahu pak budou sloučeny.
<informaltable> <tgroup cols="2"> <colspec colname="c1" align="center"/> <colspec colname="c2" align="center"/> <thead> <row> <entry namest="c1" nameend="c2" align="center">Nadpis</entry> </row> </thead> <tbody> <row> <entry>buňka 1-1</entry> <entry morerows="1">buňka 1-2</entry> </row> <row> <entry>buňka 2-1</entry> </row> </tbody> </tgroup> </informaltable>
Nadpis | |
---|---|
buňka 1-1 | buňka 1-2 |
buňka 1-1 |
Vertikálně buňky sloučíme atributem morerows
, tak jak je vidět z předchozího příkladu.