表格扩展(Markdig 规范文档)
本节描述了支持的多种扩展:
格子表格
格子表格允许每个单元格有多行内容,并且可以跨多列。以下是一个简单的格子表格示例:
+---------+---------+
| Header | Header |
| Column1 | Column2 |
+=========+=========+
| 1. ab | > This is a quote
| 2. cde | > For the second column
| 3. f |
+---------+---------+
| Second row spanning
| on two columns
+---------+---------+
| Back | |
| to | |
| one | |
| column | |
规则 #1
格子表格的第一行必须是行分隔符。
它必须以用于行分隔符中的列分隔字符 +
开头。
每个列分隔符:
- 首先可选空格
- 接着可选
:
以指定左对齐,后跟可选空格 - 然后是一系列一个或多个
-
字符,后跟可选空格 - 接着可选
:
以指定右对齐(如果也指定了左对齐则表示居中对齐) - 结尾是可选空格
第一个行分隔符之后必须跟着一个常规行。
常规行必须从与第一个行分隔符的 |
字符相同位置开始的 |
字符开始。
以下是一个有效的行分隔符:
+---------+---------+
| This is | a table |
.
<table>
<col style="width:50%" />
<col style="width:50%" />
<tbody>
<tr>
<td>This is</td>
<td>a table</td>
</tr>
</tbody>
</table>
以下不是一个有效的行分隔符:
|-----xxx----+---------+
| This is | not a table
.
<p>|-----xxx----+---------+
| This is | not a table</p>
规则 #2
当常规行的列分隔符 |
与前一行的列分隔符位于相同位置时,常规行可以继续前一行。
如果它们位于同一位置,该列可能跨越多个列:
+---------+---------+---------+
| Col1 | Col2 | Col3 |
| Col1a | Col2a | Col3a |
| Col1b | Col3b |
| Col1c |
.
<table>
<col style="width:33.33%" />
<col style="width:33.33%" />
<col style="width:33.33%" />
<tbody>
<tr>
<td>Col1
Col1a</td>
<td>Col2
Col2a</td>
<td>Col3
Col3a</td>
</tr>
<tr>
<td colspan="2">Col1b</td>
<td>Col3b</td>
</tr>
<tr>
<td colspan="3">Col1c</td>
</tr>
</tbody>
</table>
行标题使用 +========+
分隔,而不是 +---------+
:
+---------+---------+
| This is | a table |
+=========+=========+
.
<table>
<col style="width:50%" />
<col style="width:50%" />
<thead>
<tr>
<th>This is</th>
<th>a table</th>
</tr>
</thead>
</table>
最后一个列分隔符 |
可以省略:
+---------+---------+
| This is | a table with a longer text in the second column
.
<table>
<col style="width:50%" />
<col style="width:50%" />
<tbody>
<tr>
<td>This is</td>
<td>a table with a longer text in the second column</td>
</tr>
</tbody>
</table>
各列的宽度是根据第一行表格(不计 +
)的总大小的比例计算的:+----+--------+----+
将会分配给:
----
→ 4 个字符--------
→ 8 个字符----
→ 4 个字符
总大小为 16 个字符,所以宽度分别为 4/16 = 25%,8/16 = 50%,和 4/16 = 25%。
+----+--------+----+
| A | B C D | E |
+----+--------+----+
.
<table>
<col style="width:25%" />
<col style="width:50%" />
<col style="width:25%" />
<tbody>
<tr>
<td>A</td>
<td>B C D</td>
<td>E</td>
</tr>
</tbody>
</table>
可以通过在第一行使用字符 :
指定对齐方式:
+-----+:---:+-----+
| A | B | C |
+-----+-----+-----+
.
<table>
<col style="width:33.33%" />
<col style="width:33.33%" />
<col style="width:33.33%" />
<tbody>
<tr>
<td>A</td>
<td style="text-align: center;">B</td>
<td>C</td>
</tr>
</tbody>
</table>
格子表格可以有跨列和行的单元格:
+---+---+---+
| AAAAA | B |
+---+---+ B +
| D | E | B |
+ D +---+---+
| D | CCCCC |
+---+---+---+
.
<table>
<col style="width:33.33%" />
<col style="width:33.33%" />
<col style="width:33.33%" />
<tbody>
<tr>
<td colspan="2">AAAAA</td>
<td rowspan="2">B
B
B</td>
</tr>
<tr>
<td rowspan="2">D
D
D</td>
<td>E</td>
</tr>
<tr>
<td colspan="2">CCCCC</td>
</tr>
</tbody>
</table>
格子表格可以有同时具有 colspan
和 rowspan
的单元格:
+---+---+---+
| AAAAA | B |
+ AAAAA +---+
| AAAAA | C |
+---+---+---+
| D | E | F |
+---+---+---+
.
<table>
<col style="width:33.33%" />
<col style="width:33.33%" />
<col style="width:33.33%" />
<tbody>
<tr>
<td colspan="2" rowspan="2">AAAAA
AAAAA
AAAAA</td>
<td>B</td>
</tr>
<tr>
<td>C</td>
</tr>
<tr>
<td>D</td>
<td>E</td>
<td>F</td>
</tr>
</tbody>
</table>
格子表格不能有不规则形状的单元格:
+---+---+---+
| AAAAA | B |
+ A +---+ B +
| A | C | B |
+---+---+---+
| DDDDD | E |
+---+---+---+
.
<p>+---+---+---+
| AAAAA | B |
+ A +---+ B +
| A | C | B |
+---+---+---+
| DDDDD | E |
+---+---+---+</p>
一行中的空 +
应导致简单的空列表输出: