%
%	Copyright (C) 1993 - 2001   Masahito Yamaga
%
\documentstyle[12pt,a4j]{jarticle}
%\documentstyle[12pt,a4]{j-article}

\begin{document}
\title{{\tt gnuplot} 機能拡張パッチによる拡張機能の使い方}
\author{$\stackrel{\hbox{\tiny やま}}{山}\stackrel{\hbox{\tiny が}}{賀}
 \stackrel{\hbox{\tiny まさ}}{正}\stackrel{\hbox{\tiny ひと}}{人}$ \\
{\tt ma@yama-ga.com}}
\date{平成 13年 1月 12日}
\maketitle
\tableofcontents
\newpage
\section{はじめに}
本パッチパッケージは gnuplot (version 3.7.1) に日本語を扱う機能や
\LaTeX like なテキスト処理機能などを付加するためのパッケージです.
最新版や最新情報, FAQ などは本パッチパッケージの Web サイト
\begin{center}
\verb=<http://www.yama-ga.com/gnuplot/>=
\end{center}
から得ることができます.

\vspace*{12pt}

本パッチパッケージによって拡張された機能は大きく分けて以下の 3点です.
\begin{itemize}
\item PostScript 出力での \LaTeX  \ like なテキスト処理機能
\item 以下の出力での日本語 (EUC, SJIS および ISO-2022-JP) 表示機能
\begin{itemize}
\item postscript
\item x11
\item pbm
\item png (Portable Network Graphics)
\item epson\_180dpi, epson\_60dpi, epsonlx800,
      nec\_cp6, okidata, starc, tandy\_60dpi
\item hp500c, hpljii, hpdj, hppj
\end{itemize}
\item GNU readline Library によるコマンドライン入力の履歴 (default 100) を
ファイル (\verb+~/.gp_history+) に保存し次の起動時に再利用する機能
\item 環境変数 {\tt LANG} や locale によってヘルプファイルを切り替える機能 \\
(default では {\small \verb+/usr/local/share/$LANG/gnuplot.gih+})
\end{itemize}
特に 1番目の \LaTeX \ like なテキスト処理機能が便利です.

\LaTeX \ like なテキスト処理をするなら, 出力を {\tt latex} や {\tt pslatex}
にすればいいのではないかと言われそうですが, 大抵の研究室の計算専用マシンには 
gnuplot や gs くらいはインストールされていても, latex がインストールさ
れていることはほとんどないと思われます.
それでも「ちょっとここはギリシャ文字を使いたい」とか
「ちょっと上付きや下付き文字を使いたい」ということはよくあります.
このような場合に, 本パッチをあてた gnuplot はとても便利で,
しかも使い方は簡単です.

\newpage
例えば, gnuplot に読み込ませるファイルに
\begin{verbatim}
        set terminal postscript plus color
        set output "test.ps"
        set title '\underline{これはテストプロットです.}'
        set label 1 '\rotate=-30$\frac{1}{2}$' at 1,1
        set xlabel '${\Red\size=20 \alpha}^x$'
        set ylabel '\beta'
        plot "data1" title '$T_{\alpha\sqrt{k}} = 10$'
\end{verbatim}
と書いておけば, コマンドラインで
\begin{center}
        \verb*+prompt% gnuplot このデータファイル+
\end{center}
とするだけで, {\tt xlabel} に 20pt の大きさの赤い$\alpha$に上付き $x$,
{\tt ylabel} に $\beta$, プロットの {\tt key} として $T_{\alpha\sqrt{k}}$,
また {\tt label} として $(1,1)$の位置に $-30$度回転した分数 $\frac{1}{2}$
を表示することができ,
更に日本語(明朝体) のタイトルをアンダーライン付きで表示する PostScript
ファイル {\tt test.ps} が作られます.

\section{具体的使用法}
\subsection{
\LaTeX \ like なテキスト処理 $\sim$ PostScript 出力の {\tt plus} オプション}
前節でも説明したように \LaTeX \ like なテキスト処理をしたい場合は
{\tt terminal} 設定時に
\begin{center}
        \verb+set terminal postscript plus+
