Existe-t-il un moyen de faire en sorte que le mode Org ignore les blocs src lors de l'exportation en html?


13

J'ai un document d'organisation avec des blocs source éparpillés que j'aimerais exclure lorsque j'exporte le fichier en html.

Y a-t-il une variable ou une option que je peux définir qui ignorera les blocs src?

J'ai essayé d'utiliser le noexport comme indiqué ci-dessous mais le code apparaît toujours dans le code HTML résultant.

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

Merci!


3
:exports nonedevrait le faire.
mutbuerger

2
@mutbuerger: Pourriez-vous peut-être y répondre? C'est vraiment la solution préférée. Il peut être combiné avec les valeurs par défaut des arguments d'en-tête, de sorte que l'exportation de tous les blocs source peut être contrôlée avec un seul paramètre et sans code lisp emacs.
timor

Réponses:


11

Une solution qui ne dépend pas org-export-filter-src-block-functionset vous donne plus de flexibilité utilise l' :exportsargument d'en-tête (voir (info "(org) Exporting code blocks")). Si l'argument est :exports nonedéfini, ni le bloc de code ni ses résultats ne sont exportés.

Si vous préférez une règle spécifique au backend, vous pouvez utiliser un conditionnel comme argument:

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

Bien que la solution acceptée fonctionne si tous les blocs src d'un fichier org doivent être exclus, cette solution fonctionne si seuls certains blocs src doivent être exclus. Ceci est plus personnalisable sans créer de fonctions supplémentaires.
Utilisateur Emacs

Soigné! Cette utilisation du code lisp comme valeur d'argument d'en-tête est-elle documentée?
JeanPierre

Je ne suis pas sûr, mais un coup d'œil org-babel-merge-paramsrend cela assez évident. Pour le :resultsil y a même un explicite (if (stringp value) value (eval value t))... pour quelque raison que ce soit.
mutbuerger

9

Basé sur la section 12.15 de la documentation de l'organisation:

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

Remplacez "[bloc source supprimé]" par une chaîne vide bien sûr!


Cela fonctionne aussi à l'échelle mondiale, ce qui est génial. Merci!
Grassdog
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.