Declaração do problema
Tenho um .bib
arquivo grande que gostaria de dividir em vários .bib
arquivos menores.
Para isso estou procurando um analisador que me permita extrair, digamos, todas as @book
entradas do .bib
arquivo original, para que eu possa salvá-las em um novo arquivo. As próprias entradas devem basicamente permanecer intactas.
Caso isso ajude: estou usando biblatex
& biber
(no Debian GNU/Linux), que o IIRC oferece alguns recursos de análise que eu ficaria feliz em empregar aqui.
Responder1
Isto é possível com o modo de ferramenta do Biber. Infelizmente, houve um pequeno problema com a funcionalidade exata necessária nas versões anteriores à 2.11. O problema foi relatado (https://github.com/plk/biber/issues/212) e é resolvido no Biber 2.11.
Crie um onlybooks.conf
com o conteúdo
<?xml version="1.0" encoding="UTF-8"?>
<config>
<output_align>true</output_align>
<output_fieldcase>lower</output_fieldcase>
<sourcemap>
<maps datatype="bibtex" map_overwrite="1">
<map>
<per_nottype>book</per_nottype>
<map_step map_entry_null="1" />
</map>
</maps>
</sourcemap>
</config>
Então ligue para Biber com
biber --tool --configfile=onlybooks.conf <yourfile>.bib
e você deverá receber um arquivo chamado <yourfile>_bibertool.bib
que contém apenas as @book
entradas de <yourfile>.bib
.
A ressalva de que Biber exclui campos não conhecidos em seu modelo de dados também se aplica aqui, consulteImpedir que `biber --tool` remova campos não padrão em arquivos .bib.
Alternativamente, você pode bib2bib
usar bibtex2html
. Você pode descobrir muito mais noDocumentação em PDF.
Usar
bib2bib -c '$type = "BOOK"' -ob onlybooks.bib <yourfile.bib>
para obter apenas as @book
entradas de <yourfile>.bib
in onlybooks.bib
.
O tipo deve estar sempre em letras maiúsculas e entre aspas. Nos sistemas operacionais Windows, as aspas externas devem ser double e as internas single -c "$type = 'BOOK'"
, enquanto no Unix deve ser o contrário-c '$type = "BOOK"'
Você também pode usarbibtool
:
bibtool --select{@book} all.bib -o some.bib
Grava apenas as @book
entradas de all.bib
tosome.bib
Alguns gerenciadores de bibliografia como o JabRef também oferecem filtros .bib
de arquivos, talvez isso também possa ser usado aqui.