烦恼一般都是想太多了。

0%

几种绘图语法的比较

自从用 Graphviz 来进行绘图后,感觉确实是非常强大的。同时呢,也看到了很多基于 Graphviz 来进行绘图的改进,如 PlantUML,Mermaid 等,我日常的笔记整理都是用的 markdown ,说实话,确实没有看到能很好的将这几者进行整合后的软件存在。

实现

Graphviz 是用来进行图形渲染的,而如何定义图的话,则由不同的方式,常见的比如 PlantUML 和 Mermaid 就是两种非常流行的。

我最是画流程图,甘特图比较多,架构图

PlantUML

PlantUML 主要是针对于 UML 图行的实现,其定义了一套自己的语法,最终通过 Graphviz 来进行渲染出图。

它能绘制的图有:

  • 序列图
  • 用例图
  • 类图
  • 活动图
  • 组件图
  • 状态图
  • 对象图
  • 部署图
  • 定时图

同时还支持以下非 UML 的图:

  • 线框图形界面
  • 架构图
  • 规范和描述语言(DSL)
  • Ditaa
  • 甘特图
  • 思维导图

等等。其还封装了一堆堆小图标,可以让我们方便的显示。

但比较头疼的是,对于很多 markdown 编辑器并没有原生对其进行支持。所以选择的是 VS CODE 加 PlantUML 插件来进行绘图。

Mermaid

这个就比较直接了,Mermaid,其本身就是为了能让我们用 markdown 式的语法来绘制:

  • 流程图
  • 序列图
  • 类图
  • 状态图
  • 甘特图
  • Pie 表

相关软件

就我常用而言, MacDownTypora 都原生对其进行了支持。之所以一直在这两者间进行混合使用的原因是:

  • macdown 不支持文件夹视图,导出 PDF 的时候,没有书签目录,无法跳转。但其对 graphviz 的支持又是非常好的,支持各种引擎。甘特图还不支持 axisFormat 语法,看到的日期轴会是 w 以周为单位的。
  • typora 导出有目录,对 Mermaid 的支持是最新最及时的,但是其对 graphviz 不原生支持,只能通过第三方接口如 gravio 这样的网站接口来支持,而且就支持 dot 一种布局引擎,你让我能怎么办呢。如果说 typora 能原生的支持 graphviz 就完美了。
  • vnote 这个支持 PlantUML,Mermaid,Graphviz ,其中 Mermaid 内建支持,其他两者是通过外挂程序进行渲染的。不过遗憾的是,作者快一年了都还没有将 Mermaid 的 AxisFormat 语法提上更新的日程(20191217晚上已经更新),而且导出的功能也不如 Typora。补充一下:本地 jar 的形式渲染 plantUML 好难受(可以使用在线服务,非常OK)。作者说导出是可以多种格式和书签的,自己用 pandoc 来进行自定义的命令就行了。

我想要的其实是…

能够支持 graphviz ,主要是有的时候用不同的引擎来布局的时候,会省不少事,比如描述关系图的时候,用一个径向的布局就非常的OK的了。

能够支持 PlantUML,用这个来进行做架构图或者是甘特图的时候也是非常的棒的。

至于说 Mermaid,这个可以与 PlantUML 二选一就够了。

导出的文档格式一定要有导航,否则的话 markdown 看起来是一回事,导出又是另外一回事这可就不那么完美了。

实际上单纯写作来讲, macdown 是最完美的一个,当然,如果其能将 mermaid 进行支持到最新,然后导出能够支持目录就 OJBK 了。但据作者答复,应该是因为其所使用的框架,还做不到导出的 PDF 带目录这么一个事情。

而 Typora 的话将内建的 graphviz 多种布局引擎给落实也完美了。有 mermaid 没有 plantUML 也能接受了。

至于啊 Vnote ,这个用 QT 做的界面丑虽然丑点,无所谓,不过其 PDF 的导出格式的目录是页内跳转的(作者说用 wkhtmltopdf 是可以实现的),而不是书签的形式;同时其 mermaid 的支持没有升级也是个硬伤。

慢慢再研究吧。