TL; DR: Die Verwendung einer persistenten Bibliothek von Babel, die in einer Datei gespeichert ist, kann in drei Schritten erfolgen:
- Erstellen Sie eine
org
-mode-Datei ~/.emacs.d/library-of-babel.org
.
- Fügen Sie
(org-babel-lob-ingest "~/.emacs.d/library-of-babel.org")
Ihrem Emacs conf eine Zeile hinzu.
- Sammeln Sie nützliche Funktionen in dieser Datei, sie werden beim Start von emacs gelesen.
In der Library-Of-Babel-Datei wird zB der aggregatebycol1
Block von @mutbuerger gespeichert.
Ein weiterer einfacher Anwendungsbeispiel wäre ein Codeblock, der Tabellendaten mit einer Kopfzeile generiert, die Kopfzeile jedoch nicht mit einem markiert 'hline
. Dies ist für eine einfache Anzeige nicht tragisch, kann jedoch die weitere automatisierte Verarbeitung komplizierter machen. Die Lösung könnte darin bestehen, einen kleinen Codeblock für die Nachbearbeitung von irgendwo im Internet aus zu verwenden:
#+name: addhdr
#+begin_src emacs-lisp :var tbl=""
(cons (car tbl) (cons 'hline (cdr tbl)))
#+end_src
Dadurch werden die Daten einfach weitergeleitet, während in einer 'hline
zweiten Zeile gespleißt wird.
Um diesen Block später in anderen Organisationsdateien zu verwenden, fügen Sie :post
Ihrem datengenerierenden Organisationsquellenblock einfach eine Zeilengruppe -processing hinzu:
#+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 |
Sie können Funktionen in Ihrem LOB auch problemlos bereits vorhandene Tabellen zuweisen:
#+NAME: ExData
| h1 | h2 |
| dh1r1 | dh2r1 |
| dh1r2 | dh2r2 |
#+CALL: addhdr(ExData)
In meiner Bibliothek habe ich Kapitel, um verschiedene Arten von Funktionen zu organisieren: Datengenerierung, Filterung, PrettyPrinting, ... Denken Sie daran, ingest
nach dem Hinzufügen neuer Blöcke erneut zu arbeiten.
org-babel-library-of-babel
. Bei der Suche nach Quellblöcken sucht org-babel in der aktuellen Datei sowie in der Liste, die in der obigen Variablen gespeichert ist. Die Antwort von @mutbuerger beschreibt die Details meiner Meinung nach sehr gut.