Skip to content

Usage

There are two ways to use the plugin, both documented below. The end result is exactly the same, so which one you choose is a matter of personal preference.

Fenced code blocks

Fenced code blocks allow you to place diagram definitions in markdown.

```d2
shape: sequence_diagram
Alice -> John: Hello John, how are you?
Alice -> John.ack: John, can you hear me?
John.ack -> Alice: Hi Alice, I can hear you!
John -> Alice: I feel great!
```

Image tags

You can also link to external files using an image tag. Only local files with .d2 extension are supported.

![Diagram](diagram.d2)

Path to diagram must be relative to the markdown file. Given following documentation structure:

├── guide
│   ├── configuration.md
│   └── usage.md
├── flow.d2
└── index.md

To link to flow.d2 from usage.md you would use:

![Diagram](../flow.d2)

Imports

Diagrams included using image tags support imports.

importer.d2
```
a: @imported
a -> b
```

imported.d2
```
x: {
    shape: circle
}
```

In MkDocs:
![Diagram](../importer.d2)

abx
abx

Warning

This feature is somehwat broken due to caching of rendered diagrams. Diagrams are not re-rendered when an imported file changes. You can either update the main diagram (re-render is triggered by modification time, no changes are needed) or disable the cache altogether.