2010/02/21(Sun)TeXに差し込む図のepsをMS Office等から簡単に作る方法
2010/02/21 14:39
確かこれにはgif, jpg, png等も指定できた気がするが、せっかくテキスト側がラスターでなくベクターを維持しているのに、画像だけラスターで貼り付けてしまうと、拡大したときや印刷したときにドットの荒さが目立ってしまう。
そこで、EPS(Encapsulated Post Script)という形式を用いてベクターデータを貼り付けることが一般的である。
が、Linux環境などでTgifを用いて簡素な図を書く場合を除いて、Windows環境の殆どのアプリケーションはそもそもEPS出力できないか、正しいバウンディングボックス(画像の範囲・サイズ情報)を持ったデータを出力できない。
特にMicrosoft OfficeアプリケーションのExcelで作ったグラフや、PowerPointで作ったスライド、Visioで作った図を引用したいことも多いと思うので、それらを簡単にEPSに変換する方法をまとめておく。
※この方法を教えてくれた、@SugenTeleVisionさんに感謝。
WMF2EPS
まず変換ツールとしてWMF2EPSを用いる。DownloadページからZIP形式でダウンロードし、適当なディレクトリに解凍しておく。(以下%ProgramFiles%\WMF2EPS\とする)
ここまで済んだら起動する前に、プリンタの設定に入る。
EPS出力プリンタ
EPSはPS(Post Script)というプリンタの出力に使われる言語をベースとしているので、仮想プリンタを準備し、そこから出力させる方法をとる。先ほどのWMF2EPSにプリンタドライバが用意されているので、インストールする。
コントロールパネルからプリンタを開き、プリンタのインストールを行う。
▼ローカルプリンタを作成。このとき、高速化のためプラグアンドプレイ検出は無効にしておく。
▼出力先はファイルなので、FILEを選択
▼ドライバ選択まで来たら、ディスク使用をクリックし、以下のようにドライバを指定してインストールを完了する。
Windows 2000/XP 32bit版の場合
XPまでの場合は、%ProgramFiles%\WMF2EPS\PSprint\Win2000以下にあるドライバを指定する。Windows Vista/7 32bit版の場合
WMF2EPSの解説ページを参考に、- Vista_x86.INF
- %ProgramFiles%\WMF2EPS\PSprint\Win2000以下に入っているWMF2EPS2.PPD
- %WINDIR%\system32\spool\drivers\w32x86\3以下の、PS5UI.DLL, PS_SCHM.GDL, PSCRIPT.HLP, PSCRIPT.NTF, PSCRIPT5.DLL
Windows XP 64bit版の場合
WMF2EPSの解説ページを参考に、- Vista_x64.INF
- %ProgramFiles%\WMF2EPS\PSprint\Win2000以下に入っているWMF2EPS2.PPD
- %WINDIR%\system32\spool\drivers\x64\3以下の、PS5UI.DLL, PSCRIPT.HLP, PSCRIPT.NTF, PSCRIPT5.DLL
- 別のOSまたはここら辺からPS_SCHM.GDL
ちなみに解説ページに書かれているPSCRPTFE.NTF, run64.exeは不要の模様。
何故かXP x64だけは%WINDIR%\system32\spool\drivers\x64\3以下のドライバの数が少ない…
Windows Vista/7 64bit版の場合
WMF2EPSの解説ページを参考に、- Vista_x64.INF
- %ProgramFiles%\WMF2EPS\PSprint\Win2000以下に入っているWMF2EPS2.PPD
- %WINDIR%\system32\spool\drivers\x64\3以下の、PS5UI.DLL, PS_SCHM.GDL, PSCRIPT.HLP, PSCRIPT.NTF, PSCRIPT5.DLL
ちなみに解説ページに書かれているPSCRPTFE.NTF, run64.exeは不要の模様。
XP x64に対して、Vista/7のx64はきちんととドライバが揃っている。
▼Vista x64
▼7 x64
プリンタの設定
このままではEPSをきちんと出力できないので、プリンタの設定を行う。今作成したプリンタのプロパティを開き、全般タブの印刷設定(I)、詳細設定(V)を開く。
図のように、
- グラフィックス
- 印刷品質: 600dpi
- True Typeフォント: ソフトフォントとしてダウンロード
- ドキュメントのオプション
- PostScriptオプション
- PostScript出力オプション: 簡易 PostScript (EPS)
- TrueTypeフォントダウンロードオプション: ビットマップ
- PostScript言語レベル: 2
- PostScriptエラーハンドラを送信: いいえ
- 左右反転印刷: いいえ
- PostScriptオプション
ラスターではなくベクターを出力したいので、TrueTypeフォントダウンロードオプションは、一見アウトラインにした方が良さそうに思えるが、PSプリンタに含まれないフォント(MS ゴシックやらMS 明朝やら)が置換されてしまうので見た目通りの印刷にならない可能性がある。EPSのサイズは増加するが、ビットマップを選んでフォント埋め込みすることを推奨。
2回OKを押して、プリンタのプロパティに戻ったら、デバイスの設定タブを開く。
図のように
- フォント代替表
- 出力プロトコル: ASCII
- 各ジョブの前にCTRL-Dを送信する: いいえ
- 各ジョブの後にCTRL-Dを送信する: いいえ
WMF2EPSの設定
起動時Registration Dataの入力を求められるが、しばらくまってればOKが押せる。メニューのEPS-ConversionからConversion Setup...を開く
図のように
- Auto convert: Don't show this dialog before conversion を チェックする
- PS-Printer横のChangeボタンを押して、先ほど作成したプリンタを指定
- Use Standard path for storing EPS-filesをチェックしないこと(ファイル保存時に不便)
- Add previewをチェックしないこと(TeXで正しく扱えない)
- Interger EPS Bouding Boxをチェックすること(付けないと小数点のバウンディングボックス指定となる)
使い方
- MS Office等で図を作成したら、Ctrl+Cでコピーする
- WMF2EPSを起動し、Ctrl+VするとSelect graph to pasteというダイアログが出るので、Paste EMFを選ぶ。選べない場合はPaste WMF、それも選べない場合はPaste DIB。*1
- Save Pasted EMS as ...ダイアログで、epsを保存したいフォルダに好きな名前を付けて保存。
- ツールバーの右から3番目のEPSボタンを押すと、同じ階層にepsファイルが出力される。
- あとはTeXで以下のようにして差し込む
\documentclass[12pt]{jarticle} \usepackage{graphicx} \begin{document} \begin{figure}[h] \centering \caption{図のタイトル\label{fig:sample_figure}} \includegraphics[scale=0.6]{images/sample_figure.eps} \end{figure} \end{document}
便利な使い方
以下は私は試していないが、参考サイトによると…・一括変換したかったら、New Configurationして、全部のWMFまたはEMFを選択して開き、EPS-Conversion → All Files する
・GhostScript(gs)でうまく表示されなかったり、うまく印刷されない場合はgs付属のeps2epsを使ってゴミを取り除くと良いらしい。
トラブルシューティング
Could not read BundingBox out of lineEPSの変換時にこのエラーが表示されるときは、そのエラー内容が言っているように、仮想プリンタの設定が正しくない。
'%%BoundingBox: (atend)
'.
WMF2EPS will continue, but expect bad output !
This error is most probably caused by the missing
default EPS-setting for the WMF2EPS Color PS printer.
Please see the Help file how to setup the virtual printer.
ここからやり直せばエラーは消えるはず。