2010/10/26(Tue)gnuplotでUTF-8の日本語を含むEPSファイルを作成する

2010/10/26 6:30 Software::Windows
TeXに差し込むグラフを作る事になって、やっぱgnuplotなのかなぁと思って手を出したら、意外と環境を作り込むまでハマったのでメモ。(調べてもあまりまとまって情報出てこないし…)
とりあえずWindows対象です。

ダウンロードと解凍

gnuplot homepageからDownloadPrimary download site on SourceForgeと進んで、Download Now!をクリック。
この記事を書いた段階では、gp442win32.zipが最新でした。

とりあえずzipの中で必要なのはgnuplot\binaryだけなので、ここを適当なフォルダへ解凍。
ただし、パスに日本語ファイル名を含むような(例えばデスクトップ)場所に置くと、起動がうまくいかない事があるのでご注意を。(これは読み込むファイルにも言えます)

初期設定

gnuplot.exeはコマンドライン用なので、GUIを持っているwgnuplot.exeを起動します。
シェルのような物が出てきますが、フォントが潰れていてとても読めた物じゃない状態で起動すると思いますので、以下のように、適当なところで右クリックして、Choose Font...を選びます。
(以下の画像は文字化けしていませんが、既にこの行程を済ませた状態です)

gnuplot1.png

「MS ゴシック」「標準」「9pt」「日本語」を選んでおけば問題ないでしょう。
gnuplot2.png


その後、設定ファイルに保存するためにもう一度右クリックして、Update ....\wgnuplot.iniをクリック。これで次回から化けません。

が、入力した文字を確定直後に文字化けしたように見え*1たり使いにくい?ので、基本はメモ帳などテキストエディタで作業する方が良いかもしれません。

*1 : 再描画がかかると日本語として見える

EPSファイルの作成

初期状態で"Terminal type set to 'wxt'"と表示されているように、デフォルトの設定だと、出力先がgnuplotのウィンドウになっています。

これを例えばEPSファイルにするには、
set terminal postscript eps enhanced "GothicBBB-Medium-UniJIS-UTF8-H"
set output "test.eps"
という2行をplot行より前に書きます。

これだとシステムに入っているゴシック系のフォントが選ばれるみたいです。WindowsだとMS ゴシックですね。
明朝系は"Ryumin-Medium-UniJIS-UTF8-H"とかでしょうか。

他にもいくつか定義名がありますが、詳細はGhostScriptをインストールしたフォルダ\Resource\Fontにあります。一応リスト

テストファイルを置いておきます。
test.pltとでも名前を付けてUTF-8で保存して、gnuplotからloadに続けてフルパスで記述すればOKです。
set xlabel '日本語'
set ylabel 'けろけろけろ'
set terminal postscript eps enhanced "GothicBBB-Medium-UniJIS-UTF8-H"
set output "test.eps"
plot x
正しくできたかどうかは、GSView辺りを使って確認してもいいですが、TeXに書いてみるとBoundingBox含め、正しく描画されているかが分かると思います。これもUTF-8で保存。
\documentclass[a4j,11pt]{jarticle}
\usepackage{graphicx}

\begin{document}
	日本語日本語
	\begin{figure}[tb]
		\centering
		\includegraphics[width=7cm]{test.eps}
	\end{figure}
\end{document}

日本語が化ける場合

