Узлы и стрелки

Именованные узлы, относительное размещение, кончики стрелок.

Узлы и стрелки

Почти каждая диаграмма TikZ сводится к двум ингредиентам. Узел — это позиционированный фрагмент контента, обычно это маркированный прямоугольник или круг. Ребро — это линия или стрелка, соединяющая два узла. Как только вы сможете размещать узлы и соединять их, блок-схемы, конвейеры и блок-диаграммы разного размера станут одним и тем же упражнением. В приведенном ниже примере размещаются два именованных поля и между ними рисуется стрелка с надписью:

\usetikzlibrary{positioning,arrows.meta}
\begin{tikzpicture}
\node[draw] (src) {Source};
\node[draw, right=2cm of src] (dst) {Sink};
\draw[-{Latex}] (src) -- node[above] {edge} (dst);
\end{tikzpicture}

Именование и размещение узлов

В \node[draw] (src) {Source}; параметры скобок определяют стиль узла, а draw означает рисование его границы, без чего вы получаете плавающий текст. (src) — это имя узла, а {Source} — его содержимое. Имя — важная часть: оно позволяет другим командам ссылаться на этот узел, не зная его координат.

Второй узел показывает, почему это важно. right=2cm of src берется из библиотеки positioning и помещает dst на два сантиметра правее src, измеряя между их границами. Библиотека также предоставляет left=of, above=of, below=of и диагональные комбинации, такие как above right=of. Постройте диаграмму таким образом (каждый узел относительно существующего), и макет останется неизменным, когда текст изменит размер. Абсолютные координаты, такие как \node at (4,2), по-прежнему используются, но диаграмма, построенная на них, требует ручной перенумерации каждый раз, когда один блок увеличивается.

Рисуем стрелку

\draw (src) -- (dst); рисует прямую линию между двумя именованными узлами, и TikZ автоматически начинает и заканчивает линию на границах узлов, а не в их центрах. Параметр [-{Latex}] определяет кончики стрелок: ничего до дефиса означает отсутствие кончика хвоста, а Latex после него выбирает сплошной наконечник стрелки из библиотеки arrows.meta в месте назначения. Написание {Latex}-{Latex} даст двунаправленную стрелку.

Средний путь node[above] {edge} — это метка, прикрепленная к самой линии. Узел, написанный внутри пути, помещается в эту точку пути, по умолчанию посередине, а параметр «above» смещает его чуть выше линии, чтобы текст не располагался на обводке. Это стандартный способ аннотирования переходов и потоков данных.

Привычки, которые окупаются

Назовите каждый узел, даже на крошечных диаграммах. К безымянным узлам невозможно подключиться, а маленькие диаграммы редко остаются маленькими. По той же причине отдавайте предпочтение относительному размещению, а не позиционированию, а не абсолютным координатам. Каждое утверждение TikZ заканчивается точкой с запятой. Пропуск одного из них — самая распространенная ошибка TikZ, и сообщения часто указывают далеко на реальную проблему. Чтобы расположить множество блоков в аккуратные строки и столбцы, перейдите к выровненным полям блок-схемы.

Вернуться к Рисовать в TeX