我有一个包含大量babel源块的组织文件,只需要在代码更改时重新执行。
如何在导出期间阻止org执行所有块?换句话说,只将它们全部设置为手动执行?
我更喜欢单个全局选项,而不是必须单独编辑每个块。
答案 0 :(得分:15)
变量org-export-babel-evaluate
(如果设置为nil
)将阻止任何代码作为导出过程的一部分进行评估。这样,只会导出通过手动执行插入的结果。
您可以将以下注释行放在org文件的顶部作为file variable来定义它和其他人:
# -*- org-export-babel-evaluate: nil -*-
答案 1 :(得分:3)
将变量org-export-babel-evaluate设置为nil可以避免代码评估,但是也会导致所有源块头参数被忽略,这意味着具有参数:exports none
或{{1 }}将最终导出。这让我措手不及。
另一种方法是基于文件使用头参数:exports results
,然后在重新运行源代码时删除该行:
:eval never-export
请参阅org-babel-evaluate的文档字符串:
在导出期间切换控制代码评估和标头处理。 设置为nil时,将不评估任何代码作为导出的一部分 进程,并且不会遵循任何标头参数。希望的用户 为了避免在导出时评估代码,应使用header参数 ‘:eval never-export’。
答案 2 :(得分:1)
放置以下内容后:
# -*- 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 25中可能有一些变化。