Процесс Тип
Графическое выражение
Мышление Тип
Структурированное выражение
Заметки Тип
Эффективное выражение

Блок-схемаСинтаксис

Базовое определение

Блок-схема состоит из узлов (геометрических фигур) и соединительных линий (стрелок или линий). Код Mermaid определяет способ построения узлов и соединительных линий и поддерживает множество типов стрелок, многонаправленные стрелки, а также произвольные связи с подпроцессами.

Предупреждение Если вы используете слово "end" в узле блок-схемы, сделайте первую букву или всё слово заглавными (например: "End" или "END"); ввод "end" полностью в нижнем регистре приведёт к ошибке блок-схемы.

Предупреждение Если при соединении узлов блок-схемы вы используете букву "o" или "x" в качестве первой буквы, добавьте пробел перед буквой или сделайте букву заглавной (например: "dev--- ops", "dev---Ops").

Один узел (по умолчанию)

Код
                            
Копировать
Встраивание
--- title: Node --- flowchart LR id
Информация

id — это содержимое, отображаемое в блоке.

Подсказка

Синтаксис создания блок-схемы: помимо flowchart можно также использовать graph .

Узел с текстом

Также можно задать блоку текст, отличный от id. Если выполнить это несколько раз, система примет последний указанный текст для этого узла. Кроме того, если позже для узла определена соединительная линия, определение текста можно опустить; при рендеринге блока будет использован ранее определённый текст.

Код
                            
Копировать
Встраивание
--- title: Node with text --- flowchart LR id1[This is the text in the box]

Текст Unicode

Заключите текст Unicode в двойные кавычки.

Код
                            
Копировать
Встраивание
flowchart LR id["This ❤ Unicode"]

Формат Markdown

Заключите текст Markdown в двойные кавычки и обратные кавычки

Код
                            
Копировать
Встраивание
flowchart LR markdown["`This **is** _Markdown_`"] newLines["`Line1 Line 2 Line 3`"] markdown --> newLines

Направление

Объявляет направление блок-схемы

Означает, что блок-схема расположена сверху вниз (TD или TB)

Код
                            
Копировать
Встраивание
flowchart TD Start --> Stop

Направления блок-схемы включают:

  • TB - сверху вниз
  • TD - сверху вниз (то же, что сверху вниз)
  • BT - снизу вверх
  • RL - справа налево
  • LR - слева направо

Форма узла

Скруглённый прямоугольник

Код
                            
Копировать
Встраивание
flowchart LR id1(This is the text in the box)

Форма стадиона

Код
                            
Копировать
Встраивание
flowchart LR id1([This is the text in the box])

Подпроцесс

Код
                            
Копировать
Встраивание
flowchart LR id1[[This is the text in the box]]

База данных

Код
                            
Копировать
Встраивание
flowchart LR id1[(Database)]

Круг

Код
                            
Копировать
Встраивание
flowchart LR id1((This is the text in the circle))

Асимметричная фигура

Код
                            
Копировать
Встраивание
flowchart LR id1>This is the text in the box]

Ромб

Код
                            
Копировать
Встраивание
flowchart LR id1{This is the text in the box}

Шестиугольник

Код
                            
Копировать
Встраивание
flowchart LR id1{{This is the text in the box}}

Параллелограмм

Код
                            
Копировать
Встраивание
flowchart TD id1[/This is the text in the box/]

Обратный параллелограмм

Код
                            
Копировать
Встраивание
flowchart TD id1[\This is the text in the box\]

Трапеция

Код
                            
Копировать
Встраивание
flowchart TD A[/ProcessOn\]

Перевёрнутая трапеция

Код
                            
Копировать
Встраивание
flowchart TD B[\ProcessOn/]

Двойной круг

Код
                            
Копировать
Встраивание
flowchart TD id1(((This is the text in the circle)))

Расширение форм узлов блок-схемы Mermaid

