【发布时间】:2015-04-29 19:12:35
【问题描述】:
我有一个 org 文件,里面有很多 babel 源代码块,只需要在代码更改时重新执行。
如何防止组织在导出期间执行所有块?换句话说,将它们全部设置为仅手动执行?
我更喜欢单个全局选项,而不是必须单独编辑每个块。
【问题讨论】:
我有一个 org 文件,里面有很多 babel 源代码块,只需要在代码更改时重新执行。
如何防止组织在导出期间执行所有块?换句话说,将它们全部设置为仅手动执行?
我更喜欢单个全局选项,而不是必须单独编辑每个块。
【问题讨论】:
变量org-export-babel-evaluate,如果设置为nil,将阻止任何代码在导出过程中被评估。这样只会导出手动执行插入的结果。
您可以通过将以下注释行放在您的 org 文件顶部将其和其他人定义为 file variable:
# -*- org-export-babel-evaluate: nil -*-
【讨论】:
您可以将cache 设置为yes(请参阅http://orgmode.org/manual/cache.html)。这也可以在文件中设置属性线以全局执行。
#+Property: header-args :cache yes 只需确保在该行上 C-c C-c 即可激活该属性。
【讨论】:
#+PROPERTY: header-args :cache yes
将变量 org-export-babel-evaluate 设置为 nil 将避免代码评估,但也会导致所有源块头参数被忽略这意味着带有参数 :exports none 或 :exports results 的代码块将结束在出口。这让我措手不及。
另一种方法是在文件基础上使用标题参数:eval never-export,然后在重新运行源代码时删除该行:
#+PROPERTY: header-args :eval never-export
查看 org-babel-evaluate 的文档字符串:
在导出期间控制代码评估和标头处理的开关。 当设置为 nil 时,不会评估任何代码作为导出的一部分 过程,并且不会遵守任何标题参数。希望的用户 为避免在导出时评估代码,应使用 header 参数 ‘:eval 从不导出’。
【讨论】:
放置以下内容后:
# -*- 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 可能有一些变化。
【讨论】:
org-export-use-babel 的文档说Users who wish to avoid evaluating code on export should use the header argument ‘:eval never-export’.