Acetaminophen’s diary

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

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

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

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

追記:2014-10-18
最新版の Windows版1.2.5 と Mac版1.8.3 について記事を書いたので本記事は既に古いが、履歴として残しておく。新しい記事へはこのページの末尾のリンクから。

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の場合)

という流れに修正された。しかし、pdfcrop は Perl 依存であるため、この方法では W32TeX ユーザーが別途 Perl インタプリタをインストールしなければならず、断念*2。再び 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 を触ったことのない人にも、興味を持っていただけるのではないかと期待している。

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

 

追記:2014-10-12 さらにアップデートされたので、新たに記事を書いた。


続報:TeX2imgのWindows版アップデート - Acetaminophen’s diary

 

追記:2014-10-18 Ghostscriptの仕様変更に完全対応すべくアップデート。

新たにWindows/Mac両バージョンについて記事を書いた。


TeX2img (Windows/Mac) の動作の詳細 - Acetaminophen’s diary

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

*2:TeX Live には Perl が内蔵されているので、システムに Perl がインストールされていなくても pdfcrop が使えるということを、たったいま阿部さんから教えていただきました。ありがとうございます:2014-09-15 16:08 修正