ibtiff-3.5.7-6vl2に含まれるtiff2psを使う。
tiff2ps -e -2 -z stapred-grey03.tif > stapred03.eps
zオプションを付けないと余計な空白が入る場合がある。
tgifで数式部分を\tex{数式などTeXコマンド}と書いておく。TeXコマンドは自 動実行されて結果が出力される位置は左寄せであることを念頭に置きながら、 tgif上で数式などを埋め込む。
次に適当なTeXファイルに入れ込む。
\documentclass[14pt]{article} \usepackage{graphicx} \usepackage[scanall]{psfrag} \begin{document} \thispagestyle{empty} \includegraphics[scale=1]{tmp2.eps} \end{document}
psfrag.styのオプションであるscanallは便利なオプションで、\tex{}の中に TeXコマンドを書いておけば、自動的に変換してくれる。このオプションをつ けない場合は、変換する対象の単語とTeXコマンドの対応を1つ1つ書 く必要がある。この場合は、変換後の出力位置を細かく指定できるので、必要 に応じて使い分ければよいが、ほとんどの場合は、tgif上で\tex{}を書き込む 位置を微調整して、scanallオプションで一気に変換した方が楽であると思う。
拡大縮小を避けるために、includegraphicsのサイズ指定オプションの scale
は1にする。これをコンパイルした後に、 dvips
でepsにする。
$ dvips -E tmp.dvi
左に余白ができる。 eps2eps
で余白を削ることもできるが、やってみると、フォ
ントがアウトライン化(ビットマップ化かも)されて、きれいにならない。
epstopdf
で出力されたpdfはフォント埋め込みなしでやや汚いpdfになった(下
図左、pdfをAdobe Reader上に表示させて得たスクリーンショット)。下図右は、
eps2eps
を通す前のオリジナル(正確には、 epstopdf
で変換したpdfをAdobe
Reader上に表示させて得たスクリーンショット)。
ubuntu 8.04 では、epstopdfは、texlive-extra-utils パッケージに入ってい る。探すのに苦労した。なお、このパッケージは、他にも重要で不可欠なコマ ンド、pdfclose pdfopenなども含んでいる。
結果的に、余白はepsのBoundingBoxをテキストエディタで直接編集するのがもっとも 迅速かつ妥当な方法といえると思う。
一連の作業手順をシェルスクリプトにすると作業が楽そうだ。
Rで出力すると余白が大きくなることがある。gvでマウスを動かしながら表示される座標を読み取る原始的な方法が一番確実。BBoxの修正プログラムとして、 eps2eps
、 epstool
などが定番だが、ちゃんと機能してくれないときもある。
今、Rで次のような画像を作成するとする。
m <- matrix(rep(2,8),nrow=1) symbols(5,5,stars=m,axes=FALSE,xlab='',ylab='') dev.copy2eps(file="octagon.eps")
このように余白が大きい。また、不要なはずのフォントの定義などが入っており、
$ wc -l octagon.eps 104 octagon.eps
104行もある。これにファイルに対して、
$ epstool --test-eps octagon.eps "gs" -dNOEPS -dNOPAUSE -dBATCH -dNODISPLAY "/tmp/gsviewp0rjVf" GPL Ghostscript 8.63 (2008-08-01) Copyright (C) 2008 Artifex Software, Inc. All rights reserved. This software comes with NO WARRANTY: see the file PUBLIC for details. Loading NimbusSanL-Regu font from /var/lib/defoma/gs.d/dirs/fonts/n019003l.pfb... 2646860 1084914 3135424 1835976 2 done. Loading NimbusSanL-Bold font from /var/lib/defoma/gs.d/dirs/fonts/n019004l.pfb... 2663524 1174047 3135424 1839602 2 done. Loading NimbusSanL-ReguItal font from /var/lib/defoma/gs.d/dirs/fonts/n019023l.pfb... 2700284 1264475 3135424 1842801 2 done. Loading NimbusSanL-BoldItal font from /var/lib/defoma/gs.d/dirs/fonts/n019024l.pfb... 2797332 1365734 3135424 1846004 2 done. Loading StandardSymL font from /var/lib/defoma/gs.d/dirs/fonts/s050000l.pfb... 2837524 1418985 3135424 1849380 2 done. EPSWARN PASS "gs" -dNOPAUSE -dBATCH -sDEVICE=bbox -c "<</PageSize [9400 9400] /PageOffset [3000 3000]>> setpagedevice" -f "/tmp/gsviewDmfjmR" GPL Ghostscript 8.63 (2008-08-01) Copyright (C) 2008 Artifex Software, Inc. All rights reserved. This software comes with NO WARRANTY: see the file PUBLIC for details. Loading NimbusSanL-Regu font from /var/lib/defoma/gs.d/dirs/fonts/n019003l.pfb... 2606740 1073526 3846428 2550346 2 done. Loading NimbusSanL-Bold font from /var/lib/defoma/gs.d/dirs/fonts/n019004l.pfb... 2623404 1162659 3846428 2553972 2 done. Loading NimbusSanL-ReguItal font from /var/lib/defoma/gs.d/dirs/fonts/n019023l.pfb... 2700356 1259743 3846428 2557171 2 done. Loading NimbusSanL-BoldItal font from /var/lib/defoma/gs.d/dirs/fonts/n019024l.pfb... 2797404 1361002 3846428 2560374 2 done. Loading StandardSymL font from /var/lib/defoma/gs.d/dirs/fonts/s050000l.pfb... 2837596 1414253 3866524 2567078 2 done. %%BoundingBox: 0 0 0 0 %%HiResBoundingBox: 0.000000 0.000000 0.000000 0.000000 File has %%BoundingBox: 0 0 504 504 Correct is %%BoundingBox: -3000 -3000 -3000 -3000 File bounding box needs to be larger PostScript appears well behaved. File claims to be EPS. FAIL: File does not comply with EPS specification. Failed
と失敗する。BBoxもおかしな値を計算する。 eps2eps
もBBoxの計算に失敗する。
そこで、 purifyeps
を試してみる。
$ purifyeps --fontmap=/usr/share/pstoedit/mpost.fmp octagon.eps octagon4.eps pstoedit: version 3.45 / DLL interface 108 (build Jun 17 2008 - release build - g++ 4.3.1) : Copyright (C) 1993 - 2007 Wolfgang Glunz This is MetaPost, Version 0.993 (Web2C 7.5.6) (/tmp/purifyeps-y3ektDXB.mp [1] ) 1 output file written: purifyeps-y3ektDXB.1 Transcript written on purifyeps-y3ektDXB.log. File seems to have been purified successfully. $ wc -l octagon4.eps 22 octagon4.eps
たった44行に削られており、正しくBBoxを計算できた。
この44行は、下記の通り
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 193 186 339 332 %%HiResBoundingBox: 193.934 186.734 338.684 331.484 %%Creator: MetaPost 0.993 %%CreationDate: 2008.12.12:1844 %%Pages: 1 %%BeginProlog %%EndProlog %%Page: 1 1 0 0 0 setrgbcolor 0 0.75 dtransform truncate idtransform setlinewidth pop [] 0 setdash 1 setlinecap 1 setlinejoin 10 setmiterlimit newpath 338.309 259.109 moveto 317.219 310.02 lineto 266.309 331.109 lineto 215.398 310.02 lineto 194.309 259.109 lineto 215.398 208.199 lineto 266.309 187.109 lineto 317.219 208.199 lineto 338.309 259.109 lineto stroke showpage %%EOF
Creator部分がMetaPostになっている点が興味深い