Как нарисовать несколько заполняемых PDF-форм внутри прямоугольника с помощью среды `tikzpicture`

Как нарисовать несколько заполняемых PDF-форм внутри прямоугольника с помощью среды `tikzpicture`

Я хотел бы нарисовать две разные картинки. Одна из них состоит из двух прямоугольников, один с текстом, а другой (под первым) с заполняемым текстом, как показано ниже:

Картинка с заполняемым текстом

Here is text of this lengthэто просто обычный текст, а заполняемый текст состоит из TextFieldтрехhyperrefпакет, разделенный знаком /, как и дата DD/MM/YYYY.

Другая картинка очень похожа, но единственное отличие в том, что заполняемый текст удален:

Картинка без заполняемого текста

Однако мне не удаётся объединить два прямоугольника в один (так, чтобы нижний был по центру) с помощью tikzset.

МВЭ:

\documentclass{article}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{hyperref}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\usetikzlibrary{shapes.multipart}
\tikzset{pics/fillable subject/.style n args={1}{code={\node[draw,text height=1.5ex,text width=5em,rounded corners] (#1) {\TextField[name=day,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~/~\TextField[name=month,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~/~\TextField[name=year,width=2em,charsize=7pt,maxlen=4,bordercolor={1 1 1}]\\};}}}

\begin{document}

\begin{Form}
    \begin{tikzpicture}
        \pic at (0,0) {fillable subject={Geography}};
    \end{tikzpicture}
\end{Form}

\end{document}

Что я наделал

Требования

  • Есть две картинки: fillable subjectи non-fillable subject.
  • fillable subjectдолжен иметь один аргумент: название предмета (математика, история и т. д.). non-fillable subjectне должен иметь аргументов.
  • Каждая картинка имеет определенный размер, он не меняется в зависимости от длины текста.
  • В одной среде их очень много tikzpicture, поэтому код должен быть максимально простым, поскольку мы можем добавлять несколько картинок одну за другой.
  • Мы должны иметь возможность создать стрелку между двумя картинками, соединяющую верхние прямоугольники.

Примечание

Цвет фона команды TextFieldне имеет значения.

Вот чего я хочу:

Что я хочу

Спасибо!!

решение1

Это усовершенствованное предложение.

\documentclass{article}
\usepackage[showframe,margin=1in]{geometry}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{hyperref}
\usepackage{tikz}
%\usetikzlibrary{calc}
\tikzset{text field/.style={text height=1.5ex,align=center,rounded corners},
title field/.style={text height=2ex,text depth=0.3em,anchor=south,text
width=11em,align=center,font=\sffamily},
pics/fillable subject/.style={code={%
\node[text field] (-TF) 
{\hspace*{-0.5em}\TextField[name=#1-day,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1
1}]~~/\hspace*{-0.15em}\TextField[name=#1-month,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1
1}]~~/\hspace*{-0em}\TextField[name=#1-year,width=2em,charsize=7pt,maxlen=4,bordercolor={1 1
1}]{}~};
%\path let \p1=($(-TF.east)-(-TF.west)$) in \pgfextra{\typeout{\x1}};
\node[title field] (-Title) 
at ([yshift=0.4em]-TF.north) {#1};
\draw[rounded corners] (-TF.south west) |- (-Title.south west)
|- (-Title.north east) -- (-Title.south east) -| (-TF.south east)
 -- cycle;
\draw ([xshift=4pt]-Title.south west) -- ([xshift=-4pt]-Title.south east);
 }},
pics/nonfillable subject/.style={code={%
\node[text field] (-TF) 
{\hspace{1.55em}~/~\hspace{1.6em}~/~\hspace{1.55em}{}};
\node[title field] (-Title) 
at ([yshift=0.4em]-TF.north) {#1};
%\path let \p1=($(-TF.east)-(-TF.west)$) in \pgfextra{\typeout{\x1}};
\draw[rounded corners] (-TF.south west) |- (-Title.south west)
|- (-Title.north east) -- (-Title.south east) -| (-TF.south east)
 -- cycle;
\draw ([xshift=4pt]-Title.south west) -- ([xshift=-4pt]-Title.south east);
 }}, 
 }

\begin{document}

\begin{Form}
    \begin{tikzpicture}
        \path (0,0) pic (Geo)  {fillable subject={Geography}}
        (5,0) pic (Whatever)  {nonfillable subject={Whatever}}
        (10,0) pic[draw=red] (Math)  {fillable subject={Math}};
        \draw[-latex] (Geo-Title) -- (Whatever-Title);
        \draw[-latex] (Whatever-Title) -- (Math-Title);
    \end{tikzpicture}
\end{Form}

\end{document}

введите описание изображения здесь

Я также загрузил пакет геометрии, чтобы увеличить ширину страницы, showframeтолько чтобы показать, что фигура помещается.

Связанный контент