Je veux comprendre le fonctionnement de la bibliothèque de Babel d'org-babel. On dirait un outil puissant mais sous-utilisé.
La documentation dit que je peux
ajoutez du code à la bibliothèque, en enregistrant d'abord le code dans des blocs de code «src» normaux d'un fichier Org, puis chargez le fichier Org avec org-babel-lob-ingest, qui est lié à Cc Cv i.
Qu'est-ce que ça org-babel-lob-ingest
fait vraiment? Il ajoute simplement tous les blocs sources d'un fichier d'organisation à un autre fichier?
Et quels sont les cas d'utilisation de cela? Puis-je voir ce que j'ai dans ma bibliothèque de manière interactive? Puis-je utiliser la syntaxe noweb avec des blocs source dans la bibliothèque? Que dois-je faire pour commencer à l'utiliser?
Tous les exemples et liens vers des tutoriels sont les bienvenus.
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.Réponses:
Il y a une belle introduction à la bibliothèque de babel dans
library-of-babel.org
laquelle se trouve le répertoire source d'Org. Pour utiliser ces exemples de blocs de code source nommés dans d'autres fichiers, remplissez laorg-babel-library-of-babel
variable avecL'un des 21 blocs est nommé «transposer» et fait probablement ce qu'il est censé faire:
Vous pouvez également ajouter vos propres blocs de code, en particulier quelque chose que vous pourriez utiliser beaucoup à l'avenir. À titre d'exemple, ce qui suit me permet d'agréger les valeurs de la table nommée par la première colonne:
Enregistrez le bloc dans n'importe quel fichier et ajoutez-le à
org-babel-library-of-babel
:la source
TL; DR: L'utilisation d'une bibliothèque persistante de babel stockée dans un fichier peut être une configuration simple en 3 étapes:
org
fichier -mode~/.emacs.d/library-of-babel.org
.(org-babel-lob-ingest "~/.emacs.d/library-of-babel.org")
à votre conf 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: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:Vous pouvez également facilement attribuer des tables préexistantes aux fonctions de votre LOB:
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.la source