/ / eLisp call-process dvisvgm - unix, emacs, latex, pipe, elisp

eLisp call-process dvisvgm - unix, emacs, latex, pipe, elisp

Próbuję przetworzyć fragment lateksu do pliku SVG, używając dvisvgm. Działa to poprawnie z wiersza poleceń, ale kończy się niepowodzeniem, gdy jest uruchamiany z poziomu elisp:

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

Czy ktoś może mi powiedzieć, co przeoczyłem?

Dzięki! -Adam

Odpowiedzi:

1 dla odpowiedzi № 1

Spróbuj po prostu użyć M-! dvisvgm --libgs=/usr/local/bin/gs <svgfile> <dvifile> zamiast tego, jeśli to działa i nadal chcesz pisać w elisp, możesz użyć prostszego interfejsu API: shell-command, na przykład:

(shell-command
(format "dvisvgm --libgs=/usr/local/bin/gs %s %s"
(shell-quote-argument svgfile)
(shell-quote-argument dvifile)))

Gdyby dvisvgm wymaga czasu i nie chcesz, żeby Cię blokowało Emacsa, dodaj & do tego polecenia powłoki lub użyj start-process itp., aby utworzyć proces asynchroniczny. Na przykład użyj start-process:

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