2010/02/21(Sun)TeXに差し込む図のepsをMS Office等から簡単に作る方法

2010/02/21 14:39 Software::Windows
テキストベースで記述するTeXの中にも、\includegraphics等によって図を差し込むことが出来る。
確かこれには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にプリンタドライバが用意されているので、インストールする。

コントロールパネルからプリンタを開き、プリンタのインストールを行う。
▼ローカルプリンタを作成。このとき、高速化のためプラグアンドプレイ検出は無効にしておく。
eps_printer_add_printer1.png


▼出力先はファイルなので、FILEを選択
eps_printer_add_printer2.png


▼ドライバ選択まで来たら、ディスク使用をクリックし、以下のようにドライバを指定してインストールを完了する。
eps_printer_add_printer3.png


eps_printer_add_printer4.png

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以下のドライバの数が少ない…
eps_printer_xp64.png

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
eps_printer_vista64.png


▼7 x64
eps_printer_seven64.png


プリンタの設定

このままではEPSをきちんと出力できないので、プリンタの設定を行う。
今作成したプリンタのプロパティを開き、全般タブの印刷設定(I)詳細設定(V)を開く。

eps_printer_settings1.png

図のように、
  • グラフィックス
    • 印刷品質: 600dpi
    • True Typeフォント: ソフトフォントとしてダウンロード
  • ドキュメントのオプション
    • PostScriptオプション
      • PostScript出力オプション: 簡易 PostScript (EPS)
      • TrueTypeフォントダウンロードオプション: ビットマップ
      • PostScript言語レベル: 2
      • PostScriptエラーハンドラを送信: いいえ
      • 左右反転印刷: いいえ
と設定する。

ラスターではなくベクターを出力したいので、TrueTypeフォントダウンロードオプションは、一見アウトラインにした方が良さそうに思えるが、PSプリンタに含まれないフォント(MS ゴシックやらMS 明朝やら)が置換されてしまうので見た目通りの印刷にならない可能性がある。EPSのサイズは増加するが、ビットマップを選んでフォント埋め込みすることを推奨。
2回OKを押して、プリンタのプロパティに戻ったら、デバイスの設定タブを開く。

eps_printer_settings2.png

図のように
  • フォント代替表
    • 出力プロトコル: ASCII
    • 各ジョブの前にCTRL-Dを送信する: いいえ
    • 各ジョブの後にCTRL-Dを送信する: いいえ
と設定する。

WMF2EPSの設定

起動時Registration Dataの入力を求められるが、しばらくまってればOKが押せる。
メニューのEPS-ConversionからConversion Setup...を開く

eps_printer_settings3.png

図のように
  • 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をチェックすること(付けないと小数点のバウンディングボックス指定となる)
最後に、FileメニューからSave Configしておく。

使い方

  1. MS Office等で図を作成したら、Ctrl+Cでコピーする
  2. WMF2EPSを起動し、Ctrl+VするとSelect graph to pasteというダイアログが出るので、Paste EMFを選ぶ。選べない場合はPaste WMF、それも選べない場合はPaste DIB*1
    eps_printer_conversion1.png
  3. Save Pasted EMS as ...ダイアログで、epsを保存したいフォルダに好きな名前を付けて保存。
  4. ツールバーの右から3番目のEPSボタンを押すと、同じ階層にepsファイルが出力される。
    eps_printer_conversion2.png
  5. あとは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}
    

*1 : DIBではラスターになるので拡大・印刷に耐えない可能性がある。

便利な使い方

以下は私は試していないが、参考サイトによると…
・一括変換したかったら、New Configurationして、全部のWMFまたはEMFを選択して開き、EPS-Conversion → All Files する
・GhostScript(gs)でうまく表示されなかったり、うまく印刷されない場合はgs付属のeps2epsを使ってゴミを取り除くと良いらしい。

トラブルシューティング

eps_printer_error1.png

Could not read BundingBox out of line
'%%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.
EPSの変換時にこのエラーが表示されるときは、そのエラー内容が言っているように、仮想プリンタの設定が正しくない。
ここからやり直せばエラーは消えるはず。

参考文献

Creating EPS figure for TeX on WindowsNT4.0 or Windows2000