<!-- import: https://raw.githubusercontent.com/LiaTemplates/mermaid_template/0.1.1/README.md --> # Einstieg in Mermaid **Autor:** Rico Meiner **Lizenz:** [CC0](https://creativecommons.org/publicdomain/zero/1.0/) > Mermaid kann aus Text eine Reihe von Diagrammen erstellen und leicht anzupassen. --- ## Linksammlung - Webseite [mermaid.js.org](https://mermaid.js.org) - Quellcode [Github](https://github.com/mermaid-js/mermaid) (MIT-Lizenz) - [Live-Editor](https://mermaid.live/) - [Dokumentation](https://mermaid.js.org/intro/getting-started.html) Zum Üben mit den folgenden Beispielen parallel den Live-Editor nutzen. Alternativ bietet sich eine Notiz in HackMD, Hedgedoc oder eine github-Seite an. --- ## Graph, Ablaufdiagramm ### einfacher Graph ```markdown= graph A --> B ``` Zeile 1: Diagrammtyp festlegen (`graph` oder `flowchart`). Zeile 2: 2 Knoten (`A`, `B`) werden mit einer Kante `-->` verbunden. ```mermaid graph A --> B ``` Es können beliebig viele Knoten miteinander verbunden werden. :::spoiler Graph mit 3 Knoten ```markdown graph A --> B B --> C A --> C ``` ```mermaid graph A --> B B --> C A --> C ``` ::: ### Kanten und Pfleile Mit Hilfe von Linien (`-`, `=`) und Zeichen (`<`, `o`) können Kanten zwischen Knoten erstellt werden. Die Beispiel sind kombinierbar. Alternativ zum Text in einer Kanten mit `-->|Text|`, kann auch zwischen den Linien Text stehen `-- Text --`. **Tipp:** Diese Methode führt schneller zu Syntaxfehlern. ```markdown graph A <--> B Kante mit Pfleilen C o--o D Kante mit Kreisen E x--x F Kante mit x G ~~~ H unsichtbare Kante I -.- J gepunktete Kante K --- L normale Kante M === N dicke Kante O ---|test| P Kante mit Text Q ---- R längere Kante ``` ```mermaid graph A <--> B C o--o D E x--x F G ~~~ H I -.- J K --- L M === N O ---|Text| P Q ---- R ``` ### Knoten Knoten können durch `(`, `[`, `/` sowie deren Kombination diverse Formen annehmen. ```markdown graph A(Start) B[Prozess] C{Entscheidung} D((Referenz-\npunkt)) E((Kreis)) F[[Teil\nprozess]] G[(Daten\nbank)] H[/Daten/] ``` ```mermaid graph LR A(Start) ~~~ B[Prozess] ~~~ C{Entscheidung} ~~~ D((Referenz-\npunkt)) ~~~ E((Kreis)) ~~~ F[[Teil\nprozess]]~~~ G[(Daten\nbank)] ~~~ H[/Daten/] ``` **Tipp:** Ein Zeilenumbruch erfolgt mit `\n` im Text. Ab Version mermaid 11.3.x wurde ein sehr große Zahl von Formen mit einer neuen Syntax hinzugefügt. [^1] [^1]: [Liste](https://mermaid.js.org/syntax/flowchart.html?id=flowcharts-basic-syntax#complete-list-of-new-shapes) mit neuen Formen für Knoten. ### Leserichtung Es können folgende Ausrichtungen für Graphen/Diagramme festgelegt werden: - `TB` top > bottom (Alternativ `TD` top > down) - `BT` bottom > top - `RL` right > left - `LR` left > right ```markdown graph LR A --> B graph RL A --> B graph TB A --> B graph BT A --> B ``` ```mermaid flowchart LR A --> B B --> C ``` ## Flowchart ```mermaid flowchart LR A[Hard edge] -->|Link text| B(Round edge) B --> C{Decision} C -->|One| D[Result one] C -->|Two| E[Result two] ``` ``` mermaid @mermaid flowchart LR A[Initial Request<br>for Consideration] --> B{Preliminary Review} B -- Advanced --> C[Project Owner Assigned<br>to Conduct Assessment]; B -- Declined --> D[Request Closed]; C --> E[Privacy Review]; C --> F[Data Needs Assessment]; C --> G[Data Contribution Assessment]; C --> H[CITI Training Verification]; E --> I{Final Approval}; F --> I; G --> I; H --> I; I -- Approved --> J[Scientific Project Begins]; I -- Declined --> D; ``` ### Flowchart - Subgraphen ``` mermaid @mermaid flowchart LR subgraph TOPX direction TB subgraph B1 direction RL i1 -->f1 end subgraph B2 direction BT i2 -->f2 end end A --> TOPX --> B B1 --> B2 ``` ## Flowchat gestalten ```mermaid flowchart LR classDef blue fill:#27f,stroke:#333,color:#fff classDef red fill:#f23,stroke:#a00,color:#fff G[(Goals)]:::red <---> |Connect To| P[(Projects)]:::blue ``` ## Customer Journey ```mermaid journey title My working day section Vor dem Einkauf mit Freundin Aufstehen: 1: Ich Go upstairs: 3: Me Webseit: 3, Hein, Cat Do work: 1: Me, Cat section Go home Go downstairs: 6: Me Sit down: 5: Me section Go away Go downstairs: 5: Me Sit down: 5: Me ```