gnuplot等で作ったepsの日本語が化けるに書いたように、GhostScriptのフォント定義が未設定か壊れているのが原因なので、lib\cidfmapを作り直せば化けなくなります。
これのせいでえらいハマった、ハマった……(汗

GhostScriptに入っているフォント定義一覧

CenturySchL-Bold
CenturySchL-BoldItal
CenturySchL-Ital
CenturySchL-Roma
Dingbats
FutoGoB101-Bold-EUC-H
FutoGoB101-Bold-EUC-V
FutoGoB101-Bold-H
FutoGoB101-Bold-UniJIS-UTF16-H
FutoGoB101-Bold-UniJIS-UTF16-V
FutoGoB101-Bold-V
FutoMinA101-Bold-EUC-H
FutoMinA101-Bold-EUC-V
FutoMinA101-Bold-H
FutoMinA101-Bold-UniJIS-UTF16-H
FutoMinA101-Bold-UniJIS-UTF16-V
FutoMinA101-Bold-V
GothicBBB-Medium-EUC-H
GothicBBB-Medium-EUC-V
GothicBBB-Medium-H
GothicBBB-Medium-UniJIS-UTF16-H
GothicBBB-Medium-UniJIS-UTF16-V
GothicBBB-Medium-V
HiraKakuPro-W3-EUC-H
HiraKakuPro-W3-EUC-V
HiraKakuPro-W3-H
HiraKakuPro-W3-UniJIS-UTF16-H
HiraKakuPro-W3-UniJIS-UTF16-V
HiraKakuPro-W3-V
HiraKakuPro-W6-EUC-H
HiraKakuPro-W6-EUC-V
HiraKakuPro-W6-H
HiraKakuPro-W6-UniJIS-UTF16-H
HiraKakuPro-W6-UniJIS-UTF16-V
HiraKakuPro-W6-V
HiraKakuStd-W8-EUC-H
HiraKakuStd-W8-EUC-V
HiraKakuStd-W8-H
HiraKakuStd-W8-UniJIS-UTF16-H
HiraKakuStd-W8-UniJIS-UTF16-V
HiraKakuStd-W8-V
HiraMaruPro-W4-EUC-H
HiraMaruPro-W4-EUC-V
HiraMaruPro-W4-H
HiraMaruPro-W4-UniJIS-UTF16-H
HiraMaruPro-W4-UniJIS-UTF16-V
HiraMaruPro-W4-V
HiraMinPro-W3-EUC-H
HiraMinPro-W3-EUC-V
HiraMinPro-W3-H
HiraMinPro-W3-UniJIS-UTF16-H
HiraMinPro-W3-UniJIS-UTF16-V
HiraMinPro-W3-V
HiraMinPro-W6-EUC-H
HiraMinPro-W6-EUC-V
HiraMinPro-W6-H
HiraMinPro-W6-UniJIS-UTF16-H
HiraMinPro-W6-UniJIS-UTF16-V
HiraMinPro-W6-V
Jun101-Light-EUC-H
Jun101-Light-EUC-V
Jun101-Light-H
Jun101-Light-UniJIS-UTF16-H
Jun101-Light-UniJIS-UTF16-V
Jun101-Light-V
NimbusMonL-Bold
NimbusMonL-BoldObli
NimbusMonL-Regu
NimbusMonL-ReguObli
NimbusRomNo9L-Medi
NimbusRomNo9L-MediItal
NimbusRomNo9L-Regu
NimbusRomNo9L-ReguItal
NimbusSanL-Bold
NimbusSanL-BoldCond
NimbusSanL-BoldCondItal
NimbusSanL-BoldItal
NimbusSanL-Regu
NimbusSanL-ReguCond
NimbusSanL-ReguCondItal
NimbusSanL-ReguItal
Ryumin-Light-EUC-H
Ryumin-Light-EUC-V
Ryumin-Light-H
Ryumin-Light-UniJIS-UTF16-H
Ryumin-Light-UniJIS-UTF16-V
Ryumin-Light-V
Ryumin-Regular-EUC-H
Ryumin-Regular-EUC-V
Ryumin-Regular-H
Ryumin-Regular-UniJIS-UTF16-H
Ryumin-Regular-UniJIS-UTF16-V
Ryumin-Regular-V
StandardSymL
URWBookmanL-DemiBold
URWBookmanL-DemiBoldItal
URWBookmanL-Ligh
URWBookmanL-LighItal
URWChanceryL-MediItal
URWGothicL-Book
URWGothicL-BookObli
URWGothicL-Demi
URWGothicL-DemiObli
URWPalladioL-Bold
URWPalladioL-BoldItal
URWPalladioL-Ital
URWPalladioL-Roma