With the Asciidoctor diagram extension we can include diagrams that are written in plain text. For example PlantUML or Ditaa diagrams. The extension offers a block processor where we include the diagram definitions in our Asciidoctor document. But there is also a block macro processor. With the block macro processor we can refer to an external file. The file is processed and the resulting image is in our output document.
In the following example we see how to use the block macro for a Ditaa diagram:
= Diagram Block Macro There is another way to use the diagram extension instead of via a block definition. We can use a block macro to refer to an external file that has the diagram definition. The name of the diagram extension is the block macro name. For example for a Ditaa diagram we use `ditaa::` and for PlantUML we use `plantuml::`. This is followed by a filename of the file that contains the diagram source. We can define attributes just like with the block definition. The first positional attribute define the filename. Or we use the attribute name `target` to set the output filename. The second positional attribute is the file format. Instead we can use the attribute `format`. In the next example we use a block macro to include a Ditaa diagram definition: // The first positional attribute is the // file target name (or we use attribute target), // the second positional attribute is the // file format (or use attribute format). // Other attributes can also be defined. ditaa::sample.ditaa[ditaa-diagram, png, round-corners="true"] Written with Asciidoctor {asciidoctor-version}.
The contents of sample.ditaa
:
+-------------+ | Asciidoctor |-------+ | diagram | | +-------------+ | PNG out ^ | | ditaa in | | v +--------+ +--------+----+ /---------------\ | |---+ Asciidoctor +--->| | | Text | +-------------+ | Beautiful | |Document| | !magic! | | Output | | {d}| | | | | +---+----+ +-------------+ \---------------/ : ^ | Lots of work | +-----------------------------------+
When we create a HTML document from this Asciidoctor markup we get the following output:
Written with Asciidoctor 1.5.6.1.