TikZ node within another

i want to create a node in TikZ that consists of two parts. So far I have tried the following

\usepackage{tikz}
\usetikzlibrary{shapes}

\tikzstyle{splitbox} = [rectangle split, rectangle split parts=2, minimum width=3cm, minimum height=2cm, text centered, text width=3cm, draw=black, rectangle split part fill={white, lightgray}]

\begin{document}

\begin{tikzpicture}[node distance=4cm]
\node (node) [splitbox] {\nodepart{one} The whole thing
\nodepart{two} A part of it};
\end{tikzpicture}
\end{document}


This gives me a result that looks like

So far so good. But actually i want it to look more like

Does anyone have an Idea, how I can achive that? Have been googeling for hours. The "part" nodepart should always be, where my arrow starts. Thanks a lot for your suggestions!

An alternative solution:

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{fit,shapes,positioning}

\begin{document}
\begin{tikzpicture}[
node distance=0mm,
every node/.style = {rectangle, inner sep=0mm, outer sep=0mm,
align=center, minimum height=15mm},
]
\node (t) [text width=5cm] {The whole thing};
\node (b) [text width=3cm,draw,fill=lightgray,
below=of t] {A part of it};
\node [draw,fit=(t) (b)]    {};
\end{tikzpicture}
\end{document}

• Thank you very much! I have to say, that i like this one even a little better as the other suggestion, as I can connect it with my tikzstyles in the preamble... – scienceponder Mar 9 '16 at 16:28

like this :

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{shapes, positioning}

\begin{document}

\begin{tikzpicture}[node distance=4cm]
\node [name=n1, rectangle, minimum width=5cm, minimum height=3cm,
text centered, text width=3cm, draw=black] {};

\node [name=t, rectangle, minimum width=5cm, minimum height=1.5cm,
text centered, text width=3cm, below=(0mm of n1.north)] {The whole thing};

\node [name=n2,rectangle, minimum width=3cm, minimum height=1.5cm,
text centered, text width=3cm, anchor=south, above=(0cm of n1.south),
draw=black,fill=lightgray] {A part of it};
\end{tikzpicture}

\end{document}


• Thank you very much!!! This works and the output looks exactly how I want it to be. Nevertheless it produces two error messages: Package PGF Math Error: Unknown operator o' or of' (in '(0cm of n1.south)'). draw=black,fill=lightgray] (followed by: {A part of it};) Package PGF Math Error: Unknown operator o' or of' (in '(0mm of n1.north)'). ... text width=3cm, below=(0mm of n1.north)] (followed by: {The whole thing};) – scienceponder Mar 9 '16 at 15:31
• you need positionings : \usetikzlibrary{shapes, positioning} – flav Mar 9 '16 at 15:47
• That helped! My mistake ;) Thank you very much! – scienceponder Mar 9 '16 at 15:52

Another alternative with a unique node defined as a matrix and matrix of nodes:

\documentclass[border=2mm,tikz]{standalone}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}[%
part/.style={draw, fill=black!30},
whole/.style={
matrix,
draw,
matrix of nodes,
inner xsep=3mm,
inner ysep=-.5\pgflinewidth,
nodes={minimum height=12mm},
row 2/.style={nodes={part}}
}]

\node[whole] (A) {
The whole thing\\
A part of it\\
};
\end{tikzpicture}
\end{document}


• you can use it on a \node[whole] if you add matrix to the style – percusse Mar 10 '16 at 9:13
• @percusse I tested it before posting my answer and it didn't worked. Now it did. How are you controlling my computer? ;-) – Ignasi Mar 10 '16 at 9:46
• With a mouse obviously; something emacs, vim geeks would never suspect :P – percusse Mar 10 '16 at 9:59