Pylatex に参考文献を追加する

Pylatex に参考文献を追加する

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を実行すると、次のようになります。biberpdflatexex.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"]))

関連情報