我正在嘗試使用dvisvgm處理乳膠片段到SVG文件。這從命令行工作正常,但從ELISP內運行時失敗:eLisp call-process dvisvgm
(call-process "dvisvgm" nil nil nil
"--libgs=/usr/local/bin/gs"
svgfile
dvifile)
誰能告訴我我錯過了什麼?
謝謝! - 亞當
我正在嘗試使用dvisvgm處理乳膠片段到SVG文件。這從命令行工作正常,但從ELISP內運行時失敗:eLisp call-process dvisvgm
(call-process "dvisvgm" nil nil nil
"--libgs=/usr/local/bin/gs"
svgfile
dvifile)
誰能告訴我我錯過了什麼?
謝謝! - 亞當
儘量簡單地使用M-! dvisvgm --libgs=/usr/local/bin/gs <svgfile> <dvifile>
相反,如果它的工作原理,你還想把它寫在elisp的,你可以使用簡單的API:shell-command
,例如:
(shell-command
(format "dvisvgm --libgs=/usr/local/bin/gs %s %s"
(shell-quote-argument svgfile)
(shell-quote-argument dvifile)))
如果dvisvgm
需要時間和你不希望它阻止你Emacs,將&
添加到該shell命令或使用start-process
等創建一個異步過程。例如,使用start-process
:
(start-process "foo-dvisvgm" nil "dvisvgm"
"--libgs=/usr/local/bin/gs"
svgfile
dvifile)
謝謝,這個工程。你如何使用啓動過程來做到這一點? – Adam
@Adam我已經爲它更新了我的答案,但要學習如何使用'start-process',最好閱讀信息手冊:http://www.gnu.org/software/emacs/manual/html_node/ elisp的/異步-Processes.html – xuchunyang
什麼是錯誤信息?你是否檢查過使用的路徑和環境? –