つれづれなる備忘録

日々の発見をあるがままに綴る

Texによる文書作成29 ~TikZ, 矢印スタイル設定

今回はTikZで描画する矢印のカスタマイズについて紹介したい。

atatat.hatenablog.com

まずカスタマイズのために以下のライブラリをプリアンブルでロードしておく。直線矢印だけの場合は\usetikzlibrary {arrows.meta}のみでよい。

\usetikzlibrary {arrows.meta}
\usetikzlibrary {bending}

通常の矢印は以下のようになる。

\tikz \draw[->] (0,0)--(1,0);

"矢印0"
矢印0

次に矢印の矢じりの形状を指定するStealthを付加する。たとえば>-Stealthは矢印の前後に矢じりを設定する。Stealthはオプションを指定することができ{Stealth[red]}とすると矢じりを赤にすることができる。

\begin{tikzpicture}
\draw[>-Stealth] (0,0) -- (1,0);
\end{tikzpicture}

\begin{tikzpicture}
\draw[-{Stealth[red]}] (0,0) -- (2,0);
\end{tikzpicture}

"矢印1"
矢印1

以下はStelth[length=5mm]として矢じりの長さを指定している。またLatexStealthとは異なる形状を与える。

\tikz{
\draw [-{Stealth[length=5mm]}] (0,0) -- (1.5,0);
}
\tikz{
\draw [-{Latex[length=5mm]}] (0,0) -- (1.5,0);
}

"矢印2"
矢印2

Classical TikZ RightarrowStealthLatexと同様に矢じり形状を与える。double distance=3pt,arrows =とすることで2重線矢印のすることができる。 またStealth[length=10mm, open]のようにopenを指定すると矢印の塗りつぶしが白抜きになる。

\tikz{
\draw [-{Classical TikZ Rightarrow[length=5mm]}] (0,0) -- (1,0);
}
\tikz{ \draw [line width=1pt, double distance=3pt,
arrows = {-Latex[length=0pt 3 0]}] (0,0) -- (1,0);}
\tikz{
\draw [line width=1mm, -{Stealth[length=10mm, open]}](0,0) -- (1.5,0);
}

"矢印3"
矢印3

以下はangleを指定すると矢じりの開き角度、scaleは矢じりの大きさを指定する。

\tikz \draw [arrows = {-Stealth[inset=0pt, angle=90:10pt]}] (0,0) -- (1,0);
\tikz {
\draw [arrows = {-Stealth[]}] (0,1) -- (1,1);
\draw [arrows = {-Stealth[scale=1.5]}] (0,0.5) -- (1,0.5);
\draw [arrows = {-Stealth[scale=2]}] (0,0) -- (1,0);
}

"矢印4"
矢印4

Hooksは矢じりをフック形状にし、さらにオプションarcはフックの曲がりを指定する。

\tikz [ultra thick] {
\draw [arrows = {-Hooks[]}] (0,1) -- (1,1);
\draw [arrows = {-Hooks[arc=90]}] (0,0.5) -- (1,0.5);
\draw [arrows = {-Hooks[arc=270]}] (0,0) -- (1,0);
}

"矢印5"
矢印5

slantは矢じりの傾きを指定することができる。

\tikz {
\draw [arrows = {->[]}] (0,1) -- (1,1);
\draw [arrows = {->[slant=.5]}] (0,0.5) -- (1,0.5);
\draw [arrows = {->[slant=1]}] (0,0) -- (1,0);
}

"矢印6"
矢印6

fillオプションは塗りつぶすことができる。

\tikz [ultra thick] \draw [draw=red, fill=red!50, arrows = {-Stealth[length=10pt]}]
(0,0) -- (1,1) -- (2,0);

"矢印7"
矢印7

Computer Modern Rightarrowline joinを指定すると接合部の形状が変わる。

\tikz [line width=2mm]
\draw [arrows = {-Computer Modern Rightarrow[line join=miter]}]
(0,0) -- (1,0);
\tikz [line width=2mm]
\draw [arrows = {-Computer Modern Rightarrow[line join=round]}]
(0,0) -- (1,0);
\tikz [line width=2mm]
\draw [arrows = {-Computer Modern Rightarrow[sharp]}] (0,0) -- (1,0);

"矢印8"
矢印8

fillline widthの指定により矢印を白抜きにすることもできる。

\tikz \draw [arrows = {-Latex[line width=0.1pt, fill=white, length=10pt]}] (0,0) -- (1,0);
\tikz \draw [arrows = {-Latex[line width=1pt, fill=white, length=10pt]}] (0,0) -- (1,0);

"矢印9"
矢印9

プリアンブルのbendingライブラリを用いて、カーブをもつ矢印を指定できる。

\begin{tikzpicture}
\draw [red,line width=1mm,-{Stealth[length=20pt,bend]}]
(-1,-.5) .. controls (0,-.5) and (0,0) .. (1,0);
\end{tikzpicture}

"矢印10"
矢印10

最後にStealthで矢じりの形状reversedharpoon、矢印の色を以下のように指定できる。

\tikz [ultra thick] \draw [arrows = {-Stealth[reversed]}] (0,0) -- (1,0);
\tikz [ultra thick] \draw [arrows = {-Stealth[harpoon]}] (0,0) -- (1,0);

\tikz [ultra thick] \draw [red, arrows = {-Stealth}] (0,0) -- (1,0);
\tikz [ultra thick] \draw [red, arrows = {-Stealth[color=blue]}] (0,0) -- (1,0);

"矢印11"
矢印11