我在Markdown中嵌入了一些HTML(表格内的项目列表)。有没有办法缩进我的HTML,而不让Pandoc将其视为直接代码块?
有点像,但您需要更改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
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])
<table>{{content}}</table>
中的内容? - shouldsee