complex nodes with tikz-qtree

There's no need to wrap your complex node in a tabular environment. TikZ allows nodes to contain newlines provided you specify an explicit alignment for the text in the node.

So add the following line to your document:

\tikzset{every tree node/.style={align=left, anchor=north}}

or

\tikzset{every tree node/.style={align=center, anchor=north}}

And you don't need to use the tabulars at all.

\documentclass{scrbook}

\usepackage{tikz-qtree}
\tikzset{every tree node/.style={align=left, anchor=north}}
\begin{document}

\Tree [.V [.{[spr eliste \\ comps eliste]} ] [.NP dogs ] [.V sleep ] ] 

\end{document}

output of code

With respect to your edit, using anchor=north isn't appropriate for terminal nodes of the tree if you need the nodes to line up on a baseline. (I don't usually draw trees this way, so I wasn't thinking much about that.)

You can solve this problem by using:

\tikzset{every internal node/.style={align=left, anchor=north}}

or

\tikzset{every internal node/.style={align=center, anchor=north}}

The internal node key targets all the non-terminals in the tree.


I am not sure if this is what you want to achieve:

\documentclass{scrbook}
\usepackage{tikz-qtree}

\begin{document}

This is some text and the figure should be the size of the text not larger and not smaller.

\begin{figure}[!ht]
\begin{tikzpicture}
\Tree [.V [.{\begin{tabular}[t]{@{}l@{}} spr eliste \\ comps eliste \end{tabular}} ] [.N tree ] ]
\end{tikzpicture}
\end{figure}

This is some text and the figure should be the size of the text not larger and not smaller.

\end{document}

enter image description here