使用Pandoc在Markdown中嵌入缩进的HTML

8

我在Markdown中嵌入了一些HTML(表格内的项目列表)。有没有办法缩进我的HTML,而不让Pandoc将其视为直接代码块?

2个回答

15

有点像,但您需要更改Pandoc的默认设置。

Markdown 规则明确禁止此操作:

唯一的限制是块级HTML元素(例如<div><table><pre><p>等)必须由空行与周围内容分隔,并且块的起始和结束标记不应缩进。

然而,如果您注意到上面引用的规则确实指出,只有“块的起始和结束标记不应缩进”这一限制。没有限制在“起始和结束标记”内缩进内容。实际上,“起始和结束标记”之间的内容甚至不会作为Markdown处理,因此可以自由缩进。换句话说,以下写法完全可行:

<table>
    <thead>
        <tr>
            <th>A header</th>
        </tr>
    </thead>
</table>

除了在 Pandoc 中默认情况下无法使用,这个功能是可行的。正如 Pandoc 的文档所解释的:

标准 Markdown 允许您包含 HTML“块”:由平衡标签夹在中间的 HTML 块,用空行与周围文本分隔开,并且在左边缘开始和结束。在这些块内,一切都被解释为HTML,而不是Markdown;因此(例如),*不表示重点。

当使用markdown_strict格式时,Pandoc 会以这种方式行事;但默认情况下,pandoc 将 HTML 块标记之间的内容解释为Markdown。

因此,您需要使用 raw_html 扩展或 markdown_strict 输出格式。

如需使用“严格模式”,请使用:

pandoc --from markdown_strict

或者不使用严格模式,但仍然获得所需的HTML行为(禁用markdown_in_html_blocks扩展并启用raw_html扩展):

pandoc --from markdown-markdown_in_html_blocks+raw_html

这是否意味着Pandoc默认应用“markdown_in_html_blocks”来转换包含在<table>{{content}}</table>中的内容? - shouldsee

0

raw_html 不能保证以 HTML 格式输出表格。

我创建了一个 PR 给 pandoc,试图在 raw_html 输出选项被呈现时保证 HTML 表格,但被维护者拒绝了。不过你可以查看我的 PR,进行代码更改并构建本地的 pandoc 二进制文件。

基本上,你需要将以下代码移动到 switch case 的顶部:

| isEnabled Ext_raw_html opts -> fmap (id,) $
   literal <$>
   writeHtml5String opts{ writerTemplate = Nothing } (Pandoc nullMeta [t])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接