【问题标题】:How to parse org-mode by org-element elegantly如何优雅地通过 org-element 解析 org-mode
【发布时间】:2013-06-20 08:31:23
【问题描述】:

org-elementorg-mode 的一个新模块,我认为它对解析 org 文件有好处,不想用 match-string 用旧的方式解析它。但是玩了几个小时,我不得不承认我对org-mode的经验不够,请高手给我一些线索,非常感谢!

我的要求很简单,我想得到所有的标题和内容。

* headline

:PROPERTIES

** subheadline

content1

** subheadline

content2

【问题讨论】:

  • 实际上有什么要求? (let ((parsetree (org-element-parse-buffer 'headline))) (org-element-map parsetree 'headline (lambda (hl) (org-element-property :title hl)))) 之类的东西会让你所有标题的标题。
  • 谢谢,那如何获取一个标题的内容呢?
  • 这个要求对我来说还不是很清楚。假设您的文档中有代码块,这是否意味着成为内容的一部分?桌子呢?也可能是您想要的只是一个 org-to-text 导出器。
  • 是的,我想分别提取标题、副标题、内容。这意味着 fun1() 返回所有标题, fun2(headline) 返回其副标题, fun3(subheadline) 返回其内容。

标签: parsing emacs org-mode


【解决方案1】:

根据@YoungFrog 的提示:

  • 获取所有头条新闻:

    (let ((parsetree (org-element-parse-buffer 'headline))) 
      (org-element-map parsetree 'headline 
                       (lambda (hl) (org-element-property :title hl)))) 
    
  • 获取所有内容:

    (let ((parsetree (org-element-parse-buffer 'paragraph)))
      (org-element-map parsetree 'paragraph 
                       (lambda (hl) (org-element-interpret-data hl))))
    

【讨论】:

  • 使用 OP 的 MWE,获取所有内容的代码不适用于 Org 9.4。你能更新代码吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多