dvipsでepsを作るときの注意

画像に字を入れてそれをEPSファイルにしたいときや、tpicで描いた図をEPSファイルにしたいとき、

  1. 適当にTeXファイルに貼り付け、コンパイルしてDVIファイルを作る
  2. DVIPS(DVIPSK)を使ってPSファイルに変換する
  3. GSViewのメニューのPS to EPSでEPSファイルに変換する

ということをしていましたが、こうして作ったEPSファイルをTeXファイルに取り込むと、 何故かDVIOUTで画像が表示されない(PSやPDFに変換すると正常に見えるにも関わらず)ことがあることに気が付きました。

原因は上の2のステップにありました。DVIPSでPSファイルを作るときに「-t a4」というように紙の大きさを指定してはいけないのでした。例えば、

\documentclass{article}
\usepackage[dvips]{graphicx}
\begin{document}\thispagestyle{empty}
\huge\LaTeX
\end{document}

のようなLaTeXファイルから作ったDVIファイルを二つのやり方

dvips -o test1.ps test.dvi 
dvips -o test2.ps -t a4 test.dvi 

でPSファイルにします。更にtest1.psとtest2.psをGSViewのメニューの「PS to EPS」で、あるいは

ps2epsi test1.ps a1.eps
ps2epsi test2.ps a2.eps 

によって、それぞれEPSファイルtest1.epsとtest2.epsに変換します。このときtest1.epsはTeXに取り込んだときDVIOUTで正しく表示できますが、test2.epsはDVIOUTで正しく表示されません。GhostScriptのヘルプにヒントがありました:

EPS documents must not use any of the following operators: 
 banddevice   clear         cleardictstack  copypage
 erasepage    exitserver    framedevice     grestoreall
 initclip     initgraphics  initmatrix      quit
 renderbands  setglobal     setpagedevice   setpageparams
 setshared    startjob      letter          note
 legal        a3            a4              a5

The following operators should be used with care: 
 nulldevice   setgstate     sethalftone    setmatrix
 setscreen    settransfer   setcolortransfer

上の場合、test2.epsから

%%BeginPaperSize: a4
a4
%%EndPaperSize

という部分を探し出し、「a4」の行を削ってしまえば、TeXに取り込んだときDVIOUTでも表示されるようになります。ただ結論としては

dvips -E -o a3.eps test.dvi 

とやっていきなりEPSを作るのが一番安全な気がします(GSViewのメニューから作ったEPSと微妙に違いますが)。以下はテストに使ったTeXファイル。

\documentclass{article}
\usepackage[dvips]{graphicx}
\begin{document}
\begin{figure}[h]
\fbox{\includegraphics[height=30mm,keepaspectratio]{a1.eps}}
\end{figure}
\begin{figure}[h]
\fbox{\includegraphics[height=30mm,keepaspectratio]{a2.eps}}
\end{figure}
\begin{figure}[h]
\fbox{\includegraphics[height=30mm,keepaspectratio]{a3.eps}}
\end{figure}
\end{document}