Existe uma maneira de fazer com que o modo Org ignore os blocos src ao exportar para html?

12

Eu tenho um documento organizacional disperso com blocos de origem que eu gostaria de excluir quando exportar o arquivo para html.

Existe uma variável ou opção que eu possa definir que ignorará os blocos src?

Eu tentei usar o noexport, como mostrado abaixo, mas o código ainda aparece no html resultante.

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

Obrigado!

Grassdog
fonte
3
:exports nonedeve fazê-lo.
mutbuerger
2
@mutbuerger: Você poderia dar uma resposta a isso? É realmente a solução preferida. Ele pode ser combinado com os padrões de argumento de cabeçalho, para que a exportação de todos os blocos de origem possa ser controlada com apenas uma configuração e nenhum código emacs lisp.
timor

Respostas:

10

Uma solução que não depende org-export-filter-src-block-functionse oferece mais flexibilidade é usar o :exportsargumento do cabeçalho (consulte (info "(org) Exporting code blocks")). Definir o argumento para :exports noneresultar em nenhum bloco de código nem em seus resultados sendo exportados.

Se você preferir uma regra específica de back-end, poderá usar uma condicional como argumento:

#+begin_src elisp :exports (when (eq org-export-current-backend 'html) "none")
(+ 1 2)
#+end_src
mutbuerger
fonte
Embora a solução aceita funcione se todos os blocos src em um arquivo organizacional precisarem ser excluídos, essa solução funcionará se apenas alguns blocos src forem excluídos. Isso é mais personalizável sem criar funções adicionais.
Emacs usuário
Arrumado! Esse uso do código lisp como valor do argumento do cabeçalho está documentado?
JeanPierre
Não tenho certeza, mas uma olhada org-babel-merge-paramstorna isso bastante óbvio. Pois :resultsexiste até um explícito (if (stringp value) value (eval value t))... por qualquer motivo.
mutbuerger
8

Com base na seção 12.15 da documentação organizacional:

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

Substitua "[bloco de origem removido]" por uma sequência vazia, é claro!

Jean Pierre
fonte
Isso funciona globalmente também, o que é ótimo. Obrigado!
Grassdog