Mermaid представила 30 новых форм для повышения гибкости и точности создания блок-схем. Эти новые формы предоставляют больше возможностей для наглядного представления процессов, решений, событий, хранилищ данных и других элементов блок-схемы, тем самым повышая ясность и семантический смысл.

Новый синтаксис определения форм

Mermaid теперь поддерживает общий синтаксис для определения типов форм, чтобы справляться с растущим числом форм. Этот синтаксис позволяет задавать конкретную форму для узла в понятном и гибком формате.

                            
Копировать
Встраивание
A@{ shape: rect }

Этот синтаксис создаёт узел A в виде прямоугольника. Он рендерится так же, как [A] или A.

Полный список форм узлов

Ниже приведён полный список новых форм узлов с их соответствующими значениями, сокращёнными названиями и псевдонимами:

Семантическое название Синтаксис графа Сокращённое название синтаксиса Альтернативный синтаксис Подробное описание
Карточка Notched Rectangle notch-rect card, notched-rectangle Обозначает карточку
Упорядочивание Hourglass hourglass collate Обозначает операцию упорядочивания
Канал связи Lightning Bolt bolt com-link, lightning-bolt Канал связи
Комментарий Curly Brace brace brace-l, comment Добавить комментарий
Комментарий справа Curly Brace brace-r Добавить комментарий
Комментарий с фигурными скобками с обеих сторон Curly Braces braces Добавить комментарий
Ввод или вывод данных Lean Right lean-r in-out, lean-right Обозначает ввод или вывод
Ввод или вывод данных Lean Left lean-l lean-left, out-in Обозначает вывод или ввод
База данных Cylinder cyl cylinder, database, db Хранилище базы данных
Решение Diamond diam decision, diamond, question Шаг принятия решения
Задержка Half-Rounded Rectangle delay half-rounded-rectangle Обозначает задержку
Память прямого доступа Horizontal Cylinder h-cyl das, horizontal-cylinder Память прямого доступа
Дисковая память Lined Cylinder lin-cyl disk, lined-cylinder Дисковая память
Дисплей Curved Trapezoid curv-trap curved-trapezoid, display Обозначает отображение информации на экране, терминале и других устройствах
Разделение обработки Divided Rectangle div-rect div-proc, divided-process, divided-rectangle Форма разделения обработки
Документ Document doc document Обозначает документ
Событие Rounded Rectangle rounded event Обозначает событие
Извлечение Triangle tri extract, triangle Процесс извлечения
Разветвление/слияние Filled Rectangle fork join Разветвление или слияние в блок-схеме
Внутренняя память Window Pane win-pane internal-storage, window-pane Внутренняя память
Точка соединения Filled Circle f-circ filled-circle, junction Точка соединения
Документ с линией Lined Document lin-doc lined-document Документ с линией
Процесс с линией/тенью Lined Rectangle lin-rect lin-proc, lined-process, lined-rectangle, shaded-process Форма процесса с линией
Ограничение цикла Trapezoidal Pentagon notch-pent loop-limit, notched-pentagon Шаг ограничения цикла
Ручной файл Flipped Triangle flip-tri flipped-triangle, manual-file Операция с ручным файлом
Ручной ввод Sloped Rectangle sl-rect manual-input, sloped-rectangle Шаг ручного ввода
Ручная операция Trapezoid Base Top trap-t inv-trapezoid, manual, trapezoid-top Обозначает ручную задачу
Несколько документов Stacked Document docs documents, st-doc, stacked-document 多个文档
Несколько процессов Stacked Rectangle st-rect processes, procs, stacked-rectangle 多个进程
Неправильная фигура Odd odd Неправильная фигура
Бумажная лента Flag flag paper-tape Бумажная лента
Подготовка условия Hexagon hex hexagon, prepare Шаг подготовки или условия
Приоритетное действие Trapezoid Base Bottom trap-b priority, trapezoid, trapezoid-bottom Приоритетное действие
Обработка Rectangle rect proc, process, rectangle Стандартная форма обработки
Начало Circle circle circ Начальная точка
Начало Small Circle sm-circ small-circle, start Начало в виде малого круга
Останов Double Circle dbl-circ double-circle Обозначает точку остановки
Останов Framed Circle fr-circ framed-circle, stop Обозначает точку остановки
Хранение данных Bow Tie Rectangle bow-rect bow-tie-rectangle, stored-data Хранение данных
Подпроцесс Framed Rectangle fr-rect framed-rectangle, subproc, subprocess, subroutine Подпроцесс, подпрограмма
Резюме Crossed Circle cross-circ crossed-circle, summary Резюме
Помеченный документ Tagged Document tag-doc tagged-document Помеченный документ
Стандартизированный процесс Tagged Rectangle tag-rect tag-proc, tagged-process, tagged-rectangle 已标准进程
Конечная точка Stadium stadium pill, terminal Конечная точка
Текстовый блок Text Block text Текстовый блок

