Узлы, стрелки и схемы в TikZ
Ставьте каждый блок через \node[draw] (name) {text};, располагайте следующие с библиотекой positioning (right=of name) и соединяйте их через \draw[->] (a) -- (b);.
Узлы
Узел это фрагмент текста в точке, при желании с рамкой. draw даёт ему контур, fill фон, а circle или ellipse круглую форму (по умолчанию rectangle). Имя в круглых скобках позволяет потом ссылаться на узел.
Узлы с формами, заливкой и размерами
\begin{tikzpicture}
\node[draw] (a) at (0,0) {plain box};
\node[draw, rounded corners, fill=blue!10] (b) at (3,0) {rounded};
\node[draw, circle, fill=yellow!40] (c) at (5.5,0) {44};
\node[draw, ellipse] (d) at (8,0) {ellipse};
\node[draw, minimum width=2.5cm, minimum height=1cm] at (1,-1.6) {fixed size};
\node[draw, text width=2.6cm, align=center] at (5,-1.6) {text that wraps onto two lines};
\end{tikzpicture}Стрелки между узлами
\draw[->] (a) -- (b); рисует стрелку от узла a к узлу b. Линия начинается и заканчивается на границах узлов, а не в их центрах. -| и |- рисуют соединения под прямым углом.
Небольшая блок-схема с библиотекой positioning
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning, arrows.meta}
\begin{document}
\begin{tikzpicture}[
node distance=1.2cm and 1.6cm,
box/.style={draw, rounded corners, fill=blue!8, minimum width=2.2cm, minimum height=0.8cm},
>={Stealth},
]
\node[box] (in) {Read data};
\node[box, right=of in] (clean) {Clean};
\node[box, right=of clean] (fit) {Fit model};
\node[draw, circle, below=of clean] (ok) {OK?};
\draw[->] (in) -- (clean);
\draw[->] (clean) -- (fit);
\draw[->] (fit) |- (ok);
\draw[->] (ok) -| node[pos=0.75, left] {no} (in);
\end{tikzpicture}
\end{document}right=of in ставит узел справа от in на расстоянии node distance. Другие направления: left, above, below и диагонали вроде above right. right=2cm of in задаёт расстояние для одного узла.
Подписи на стрелках и узлах
node, записанный посреди пути, подписывает его. above, below, left, right задают сторону, а midway, near start, near end или pos=0.3 положение вдоль пути. label=below:text добавляет подпись к узлу.
Диаграмма состояний с изогнутыми подписанными рёбрами
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning, arrows.meta}
\begin{document}
\begin{tikzpicture}[state/.style={draw, circle, minimum size=1cm}, >={Stealth}, node distance=2.4cm]
\node[state, label=below:start] (s0) {$q_0$};
\node[state, right=of s0] (s1) {$q_1$};
\node[state, right=of s1, fill=green!15] (s2) {$q_2$};
\draw[->] (s0) to[bend left] node[above] {$a$} (s1);
\draw[->] (s1) to[bend left] node[below] {$b$} (s0);
\draw[->] (s1) -- node[above] {$a$} (s2);
\end{tikzpicture}
\end{document}Якоря
У каждого узла есть якоря на границе: north, south, east, west и углы вроде north east. (box.north) это точка в середине верхней стороны box.
Стрелки от якорей узла
\begin{tikzpicture}
\node[draw, minimum width=3cm, minimum height=1cm] (box) {Server};
\draw[->] (box.north) -- ++(0,0.7) node[above] {north};
\draw[->] (box.east) -- ++(1,0) node[right] {east};
\draw[->] (box.south west) -- ++(-0.6,-0.6) node[below left] {south west};
\node[anchor=west] at (box.south east) {\small (anchor=west)};
\end{tikzpicture}anchor=west у узла располагает узел так, что его западный якорь оказывается в заданной точке.
Наконечники стрелок
| Параметр | Наконечник | В Scissor LaTeX |
|---|---|---|
->, <-, <-> | стандартный наконечник TikZ | Работает |
-stealth, -latex | классические наконечники stealth и LaTeX | Работает |
-{Stealth}, -{Latex} (arrows.meta) | более новые наконечники | Работает |
|-| | черта на каждом конце | Работает |
>={Stealth} у рисунка | наконечник, который использует -> | Работает |
параметры наконечника вроде -{Stealth[length=3mm]} | размеры и формы наконечника | Частично: наконечник рисуется в размере по умолчанию |
Размеры наконечников близки к TikZ, но не идентичны.
Что не поддерживается
Эти возможности компилируются в установленном TeX, но не здесь. О большинстве из них сообщает вкладка «Проблемы».
| Возможность | Что происходит в Scissor LaTeX | Что писать вместо этого |
|---|---|---|
\matrix (и matrix of nodes) | Весь рисунок превращается в пунктирную рамку с сообщением | Располагайте узлы через at (x,y) или positioning |
\pic | Весь рисунок превращается в пунктирную рамку с сообщением | Повторите рисунок в scope со shift |
декорации (decorate, decoration=...) | Игнорируются с сообщением; путь рисуется простым | Простой или штриховой путь |
формы узлов из shapes.geometric (diamond, trapezium ...) | Рисуются прямоугольником, с сообщением | rectangle, circle или ellipse |
двойные линии double | Игнорируются с сообщением | Два узла или два пути |
to[loop above] (петля на одном узле) | Петля не рисуется, сообщения нет; её подпись оказывается на узле | arc или кривая .. controls .. от границы узла |
pin= | Текст выноски показывается без линии | label= |
pos= на пути -| или |- | Подпись ставится только вдоль второго отрезка, поэтому pos=0.25 оказывается возле угла | Подпишите второй отрезок через pos=0.75 или разбейте путь на два |
tikz-cd, circuitikz, forest | Рисунок пропускается, с сообщением | Простой TikZ или изображение |
\matrix превращается в заглушку
\begin{tikzpicture}
\matrix[draw] {
\node {a}; & \node {b}; \\
\node {c}; & \node {d}; \\
};
\end{tikzpicture}Вкладка «Проблемы»: \matrix in a picture is not supported yet
Узел-ромб рисуется прямоугольником
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{tikzpicture}
\node[draw, diamond] at (0,0) {Yes?};
\node[draw, ellipse] at (2.5,0) {ellipse works};
\end{tikzpicture}
\end{document}Вкладка «Проблемы»: TikZ node option 'diamond' is not supported yet
Руководство TikZ (в пакете PGF) описывает узлы, библиотеку positioning и наконечники стрелок: ctan.org/pkg/pgf. О фигурах и путях читайте на странице рисунков в TikZ.
См. также основы TikZ, TikZ и рисунки и изображения.
Вопросы и ответы
Как нарисовать блок-схему в LaTeX?
Используйте узлы TikZ с draw для блоков, библиотеку positioning (right=of a, below=of b) для их размещения и \draw[->] (a) -- (b); для стрелок.
Как поставить текст на стрелку в TikZ?
Запишите узел посреди пути: \draw[->] (a) -- node[above] {text} (b);.
Работает ли tikz-cd в Scissor LaTeX?
Пока нет. Диаграмма tikzcd пропускается с сообщением. Вместо этого рисуйте простые диаграммы узлами и стрелками.
Каждый пример на этой странице верстается в Scissor LaTeX при сборке сайта. Обновлено 2026-11-07.