Acetaminophen’s diary

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

続報:TeX2img の Windows 版アップデート

TeX2img の Windows 版が先ほど再び更新された (ver. 1.2.3)。先月約5年ぶりに阿部さんによって開発再開 (ver. 1.2.0) されて以来、すでに3度更新されたことになる。

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

以前このブログで TeX2img 開発再開を「速報」したときの記事がこちら。


速報:TeX2imgのWindows版、5年ぶりの更新 - Acetaminophen’s diary

今回は、その後の3回にわたるアップデートでの変更について解説する。

 

重要な変更点

【不具合の解消】

  • Ghostscript のアップデートで epswrite が使えないケースに対応(1.2.3 で修正)
  • platex / dvipdfmx のパス設定にオプションが含まれていると実行できないバグ修正(バージョン 1.2.0 のバグ:1.2.1 で修正)
  • 呼び出す実行プログラムがフリーズした場合に処理を継続するかどうか確認(バージョン1.2.0 以降でまれに発生:1.2.3 で修正)
  • 一時ファイルの削除もれを解消(バージョン 1.1.4 以前からのバグ:1.2.3 で修正)

【機能の追加】

  • 文字コードの指定が可能になった(バージョン 1.2.2 で追加)
  • ソースコードのフォント及び色が変更できるようになった(バージョン 1.2.2 で追加:1.2.3 で修正)

【変更点】

  • プリアンブル設定が初期設定と「デフォルトに戻す」で一致していなかったのを統一(1.2.3 で修正)
  • dvipdfmx の -vv オプションが機能していなかったのを修正(バージョン 1.2.0 のバグ:1.2.3 で修正)

 

Ghostscript最新版への対応と文字コード指定。

f:id:acetaminophen:20141011012602p:plain

エディタの設定画面を新設。

f:id:acetaminophen:20141011012816p:plain

 

簡単な解説

より重要性の高い変更点から順に説明する。

(1) Ghostscriptのアップデートで epswrite が使えないケースに対応

おそらく最も重要な更新であろう。Ghostscript のデバイスが最近変更され、

  • gs9.10 [2013-08-30] 以前 → epswrite を使用
  • gs9.14 [2014-03-26] → eps2write 追加・epswrite は残すが非推奨
  • gs9.15 [2014-09-22] → eps2write を使用・epswrite は廃止

となったようである。

公式ページでも確認:History of Ghostscript versions 9.n

Version 9.15 (2014-09-22)
Get rid of last vestiges of pswrite....
Remove epswrite (the final "subdevice" of pswrite) and references to it.

Version 9.14 (2014-03-26)
A new device 'eps2write' has been added which allows for the creation of EPS files using the ps2write device instead of the old (deprecated and removed) pswrite device. This produces considerably better quality EPS files than the old epswrite device which is now also deprecated and will be removed in a future release.

この変更は epswrite をフル活用している TeX2img に大きく影響する。というわけで、 gs のバージョンによって内部で使用する device を自動的に選別する必要が発生し、TeX2img 初回起動時に

  • gs9.10 以前なら epswrite
  • gs9.14 以降なら eps2write

と自動的に推定する仕様に変更した。仮に誤判定あるいは今後の Ghostscript の仕様変更で device が変更されたとしても、オプションとしてチェックボックスで epswrite と eps2write を切り替えられるようになっている。

補足:Windows 版 1.2.5 以降では gs9.14 以前で epswrite・gs9.15 以降で eps2write を選択するように仕様変更した。

(2) 文字コードの指定が可能になった(バージョン 1.2.2 で追加)

文字コードShift_JIS, UTF-8, EUC-JP, JIS に指定できるようになった。いずれも -kanji= を指定するだけであるが、UTF-8 を指定できることで uplatex も通るようになったという恩恵が大きい。

プリアンブルで \documentclass のオプションに uplatex を書き加え、文字コードを「指定しない(入力UTF-8)」または「UTF-8」を指定すると、例えば以下のような処理が可能である:

f:id:acetaminophen:20141011005539p:plain

出力結果がこちら:

f:id:acetaminophen:20141011005607p:plain

旧版では文字コードを指定できなかったため、uplatex オプションなしで platex を通すことしかできず、以下のようになっていたはずである:

f:id:acetaminophen:20141011005747p:plain

(3) ソースコードのフォント及び色が変更できるようになった

