Código

Código

Tengo un árbol (ver ejemplo) para el cual el texto en el nivel 1 no está alineado ya que uno de los textos usa alguna expresión matemática con un exponente (es decir, $\mathtt{int}^2$). ¿Alguna idea de cómo alinear todos los textos que se encuentran en el mismo nivel del árbol?

\documentclass{book}
\usepackage{tikz}
\begin{document}
{\tiny
\begin{tikzpicture}
\begin{scope}[level distance=6mm]
  \tikzstyle{level 1}=[sibling distance=8mm]
  \node (1){$\mathtt{atom}$}
    child {node (2){$\mathtt{atom}$}}
    child {node (3){$\mathtt{int}^2$}}
    child {node (4){$\mathtt{collection}$}
     child {node (5){$\mathtt{int}$}}};
\end{scope}
\end{tikzpicture}
}
\end{document}

Respuesta1

Simplemente puede agregar every node/.append style={anchor=base}para que todos los nodos estén alineados en su punto base.

Código

\documentclass{book}
\usepackage{tikz}
\begin{document}
{\tiny
\begin{tikzpicture}
\begin{scope}[level distance=6mm,every node/.append style={anchor=base}]
  \tikzstyle{level 1}=[sibling distance=8mm]
  \node (1){$\mathtt{atom}$}
    child {node (2){$\mathtt{atom}$}}
    child {node (3){$\mathtt{int}^2$}}
    child {node (4){$\mathtt{collection}$}
     child {node (5){$\mathtt{int}$}}};
\end{scope}
\end{tikzpicture}
}
\end{document}

Producción

ingrese la descripción de la imagen aquí

Respuesta2

Usa la anchor=basellave del árbol.

Ejemplo

\documentclass{book}
\usepackage{tikz}
\begin{document}
{\tiny
\begin{tikzpicture}
\begin{scope}[level distance=6mm, anchor=base]
  \tikzstyle{level 1}=[sibling distance=8mm]
  \node (1){$\mathtt{atom}$}
    child {node (2){$\mathtt{atom}$}}
    child {node (3){$\mathtt{int}^2$}}
    child {node (4){$\mathtt{collection}$}
     child {node (5){$\mathtt{int}$}}};
\end{scope}
\end{tikzpicture}
}
\end{document}

Resultado

ingrese la descripción de la imagen aquí

información relacionada