表格

表格更适合用可视化方式来生成;因为它有两个维度,使用线性的标记语言来生成,自然比较麻烦。

DocBook 生成表格虽然麻烦,但是相对 reStructuredText 等使用空间方位生成的方式,却更容易控制

表格分为两种tableinformaltable,区别在于table可以有标题,能够被收录到目录中。下面是表格的实例:

表 27.1. 表格实例

 表头 
  表底
单元格一单元格二单元格三
111213
 2223
31  
  1. <table>
  2. <title>表格实例</title>
  3. <tgroup cols="3">
  4. <thead><row><entry></entry><entry>表头</entry></row></thead>
  5. <tfoot><row><entry></entry><entry></entry><entry>表底</entry></row></tfoot>
  6. <tbody>
  7. <row>
  8. <entry>单元格一</entry>
  9. <entry>单元格二</entry>
  10. <entry>单元格三</entry>
  11. </row>
  12. <row>
  13. <entry>11</entry>
  14. <entry>12</entry>
  15. <entry>13</entry>
  16. </row>
  17. <row>
  18. <entry></entry>
  19. <entry>22</entry>
  20. <entry>23</entry>
  21. </row>
  22. <row>
  23. <entry>31</entry>
  24. </row>
  25. </tbody>
  26. </tgroup>
  27. </table>

1

说明使用的是何种表格,table还是informaltable

2

表格标题

3

定义表格宽度(有多少列),必需!

4

表头,表格的第一行,用粗体显示,非必需

5

表底,其实我从来没见过有人用它

6

表体,表格的主体部分

7

行,每一行可以拥有的单元格不能超过表格宽度的定义

8

单元格。entry元素的内容从该行第一格开始排列

9

第一格留空的话,要用<entry></entry>占一个位置

10

留空的单元格之后没有 有内容的单元格,可以省略<entry></entry>

跨行表格

表 27.2. 跨行表格

跨两行1213
2223
31跨三行33
41跨两行
51
  1. <table>
  2. <title>跨行表格</title>
  3. <tgroup cols="3">
  4. <tbody>
  5. <row>
  6. <entry morerows="1">跨两行</entry><entry>12</entry><entry>13</entry>
  7. </row>
  8. <row>
  9. <entry>22</entry><entry>23</entry>
  10. </row>
  11. <row>
  12. <entry>31</entry><entry morerows="2">跨三行</entry><entry>33</entry>
  13. </row>
  14. <row>
  15. <entry>41</entry><entry morerows="1">跨两行</entry>
  16. </row>
  17. <row>
  18. <entry>51</entry>
  19. </row>
  20. </tbody>
  21. </tgroup>
  22. </table>

1

使用morerows=”N”合并下方的N个单元格;

2

由于该行第一个单元格已经被合并,所以应在这里出现的entry元素取消

3

这里有一个entry被取消

4

这里有两个entry被取消

跨列表格

表 27.3. 跨列表格

第一个单元格第三个单元格第四个单元格
第一个单元格第二个单元格
第一个单元格第二个单元格第三个单元格第四个单元格
  1. <table>
  2. <title>跨列表格</title>
  3. <tgroup cols="4">
  4. <colspec colnum="1" colname="1"/>
  5. <colspec colnum="2" colname="2"/>
  6. <colspec colnum="3" colname="3"/>
  7. <colspec colnum="4" colname="4"/>
  8. <tbody>
  9. <row>
  10. <entry namest="1" nameend="2">第一个单元格</entry><entry>第三个单元格</entry><entry>第四个单元格</entry>
  11. </row>
  12. <row>
  13. <entry>第一个单元格</entry><entry namest="2" nameend="4">第二个单元格</entry>
  14. </row>
  15. <row>
  16. <entry>第一个单元格</entry><entry>第二个单元格</entry><entry>第三个单元格</entry><entry>第四个单元格</entry>
  17. </row>
  18. </tbody>
  19. </tgroup>
  20. </table>

1

先给每列取个名

2

列编号

3

列名。可以任意取,但为了清晰,我用编号作为列名

4

跨列单元格的起始列,用列名指定

5

跨列单元格的结束列