`tikzpicture` 환경을 사용하여 직사각형 안에 여러 개의 채울 수 있는 PDF 양식을 그리는 방법

`tikzpicture` 환경을 사용하여 직사각형 안에 여러 개의 채울 수 있는 PDF 양식을 그리는 방법

저는 두 가지 다른 그림을 그리고 싶습니다. 그 중 하나는 아래와 같이 두 개의 직사각형으로 구성됩니다. 하나는 텍스트가 있고 다른 하나(첫 번째 아래)는 채울 수 있는 텍스트가 있습니다.

채울 수 있는 텍스트가 있는 그림

Here is text of this length일반 텍스트이고 채울 수 있는 텍스트는 TextField다음 세 가지로 구성됩니다.hyperref/날짜와 같이 로 구분된 패키지입니다 DD/MM/YYYY.

다른 그림은 매우 유사하지만 유일한 차이점은 채울 수 있는 텍스트가 삭제된다는 것입니다.

채울 수 있는 텍스트가 없는 그림

그러나 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}

내가 뭘 한거지

요구사항

  • 두 개의 사진이 있습니다: fillable subjectnon-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이는 그림이 맞는지 보여주는 것뿐입니다.

관련 정보