hcd*_*ocs 1 shell markdown pandoc
将带有 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
Run Code Online (Sandbox Code Playgroud)
我尝试了许多 Pandoc 脚本:
pandoc -f markdown -t markdown_strict --atx-headers in.md -o out.md
添加了换行符
无转换
<h3>
<span>H3</span>
</h3>
<span>txt</span>
<span><br></span>
Run Code Online (Sandbox Code Playgroud)
和
<ul>
<li>
bullet<br>
</li>
<li>
list<br>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
对结果再次运行转换命令没有任何作用。
pandoc -f markdown -t markdown_strict-native_divs-native_spans --atx-headers in.md -o out.md
和上面一样
pandoc -f markdown-markdown_in_html_blocks -t markdown_strict-native_divs-native_spans --atx-headers in.md -o out.md
同上,换行更少
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
Run Code Online (Sandbox Code Playgroud)
和
Unordered bullet 1
Unordered bullet 2
Unordered bullet 3
Run Code Online (Sandbox Code Playgroud)
我无法调整in.md
原来的生成方式。
Pandoc 不必成为解决方案的一部分。但是,使用 Pandoc 似乎很有意义,因为 (1) 转换需要由 Azure DevOps 发布管道执行,并且运行一个简单的命令非常适合该工作流,并且 (2) 所需的结果只是一个干净的 Markdown 文件。
我可以使用 Regex 编写解决方案脚本(并且,如果没有其他解决方案有意义的话),但是如果 Pandoc 命令(或其他解决方案)完成它,这似乎不太容易出现我的人为错误。
感谢您的任何想法或建议。
我的建议是先将完整文档转换为 HTML,然后将结果转换为您想要的 Markdown 格式:
pandoc --from=markdown --to=html in.md | \
pandoc --from=html --to=markdown-raw_html-native_divs --output out.md
Run Code Online (Sandbox Code Playgroud)
请注意,输入似乎包含无效的 HTML(例如,div
不得出现在符合 HTML 标准的span
或code
元素中),因此嵌入的 HTML 并不完全意味着它应有的含义。
人们还会注意到一些仅包含换行符的跨度,这使输出看起来很难看。最好的解决方案是通过pandoc 过滤器删除它们。
归档时间: |
|
查看次数: |
1264 次 |
最近记录: |