foobar.epsをfoobar.svgに変換する方法です。
実はepsから直接svgにするのは難しいようなので(後述)、
foobar.eps → foobar.pdf → foobar.svg
というようにpdfを経由します。
オンラインでできるサービスがあるみたいですが、この記事ではコマンドラインでやります。
TeXLive2017以降がインストールしてあれば大丈夫です(多分)。
epsからpdf
まず、epstopdf
でfoobar.epsからfoobar.pdfを出力。
epstopdf foobar.eps
pdfからsvg
次に、pdftocairo
でfoobar.pdfからfoobar.svgを出力。
pdftocairo -svg foobar.pdf
かんたん!
複数のepsを変換する
ディレクトリに内のepsを一括でsvgにする。
for f in *.eps; do epstopdf $f; done
for f in *.pdf; do pdftocairo -svg $f; done
任意で*.eps
とか*.pdf
をいい感じにしてください。
複数のepsを変換する:おまけ
最近使ってるXonshで。
正しいXonshの使い方が分からない人が書いたコードなので信用してはいけない。
for s in $(ls *.eps).split():
!(epstopdf @(s))
!(pdftocairo -svg @(s.replace('eps','pdf')))
余計なpdfが入ってても大丈夫。
試してみて失敗した方法
Ghostscript
ググるとgsでepsからsvgにする方法が紹介されているページがけっこう出てきます。
TeXLiveにはgswin64c.exeが含まれていますが、PATHを通して外部から使うことは出来ないので、おとなしくインストールしました。
しかし、新しめのGhostscript(gs9.15以降?)ではsvgがサポートされていないらしいです。
参考:http://acetaminophen.hatenablog.com/entry/2015/03/10/154412
dvisvgm
dvisvgm -E foobar.eps
でsvgが出力されるはずなのですが、、エラーが出てしまいます(ERROR: Ghostscript is required to process the EPS file
)。
dvisvgm -l
でサポートする形式一覧が出力されるのですが、確かにps
が無い。
公式FAQのWhy is dvisvgm’s PostScript support disabled on my machine?に従い、
-
C:\Program Files\gs\gs9.26\bin
にPATHを通す - 環境変数
LIBGS
を設定する(C:\Program Files\gs\gs9.26\bin\gsdll64.dll
)
等を試したのですがだめでした。
参考
-
TeX 出力から SVG への変換
http://acetaminophen.hatenablog.com/entry/2015/03/10/154412 -
pdftocairo(Popplerというライブラリに含まれます)
https://poppler.freedesktop.org/
https://texwiki.texjp.org/?Poppler