Чи є спосіб змусити режим Org ігнорувати блоки src при експорті до html?


13

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

Чи можна встановити змінну чи опцію, яка ігнорує блоки src?

Я спробував використовувати noexport, як показано нижче, але код все ще з'являється в отриманому HTML-файлі.

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

Дякую!


3
:exports noneповинен це зробити.
mutbuerger

2
@mutbuerger: Чи не могли б ви відповісти на це? Це дійсно є кращим рішенням. Його можна поєднувати з за замовчуванням аргументу заголовка, так що експорт всіх вихідних блоків може контролюватися лише одним налаштуванням, а не код коду emacs.
тимор

Відповіді:


11

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

Якщо ви віддаєте перевагу конкретному правилу резервного інтерфейсу, ви можете використовувати як аргумент умовне:

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

Хоча прийняте рішення працює, якщо всі блоки 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)

Замініть "[вилучений блок джерела]" порожнім рядком звичайно!


Це працює і в усьому світі, що чудово. Дякую!
Grassdog
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.