我有一个 org 文件,其中包含许多 babel 源块,仅在更改代码时才需要重新执行。
如何防止组织在导出期间执行所有块?换句话说,将它们全部设置为仅手动执行?
我更喜欢单个全局选项,而不是必须单独编辑每个块。
变量org-export-babel-evaluate
,如果设置为nil
,将阻止任何代码作为导出过程的一部分进行评估。这样,只会导出手动执行插入的结果。
您可以通过将以下注释行放在 org 文件的顶部将其和其他人定义为文件变量:
# -*- org-export-babel-evaluate: nil -*-
您可以将 设置cache
为 yes(请参阅http://orgmode.org/manual/cache.html)。这也可以在文件中设置属性线以全局执行。
#+Property: header-args :cache yes
只需确保C-c C-c
在该行上激活该属性。
将变量 org-export-babel-evaluate 设置为 nil 将避免代码评估,但它也会导致所有源块头参数被忽略这意味着带有参数的代码块:exports none
或:exports results
将在导出中结束。这让我措手不及。
另一种方法是在文件的基础上使用 header 参数:eval never-export
,然后在重新运行源代码时删除该行:
#+PROPERTY: header-args :eval never-export
请参阅 org-babel-evaluate 的文档字符串:
在导出期间切换控制代码评估和标头处理。当设置为 nil 时,不会在导出过程中评估任何代码,并且不会遵守任何标头参数。希望避免在导出时评估代码的用户应使用标题参数“:eval never-export”。
放置以下内容后:
# -*- org-export-use-babel: nil;-*-
在文件的顶部,并执行抄送抄送,它对我不起作用。变量的值未相应设置。
但以下内容:
#+BIND: org-export-use-babel nil
使用 Cc Cc 按预期工作。
我在这里找到了答案:http: //joelmccracken.github.io/entries/org-mode-specifying-document-variables-and-keywords/
我正在使用的 emacs 26 中可能有一些变化。