おもこん

おもこんは「思いつくままにコンピュターの話し」の省略形です

pregnuplot を作ってみた(5)

pregnuplot を作ってみた(5)

今回は実際に pregnuplot を動かしてみます。まず、Texworksを起動して「main.tex」を作ります。
% !TEX TS-program = psplatex
% !TEX encoding = UTF-8 Unicode

\documentclass[papersize,a4paper,11pt,fleqn]{jsarticle}

\usepackage[dvips]{graphicx}
\pagestyle{empty}

\begin{document}
\begin{center}
{\Large
pregnuplot を使ったグラフ描画例
}
\end{center}
2次関数$y=-x^2+3$と$x$軸とで囲まれた部分の領域表示。

\begin{center}
\input{sample_epslatex.tex}
\end{center}

\end{document}

pgp ファイルの作成

Texworks のメニューの「テンプレートから新規作成」を選びます。すると、ダイアログが現れ、フォルダが5つ見えるはずです。そして、その中の1つが「MyTemplate」になっているはずです。前回作ったテンプレートフォルダです。そこをクリックしてあけると、「default.pgp」があります。これを選択してください。読み込みが終了すると自動的にタイプセットが「pregnuplot」になっているはずです。そのファイルに必要事項を書き込みます。書き込み後のファイルを以下に示します。注意すべきは出力先のOUTFILEで、デフォルトから変更されています。
% !TEX TS-program = pregnuplot
% !TEX encoding = UTF-8 Unicode

#
#---------- Pregnuplot のソースファイルの始まり ----------
#

# 座標系 (Coordinate System) の範囲
XMIN = -3
XMAX = 3
YMIN = -1
YMAX = 5

# 関数 (Function)
FX0 = -x^2+3
FX1 = 
FX2 = 
FX3 = 

# x=aの形の直線の方程式
XEA0 = 
XEA1 = 
XEA2 = 
XEA3 = 

# 領域 (Domain)
DOMAIN = y>=0 && y<=-x^2+3

# 原点 (Origin) のラベル位置(NE,NW,SW,SE)
LABELO = SSW

# その他のラベル位置
# 名前、その点のx座標、その点のy座標、ずらす方向、倍率
#    例 y切片(2,0)の左下に"2"と(ラベルを)書きたいとき
#        2,2,0,SW,1
#    説明 SWは、SouthWest(南西 = 左下)。この他に
#          N (北 = 上), NEE(東北東 = 右にずれた右上) など
#          離れる基準の距離は、適当と思われるものを Perl のソースに入れてある。
#          それに対しての倍率を指定する。実際に図を打ち出してから判断するしかない。
LB0 = 3,3,0,NWW,1
LB1 = 
LB2 = 
LB3 = 
LB4 = 
LB5 = 
LB6 = 
LB7 = 
LB8 = 
LB9 = 

#点の座標を示すときの点線
# その点のx座標、その点のy座標、点線の行き先(x軸、y軸、両方)
#   例 点(2,3)から、x軸に点線を引く
#       2,3,x
#   例 点(2,3)から、x軸とy軸の両方に点線を引く
#       2,3,xy

PL0 = 
PL1 = 
PL2 = 
PL3 = 
PL4 = 
PL5 = 
PL6 = 
PL7 = 
PL8 = 
PL9 = 

# 出力先(+出力サイズ),出力先ファイル名
TERMINAL = epslatex size 6cm, 5cm
OUTFILE = sample_epslatex.tex

# 縦横比 = (縦)/(横)
RATIO = 1

#
#---------- ソースファイルの終わり ----------
#
まず、この pgp ファイルを処理します。タイプセットの緑色の三角をクリックします。するとファイルを保存する画面になりますので、名前を「sample.pgp」にして保存します。デフォルトでは「.tex」の拡張子が現れますので、拡張子まで変更してください。保存後に pregnuplot の処理が始まります。pregnuplot では、処理中に gnuplot を呼び出して LaTeX ファイル「sample_epslatex.tex」、「sample_epslatex.eps」も出力してくれます。
次にメニューの「ウィンドウ」から、「main.tex」を選択します。タイプセットは「psplatex」になっているでしょうか?そうなっていない場合は、Vine Linux の gnuplot を Latex に応用するの最後の方に psplatex のソースが書かれています。このシェルスクリプトを /usr/local/bin に置いて、実行属性を持たせてください。そして、Texworks のタイプセットに psplatex を追加しておいてください。なお、この「main.tex」はepsファイルを取り込むので、pdfplatex のような、dvipdfmx を使うタイプセットではコンパイルできません。
タイプセットの緑三角を押します。すると、pdfファイルが出力され、Texworks の2つ目のウィンドウが開くはずです。
イメージ 1

できあがった図に不満がある場合は、pgp ファイルを変更するだけでなく、gnu ファイルや、sample_epslatex.tex ファイルの調整で上手くいく場合もあります。いずれも Texworks で読み込んで編集可能です。(実は、eps ファイルも編集可能なんですが、そこまでやる人はいないと思います。それから、メニューから開かなくても、対象のファイルを Texworks の編集領域にドラッグするだけで読み込みをしてくれます)。

注意点

pregnuplot は、gnuplot の前処理プログラムなので、gnuplot の約束事がそのまま反映されることが多いのです。gnuplot の数字は、C言語のような整数型と実数型に分けられます。同じ1でも、1と書くと整数型。1.0と書くと実数型になります。特に割り算は整数型と実数型で違います。整数型の場合はあまりを切り捨てます。例えば1/3は0になります。それに対して実数型では、1.0/3.0は0.333333…となります。ですから、基本的にすべて数字は実数型で書いた方が良いのです。ただし、ラベル(グラフ上に書く文字列、例えば座標の数値を表す数字など)は別です。これは文字列なので計算の対象にはなりません。

まとめ

pregnuplot を使うと、グラフの LaTeX ファイルへの挿入は格段に早くなりました。pregnuplotの編集もTexworksでやってしまうというのも面白い考えだと思います。ある意味で Texworks は統合開発環境なのではないでしょうか。まだ開発途中のソフトなので、LaTeX の前処理プログラムを柔軟に取り入れられるようにしてもらえると、良いと思います。