【问题标题】:How to convert html mixed markdown to html/docx/pdf?如何将html混合markdown转换为html/docx/pdf?
【发布时间】:2020-02-20 14:37:12
【问题描述】:

我在 azure devops wiki 工作以创建规范和其他软件文档。

我必须创建表格并详细列出一些项目符号列表。在 github 风格的 markdown 中是可能的(完全是在 azure devops 中):

#header1

|TableHeader1|TableHeader2|
|--|--|
|Text1|Details 1|
|ListCell|<ul><li>FirstBullet</li><li>SecondBullet</li></ul>|

Html output screenshot

我首先尝试使用 pandoc,但列表从表中掉了出来。 有什么想法可以转换成 html/docx?

问候, 安德拉斯

【问题讨论】:

    标签: list markdown pandoc


    【解决方案1】:

    你可能做不到。作为 Pandoc 文档warns

    因为 pandoc 对文档的中间表示较少 比它转换的许多格式更具表现力,应该 不要期望每种格式之间的完美转换。 Pandoc 试图保留文档的结构元素,但是 不格式化细节,如边距大小。还有一些文件 复杂的表格等元素可能不适合 pandoc 的简单 文档模型。而从 pandoc 的 Markdown 转换为 all 格式追求完美,格式转换更具表现力 比 pandoc 的 Markdown 可以预期是有损的。

    HTML 肯定比 Markdown 更具表现力。因此,Pandoc 不保证会保留 HTML 源代码。也就是说,一个简单的列表可以用 Markdown 来表达就好了,所以人们会认为这不会是有损的。

    但是,表格使事情变得复杂。 Pandoc 实际上支持四种不同的表格格式。但是,这些格式中只有两种(multi-linegrid 表格)支持包含块级元素的单元格。

    但是,您似乎在使用pipe_tables,它支持表格单元格中的块级元素。正如文档所述:

    管道表的单元格不能包含段落和列表等块元素,并且不能跨越多行。

    虽然 Pandoc 的markdown 格式支持所有上述扩展(表格格式),但gfm 格式仅支持pipe_tables(请参阅Markdown Variants)。因此,您可以考虑改用markdown 格式。但是,只有在您的表格实际使用正确的网格或多行表格语法时,这才会有所帮助。

    不幸的是,只有 Pandoc 支持网格和多行表。我不知道有任何其他支持它们的 Markdown 实现。因此,您无法在 Pandoc 和其他实现中解析具有块级元素的表。

    那么,为什么您正在使用的其他实现与表格单元格中的原始 HTML 列表一起工作得很好?大概解析器不是很聪明,并且盲目地通过未更改的原始 HTML。任何试图理解原始 HTML 的更复杂的解析器都不适合你。当然,如果您想将文档转换为另一种(不是 HTML)格式,那么解析器需要理解原始 HTML。

    也许您可以找到一些随机解析器来满足您的需求,但这不太可能。更好的解决方案可能是获取其他 Markdown 工具的 HTML 输出并使用 Pandoc(或其他工具)将其转换为 docx/pdf。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      • 2017-05-11
      相关资源
      最近更新 更多