나는 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
과 끝의 어리석음을 무시하고모든a 줄에서 %
해결해야 할 한 가지 문제는 -
in 주변의 중괄호를 제거하는 것입니다 \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"]))