« ^ »

Emacsのorg-modeのcode blockのexportsオプションの挙動を確かめる

所要時間: 約 2分

org-modeはコードブロック( #+BEGIN_SRC*#+END_SRC* )でコードを囲むと org-babel を使って囲んだコードを実行できます。 また実行した結果(出力)をコードブロックの後ろに挿入してくれて非常に便利です。記述したorg-modeを他の形式にエクスポートする時にコードブロック又はその結果はそれぞれに含めたいときと含めたくない時があります。 例えばシェルスクリプトが記述されているならば、コードも結果も含めたいでしょう。しかし図形のソースをdot言語で記述していた場合は結果しか必要ないかもしれません。 プログラミング言語のサンプルコードならコードは含めたく結果はエクスポート対象に含めたくないが、テストのために実行してみたいかもしれません。 このような様々な要望に対応するためにorg-modeではエクスポート対象として含めるかを :exports ヘッダ引数を用いて制御できます。

:exports ヘッダ引数で指定できる値

:exports ヘッダ引数で指定できる値とその意味は以下のとおりです。

意味
codeコードブロックのみがエクスポートされます。ほとんどの言語のデフォルトです。
results結果のみがエクスポートされます。
bothコードブロックと結果の両方がエクスポートされます。
noneコードブロックと結果の両方ともエクスポートされません。

各値の挙動

では実際に挙動を見ていきましょう。全てのコードブロックは次のように記述して、それぞれ実行を済ませておきます。 値にはそれぞれ :exports で指定する値を入れてあります。

#+BEGIN_SRC sh :exports 値
echo 'use :exports 値
#+END_SRC

#+RESULTS:
: use :exports 値'

code - コードブロックのみエクスポート

echo 'use :exports code'

results - 結果のみエクスポート

use :exports results

both - コードブロックも結果もエクスポート

echo 'use :exports both'
use :exports both

none - コードブロックも結果もエクスポートしない

参考URL

https://orgmode.org/manual/Exporting-code-blocks.html