組織モードのエクスポートでsrcブロックを実行する


7

組織モードでsrcブロックを使用することに関して、ある種の基本的な混乱があります。

自分の組織ファイルの上部にあるemacs-lisp srcブロックでカスタムラテックスクラスを定義します。ただし、srcブロックを手動で実行しない限り、エクスポートは失敗します(srcブロックが実行されるまで必要なlatexクラスが存在しないため)。ブロックを実行する許可を求められません。

最小限の例として、これをエクスポートしてみました。

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

エクスポート時org-babel-exp processing...に、メッセージバッファーに表示されます"Success"が、その直後に表示されるはずですが、表示されません。

明らかなものは明らかに見当たらないが、何をすべきかという情報からははっきりしない。


コードブロックは、特にorg-modeに指示しない限り、評価されません。例のスニペットは、選択したエクスポート形式(pdf、htmlなど)のコードブロックに単純にエクスポートします。詳細については、org-modeブロックとsourceブロックをご覧ください
Kaushal Modi、2015

1
それはミッシングリンクでした。#+CALL: test()上記の例に追加すると、期待どおりの動作が得られました。
jake 2015年

回答:


6

コードブロックは、特にorg-modeに指示しない限り、評価されません。この例のスニペットは、選択したエクスポート形式(pdf、htmlなど)でコードブロックにエクスポートするだけです。

org-modeとsourceブロックの詳細。

これは、必要な#+CALL:行とemacs-lispスニペットの実行を安全であるとマークするためのバッファローカル変数宣言があるとよい、サンプルの修正バージョンです。

#+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
「ローカル変数」コードがもう一度何をしているのですか?それはなんのためですか?
2015年

@ 147pm-ローカル変数により、ユーザーに確認を求めずに、エクスポート中にemacs-lispソースブロックを実行できます。すべての言語の確認を無効にするには、org-confirm-babel-evaluate: nil代わりに行います。
Melioratus
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.