TikZの木構造でパスカルの三角形

TikZの木構造を利用してパスカルの三角形を描く。
木構造を利用すれば，ノードの座標のことを考える必要がなくなるのが嬉しい。
さて，うまくいくのか？

#0段目と1段目

```sample.tex
\documentclass[dvipdfmx]{jsarticle}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
\node {1}
  child { node {1} }
  child { node {1} };
\end{tikzpicture}
\end{document}
```

![20170624-1.png](https://qiita-image-store.s3.amazonaws.com/0/108155/9de5d3bd-68db-56e0-2b15-29bf563c5e9b.png)

#2段目を追加

```sample.tex
\documentclass[dvipdfmx]{jsarticle}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
\node{1}
  child { node {1}
    child { node {1} }
    child { node {2} }
  }
  child { node {1}
    child { node {2} }
    child { node {1} }
  };
\end{tikzpicture}
\end{document}
```

![20170624-1.png](https://qiita-image-store.s3.amazonaws.com/0/108155/0ba8dff8-afc0-5bf6-32b4-327f606a7c03.png)

「2」が重なっていて，というより微妙にずれていて，微妙に濃い。
そこで，一方を空にしてみると，

```sample.tex
\documentclass[dvipdfmx]{jsarticle}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
\node{1}
  child { node {1}
    child { node {1} }
    child { node {2} }
  }
  child { node {1}
    child { node {} }
    child { node {1} }
  };
\end{tikzpicture}
\end{document}
```

![20170624-1.png](https://qiita-image-store.s3.amazonaws.com/0/108155/5686c3f4-ba1b-eec3-dfae-3ea817025386.png)

枝の長さがおかしくなってしまった。

よく考えてみると，`phantom`を適用するのが“正解”か。

```sample.tex
\documentclass[dvipdfmx]{jsarticle}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
\node{1}
  child { node {1}
    child { node {1} }
    child { node {2} }
  }
  child { node {1}
    child { node {\phantom{2}} }
    child { node {1} }
  };
\end{tikzpicture}
\end{document}
```

![20170624-1.png](https://qiita-image-store.s3.amazonaws.com/0/108155/b1330180-8547-87f5-3671-311f197b821a.png)

#こんな調子で3段目追加

`phantom`を適用したノードには子ノードは設けない。（コードが）冗長になるので。

```sample.tex
\documentclass[dvipdfmx]{jsarticle}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
\node{1}
  child { node {1}
    child { node {1}
      child { node {1} }
      child { node {3} }
    }
    child { node {2}
      child { node {\phantom{3}} }
      child { node {3} }
    }
  }
  child { node {1}
    child { node {\phantom{2}} }
    child { node {1}
      child { node {\phantom{3}} }
      child { node {1} }
    }
  };
\end{tikzpicture}
\end{document}
```

![20170624-1.png](https://qiita-image-store.s3.amazonaws.com/0/108155/30b66dbd-3bbe-2604-f47a-41a5ee9fb4e7.png)

#大きさの変更

ノードの間隔を変えることで図の大きさを変えるには，
縦は`level distance`，横は`sibling distance`を指定すればよい。初期設定はどちらも15mmのようだ。

```sample.tex
\documentclass[dvipdfmx]{jsarticle}
\usepackage{tikz}

\newcommand{\mypascal}{%
\node{1}
  child { node {1}
    child { node {1}
      child { node {1} }
      child { node {3} }
    }
    child { node {2}
      child { node {\phantom{3}} }
      child { node {3} }
    }
  }
  child { node {1}
    child { node {\phantom{2}} }
    child { node {1}
      child { node {\phantom{3}} }
      child { node {1} }
    }
  };
}

\begin{document}
\begin{tikzpicture}
\mypascal
\end{tikzpicture}
%
\begin{tikzpicture}[
  level distance=8mm
]
\mypascal
\end{tikzpicture}
%
\begin{tikzpicture}[
  level distance=8mm, sibling distance=10mm
]
\mypascal
\end{tikzpicture}
\end{document}
```

![20170624-1.png](https://qiita-image-store.s3.amazonaws.com/0/108155/f16c006a-c8ff-f03f-a1e7-e4e3fb80aeac.png)

* * *
おしまい