org-excalidraw,正好愁怎么在 emacs 里画思维导图

pdf 也适合这种需求场景,比如某一页 pdf 是个示意图或者大表格,做笔记的时候引用这一页时还能显示图片,想看上下文点进去就打开 pdf。

这么一说,我又觉得这类功能或许应该抽象成一个通用的框架,更像是协议性质的,增加一种 org link 的语法,比如叫做 filepreview

那么在配置文件里,只需要对不同后缀(格式)的文件设置一个转成图片的命令和命令参数,比如以下设置:

(setq filepreview-preview-command
'(("\\.ps"  "convert %s.ps %s_hash.png")
  ("\\.pptx"  "convert %s.pptx %s_hash.jpg -page %d")
 ("\\.pdf"  "convert %s.pptx %s_hash.jpg -page %d -rotate 90")
  ("\\.mm"  "convert %s.mm %s_hash.jpg")
)
(setq filepreview-cache-folder ~/org/.previewcache)

以上 convert 语法都是伪代码了,不同格式可能有不同命令 然后

[[filepreview:~/product/presentation.pptx:3]]

在每次执行 org-redisplay-inline-images 时候检查 presentation.pptx 修改的时间戳,如果相比上次有修改, 就去调用 preview-command 把第三页重新转成 jpg ,更新 cache 里的图片预览并且显示出来 (每个预览用文件名 hash 之类的对应上)

点击链接的话还是遵循 find-file/org-open-at-point 之类的打开外部程序的接口

2 个赞