gnuplotで日本語ラベルを使う

Ubuntu 10.10でgnuplotを使い,グラフを作成するとします。
その際に,日本人である以上「日本語ラベル」を挿入する必要がありますね。

しかし,gnuplotのコンソール上では日本語を入力しても,消えてしまいます。

なので,ちょっと別の方法でグラフをプロットしてみましょう。


別の方法というのは,gnuplotの命令をファイルに書いてそれをgnuplotに読ませる方法です。

例えば,plotというテキストファイルを作成し,以下の内容で保存します。

set xl "Xラベル"
set yl "Yラベル"
plot sin(x)

ただし,Ubuntuでは普通文字コードはUTF-8なので,UTF-8で保存しないと文字化けします。
geditなどならそのまま保存すれば,エンコードはUTF-8で保存されると思われます。

次に,gnuplotをコンソールから呼び出します。

gnuplotのコマンドライン上で,

gnuplot> load "./plot"

で読み込ませます。

すると,描画ウィンドウが1つ開き
こんな感じで,日本語ラベルが表示されます。
日本語を含むEPS形式で出力する
ウィンドウに表示はできましたが,EPS形式で出力して,TeXの図として挿入する場合が多くあります。
日本語を含むEPSはちょっと厄介です。
TeXの文字コードがEUCであることを想定して,文字コードをEUCに合わせた方法を紹介します。
同様に,下記の内容のテキストファイルを作成し,保存します。
set terminal postscript eps enhanced "GothicBBB-Medium-EUC-H"
set output "plot.eps"
set xl "Xラベル"
set yl "Yラベル"
plot sin(x)

こちらは,文字コードはEUCで保存してください。

肝になるのが,1行目です。
set terminal postscript eps enhanced "GothicBBB-Medium-EUC-H"
本来は,
set terminal postscript eps enhanced

でいいのですが,後ろにフォント指定をしています。

これで,EPSを表示等する際に,日本語フォントが呼び出されます。

 

EPSのTeXへの挿入方法は,その他のサイトにあたってみてください。
注意すべきはTeX→DVI→PDFと変換する際に,dvipdfmxを使うと思いますが,おそらくdvipdfmxが通りません。
dvipdfmxはEPSファイルに日本語が含まれる際に,フォントを呼び出したりするようです。
どうやら,それがなぜか問題らしく,dvipdfmxの設定ファイルを修正しなければなりません。
こちらに関しては,下記の記事で紹介したので,参考にしてみてください。
問題が解決したところで,レポートの続きです!

dvipdfmxで日本語EPSを含んだDVIファイルを変換する

Ubuntu 10.10で日本語を含んだEPSファイルをTeXで図として挿入し、platexでコンパイルして作成されたDVIファイルをdvipdfmxに掛けると、通らないor文字化けが起こりました。
その解決方法をメモしておきます。

例えば、こんな感じのエラーが出ます。

hayato@hayato-U30Jc ~ % dvipdfmx -f hiragino.map test.dvi
test.dvi -> test.pdf
[1Segmentation fault

** WARNING ** Filtering file via command -->gs -q -dNOPAUSE -dBATCH -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -sOutputFile=/tmp/dvipdfmx.XyHs71K ./data.eps -c quit<-- failed.
** WARNING ** Image format conversion for "./data.eps" failed...
** ERROR ** pdf_ref_obj(): passed invalid object.

Output file removed.

Segmentation faultで落ちてますねw

ちなみにEPSファイルが含まれている場合、dvipdfmxはEPSファイルをghostscriptに掛けて変換などを行っているようです。(gsというコマンドはghostscriptのこと)
その際、どうやらdvipdfmxのデフォルトの設定だと日本語フォントを埋め込もうとする(?)ようです。

下記のサイトを参考にオプションを書き換えてみました。(12-5)
http://www.geocities.jp/tanaken_1018/tex/dvipdfmx.html

こちらのサイトではWindows上での話のようなので、読み替えて書いていきます。

dvipdfmx.cfgを編集する
上記のサイトによると、dvipdfmxの設定を書き換えるだけで良いみたいです。


dvipdfmx.cfgの位置は

/etc/texmf/dvipdfmx/dvipdfmx.cfg

です。

下記の行に似た行を、%でコメントアウトし、下記の行を挿入します。

D "gs -q -dSAFER -dNOPAUSE -dBATCH -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 -dAutoFilterGrayImages=false -dAutoFilterColorImages=false -dGrayImageFilter=/FlateEncode -dColorImageFilter=/FlateEncode -dUseFlateCompression=true -sOutputFile=%o -c .setpdfwrite '<</NeverEmbed [/Courier /Courier-Bold /Courier-Oblique /Courier-BoldOblique /Helvetica /Helvetica-Bold /Helvetica-Oblique /Helvetica-BoldOblique /Times-Roman /Times-Bold /Times-Italic /Times-BoldItalic /Symbol /ZapfDingbats /Ryumin-Light /GothicBBB-Medium] >> setdistillerparams' -f %i -c quit"

これで、dvipdfmxで変換してみましょう。

hayato@hayato-U30Jc ~ % dvipdfmx test.dvi
test.dvi -> test.pdf
[1]
66176 bytes written

OKですね!

これを解決するのにかなり時間が掛かってしまいました。。。
ghostscript周りが怪しいとは疑っていたのですが、dvipdfmx側はあまり疑っていませんでした。
日本語などといった言語を扱うときは、大変ですね。特に、TeXやghostscript周りでは。。。

これでレポートの続きができます!