这取决于您使用的 Markdown 实现。
例如,Pandoc 的 multiline_tables 和 grid_tables 都提供对多行单元格的支持,但更流行的 pipe_tables 不支持。请注意,这些都不是默认启用的,但必须通过选项显式打开,或者作为 Markdown 变体的一部分打开。让我们依次看看:
multiline_tables
这些表格使用空行分隔每一行。
------------------------------------------
Name Description
---------- -------------------------------
some_name Very very very long description
for some_name property that
should be easy to read even in
plain text form even in html
form
other_name A second row
------------------------------------------
据我所知,multiline_tables 存在(至少)两个问题:
- 它们仅受 Pandoc 支持。因此,如果您想让任何其他 Markdown 实现处理您的 Markdown,则不能使用它们。
- 在单元格中编辑多行文本可能会很痛苦,因为您需要在文本编辑器中手动换行。
grib_tables
这些本质上是Emacs table mode 的克隆和restructuredtext's grid tables 的更严格实现。
+------------+--------------------------------+
| Name | Description |
+============+================================+
| some_name | Very very very long description|
| | for some_name property that |
| | should be easy to read even in |
| | plain text form even in html |
| | form |
+------------+--------------------------------+
| other_name | A second row |
+------------+--------------------------------+
每一行由- 和+ 字符的组合分隔。
grid_tables 的已知问题是:
- 任何其他 Markdown 实现(据我所知)都不支持它。
- 虽然它在 emacs 中获得了良好的编辑器支持,但您还是被 emac 卡住了,这可能不是一件好事。
管道表
除了 Pandoc,还有大量的实现支持这些,包括 PHP Markdown Extra、MultiMarkdown、GitHub Flavored Markdown、Python-Markdown* 和 Kramdown 等.
| Name | Description |
| ---------- | ---------------------------------------------------------------------------------------------------------------------------- |
| some_name | Very very very long description for some_name property that should be easy to read even in plain text form even in html form |
| other_name | A second row |
请注意,语法不提供任何方式来定义一行结束和另一行何时开始(与其他类型的表不同)。由于您无法定义行之间的划分,因此它可以工作的唯一方法是每行都是自己的行。因此,一行不能包含多行文本。
最后,正如 Pandoc 的文档所述:
由于管道表示列边界,因此列不需要垂直对齐。
既然如此,在文本编辑器中格式化表格会更容易,如下所示:
| Name | Description |
| ---------- | ------------ |
| some_name | Very very very long description for some_name property that should be easy to read even in plain text form even in html form |
| other_name | A second row |
这当然有帮助,并且无需手动换行。长线不太理想。尽管如此,由于跨实现的广泛支持,它是大多数用户的最佳选择。
MultiMarkdown 的表格文档做了一个有趣的观察(重点是原文):
MultiMarkdown 表格支持旨在为 most 人处理 most 表格;它不包括 all 人的 all 表。如果您需要复杂的表格,您将需要手动或使用专门为您的输出格式设计的工具来创建它们。但是,在某些时候,如果您发现 MultiMarkdown 表格过于局限,您应该考虑表格是否真的是最好的方法。
* 全面披露:我是 Python-Markdown 的维护者