You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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过滤器来定制:

  1. 新建一个名为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
  1. 转换时引用这个过滤器:
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:57:45