a) How can I align the leaf nodes at the bottom instead of immediately beneath their mother node?

b) The vertical spacing of the things in the shortstack is inconsistent (probably by some sort of "if it fits" criterion - if if there's an "j" or a "g" on the upper word, the spacing increases to accomodate the downstroke). Is there a better way of writing things one beneath another that will always have the same vertical spacing?

Dunno, I couldn't get in-node formatting to work in tikz-qtree. Besides, this is almost good-enough (if it only weren't for the damn shortstack spacing problems)
–
AmadanOct 24 '11 at 19:09

I guess the question is how you want the tree to look. As you have more nodes and if the tree has right hand nodes that themselves branch, having the branches project directly to the terminals makes for a very large tree. If the example in my answer to the linked question is a satisfactory way to represent the terminal nodes, edit your question to show a minimal example of the problem you are having with the in-node formatting, and maybe we can solve that.
–
Alan MunnOct 24 '11 at 19:23

3 Answers
3

Using \skiplevel{...} or \skiplevels{<num>}...\endskiplevels you can push nodes down a (or <num>) level(s) to line them up with nodes on a lower level. The projection is such that it keeps the horizontal alignment as if the nodes were on their original level.

Additionally, instead of using \substack, you could add the contents in a tabular like in the macro \stackit{<top>}{<bottom>} below. It places <top> and <bottom> in a tabular (aligned at the top [t]) with center alignment (and no inter-column spacing @{} on either side). Additionally, <top> is typeset using emphasize{\em ..}. All the baselines will be vertically aligned. If you have a more complex arrangement of leave node labels, then other alternatives also exist:

Sorry, corrected the code now - \renewcommand is only used if the macro already exists. If not, use \newcommand. \providecommand would also have worked, which executes either \renew... or \new... based on the existence of the command.
–
WernerOct 24 '11 at 19:45