\end{center}
のように PostScript 出力のオプションとして {\tt plus} を指定するだけで
テキスト部分の文法はほぼ \LaTeX と同じです.
また通常の {\tt plus} オプション無しの PostScript 出力に戻したい場合は
\begin{center}
        \verb+set terminal postscript noplus+
\end{center}
のように {\tt noplus}を指定してください.

\vspace*{12pt}

本機能が認識できる \LaTeX \ like な
コマンドは \fbox{\verb,gp+/command.lst,} に列挙されていますので
詳しくはそちらをご覧ください.

\subsubsection{本パッチパッケージで使えない \LaTeX コマンド}
リスト \verb,gp+/command.lst, で列挙されていないコマンドはもちろん使えませんが,
列挙されているものの中でも以下のことは{\bf できません}ので注意してください.
\begin{itemize}
\item 分数 \verb,\frac{}{}, の中で更に分数を指定する
\item 添字に分数を指定する
\end{itemize}

\subsubsection{オリジナルの \LaTeX と使用方法が異なるコマンド}
オリジナルの \LaTeX では,
数式モード中のアクセントのコマンド \verb|\hat|, \verb|\check|, \verb|\tilde|,
\verb|\acute|, \verb|\dot|, \verb|\ddot|, \verb|\grave|, \verb|\breve|,
\verb|\bar|, \verb|\vec| はアクセントをつける文字を
\begin{center}
\begin{tabular}{ccc}
\verb|\hat a|   & $\longrightarrow$ & $\hat a$ \\
\verb|\hat{a}|  & $\longrightarrow$ & $\hat{a}$
\end{tabular}
\end{center}
のように {\tt \{$\cdots$\}} で囲っても囲わなくても,
どちらでも構わないのですが,
本パッチパッケージでは {\bf 必ず}
\begin{center}
\verb|\hat{a}|
\end{center}
のように {\tt \{$\cdots$\}} で囲ってください.

\subsubsection{本パッチパッケージ独自のコマンド}
リスト \verb,gp+/command.lst, で列挙されているコマンドの中で
本パッチパッケージ独自のコマンドは \verb+\rotate=+ です.
このコマンドは必ず{\bf 回転させたい文字列の文頭}に置いてください.
例えば {\tt title} を 20度回転させたい場合は
\begin{center}
\verb+set title "\rotate=20これは回転のTESTです"+
\end{center}
と指定しますが
\begin{center}
\verb+set title "$\rotate=20これは回転のTESTです$"+
\end{center}
のように文頭以外で \verb+\rotate=+ を指定するとエラーになるので注意してください.
また \verb+\rotate=+ で指定できる数字は任意ですが単位は「度」です.

\subsubsection{フォント指定}
基本的には \LaTeX と同様ですが PostScript のフォントを利用するので
各々以下のような対応になります.
\begin{center}
\begin{tabular}{ccc}
コマンド   & PostScript フォント名 & \verb+\bf+ 指定時のフォント名 \\ \hline
\verb+\rm+ & {\tt Times-Roman}  & {\tt Times-Bold} \\
\verb+\it+ & {\tt Times-Italic} & {\tt Times-BoldItalic} \\
\verb+\tt+ & {\tt Courier}      & {\tt Courier-Bold} \\
\verb+\sf+ & {\tt Helvetica}    & {\tt Helvetica-Bold}
\end{tabular}
\end{center}
日本語の場合は default で {\tt Ryumin-Light-H},
また \verb+\bf+ 指定時には {\tt GothicBBB-Medium-H} が使われます\footnote{%
実際には使用している PostScript プリンタに合わせて gnuplot インストール時に
Makefile で指定したフォントが使われます}.
また \verb+\large+, \verb+\huge+, \verb+\small+ などの大きさを指定する
コマンドもほぼ \LaTeX と同様に使えます.

\vspace*{12pt}

