项目

表格扩展(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>

格子表格可以有同时具有 colspanrowspan 的单元格:

+---+---+---+
| 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>

一行中的空 + 应导致简单的空列表输出:


在本文档中