我的 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;所以(例如),
并不表示强调。*
当使用
格式时,Pandoc 的行为方式如下;但默认情况下,pandoc 将 HTML 块标签之间的内容解释为 Markdown。markdown_strict
因此您需要使用
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 格式输出表格。
我为 pandoc 创建了一个 PR,并试图在出现
raw_html
输出选项时保证 HTML 表,但被维护者拒绝了。但是,您可以检查我的 PR,更改代码并构建本地 pandoc 二进制文件。
基本上,您需要将以下代码移至 switch case 的顶部:
| isEnabled Ext_raw_html opts -> fmap (id,) $
literal <$>
writeHtml5String opts{ writerTemplate = Nothing } (Pandoc nullMeta [t])
我从 Markdown 转换为 HTML,我必须使用
-native_divs
来呈现此代码
<div>
<img src="https://cdn.photoswipe.com/photoswipe-demo-images/photos/2/img-2500.jpg" alt="Image not found">
</div>
正确地作为图像。否则,Pandoc 会将
<div>
识别为“原生”<div>
元素,无论这意味着什么。