2015-05-31 64 views
2

我正在嘗試使用dvisvgm處理乳膠片段到SVG文件。這從命令行工作正常,但從ELISP內運行時失敗:eLisp call-process dvisvgm

(call-process "dvisvgm" nil nil nil 
      "--libgs=/usr/local/bin/gs" 
      svgfile 
      dvifile) 

誰能告訴我我錯過了什麼?

謝謝! - 亞當

+0

什麼是錯誤信息?你是否檢查過使用的路徑和環境? –

回答

1

儘量簡單地使用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) 
+0

謝謝,這個工程。你如何使用啓動過程來做到這一點? – Adam

+0

@Adam我已經爲它更新了我的答案,但要學習如何使用'start-process',最好閱讀信息手冊:http://www.gnu.org/software/emacs/manual/html_node/ elisp的/異步-Processes.html – xuchunyang