Adicionando bibliografia em pylatex

Adicionando bibliografia em pylatex

Estou interessado em usar o PyLatex para automatizar uma tabela com diversas entradas de forma que não precise percorrê-la manualmente toda vez que precisar alterar ou adicionar uma entrada. Na última coluna desta tabela é necessária a referência de onde tirei o lançamento.

Até o momento não encontrei nenhum exemplo de como usar PyLatex com estilos de Bibliografia, você pode saber um exemplo de como fazer isso?

Responder1

Na verdade, nada de especial é necessário, apenas uma questão de adicionar o pacote apropriado etc. ao preâmbulo e \printbibliography(ou \bibliography{<filename>}) no documento. O código é curto e, suponho, bastante autoexplicativo.

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')

Esse script Python irá gerar este código em 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}

Desconsiderando a bobagem de começar \normalsizee terminartodolinha com a %, o único problema que precisa ser corrigido é remover os colchetes ao redor do -in \addbibresource. Ou seja, deveria ser \addbibresource{biblatex-examples.bib}. (Não sei por que esses aparelhos foram adicionados, nem como removê-los.)

Executando o normal pdflatex+ biber+ pdflatexon ex.tex, e você obtém

saída de código

Responder2

Eu tive o mesmo problema. Basta pegar o código de Torborn T. e apagar os colchetes "{" e "}". Digite este comando:

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

em vez de:

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

informação relacionada