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

Org Mode导出过滤时如何获取src代码块的语言?

解决Org导出过滤器中获取代码块语言的问题
  • 问题根源:你之前的代码无效,是因为org-export-filter-src-block-functions的第一个参数code并不是Org代码块元素对象,而是导出流程中已经处理好的代码内容字符串,所以用org-element-property去读取它的:language属性肯定拿不到值。

  • 语言信息的位置:代码块的语言信息确实在info参数里,这个参数是一个属性列表(plist),其中:context键对应的就是当前正在处理的Org代码块元素对象。

  • 修正后的代码:

(defun pygments-org-html-code (content backend info)
  (when (org-export-derived-backend-p backend 'html)
    (let* ((src-block (plist-get info :context))
           (lang (org-element-property :language src-block)))
      (message "The src block's language: %s" lang)))
  content) ; 必须返回处理后的内容,否则会清空代码块输出

(add-to-list 'org-export-filter-src-block-functions
             'pygments-org-html-code)
  • 关键说明:
    • 函数第一个参数改名为content更准确,它是代码块的内容字符串,最后必须返回它,否则导出后的代码块会是空的。
    • 通过(plist-get info :context)拿到真正的Org代码块元素。
    • 再用org-element-property :language读取语言属性,就能正确输出了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:53:12