Quero entender como a Library Of Babel da org-babel funciona. Parece uma ferramenta poderosa, porém subutilizada.
A documentação diz que eu posso
adicione código à biblioteca, primeiro salvando o código em blocos de código 'src' regulares de um arquivo Org e, em seguida, carregue o arquivo Org com org-babel-lob-ingest, que está vinculado a Cc Cv i.
O que isso org-babel-lob-ingest
realmente está fazendo? Ele está apenas acrescentando todos os blocos de origem em um arquivo organizacional a outro arquivo?
E quais são os casos de uso disso? Posso ver o que tenho na minha biblioteca interativamente? Posso usar a sintaxe noweb com blocos de origem na Biblioteca? O que preciso fazer para começar a usá-lo?
Quaisquer exemplos e links para tutoriais são muito bem-vindos.
org-babel-library-of-babel
. Ao procurar por blocos de origem, o org-babel procura no arquivo atual, bem como na lista armazenada na variável acima. A resposta de @mutbuerger descreve os detalhes muito bem, eu acho.Respostas:
Há uma boa introdução à biblioteca de babel, na
library-of-babel.org
qual está localizada no diretório de origem da organização. Para usar esses exemplos de blocos de código-fonte nomeados em outros arquivos, preencha aorg-babel-library-of-babel
variável comUm dos 21 blocos é nomeado "transpose" e provavelmente faz o que deveria fazer:
Você também pode adicionar seus próprios blocos de código, especialmente algo que poderá usar muito no futuro. Como exemplo, o seguinte permite agregar valores na tabela nomeada pela primeira coluna:
Salve o bloco em qualquer arquivo e adicione-o a
org-babel-library-of-babel
:fonte
TL; DR: o uso de uma biblioteca persistente de babel armazenada em um arquivo pode ser uma configuração simples em três etapas:
org
arquivo -mode~/.emacs.d/library-of-babel.org
.(org-babel-lob-ingest "~/.emacs.d/library-of-babel.org")
ao seu Emacs conf.O arquivo Library-Of-Babel é onde, por exemplo, o
aggregatebycol1
bloco de @mutbuerger seria salvo.Outro exemplo simples de caso de uso seria ter um bloco de código, que gera dados da tabela com uma linha de cabeçalho, mas não marca a lista de espera com um
'hline
. Isso não é trágico para a exibição simples, mas pode envolver ainda mais o processamento automatizado. A solução aqui pode estar usando um pequeno bloco de código para pós-processamento de algum lugar da Internet:Isso simplesmente percorrerá os dados enquanto emenda em uma
'hline
segunda linha.Para usar esse bloco posteriormente em outros arquivos organizacionais, basta adicionar uma
:post
sub-rotina de processamento ao seu bloco de origem organizacional gerador de dados:Você também pode atribuir facilmente tabelas preexistentes a funções no seu LOB:
Na minha biblioteca, tenho capítulos para organizar diferentes tipos de funcionalidade: geração de dados, filtragem, impressão bonita, ... Lembre-se
ingest
novamente após adicionar novos blocos.fonte