LOADING...

加载过慢请开启缓存(浏览器默认开启)

loading

关于个人导图记录,关于 Lsgv

个人导图记录

我们常通过记录信息,提炼其成为知识,如果有系统组织为知识库,还能更好提升个人认知脉络。

一般记录的手段有文字、声音、图像、导图等,各有优劣,如文本更好说明定义,导图更好表达关系。每个人对于信息如何记录,或多或少都有些差异,对于我本人而言,考虑的点有:

  • 层级简单,记录信息点,由知识库软体来组织系统
  • 便于记录,能快速表达,脱离鼠标也能快速出图
  • 版本控制,能由 Git 或其他版本控制应用协作
  • 文本描述,文本比较透明,能够通过脚本转换逻辑
  • 编程扩展,能够通过编程自动化或者增强输出

Graphviz

Graphviz 是我 13,14 年左右用来做导图的开发工具,它包括命令行软件和 Dot 语言。但是它有的缺点也很明显:

  • 样式并不能很好被复用
  • 上下的样式很容易出现覆盖
  • 无法很好模版化
  • 颜色不够友好表达
  • 经常写难记的属性
  • 通过编程生成的很难统一
  • 表达方式太繁琐

Lsgv

之前看完千禧年三部曲的《龙纹身女孩》,要准备看第二部《玩火的女孩》,结果人物都忘光了,所以打算先做下笔记温故下,但是对于这种通俗小说,是很难用文字记录下有效内容,我能想到的大概就是用导图来描述人物脉络和一些重要事件,于是我又想起了很久前的 Graphviz。

为了克服之前 Graphviz 对于我的一些缺点,我需要一个能通过我想要的描述,然后生成 Graphviz 的工具,于是便简单写了个名为 Lsgv 的小工具。

Lsgv 如其名,List Style Graphviz,以 List 为表达(如 Lisp),抽出 Style(样式)的概念。

以 List 增强表达

(-> a (b (d e) c))

等效于:

a -> b;
a -> c;
b -> d;
b -> e;

支持样式化

类似于 css 的概念:

($ red-node :color #x901010)

样式复用

同一份数据通过不同样式渲染:

覆盖样式

效果类似于 html 定义覆盖 css:

(+@ :type red-node :color #x109010)

动态计算颜色

现在只做了一个彩虹色生成、颜色深度、连线同色扩展。彩虹色会自动将样式带有彩虹属性的节点自动生成颜色,无需自己想新颜色。颜色深度可以调节颜色的色深比例,让节点带有光晕效果。连线同色会判断父子节点颜色来生成颜色,无需自己记住之前定义的颜色,更好找出节点关系。

预定义一套项目样式

只需要描述好数据就可以: