The main complication is that one cannot yet (?) nest tikz matrices. So this proposal follows a slightly different strategy, which is conceptually more or less the same as the one used here:
- Build the matrices with some guessed distances.
- Measure the matrices.
- Compute "optimal" distances from the measured values.
- Write the "optimal" distances to the aux file such that they can be used after recompilation.
The example has a lot of annotations that should help to understand what is going on. Notice also that you have to loop over the actual inlays, that is, if you want to add or remove inlays, you may have to modify \foreach \X in {0,2,3}.
\documentclass{article}
\usepackage[showframe,margin=0in,footskip=0.25in,paperwidth=54cm,paperheight=20cm]{geometry}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{hyperref}
\usepackage{tikz}
\usetikzlibrary{positioning,backgrounds,fit,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=4.5cm,align=center,font=\footnotesize\sffamily},
pics/fillable subject/.style={code={%
\node[text field] (-TF)
{\hspace*{-0.5em}\TextField[align=1,name=#1-day,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~~/\hspace*{-0.15em}\TextField[align=1,name=#1-month,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~~/\hspace*{-0em}\TextField[align=1,name=#1-year,width=2em,charsize=7pt,maxlen=4,bordercolor={1 1 1}]{}~};
\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.2em}~/~\hspace{1.15em}~/~\hspace{2.35em}{}};
\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);
}},
manoooh/.style={column sep=-1.75cm,row sep=5mm},
manooohE/.style={column sep=-2.25cm,row sep=5mm,anchor=south},
wrapper/.style={fit=#1,inner sep=0pt,minimum width=\useVal{matrix_width}}
electives/.style={column sep=-2.25cm,row sep=5mm},
fit sep/.initial=10pt,
fit dist/.initial=20pt,
inlay top sep/.initial=24pt
}
\begin{document}
\thispagestyle{empty} % To suppress page number
\noindent
\begin{tikzpicture}
\fill[white,fill=orange] (0,0) rectangle (\paperwidth,-2cm) node[midway,align=center,font=\Huge] {\bfseries Some text here\\\LARGE More text here};
\end{tikzpicture}
\ifdefined\mymatdist
%\typeout{got\space\mymatdist}
\else
\typeout{Please\space recompile\space your\space file!}
\def\mymatdist{150pt}
\fi
\ifdefined\mymatbottom
%\typeout{got\space\mymatbottom}
\else
\typeout{Please\space recompile\space your\space file!}
\def\mymatbottom{-150pt}
\fi
\vfill
\centering
\begin{tikzpicture}[node distance=3.14cm]
% step 1: add the matrices, name them mat0, mat1 etc.
\begin{scope}[local bounding box=matrices]
\matrix[manoooh] (mat0) at (0*\mymatdist,0) {
\pic[local bounding box=A] (A) {nonfillable subject={Subject}}; & &
\pic (B) {nonfillable subject={Subject}}; \\
& \pic (C) {nonfillable subject={Subject}}; & \\
};
\matrix[manooohE,column sep=8pt] (matE0) at (0*\mymatdist,\mymatbottom) {
\pic (AE) {nonfillable subject={Subject}}; &
\pic (BE) {nonfillable subject={Subject}}; \\
\pic (CE) {nonfillable subject={Subject}}; &
\pic (DE) {nonfillable subject={Subject}}; \\
};
\matrix[manoooh] (mat1) at (1*\mymatdist,0) {
\pic (D) {nonfillable subject={Subject}}; \\
\pic (E) {nonfillable subject={Subject}}; \\
\pic (F) {nonfillable subject={Subject}}; \\
\pic (G) {nonfillable subject={Subject}}; \\
};
\matrix[manoooh] (mat2) at (2*\mymatdist,0) {
\pic (H) {nonfillable subject={Subject}}; & &
\pic (I) {nonfillable subject={Subject}}; \\
& \pic (J) {nonfillable subject={Subject}}; & \\
\pic (K) {nonfillable subject={Subject}};
& &
\pic (L) {nonfillable subject={Subject}}; \\
};
\matrix[manooohE] (matE2) at (2*\mymatdist,\mymatbottom) {
\pic (HE) {nonfillable subject={Subject}}; \\
};
\matrix[manoooh] (mat3) at (3*\mymatdist,0) {
& \pic (M) {nonfillable subject={Subject}}; & \\
\pic (N) {nonfillable subject={Subject}}; & &
\pic (O) {nonfillable subject={Subject}}; \\
\pic (P) {nonfillable subject={Subject}};
& &
\pic (Q) {nonfillable subject={Subject}}; \\
};
\matrix[manooohE] (matE3) at (3*\mymatdist,\mymatbottom) {
&\pic (ME) {nonfillable subject={Subject}}; &\\
\pic (NE) {nonfillable subject={Subject}}; & &
\pic (POE) {nonfillable subject={Subject}}; \\
\pic (PE) {nonfillable subject={Subject}}; & &
\pic (QE) {nonfillable subject={Subject}}; \\
};
\end{scope}
\pgfmathsetmacro{\mywidth}{0pt}
\foreach \X in {0,...,3} %<- if you have more or less matrices, adjust 3
{\path let \p1=($(mat\X.east)-(mat\X.west)$) in
\pgfextra{\pgfmathsetmacro{\mywidth}{max(\x1,\mywidth)}
\xdef\mywidth{\mywidth}};
\node[anchor=south,yshift=1cm,align=center,font=\LARGE\bfseries\boldmath]
at (mat\X |-matrices.north) (L\X) {Level $\X$};
\begin{scope}[on background layer]
% the fit parameters determine the shape of the background rectangles
\node[fit=(L\X) (mat\X) (matrices.south-|mat\X.south),inner ysep=5mm,
minimum width=\mymatdist-\pgfkeysvalueof{/tikz/fit dist}/2,
fill=orange!30,rounded corners=50pt](F\X){};
\end{scope}}
%\xdef\mydist{\mydist}
\pgfmathsetmacro{\mydist}{\mywidth+2*\pgfkeysvalueof{/tikz/fit
sep}+\pgfkeysvalueof{/tikz/fit dist}}
\xdef\mydist{\mydist}
\def\mymatbottom{0pt}
\foreach \X in {0,2,3} %<run only over those entries that have inlays
{\path let \p1=($(mat\X.north)-(mat\X.south)$),
\p2=($(matE\X.north)-(matE\X.south)$),
\n1={max(abs(\y1)/2+abs(\y2)+2*\pgfkeysvalueof{/tikz/inlay top sep},\mymatbottom)}
in \pgfextra{\xdef\mymatbottom{\n1}}
node[anchor=south east,xshift=-2cm,font=\LARGE\bfseries] (El\X)
at (matE\X.north){Electives};
\begin{scope}[on background layer]
\node[fit=(matE\X) (El\X)] (FE\X){};
\fill[blue!30,rounded corners=30pt] (\X*\mymatdist-
\mymatdist/2+\pgfkeysvalueof{/tikz/fit dist}/4+10pt,0|-FE\X.north)
rectangle (\X*\mymatdist+
\mymatdist/2-\pgfkeysvalueof{/tikz/fit dist}/4-10pt,0|-FE\X.south);
\end{scope}}
\makeatletter
\immediate\write\@mainaux{\xdef\string\mymatdist{\mydist pt}\relax}
\immediate\write\@mainaux{\xdef\string\mymatbottom{-\mymatbottom}\relax}
\makeatother
% now add the arrows
\foreach \X in {D,...,G}
{\draw[blue,-latex] (B-Title) to[out=0,in=180] (\X-Title);}
\end{tikzpicture}
\vfill
\end{document}

