C'è un modo per fare in modo che la modalità Org ignori i blocchi src quando si esporta in HTML?


12

Ho un documento organizzativo con blocchi di origine sparsi che vorrei escludere quando esporto il file in html.

C'è una variabile o un'opzione che posso impostare che ignorerà i blocchi src?

Ho provato a usare il noexport come mostrato di seguito ma il codice appare ancora nel HTML risultante.

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

Grazie!


3
:exports nonedovrebbe farlo.
Mutbuerger

2
@mutbuerger: potresti forse dare una risposta? È davvero la soluzione preferita. Può essere combinato con i valori predefiniti dell'argomento header, in modo che l'esportazione di tutti i blocchi di sorgenti possa essere controllata con una sola impostazione e senza codice emacs lisp.
Timor,

Risposte:


10

Una soluzione che non dipende da org-export-filter-src-block-functionse ti dà maggiore flessibilità sta usando l' :exportsargomento header (vedi (info "(org) Exporting code blocks")). L'impostazione dell'argomento su :exports nonenon comporta l'esportazione né del blocco di codice né dei suoi risultati.

Se si preferisce una regola specifica del back-end, è possibile utilizzare un condizionale come argomento:

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

Mentre la soluzione accettata funziona se è necessario escludere tutti i blocchi src in un file org, questa soluzione funziona se si devono escludere solo determinati blocchi src. Questo è più personalizzabile senza creare funzioni aggiuntive.
Utente Emacs il

! Neat Questo uso del codice lisp come valore dell'argomento header è documentato?
JeanPierre,

Non ne sono sicuro, ma uno sguardo lo org-babel-merge-paramsrende abbastanza ovvio. Per il :resultsc'è anche un esplicito (if (stringp value) value (eval value t))... per qualsiasi motivo.
Mutbuerger il

8

Sulla base della sezione 12.15 della documentazione dell'organizzazione:

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

Sostituisci "[blocco sorgente rimosso]" con una stringa vuota ovviamente!


Funziona anche a livello globale, il che è fantastico. Grazie!
Grassdog,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.