Добавление библиографии в pylatex

Добавление библиографии в pylatex

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

До сих пор я не нашел ни одного примера использования PyLatex со стилями библиографии. Может быть, вы знаете пример того, как это сделать?

решение1

Ничего особенного на самом деле не нужно, просто вопрос добавления соответствующего пакета и т. д. в преамбулу и \printbibliography(или \bibliography{<filename>}) в документ. Код короткий и, я полагаю, довольно понятный.

import pylatex as pl

# dict with data for table - dict key is citation key
tabledata = dict(
                 aksin=['Foo', 42],
                 angenendt=['Bar', 7],
                 bertram=['Baz',3.14],
                 doody=['Foobar',199]
                 )

doc = pl.Document()

# add biblatex package to preamble
doc.preamble.append(pl.Package('biblatex',options=['sorting=none']))
doc.preamble.append(pl.Command('addbibresource',arguments=["biblatex-examples.bib"]))

# make table
with doc.create(pl.Tabular("l l l",booktabs=True)) as table:
    table.add_row(['Desc','Number','Cite'])
    table.add_hline()
    for key in tabledata.keys():
        table.add_row(tabledata[key]+[pl.Command('cite',arguments=[key])])


doc.append(pl.Command('printbibliography'))

doc.generate_tex('ex')

Этот скрипт Python сгенерирует следующий код ex.tex:

\documentclass{article}%
\usepackage[T1]{fontenc}%
\usepackage[utf8]{inputenc}%
\usepackage{lmodern}%
\usepackage{textcomp}%
\usepackage{lastpage}%
\usepackage{booktabs}%
%
\usepackage[sorting=none]{biblatex}%
\addbibresource{biblatex{-}examples.bib}%
%
\begin{document}%
\normalsize%
\begin{tabular}{@{}l l l@{}}%
\toprule%
Desc&Number&Cite\\%
\midrule%
Baz&3.14&\cite{bertram}\\%
Foobar&199&\cite{doody}\\%
Foo&42&\cite{aksin}\\%
Bar&7&\cite{angenendt}\\\bottomrule%
%
\end{tabular}%
\printbibliography%
\end{document}

Не обращая внимания на глупость начала \normalsizeи окончаниякаждыйв строке с %, единственная проблема, которую необходимо исправить, — это удалить скобки вокруг -in \addbibresource. То есть, должно быть \addbibresource{biblatex-examples.bib}. (Я не знаю, зачем добавлены эти скобки и как их удалить.)

Запустив обычную команду pdflatex+ biber+ pdflatexна ex.tex, вы получите

вывод кода

решение2

У меня была та же проблема. Просто возьмите код из Torborn T. и удалите скобки "{" и "}". Введите эту команду:

doc.preamble.append(pl.Command('addbibresource',arguments=[pl.NoEscape(r"biblatex-examples.bib")]))

вместо:

doc.preamble.append(pl.Command('addbibresource',arguments=["biblatex-examples.bib"]))

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