Ниже приведён пример кода блок-схемы с использованием новых форм:

Код
                            
Копировать
Встраивание
flowchart RL A@{ shape: manual-file, label: "File Handling"} B@{ shape: manual-input, label: "User Input"} C@{ shape: docs, label: "Multiple Documents"} D@{ shape: procs, label: "Process Automation"} E@{ shape: paper-tape, label: "Paper Records"}

Процесс

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: rect, label: "This is a process" }

Событие

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: rounded, label: "This is an event" }

Подпроцесс

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: subproc, label: "This is a subprocess" }

База данных (цилиндр)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: cyl, label: "Database" }

Начало (круг)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: circle, label: "Start" }

Неправильная фигура

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: odd, label: "Odd shape" }

Решение (ромб)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: diamond, label: "Decision" }

Подготовка условия (шестиугольник)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: hex, label: "Prepare conditional" }

Ввод/вывод данных (наклон вправо)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: lean-r, label: "Input/Output" }

Ввод/вывод данных (наклон влево)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: lean-l, label: "Input/Output" }

Приоритетное действие (трапеция)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: trap-b, label: "Priority action" }

Ручная операция (перевёрнутая трапеция)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: trap-t, label: "Manual operation" }

Останов (двойной круг)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: dbl-circ, label: "Stop" }

Текстовый блок

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: text, label: "This is a text block" }

Карточка (прямоугольник с вырезом)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: notch-rect, label: "Card" }

Процесс с линией/тенью

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: lin-rect, label: "Lined process" }

Начало (малый круг)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: sm-circ, label: "Small start" }

Останов (круг в рамке)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: framed-circle, label: "Stop" }

Разветвление/слияние (длинный прямоугольник)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: fork, label: "Fork or Join" }

Упорядочивание (песочные часы)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: hourglass, label: "Collate" }

Комментарий (фигурные скобки)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: comment, label: "Comment" }

Комментарий справа (правая фигурная скобка)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: brace-r, label: "Comment" }

Комментарий (со скобками с обеих сторон)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: braces, label: "Comment" }

Канал связи (молния)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: bolt, label: "Communication link" }

Документ

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: doc, label: "Document" }

Задержка (полукруглый прямоугольник)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: delay, label: "Delay" }

直接存取存储(水平圆柱)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: das, label: "Direct access to storage" }

Дисковая память (цилиндр с прорезью)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: lin-cyl, label: "Disk storage" }

Дисплей (фигура отображения)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: curv-trap, label: "Display" }

Разделение обработки (разделённый прямоугольник)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: div-rect, label: "Divided process" }

Извлечение (малый треугольник)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: tri, label: "Extract" }

Внутренняя память (панель окна)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: win-pane, label: "Internal storage" }

Точка соединения (закрашенный круг)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: f-circ, label: "Connect" }

Документ с линией

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: lin-doc, label: "Lined document" }

Ограничение цикла (пятиугольник с вырезом)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: notch-pent, label: "Loop limit" }

