在org中插入excalidraw文件
缘起
把org文件作为笔记工具是必定要走到的路,图文混排是很难绕过的槛。emacs可以插入图片,但是这个排版并不理想。个人也是很不喜欢这种模式,因为会造成笔记文件的臃肿,所以我也尽量避免在文本中插入图片。对于实在要插入图片的笔记,我全部移到了有道这种方便图片粘贴的工具中。
之前用过 graphviz
来解决文字和图的妥协,但是 graphviz
使用中并不友好,因此发觉在实际中也很难用。
在org中新建excalidraw
excalidraw 是什么,这里不详细介绍,简单地讲就是一个比较简单、轻量的画图工具。并有人为之开发了一个 org-excalidraw
的插件:https://github.com/wdavew/org-excalidraw 。
按照插件的说明,应该在安装插件后,可以在org中生成excalidraw文件,并显示。但我安装后,未达到相应的效果。
突然想到,其实可以直接看看源码,说不定能看出哪里出错了。事实证明,也没看出来哪里出错,但发现有些我还是能看懂的。在看了之后,我发觉可以缩改一下,将我要用的功能拿出来,其实我要的也就是一个新建的功能:新建一个excalidraw文件,并同时插入 file+sys
链接,此时如果把excalidraw安装成网页应用,就可以直接点出链接打开文件了。
(defun org-excalidraw-create()
"Create an excalidraw drawing and insert an org-mode’ link to it at Point."
(interactive)
(let*
((filename (format "%s.excalidraw" (read-from-minibuffer "Enter your filename:")))
(org-excalidraw-directory "d:/01 Data/03 Docs/02 OffWork/02 Notes/04Charts/")
(org-excalidraw-base "{
\"type\": \"excalidraw\",
\"version\": 2,
\"source\": \"https://excalidraw.com\",
\"elements\": [],
\"appState\": {
\"gridSize\": null,
\"viewBackgroundColor\": \"#ffffff\"
},
\"files\": {}
}")
(path (expand-file-name filename org-excalidraw-directory))
(link (format "[[file+sys:%s]]" path)))
(insert link)
(with-temp-file path (insert org-excalidraw-base))
;; (org-open-at-point path))想立即打开,没成功
)