So zeichnen Sie mithilfe der Umgebung „tikzpicture“ mehrere ausfüllbare PDF-Formulare innerhalb eines Rechtecks

So zeichnen Sie mithilfe der Umgebung „tikzpicture“ mehrere ausfüllbare PDF-Formulare innerhalb eines Rechtecks

Ich möchte zwei verschiedene Bilder zeichnen. Eines davon besteht aus zwei Rechtecken, eines mit Text und das andere (unter dem ersten) mit ausfüllbarem Text, wie unten gezeigt:

Bild mit ausfüllbarem Text

Here is text of this lengthist nur normaler Text, und der ausfüllbare Text besteht aus drei TextFieldderhyperrefPaket durch ein getrennt /, wie das Datum DD/MM/YYYY.

Das andere Bild ist sehr ähnlich, der einzige Unterschied besteht darin, dass der ausfüllbare Text gelöscht wurde:

Bild ohne ausfüllbaren Text

Die Verbindung der beiden Rechtecke zu einem (so dass das untere zentriert ist) gelingt mir allerdings nicht mit tikzset.

MWE:

\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}

Was habe ich getan

Anforderungen

  • Es gibt zwei Bilder: fillable subjectund non-fillable subject.
  • fillable subjectmuss ein Argument haben: den Namen des Fachs (Mathematik, Geschichte usw.). non-fillable subjectdarf keine Argumente haben.
  • Jedes Bild hat eine festgelegte Größe, diese ändert sich nicht je nach Textlänge.
  • Davon gibt es sehr viele in einer tikzpictureUmgebung, daher sollte der Code möglichst handlich sein, da wir mehrere Bilder nebeneinander einfügen können.
  • Wir müssen in der Lage sein, zwischen zwei Bildern einen Pfeil zu erstellen, der die oberen Rechtecke verbindet.

Notiz

Die Hintergrundfarbe des TextFieldBefehls spielt keine Rolle.

Das ist was ich will:

Was ich möchte

Danke!!

Antwort1

Dies ist ein ausgefeilter Vorschlag.

\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}

Bildbeschreibung hier eingeben

Ich habe auch das Geometriepaket geladen, um die Breite der Seite zu erhöhen, showframenur um zu zeigen, dass die Abbildung passt.

verwandte Informationen