TeX2img に学ぶ「画像編集・変換ツール」
今回は、TeX2img の開発サイドにかかわった過程で学んだ“お得情報”の紹介。TeX を使うかどうかに関係なく便利なので、ぜひお試しあれ!
Mac のネイティブ環境で動く「X11 非依存 Inkscape ビルド」
Mac 版 TeX2img は EMF (Enhanced MetaFile) というベクター画像を出力できない。そこで準備されたのが補助ツール「eps2emf」である。この eps2emf に内蔵されているのが、オープンソースのベクター画像編集ソフトウェアとして有名な Inkscape である(下は最新版 Inkscape 0.91 起動時)。
ただし、eps2emf が内蔵しているのは公式バージョンではなく「X11 依存性を取り除いて OS X ネイティブで動くようにした実験的ビルド」である。Inkscape の OS X バージョンは X11 に依存しているのだが、OS X 10.8 以降では標準で X11 がインストールされていない。したがって
- XQuartz が完全にインストールされている
- XQuartz が完全にアンインストールされている
- かつて X11 がインストールされていたことがない
のいずれかでないと正しく動作しないという問題があるらしい(寺田さんより)。したがって、以前のバージョンで入っていた X11/XQuartz が OS のバージョンアップに伴って使えなくなったという中途半端なインストール状況では、X11 を使おうとして使えずフリーズしてしまうようだ。そこで eps2emf では、公式バージョンではなく実験的な X11 依存性を排除した Inkscape を同梱することで、多くの環境で安定して動作するように工夫してある。
Inkscape の X11 非依存の実験的ビルドについてはほとんど知られていないと思う(僕も寺田さんに教えていただくまで知らなかった)ので、公式ビルドが X11 に依存しているのが嫌いだったという場合は一度使ってみるとよいかもしれない。
そういうわけで、僕も実際に「X11 非依存 Inkscape ビルド」を使ってみた。現時点での最新版と思われるこちらから「Inkscape-osxmenu-r12913-1-gtk2-quartz-10.7-x86_64.dmg」を入手した。より新しいものがあるかどうかは Inkspace のアップローダへ行けば分かるだろう。下がその X11 非依存版。上に挙げた X11 依存の公式ビルドとインターフェースは大して変わらないし、起動は X11 非依存版のほうが速かった。
ちなみに、この実験的ビルド版は言語設定を変更してから終了すると、次回の起動ができずクラッシュする。デフォルトは「システムのデフォルト」になっているので、メニューが英語で表示されている。これを日本語に変えてもすぐには反映されず、変更を適用するためには Inkscape を再起動する必要がある。いったん終了して再起動すると、エラーが発生して Inkscape 本体が起動できなくなってしまう。もしこうなってしまった場合は
/Users/ユーザ名/Library/Application Support/org.inkscape.Inkscape
というフォルダに Inkscape の設定ファイルが保存されているので、これをフォルダごと削除して初期化する。今後は設定をいじらないように注意する限り、正常に使えると思われる(もちろん公式ビルドではないので多少の不具合は見つかるかもしれないが、試してみる価値はある)。
Windows 版 TeX2img 補助ツール「pdfiumdraw」について
TeX2img for Windows 1.5.0 以降は、pdfiumdraw という独自プログラムを内蔵している。これは Google が開発した PDFium というオープンソースの PDF レンダリングライブラリをカスタマイズして作られている。もともとはクローズドソースであった Foxit PDF SDK を Google が Chrome PDF エンジンのベースとして採用し、さらにオープンソース化したという発表は話題になっていた。
EMF 出力は、かつて寺田さんが開発していた頃の TeX2img for Windows 1.1.4 までは pstoedit を用いていた。しかし改めてその方法を検証したところ、得られる EMF 画像は実用に堪えるものではない場合が多かった。阿部さんに引き継がれて EMF サポートは 1.2.0 で打ち切られたが、Windows では Word/PowerPoint にベクター形式の PDF/EPS 画像を挿入するのが難しく*1、ベクター画像を挿入する選択肢としては Windows 特有のメタファイル形式 EMF/WMF にほぼ限られてしまう。そこで、EMF ファイルを作成するために PDF/EPS をいったん Inkscape で開き、EMF として保存し直すというノウハウも生まれていたが、GUI/CUI によらず一手間増えるのが問題であった。そこで、TeX2img が再度 EMF をサポートするにあたり目をつけたのが PDFium である。PDFium は Windows 上であれば PDF を読み込んで EMF として書き出すことができるので*2、これを用いることにした。変換速度も Inkscape や pstoedit に比べて断然速く、プログラム本体もコンパクトである。
pdfiumdraw [option] input option: --use-gdi: use GDI for drawing --emf: output emf file (default) --bmp: output bmp file --png: output png file --jpg: output jpeg file --gif: output gif file --tiff: output tiff file --scale: specify scale --transparent: output transparent file (if possible) --output=<file>: specify output file name --pages=<page>: specify output page --help: show this message
オプションを見れば使い方は代替想像がつくだろうと思う。まだ仕様を詰めきれていないような気もするので*3、ぜひ使い心地を報告してほしい!
追記 (2015-06-08):pdfiumdraw による EMF 変換で破線が描画されないという問題が判明した。原因と現状の対処法をサブブログにて解説。