【问题标题】:How do I prevent org-mode from executing all of the babel source blocks?如何防止 org-mode 执行所有 babel 源代码块?
【发布时间】:2015-04-29 19:12:35
【问题描述】:

我有一个 org 文件,里面有很多 babel 源代码块,只需要在代码更改时重新执行。

如何防止组织在导出期间执行所有块?换句话说,将它们全部设置为仅手动执行?

我更喜欢单个全局选项,而不是必须单独编辑每个块。

【问题讨论】:

    标签: emacs org-mode org-babel


    【解决方案1】:

    变量org-export-babel-evaluate,如果设置为nil,将阻止任何代码在导出过程中被评估。这样只会导出手动执行插入的结果。

    您可以通过将以下注释行放在您的 org 文件顶部将其和其他人定义为 file variable

    # -*- org-export-babel-evaluate: nil -*-

    【讨论】:

    • org-export-babel-evaluate 已弃用。使用 org-export-use-babel
    【解决方案2】:

    您可以将cache 设置为yes(请参阅http://orgmode.org/manual/cache.html)。这也可以在文件中设置属性线以全局执行。 #+Property: header-args :cache yes 只需确保在该行上 C-c C-c 即可激活该属性。

    【讨论】:

    • 这很有用,但如果我想完全阻止所有自动评估怎么办?
    • 不确定我是否关注。假设所有代码都至少执行过一次,那么设置该属性将全局阻止所有重新执行。您可以在手册中找到它,但我相信缓冲区通用版本的“官方”行是:#+PROPERTY: header-args :cache yes
    • @brittAnderson 至少在我的情况下发生的事情是,即使使用缓存是的,当您使用 C-c C-e 熟练操作时,它会要求评估您的 org 文件中的所有代码块。
    • 添加此属性后,您是否通过在标题中执行 C-c C-c 来刷新标题?
    【解决方案3】:

    将变量 org-export-babel-evaluate 设置为 nil 将避免代码评估,但也会导致所有源块头参数被忽略这意味着带有参数 :exports none:exports results 的代码块将结束在出口。这让我措手不及。

    另一种方法是在文件基础上使用标题参数:eval never-export,然后在重新运行源代码时删除该行:

    #+PROPERTY: header-args :eval never-export
    

    查看 org-babel-evaluate 的文档字符串:

    在导出期间控制代码评估和标头处理的开关。 当设置为 nil 时,不会评估任何代码作为导出的一部分 过程,并且不会遵守任何标题参数。希望的用户 为避免在导出时评估代码,应使用 header 参数 ‘:eval 从不导出’。

    【讨论】:

      【解决方案4】:

      放置以下内容后:

      # -*- org-export-use-babel: nil;-*-

      在文件的顶部,并执行 C-c C-c,它对我不起作用。变量的值未相应设置。

      但是如下:

      #+BIND: org-export-use-babel nil
      

      使用 C-c C-c 按预期工作。

      我在这里找到了答案:http://joelmccracken.github.io/entries/org-mode-specifying-document-variables-and-keywords/

      我正在使用的 emacs 26 可能有一些变化。

      【讨论】:

      • emacs 26.1 中org-export-use-babel 的文档说Users who wish to avoid evaluating code on export should use the header argument ‘:eval never-export’.
      • > 要使此更改生效,请使用 M-x revert-buffer 重新访问文件,请参阅stackoverflow.com/questions/20033467/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多