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 \normalsize
und 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
+ pdflatex
auf ausführen ex.tex
, erhalten Sie
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"]))