在 Markdown 中优雅绘图
💡
原文中文,约7500字,阅读约需18分钟。
📝
内容提要
介绍了在Markdown中绘制SVG矢量图的方法,使用了Graphviz/Asymptote/LaTeX三种引擎,以及生成SVG文件的方法和减小SVG文件体积的技巧。最后给出了一个使用PGF/Tikz绘制的饼状图的完整示例。
🎯
关键要点
- 介绍了在Markdown中绘制SVG矢量图的方法。
- 使用了Graphviz、Asymptote和LaTeX三种引擎。
- 绘图功能要求包括输出矢量图、服务端一次生成和直接在Markdown源码中编辑。
- Mermaid因不支持服务端使用而被放弃。
- Graphviz是一种静态描述语言,主要用于绘制网状图,支持输出SVG格式。
- Asymptote是一种专门用于矢量绘图的编程语言,语法类似C++,底层使用LaTeX。
- LaTeX支持绘制各类图形,PGF/Tikz是最著名的宏包。
- 新的绘图系统应同时支持Graphviz、Asymptote和LaTeX三种引擎。
- 技术方案利用lua-filter为每个CodeBlock设置回调函数,提取描述代码生成SVG图片。
- Graphviz通过运行dot命令生成SVG代码,Asymptote需要创建临时目录并使用xelatex生成SVG。
- LaTeX生成SVG需要使用dvisvgm转换,并支持中文。
- SVG文件体积问题可以通过删除内嵌字体描述数据来减小。
- 提供了使用PGF/Tikz绘制饼状图的完整示例代码。
➡️