$\TikZ$は$\LaTeX$で図を描くためのパッケージです。Mathlogでは$\TikZ$を使うことができないので、ご注意ください。
$\TikZ$を使うためには、プリアンブルで\usepackage{tikz}
と宣言する必要があります。さらに$\TikZ$にはいくつかの拡張機能がありますが、ここでは割愛します。
$\TikZ$のコマンドは
\tikz コマンド;
というように使います。例えば
\tikz \draw(0,0)--(1,0);
とすると直線が書けます。ここで、最後のセミコロンは必ず必要なものになります。忘れないようにしましょう。
複雑な(複数行の)コマンドを使うときは
\ begin{tikzpicture}
コマンド;
コマンド;
\ end{tikzpicture}
とします。
$\TikZ$には描画のための様々なコマンドが実装されていますが、今回は以下の四つを使います。
\draw
線を描く。\draw(始点)--(終点);
で直線を描ける。\draw(中心)circle(半径);
で円を描ける。\fill
図形の内側を塗りつぶす。\filldraw
図形の境界と内側の色を別に指定する。\node
点にラベルを付ける。\node(点の名前)at(座標){ラベル};
で指定した座標に名前を付け、ラベルを表示する。オプションを指定したいときは\draw[オプション](始点)--(終点);
のようにコマンドの直後に置きます。
\draw
などの途中でラベルを付けたいときは、\
と;
の間にnode
を記述します。
使用例
まずは九路盤を描いてみましょう。碁盤は基本的に直線で構成されているので、描くのはそんなに難しくありません。
\ begin{tikzpicture}
\draw(1,1)--(1,9);
\draw(2,1)--(2,9);
\draw(3,1)--(3,9);
\draw(4,1)--(4,9);
\draw(5,1)--(5,9);
\draw(6,1)--(6,9);
\draw(7,1)--(7,9);
\draw(8,1)--(8,9);
\draw(9,1)--(9,9);
\draw(1,1)--(9,1);
\draw(1,2)--(9,2);
\draw(1,3)--(9,3);
\draw(1,4)--(9,4);
\draw(1,5)--(9,5);
\draw(1,6)--(9,6);
\draw(1,7)--(9,7);
\draw(1,8)--(9,8);
\draw(1,9)--(9,9);
\fill(5,5)circle(3pt);
\ end{tikzpicture}
縦横9本ずつの直線を引けば碁盤ができます。九路盤には星があるので\fill(5,5)circle(3pt);
と書きます。毎回これを書くのは面倒なので\newcommand{\goban}{\draw(1,1)--(1,9);……}
とし、
\ begin{tikzpicture}
\goban
\ end{tikzpicture}
と書くようにすれば簡単でしょう。
十三路盤や十九路盤も同じように作れます。ここで\goban{盤の大きさ}
と碁盤の大きさを指定すればその大きさの盤が表示されるようなコマンドを作ってみましょう。
実は$\TeX$には一般的なプログラム言語におけるifのようなものが実装されています。ここではそのうち\ifnum
を使います。これは\ifnum 条件 処理A\else 処理B\fi
と書くと、条件が真のとき処理Aを、そうでないとき処理Bを行います。ただし、条件は何でもいいわけではなく\ifnum 3<1
のように二つの整数を比べるものである必要があります。これを使うと、以下のようなコマンドが作れます。
\newcommand{\goban}[1]{
\ifnum #1=1
\fill(0,0)circ(3pt);
\fi
\ifnum #1=2
\draw(1,1)--(1,2);
\draw(2,1)--(2,2);
\draw(1,1)--(2,1);
\draw(2,1)--(2,2);
\fi
\ifnum #1=3
\draw(1,1)--(1,3);
\draw(2,1)--(2,3);
\draw(3,1)--(3,3);
\draw(1,1)--(3,1);
\draw(1,2)--(3,2);
\draw(1,3)--(3,3);
\fi
}
例えば
\ begin{tikzpicture}
\goban{3}
\ end{tikzpicture}
と書けば三路盤が表示されます。
ここでは一路盤から三路盤が作れるようにしましたが、同じように作っていけばもっと大きい盤にも対応できるようになります。
碁盤ができただけでは囲碁の図を描くことはできません。碁石を描くコマンドも用意しましょう。
\newcommand{\siro}[1]{\filldraw[fill=white,draw=black](#1)circle(13pt);}
\newcommand{\kuro}[1]{\fill(#1)circle(13pt);}
とすれば指定した座標に石が置けます。例えば、
\ begin{tikzpicture}
\goban{6}
\kuro{2,2}
\ end{tikzpicture}
と書けば
と表示されます。気を付けるべき点として、普通は左上を1の一としますが、このコマンドを使うときは左下を$(1,1)$として考える必要があります。
これでも最低限の機能はありますが、碁石に番号を振ったり、交点に文字を書いたりしたいことがよくあるので、そういうことができるようにしましょう。
\newcommand{\siro}[2][]{\filldraw[fill=white,draw=black](#2)circle(13pt)node{\Large{#1}};}
\newcommand{\kuro}[2][]{\fill(#2)circle(13pt)node[white]{\Large{#1}};}
\newcommand{\mozi}[2][]{\node[fill=white]at(#2){\Large{#1}};}
こうすることで、
\ begin{tikzpicture}
\goban{6}
\kuro[1]{2,2}
\ end{tikzpicture}
と書けば
と表示されるようになります
以上で$\TikZ$を使って碁盤を描くことができました。これで作った図は グラフによる碁の表現 や グラフ碁の死活 で使っていますのでよければご覧ください。
十九路盤まで対応できるようにしたものを載せておきます。
\newcommand{\goban}[1]{
\ifnum #1=1
\fill(0,0)circ(3pt);
\fi
\ifnum #1=2
\draw(1,1)--(1,2);\draw(2,1)--(2,2);\draw(1,1)--(2,1);\draw(2,1)--(2,2);
\fi
\ifnum #1=3
\draw(1,1)--(1,3);\draw(2,1)--(2,3);\draw(3,1)--(3,3);\draw(1,1)--(3,1);\draw(1,2)--(3,2);\draw(1,3)--(3,3);
\fi
\ifnum #1=4
\draw(1,1)--(1,4);\draw(2,1)--(2,4);\draw(3,1)--(3,4);\draw(4,1)--(4,4);\draw(1,1)--(4,1);\draw(1,2)--(4,2);\draw(1,3)--(4,3);\draw(1,4)--(4,4);
\fi
\ifnum #1=5
\draw(1,1)--(1,5);\draw(2,1)--(2,5);\draw(3,1)--(3,5);\draw(4,1)--(4,5);\draw(5,1)--(5,5);\draw(1,1)--(5,1);\draw(1,2)--(5,2);\draw(1,3)--(5,3);\draw(1,4)--(5,4);\draw(1,5)--(5,5);
\fi
\ifnum #1=6
\draw(1,1)--(1,6);\draw(2,1)--(2,6);\draw(3,1)--(3,6);\draw(4,1)--(4,6);\draw(5,1)--(5,6);\draw(6,1)--(6,6);\draw(1,1)--(6,1);\draw(1,2)--(6,2);\draw(1,3)--(6,3);\draw(1,4)--(6,4);\draw(1,5)--(6,5);\draw(1,6)--(6,6);
\fi
\ifnum #1=7
\draw(1,1)--(1,7);\draw(2,1)--(2,7);\draw(3,1)--(3,7);\draw(4,1)--(4,7);\draw(5,1)--(5,7);\draw(6,1)--(6,7);\draw(7,1)--(7,7);\draw(1,1)--(7,1);\draw(1,2)--(7,2);\draw(1,3)--(7,3);\draw(1,4)--(7,4);\draw(1,5)--(7,5);\draw(1,6)--(7,6);\draw(1,7)--(7,7);\fill(4,4)circle(3pt);
\fi
\ifnum #1=8
\draw(1,1)--(1,8);\draw(2,1)--(2,8);\draw(3,1)--(3,8);\draw(4,1)--(4,8);\draw(5,1)--(5,8);\draw(6,1)--(6,8);\draw(7,1)--(7,8);\draw(8,1)--(8,8);\draw(1,1)--(8,1);\draw(1,2)--(8,2);\draw(1,3)--(8,3);\draw(1,4)--(8,4);\draw(1,5)--(8,5);\draw(1,6)--(8,6);\draw(1,7)--(8,7);\draw(1,8)--(8,8);
\fi
\ifnum #1=9
\draw(1,1)--(1,9);\draw(2,1)--(2,9);\draw(3,1)--(3,9);\draw(4,1)--(4,9);\draw(5,1)--(5,9);\draw(6,1)--(6,9);\draw(7,1)--(7,9);\draw(8,1)--(8,9);\draw(9,1)--(9,9);\draw(1,1)--(9,1);\draw(1,2)--(9,2);\draw(1,3)--(9,3);\draw(1,4)--(9,4);\draw(1,5)--(9,5);\draw(1,6)--(9,6);\draw(1,7)--(9,7);\draw(1,8)--(9,8);\draw(1,9)--(9,9);\fill(5,5)circle(3pt);
\fi
\ifnum #1=10
\draw(1,1)--(1,10);\draw(2,1)--(2,10);\draw(3,1)--(3,10);\draw(4,1)--(4,10);\draw(5,1)--(5,10);\draw(6,1)--(6,10);\draw(7,1)--(7,10);\draw(8,1)--(8,10);\draw(9,1)--(9,10);\draw(10,1)--(10,10);\draw(1,1)--(10,1);\draw(1,2)--(10,2);\draw(1,3)--(10,3);\draw(1,4)--(10,4);\draw(1,5)--(10,5);\draw(1,6)--(10,6);\draw(1,7)--(10,7);\draw(1,8)--(10,8);\draw(1,9)--(10,9);\draw(1,10)--(10,10);\fill(3,3)circle(3pt);\fill(3,8)circle(3pt);\fill(8,3)circle(3pt);\fill(8,8)circle(3pt);
\fi
\ifnum #1=11
\draw(1,1)--(1,11);\draw(2,1)--(2,11);\draw(3,1)--(3,11);\draw(4,1)--(4,11);\draw(5,1)--(5,11);\draw(6,1)--(6,11);\draw(7,1)--(7,11);\draw(8,1)--(8,11);\draw(9,1)--(9,11);\draw(10,1)--(10,11);\draw(11,1)--(11,11);\draw(1,1)--(11,1);\draw(1,2)--(11,2);\draw(1,3)--(11,3);\draw(1,4)--(11,4);\draw(1,5)--(11,5);\draw(1,6)--(11,6);\draw(1,7)--(11,7);\draw(1,8)--(11,8);\draw(1,9)--(11,9);\draw(1,10)--(11,10);\draw(1,11)--(11,11);\fill(4,4)circle(3pt);\fill(4,8)circle(3pt);\fill(8,4)circle(3pt);\fill(8,8)circle(3pt);
\fi
\ifnum #1=12
\draw(1,1)--(1,12);\draw(2,1)--(2,12);\draw(3,1)--(3,12);\draw(4,1)--(4,12);\draw(5,1)--(5,12);\draw(6,1)--(6,12);\draw(7,1)--(7,12);\draw(8,1)--(8,12);\draw(9,1)--(9,12);\draw(10,1)--(10,12);\draw(11,1)--(11,12);\draw(12,1)--(12,12);\draw(1,1)--(12,1);\draw(1,2)--(12,2);\draw(1,3)--(12,3);\draw(1,4)--(12,4);\draw(1,5)--(12,5);\draw(1,6)--(12,6);\draw(1,7)--(12,7);\draw(1,8)--(12,8);\draw(1,9)--(12,9);\draw(1,10)--(12,10);\draw(1,11)--(12,11);\draw(1,12)--(12,12);\fill(4,4)circle(3pt);\fill(4,9)circle(3pt);\fill(9,4)circle(3pt);\fill(9,9)circle(3pt);
\fi
\ifnum #1=13
\draw(1,1)--(1,13);\draw(2,1)--(2,13);\draw(3,1)--(3,13);\draw(4,1)--(4,13);\draw(5,1)--(5,13);\draw(6,1)--(6,13);\draw(7,1)--(7,13);\draw(8,1)--(8,13);\draw(9,1)--(9,13);\draw(10,1)--(10,13);\draw(11,1)--(11,13);\draw(12,1)--(12,13);\draw(13,1)--(13,13);\draw(1,1)--(13,1);\draw(1,2)--(13,2);\draw(1,3)--(13,3);\draw(1,4)--(13,4);\draw(1,5)--(13,5);\draw(1,6)--(13,6);\draw(1,7)--(13,7);\draw(1,8)--(13,8);\draw(1,9)--(13,9);\draw(1,10)--(13,10);\draw(1,11)--(13,11);\draw(1,12)--(13,12);\draw(1,13)--(13,13);\fill(4,4)circle(3pt);\fill(4,10)circle(3pt);\fill(10,4)circle(3pt);\fill(10,10)circle(3pt);
\fi
\ifnum #1=14
\draw(1,1)--(1,14);\draw(2,1)--(2,14);\draw(3,1)--(3,14);\draw(4,1)--(4,14);\draw(5,1)--(5,14);\draw(6,1)--(6,14);\draw(7,1)--(7,14);\draw(8,1)--(8,14);\draw(9,1)--(9,14);\draw(10,1)--(10,14);\draw(11,1)--(11,14);\draw(12,1)--(12,14);\draw(13,1)--(13,14);\draw(14,1)--(14,14);\draw(1,1)--(14,1);\draw(1,2)--(14,2);\draw(1,3)--(14,3);\draw(1,4)--(14,4);\draw(1,5)--(14,5);\draw(1,6)--(14,6);\draw(1,7)--(14,7);\draw(1,8)--(14,8);\draw(1,9)--(14,9);\draw(1,10)--(14,10);\draw(1,11)--(14,11);\draw(1,12)--(14,12);\draw(1,13)--(14,13);\draw(1,14)--(14,14);\fill(4,4)circle(3pt);\fill(4,11)circle(3pt);\fill(11,4)circle(3pt);\fill(11,11)circle(3pt);
\fi
\ifnum #1=15
\draw(1,1)--(1,15);\draw(2,1)--(2,15);\draw(3,1)--(3,15);\draw(4,1)--(4,15);\draw(5,1)--(5,15);\draw(6,1)--(6,15);\draw(7,1)--(7,15);\draw(8,1)--(8,15);\draw(9,1)--(9,15);\draw(10,1)--(10,15);\draw(11,1)--(11,15);\draw(12,1)--(12,15);\draw(13,1)--(13,15);\draw(14,1)--(14,15);\draw(15,1)--(15,15);\draw(1,1)--(15,1);\draw(1,2)--(15,2);\draw(1,3)--(15,3);\draw(1,4)--(15,4);\draw(1,5)--(15,5);\draw(1,6)--(15,6);\draw(1,7)--(15,7);\draw(1,8)--(15,8);\draw(1,9)--(15,9);\draw(1,10)--(15,10);\draw(1,11)--(15,11);\draw(1,12)--(15,12);\draw(1,13)--(15,13);\draw(1,14)--(15,14);\draw(1,15)--(15,15);\fill(4,4)circle(3pt);\fill(4,12)circle(3pt);\fill(12,4)circle(3pt);\fill(12,12)circle(3pt);
\fi
\ifnum #1=16
\draw(1,1)--(1,16);\draw(2,1)--(2,16);\draw(3,1)--(3,16);\draw(4,1)--(4,16);\draw(5,1)--(5,16);\draw(6,1)--(6,16);\draw(7,1)--(7,16);\draw(8,1)--(8,16);\draw(9,1)--(9,16);\draw(10,1)--(10,16);\draw(11,1)--(11,16);\draw(12,1)--(12,16);\draw(13,1)--(13,16);\draw(14,1)--(14,16);\draw(15,1)--(15,16);\draw(16,1)--(16,16);\draw(1,1)--(16,1);\draw(1,2)--(16,2);\draw(1,3)--(16,3);\draw(1,4)--(16,4);\draw(1,5)--(16,5);\draw(1,6)--(16,6);\draw(1,7)--(16,7);\draw(1,8)--(16,8);\draw(1,9)--(16,9);\draw(1,10)--(16,10);\draw(1,11)--(16,11);\draw(1,12)--(16,12);\draw(1,13)--(16,13);\draw(1,14)--(16,14);\draw(1,15)--(16,15);\draw(1,16)--(16,16);\fill(4,4)circle(3pt);\fill(4,13)circle(3pt);\fill(13,4)circle(3pt);\fill(13,13)circle(3pt);
\fi
\ifnum #1=17
\draw(1,1)--(1,17);\draw(2,1)--(2,17);\draw(3,1)--(3,17);\draw(4,1)--(4,17);\draw(5,1)--(5,17);\draw(6,1)--(6,17);\draw(7,1)--(7,17);\draw(8,1)--(8,17);\draw(9,1)--(9,17);\draw(10,1)--(10,17);\draw(11,1)--(11,17);\draw(12,1)--(12,17);\draw(13,1)--(13,17);\draw(14,1)--(14,17);\draw(15,1)--(15,17);\draw(16,1)--(16,17);\draw(17,1)--(17,17);\draw(1,1)--(17,1);\draw(1,2)--(17,2);\draw(1,3)--(17,3);\draw(1,4)--(17,4);\draw(1,5)--(17,5);\draw(1,6)--(17,6);\draw(1,7)--(17,7);\draw(1,8)--(17,8);\draw(1,9)--(17,9);\draw(1,10)--(17,10);\draw(1,11)--(17,11);\draw(1,12)--(17,12);\draw(1,13)--(17,13);\draw(1,14)--(17,14);\draw(1,15)--(17,15);\draw(1,16)--(17,16);\draw(1,17)--(17,17);\fill(4,4)circle(3pt);\fill(4,14)circle(3pt);\fill(14,4)circle(3pt);\fill(14,14)circle(3pt);
\fi
\ifnum #1=18
\draw(1,1)--(1,18);\draw(2,1)--(2,18);\draw(3,1)--(3,18);\draw(4,1)--(4,18);\draw(5,1)--(5,18);\draw(6,1)--(6,18);\draw(7,1)--(7,18);\draw(8,1)--(8,18);\draw(9,1)--(9,18);\draw(10,1)--(10,18);\draw(11,1)--(11,18);\draw(12,1)--(12,18);\draw(13,1)--(13,18);\draw(14,1)--(14,18);\draw(15,1)--(15,18);\draw(16,1)--(16,18);\draw(17,1)--(17,18);\draw(18,1)--(18,18);\draw(1,1)--(18,1);\draw(1,2)--(18,2);\draw(1,3)--(18,3);\draw(1,4)--(18,4);\draw(1,5)--(18,5);\draw(1,6)--(18,6);\draw(1,7)--(18,7);\draw(1,8)--(18,8);\draw(1,9)--(18,9);\draw(1,10)--(18,10);\draw(1,11)--(18,11);\draw(1,12)--(18,12);\draw(1,13)--(18,13);\draw(1,14)--(18,14);\draw(1,15)--(18,15);\draw(1,16)--(18,16);\draw(1,17)--(18,17);\draw(1,18)--(18,18);\fill(4,4)circle(3pt);\fill(4,15)circle(3pt);\fill(15,4)circle(3pt);\fill(15,15)circle(3pt);
\fi
\ifnum #1=19
\draw(1,1)--(1,19);\draw(2,1)--(2,19);\draw(3,1)--(3,19);\draw(4,1)--(4,19);\draw(5,1)--(5,19);\draw(6,1)--(6,19);\draw(7,1)--(7,19);\draw(8,1)--(8,19);\draw(9,1)--(9,19);\draw(10,1)--(10,19);\draw(11,1)--(11,19);\draw(12,1)--(12,19);\draw(13,1)--(13,19);\draw(14,1)--(14,19);\draw(15,1)--(15,19);\draw(16,1)--(16,19);\draw(17,1)--(17,19);\draw(18,1)--(18,19);\draw(19,1)--(19,19);\draw(1,1)--(19,1);\draw(1,2)--(19,2);\draw(1,3)--(19,3);\draw(1,4)--(19,4);\draw(1,5)--(19,5);\draw(1,6)--(19,6);\draw(1,7)--(19,7);\draw(1,8)--(19,8);\draw(1,9)--(19,9);\draw(1,10)--(19,10);\draw(1,11)--(19,11);\draw(1,12)--(19,12);\draw(1,13)--(19,13);\draw(1,14)--(19,14);\draw(1,15)--(19,15);\draw(1,16)--(19,16);\draw(1,17)--(19,17);\draw(1,18)--(19,18);\draw(1,19)--(19,19);\fill(4,4)circle(3pt);\fill(4,16)circle(3pt);\fill(16,4)circle(3pt);\fill(16,16)circle(3pt);\fill(10,4)circle(3pt);\fill(10,10)circle(3pt);\fill(10,16)circle(3pt);\fill(4,10)circle(3pt);\fill(16,10)circle(3pt);
\fi
}
\newcommand{\siro}[2][]{\filldraw[fill=white,draw=black](#2)circle(13pt)node{\Large{#1}};}
\newcommand{\kuro}[2][]{\fill(#2)circle(13pt)node[white]{\Large{#1}};}
\newcommand{\mozi}[2][]{\node[fill=white]at(#2){\Large{#1}};}