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

sha*_*der 10 emacs org-mode org-babel

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

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

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

Jon*_*Jin 15

org-export-babel-evaluate如果设置为变量,nil则会阻止任何代码作为导出过程的一部分进行评估.这样,只会导出通过手动执行插入的结果.

您可以通过在组织文件的顶部放置以下注释行来将其定义为其他文件作为文件变量:

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

  • org-export-babel-evaluate 已弃用。使用 org-export-use-babel (2认同)

bri*_*son 7

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


小智 6

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

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

#+PROPERTY: header-args :eval never-export
Run Code Online (Sandbox Code Playgroud)

请参阅 org-babel-evaluate 的文档字符串:

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


Yu *_*hen 5

放置以下内容后:

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

在文件顶部,并执行抄送抄送,它对我不起作用。变量的值没有相应地设置。

但以下情况:

#+BIND: org-export-use-babel nil
Run Code Online (Sandbox Code Playgroud)

使用 Cc Cc 应用程序可以按预期工作。

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

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

  • emacs 26.1 中的 org-export-use-babel 文档表示,希望避免在导出时评估代码的用户应使用标头参数 ':eval never-export'。 (4认同)