Перейти к содержанию

Узлы, стрелки и схемы в TikZ

Ставьте каждый блок через \node[draw] (name) {text};, располагайте следующие с библиотекой positioning (right=of name) и соединяйте их через \draw[->] (a) -- (b);.

Узлы

Узел это фрагмент текста в точке, при желании с рамкой. draw даёт ему контур, fill фон, а circle или ellipse круглую форму (по умолчанию rectangle). Имя в круглых скобках позволяет потом ссылаться на узел.

Узлы с формами, заливкой и размерами

LaTeXПреамбула: \usepackage{tikz}Открыть в редакторе (откроется в новой вкладке)
\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.

Стрелки от якорей узла

LaTeXПреамбула: \usepackage{tikz}Открыть в редакторе (откроется в новой вкладке)
\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 превращается в заглушку

LaTeXПреамбула: \usepackage{tikz}Открыть в редакторе (откроется в новой вкладке)
\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.