以上のような \LaTeX 同様のフォント指定コマンドの他に次のような
コマンドも用意されています.
\begin{center}
\begin{tabular}{cl}
\verb+\sm+  &  PostScript の {\tt Symbol} フォントを指定 \\
\verb+\iso+ &  PostScript の ISOLatin1 エンコーディングベクタを指定 \\
\verb+\size=数字+ & 文字の大きさを ``{\bf 数字}pt'' に指定
\end{tabular}
\end{center}
ただし \verb+\sm+ と \verb+\iso+ は同時に指定できませんので注意してください.

\subsubsection{矢印}
{\tt plus} オプションを指定した場合は矢印も単なる線での描画ではなく
美しい矢印として出力されます.

\subsubsection{注意事項}
\begin{itemize}
\item \verb+\+ や \verb+$+ を含まない文字列は \LaTeX \ like な
テキスト処理から無視される \\
(この場合の日本語の処理は \ref{sec:PSJ} に従う)
\item \LaTeX \ like に処理したい文字列を \verb+"+ (double quotation)
ではなく \verb+'+ (single quotation) で囲わなくてはいけない
\end{itemize}
2番目の理由は gnuplot version 3.6 以降では \verb+"+ (double quotation)
で囲われた文字列中の \verb+\+ (back slash)に特別な意味があるからです(%
例えば \verb+\n+ $\rightarrow$ 改行, \verb+\t+ $\rightarrow$ タブ \ など).
どうしても「\verb+\n+ で改行したい」など \verb+"+ で
文字列を囲いたい場合はコマンドの \verb+\+ を \verb+\\+ に置き換えてください.


\subsection{日本語表示}
\subsubsection{PostScript}
\label{sec:PSJ}
通常の({\tt plus} オプションを指定しない) PostScript 出力では 環境変数
{\tt LANG} が日本語に指定されている({\tt ja} や {\tt japanese} など
頭二文字が ``{\tt ja}'')場合,
default で日本語を明朝体で表示することができます.
また環境変数 {\tt LANG} が日本語に指定されていない場合も
\begin{center}
        \verb+set locale "ja"+
\end{center}
のように環境変数 {\tt LANG} に指定できる locale に設定するか,
\begin{center}
        \verb+set term postscript "Helvetica-Mincho"+
\end{center}
のように明示的に日本語のフォントを指定すれば日本語を表示できます.
この例の場合は ASCII 文字が Helvetica で
日本語が明朝体(Ryumin-Light-H)で出力されます.
また
\begin{center}
        \verb+set term postscript "Times-Roman-Gothic"+
\end{center}
の場合は ASCII 文字が Times-Roman で日本語がゴシック体
(GothicBBB-Medium-H)で出力されます.

但し, フォント名を指定する場合は必ず ASCII 文字のフォントを指定してください.
\begin{center}
        \verb+set term postscript "Gothic"+
\end{center}
などとすると文字が表示されなくなります.
また ASCII 文字のフォントのみを指定した場合,
環境変数 {\tt LANG} や locale が日本語に指定されていれば
日本語を明朝体で表示しますが,
そうでない場合は日本語の表示はできません.

以上の日本語表示機能はラベルやタイトルの {\tt font} オプションによるフォント
指定に対しても同様に動作します.

\begin{quote}
この日本語処理機能については新島智之さんが fj.sources に投稿されたパッチ
\begin{verbatim}
        From: 28740505@people.or.jp (Niijima, Tomoyuki)
        Newsgroups: fj.sources
        Subject: Re: gnuplot_x11 for Japanese
        Date: 21 Apr 1996 00:02:31 +0900
        Organization: Internet News Forum of PEOPLE
        Lines: 159
        Sender: news@people.or.jp
        Distribution: fj
        Message-ID: <3178FC81.97E8.001@people.or.jp>
\end{verbatim}
を参考にさせていただいています.
\end{quote}

環境変数 {\tt LANG} が日本語に指定されている場合に, 日本語フォントを含まない
PostScript ファイルを出力させる場合は
\begin{center}
        \verb+set locale ""+
\end{center}
のように locale を空に設定してください.
{\tt C} に指定しても日本語の設定が有効になってしまいますので
注意してください\footnote{%
実は gnuplot 内部では default の locale が空ではなく {\tt C} に
設定されているのです.
困ったモンだ...}.

