囲碁のプログラムを作ってみたくなったのですが、そもそも囲碁が
よく分かっていないので、囲碁を勉強してみようと思いましたが、
囲碁の図面を手書きするのが大変なので、
CTAN の go.sty と関連フォントを使って、 LaTeX で囲碁の作図をすることに
挑戦してみました。
「LaTeX グラフィックスコンパニオン」 ASCII には碁の紹介がありますが、
そもそも本に書いてあることが出来るまでの道のりが分かりませんでした。
以下は、ともかく、こうすれば出来たという私のための覚え書きです。
- まず、例えば、CTAN のミラーサイトの
http://www.ring.gr.jp/archives/text/CTAN/fonts/go/
の画面の fonts をクリックして、たくさん表示されるフォルダの中から、
go のフォルダを自分のコンピュータにコピーします。
- go フォルダの中の mf フォルダに含まれる mf ファイルを
METAFONT を使い、コマンドプロンプト(DOS 窓)で、次のように処理します。
mf \mode=cx; \mag=magstep0; input go10.mf
mf は METAFONT の処理系で、引数の \mode=cx; は、私のように安いインクジェット
プリンタを使っているときは、この指定をします。
\mag=magstep0; は拡大率なしでフォントを作ることを指示します。
今の場合、go10.300gf と go10.tfm が作成されます。
go10.360gf が欲しいときは \mag=magstep1; とすればいいです。
これを、go.mf, go1black.mf. go1white.mf, go2black.mf, go2white.mf
以外の mf ファイルに対して行います。
input go10.mf のファイル名を次々変えて実行すればいいです。
gosign50.mf ファイルは最後の end. が抜けていますから、mf の
プロンプトが出たら、end. と入力すればいいです。
- 上で作った gf ファイルを
gftopk go10.300gf
のように、コマンドプロンプト(DOS 窓)で処理します。
これを実行すると go10.300pk という名前のファイルが作られます。
この操作をすべての gf ファイルに対して行います。
- 上で作ったフォントを LaTeX が認識出来るようにするために、
乙部厳己+江口庄英著の pLaTeX2e を使っている場合は
c:\ptex\texmf\fonts\pk\CanonCX に go というフォルダを作り、
コマンドプロンプト(DOS 窓)で
copy *.*pk c:\ptex\texmf\fonts\pk\CanonCX\go
として、pk ファイルをすべてコピーし、c:\ptex\texmf\fonts\tfm に
go というフォルダを作り、
コマンドプロンプト(DOS 窓)で
copy *.tfm c:\ptex\texmf\fonts\tfm\go
として、tfm ファイルをすべてコピーします。
奥村晴彦著の pLaTeX2e を使っている場合は
c:\usr\local\share\texmf\fonts\pk\cx に go というフォルダを作り、
コマンドプロンプト(DOS 窓)で
copy *.*pk c:\usr\local\share\texmf\fonts\pk\cx\go
として、pk ファイルをすべてコピーし、c:\usr\local\share\texmf\fonts\tfm に
go というフォルダを作り、
コマンドプロンプト(DOS 窓)で
copy *.tfm c:\usr\local\share\texmf\fonts\tfm\go
として、tfm ファイルをすべてコピーします。
- これだけ準備して、go.sty をカレントフォルダに置いて、
tex ファイル(例えば、サンプルファイル
gomaps.ltx (乙部厳己+江口庄英著の pLaTeX2e を使っている場合は、
拡張子を tex に変えて))を
コンパイルすれば、碁の図面が表示されました。
但し、この mf ファイルにはバグがあります。黒石の39番と
白石の39番が29番と表示されます。
これは、次のように修正して、上の処理を繰り返せばいいです。
go1black.mf をエディタで開き、中程の
beginchar(39,24/22size#,23/22size#,1/22size#); "pion czarny z 39";
currentpicture := black_circle
- digit[2] shifted (.5w-1.1dig_w,11/24w-.5dig_h)
- digit[9] shifted (.5w+.1dig_w,11/24w-.5dig_h);
showit;
endchar;
の記述を
beginchar(39,24/22size#,23/22size#,1/22size#); "pion czarny z 39";
currentpicture := black_circle
- digit[3] shifted (.5w-1.1dig_w,11/24w-.5dig_h)
- digit[9] shifted (.5w+.1dig_w,11/24w-.5dig_h);
showit;
endchar;
に変更する。さらに、
go1white.mf をエディタで開き、中程の
beginchar(39,24/22size#,23/22size#,1/22size#); "pion czarny z 39";
currentpicture := white_circle
+ digit[2] shifted (.5w-1.1dig_w,11/24w-.5dig_h)
+ digit[9] shifted (.5w+.1dig_w,11/24w-.5dig_h);
showit;
endchar;
の記述を
beginchar(39,24/22size#,23/22size#,1/22size#); "pion czarny z 39";
currentpicture := white_circle
+ digit[3] shifted (.5w-1.1dig_w,11/24w-.5dig_h)
+ digit[9] shifted (.5w+.1dig_w,11/24w-.5dig_h);
showit;
endchar;
に変更する。
この方法は MusicTeX の導入にも有効な方法でした。
しかし、上に述べた方法は、手間がかかって大変です。うまい方法を
ロシア語を LaTeX に導入していて発見しました。
lh を CTAN から取ってきて、その中にあった install というファイル
(INSTALLATION OF LH FONTS AND THEIR LaTeX SUPPORT) を見ていて、
以下の方法でよいことが分かりました。
- 乙部厳己+江口庄英著の pLaTeX2e を使っている場合は
c:\ptex\texmf\fonts\source に go というフォルダを作り、
コマンドプロンプト(DOS 窓)で
copy *.mf c:\ptex\texmf\fonts\source\go
として、mf ファイルをすべてコピーし、
c:\ptex\texmf\tex\platex に go というフォルダを作り、
copy go.sty c:\ptex\texmf\tex\platex\go
として、go.sty をコピーし、
mktexlsr
を実行すればよいことを見付けました。
すなわち、上で手作業で作った pk ファイルと tfm ファイルを
フォルダごと消去して置いて、今述べた作業をすればうまく動きます。
pk ファイルと tfm ファイルが必要になれば、TeX が自動的に
METAFIONT を呼び出して、フォントを作ってくれます。
- 奥村晴彦著の pLaTeX2e を使っている場合も
c:\usr\local\share\texmf\fonts\source に go というフォルダを作り、
コマンドプロンプト(DOS 窓)で
copy *.mf c:\usr\local\share\texmf\fonts\source\go
として、mf ファイルをすべてコピーし、
c:\usr\local\share\texmf\tex\platex に go というフォルダを作り、
copy go.sty c:\usr\local\share\texmf\tex\platex\go
として、go.sty をコピーし、
mktexlsr
を実行し、更に、 WinShell を使わずに、コマンドプロンプトで
platex gomaps.tex
のように、実行すれば OK です。どういう訳か WinShell では
フォントを作ってくれません。
友達がいないので何年も疑問に思っていたことがやっと分かりました。
何冊も何冊も LaTeX の本を買ったのにこんな基本的なことをよう見付けませんでした。