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

如何为Markdown中的原始HTML块包裹Hugo rawhtml短代码

完全可以通过pandoc过滤器实现,比正则表达式方案更稳定可靠,不会出现HTML边界匹配错误的问题。

推荐方案:内置Lua过滤器(无额外依赖)

pandoc原生支持Lua过滤器,不需要安装任何额外依赖,只需几行代码即可实现需求:

  1. 新建Lua脚本wrap-html.lua,内容如下:
function RawBlock(el)
  -- 仅识别原始HTML块
  if el.format == 'html' then
    return pandoc.RawBlock('markdown', '{{< rawhtml >}}\n' .. el.text .. '\n{{< /rawhtml >}}')
  end
end
  1. 执行pandoc转换时添加过滤器参数即可:
pandoc 输入文件.md -o 输出文件.md --lua-filter wrap-html.lua

替代方案:Python过滤器

如果你更习惯用Python,可以借助panflute库实现:

  1. 先安装依赖:
    pip install panflute
  2. 新建Python脚本wrap_html.py,内容如下:
import panflute as pf

def wrap_html(elem, doc):
    if isinstance(elem, pf.RawBlock) and elem.format == 'html':
        return pf.RawBlock(f'{{{{< rawhtml >}}}}\n{elem.text}\n{{{{< /rawhtml >}}}}', format='markdown')

if __name__ == "__main__":
    pf.run_filter(wrap_html)
  1. 转换时调用:
pandoc 输入文件.md -o 输出文件.md --filter wrap_html.py

和正则方案的对比

正则匹配HTML天生存在缺陷,遇到跨行标签、属性带特殊字符、嵌套结构的场景很容易出现匹配边界错误,把普通文本误判为HTML或者漏匹配HTML块。pandoc过滤器基于语法树识别真正的原始HTML块,准确率100%,适合处理复杂的文档场景。

内容的提问来源于stack exchange,提问作者Ildar Akhmetov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:12:02