\subsubsection{X11}
この gnuplot の X11表示では '{\tt -*-fixed-medium-r-normal--14-*}' という
フォントセットを使って文字を表示しますので, オリジナルの gnuplot の
フォント({\tt fixed})と比べて一回り文字が大きくなります.

これ以外のフォントセットを使いたい場合は gnuplot 起動時に
\begin{center}
        \verb+gnuplot -font '-*-fixed-medium-r-normal--16-*'+
\end{center}
のように指定するか \verb+~/.Xdefaults+ などに
\begin{center}
        \verb+Gnuplot*font:   -*-fixed-medium-r-normal--16-*+
\end{center}
と指定すればいいでしょう.

また locale を利用するので環境変数 {\tt LANG} を適切なものに指定してください.
例えば, 日本語 Solaris2.x なら {\tt ja},
SunOS 4.1.x JLE なら {\tt japanese},
その他 \verb+ja_JP.EUC+ や \verb+ja_JP.ujis+ など
その OS が認識できるものを指定してください.

もし使っている X11 のライブラリが OS の locale ではなく X11 の locale 
を見る(X11 が \verb+-DX_LOCALE+ 付きでコンパイルされた)場合は X11 の locale 
ディレクトリ(例 \ {\tt /usr/X11R6/lib/X11/locale/})中の {\tt locale.alias}
に記載されているものを {\tt LANG} に指定してください.

それでも日本語が表示できない場合は, 山賀({\tt ma@yama-ga.com})まで
ご連絡ください.

\subsubsection{その他の出力での日本語表示}

pbm や png などの出力での日本語表示では,
角川裕次氏による VFlib (version 2.x) を使って
日本語文字をビットマップに展開しています.
\begin{center}
\verb+<ftp://ftp.se.hiroshima-u.ac.jp/pub/VFlib/>+
\end{center}

default では VFlib で扱えるフォントのうち {\tt min} が使われますが,
\begin{center}
\verb+set kanjifont "goth"+
\end{center}
のように VFlib で扱えるフォントの名前を指定することで
フォントを切り替えることができます.
また, このように明示的に指定しない場合の default のフォントは
環境変数 {\tt GP\_KANJIFONT} で指定することができます.

この機能は, gnuplot 内部の関数 \verb+b_put_text()+ を
日本語が扱えるように変更したことによって可能になった機能なので,
今後自分で何らかの出力terminalを作成した場合,
文字列の出力に \verb+b_put_text()+ を使うようにすれば
難しいことを考えなくても日本語が扱えます.

この他にも gif 出力であれば,
前田充宏氏による gd ライブラリの日本語化パッチを使えば日本語が扱えます.

\vspace*{-\baselineskip}

\begin{center}
\verb+<http://pg.cni.co.jp/GD/>+
\end{center}
この日本語化パッチを使えば,
上記の日本語フォントの切り替えが gif 出力に対しても有効になります.

また tgif 出力の場合は使用する tgif が日本語に対応していれば
そのままで日本語が扱えます.
ただし tgif で読込んだ後に日本語を適切に設定し直す必要がありますので
注意してください.


\subsubsection{漢字コードについて}

X11 の場合は環境変数 {\tt LANG} で指定された漢字コードのみ表示可ですが,
漢字コードは EUC, SJIS および ISO-2022-JP の中から自動判別されます.
しかし, この漢字コード自動判別機能は
いわゆる「半角カナ」を含む文字列に対しては誤動作しますので
「半角カナ」は使わないようにしてください\footnote{%
ただし, Windows 95/98/NT/2000 版の場合は SJIS を優先し,
「半角カナ」を「全角カナ」に変換して処理しますので
使っても構いません.}.

