ただ, epsファイルに数式を入力したいとなると, 少し面倒な作業が必要になる. 方針としては,
- epsファイルをTeXに取り込んで, 文字部分を数式に置き換える(psfragを使う).
- dvipsでepsファイルを作成する.
- epsファイルから余分な情報を取り除く.
- 必要に応じて, バウンディングボックスを修正する.
- epsファイルをTeXに取り込んで, 文字部分を数式に置き換える(psfragを使う).
gnuplotの場合はtgif形式に出力できる.
set term tgif
とすればよい.
set output "hogehoge.obj"
tgifで数式に変更したいところに, 適当な文字(例えばギリシャ文字のΩを入力したかったら, Omega とか)を入力しておく. そのあと, tgifからepsファイルに出力しておく.
次に, texファイルで上で作ったepsファイルを取り込み, ソースのプリアンブルに
\usepackage[dvips]{psfrag}
を書きこみ, さらに本文中のepsファイルを取り込む前に
\psfrag{Omega}{$\Omega$}
と入力する(\mathversion{bold}とか\bfを入れるかは御自由に). これをlatexでコンパイルする. なお, 出てきたdviファイルを見てもあまり意味がない.
- dvipsでepsファイルを作成する.
上で得られたdviファイルをdvipsでepsに変換する.
dvips -D 1200 -E hogehoge.dvi -o fugafuga.eps
この -D 1200 は解像度として1200dpiとすることを表す. 入れても入れなくても大差はないし, もっと大きな値にしてもよい. -E はepsを出力するオプション.
- epsファイルから余分な情報を取り除く.
今までは上記で
dvips -D 1200 hogehoge.dvi
としたあとに
ps2eps hogehoge.ps hogehoge.eps
としていたのだが, これで作ったepsファイルはdvipsに対応していない場合がある. すると, arXivなどで投稿するときに, 画像ファイルの数式が出力されないといったおかしなことがおこることがある(日本数学会のアブストラクトで, 不等式やら\Omegaやらが出力されていないものがあったが, その理由はここに起因しているものと思われる). その問題は, 実はps2eps(i)にあったようで, このコマンドでepsを作ったときに, 一部のフォント情報が抜けてしまうらしい(詳しいことはよくわからない). そこで, 上のようにdvipsでepsファイルを作ってから, そのファイルのバウンディングボックスなどを設定することにした(ついでに不必要なプレビュー画像も削除することにした). ghostscriptを使って
gs -q -sDEVICE=epswrite -sOutputFile=Final.eps -r1200 -dNOPAUSE -dBATCH -dEPSCrop fugafuga.eps
とする(改行はしていない. 一行で記述する). windowsの場合はgswin32とかかもしれない. 細かいオプションについて調べてはいないが, たぶん -q はメッセージを出さない(quiet), epswriteはepsを出力するということ, OutputFileは出力ファイル名, -r1200は解像度を1200dpiとすること, -dNOPAUSEはエラーでストップしない, -dBATCH はよくわからない, -dEPSCrop はバウンディングボックスをオートで設定するということだと思う.
- 必要に応じて, バウンディングボックスを修正する.
今回, 自分がやったときはうまくいったが, バウンディングボックスがうまく設定されていないときは, epsファイルをノートパッドなどで開いて, バウンディングボックスの数値を変更する. これは「eps bounding box 修正」とgoogle検索すればあれこれ情報があるはず.
なお, この方法でepsを作ると, プレビューで見たときに数式の部分などがジャギーになっていて綺麗に見えないかもしれないが, これはこれで正常である. texに取り込ませてみると, 綺麗に出力されているようなので問題はないようである.
昔々に 同様のことを行う不完全なスクリプトを書いて
返信削除使っていたことがありました。
なつかしく思いだしました。
スクリプトは psfrag の辞書を用意しておき、これを読み込んで
EPSを処理しEPSを生成すると言うものです。
PSfrag を使った文書の図だけを欲しいといわれたことが、
スクリプトを作るきっかけでした。