使用Pandoc转换Markdown至HTML:<pre>元素抗压缩问题
解决Pandoc代码块转HTML的格式问题
嘿,我知道你在用Pandoc把Markdown转成HTML时,发现代码片段被转换成带sourceCode类的<pre>复杂结构了——这确实不是所有人都想要的效果。我给你几个实用的解决办法:
方法1:直接关闭语法高亮
如果不需要代码的语法高亮效果,只想得到简洁的<pre><code>结构,只需要在转换命令里加上--no-highlight参数就行:
pandoc in.md -f markdown -t html --no-highlight -o out.html
这样转换后的代码块就会是最基础的纯文本代码结构,不会带任何额外的类名和样式标记。
方法2:自定义代码块输出格式
要是想保留语法高亮,但想调整HTML结构(比如改成符合Prism、Highlight.js这类工具的格式),可以用Pandoc的Lua过滤器来定制:
- 新建一个名为
code-block-filter.lua的文件,写入以下代码:
function CodeBlock(block) local lang = block.classes[1] or '' local code = pandoc.utils.stringify(block) return pandoc.RawBlock('html', string.format('<pre><code class="language-%s">%s</code></pre>', lang, code)) end
- 转换时引用这个过滤器:
pandoc in.md -f markdown -t html --lua-filter=code-block-filter.lua -o out.html
这样输出的代码块会变成<pre><code class="language-json">这种结构,完美适配主流的前端代码高亮工具。
方法3:直接在Markdown里写原生HTML
如果只是处理个别代码块,也可以跳过Markdown代码块语法,直接在文件里写原生HTML:
<pre><code>{ "pageNumber": 1, "pageCount": 12, "nextPage": 2, "pageSize": 25, "totalCount": 298, "page": [ { ...item... }, { ...item... }, { ...item... } ] }</code></pre>
Pandoc会直接保留这段HTML,不会做额外的转换处理。
内容的提问来源于stack exchange,提问作者Radek Skokan
相关产品推荐
相关产品推荐

