PyLatex を使用して、複数のエントリを含むテーブルを自動化し、エントリを変更または追加する必要があるたびに手動で確認する必要がないようにしたいと考えています。このテーブルの最後の列には、エントリを取得した場所からの参照が必要です。
これまでのところ、PyLatex を Bibliography スタイルで使用する方法の例は見つかっていません。その方法の例をご存知でしょうか?
答え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
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"]))