はてなブログでTikZjaxを利用する（オンラインのTikZ）

はてなブログでTikZが利用できる，TikZjaxなるものがあるので紹介します。

実際に動かしているサイトはこちら

https://a-muneniku-sore.hatenablog.com/entry/2023/06/25/021639?_gl=1*1mwda8a*_gcl_au*MTg0OTk4ODUzMC4xNjg3NjA5MTcz&_ga=2.31319868.28688300.1688294590-374794083.1687609173

# 設定

Markdown記法なら，以下をそのまま文末にでも書いておきます。

```html
<link rel="stylesheet" type="text/css" href="https://tikzjax.com/v1/fonts.css">
<script src="https://tikzjax.com/v1/tikzjax.js"></script>
```

# 描き方

`<script>`の中にtikzpicture環境を書きます。

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

<img src="https://texclip.marutank.net/render.php/texclip20230703034721.svg?s=%5Cbegin%7Btikzpicture%7D%0A%20%20%20%20%5Cdraw%20(0%2C0)%20circle%20(3cm)%3B%0A%20%20%5Cend%7Btikzpicture%7D&f=c&r=600&m=s&b=f&k=f">

見たまま編集の場合は，HTMLから編集をする。


```tex
<script type="text/tikz">
  \begin{tikzpicture}
   \draw[thick] (0,0) -- (6,1);
   \coordinate (O) at (0,0);
   \node[below] at (O) {O};
  \end{tikzpicture}
</script>
```

<img src="https://texclip.marutank.net/render.php/texclip20230703034902.svg?s=%5Cbegin%7Btikzpicture%7D%0A%20%20%20%20%5Cdraw%5Bthick%5D%20(0%2C0)%20--%20(6%2C1)%3B%0A%20%20%20%5Ccoordinate%20(O)%20at%20(0%2C0)%3B%0A%20%20%20%5Cnode%5Bbelow%5D%20at%20(O)%20%7BO%7D%3B%0A%5Cend%7Btikzpicture%7D&f=c&r=600&m=s&b=f&k=f">


コンパイルに一瞬時間がかかりますが，このように表示されます。


# 注意

ライブラリは使えないようです。`math`や`calc`などが呼び出せないので，使用にはかなりの制限があります。`+`, `^`などの簡単な計算はできます。`sin`などの関数を使うことはできません。

`plot`も使えません。

`\def`は使えます。

日本語に対応していないので，後述の`\node`に日本語を記述するとコンパイルしません。


# TikZの基本的な使い方

# 線の描画 \draw

## -- to

`\draw`は線をかくことができます。`--`あるいは`to`は直線をかく命令です。

```tex
\begin{tikzpicture}
    \draw (0,0) -- (5,0);
\end{tikzpicture}
```

<img src="https://texclip.marutank.net/render.php/texclip20230703035053.svg?s=%5Cbegin%7Btikzpicture%7D%0A%20%20%20%20%5Cdraw%20(0%2C0)%20--%20(5%2C0)%3B%0A%5Cend%7Btikzpicture%7D&f=c&r=600&m=s&b=f&k=f">


オプションとして，太さ，色，スタイルなどが指定できます。

```tex
 \begin{tikzpicture}
    \draw[thin] (0,1) -- (5,1);
    \draw (0,0) -- (5,0);
    \draw[thick] (0,-1) -- (5,-1);
    \draw[very thick] (0,-2) -- (5,-2);
    \draw[ultra thick] (0,-3) -- (5,-3);
  \end{tikzpicture}
```

<img src="https://texclip.marutank.net/render.php/texclip20230703035147.svg?s=%5Cbegin%7Btikzpicture%7D%0A%20%20%20%20%5Cdraw%5Bthin%5D%20(0%2C1)%20--%20(5%2C1)%20node%5Bright%5D%20%7Bthin%7D%3B%0A%20%20%20%20%5Cdraw%20(0%2C0)%20--%20(5%2C0)%20node%5Bright%5D%20%7Bnormal%7D%3B%0A%20%20%20%20%5Cdraw%5Bthick%5D%20(0%2C-1)%20--%20(5%2C-1)%20node%5Bright%5D%20%7Bthick%7D%3B%0A%20%20%20%20%5Cdraw%5Bvery%20thick%5D%20(0%2C-2)%20--%20(5%2C-2)%20node%5Bright%5D%20%7Bvery%20thick%7D%3B%0A%20%20%20%20%5Cdraw%5Bultra%20thick%5D%20(0%2C-3)%20--%20(5%2C-3)%20node%5Bright%5D%20%7Bultra%20thick%7D%3B%0A%5Cend%7Btikzpicture%7D&f=c&r=600&m=s&b=f&k=f">




