Like this ?
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes,positioning,fit}
\begin{document}
\begin{tikzpicture}
\node[rectangle split part align={center, left}, draw, rectangle split, rectangle split parts=2]{
x y%
\nodepart{two}{%
\tikz \node[align=center, draw, rectangle] {bubble \\ gum};%
}
};
\end{tikzpicture}
\vspace{2em}
\begin{tikzpicture}
\node[draw, rectangle split, rectangle split parts=2]{
x y%
\nodepart{two}{%
\tikz \node[align=left,draw, rectangle] {bubble \\ gum};%
}
};
\end{tikzpicture}
\end{document}
I don't really get the question so I hope this is what you wanted. If you include a full document (such that we copy paste and see the problem on our systems) things are much more easier.
Here, you can change the default setting within a scope but your block
style had a node distance
which was resetting every time it is issued. I've made it 2mm such that we can see the difference easier.
\documentclass[tikz]{standalone}
\usetikzlibrary{arrows,shapes.geometric,positioning}
\begin{document}
\begin{tikzpicture}[decision/.style={diamond, draw, text width=4.5em, text badly centered, node distance=3.5cm, inner sep=0pt},
block/.style ={rectangle, draw, text width=6em, text centered, rounded corners, minimum height=4em, minimum height=2em},
cloud/.style ={draw, ellipse, minimum height=2em},
line/.style ={draw,-latex'},
node distance = 1cm,
auto]
\node [block] (1st) {1st};
\node [block, right= of 1st] (2nd1) {2nd1};
\begin{scope}[node distance=2mm and 10mm]%Here we change it for everything inside this scope
\node [block, above= of 2nd1] (2nd2) {2nd2};
\node [block, below= of 2nd1] (2nd3) {2nd3};
\node [block, right= of 2nd1] (3rd1) {3rd1};
\node [block, above= of 3rd1] (3rd2) {3rd2};
\node [block, above= of 3rd2] (3rd3) {3rd3};
\end{scope}
\node [block, below= of 3rd1] (3rd4) {3rd4};
\node [block, below= of 3rd4] (3rd5) {3rd5};
\path [line] (1st) -- (2nd1);
\path [line] (2nd1) -- (2nd2);
\path [line] (2nd1) -- (2nd3);
\path [line] (2nd2) -- (3rd3);
\path [line] (2nd1) -- (3rd1);
\path [line] (1st) -- (2nd1);
\end{tikzpicture}
\end{document}
Best Answer
Add
baseline=(current bounding box.center)
as option to thetikzpicture
and\tikz
command. This places the baseline of the diagrams at its center and will cause a vertical alignment with the other baselines(!).However, if you want to align it with the vertical center of the text, i.e. the center of "is", which looks most likely better, use
baseline={([yshift=-1ex]current bounding box.center)}
instead. Adjust the value for your liking. Maybe.8ex
might be better (an uppercase letter is about 1.6ex).Some other hints:
In general you can use
\raisebox{<length>}{<content>}
to raise or lower some material. You can use then\height
,\depth
,\width
and\totalheight
to refer to the original dimensions of the content. Use\dimexpr
to do math:There is also
\vcenter{...}
which will center things vertical, but it is intended to be used in mathmode.