TikZ学習帳

筆者がマジでTikZのお勉強をするブログです。

扇型を描く

<script type="text/tikz">
\begin{tikzpicture}
\draw [-stealth](-2,0)--(2,0);
\draw [-stealth](0,-2)--(0,2);
\filldraw [fill=blue, opacity=.5, draw=red](0,0)--(1,0)--(1,0)arc(0:120:1)--cycle;
\end{tikzpicture}
</script>

図を傾ける or 回転させる

中心が原点の場合

原点を中心に普通の楕円を描いた。

<script type="text/tikz">
\begin{tikzpicture}
\draw [-stealth](-2,0)--(2,0);
\draw [-stealth](0,-2)--(0,2);
\draw (0,0) circle [x radius=2, y radius=1];
\end{tikzpicture}
</script>

これを回転させたい。

<script type="text/tikz">
\begin{tikzpicture}
\draw [-stealth](-2,0)--(2,0);
\draw [-stealth](0,-2)--(0,2);
\draw (0,0) circle [x radius=2, y radius=1, rotate=30];
\end{tikzpicture}
</script>

オプションにrotate=30を入れると、反時計回りに30°回転できる。

中心が原点でない場合

普通の正方形を描いた。

<script type="text/tikz">
\begin{tikzpicture}
\draw [-stealth](-2,0)--(2,0);
\draw [-stealth](0,-2)--(0,2);
\draw (1,1) rectangle (2,2);
\end{tikzpicture}
</script>

同じように回転させてみると…

<script type="text/tikz">
\begin{tikzpicture}
\draw [-stealth](-2,0)--(2,0);
\draw [-stealth](0,-2)--(0,2);
\draw [rotate=45] (1,1) rectangle (2,2);
\end{tikzpicture}
</script>

どんな時でも回転中心が(0,0)になってしまうようだ。(0,0)ではなく、重心を中心として回したい。どうすれば良いか?

<script type="text/tikz">
\begin{tikzpicture}
\draw [-stealth](-2,0)--(2,0);
\draw [-stealth](0,-2)--(0,2);
\draw [rotate around={45:(1.5,1.5)}] (1,1) rectangle (2,2);
\end{tikzpicture}
</script>

目的の図ができた。[rotate around={45:{1.5,1.5}}]で、座標(1.5,1.5)を中心に45°回転させるという意味になる。

図に文字を書き込む TeXを使う

そのまま書く

\begin{tikzpicture}[x=3cm,y=3cm]
\draw (0,0)--(1,1);
\node (end) at (1,1) [above] {a};
\end{tikzpicture}
</script>

なにも設定しないとローマン体で出力される。

TeXモードにする

$で囲むとTeXモードになる。これでイタリック体になった。

上付け文字と下付け文字

<script type="text/tikz">
\begin{tikzpicture}[x=3cm,y=3cm]
\draw (0,0)--(1,1);
\node (end) at (1,1) [above] {$a^2$};
\end{tikzpicture}
</script>
\begin{tikzpicture}[x=3cm,y=3cm]
\draw (0,0)--(1,1);
\node (end) at (1,1) [above] {$a_{11}$};
\end{tikzpicture}
</script>

上付き、下付き、中括弧が使用できる。Mathjaxと違ってMarkdown記法のコマンドとも干渉しない。HTMLタグで囲っているからかもしれない。

関数

<script type="text/tikz">
\begin{tikzpicture}[x=3cm,y=3cm]
\draw (0,0)--(1,1);
\node (end) at (1,1) [above] {$\sin x$};
\end{tikzpicture}
</script>

関数も問題なさそう。

分数

<script type="text/tikz">
\begin{tikzpicture}[x=3cm,y=3cm]
\draw (0,0)--(1,1);
\node (end) at (1,1) [above] {$\frac{ a }{ 2 }$};
\end{tikzpicture}
</script>

分数も書ける。

<script type="text/tikz">
\begin{tikzpicture}[x=3cm,y=3cm]
\draw (0,0)--(1,1);
\node (end) at (1,1) [above] {$\displaystyle \frac{ a }{ 2 }$};
\end{tikzpicture}
</script>

\displaystyleも大丈夫。

図に文字を書き込む

オプション無し

<script type="text/tikz">
\begin{tikzpicture}[x=3cm,y=3cm]
\draw (0,0)--(1,1);
\node (end) at (1,1) {a};
\end{tikzpicture}
</script>

図に文字を書き込むにはソースコード4行目の\nodeコマンドを用いる。endは後で座標を呼び出すときに使える名前で、aが書き込む文字である。

オプションをつけないと、指定した点の真上に表示される。この図だと線分の端に重なってしまった。

位置オプション

<script type="text/tikz">
\begin{tikzpicture}[x=3cm,y=3cm]
\draw (0,0)--(1,1);
\node (end) at (1,1) [above] {a};
\end{tikzpicture}
</script>

オプション[above]で文字の位置を上にずらして見やすくなった。他に[below]、[left]、[right]のオプションがある。

位置オプションの組み合わせ

<script type="text/tikz">
\begin{tikzpicture}[x=3cm,y=3cm]
\draw (0,0)--(1,1);
\node (end) at (1,1) [above right] {a};
\end{tikzpicture}
</script>

