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 の他にも様々な言語に対応しているので、コードを含んだ文章を書くのが楽になる。