- 実行するghostscriptの設定
- MSYSへの対応
1. 実行するghostscriptの設定
オリジナルのepstopdfでは,オプション指定がない限り,使用するghostscriptのコマンド名を次の規則に基づいて決定します.
W32TeXではこの「gswin32c」が「rungs」になっているのでCygwinを利用していなければrungsによってghostscriptが実行されます.そもそも,OSや環境に依らず,オプション指定がなければ「rungs」を実行してしまってよいと思うのですが,いかがでしょうか?WindowsかつPerlがCygwin由来のものでなければ「gswin32c」.そうでなければ「gs」
2. MSYSへの対応
過去のフォーラムでも議論されていますが,MSYSを使用している場合,epstopdf(およびrepstopdf)が失敗します.これは次の二つの原因があるように思われます.
- 「/」で始まる文字列がパスとして認識されてしまい,「/prepress」などが自動変換されてしまう
- epstopdfがWindows環境でないと誤認識するため,piped inputを使用してしまう(未検証)
1に関しては過去のフォーラムでも指摘されています.そのときの議論では,MSYSを使っている場合は自前でepstopdf.plを修正すればよいという結論になっていて,汎用的な解決策が示されていないように見えました.MSYSを使用してるか否かは,$^Oが"msys"かどうかで判定できるので,それを利用してエスケープするか否かを変更できます.この処理をディストリビューション側で入れてしまっていいと思うのですがどうでしょうか?
2はWindowsでPerlを使う際には必要だと思われる処理です.既存のepstopdf.plでも,Windows(Cygwin含む)の場合はpipeを利用しないように実装されていますが,MSYSではこの判定をすり抜けてしまうためpipeを使用してしまいます.未検証ですが,MSYSでもpipeを使用しないようにした方が安全に思います.
これらの修正を施したepstopdf.plを作成してみましたので,どなたか検証してもらえないでしょうか?
(手持ちのMSYS環境では簡単な動作確認をしています.)