如何将 TikZ 生成的图形用作带有参数的 LaTeX 命令?

如何将 TikZ 生成的图形用作带有参数的 LaTeX 命令?

我必须在 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 进行了测试,但没有参数,它可以工作!

不幸的是,我不知道如何使用参数(lh)来做到这一点。

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}

相关内容