Ручной файл (перевёрнутый треугольник)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: flip-tri, label: "Manual file" }

Ручной ввод (прямоугольная трапеция)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: sl-rect, label: "Manual input" }

Несколько документов (составной документ)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: docs, label: "Multi-document" }

Несколько процессов (составной прямоугольник)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: processes, label: "Multiple processes" }

Бумажная лента (флаг)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: flag, label: "Paper tape" }

Хранение данных (прямоугольник-бабочка)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: bow-rect, label: "Data stored" }

Резюме (круг с крестом)

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: cross-circ, label: "Summary" }

Помеченный документ

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: tag-doc, label: "Tagged document" }

Помеченный процесс

Код
                            
Копировать
Встраивание
flowchart TD A@{ shape: tag-rect, label: "Tagged process" }

Особые формы в блок-схеме Mermaid

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

Форма изображения

Вы можете использовать image для вставки изображения в блок-схему; синтаксис определения изображения следующий:

                            
Копировать
Встраивание
flowchart TD A@{ img: "https://www.processon.com/image.png", label: "Image Label", pos: "t", w: 60, h: 60, constraint: "off" }

Параметр

  • img: URL-адрес изображения для отображения.
  • label: текстовая метка, связанная с изображением; может быть любой строкой. Если не определена, метка не отображается.
  • pos: положение метки. Если не определено, по умолчанию метка размещается внизу изображения.
  • w: ширина изображения. Если не определено, по умолчанию используется естественная ширина изображения.
  • h: высота изображения. Если не определено, по умолчанию используется естественная высота изображения.
  • constraint: определяет, ограничивает ли изображение размер узла. Эта настройка также гарантирует, что изображение сохраняет исходное соотношение сторон и подстраивает высоту в соответствии с шириной. Если не определено, по умолчанию используется off .

Изображения придают вашей блок-схеме дополнительную гибкость и визуальную привлекательность, делая её более информативной и привлекательной.

Соединения между узлами

Узлы могут соединяться соединительными линиями и стрелками. Существуют различные типы связей, а также можно прикреплять текстовые строки к связям.

Связь со стрелкой

Код
                            
Копировать
Встраивание
flowchart LR A-->B

Открытая связь

Код
                            
Копировать
Встраивание
flowchart LR A --- B

Связь с текстом

Код
                            
Копировать
Встраивание
flowchart LR A-- This is the text! ---B

или

Код
                            
Копировать
Встраивание
flowchart LR A --- | This is the text| B

Связь со стрелкой и текстом

Код
                            
Копировать
Встраивание
flowchart LR A-->|text|B

или

Код
                            
Копировать
Встраивание
flowchart LR A-- text -->B

Пунктирная связь

Код
                            
Копировать
Встраивание
flowchart LR A-.->B;

Пунктирная связь с текстом

Код
                            
Копировать
Встраивание
flowchart LR A-. text .->B;

Жирная связь

Код
                            
Копировать
Встраивание
flowchart LR A ==> B

Жирная связь с текстом

Код
                            
Копировать
Встраивание
flowchart LR A == |text| ==> B

Невидимая связь

Код
                            
Копировать
Встраивание
flowchart LR A ~~~ B

Цепочка связей

Код
                            
Копировать
Встраивание
flowchart LR A -- text --> B -- text2 --> C

Также можно объявить несколько связей узлов в одной строке, как показано ниже:

Код
                            
Копировать
Встраивание
flowchart LR a --> b & c--> d

Вы также можете описать зависимости, как в следующем коде:

Код
                            
Копировать
Встраивание
flowchart LR a --> b & c--> d & e--> f

Если описать тот же граф с помощью базового синтаксиса, потребуется 8 строк. Следует напомнить, что чрезмерное использование этого метода может усложнить чтение блок-схемы в формате Markdown.

Код
                            
Копировать
Встраивание
flowchart TB a --> b a --> c b --> d b --> e c --> d c --> e d --> f e --> f

