LINUX.ORG.RU

Формирование отдельного тестового файла поиском и копированием из других

 , , , ,


0

2

Приветствую! Появилась необходимость сформировать .bib файлик поиском и копированием из общей .bib-библиотеки.

Задача: есть .tex файл, в котором для ссылок на литературу используется конструкция вида \cite{библиографическая_метка_1, библиографическая_метка_2,...}. При компиляции эти самые метки ищутся в общей базе .bib, и из полученной информации формируется библиография (упрощённо). Данные в общей базе хранятся вот в таком виде

	@Тип_материала{библиографическая_метка,
		author    = {данные},
		title     = {данные},
		doi       = {данные},
		pages     = {данные},
		volume    = {данные},
		journal   = {данные},
		publisher = {данные},
		year      = {данные},
	} 

(в конце записи запятой нет – иначе ошибка, это и может послужить зацепкой: запись начинается с @, заканчивается } без каких либо знаков)

Необходимо из общей базы сформировать базу тех источников, которые использовались в конкретном .tex-файле.

Ковырянием в интернетах, я сформировал вот такого монстра, который успешно вытягивает из файла все библиографические метки:

grep -oP cite'\{\K[^\}]+' Имя_файла.tex|sed s/,/\\n/g|sed 's/\s*$//g'|sed "s/^[ \t]*//"| tr ' ' '\n' | sort -u

а вот как, зная метку, вытащить целиком конструкцию из файла – ума не приложу.


Есть bbl2bib, который делает упрощённый вариант bib файла из библиографии документа. Далее уже bibtool’ом генерировать полную библиографию из оригинального bib, если упрощённая версия не подходит.

einhander ★★★★★
()