2013年10月5日土曜日

Matlabで吐いたepsが,dvipdfmxで作成したpdf上でズレる

dviでは正しく表示されているのに,dvipdfmxでpdf化するとMatlabで吐いたepsがズレる問題.手元の2verで比較すると,dvipdfmx-20130405 (TeXlive2013同梱) だとズレるが,少し古い dvipdfmx-20120420 だと問題は発生しない.

根本的な原因は,epsのbounding boxの基点が(0,0)になっていないこと.
暫定対処1: 古いverを使う.
暫定対処2: epstopdfでpdfに変換し,pdfで取り込む.またはpdftopsで再変換.
根本対処はMatlabの出力時に左下を原点にあわせるようにすることだが,未解決.

(追記 2014/10/10)
dvipdfmxオプションつければズレなかった・・・
\usepackage[dvipdfmx]{graphicx}

いちおう,カレントフォルダにあるepsファイルをすべてepstopdf > pdftopsするバッチファイル書いた.生成物で上書きするので注意.
@echo off
rem Set this directly as the current directly
pushd %0\..

for %%f in (*.eps) do (
    epstopdf --outfile=%%f.pdf %%f
    pdfcrop %%f.pdf %%f_cropped
 rm %%f
    pdftops -eps %%f_cropped %%f
 rm %%f.pdf
 rm %%f_cropped
)

pause
exit