Executar bloco src na exportação do modo organizacional

7

Eu tenho algum tipo de confusão fundamental sobre o uso de blocos src no modo organizacional.

Defino uma classe de látex personalizada em um bloco emacs-lisp src na parte superior do meu arquivo organizacional. A exportação falha no entanto, a menos que eu execute manualmente o bloco src (porque a classe de látex necessária não existe até que o bloco src seja executado). Não me pedem permissão para executar o bloco.

Como um exemplo mínimo, tentei exportar isso:

#+name: test
#+begin_src emacs-lisp
(message "Success")
#+end_src

Na exportação, vejo org-babel-exp processing...no buffer de minhas mensagens e esperaria ver "Success"imediatamente depois, mas não vejo.

Estou claramente perdendo algo óbvio, mas não está claro para mim as informações sobre o que devo fazer.

Jake
fonte
Os blocos de código não são avaliados, a menos que você diga especificamente ao org-mode para fazê-lo . O snippet no seu exemplo simplesmente exportará para um bloco de código no formato de exportação escolhido: pdf, html, etc. Mais sobre o modo organizacional e os blocos de origem .
precisa saber é o seguinte
11
Esse foi o link que faltava. Adicionar #+CALL: test()ao exemplo acima me deu o comportamento esperado.
jake

Respostas:

6

Os blocos de código não são avaliados, a menos que você diga especificamente ao org-mode para fazê-lo . O snippet no seu exemplo simplesmente exportará para um bloco de código no formato de exportação escolhido: pdf, html etc.

Mais sobre modo org e blocos de origem.

Aqui está a versão modificada do seu exemplo com a #+CALL:linha necessária e o bom de ter uma declaração de variável local de buffer para marcar a execução de emacs-lisptrechos como segura.

#+NAME: test
#+BEGIN_SRC emacs-lisp
(message "Success")
#+END_SRC

#+CALL: test()

# Local Variables:
# org-confirm-babel-evaluate: (lambda (lang body) (not (string= lang "emacs-lisp")))
# End:
Kaushal Modi
fonte
2
O que exatamente o código "Variável local" está fazendo novamente? Para que serve?
147pm 10/11
@ 147pm - A variável local permite que o bloco de origem emacs-lisp seja executado durante a exportação sem solicitar confirmação ao usuário. Para desativar a confirmação para todos os idiomas, faça-o org-confirm-babel-evaluate: nil.
Melioratus 27/05