TL; DR: Sử dụng thư viện babel liên tục được lưu trữ trong một tệp có thể là một thiết lập 3 bước đơn giản:
- Tạo một
org
tập tin -mode ~/.emacs.d/library-of-babel.org
.
- Thêm một dòng
(org-babel-lob-ingest "~/.emacs.d/library-of-babel.org")
vào conf Emacs của bạn.
- Thu thập các chức năng hữu ích trong tập tin đó, chúng sẽ được đọc trong quá trình khởi động emacs.
Tệp Thư viện-Babel là nơi ví dụ: aggregatebycol1
khối từ @mutbuerger sẽ được lưu vào.
Một trường hợp sử dụng ví dụ đơn giản khác sẽ có một khối mã, tạo dữ liệu bảng với một hàng tiêu đề, nhưng không đánh dấu tiêu đề bằng một 'hline
. Điều này không bi thảm đối với màn hình đơn giản, nhưng có thể khiến việc xử lý tự động hơn nữa được tham gia nhiều hơn. Giải pháp ở đây có thể là sử dụng một khối mã nhỏ để xử lý hậu kỳ từ một nơi nào đó trên internet:
#+name: addhdr
#+begin_src emacs-lisp :var tbl=""
(cons (car tbl) (cons 'hline (cdr tbl)))
#+end_src
Điều này chỉ đơn giản là dẫn qua dữ liệu trong khi nối 'hline
thành một hàng thứ hai.
Để sử dụng khối này sau trong các tệp org khác, chỉ cần thêm một :post
đoạn xử lý vào khối nguồn org tạo dữ liệu của bạn:
#+NAME: Example
#+BEGIN_SRC elisp :post addhdr(*this*)
'(("Header1" "Column2" "Three")("R1C1V" "2" "C3R1")("4" "5" "6"))
#+END_SRC
#+RESULTS: Example
| Header1 | Column2 | Three |
|---------+---------+-------|
| R1C1V | 2 | C3R1 |
| 4 | 5 | 6 |
Bạn cũng có thể dễ dàng cung cấp các bảng có sẵn cho các hàm trong LOB của mình:
#+NAME: ExData
| h1 | h2 |
| dh1r1 | dh2r1 |
| dh1r2 | dh2r2 |
#+CALL: addhdr(ExData)
Trong thư viện của tôi, tôi có các chương để tổ chức các loại chức năng khác nhau: Tạo dữ liệu, Lọc, PrettyPrinting, ... Chỉ cần nhớ ingest
lại sau khi thêm các khối mới.
org-babel-library-of-babel
. Khi tìm kiếm các khối nguồn, org-babel tìm trong tệp hiện tại cũng như danh sách được lưu trữ trong biến trên. Câu trả lời của @mutbuerger mô tả rất chi tiết tôi nghĩ.