【问题标题】:Wrap long lines in markdown tables在降价表中换行
【发布时间】:2019-07-23 23:00:48
【问题描述】:

我的目标是以纯文本形式和 html 形式编写易于阅读的文档文件。

问题在于使用降价表。例如我有长字符串的表:

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

这个 markdown 生成正常的 HTML,但由于行很长,无法以纯文本形式阅读。

如果我这样写:

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

那么它很容易阅读,但它会生成丑陋的 html 演示文稿。

有没有办法在降价表中换行?

【问题讨论】:

    标签: markdown


    【解决方案1】:

    这取决于您使用的 Markdown 实现。

    例如,Pandoc 的 multiline_tablesgrid_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 存在(至少)两个问题:

    1. 它们仅受 Pandoc 支持。因此,如果您想让任何其他 Markdown 实现处理您的 Markdown,则不能使用它们。
    2. 在单元格中编辑多行文本可能会很痛苦,因为您需要在文本编辑器中手动换行。

    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 的已知问题是:

    1. 任何其他 Markdown 实现(据我所知)都不支持它。
    2. 虽然它在 emacs 中获得了良好的编辑器支持,但您还是被 emac 卡住了,这可能不是一件好事。

    管道表

    除了 Pandoc,还有大量的实现支持这些,包括 PHP Markdown ExtraMultiMarkdownGitHub Flavored MarkdownPython-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 的维护者

    【讨论】:

    • 非常感谢您的出色回答,真是太棒了!
    猜你喜欢
    • 2012-07-26
    • 2017-05-21
    • 1970-01-01
    • 2015-05-07
    • 2021-04-03
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多