TL; DR: L'utilisation d'une bibliothèque persistante de babel stockée dans un fichier peut être une configuration simple en 3 étapes:
- Créez un
org
fichier -mode ~/.emacs.d/library-of-babel.org
.
- Ajoutez une ligne
(org-babel-lob-ingest "~/.emacs.d/library-of-babel.org")
à votre conf Emacs.
- Collectez les fonctions utiles dans ce fichier, elles seront lues lors du démarrage d'emacs.
Le fichier Library-Of-Babel est l'endroit par exemple où le aggregatebycol1
bloc de @mutbuerger serait enregistré.
Un autre exemple d'utilisation simple serait d'avoir un bloc de code, qui génère des données de table avec une ligne d'en-tête, mais ne marque pas le headerrow avec un 'hline
. Ce n'est pas tragique pour un affichage simple, mais cela peut impliquer davantage de traitement automatisé. La solution ici pourrait être d'utiliser un petit bloc de code pour le post-traitement quelque part sur Internet:
#+name: addhdr
#+begin_src emacs-lisp :var tbl=""
(cons (car tbl) (cons 'hline (cdr tbl)))
#+end_src
Cela dirigera simplement les données tout en épissant dans une 'hline
deuxième ligne.
Pour utiliser ce bloc ultérieurement dans d'autres fichiers d'organisation, ajoutez simplement une :post
strophe de traitement à votre bloc source d'organisation générant des données:
#+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 |
Vous pouvez également facilement attribuer des tables préexistantes aux fonctions de votre LOB:
#+NAME: ExData
| h1 | h2 |
| dh1r1 | dh2r1 |
| dh1r2 | dh2r2 |
#+CALL: addhdr(ExData)
Dans ma bibliothèque, j'ai des chapitres pour organiser différents types de fonctionnalités: génération de données, filtrage, PrettyPrinting, ... N'oubliez pas de le ingest
refaire après avoir ajouté de nouveaux blocs.
org-babel-library-of-babel
. Lors de la recherche de blocs sources, org-babel recherche dans le fichier actuel ainsi que la liste stockée dans la variable ci-dessus. La réponse de @mutbuerger décrit très bien les détails, je pense.