Добавление ID к соединительной линии

Mermaid теперь поддерживает добавление ID к соединительным линиям, аналогично прикреплению ID и метаданных к узлам. Эта функция закладывает основу для более продвинутых возможностей стилизации, классов и анимации соединительных линий.

Синтаксис:

Чтобы добавить ID к соединительной линии, поставьте ID перед синтаксисом соединительной линии, сразу за ним следует символ @. Например:

Код
                            
Копировать
Встраивание
flowchart LR A e1@--> B

В этом примере e1 — это ID соединительной линии, соединяющей A и B. Вы можете использовать этот ID в последующих определениях или операторах стиля так же, как и для узла.

Включение анимации

После добавления ID к соединительной линии вы можете включить анимацию соединительной линии, определив её свойства:

Код
                            
Копировать
Встраивание
flowchart LR A e1@==> B e1@{ animate: true }

Это сообщает Mermaid, что соединительная линия e1 анимирована.

Выбор типа анимации

В первоначальной версии поддерживаются две скорости анимации: fast и slow. Выбор конкретного типа анимации — это простой способ включить анимацию и одновременно задать скорость анимации.

Код
                            
Копировать
Встраивание
flowchart LR A e1@--> B e1@{ animation: fast }

这相当于 e1@{ animate: true, animation: fast }。

Анимация с помощью оператора classDef

Вы также можете анимировать соединительную линию, назначив ей класс, а затем определив свойства анимации в операторе classDef. Например:

Код
                            
Копировать
Встраивание
flowchart LR A e1@--> B classDef animate stroke-dasharray: 9,5,stroke-dashoffset: 900,animation: dash 25s linear infinite; class e1 animate

В этом коде:

  • e1@--> 创建了一个 ID 为 e1 的连接线
  • classDef animate определяет класс с именем animate, обладающий свойствами стиля и анимации.
  • class e1 animate применяет класс animate к соединительной линии e1.

Замечание об экранировании запятой: при задании свойства stroke-dasharray помните, что запятую нужно экранировать как ,, поскольку запятая используется в качестве разделителя в определениях стилей Mermaid.

Новый тип стрелки

Поддержка новых типов стрелок

  • Соединительная линия с закрашенным кругом
  • Соединительная линия с перекрестием

Соединительная линия с закрашенным кругом

Код
                            
Копировать
Встраивание
flowchart LR A --o B

Соединительная линия с перекрестием

Код
                            
Копировать
Встраивание
flowchart LR A --x B

Многонаправленные стрелки

Можно использовать многонаправленные стрелки, например:

Код
                            
Копировать
Встраивание
flowchart LR A o--o B B <--> C C x--x D

Длина соединительной линии

Каждому узлу в блок-схеме в зависимости от узлов, с которыми он соединён, присваивается уровень в отрендеренном графе, то есть вертикальный или горизонтальный уровень (в зависимости от направления блок-схемы). По умолчанию связи могут охватывать любое количество уровней, но вы можете потребовать, чтобы некая связь была длиннее других, добавив дополнительные дефисы в определение соединения.

В этом примере в соединение от узла B к узлу E добавлены два дополнительных дефиса, так что оно охватывает на два уровня больше, чем обычная связь:

Код
                            
Копировать
Встраивание
flowchart TD A[Start] --> B{Is it?} B -->|Yes| C[OK] C --> D[Rethink] D --> B B ---->|No| E[End]
Примечание: соединение может быть длиннее запрошенного числа уровней движка рендеринга, чтобы соответствовать другим запросам.

Когда метка соединения записывается в середине соединения, необходимо добавить дополнительные дефисы справа от соединения. Этот пример эквивалентен предыдущему:

Код
                            
Копировать
Встраивание
flowchart TD A[Start] --> B{Is it?} B -->|Yes| C[OK] C --> D[Rethink] D --> B B -- No ----> E[End]

