我这里调不通。我这里 async-start 用不了。不知道是不是windows的缘故。
其实可以进一步精简,去掉后缀也可以:
#+drawio: diagram
这个问题我也遇到了,也找到了一个 workaround:全选,然后在 Format >> Text 面板中,禁用 Word Wrap 和 Formatted Text 两项。参考:Why text in exported SVG images may not display correctly
我也有遇到这问题,但我主要把 org 导成 html 来预览,在 html 下看不会有这个问题,所以不是很在意
我这里试用后感觉直接转 svg 相比从 pdf 转要快的多,所以没有必要使用 async 的方式。
你说的 svg 版本高不能显示的问题, Emacs 30 上好像没这个问题。
我个人 fork 后直接转 svg 了。
感谢。
发现一个小问题。
(defun org-drawio-keyword-string-to-plist ()
"Return the \"#+drawio:\" keyword's values if any at point."
(save-excursion
(beginning-of-line)
(let ((plist))
(when (string= "DRAWIO"
(org-element-property :key (org-element-at-point)))
;; #+drawio: keyword exists.
;; Further checking the value
(when-let ((str (org-element-property :value (org-element-at-point))))
(dolist (fn org-drawio-keyword-value-functions) plist
(setq plist (append plist (funcall fn str)))))
plist))))
上面这个函数获取的文件名不能有空格存在,否则获取不全。
暂时先要求没空格吧。 不然的话,就要添加双引号。 我希望越简洁越好,所以就不加引号。
期待 emacs 30
(start-process-shell-command
"org-drawio"
nil
final-cmd)
用这个就是异步执行了
文件名要分开写
#+drawio: 2024....drawio :input-dir ~/attach_ts
执行时快了,但是 (org-display-inline-images)
没效果了。不能显示图片。
(defun my-process-sentinel (process event)
(when (string-match-p "finished" event)
(org-redisplay-inline-images)))
(let ((process (start-process-shell-command "org-drawio" nil final-cmd)))
(set-process-sentinel process #'my-process-sentinel))
等待进程结束之后再调用图片刷新。
感谢! 改成异步的了。现在不卡了。
或者把 ~/attach_ts 设置为默认input-dir
(defcustom org-drawio-input-dir "./draws"
"Define input folder of drawio file."
:type 'string)
添加input-dir或设置 org-drawio-input-dir
试过,也匹配不上,发现是文件名不能带有下划线。
奇怪,我这里这样也可以
#+drawio: diagram.drawio :input-dir ./draws_hello_world
其实这个方案不只局限于drawio,所有能使用命令行转换为图片文件的都能用一套方案。 感觉貌似在论坛里看到过?
因为我自己更习惯以列表项的形式插入,所以之前写过一个包用的 [[drawio:xxx.drawio]] 的链接方案,支持 drawio,xournalpp,krita,但是好久不用了
换成 22_diagram.drawio
呢
我一直在用这个哈哈,记得有些小问题,好像是多次在编辑中保存会导出好几次,改改用起来不错。