可以选择只导出代码块的 代码 、代码块的执行 结果 、同时导出代码与结果,或都 不 导出。Org 对大多数语言默认导出 代码 ,对行内代码块默认导出 结果 。对于 ditaa 等部分语言,无论普通源块还是行内源块均默认导出 结果 。若仅导出代码块主体,参见 Literal Examples;若要选择性导出 Org 文档的子树,参见 Exporting。
‘exports’ 头部参数用于指定该部分 Org 内容是否导出为 HTML、LaTeX 等格式。
默认值。将代码主体加入导出文件。示例: ‘:exports code’ 。
将代码执行结果加入导出文件。示例: ‘:exports results’ 。
将代码与执行结果同时加入导出文件。示例: ‘:exports both’ 。
代码与执行结果均不加入导出文件。代码是否执行取决于其他选项。示例: ‘:exports none’ 。
若源块通过 ‘NAME’ 关键字命名,其执行结果也会继承该名称。这样,指向使用 ‘:exports results’ 导出的命名源块的模糊链接依然有效,并指向执行结果。
命名代码块的执行结果也可通过单独的 ‘NAME’ 关键字显式命名,该名称优先级高于父源块。
#+NAME: code name #+BEGIN_SRC emacs-lisp :exports both value (+ 1 2) #+END_SRC #+NAME: results name #+RESULTS: code name 3 This [[code name][link]] will point to the code block. Another [[results name][link]] will point to the results.
当命名代码块使用 ‘:exports both’ 导出时,显式设置结果名称可能是必要的。若结果没有独立名称,指向该块的链接可能随机指向代码块或其结果。
注意:所有指向使用 ‘:exports none’ 导出的源块的链接都会失效,这会导致导出过程失败,除非导出时允许失效链接(参见 Export Settings)。
出于速度或安全考虑,可禁止 Org 执行代码块:
org-export-use-babel 变量设为 nil ,但需注意此时头部参数将失效。
若执行结果未标记为导出( ‘:exports code’ 或 ‘:exports none’ ),即使设置 ‘:eval yes’ ,Org 也不会执行代码。唯一例外是使用 ‘:session’ 的代码块,这类块会根据 ‘:eval’ 头部参数执行。
关闭执行在批处理时十分有用。例如,Wiki 标记语言存在较高的不可信代码风险。停止代码块执行也会停止该块所有头部参数的求值,某些场景下这可能不符合预期。因此在导出时,若只允许头部参数量化而不执行源块中的代码,可设置 ‘:eval never-export’ (参见 Evaluating Code Blocks)。
Org 在导出时不会执行注释子树中的代码块(参见 Comment Lines);但会执行导出排除子树中的代码块(参见 Export Settings)。