我对使用 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
忽略开始和结束的每一个行中%
,需要修复的一个问题是删除-
中的 周围的括号\addbibresource
。也就是说,它应该是\addbibresource{biblatex-examples.bib}
。(我不知道为什么要添加这些括号,也不知道如何删除它们。)
运行通常的pdflatex
++ biber
on 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"]))