如何防止org-mode执行所有babel源块?

时间:2015-04-29 19:12:36

标签: emacs org-mode org-babel

我有一个包含大量babel源块的组织文件,只需要在代码更改时重新执行。

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

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

3 个答案:

答案 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中可能有一些变化。