Führen Sie den src-Block beim Export im Organisationsmodus aus


7

Ich habe eine Art grundlegende Verwirrung über die Verwendung von src-Blöcken im org-Modus.

Ich definiere eine benutzerdefinierte Latexklasse in einem emacs-lisp src-Block oben in meiner Organisationsdatei. Der Export schlägt jedoch fehl, es sei denn, ich führe den src-Block manuell aus (da die erforderliche Latexklasse erst vorhanden ist, wenn der src-Block ausgeführt wird). Ich werde nicht zur Erlaubnis aufgefordert, den Block auszuführen.

Als minimales Beispiel habe ich versucht, Folgendes zu exportieren:

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

Beim Export sehe ich org-babel-exp processing...in meinem Nachrichtenpuffer, und ich würde erwarten, "Success"sofort danach zu sehen , aber ich nicht.

Mir fehlt eindeutig etwas Offensichtliches, aber aus den Informationen geht nicht hervor, was ich tun soll.


Die Codeblöcke werden nur ausgewertet, wenn Sie den Organisationsmodus ausdrücklich dazu auffordern . Das Snippet in Ihrem Beispiel wird einfach in einen Codeblock in dem von Ihnen gewählten Exportformat exportiert: PDF, HTML usw. Weitere Informationen zum Organisationsmodus und zu den Quellblöcken .
Kaushal Modi

1
Das war das fehlende Glied. Das Hinzufügen #+CALL: test()zum obigen Beispiel gab mir das erwartete Verhalten.
Jake

Antworten:


6

Die Codeblöcke werden nur ausgewertet, wenn Sie den Organisationsmodus ausdrücklich dazu auffordern . Das Snippet in Ihrem Beispiel wird einfach in einen Codeblock in dem von Ihnen gewählten Exportformat exportiert: pdf, html usw.

Mehr zu Org-Modus und Quellblöcken.

Hier ist die modifizierte Version Ihres Beispiels mit der erforderlichen #+CALL:Zeile und der Deklaration der lokalen Puffervariablen, um die Ausführung von emacs-lispSnippets als sicher zu markieren .

#+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:

2
Was genau macht der Code "Lokale Variable" wieder? Wofür ist das?
147 Uhr

@ 147pm - Mit der lokalen Variablen kann der emacs-lisp-Quellblock während des Exports ausgeführt werden, ohne den Benutzer zur Bestätigung aufzufordern. Führen Sie org-confirm-babel-evaluate: nilstattdessen die Bestätigung für alle Sprachen aus .
Melioratus
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.