自从Evernote上线了markdown功能之后,就开始使用脚本画各种图,几乎是停不下来的节奏。但是,Evernote中的Markdown功能化时序图比较好看,流程图画出来的效果比较丑陋。
所以,这里就找其他的脚本画图方案,比如,Graphviz、MetaPost和TikZ等。大概了解了下,后两种比较专业,学习曲线也比较陡峭。Graphviz比较好上手,这里大概做下介绍。
1、环境准备
这里是用MacOS命令行下的homebrew安装的,直接执行如下命令即可:
brew install graphviz
编辑器这里选的是MacVim,画图预览使用MacOS自带的预览应用。这里,需要在vimscript中增加如下配置:
" map the function key to preview the dot file
autocmd BufRead *.dot nmap <F8> :w<CR>:!dot -Tpng -o %<.png % && open /Applications/Preview.app %<.png<CR><CR>
该命令的意思是,当打开.dot
格式的文件时,自动执行一个按键映射,将F8键映射为执行dot -Tpng -o %<.png % && open /Applications/Preview.app %<.png
。也就是,先进行格式转换,将.dot
格式的文件转化为.png
格式,然后,用系统自带的预览应用打开这个图片。这样,我们在编辑绘图脚本的过程中,保存之后,按F8键就可以实时查看绘图的效果了。
2、画图的脚本语法
这里的脚本语法和Evernote中自带的Markdown画图中流程图(采用一个Mermaid的前端库实现)的语法差不多。上手很容易,这里直接给出一个例子:
digraph pic {
Start[shape=Mrecord, label="开始", color="green", fontcolor="green", height=0.1, width=0.6]
End[shape=Mrecord, label="结束", color="green", fontcolor="green", height=0.1, width=0.6]
JudgeFlag1[shape=diamond, label="XXXX?", color="green", fontcolor="green", width=0.1]
CheckStatus[shape=diamond, label="CheckStatus", color="green", fontcolor="green", width=0.1]
CommitOper2[shape=record,label="XX" style=filled, color="green"]
CommitOper4[shape=box,label="XX", style=filled,color="1.0 0.3 1.0"]
CommitOper3[shape=diamond,label="XX" style=filled]
CommitOper[shape=record,label="XXXXX" style=filled, color="yellow"]
End[shape=Mrecord, label="结束"]
Edge[color="green"]
Node[color="green"]
Start -> JudgeFlag1
JudgeFlag1 -> CommitOper[color="blue", label="Yes"]
JudgeFlag1 -> CheckStatus[label="No"]
CheckStatus -> CommitOper2[label="0"]
CommitOper2 -> CommitOper4
CheckStatus -> CommitOper4[label="1"]
CommitOper4 -> CommitOper3
CheckStatus -> CommitOper3[label="2"]
CommitOper3 -> CommitOper[label="XXX", color="blue"]
CommitOper3 -> End
CommitOper -> End
}
最后,生成的效果图如下:
Graphviz生成的流程图
网友评论