A simple Graphviz binding for Typst using the WebAssembly plugin system.
This plugin is quite simple to use, you just need to import it:
#import "@preview/diagraph:0.3.1": *
You can render a Graphviz Dot string to a SVG image using the render
function:
#render("digraph { a -> b }")
Alternatively, you can use raw-render
to pass a raw
instead of a string:
#raw-render(
```dot
digraph {
a -> b
}
```
)
For more information about the Graphviz Dot language, you can check the official documentation.
Check the manual for more information about the plugin.
This project was built with emscripten 3.1.46
. Apart from that, you just need to run make wasm
to build the wasm file. All libraries are downloaded and built automatically to get the right version that works.
There are also some other make commands:
make link
: Link the project to the typst plugin foldermake clean
: Clean the build folder and the linkmake clean-link
: Only clean the linkmake compile_database
: Generate the compile_commands.json filemake module
: It copy the files needed to run the plugin in a folder calledgraphviz
in the current directorymake manual
: Generate the manual pdfmake wasi-stub
: Build the wasi stub executable, it require a rust toolchain properly configured
Somme functions need to be stubbed to work with the webassembly plugin system. The wasi-stub
executable is a spetial one fitting the needs of the typst plugin system. You can find the source code here. It is important to use this one as the default subbed functions are not the same and the makefile is suited for this one.
This package also uses a protocol generator to generate the wasm interface. You can find the source code here. It is a required dependency to build this project.
This project is licensed under the MIT License - see the LICENSE file for details
- Updated graphviz version to 12.2.0
- Fixed a bug with the font being incorrectly set
- Added adjacency lists to the graph rendering possibilities
- Added support for edge labels
- Added a manual generated with Typst
- Updated graphviz version
- Fix an error in math mode detection
- If the shape is point, the label isn't displayed
- Now a minimum size is not enforced if the node label is empty
- Added support for font alternatives
- Added support for xlabels which are now rendered by Typst
- Added support for cluster labels which are now rendered by Typst
- Fix a margin problem with the clusters
- Updated to typst 0.11.0
- Added support for
fontcolor
,fontsize
andfontname
nodes attributes - Diagraph now uses a protocol generator to generate the wasm interface
- Fix an alignment issue
- Added a better mathematic formula recognition for node labels
- Added support for relative lenghts in the
width
andheight
arguments - Fix various bugs
- Node labels are now handled by Typst
- Graphs are now scaled to make the graph text size match the document text size
- Remove the
raw-render-rule
show rule because it doesn't allow use of custom font and therender
/raw-render
functions are more flexible - Add the
background
parameter to therender
andraw-render
typst functions and default it totransparent
instead ofwhite
- Add center attribute to draw graph in the center of the svg in the
render
c function
Initial working version