```tex
 \begin{tikzpicture}
    \draw[blue] (0,1) -- (5,1);
    \draw[red] (0,0) -- (5,0);
    \draw[green] (0,-1) -- (5,-1);
    \draw[yellow] (0,-2) -- (5,-2);
    \draw[gray] (0,-3) -- (5,-3);
  \end{tikzpicture}
```

<img src="https://texclip.marutank.net/render.php/texclip20230703035347.svg?s=%20%5Cbegin%7Btikzpicture%7D%0A%20%20%20%20%5Cdraw%5Bblue%5D%20(0%2C1)%20--%20(5%2C1)%20node%5Bright%5D%20%7Bblue%7D%3B%0A%20%20%20%20%5Cdraw%5Bred%5D%20(0%2C0)%20--%20(5%2C0)%20node%5Bright%5D%20%7Bred%7D%3B%0A%20%20%20%20%5Cdraw%5Bgreen%5D%20(0%2C-1)%20--%20(5%2C-1)%20node%5Bright%5D%20%7Bgreen%7D%3B%0A%20%20%20%20%5Cdraw%5Byellow%5D%20(0%2C-2)%20--%20(5%2C-2)%20node%5Bright%5D%20%7Byellow%7D%3B%0A%20%20%20%20%5Cdraw%5Bgray%5D%20(0%2C-3)%20--%20(5%2C-3)%20node%5Bright%5D%20%7Bgray%7D%3B%0A%20%5Cend%7Btikzpicture%7D&f=c&r=600&m=s&b=f&k=f">






```tex
 \begin{tikzpicture}
    \draw (0,1) -- (5,1);
    \draw[dashed] (0,0) -- (5,0);
    \draw[dotted] (0,-1) -- (5,-1);
  \end{tikzpicture}
```

<img src="https://texclip.marutank.net/render.php/texclip20230703035456.svg?s=%5Cbegin%7Btikzpicture%7D%0A%20%20%20%20%5Cdraw%20(0%2C1)%20--%20(5%2C1)%20node%5Bright%5D%20%7Bnormal%7D%3B%0A%20%20%20%20%5Cdraw%5Bdashed%5D%20(0%2C0)%20--%20(5%2C0)%20node%5Bright%5D%20%7Bdashed%7D%3B%0A%20%20%20%20%5Cdraw%5Bdotted%5D%20(0%2C-1)%20--%20(5%2C-1)%20node%5Bright%5D%20%7Bdotted%7D%3B%0A%5Cend%7Btikzpicture%7D&f=c&r=600&m=s&b=f&k=f">





## circle

中心の座標を指定して，円をかくことができます。

```tex
<script type="text/tikz">
 \begin{tikzpicture}
    \draw (2,1) circle (2cm);
  \end{tikzpicture}
</script>
```

<img src="https://texclip.marutank.net/render.php/texclip20230703035552.svg?s=%5Cbegin%7Btikzpicture%7D%0A%20%20%20%20%5Cdraw%20(2%2C1)%20circle%20(2cm)%3B%0A%5Cend%7Btikzpicture%7D&f=c&r=600&m=s&b=f&k=f">

`\draw`についてより詳しく

https://a-muneniku-sore.hatenablog.com/entry/2023/06/30/025739



# 塗りつぶしfill

`draw`と同じ要領で，fillを使うと塗りつぶしができます。

```tex
<script type="text/tikz">
 \begin{tikzpicture}
    \fill (2,1) circle (2cm);
  \end{tikzpicture}
</script>
```

<img src="https://texclip.marutank.net/render.php/texclip20230703035645.svg?s=%5Cbegin%7Btikzpicture%7D%0A%20%20%20%20%5Cfill%20(2%2C1)%20circle%20(2cm)%3B%0A%5Cend%7Btikzpicture%7D&f=c&r=600&m=s&b=f&k=f">



デフォルトでは塗りつぶしの色は黒です。

fillのオプションで，色，透明度などを指定することができます。

```tex
<script type="text/tikz">
 \begin{tikzpicture}
    \fill[red] (2,1) circle (2cm);
    \fill[blue] (5,1) circle (2cm);
  \end{tikzpicture}
</script>
```

<img src="https://texclip.marutank.net/render.php/texclip20230703035813.svg?s=%5Cbegin%7Btikzpicture%7D%0A%20%20%20%20%5Cfill%5Bred%5D%20(2%2C1)%20circle%20(2cm)%3B%0A%20%20%20%20%5Cfill%5Bblue%5D%20(5%2C1)%20circle%20(2cm)%3B%0A%5Cend%7Btikzpicture%7D&f=c&r=600&m=s&b=f&k=f">








