library-of-babel.org
Orgのソースディレクトリにあるbabelのライブラリへの素晴らしい紹介があります。他のファイルで名前付きソースコードブロックの例を使用するには、org-babel-library-of-babel
変数に
#+begin_src elisp :results scalar
(org-babel-lob-ingest "/path/to/org-mode/doc/library-of-babel.org")
#+end_src
#+results:
: 21
21個のブロックの1つは「転置」と呼ばれ、おそらくそれが行うことになっていることを実行します。
#+name: tbl
| a | 1 |
| d | 2 |
| a | 3 |
| d | 4 |
| d | 5 |
| c | 6 |
#+begin_src elisp :results table :post transpose(table=*this*) :var var=tbl
var
#+end_src
#+results:
| a | d | a | d | d | c |
| 1 | 2 | 3 | 4 | 5 | 6 |
独自のコードブロックを追加することもできます。特に、将来多く使用するコードブロックを追加する可能性があります。例として、次の例では、名前付きテーブルの値を最初の列で集計できます。
#+name: aggregatebycol1
#+begin_src elisp :results table :var table='() fun='()
(let (res)
(mapc
(lambda (x)
(push `(,(car x) ,(apply fun (mapcar 'cadr (cdr x)))) res))
(seq-group-by 'car table))
(nreverse res))
#+end_src
ブロックを任意のファイルに保存し、次の場所に追加しますorg-babel-library-of-babel
。
#+begin_src elisp :results scalar
(org-babel-lob-ingest (buffer-file-name))
#+end_src
#+results:
: 1
#+header: :post aggregatebycol1(table=*this*, fun='+)
#+begin_src elisp :results table :var var=tbl
var
#+end_src
#+results:
| a | 4 |
| d | 11 |
| c | 6 |
org-babel-library-of-babel
。ソースブロックを探すとき、org-babelは現在のファイルと上記の変数に保存されているリストを探します。@mutbuergerの答えは詳細を非常によく説明していると思います。