Для пунктирных линий или жирных связей добавляемым символом является знак равенства или точка, как показано в таблице ниже:

Длина 1 2 3
Обычное соединение --- ---- -----
Обычное соединение со стрелкой --> ---> ---->
Жирное соединение === ==== =====
Жирное соединение со стрелкой ==> ===> ====>
Пунктирная линия -.- -..- -...-
Пунктирная линия со стрелкой -.- -..-> -...->

Специальные символы

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

Код
                            
Копировать
Встраивание
flowchart LR id1["This is the (text) in the box"]

Символьные сущности для экранирования символов

Символы можно экранировать с помощью синтаксиса из примера.

Код
                            
Копировать
Встраивание
flowchart LR A["A double quote:#quot;"] --> B["A dec char:#9829;"]

Приведённое число является десятичным, поэтому # можно закодировать как #35. Также поддерживается использование имён символов HTML.

Подграф

                            
Копировать
Встраивание
subgraph title graph definition end

Ниже приведён пример:

Код
                            
Копировать
Встраивание
flowchart TB c1-->a2 subgraph one a1-->a2 end subgraph two b1-->b2 end subgraph three c1-->c2 end

Вы также можете задать id для подграфа.

Код
                            
Копировать
Встраивание
flowchart TB c1-->a2 subgraph ide1 [one] a1-->a2 end

Блок-схема

В диаграммах типа блок-схемы можно, как в приведённой ниже блок-схеме, задавать соединительные линии, направленные к подграфу и от него.

Код
                            
Копировать
Встраивание
flowchart TB c1-->a2 subgraph one a1-->a2 end subgraph two b1-->b2 end subgraph three c1-->c2 end one --> two three --> two two --> c2

Направление подграфа

При использовании типа блок-схемы вы можете задать направление рендеринга подграфа с помощью оператора направления, как показано ниже:

Код
                            
Копировать
Встраивание
flowchart LR subgraph TOP direction TB subgraph B1 direction RL i1 -->f1 end subgraph B2 direction BT i2 -->f2 end end A --> TOP --> B B1 --> B2

Ограничения

Если какой-либо узел подграфа соединён с внешней частью, направление подграфа игнорируется. В противном случае подграф наследует направление родительского графа:

Код
                            
Копировать
Встраивание
flowchart LR subgraph subgraph1 direction TB top1[top] --> bottom1[bottom] end subgraph subgraph2 direction TB top2[top] --> bottom2[bottom] end %% ^ These subgraphs are identical, except for the links to them: %% Link *to* subgraph1: subgraph1 direction is maintained outside --> subgraph1 %% Link *within* subgraph2: %% subgraph2 inherits the direction of the top-level graph (LR) outside ---> top2

Строки Markdown

Строки Markdown улучшают блок-схемы и интеллект-карты, предоставляя более гибкий тип строки, поддерживая такие параметры форматирования текста, как полужирный и курсив, а также возможность автоматического переноса текста внутри метки.

Код
                            
Копировать
Встраивание
flowchart LR subgraph "One" a("`The **cat** in the hat`") -- "edge label" --> b{{"`The **dog** in the hog`"}} end subgraph "`**Two**`" c("`The **cat** in the hat`") -- "`Bold **edge label**`" --> d("The dog in the hog") end
  • Чтобы сделать текст полужирным, используйте две звёздочки (**) перед текстом и после него.
  • Для курсива используйте одну звёздочку (*) перед текстом и после него.
  • Для традиционных строк вам нужно добавить тег <br>, чтобы текст переносился в узле. Однако строки Markdown автоматически переносятся, когда текст слишком длинный, и для начала новой строки достаточно использовать символ перевода строки вместо тега <br>.

Эта функция применима к меткам узлов, меткам соединительных линий и меткам подграфов

Автоматический перенос можно отключить с помощью специального синтаксиса

Код
                            
Копировать
Встраивание
--- config: markdownAutoWrap: false --- graph LR

Комментарий