エディタ設定でフォントの種類やサイズ、文字と背景の色を細かく設定できるようになった*1。個人的な好みで僕は Migu 1M に設定してある。

(4) その他細かい点

パス設定にオプションが含まれていると実行できないバグ修正

オプション設定時は実行ファイル名を" "で囲む。阿部さんの文書の Tips 参照。

呼び出す実行プログラムがフリーズした場合に処理を継続するかどうか確認

まれに dvipdfmx などのプログラムが途中でフリーズする場合が可能性として考えられる。このような場合に TeX2img 側が判断して停止するかどうか確認してくれる。

f:id:acetaminophen:20141011013246p:plain

dvipdfmxの -vv オプションが機能していなかったのを修正

-vv オプションとは、dvipdfmx の作業を詳しく見るためのものである。-v オプションよりさらにうるさくなるが、バグ報告の際にはこれが役立つので加えてある。

一時ファイルの削除もれを解消

TeXソースファイルを読み込む」で、実在しないファイルを読み込もうとしたときに tmpXXXX.tex というファイルが %TEMP% フォルダに取り残される現象を解消した。

プリアンブル設定を初期設定と「デフォルトに戻す」で統一

従来は、初めて TeX2img を起動したとき文書クラスが

\documentclass[fleqn]{jarticle}

デフォルトに戻したとき

\documentclass{jsarticle}

で一致していなかったが、これでは分かりにくいので

\documentclass[fleqn]{jsarticle}

に統一した。

 

今後の課題(2014-10-14 解決済み)

現在確認している問題として、TeX2img 1.2.3 (Win)では

「通常のコマンドラインや他の TeX 統合環境(TeXworks など)からは platex + dvipdfmx で処理できるソースファイルを TeX2img で読み込むと、 platex や dvipdfmx が途中でフリーズしてしまう」

ことが時々ある。僕もいろいろなソースで実験しているが、ソースのわずか一行の増減だけでも成功したり失敗したりするため原因不明である。バージョン 1.2.3 では「呼び出すプログラムがフリーズした場合に 10 秒ごとに継続確認」する措置を取ってあるので、とりあえずこれをフリーズした場合の対処法としておく。

追記:2014-10-14
この問題は Windows 版 1.2.0 以降 1.2.3 までで確認されていたが、この原因がついに判明した。

 

TeX2img Windows 版 1.2.3 でのフリーズ原因究明の経緯

初めに発見したエラー例*2は dvipdfmx.exe がフリーズする場合だった。そこで、まず dvipdfmx の -vv オプションが機能していなかったのを修正していただき、エラーの発生場所を調べようと思った。しかし、この -vv オプションによる出力が表示される手前ですでにフリーズしてしまい、失敗。

他のソースを試しているうちに、直接入力ウィンドウに「あいうえお」とだけ書いた場合でもフリーズする例を発見。

プリアンブル設定ウィンドウに

\documentclass[fleqn]{jsarticle}
\usepackage{tikz}

とだけ書いて「画像生成」すると、多数のファイルを読み込んでいる途中で platex.exe が停止していた。これを報告すると、阿部さんが「単に出力が長すぎるとアウト」という可能性を指摘。どうやら呼び出すプログラムの終了を待ってから出力を読むことにしたがために、出力をためこむバッファがいっぱいになって先に進めないという事態が発生していたらしい。つまり、例えば

デッドロックの恐れがあるため非推奨とされているコーディングとなっていたわけだ。さっそく修正していただき、無事に動くようになった。

 

追記:2014-10-13 Mac 版もアップデート!

先ほど確認したところ、TeX2img の Mac 版も gs のアップデートに対応して更新された(ver. 1.8.0)。さらに、Windows 版が先行していた「JPEG/PNG 出力時の余白単位を px / bp (big point) から選択」の機能も取り入れられた。

注意:2014-10-14 11:28

Mac 版 1.8.0 を 2014-10-14 11:28 より前にダウンロードした場合は、gs のバージョンの判定ミスが起こることを確認。早速修正されたので、TeX2img配布サイトから再度入手してください。

 

追記:2014-10-18 Ghostscript の仕様変更に完全対応。

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


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

*1:ver. 1.2.2はラジオボタンとエディタの色付けが連動していなかったが、ver. 1.2.3で修正された。

*2:諸事情により公開できない…