Hinzufügen einer Bibliografie in Pylatex

Hinzufügen einer Bibliografie in Pylatex

Ich bin daran interessiert, PyLatex zu verwenden, um eine Tabelle mit mehreren Einträgen so zu automatisieren, dass ich sie nicht jedes Mal manuell durchgehen muss, wenn ich einen Eintrag ändern oder hinzufügen möchte. In der letzten Spalte dieser Tabelle wird die Referenz benötigt, aus der ich den Eintrag entnommen habe.

Bisher habe ich kein Beispiel für die Verwendung von PyLatex mit Bibliografie-Stilen gefunden. Kennen Sie vielleicht ein Beispiel dafür?

Antwort1

Eigentlich ist nichts Besonderes erforderlich, Sie müssen lediglich das entsprechende Paket usw. zur Präambel und \printbibliography(oder \bibliography{<filename>}) im Dokument hinzufügen. Der Code ist kurz und, wie ich annehme, ziemlich selbsterklärend.

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

Dieses Python-Skript generiert diesen Code in 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}

Abgesehen von der Dummheit, mit etwas zu beginnen \normalsizeund damit zu endenjedenZeile mit einem %, das einzige Problem, das behoben werden muss, ist das Entfernen der Klammern um das -in \addbibresource. Das heißt, es sollte lauten \addbibresource{biblatex-examples.bib}. (Ich weiß nicht, warum diese Klammern hinzugefügt wurden und wie man sie entfernt.)

Wenn Sie das übliche pdflatex+ biber+ pdflatexauf ausführen ex.tex, erhalten Sie

Ausgabe des Codes

Antwort2

ich hatte das gleiche Problem. Nehmen Sie einfach den Code von Torborn T. und löschen Sie die Klammern "{" und "}". Geben Sie diesen Befehl ein:

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

anstatt:

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

verwandte Informationen