![Cómo dibujar múltiples formularios PDF rellenables dentro de un rectángulo usando el entorno `tikzpicture`](https://rvso.com/image/391728/C%C3%B3mo%20dibujar%20m%C3%BAltiples%20formularios%20PDF%20rellenables%20dentro%20de%20un%20rect%C3%A1ngulo%20usando%20el%20entorno%20%60tikzpicture%60.png)
Me gustaría hacer dos dibujos diferentes. Uno de ellos consta de dos rectángulos, uno con texto y el otro (debajo del primero) con texto rellenable, como se muestra a continuación:
Here is text of this length
es simplemente texto normal, y el texto rellenable consta de tres TextField
de loshyperref
paquete separado por un /
, como la fecha DD/MM/YYYY
.
La otra imagen es muy similar pero la única diferencia es que el texto que se puede completar se elimina:
Sin embargo, no puedo producir la combinación de los dos rectángulos en uno (de modo que el de abajo quede centrado) usando 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}
Requisitos
- Hay dos imágenes:
fillable subject
ynon-fillable subject
. fillable subject
debe tener un argumento: el nombre de la materia (Matemáticas, Historia, etc.).non-fillable subject
no debe tener argumentos.- Cada imagen tiene un tamaño específico, no cambia dependiendo de la longitud del texto.
- Hay muchas de ellas en un
tikzpicture
entorno, por lo que el código debe ser lo más manejable posible, ya que podemos agregar varias imágenes una al lado de la otra. - Debemos poder crear una flecha entre dos imágenes que conecten los rectángulos superiores.
Nota
El color de fondo del TextField
comando no importa.
Esto es lo que quiero:
¡¡Gracias!!
Respuesta1
Esta es una propuesta refinada.
\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}
También cargué el paquete de geometría para aumentar el ancho de la página, showframe
es solo para mostrar que la figura encaja.