Czy istnieje sposób, aby tryb Org ignorował bloki src podczas eksportowania do HTML?

13

Mam dokument organizacji z rozproszonymi blokami źródłowymi, które chciałbym wykluczyć podczas eksportowania pliku do HTML.

Czy istnieje zmienna lub opcja, którą mogę ustawić, która zignoruje bloki src?

Próbowałem użyć Noexport, jak pokazano poniżej, ale kod nadal pojawia się w wynikowym pliku HTML.

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

Dzięki!

Grassdog
źródło
3
:exports nonepowinien to zrobić.
mutbuerger
2
@mutbuerger: Czy mógłbyś na to odpowiedzieć? To naprawdę jest preferowane rozwiązanie. Można go łączyć z wartościami domyślnymi argument-nagłówek, dzięki czemu eksport wszystkich bloków źródłowych może być kontrolowany za pomocą tylko jednego ustawienia, bez kodu Lisp emacsa.
timor

Odpowiedzi:

11

Rozwiązaniem, które nie zależy org-export-filter-src-block-functionsi daje większą elastyczność, jest użycie :exportsargumentu nagłówka (patrz (info "(org) Exporting code blocks")). Ustawienie argumentu na :exports nonewynik nie powoduje wyeksportowania bloku kodu ani jego wyników.

Jeśli wolisz regułę specyficzną dla backendu, możesz użyć warunku jako argumentu:

#+begin_src elisp :exports (when (eq org-export-current-backend 'html) "none")
(+ 1 2)
#+end_src
mutbuerger
źródło
Chociaż zaakceptowane rozwiązanie działa, jeśli wszystkie bloki src w pliku org muszą zostać wykluczone, to rozwiązanie działa, jeśli mają zostać wykluczone tylko niektóre bloki src. Jest to bardziej konfigurowalne bez tworzenia dodatkowych funkcji.
Użytkownik Emacsa
Schludny! Czy to użycie kodu lisp jako wartości argumentu nagłówka jest udokumentowane?
JeanPierre
Nie jestem pewien, ale spojrzenie na org-babel-merge-paramsto czyni to dość oczywistym. Bo :resultsjest nawet wyraźne (if (stringp value) value (eval value t))... z jakiegokolwiek powodu.
mutbuerger
9

Na podstawie sekcji 12.15 dokumentacji org:

(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)

Zamień „[usunięty blok źródłowy]” oczywiście na pusty ciąg!

Jean Pierre
źródło
Działa to również globalnie, co jest świetne. Dzięki!
Grassdog