# 点にテキストを入れる node

`\node at (座標) {};`

`\path (座標) node {};`の代替命令

```tex
\begin{tikzpicture}

\node[below] at (0,0) {O};

\end{tikzpicture}
```
<img src="https://texclip.marutank.net/render.php/texclip20230703035904.svg?s=%5Cbegin%7Btikzpicture%7D%0A%0A%5Cfill%20(0%2C0)%20circle%20(2pt)%3B%0A%5Cnode%5Bbelow%5D%20at%20(0%2C0)%20%7BO%7D%3B%0A%0A%5Cend%7Btikzpicture%7D&f=c&r=600&m=s&b=f&k=f">




オプション

位置：above below left right

フォントサイズ：`font=\scriptsize` (フォントサイズTeXコマンド?)

塗りつぶし：'fill=white' (矩形の背景色)

形の指定がなければ，矩形で塗られる。

nodeに対する余白　'inner sep=0pt'

```tex
\begin{tikzpicture}
\def\d{2}
\fill (-\d,0) circle (2pt);
\node at (-\d,0) {nothing};

\fill (0,0) circle (2pt);
\node[above] at (0,0) {above};

\fill (\d,0) circle (2pt);
\node[below] at (\d,0) {below};

\fill (2*\d,0) circle (2pt);
\node[left] at (2*\d,0) {left};

\fill (3*\d,0) circle (2pt);
\node[right] at (3*\d,0) {right};

\fill (4*\d,0) circle (2pt);
\node[above right] at (4*\d,0) {above right};
\end{tikzpicture}
```

<img src="https://texclip.marutank.net/render.php/texclip20230703040033.svg?s=%5Cbegin%7Btikzpicture%7D%0A%5Cdef%5Cd%7B2%7D%0A%5Cfill%20(-%5Cd%2C0)%20circle%20(2pt)%3B%0A%5Cnode%20at%20(-%5Cd%2C0)%20%7Bnothing%7D%3B%0A%0A%5Cfill%20(0%2C0)%20circle%20(2pt)%3B%0A%5Cnode%5Babove%5D%20at%20(0%2C0)%20%7Babove%7D%3B%0A%0A%5Cfill%20(%5Cd%2C0)%20circle%20(2pt)%3B%0A%5Cnode%5Bbelow%5D%20at%20(%5Cd%2C0)%20%7Bbelow%7D%3B%0A%0A%5Cfill%20(2*%5Cd%2C0)%20circle%20(2pt)%3B%0A%5Cnode%5Bleft%5D%20at%20(2*%5Cd%2C0)%20%7Bleft%7D%3B%0A%0A%5Cfill%20(3*%5Cd%2C0)%20circle%20(2pt)%3B%0A%5Cnode%5Bright%5D%20at%20(3*%5Cd%2C0)%20%7Bright%7D%3B%0A%0A%5Cfill%20(4*%5Cd%2C0)%20circle%20(2pt)%3B%0A%5Cnode%5Babove%20right%5D%20at%20(4*%5Cd%2C0)%20%7Babove%20right%7D%3B%0A%5Cend%7Btikzpicture%7D&f=c&r=600&m=s&b=f&k=f">



`shpae`を指定して fill を入れると次のようになります。

```tex
\begin{tikzpicture}
\def\d{2}
\fill (-\d,0) circle (2pt);
\node[above] at (-\d,0) {nothing};
\node[fill=blue,below] at (-\d,0) {fill=blue};

\fill (0,0) circle (2pt);
\node[above] at (0,0) {circle};
\node[fill=blue,below,shape=circle] at (0,0) {fill=blue};


\fill (\d,0) circle (2pt);
\node[above] at (\d,0) {cooridnate};
\node[fill=blue,below,shape=coordinate] at (-\d,0) {fill=blue};
\end{tikzpicture}
```

