Постановка задачи

Постановка задачи

Постановка задачи

У меня есть большой .bibфайл, который я хотел бы разделить на несколько .bibфайлов меньшего размера.

Для этого я ищу парсер, который позволит мне извлечь, скажем, все @bookзаписи из исходного .bibфайла, чтобы я мог сохранить их в новом файле. Сами записи должны оставаться в основном нетронутыми.

На всякий случай: я использую biblatex& biber(под Debian GNU/Linux), который, как мне кажется, предлагает некоторые возможности синтаксического анализа, которые я с удовольствием здесь применил.

решение1

Это возможно с помощью режима инструмента Biber. К сожалению, была небольшая проблема с точной функциональностью, которая вам нужна в версиях до 2.11. Проблема была сообщена (https://github.com/plk/biber/issues/212) и решена в Biber 2.11.

Создать onlybooks.confс содержимым

<?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>

Затем позвоните Биберу с

biber --tool --configfile=onlybooks.conf <yourfile>.bib

и вам должен быть представлен файл с именем , <yourfile>_bibertool.bibсодержащий только @bookзаписи <yourfile>.bib.

Предупреждение о том, что Biber удаляет поля, неизвестные в его модели данных, конечно, применимо и здесь, см.Запретить `biber --tool` удалять нестандартные поля в файлах .bib.


В качестве альтернативы вы можете bib2bibиспользовать bibtex2html. Вы можете узнать гораздо больше вPDF-документация.

Использовать

bib2bib -c '$type = "BOOK"' -ob onlybooks.bib <yourfile.bib>

чтобы получить только @bookзаписи <yourfile>.bibиз onlybooks.bib.

Тип должен быть всегда заглавными буквами и заключен в кавычки. В ОС Windows внешние кавычки должны быть двойными, а внутренние одинарными -c "$type = 'BOOK'", в то время как в Unix все должно быть наоборот.-c '$type = "BOOK"'


Вы также можете использоватьbibtool:

bibtool --select{@book} all.bib -o some.bib

Записывает только записи @bookвall.bibsome.bib

Некоторые менеджеры библиографии, такие как JabRef, также предлагают фильтрацию .bibфайлов, возможно, это можно использовать и здесь.

Связанный контент