如何阻止 org-mode 执行所有 babel 源代码块?

问题描述 投票:0回答:5

我有一个org文件,里面有很多babel源代码块,只需要在代码更改时重新执行。

如何防止 org 在导出过程中执行所有块?也就是说,全部设置为手动执行?

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

emacs org-mode org-babel
5个回答
26
投票

变量

org-export-babel-evaluate
,如果设置为
nil
,将阻止在导出过程中评估任何代码。这样,只有手动执行插入的结果才会被导出。

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

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


16
投票

将变量 org-export-babel-evaluate 设置为 nil 将避免代码评估,但它也会导致所有源块头参数被忽略这意味着带有参数

:exports none
:exports results
的代码块最终将在出口。 这让我措手不及。

另一种方法是在文件的基础上使用标头参数

:eval no-export
,然后在重新运行源代码时删除该行:

#+PROPERTY: HEADER-ARGS+ :eval no-export

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

导出期间控制代码评估和标头处理的开关。 当设置为 nil 时,导出过程中不会评估任何代码 过程并且不会遵守任何标头参数。 想要的用户 为避免在导出时评估代码,应使用标头参数 ‘:eval从不导出’。


9
投票

您可以将

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


5
投票

放置以下内容后:

# -*- 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 可能有一些变化。


0
投票

这意味着带有参数 :exports none 或 :exports 结果的代码块将最终出现在导出中。这让我措手不及。

避免这种情况的一种方法是将其隐藏在 css 中,您可以检查 html 中的代码块并查看其中的类

那么你就可以

.src {
  display: none;
}

或其他特定类别

© www.soinside.com 2019 - 2024. All rights reserved.