<img src="https://texclip.marutank.net/render.php/texclip20230703040307.svg?s=%5Cbegin%7Btikzpicture%7D%0A%5Cdef%5Cd%7B2%7D%0A%5Cfill%20(-%5Cd%2C0)%20circle%20(2pt)%3B%0A%5Cnode%5Babove%5D%20at%20(-%5Cd%2C0)%20%7Bnothing%7D%3B%0A%5Cnode%5Bfill%3Dblue%2Cbelow%5D%20at%20(-%5Cd%2C0)%20%7Bfill%3Dblue%7D%3B%0A%0A%5Cfill%20(0%2C0)%20circle%20(2pt)%3B%0A%5Cnode%5Babove%5D%20at%20(0%2C0)%20%7Bcircle%7D%3B%0A%5Cnode%5Bfill%3Dblue%2Cbelow%2Cshape%3Dcircle%5D%20at%20(0%2C0)%20%7Bfill%3Dblue%7D%3B%0A%0A%0A%5Cfill%20(%5Cd%2C0)%20circle%20(2pt)%3B%0A%5Cnode%5Babove%5D%20at%20(%5Cd%2C0)%20%7Bcooridnate%7D%3B%0A%5Cnode%5Bfill%3Dblue%2Cbelow%2Cshape%3Dcoordinate%5D%20at%20(-%5Cd%2C0)%20%7Bfill%3Dblue%7D%3B%0A%5Cend%7Btikzpicture%7D&f=c&r=600&m=s&b=f&k=f">

回転

```tex
\begin{tikzpicture}
\def\d{2}

\fill (0,0) circle (2pt);
\node[above,rotate=30] at (0,0) {rotate=30};

\end{tikzpicture}
```

![](https://texclip.marutank.net/render.php/texclip20230707060844.svg?s=%5Cbegin%7Btikzpicture%7D%0A%5Cdef%5Cd%7B2%7D%0A%0A%5Cfill%20(0%2C0)%20circle%20(2pt)%3B%0A%5Cnode%5Babove%2Crotate%3D30%5D%20at%20(0%2C0)%20%7Brotate%3D30%7D%3B%0A%0A%5Cend%7Btikzpicture%7D%0A&f=c&r=300&m=s&b=f&k=f)



`node`について詳しく

https://a-muneniku-sore.hatenablog.com/entry/2023/07/05/234324?_gl=1*lcr60y*_gcl_au*MTg0OTk4ODUzMC4xNjg3NjA5MTcz&_ga=2.170968160.1725495997.1688566973-374794083.1687609173

# 点に名前を付ける coordinate

点に単に名前を付けたい場合に次のようにします。

```tex
\coordinate (名前) at (座標);
```

`\node (名前) at (座標) {};`を簡略化した命令です。

例えば，

```tex
 \begin{tikzpicture}
    \coordinate (A) at (0,0);
    \coordinate (B) at (2,3);
    \draw (A) -- (B);
    \node[left] at (A) {A};
    \node[right] at (B) {B};
  \end{tikzpicture}
```

<img src="https://texclip.marutank.net/render.php/texclip20230703040602.svg?s=%5Cbegin%7Btikzpicture%7D%0A%20%20%20%20%5Ccoordinate%20(A)%20at%20(0%2C0)%3B%0A%20%20%20%20%5Ccoordinate%20(B)%20at%20(2%2C3)%3B%0A%20%20%20%20%5Cdraw%20(A)%20--%20(B)%3B%0A%20%20%20%20%5Cnode%5Bleft%5D%20at%20(A)%20%7BA%7D%3B%0A%20%20%20%20%5Cnode%5Bright%5D%20at%20(B)%20%7BB%7D%3B%0A%5Cend%7Btikzpicture%7D&f=c&r=600&m=s&b=f&k=f">


一度点の名前を定義すると，以降で使用することができます。

tikzの座標は，座標と同時にベクトルとして取り扱うことができます。（calcライブラリー）



# 3dでかく

単純に3つの座標で表すと，自動で3次元として扱ってくれます。デフォルトの向きは以下の通りです。

```tex
\begin{tikzpicture}
\draw[-latex] (0,0,0) -- (5,0,0) node[pos=1.1] {$x$};
\draw[-latex] (0,0,0) -- (0,5,0) node[pos=1.1] {$y$};
\draw[-latex] (0,0,0) -- (0,0,5) node[pos=1.1] {$z$};
\end{tikzpicture}
```

<div align=center>
<img src="https://texclip.marutank.net/render.php/texclip20230711034138.svg?s=%5Cbegin%7Btikzpicture%7D%0A%5Cdraw%5B-latex%5D%20(0%2C0%2C0)%20--%20(5%2C0%2C0)%20node%5Bpos%3D1.1%5D%20%7B%24x%24%7D%3B%0A%5Cdraw%5B-latex%5D%20(0%2C0%2C0)%20--%20(0%2C5%2C0)%20node%5Bpos%3D1.1%5D%20%7B%24y%24%7D%3B%0A%5Cdraw%5B-latex%5D%20(0%2C0%2C0)%20--%20(0%2C0%2C5)%20node%5Bpos%3D1.1%5D%20%7B%24z%24%7D%3B%0A%5Cend%7Btikzpicture%7D&f=c&r=300&m=s&b=f&k=f">
</div>