Как получить читаемую строку Unicode из единственного поля ввода bibtex в скрипте python - PullRequest
0 голосов
/ 06 августа 2020

Предположим, у вас есть файл .bib, содержащий записи в формате bibtex. Я хочу извлечь поле «заголовок» из записи, а затем отформатировать его в читаемую строку Unicode.

Например, если запись была:

@article{mypaper,
    author = {myself},
    title = {A very nice {title} with annoying {symbols} like {\^{a}}}
}

то, что я хочу extract - это строка:

A very nice title with annoying symbols like â

В настоящее время я пытаюсь использовать пакет pybtex, но не могу понять, как это сделать. Утилита командной строки pybtex-format отлично справляется с преобразованием полных файлов .bib, но мне нужно делать это внутри сценария и для отдельных записей заголовков.

1 Ответ

0 голосов
/ 06 августа 2020

Разобрался:

def load_bib(filename):
    from pybtex.database.input.bibtex import Parser
    parser = Parser()
    DB = parser.parse_file(filename)
    return DB

def get_title(entry):
    from pybtex.plugin import find_plugin
    style = find_plugin('pybtex.style.formatting', 'plain')()
    backend = find_plugin('pybtex.backends', 'plaintext')()
    sentence = style.format_title(entry, 'title')
    data = {'entry': entry,
            'style': style,
            'bib_data': None}
    T = sentence.f(sentence.children, data)
    title = T.render(backend)
    return title

DB = load_bib("bibliography.bib")
print ( get_title(DB.entries["entry_label"]) )

, где entry_label должно соответствовать этикетке, которую вы используете в латексе для цитирования библиографической записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...