Построение красивых генеалогических и синтаксических деревьев (пакет forest)

Почему пакет forest вытеснил qtree и чистый TikZ

Создание иерархических древовидных структур в классическом TikZ требует ручного задания координат каждого узла и постоянного подбора отступов, чтобы ветви не накладывались друг на друга (для сравнения ознакомьтесь с построением графов и автоматов в TikZ). Устаревший пакет qtree прост, но ограничен в возможностях оформления.

Пакет forest объединяет простоту скобочной нотации с интеллектуальным алгоритмом упаковки узлов: он автоматически минимизирует площадь дерева, сохраняя равные расстояния между листьями и предотвращая пересечение связей.

Нарисовать дерево в latex пакет forest: базовый синтаксис скобок

Подключите пакет: \usepackage{forest}. Чтобы быстро нарисовать дерево в latex пакет forest, используется окружение forest, где каждый узел заключается в квадратные скобки [...]:

LaTeX
\begin{forest}
[Корень
    [Левый потомок
        [Лист 1]
        [Лист 2]
    ]
    [Правый потомок
        [Лист 3]
    ]
]
\end{forest}

Вложенность скобок автоматически определяет глубину дерева в иерархии без необходимости прописывать связи вручную.

Синтаксическое дерево latex онлайн: лингвистический разбор

В лингвистике и компьютерной филологии постоянно строится синтаксическое дерево latex онлайн (дерево составляющих или зависимостей):

LaTeX
\begin{forest}
[S
    [NP [Студент, roof]]
    [VP
        [V [пишет]]
        [NP
            [Adj [отличный]]
            [N [отчет]]
        ]
    ]
]
\end{forest}

Опция roof превращает ветвь в аккуратный треугольник над группой слов, что является общепринятым стандартом лингвистических публикаций.

Генеалогические древа и деревья решений

Для генеалогических исследований или деревьев принятия решений в машинном обучении (а также сопутствующих блок-схем алгоритмов по ГОСТ) узлам задают рамки, заливку и подписи условий на дугах:

LaTeX
\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=уровень — принудительное выравнивание разнородных листьев по одной горизонтальной линии.

Практические советы

1

Кириллица внутри формул в узлах

Если узел содержит математическую формулу, используйте стандартные знаки доллара: [$x_1 + x_2$, draw].

2

Перенос строк внутри узла

Для многострочного текста внутри плашки добавьте параметр align=center: [Длинный текст\\вторая строка, align=center, draw].

Попробуйте прямо сейчас

Визуализируйте структуры в Labkeeper

Онлайн-редактор LaTeX с поддержкой TikZ и пакета forest для автоматического построения векторных схем и графов.

LaTeX editor screenshot
  • Полновесная компиляция: Получайте PDF профессионального качества с помощью встроенного LaTeX-компилятора.
  • 60 секунд на выполнение: Работайте со сложными документами без ограничений — лимит времени компиляции в разы выше, чем в аналогичных сервисах.
  • Умная конвертация: Любые вычислительные формулы автоматически преобразовываются в красивый LaTeX
  • Гибридный синтаксис: Используйте легковесные вставки Markdown прямо в сложном LaTeX-коде для ускорения работы.
bg

Другие статьи