Quiero entender cómo funciona la Biblioteca de Babel de org-babel. Parece una herramienta poderosa pero infrautilizada.
La documentación dice que puedo
agregue código a la biblioteca, primero guarde el código en bloques de código 'src' regulares de un archivo Org, y luego cargue el archivo Org con org-babel-lob-ingest, que está vinculado a Cc Cv i.
¿Qué está org-babel-lob-ingest
haciendo eso realmente? ¿Solo está agregando todos los bloques de origen dentro de un archivo de organización a otro archivo?
¿Y cuáles son los casos de uso de esto? ¿Puedo ver lo que tengo en mi biblioteca de forma interactiva? ¿Puedo usar la sintaxis de noweb con bloques fuente dentro de la Biblioteca? ¿Qué debo hacer para comenzar a usarlo?
Cualquier ejemplo y enlaces a tutoriales son bienvenidos.
org-babel-library-of-babel
. Al buscar bloques de origen, org-babel busca en el archivo actual y en la lista almacenada en la variable anterior. La respuesta de @mutbuerger describe muy bien los detalles, creo.Respuestas:
Hay una buena introducción a la biblioteca de babel
library-of-babel.org
que se encuentra en el directorio fuente de Org. Para usar esos ejemplos de bloques de código fuente con nombre en otros archivos, complete laorg-babel-library-of-babel
variable conUno de los 21 bloques se llama "transposición" y probablemente hace lo que se supone que debe hacer:
También puede agregar sus propios bloques de código, especialmente algo que puede encontrar usando mucho en el futuro. Como ejemplo, lo siguiente me permite agregar valores en la tabla nombrada por la primera columna:
Guarde el bloque en cualquier archivo y agréguelo a
org-babel-library-of-babel
:fuente
TL; DR: Usar una biblioteca persistente de babel almacenada en un archivo puede ser una configuración simple de 3 pasos:
org
archivo de modo~/.emacs.d/library-of-babel.org
.(org-babel-lob-ingest "~/.emacs.d/library-of-babel.org")
a su conf Emacs.El archivo Library-Of-Babel es donde, por ejemplo
aggregatebycol1
, se guardaría el bloque de @mutbuerger.Otro caso de uso de ejemplo simple sería tener un bloque de código, que genera datos de tabla con una fila de encabezado, pero no marca el encabezado con un
'hline
. Esto no es trágico para una visualización simple, pero puede hacer que el procesamiento automatizado posterior sea más complicado. La solución aquí podría ser utilizar un pequeño bloque de código para el procesamiento posterior desde algún lugar de Internet:Esto simplemente canalizará los datos mientras se empalma en
'hline
una segunda fila.Para usar este bloque más adelante en otros archivos de organización, simplemente agregue una
:post
sección de procesamiento a su bloque de fuente de organización generadora de datos:También puede asignar fácilmente tablas preexistentes a funciones en su LOB:
En mi biblioteca tengo capítulos para organizar diferentes tipos de funcionalidad: generación de datos, filtrado, PrettyPrinting, ... Solo recuerde
ingest
nuevamente después de agregar nuevos bloques.fuente