Код

Код

У меня есть дерево (см. пример), в котором текст на уровне 1 не выровнен, так как один из текстов использует некоторое математическое выражение с показателем (т. е. $\mathtt{int}^2$). Есть идеи, как выровнять все тексты, которые находятся на одном уровне дерева?

\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}

решение1

Вы можете просто добавить every node/.append style={anchor=base}так, чтобы все узлы были выровнены по своей базовой точке.

Код

\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}

Выход

введите описание изображения здесь

решение2

Используйте anchor=baseключ от дерева.

Пример

\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}

Результат

введите описание изображения здесь

Связанный контент