![So zeichnen Sie mithilfe der Umgebung „tikzpicture“ mehrere ausfüllbare PDF-Formulare innerhalb eines Rechtecks](https://rvso.com/image/391728/So%20zeichnen%20Sie%20mithilfe%20der%20Umgebung%20%E2%80%9Etikzpicture%E2%80%9C%20mehrere%20ausf%C3%BCllbare%20PDF-Formulare%20innerhalb%20eines%20Rechtecks.png)
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:
Here is text of this length
ist nur normaler Text, und der ausfüllbare Text besteht aus drei TextField
derhyperref
Paket 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:
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}
Anforderungen
- Es gibt zwei Bilder:
fillable subject
undnon-fillable subject
. fillable subject
muss ein Argument haben: den Namen des Fachs (Mathematik, Geschichte usw.).non-fillable subject
darf 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
tikzpicture
Umgebung, 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 TextField
Befehls spielt keine Rolle.
Das ist was ich will:
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}
Ich habe auch das Geometriepaket geladen, um die Breite der Seite zu erhöhen, showframe
nur um zu zeigen, dass die Abbildung passt.