And this is a second example with annotations which is also closer to your screen shot.
\documentclass{article}
\usepackage[showframe,margin=0in,footskip=0.25in,paperwidth=54cm,paperheight=24cm]{geometry}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{hyperref}
\usepackage{tikz}
\usetikzlibrary{positioning,backgrounds,fit,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=4.5cm,align=center,font=\footnotesize\sffamily},
pics/fillable subject/.style={code={%
\node[text field] (-TF)
{\hspace*{-0.5em}\TextField[align=1,name=#1-day,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~~/\hspace*{-0.15em}\TextField[align=1,name=#1-month,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~~/\hspace*{-0em}\TextField[align=1,name=#1-year,width=2em,charsize=7pt,maxlen=4,bordercolor={1 1 1}]{}~};
\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.2em}~/~\hspace{1.15em}~/~\hspace{2.35em}{}};
\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);
}},
manoooh/.style={column sep=-1.75cm,row sep=5mm},
manooohE/.style={column sep=-2.25cm,row sep=5mm,anchor=south},
wrapper/.style={fit=#1,inner sep=0pt,minimum width=\useVal{matrix_width}}
electives/.style={column sep=-2.25cm,row sep=5mm},
fit sep/.initial=10pt,
fit dist/.initial=20pt,
inlay top sep/.initial=24pt
}
\begin{document}
\thispagestyle{empty} % To suppress page number
\noindent
\begin{tikzpicture}
\fill[white,fill=orange] (0,0) rectangle (\paperwidth,-2cm) node[midway,align=center,font=\Huge] {\bfseries Some text here\\\LARGE More text here};
\end{tikzpicture}
\ifdefined\mymatdist
%\typeout{got\space\mymatdist}
\else
\typeout{Please\space recompile\space your\space file!}
\def\mymatdist{150pt}
\fi
\ifdefined\mymatbottom
%\typeout{got\space\mymatbottom}
\else
\typeout{Please\space recompile\space your\space file!}
\def\mymatbottom{-150pt}
\fi
\vfill
\centering
\begin{tikzpicture}[node distance=3.14cm]
% step 1: add the matrices, name them mat0, mat1 etc.
\begin{scope}[local bounding box=matrices]
\matrix[manoooh] (mat0) at (0*\mymatdist,0) {
\pic[local bounding box=A] (A) {nonfillable subject={Subject}}; & &
\pic (B) {nonfillable subject={Subject}}; \\
& \pic (C) {nonfillable subject={Subject}}; & \\
};
\matrix[manooohE,column sep=8pt] (matE0) at (0*\mymatdist,\mymatbottom) {
\pic (AE) {nonfillable subject={Subject}}; &
\pic (BE) {nonfillable subject={Subject}}; \\
\pic (CE) {nonfillable subject={Subject}}; &
\pic (DE) {nonfillable subject={Subject}}; \\
};
\matrix[manoooh] (mat1) at (1*\mymatdist,0) {
\pic (D) {nonfillable subject={Subject}}; \\
\pic (E) {nonfillable subject={Subject}}; \\
\pic (F) {nonfillable subject={Subject}}; \\
\pic (G) {nonfillable subject={Subject}}; \\
\pic (D') {nonfillable subject={Subject}}; \\
\pic (E') {nonfillable subject={Subject}}; \\
\pic (F') {nonfillable subject={Subject}}; \\
\pic (G') {nonfillable subject={Subject}}; \\
};
\matrix[manoooh] (mat2) at (2*\mymatdist,0) {
\pic (H) {nonfillable subject={Subject}}; & &
\pic (I) {nonfillable subject={Subject}}; \\
& \pic (J) {nonfillable subject={Subject}}; & \\
\pic (K) {nonfillable subject={Subject}};
& &
\pic (L) {nonfillable subject={Subject}}; \\
};
\matrix[manooohE] (matE2) at (2*\mymatdist,\mymatbottom) {
\pic (HE) {nonfillable subject={Subject}}; \\
};
\matrix[manoooh] (mat3) at (3*\mymatdist,0) {
& \pic (M) {nonfillable subject={Subject}}; & \\
\pic (N) {nonfillable subject={Subject}}; & &
\pic (O) {nonfillable subject={Subject}}; \\
\pic (P) {nonfillable subject={Subject}};
& &
\pic (Q) {nonfillable subject={Subject}}; \\
};
\matrix[manooohE] (matE3) at (3*\mymatdist,\mymatbottom) {
&\pic (ME) {nonfillable subject={Subject}}; &\\
\pic (NE) {nonfillable subject={Subject}}; & &
\pic (POE) {nonfillable subject={Subject}}; \\
\pic (PE) {nonfillable subject={Subject}}; & &
\pic (QE) {nonfillable subject={Subject}}; \\
};
\end{scope}
\pgfmathsetmacro{\mywidth}{0pt}
\foreach \X in {0,...,3} %<- if you have more or less matrices, adjust 3
{\path let \p1=($(mat\X.east)-(mat\X.west)$) in
\pgfextra{\pgfmathsetmacro{\mywidth}{max(\x1,\mywidth)}
\xdef\mywidth{\mywidth}};
\node[anchor=south,yshift=1cm,align=center,font=\LARGE\bfseries\boldmath]
at (mat\X |-matrices.north) (L\X) {Level $\X$};
\begin{scope}[on background layer]
% the fit parameters determine the shape of the background rectangles
\node[fit=(L\X) (mat\X) (matrices.south-|mat\X.south),inner ysep=5mm,
minimum width=\mymatdist-\pgfkeysvalueof{/tikz/fit dist}/2,
fill=orange!30,rounded corners=50pt](F\X){};
\end{scope}}
%\xdef\mydist{\mydist}
\pgfmathsetmacro{\mydist}{\mywidth+2*\pgfkeysvalueof{/tikz/fit
sep}+\pgfkeysvalueof{/tikz/fit dist}}
\xdef\mydist{\mydist}
\def\mymatbottom{0pt}
\foreach \X in {0,2,3} %<run only over those entries that have inlays
{\path let \p1=($(mat\X.north)-(mat\X.south)$),
\p2=($(matE\X.north)-(matE\X.south)$),
\n1={max(abs(\y1)/2+abs(\y2)+2*\pgfkeysvalueof{/tikz/inlay top sep},\mymatbottom)}
in \pgfextra{\xdef\mymatbottom{\n1}}
node[anchor=south east,xshift=-2cm,font=\LARGE\bfseries] (El\X)
at (matE\X.north){Electives};
\begin{scope}[on background layer]
\node[fit=(matE\X) (El\X)] (FE\X){};
\fill[blue!30,rounded corners=30pt] (\X*\mymatdist-
\mymatdist/2+\pgfkeysvalueof{/tikz/fit dist}/4+10pt,0|-FE\X.north)
rectangle (\X*\mymatdist+
\mymatdist/2-\pgfkeysvalueof{/tikz/fit dist}/4-10pt,0|-FE\X.south);
\end{scope}}
\makeatletter
\immediate\write\@mainaux{\xdef\string\mymatdist{\mydist pt}\relax}
\immediate\write\@mainaux{\xdef\string\mymatbottom{-\mymatbottom}\relax}
\makeatother
% now add the arrows
\foreach \X in {D,...,G}
{\draw[blue,-latex] (B-Title) to[out=0,in=180] (\X-Title);}
\foreach \X in {0,...,3}
{\node[circle,red,inner sep=4pt,fill,label={[font=\Huge,text=red]above:mat \X\ center}] (c\X) at
(mat\X.center){};
\unless\ifnum\X=1
\node[circle,blue,inner sep=4pt,fill,
label={[font=\Huge,text=blue]above:matE \X' south}] (c\X') at
(matE\X.south){};
\fi
}
\end{tikzpicture}
\vfill
\end{document}

:-D– Raaja_is_at_topanswers.xyz Mar 13 '19 at 14:12