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

问题描述 投票:0回答:3

我的 Markdown(表格中的项目符号列表)中有一些嵌入的 HTML。有没有办法缩进我的 HTML,而不需要 Pandoc 将其视为逐字代码块?

markdown pandoc
3个回答
17
投票

有点像,但你必须更改 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

0
投票

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

0
投票

我从 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>
元素,无论这意味着什么。

© www.soinside.com 2019 - 2024. All rights reserved.