В блок-схему можно вводить комментарии, которые редактор игнорирует. Комментарий должен занимать отдельную строку и начинаться с двойного знака процента (%%). Любой текст от начала комментария до следующей строки считается комментарием, включая любой синтаксис блок-схемы.

Код
                            
Копировать
Встраивание
flowchart LR %% this is a comment A -- text --> B{node} A -- text --> B -- text2 --> C

Стили и классы

Стиль связи

Можно задать стиль связи. Например, вы можете захотеть оформить связь, которая движется назад в процессе; поскольку связи, в отличие от узлов, не имеют ID, необходимо определить стиль, применяемый к связи, другим способом. Используйте порядковый номер при определении связи или значение по умолчанию, применяемое ко всем связям.

                            
Копировать
Встраивание
linkStyle 3 stroke:#ff3,stroke-width:4px,color:red;

Также можно добавить стиль нескольким связям, разделив номера связей запятыми в одном операторе:

                            
Копировать
Встраивание
linkStyle 1,2,7 color:blue;

Настройка стиля кривой соединительной линии

Если метод по умолчанию не удовлетворяет вашим потребностям, можно задать стиль кривой для соединительных линий между элементами. Доступные стили кривых включают basis, bumpX, bumpY, cardinal, catmullRom, linear, monotoneX, monotoneY, natural, step, stepAfter и stepBefore.

В приведённом ниже примере диаграмма слева направо использует стиль кривой stepBefore.

                            
Копировать
Встраивание
%%{ init: { 'flowchart': { 'curve': 'stepBefore' } } }%% graph LR

Настройка стиля узла

Можно задать узлу определённый стиль, например более толстую рамку или другой цвет фона.

Код
                            
Копировать
Встраивание
flowchart LR id1(Start)-->id2(Stop) style id1 fill:#f99,stroke:#33d,stroke-width:4px style id2 fill:#bfc,stroke:#f96,stroke-width:2px,color:#000,stroke-dasharray: 5 5

Класс

Вместо определения стиля каждый раз удобнее определить класс стиля и прикрепить этот класс к узлам, которым нужен другой внешний вид.

Определение класса выглядит следующим образом:

                            
Копировать
Встраивание
classDef className fill:pink,stroke:#333,stroke-width:4px;

Кроме того, можно определить стиль для нескольких классов в одном операторе:

                            
Копировать
Встраивание
classDef firstClassName,secondClassName font-size:12pt;

Прикрепление класса к узлу выполняется следующим образом:

                            
Копировать
Встраивание
class nodeId1 className;

Также можно прикрепить класс к списку узлов в одном операторе:

                            
Копировать
Встраивание
class nodeId1,nodeId2 className;

Для добавления класса можно использовать оператор :::, чтобы прикрепить имя класса к узлу, как показано ниже:

Код
                            
Копировать
Встраивание
flowchart LR A:::someclass --> B classDef someclass fill:#f96

Эту форму можно использовать при объявлении нескольких связей между узлами:

Код
                            
Копировать
Встраивание
flowchart LR A:::foo & B:::bar --> C:::foobar classDef foo stroke:#f00 classDef bar stroke:#0f0 classDef foobar stroke:#00f

  • В объявлении графа операторы теперь могут не заканчиваться точкой с запятой. После версии 0.2.16 завершение операторов графа точкой с запятой стало необязательным. Поэтому следующее объявление графа так же допустимо, как и старое.
  • Между вершиной и связью допускается один пробел. Однако между вершиной и её текстом, а также между связью и её текстом не должно быть пробелов. Старое объявление графа также остаётся допустимым, поэтому эта новая функция необязательна и направлена на повышение читаемости.

Ниже приведено новое объявление соединительной линии; оно так же допустимо, как и старое объявление.

Код
                            
Копировать
Встраивание
flowchart LR A[Hard edge] -->|Link text| B(Round edge) B --> C{Decision} C -->|One| D[Result one] C -->|Two| E[Result two]