删除 Markdown 中的 HTML 个元素

Remove HTML elements inside Markdown

目标

将带有 HTML 的 Markdown 文件转换为纯 Markdown

代码:in.md

# Title

## Subtitle

### Sub-subtitle

<span><div>Line before image</div><div><br></div><div><img src="img.png" width=404 height=255><br></div><div><br></div><div>Line after image</div><div><br></div><div>Text</div></span><h1><span>Heading 1</span></h1><span><div>Text</div><div><br></div></span><h2><span>Heading 2</span></h2><span><div>Text</div></span><h3><span>Heading 3</span></h3><div><span>Text</span></div><div><span><br></span></div><span><div>Line before code</div><code><pre><code><div>Code line 1</div><div>Code line 2</div><div>Code line 3</div></code></pre></code><div><span style="">Line after code</span><br></div><div><span style=""><br></span></div><div><span style=""><a href="http://pandoc.org">Link</a></span></div><div><span style=""><br></span></div><div><ul><li>Unordered bullet 1<br></li><li>Unordered bullet 2<br></li></ul></div><div><span style=""><br></span></div><div><ol><li>Ordered bullet 1<br></li><li>Ordered bullet 2<br></li></ol></div><div><span style=""><br></span></div></span><blockquote style="margin:0 0 0 40px;border:none;padding:0px;"><span><div><span style="">Quote line 1</span></div></span><span><div><span style="">Quote line 2</span></div></span></blockquote><span><div><span style=""><br></span></div><div><span style="">Text</span></div><div><span style=""><br></span></div><div><i>Italic</i></div><div><i><br></i></div><div>Text</div><div></div></span>

Markdown text

More Markdown text

尝试次数

我尝试了一些 Pandoc 脚本:

尝试 1

pandoc -f markdown -t markdown_strict --atx-headers in.md -o out.md

从结果中提取

<h3>
<span>H3</span>
</h3>
<span>txt</span>

<span><br></span>

<ul>
<li>
bullet<br>
</li>
<li>
list<br>
</li>
</ul>

运行 第二次对结果执行转换命令什么都不做。

尝试 2

pandoc -f markdown -t markdown_strict-native_divs-native_spans --atx-headers in.md -o out.md

结果

同上

尝试 3

pandoc -f markdown-markdown_in_html_blocks -t markdown_strict-native_divs-native_spans --atx-headers in.md -o out.md

结果

与上面相同,但换行符较少

尝试 4

pandoc -f markdown -t markdown_strict-native_divs-native_spans-raw_html --atx-headers in.md -o out.md

从结果中提取

删除所有 HTML 元素,但未应用 Markdown:

Heading 1
Text

Heading 2
Text

Heading 3
Text

Unordered bullet 1
Unordered bullet 2
Unordered bullet 3

其他

感谢您的任何想法或建议。

我的建议是先将整个文档转换成HTML,然后再将结果转换成你想要的Markdown格式:

pandoc --from=markdown --to=html in.md | \
    pandoc --from=html --to=markdown-raw_html-native_divs --output out.md

请注意,输入似乎包含无效的 HTML(例如,根据 HTML 标准,div 不得出现在 spancode 元素中), 所以嵌入的 HTML 并不完全代表它应该代表的意思。

人们还会注意到一些仅包含换行符的跨度,这使得输出看起来很难看。最好的解决方案是通过 pandoc filter.

删除它们