\subsection{その他の機能}
\subsubsection{履歴保存および再利用機能}
GNU readline Library を組み込んだ場合, コマンドライン入力の履歴
(default では 100個) を gnuplot 終了時に \verb+~/.gp_history+ に保存し,
次の gnuplot 起動時にこのファイルの内容を読み込んで履歴として再利用します.
この履歴保存ファイルのファイル名は環境変数 \verb+GP_HISTFILE+ に
使いたいファイル名を指定することで変更可能です.
例えば \verb+GP_HISTFILE+ を \verb+./.gp_history+ と設定すれば
常にカレントディレクトリの \verb+.gp_history+ を履歴保存ファイルにします.

また履歴保存ファイルへの保存量は環境変数 \verb+GP_HISTFILESIZE+ に
数字で指定することで変更可能です.
もし \verb+GP_HISTFILESIZE+ に数字以外の文字列などを指定した場合は 0 と見なし
履歴を保存しません.
もし以前の履歴をそのまま残しておきたい場合など
履歴ファイルを書き換えたくない場合はこのようにして
履歴を保存しないようにすれば良いでしょう.
また負の数字を指定した場合は default の値 100 が使われます.

\subsubsection{ヘルプファイルの切り替え機能}
default では
{\tt set locale} で指定された {\it locale} に対して
\begin{center}
{\small\tt /usr/local/share/{\it locale}/gnuplot.gih}
\end{center}
を探し,
見つからなければ
{\small\tt /usr/local/share/gnuplot.gih}
を探します.
また, もし {\it locale} が {\tt C} (default) である場合は
環境変数 {\tt LANG} に対して
\begin{center}
{\small\verb+/usr/local/share/$LANG/gnuplot.gih+}
\end{center}
を探し,
見つからなければ
{\tt /usr/local/share/gnuplot.gih}
を探します.

このヘルプファイルの検索パスは環境変数 {\tt GNUHELP} にパスを指定することで
変更することができます.
もしこの場合も {\tt LANG} または locale による切り替えを行いたい場合は
{\tt LANG} の内容や locale 名に展開して欲しい部分を
\verb+%L+ で指定してください.
例えば {\small\verb+~/docs/$LANG/gnuplot.gih+} と指定したい場合は
\verb+GNUHELP+ を {\small\verb+~/docs/%L/gnuplot.gih+} と設定してください.
ただしこの場合
gnuplot が {\small\verb+~/docs/$LANG/gnuplot.gih+} を見つけられなければ
次に {\small\verb+~/docs/gnuplot.gih+} を探そうとするということに
注意してください.

\section{利用条件}
添付の {\tt Copyright.plus} をご覧ください.

\section{作者からのお願い}
作者は一人でも多くの方に「ハッカー」と「クラッカー」という単語を
正しく使い分けてくださることを願っております.
もちろんこれは本パッチパッケージの利用に伴う義務ではありません.
あくまで作者からの「お願い」に過ぎません.

作者がこのように考える根拠となっている
\begin{center}
{\tt RFC (Request For Comments) 1983 "Internet Users' Glossary"}
\end{center}
よりハッカーとクラッカーの部分を以下に抜粋します.
\begin{verbatim}
   cracker
      A cracker is an individual who attempts to access computer systems
      without authorization.  These individuals are often malicious, as
      opposed to hackers, and have many means at their disposal for
      breaking into a system.  See also: hacker, Computer Emergency
      Response Team, Trojan Horse, virus, worm.

   hacker
      A person who delights in having an intimate understanding of the
      internal workings of a system, computers and computer networks in
      particular.  The term is often misused in a pejorative context,
      where "cracker" would be the correct term.  See also: cracker.
\end{verbatim}

\section{謝辞}
本パッチパッケージ作成にあたり, 数々の助言をくださった高野宏先生をはじめとする
慶應義塾大学理工学部物理学科理論研究室の皆様に感謝いたします.
また gnuplot-ML (現『Data Visualization Tool ML』) のメンバーの皆様,
特に大阪大学の升谷保博さんに感謝します.

その他にもメール等でご意見ご感想を送っていただいた多くの皆様に
この場を借りて感謝の意を表させていただきたいと思います.

\begin{flushright}
平成 13年 1月 12日 \\
山賀正人 \\
{\tt ma@yama-ga.com}
\end{flushright}
\end{document}
