Чи є спосіб змусити режим 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.