2015年7月9日

tikz-cd

以前tikz-cdを紹介したけど,ふとマニュアルを眺めていたら\arrowの書式が変わっていることに気がついたので,もう一度新しい方法で使い方を書いておく.ほぼ以前のままです.古い方法もまだ使えるのであまり気にしなくてもよいと思うけど.古いのに慣れている人は,\arrow[opt1]{arg1}[opt2]{arg2}\arrow[arg1,opt1,"arg2" opt2]と書き換えれば動くはず.(書き換えなくても動く.)

はじめに

tikz-cdは次のような図式を書くためのパッケージです.

よく使われるのがXy-pic\xymatrixですが,それと非常に似た書式で記述が可能です.TikZのライブラリの一つです.

使い方

W32TeX,TeX Liveのどちらにも入っているので,ある程度新しい環境ならば既にインストールされていると思います.プリアンブルは次のようにします.

\documentclass[dvipdfmx]{jsarticle}
\usepackage{tikz}
\usetikzlibrary{cd}

[dvipdfmx]はドライバ指定です.(Tikzとdvipdfmxについてはこちらも参照.)platex + dvipdfmx以外を使う場合は,それに応じて正しく指定してください.tikz-cd.styというのが用意されていたりもするので,次でもできます(古くからの方法).

\documentclass[dvipdfmx]{jsarticle}
\usepackage{tikz-cd}

とりあえず

tikzcd環境で使います.さきほどのソースは次の通り.

\begin{tikzcd}
A \arrow[r,"f"]\arrow[rd] & B \arrow[d,"g"]\\
& C
\end{tikzcd}

tabularのような表組みで並べ,\arrowで矢印を引きます.\arrowの書式は

\arrow[<option>]
で,optionで矢印に関する様々な指定を行います.ほぼ必須となるのが矢印の方向です.
\arrow[r]
で,右方向への矢印を引きます.\arrow[l]で左,\arrow[u]で上,\arrow[d]で下です.右下は\arrow[rd],右右下は\arrow[rrd]等々…….他にも色々なオプションを指定できます(下で説明).ここのオプションはTikzの\pathに回されるらしいので,\pathで使えるオプションが自由に使えます.Tikzに既に詳しい変人むけ注意でした.

矢印にラベル(上のfやgなど)を加えたいならば,""で囲んでoptionに指定します.上の

\arrow[r,"f"]
でfがラベルとしてついています.このように,複数のオプションを指定する場合はカンマで区切ります.ラベルにオプションを与えるには,直後に連ねます.例えば
\arrow[r,"f" red]
でfが赤くなります.いくつかオプションを例とともに紹介します.

\begin{tikzcd}
A \arrow[r,"f"] & B \arrow[r,"g"'] & C
\end{tikzcd}

ラベルの直後に'を入れると,ラベルのつく場所がひっくり返ります.

\begin{tikzcd}
A \arrow[r,hookrightarrow] & B
\end{tikzcd}

LaTeXでの\hookrightarrowに対応.普段の矢印出力命令はそのままオプションとして指定できることがあります.

\begin{tikzcd}
A  & \arrow[l,hookrightarrow] B \arrow[r,hookleftarrow] & C & D\arrow[l,hook']
\end{tikzcd}

hookrightarrowを左向きにやると上みたいに微妙になります.「hookleftarrowを逆向きに引く」ことでいい感じの出力になりますが,逆方向に引くのが直感的でないので,最後の指定がよいでしょう.なお,\arrow[r,hookrightarrow]\arrow[r,hook]とも書くことができます.これに'をつけて「ひっくり返した」のが上の指定.といっても何でも'をつけたらひっくり返ると言うわけじゃなくて,上はhook'で一つのオプションです.\arrow[l,hookrightarrow']と指定できるわけじゃない.

\begin{tikzcd}
A \arrow[r,dash] & B \arrow[r,equal] & C \arrow[r,dotted] & D \arrow[r,dashed] & E
\end{tikzcd}

矢印(じゃないのもあるけど)を色々と.

\begin{tikzcd}
A \arrow[r,"f" description] & B
\end{tikzcd}

間に挟むときはこれ.

\begin{tikzcd}
A \arrow[d,shift left=1.5ex] \arrow[r,shift right=1.5ex] & B\\
C \arrow[u,shift left=1.5ex] & D \arrow[lu,shift left=1.5ex]
\end{tikzcd}

矢印をずらしたいとき.A --> Cの矢印はleftといいながら右にずれていますが,まぁそういうものです.

\begin{tikzcd}
A \arrow[r,yshift=0.7ex] & B \arrow[l,yshift=-0.7ex]\\
C \arrow[u,xshift=1.5ex]
\end{tikzcd}

これでもずらせる.これは縦横独立.

\begin{tikzcd}
A \arrow[r,bend right] & B \arrow[l,bend right]
\end{tikzcd}

少し迂回する矢印.bend right=90とかすると矢印が出入りする位置を調整できる.

\begin{tikzcd}
A \arrow[r,phantom,"\ni"] & a
\end{tikzcd}

phantomを指定すると矢印が消えて,代わりに真ん中にラベルが現れる.

\begin{tikzcd}
A\arrow[r,very near start,"f"] & B \arrow[r,pos=0.8,"g"] & C 
\end{tikzcd}

ラベルの場所を変更する.very near startはそのまま「スタート地点のすぐ近く」.他にはat start, very near start, near start, midway, near end, very near end, at endが使えます.pos=は数値で指定する方法.0から1までの値を指定する.

\begin{tikzcd}[row sep=0.1cm,column sep=5cm]
A\arrow[r]\arrow[d] & B\arrow[d]\\
C\arrow[r] & D
\end{tikzcd}

間を広げるならばrow sepcolumn sepをオプションで与える.具体的な数字以外にも,tiny, small, scriptsize, normal, large, hugeを与えることもできる.

\begin{tikzcd}
A\arrow[r]\arrow[d] &[2cm] B\arrow[d]\arrow[r] & C\arrow[d]\\
D\arrow[r]\arrow[d] & E\arrow[r]\arrow[d] & F\arrow[d]\\[-.5cm]
D\arrow[r] & E\arrow[r] & F\\
\end{tikzcd}

前のは全体に広げちゃうけど,これは個々に指定できる.相対的な値を指定する.[-.5cm]は他より0.5cm短くするということ.

マニュアル

コマンドプロンプトから

texdoc tikz-cd
でマニュアルが開けます.物足りない場合は見てください.

0 件のコメント:

コメントを投稿

コメントの追加にはサードパーティーCookieの許可が必要です