我必须在 LaTeX 中创建联系人树。联系人数据存储在 MySQL 数据库中,我正在使用 PyLaTeX 生成我的 LaTeX 文件。问题是:我创建了一个“fiche”类,它将为 ID(图片、姓名、电话号码、邮件等)生成 TikZ 模型,我将为数据库中的每个人使用它。例如,这是我的目标:
\renewcommand{\name}{Geoffrey Fouine}
\fiche{l}{h} % where l and h are (x,y) of the "fiche" in the sheet
我知道您可以使用创建一个命令doc.set_variable('fiche','command')
。我已经通过提供doc.set_variable('france', pic)
tikz 类的 pic 进行了测试,但没有参数,它可以工作!
不幸的是,我不知道如何使用参数(l
和h
)来做到这一点。
from pylatex import (Document, Command, TikZ, TikZDraw, TikZCoordinate, TikZOptions, Package)
from pylatex.base_classes import CommandBase, Arguments
class France(CommandBase):
_latex_name = "france"
doc = Document('test fiche')
france = Document('france')
doc.set_variable('couleur', 'blue')
doc.preamble.append(Package('tikz'))
def rectangle(pic, l, b, r, t):
pic.append(TikZDraw([(l,b), 'rectangle', (r,t)], options=TikZOptions(fill='\couleur')))
with france.create(TikZ()) as pic:
rectangle(pic,0,0,2,3)
pic.append(Command('renewcommand{\\couleur}', 'white'))
rectangle(pic,2,0,4,3)
pic.append(Command('renewcommand{\\couleur}', 'red'))
rectangle(pic,4,0,6,3)
doc.set_variable('france', pic)
doc.append(Command('france'))
doc.generate_pdf(clean_tex=False)
doc.generate_tex()
此代码生成此tex
文件:
\documentclass{article}%
\usepackage[T1]{fontenc}%
\usepackage[utf8]{inputenc}%
\usepackage{lmodern}%
\usepackage{textcomp}%
\usepackage{lastpage}%
\newcommand{\couleur}{blue}%
\newcommand{\france}{\begin{tikzpicture}%
\path[draw,fill=\couleur] (0.0,0.0) rectangle (2.0,3.0);%
\renewcommand{\couleur}{white}%
\path[draw,fill=\couleur] (2.0,0.0) rectangle (4.0,3.0);%
\renewcommand{\couleur}{red}%
\path[draw,fill=\couleur] (4.0,0.0) rectangle (6.0,3.0);%
\end{tikzpicture}}%
\usepackage{tikz}%
%
\begin{document}%
\normalsize%
\france%
\end{document}