Estoy interesado en usar PyLatex para automatizar una tabla con varias entradas de tal manera que no necesite revisarla manualmente cada vez que necesito cambiar o agregar una entrada. En la última columna de esta tabla, se necesita la referencia de donde tomé la entrada.
Hasta ahora, no he encontrado ningún ejemplo de cómo usar PyLatex con estilos de bibliografía, ¿podrías conocer un ejemplo de cómo hacerlo?
Respuesta1
Realmente no se necesita nada especial, solo es cuestión de agregar el paquete apropiado, etc. al preámbulo y \printbibliography
(o \bibliography{<filename>}
) en el documento. El código es breve y, supongo, se explica por sí mismo.
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')
Ese script de Python generará este código en 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}
Sin tener en cuenta la tontería de empezar \normalsize
y terminarcadaEn línea con a %
, el único problema que debe solucionarse es quitar los tirantes alrededor de -
in \addbibresource
. Es decir, debería serlo \addbibresource{biblatex-examples.bib}
. (No sé por qué se agregan esos frenillos ni cómo quitarlos).
Ejecutando el pdflatex
+ biber
+ pdflatex
habitual ex.tex
y obtienes
Respuesta2
Tuve el mismo problema. Simplemente tome el código de Torborn T. y borre los corchetes "{" y "}". Escriba este comando:
doc.preamble.append(pl.Command('addbibresource',arguments=[pl.NoEscape(r"biblatex-examples.bib")]))
en lugar de:
doc.preamble.append(pl.Command('addbibresource',arguments=["biblatex-examples.bib"]))