有没有一种方法可以使组织模式在导出为html时忽略src块?


13

我有一个散布有源代码块的组织文档,当我将文件导出到html时我想排除这些源代码块。

我可以设置一个变量或选项来忽略src块吗?

我尝试使用如下所示的noexport,但是代码仍出现在结果html中。

#+BEGIN_SRC json :noexport:
{ ... }
#+END_SRC

谢谢!


3
:exports none应该这样做。
mutbuerger 2015年

2
@mutbuerger:您能否从中做出答案?确实是首选解决方案。可以将其与标头参数默认值结合使用,以便仅使用一种设置即可控制所有源块的导出,而无需使用emacs lisp代码。
帝汶

Answers:


11

一个不依赖org-export-filter-src-block-functions并为您提供更大灵活性的解决方案是使用:exportsheader参数(请参阅参考资料(info "(org) Exporting code blocks"))。将参数设置为:exports none既不会导出代码块,也不会导出结果。

如果您喜欢后端特定的规则,则可以使用条件作为参数:

#+begin_src elisp :exports (when (eq org-export-current-backend 'html) "none")
(+ 1 2)
#+end_src

尽管如果需要排除组织文件中的所有src块,则可接受的解决方案有效,但是,如果仅要排除某些src块,则此解决方案有效。无需创建其他功能即可进行更多自定义。
Emacs用户

整齐!是否已将Lisp代码用作标题参数值记录了?
JeanPierre,2016年

我不确定,但是看一下就org-babel-merge-params可以很明显地看出来。出于某种原因,:results甚至还有一个明确的(if (stringp value) value (eval value t))...。
mutbuerger 2013年

9

基于组织文档的第12.15节:

(defun my-html-filter-src-blocks (text backend info)
  "Remove source blocks from html export."
  (when (org-export-derived-backend-p backend 'html)
    "[removed source block]"))

(add-to-list 'org-export-filter-src-block-functions
         'my-html-filter-src-blocks)

当然,用空字符串替换“ [已删除的源块]”!


这在全球范围内也很有效。谢谢!
Grassdog
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.