Построение красивых генеалогических и синтаксических деревьев (пакет forest)
Почему пакет forest вытеснил qtree и чистый TikZ
Создание иерархических древовидных структур в классическом TikZ требует ручного задания координат каждого узла и постоянного подбора отступов, чтобы ветви не накладывались друг на друга (для сравнения ознакомьтесь с построением графов и автоматов в TikZ). Устаревший пакет qtree прост, но ограничен в возможностях оформления.
Пакет forest объединяет простоту скобочной нотации с интеллектуальным алгоритмом упаковки узлов: он автоматически минимизирует площадь дерева, сохраняя равные расстояния между листьями и предотвращая пересечение связей.
Нарисовать дерево в latex пакет forest: базовый синтаксис скобок
Подключите пакет: \usepackage{forest}. Чтобы быстро нарисовать дерево в latex пакет forest, используется окружение forest, где каждый узел заключается в квадратные скобки [...]:
\begin{forest}
[Корень
[Левый потомок
[Лист 1]
[Лист 2]
]
[Правый потомок
[Лист 3]
]
]
\end{forest}
Вложенность скобок автоматически определяет глубину дерева в иерархии без необходимости прописывать связи вручную.
Синтаксическое дерево latex онлайн: лингвистический разбор
В лингвистике и компьютерной филологии постоянно строится синтаксическое дерево latex онлайн (дерево составляющих или зависимостей):
\begin{forest}
[S
[NP [Студент, roof]]
[VP
[V [пишет]]
[NP
[Adj [отличный]]
[N [отчет]]
]
]
]
\end{forest}
Опция roof превращает ветвь в аккуратный треугольник над группой слов, что является общепринятым стандартом лингвистических публикаций.
Генеалогические древа и деревья решений
Для генеалогических исследований или деревьев принятия решений в машинном обучении (а также сопутствующих блок-схем алгоритмов по ГОСТ) узлам задают рамки, заливку и подписи условий на дугах:
\begin{forest}
for tree={
draw,
rounded corners,
edge={-latex},
font=\small,
l sep=12mm
}
[Влажность > 70\%
[Дождь?, edge label={node[midway,left]{Да}}
[Сидеть дома, fill=red!20]
[Гулять, fill=green!20]
]
[Идти в парк, edge label={node[midway,right]{Нет}}, fill=green!20]
]
\end{forest}
Директива for tree={...} применяет стили глобально ко всем узлам дерева: форму рамок, геометрию стрелок и расстояние между уровнями l sep.
Стилизация узлов: цвета, рамки и стрелки
Основные параметры форматирования пакета forest:
grow'=east— ориентация дерева слева направо вместо классического сверху вниз.s sep=5mm— минимальное расстояние между соседними узлами одного уровня (sibling separation).tier=уровень— принудительное выравнивание разнородных листьев по одной горизонтальной линии.
Практические советы
Кириллица внутри формул в узлах
Если узел содержит математическую формулу, используйте стандартные знаки доллара: [$x_1 + x_2$, draw].
Перенос строк внутри узла
Для многострочного текста внутри плашки добавьте параметр align=center: [Длинный текст\\вторая строка, align=center, draw].