上下と左右を組み合わせることができる。 [above right]で指定した点の右上に書き込まれた。

カッコは区切らず、オプションの間にコンマも入れない。

数式テスト

Mathjaxインラインモード

 [tex: ]と冒頭に一度書いておいて、はてなブログの数式モードを呼び出せば、そのページではフル機能のMathjaxを使用できる。

普通に書いてみる

ほげ(ax_12 + (bx_1 + c) > 0) ほげ

ほげ\(ax_1^2 + (bx_1 + c) > 0\) ほげ

Mathjax記法のリファレンス通り書いても数式にならない。

^と_の前に\をつけてみる

ほげ(ax_1^2 + (bx_1 + c) > 0) ほげ

ほげ\(ax\_1\^2 + (bx\_1 + c) > 0\) ほげ

Markdown記法との被りを対策したがまだダメ。最初と最後の\がうまく動作していない。

さらに\を\でエスケープしてみる

ほげ\(ax_1^2 + (bx_1 + c) > 0\) ほげ

ほげ\\(ax\_1\^2 + (bx\_1 + c) > 0\\) ほげ

やっと表示された。また()や>は\でエスケープしなくてもちゃんと数式になっている。

Mathjax独立モード

ほげ\[ax_1^2 + (bx_1 + c) > 0\]ほげ

ほげ\\[ax\_1\^2 + (bx\_1 + c) > 0\\]ほげ

同じ要領で書ける。ちゃんと独立したブロックに書かれている。

ほげ$$ax_1^2 + (bx_1 + c) > 0$$ほげ

ほげ$$ax\_1\^2 + (bx\_1 + c) > 0$$ほげ

\\[ \\]の代わりに$$を用いても同じ。

\[ \frac{\pi}{2} = \left( \int_{0}^{\infty} \frac{\sin x}{\sqrt{x}} dx \right)^2 = \sum_{k=0}^{\infty} \frac{(2k)!}{2^{2k}(k!)^2} \frac{1}{2k+1} = \prod_{k=1}^{\infty} \frac{4k^2}{4k^2 - 1} \]

CSSと組み合わせて、横に長い式だけ左右にスクロールが出来る。

文字入力のテスト

<script type="text/tikz">
\begin{tikzpicture}
\draw[-stealth]( 0,-3.5) -- (0,3.5);
\draw[-stealth](-3.5,0) -- (3.5,0);
\draw(-0.3,-0.1) node[below]{0};
\foreach \x in {-3,-2,-1,1,2,3}
   \draw (\x,-0.1)node[below]{\x} -- (\x, 0.1);
\foreach \y in {-3,-2,-1,1,2,3}
   \draw (-0.1,\y)node[left]{\y} -- (0.1,\y);
\end{tikzpicture}
</script>

線の基本色

xcolor 19色

x軸とy軸を作る

中心が原点

<script type="text/tikz">
\begin{tikzpicture}[x=3cm,y=3cm]
\node (O) at (0,0) [below left] {O};
\draw [thick, -stealth](-1.5,0)--(1.5,0) node [anchor=north]{$x$};
\draw [thick, -stealth](0,-1.2)--(0,1.2) node [anchor=east]{$y$};
\end{tikzpicture}
</script>

-stealthは「ステルス機型矢印を終点に描く」という意味。何か隠しているわけではない。

端っこが原点

<script type="text/tikz">
\begin{tikzpicture}[x=3cm,y=3cm]
\node (O) at (0,0) [below left] {O};
\draw [thick, -stealth](-0.2,0)--(2,0) node [anchor=north]{$x$};
\draw [thick, -stealth](0,-0.2)--(0,2) node [anchor=east]{$y$};
\end{tikzpicture}
</script>

インライン形式と独立形式

TikZには2種類の描画方法がある。簡単な図を描くインライン形式と、複雑な図も描ける独立形式である。

同じ図を描いてそれぞれの見え方を比べる。

インライン形式

ああああいいいい

ああああ<script type="text/tikz">
\tikz
\draw (0,0) circle (2);
</script>いいいい

独立形式

ああああいいいい

ああああ<script type="text/tikz">
\begin{tikzpicture}
\draw (0,0) circle (2);
\end{tikzpicture}
</script>いいいい

どっちでも別に表示は変わらないようだ。独立形式も改行を入れなければ普通にインライン表示される。これはMathjaxと違うところだ。

線の種類

普通の円

<script type="text/tikz">
\begin{tikzpicture}
\draw (0,0) circle (3);
\end{tikzpicture}
</script>

点線の円

<script type="text/tikz">
\begin{tikzpicture}
\draw[dashed] (0,0) circle (3);
\end{tikzpicture}
</script>

赤線の円

<script type="text/tikz">
\begin{tikzpicture}
\draw[red] (0,0) circle (3);
\end{tikzpicture}
</script>

太線の円

<script type="text/tikz">
\begin{tikzpicture}
\draw[ultra thick] (0,0) circle (3);
\end{tikzpicture}
</script>

赤くて太い点線の円

<script type="text/tikz">
\begin{tikzpicture}
\draw[red,dashed, ultra thick] (0,0) circle (3);
\end{tikzpicture}
</script>