有没有办法阻止 Pandoc 将每一行包装为一个段落并将图像嵌套到列表中?

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

早上好!

我正在遵循 Pandoc: 避免段落或向段落添加 css 类? 的教程,但这并不能解决我的问题。我还查看了另一个问题:当 docx 转换为 markdown 时,禁用 pandoc 将图像的替代文本转换为段落

这是小代码:

1. Lorem ipsum dolor sit amet consectetur adipisicing elit. Hic, reprehenderit.
2. Lorem ipsum dolor sit, amet consectetur adipisicing elit:

    ![example](assets/images/iuacessos-preferences.png)

3. Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim voluptates similique ab doloremque delectus veniam.

我运行了以下命令:

pandoc bug.md -f markdown_github+fenced_divs-implicit_figures-native_divs+raw_html -t html -o bug.md

这是输出:

<ol>
  <li>
    <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Hic,
      reprehenderit.</p>
  </li>
  <li>
    <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit:</p>
    <p><img src="assets/images/iuacessos-preferences.png" alt="example" /></p>
  </li>
  <li>
    <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim
      voluptates similique ab doloremque delectus veniam.</p>
  </li>
</ol>

您可以看到 Pandoc 在每一行、每个元素中添加了

p
元素,包括
li
元素。它还在
p
元素中添加了
img
,并将
p + img
嵌套在
li
元素内。

代码应该是这样的:

<ol>
  <li>Lorem ipsum dolor sit amet consectetur adipisicing elit. Hic, reprehenderit.</li>
  <li>Lorem ipsum dolor sit, amet consectetur adipisicing elit:</li>
    <img src="assets/images/iuacessos-preferences.png" alt="example" />
  <li>Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim voluptates similique ab doloremque delectus veniam.</li>
</ol>

优雅、干净。不同的是,GitHub 具有完全相同的输出,不会用

p
元素包裹每一行,并且不会将图像嵌套在
li
元素内。

请注意,我主要使用

markdown_github
,因为它比其他 Pandoc Markdown 变体支持更多功能。

html markdown pandoc
1个回答
0
投票

请注意,最近的 pandoc 版本说

Deprecated: markdown_github. Use gfm instead.

所以你应该使用的是:

pandoc -f gfm -o bug.html bug.md

它将使用与 github 本身使用的完全相同的 Markdown 解析器。

请注意,您在“代码应该类似于”下发布的 HTML 无效,因为

<ol>
只能将
<li>
作为直接子级。也许你的意思是:

<ol>
  <li>Lorem ipsum dolor sit amet consectetur adipisicing elit. Hic, reprehenderit.</li>
  <li>
    Lorem ipsum dolor sit, amet consectetur adipisicing elit:
    <img src="assets/images/iuacessos-preferences.png" alt="example" />
  </li>
  <li>Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim voluptates similique ab doloremque delectus veniam.</li>
</ol>

为此

pandoc -f html -t gfm
给出了正确的降价:

1.  Lorem ipsum dolor sit amet consectetur adipisicing elit. Hic,
    reprehenderit.
2.  Lorem ipsum dolor sit, amet consectetur adipisicing elit:
    ![example](assets/images/iuacessos-preferences.png)
3.  Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim
    voluptates similique ab doloremque delectus veniam.

如果您想知道为什么图像周围有

<p>

摘自手册

段落是一行或多行文本,后跟一个或多个空白行。

以及为什么您会在

列表项
周围看到 <p>

项目符号列表是项目符号列表项的列表。项目符号列表项以项目符号(*、+ 或 -)开头。这是一个简单的例子:

* one
* two
* three

这将产生一个“紧凑”列表。如果您想要一个“松散”列表,其中每个项目都格式化为一个段落,请在项目之间添加空格:

* one

* two

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