Есть ли способ заставить режим Org игнорировать блоки src при экспорте в html?

13

У меня есть документ org с разбросанными исходными блоками, которые я бы хотел исключить при экспорте файла в html.

Есть ли переменная или опция, которую я могу установить, которая будет игнорировать блоки src?

Я попытался использовать noexport, как показано ниже, но код все еще появляется в результирующем HTML.

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

Благодарность!

Grassdog
источник
3
:exports noneдолжен сделать это.
Mutbuerger
2
@mutbuerger: Не могли бы вы сделать ответ из этого? Это действительно предпочтительное решение. Его можно комбинировать со значениями по умолчанию для аргумента заголовка, так что экспорт всех исходных блоков может контролироваться только одним параметром и без кода emacs lisp.
Тимор

Ответы:

11

Решение, которое не зависит org-export-filter-src-block-functionsи дает вам больше гибкости, использует :exportsаргумент header (см. (info "(org) Exporting code blocks")). Установка аргумента в значение :exports noneприводит к тому, что ни блок кода, ни его результаты не экспортируются.

Если вы предпочитаете специфичное для бэкенда правило, вы можете использовать условное в качестве аргумента:

#+begin_src elisp :exports (when (eq org-export-current-backend 'html) "none")
(+ 1 2)
#+end_src
mutbuerger
источник
Хотя принятое решение работает, если все блоки src в файле org необходимо исключить, это решение работает, если исключить только определенные блоки src. Это более настраиваемый без создания дополнительных функций.
Пользователь Emacs
Ухоженная! Задокументировано ли это использование кода lisp в качестве значения аргумента заголовка?
ЖанПьер
Я не уверен, но взгляд на org-babel-merge-paramsэто делает это довольно очевидным. Ибо :resultsесть даже явное (if (stringp value) value (eval value t))... по какой-то причине.
Mutbuerger
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)

Замените «[удаленный исходный блок]» на пустую строку, конечно!

JeanPierre
источник
Это работает и во всем мире, и это здорово. Благодарность!
Grassdog