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
orgfichier -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 aggregatebycol1bloc 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 'hlinedeuxième ligne.
Pour utiliser ce bloc ultérieurement dans d'autres fichiers d'organisation, ajoutez simplement une :poststrophe 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 ingestrefaire 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.