速報:TeX2imgのWindows版、5年ぶりの更新

寺田さんにより開発された「TeXソースコードTeXコンパイルして画像で出力するアプリケーション」であるTeX2imgのWindows版が更新された。

美文書第6版(サポートページはこちら)にも収録されているアプリケーションであるが、約5年ぶりのアップデート (Ver. 1.2.0.0) である。

 

作ったもの,書いたもの,他(阿部さんによるサイト:Windows版を配布)

TeX2img配布サイト(寺田さんによるサイト:現在はMac版をサポート)

f:id:acetaminophen:20140915065630p:plain

 

あれ、と思った方が多いと思うが、今回のWindows版の開発再開は、寺田さんから阿部さん(TeXインストーラ3などのツールなどで名高いあべのりさん)に引き継がれたことに伴う。

実は僕Acetaminophenも今回の開発のお手伝いをさせていただいた。とはいっても、プログラムを書くのは阿部さんで、その動作確認と不具合の報告をフィードバックしただけであるが*1

そして、以下のように便利な機能が追加された。

 

重要な変更点

【不具合の解消】

  • Ghostscriptなどで空白を含むPATHを認識できない問題を解決

【機能の追加】

  • TeXソースのハイライト(色付け)
  • 複数ページからなるドキュメントを複数のファイルに分けて出力
  • PDFでも余白を設定できるようになった
  • JPG/PNGの余白の設定方法を選べるようになった

【変更点】

  • 以前のバージョンでは可能だったemfの出力はやめることにした
  • 出力形式をPDFに指定した場合、ImageMagickのチェックの有無にかかわらずgsのpdfwriteを通すようにした
  • 修正BSDライセンスに変更(旧バージョン1.1.4は GPL v.2 であった)

 

ソースのハイライトで見やすくなったし

f:id:acetaminophen:20140915065702p:plain

余白の設定も一新。

f:id:acetaminophen:20140915065807p:plain

透過PNGも一発。

f:id:acetaminophen:20140915070155p:plain

 

技術的な話:Windows版TeX2imgの構造

寺田さんによる以前のWindowsバージョン1.1.4.0では

dvi→pdf (dvipdfmxで)
→eps (gsのepswriteで)
   ├→pdf (gsまたはconvertで)
   ├→jpg/png (ImageMagickの場合;convertで)
   └→余白付与eps (epsのソース編集で)
          └→jpg/png (gsの場合)

という流れであったが、今回の改版で阿部さんによって当初は

dvi→pdf (dvipdfmxで)
→cropされたpdf (pdfcropで)
   ├→jpg/png (ImageMagickの場合;convertで)
   └→eps (gsのepswriteで)
        └→余白付与eps (epsのソース編集で)
               └→jpg/png (gsの場合)

という流れに修正された。しかし、W32TeXのpdfcropがPerl依存であるため、この方法では別途Perlインタプリタをユーザーがインストールしなければならず、断念。再びgsのepswriteを経由させることになり、最終的には

dvi→pdf (dvipdfmxで)
→eps (gsのepswriteで)
   ├→jpg/png (ImageMagickの場合;convertで)
   └→余白付与eps (epsのソース編集で)
          ├→jpg/png (gsの場合)
          └→pdf (gsのpdfwriteで)

となった。ただし、gsのepswriteでは文字のアウトラインがとられて図形となり、テキストとしての情報は失われてしまうのでpdfcropによるPDFのcropとは結果が異なる。

なお、出力形式をPDFに指定した場合にImageMagickのチェックの有無にかかわらずgsのpdfwriteを通すようにしたのは、ImageMagickのconvertが eps→pdf で勝手にビットマップ化してしまうのでこれを避け、アウトラインを保持するためである。

また、余白付与はepsのBoundingBoxを書き換えることで行っており、gsを使う場合はこの余白付与epsを基にjpg/png/pdfが生成される。ImageMagickを使う場合はjpgやpngの余白付与をconvertで行うが、ビットマップ化してからピクセル(px)単位で余白を付与していた従来の方式を維持しつつ、付与する余白の大きさをBig Point (bp)単位で指定すると最終的な余白は

(指定された余白)*(解像度レベル)

となる。bp単位で指定するとjpg/pngとeps/pdfという出力形式による見た目の違いが解消される一方、jpg/png出力しか使わないユーザーにとってはピクセル(px)単位での余白指定の方が直接的で分かりやすいだろう。

こうした変更により、最新のWindows版(1.2.0)とMac版(1.7.6)では余白付与方式が一致しない結果となったが、この他にもWindows版とMac版で処理過程が異なる部分がいくつか存在するので、挙動の一致は図らなかった。

 

最後に

先日の記事で書いたPATHの問題にとどまらず、さまざまな機能が付加されてますます便利になったTeX2imgの僕なりの使い方を、後日このブログで書こうと思う。もしかしたらTeXを触ったことのない人にも、興味を持っていただけるのではないかと期待している。

とにかく、大変お世話になった阿部さん、寺田さん、ありがとうございました。

*1:それにもかかわらずあべのりさんの2014年9月14日のにっき♪で言及していただいたようで…非常に光栄です!