org-babel の概要

org mode には org-babel という機能があり、orgファイルに書いたソースコードをその場で実行できる。

例えば org mode のファイルに python のソースコードを

#+BEGIN_SRC python :results output verbatim :exports both :eval no-export
def fact(n):
    if n == 0:
        return 1
    else:
        return n * fact(n - 1)

# 6! を出力する
print(fact(6))
#+END_SRC

というふうに書いたとする。 この状態からカーソルをソースコードの中に移動させて C-c C-c とすると python コードの実行され、以下のように実行結果が挿入される。

#+BEGIN_SRC python :results output verbatim :exports both :eval no-export
def fact(n):
    if n == 0:
        return 1
    else:
        return n * fact(n - 1)

# 6! を出力する
print(fact(6))
#+END_SRC

#+RESULTS:
: 720

この部分をエクスポートすると、

def fact(n):
    if n == 0:
        return 1
    else:
        return n * fact(n - 1)

# 6! を出力する
print(fact(6))
720

となる。

org-babel は python の他にも様々な言語に対応しているので、コードを含んだ文章を書くのが楽になる。