2.10. 表格

生成一个表格要使用table环境。

2.10.1. 表格基础

例 2.14. 一个表格例子

1<table frame="topbot" align="left">
<title>表格标题<title>
2<tgroup cols="2">
3<colspec colname="c1"/>
<colspec colname="c2"/>
4<thead>
5<row>
6<entry>属性</entry>
<entry>取值</entry>
</row>
</thead>
7<tbody>
<row>
<entry>frame</entry>
<entry><para>边框</para></entry>
</row>
<row>
<entry>c1</entry>
<entry>c4</entry>
</row>
<row>
<entry>d1</entry>
<entry>d4</entry>
</row>
</tbody>
</tgroup>
</table>
1

表格开始元素。table元素有许多的属性,常用属性如下:

frame

frame用于指明表格四周的边框。不包括单元格的边框。

属性值 含义
all 显示表格的四条边。
bottom 只显示表格的底边。
none 不显示表格边框。
top 只显示表格的上框。
topbot 只显示表格的上框和底框。
align

指定整个表格文本的对齐方式。取值可以为:left(左对齐), center(居中), right(右对齐)

2

表格内容的封装体。它的属性值cols用来表示表格有多少列。它有thead, tbody, tfoot三个子元素,分别表示表头,表体和表尾。

3

用于指明每列的属性。常用属性如下:

colsep

用于指定每列之间是否有分隔线。如果为"0"则无分隔线,为"1"有分隔线。

colname

为当前列起一个名字。

colnum

为当前列编一个号。

colwidth

为当前列指定宽度。一般的形式是数字加"*"号。"1*"表示基准宽度。"n*"表示是基准宽度的n倍。

rowsep

用于指定本列的单元格间是否有分隔线。如果为"0"则无分隔线,为"1"有分隔线。

align

用于指定本列的文本对齐方式。属性值有:left, center, right

4

thead用于指明表头。常用属性为:

valign

用于指定表头文本的垂直对齐方式。属性值有:bottom, middle, top

5

row表示一行数据。还有一种与HTML兼容的tr

6

当前行的一个单元格数据。常用属性如下:

rowsep, colsep

rowsep指定此单元格与下一个单元格之间是否有分隔线。colsep指定此单元格与右一单元格之间是否有分隔线。如果为"0"则无分隔线,为"1"有分隔线。

spanname

spanname定义的跨度将单元格进行融合。spanname是在spanspec中定义。后面将会有解释。

align, valign

单元格文本的水平、垂直对齐方式。取值同上面。

namest, nameend

两者合起来表示单元格的横向融合。namest用来指明融合的开始列的名字,nameend指用融合的结束列的名字。

[Note]

是名字而不是编号。

morerows

用于单元格的融合,表示将当前单元格与其下单元格按指定行数进行融合。如:morerows2,则会将当前单元格与下两行单元格进行融合,也就是三个变成了一个。

7

表格体。

2.10.2. 横向融合

例 2.15. 横向融合示例

<table frame="all">
<title/>
<tgroup cols="3" align="left">
<colspec colnum="1" colname="c1" colwidth="1*"/>
<colspec colnum="2" colname="c2" colwidth="3*"/>
<colspec colnum="3" colname="c3" colwidth="8*"/>
<thead>
<row>
<entry>a</entry>
<entry>b</entry>
<entry>c</entry>
</row>
</thead>
<tbody>
<row>
<entry>d</entry>
<entry namest="c2" nameend="c3">e</entry>
</row>
<row>
<entry>g</entry>
<entry>h</entry>
<entry>i</entry>
</row>
<row>
<entry>g</entry>
<entry>k</entry>
<entry>l</entry>
</row>
</tbody>
</tgroup>
</table>

输出结果:

a b c
d e
g h i
j k l

通过在单元格中指定namestnameend属性将单元格进行横向融合。

2.10.3. 纵向融合

例 2.16. 纵向融合示例

<table frame="all">
<title/>
<tgroup cols="3" align="left">
<colspec colnum="1" colname="c1" colwidth="1*"/>
<colspec colnum="2" colname="c2" colwidth="3*"/>
<colspec colnum="3" colname="c3" colwidth="8*"/>
<thead>
<row>
<entry>a</entry>
<entry>b</entry>
<entry>c</entry>
</row>
</thead>
<tbody>
<row>
<entry>d</entry>
<entry morerows="1">e</entry>
<entry>f</entry>
</row>
<row>
<entry>g</entry>
<entry>i</entry>
</row>
<row>
<entry>g</entry>
<entry>k</entry>
<entry>l</entry>
</row>
</tbody>
</tgroup>
</table>

处理结果为:

a b c
d e f
g i
j k l

这里使用morerows属性。