読者です 読者をやめる 読者になる 読者になる

Acetaminophen’s diary

化学に関すること、TeXに関すること、ゆきだるまに関すること。

TeX2img に学ぶ「画像編集・変換ツール」

TeX2img ソフト

今回は、TeX2img の開発サイドにかかわった過程で学んだ“お得情報”の紹介。TeX を使うかどうかに関係なく便利なので、ぜひお試しあれ!

 

Mac のネイティブ環境で動く「X11 非依存 Inkscape ビルド」

Mac 版 TeX2img は EMF (Enhanced MetaFile) というベクター画像を出力できない。そこで準備されたのが補助ツール「eps2emf」である。この eps2emf に内蔵されているのが、オープンソースベクター画像編集ソフトウェアとして有名な Inkscape である(下は最新版 Inkscape 0.91 起動時)。

f:id:acetaminophen:20150602220626p:plain

ただし、eps2emf が内蔵しているのは公式バージョンではなく「X11 依存性を取り除いて OS X ネイティブで動くようにした実験的ビルド」である。InkscapeOS X バージョンは X11 に依存しているのだが、OS X 10.8 以降では標準で X11 がインストールされていない。したがって

  • XQuartz が完全にインストールされている
  • XQuartz が完全にアンインストールされている
  • かつて X11 がインストールされていたことがない

のいずれかでないと正しく動作しないという問題があるらしい(寺田さんより)。したがって、以前のバージョンで入っていた X11/XQuartz が OS のバージョンアップに伴って使えなくなったという中途半端なインストール状況では、X11 を使おうとして使えずフリーズしてしまうようだ。そこで eps2emf では、公式バージョンではなく実験的な X11 依存性を排除した Inkscape を同梱することで、多くの環境で安定して動作するように工夫してある。

InkscapeX11 非依存の実験的ビルドについてはほとんど知られていないと思う(僕も寺田さんに教えていただくまで知らなかった)ので、公式ビルドが X11 に依存しているのが嫌いだったという場合は一度使ってみるとよいかもしれない。

そういうわけで、僕も実際に「X11 非依存 Inkscape ビルド」を使ってみた。現時点での最新版と思われるこちらから「Inkscape-osxmenu-r12913-1-gtk2-quartz-10.7-x86_64.dmg」を入手した。より新しいものがあるかどうかは Inkspaceアップローダへ行けば分かるだろう。下がその X11 非依存版。上に挙げた X11 依存の公式ビルドとインターフェースは大して変わらないし、起動は X11 非依存版のほうが速かった。

f:id:acetaminophen:20150602220800p:plain

ちなみに、この実験的ビルド版は言語設定を変更してから終了すると、次回の起動ができずクラッシュする。デフォルトは「システムのデフォルト」になっているので、メニューが英語で表示されている。これを日本語に変えてもすぐには反映されず、変更を適用するためには 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 SDKGoogleChrome 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 変換で破線が描画されないという問題が判明した。原因と現状の対処法をサブブログにて解説。

*1:手元で試したところ、Office for Mac 2011 ではドラッグ&ドロップで簡単に挿入できるが、Windows 版 Office 2010 では失敗する。

*2:ちなみに PDFium の EMF 出力は Win32 API の CreateEnhMetaFileA を使っているので、Mac で EMF 出力ができるのは実質 Inkscape 一択といえる。

*3:開発の過程で「同じプログラムなのに、阿部さんの環境と僕の環境で出力が違った」という現象も見られたので、多くのテスト環境で試してほしいというのが本音。