3.9. 表格#
表格语法说明:http://docutils.sourceforge.net/docs/ref/rst/directives.html#csv-table
备注
一般情况下使用外部文件式CSV表格,修改比较方便。
3.9.1. 表格语法参考#
reStructureText提供两种表格:网格表格(Grid Tables), 简单表格(Simple Tables)。
表格前后都需要空行
网格表格#
"-" 分隔行(短破折号,减号)
"=" 分隔表头和表体行
"|" 分隔列
"+" 表示行和列相交的节点
网格表格注意点:
网格表格编辑复杂,可以使用Emacs来编辑生成
行和列都支持并格
如果文本内包含"|" ,并且恰好与表格内分隔对齐了,那么会产生错误。解决方案 : 方式一是加空格避免对齐,方式二是为该行增加一行
可以不包含表头。
列需要和"="左对齐,不然可能会导致出错
如果碰到第一列为空,需要使用 "\" 来转义, 不然会被视为是上一行的延续。
示例:
+------------------------+------------+----------+----------+
| Header row, column 1 | Header 2 | Header 3 | Header 4 |
| (header rows optional) | | | |
+========================+============+==========+==========+
| body row 1, column 1 | column 2 | column 3 | column 4 |
+------------------------+------------+----------+----------+
| body row 2 | Cells may span columns. |
+------------------------+------------+---------------------+
| body row 3 | Cells may | - Table cells |
+------------------------+ span rows. | - contain |
| body row 4 | | - body elements. |
+------------------------+------------+---------------------+
结果:
Header row, column 1 (header rows optional) |
Header 2 |
Header 3 |
Header 4 |
---|---|---|---|
body row 1, column 1 |
column 2 |
column 3 |
column 4 |
body row 2 |
Cells may span columns. |
||
body row 3 |
Cells may span rows. |
|
|
body row 4 |
简单表格#
简单表格使用 "=" 和 "_" 来进行绘制,其中"=" 放置于表格的最外两行(首行和末行),如果有表头,则表头也用该符号进行分隔,"_"用于跨列合并(column span)。
简单表格需要各列首字母与该列指示的"="对齐(表头可不对齐,为了保持统一,尽量保持左对齐),每列的"="需要覆盖该列字符的长度
包含表头的简单表格#
语法如下:
===== ===== =======
A B A and B
===== ===== =======
False False False
True False False
False True False
True True True
===== ===== =======
效果如下:
A |
B |
A and B |
---|---|---|
False |
False |
False |
True |
False |
False |
False |
True |
False |
True |
True |
True |
无表头的简单表格#
语法如下:
===== ===== =======
False False False
True False False
False True False
True True True
===== ===== =======
效果如下:
False |
False |
False |
True |
False |
False |
False |
True |
False |
True |
True |
True |
跨列合并#
"_"用于跨列合并,仅支持在表头使用,"_"长度需要从起始列的第一个指示符"="到终止列的最后一个指示符"="
语法如下:
===== ===== ======
合并两列 单独列
------------ ------
A B A or B
===== ===== ======
False False False
True False True
False True True
True True True
===== ===== ======
效果如下:
合并两列 |
单独列 |
|
---|---|---|
A |
B |
A or B |
False |
False |
False |
True |
False |
True |
False |
True |
True |
True |
True |
True |
单个表格中可以多行#
简单表格的单个格子中可以包含多行的内容(比如列表),但是不支持行合并;
增加空行可以进行换行,否则会自动将文本连接在一起。
首列不能为空,为空时使用 \ 进行占位。
语法如下:
===== ===================================
col 1 col 2
===== ===================================
1 Second column of row 1.
2 Second column of row 2.
Second line of paragraph.
3 - Second column of row 3.
- Second item in bullet
list (row 3, column 2).
\ Row 4; column 1 will be empty.
===== ===================================
效果如下:
col 1 |
col 2 |
---|---|
1 |
Second column of row 1. |
2 |
Second column of row 2. Second line of paragraph. |
3 |
|
Row 4; column 1 will be empty. |
3.9.2. 外部文件式CSV表格#
可以通过外部文件的方式插入CSV表格,如:
.. csv-table:: 外部CSV表格示例
:file: deploy.csv
:widths: 5, 20
:header-rows: 1
效果:
name |
备注 |
---|---|
a1 |
igais/yubiao |
a2 |
|
a4 |
osgeo/jubook |
3.9.3. CSV表格#
使用CSV编写
.. csv-table:: Frozen Delights!
:header: "Treat", "Quantity", "Description"
:widths: 15, 10, 30
"Albatross", 2.99, "On a stick!"
"Crunchy Frog", 1.49, "If we took the bones out, it wouldn't be
crunchy, now would it?"
"Gannet Ripple", 1.99, "On a stick!"
效果:
Treat |
Quantity |
Description |
---|---|---|
Albatross |
2.99 |
On a stick! |
Crunchy Frog |
1.49 |
If we took the bones out, it wouldn't be crunchy, now would it? |
Gannet Ripple |
1.99 |
On a stick! |
3.9.4. 列表式表格#
语法:
.. list-table:: Frozen Delights!
:widths: 15 10 30
:header-rows: 1
* - Treat
- Quantity
- Description
* - Albatross
- 2.99
- On a stick!
* - Crunchy Frog
- 1.49
- If we took the bones out, it wouldn't be
crunchy, now would it?
* - Gannet Ripple
- 1.99
- On a stick!
效果:
Treat |
Quantity |
Description |
---|---|---|
Albatross |
2.99 |
On a stick! |
Crunchy Frog |
1.49 |
If we took the bones out, it wouldn't be crunchy, now would it? |
Gannet Ripple |
1.99 |
On a stick! |
3.9.5. 普通表格#
表格使用 == 号制作
语法示例:
===== ===== =======
A B A and B
===== ===== =======
False False False
True False False
False True False
True True True
===== ===== =======
效果:
A |
B |
A and B |
---|---|---|
False |
False |
False |
True |
False |
False |
False |
True |
False |
True |
True |
True |
在vscode可安装插件方便格式化表格:https://marketplace.visualstudio.com/items?itemName=shuworks.vscode-table-formatter
安装后通过Ctrl-Shift-P调用 Table: Format Current 或 Table: Format All
3.9.6. 表格引用#
示例
.. _拨码开关启动配置表:
.. table:: 拨码开关启动配置表
==== ====== ========== ==== == ===
编号 名称 NAND FLASH eMMC SD USB
==== ====== ========== ==== == ===
1 MODE0 0 0 0 1
2 MODE1 1 1 1 0
3 CFG1-4 1 0 0 X
4 CFG1-5 0 1 0 X
5 CFG1-6 0 1 1 X
6 CFG1-7 1 0 0 X
7 CFG2-3 0 1 0 X
8 CFG2-5 0 0 1 X
==== ====== ========== ==== == ===
引用示例 :ref:`拨码开关启动配置表` 。
自定义名称引用 :ref:`自定义名称 <拨码开关启动配置表>` 。
效果
编号 |
名称 |
NAND FLASH |
eMMC |
SD |
USB |
---|---|---|---|---|---|
1 |
MODE0 |
0 |
0 |
0 |
1 |
2 |
MODE1 |
1 |
1 |
1 |
0 |
3 |
CFG1-4 |
1 |
0 |
0 |
X |
4 |
CFG1-5 |
0 |
1 |
0 |
X |
5 |
CFG1-6 |
0 |
1 |
1 |
X |
6 |
CFG1-7 |
1 |
0 |
0 |
X |
7 |
CFG2-3 |
0 |
1 |
0 |
X |
8 |
CFG2-5 |
0 |
0 |
1 |
X |