2019年1月21日

tikz-cdで(というかもう殆どTikZで)蛇の補題を描く.

結論

Wikipediaにある図を描いてみました.(tikz-cdのマニュアルを参考にしています.)

%\usepackage{amsmath}
%\DeclareMathOperator{\Ker}{Ker}
%\DeclareMathOperator{\Coker}{Coker}
\begin{tikzcd}
& \Ker a \arrow[r]\arrow[d]
& \Ker b \arrow[r]\arrow[d]
& \Ker c \arrow[d]\\
& A \arrow[r,"f"]\arrow[d,"a" near start]
& B \arrow[r,"g"]\arrow[d,"b" near start]
% BからB'にダミーの矢印を引き,その中点の名前をZとする.
\arrow[d, phantom, ""{coordinate, name=Z}]
& C \arrow[r]\arrow[d,"c" near start]
% 二つの0にX,Yという名前を与えておく
& |[alias=X]|0 \\[2ex] % ここの縦方向の空きを少し広げておく
|[alias=Y]|0\arrow[r]
& A' \arrow[r,"f'"]\arrow[d]
& B' \arrow[r,"g'"]\arrow[d]
& C'\arrow[d]\\
& \Coker a\arrow[r]
\arrow[from=uuurr,crossing over,"d" at end,
rounded corners,% 角を丸める
% to pathを使って頑張って描く
to path={(\tikztostart) -| ([xshift=1em]X.east)\tikztonodes |- (Z) -| ([xshift=-1em]Y.west) |- (\tikztotarget)}]
& \Coker b\arrow[r] & \Coker c
\end{tikzcd}

to path

通常tikzcdの\arrowはまっすぐな矢印しか描けませんが,to pathキーを使うとかなり柔軟に線を引くことができます.to pathキーの値は,TikZによる描画の書式そのものが入ります.TikZのマニュアルやTeX WIkiも参考にしてください.

基本的な書式は<始点> -- <中間点1> -- <中間点1> -- …… -- <終点>です.これで<始点>から始まり<中間点1><中間点2>,……を通り<終点>へとたどり着く矢印が引かれます.点と点の間を--で引くとまっすぐな線が引かれますが,代わりに|--|を使うと縦と横との線のみを使って引こうとします.--の代わりにtoと書くこともできます.これも--と同様まっすぐな矢印を出力しますが,to [out=135,in=45]のように始点と終点の場所を角度で指定することもできます.(ちょっと曲がった矢印が出ます.)

始点は\tikztostart,終点は\tikztotargetで参照できます.中間点は上の例のように適当に名前をつけて使うとよいでしょう.名前の後に.eastをつけるとその点の右側を表します..west.north.south等など.coordinateはラベルのサイズを0にするオプションで,長い矢印は実際には「X.eastからZの右」と「Zの左からY.west」と分割されているので,coordinateがないとZの幅の分だけ空きができてしまいます.また,++<座標>とすると前の点からの相対位置を表すことができます.例えばto path={(\tikztostart) -- ++(1cm,1cm)}とすると,始点から右に1cm,上に1cm行った先の点まで矢印が引かれます.

矢印に対するラベルは,つけたい位置に\tikztonodesと書きます.もちろん\arrowへのオプションとしてラベルを指定しておく必要があります.またはnodeを直接指定することもできます.例えば上の例で,\tikztonodesの代わりにnode[at end,right]{$d$}と書いても同じ出力を得ることができます.

その他,放物線,サインカーブ,ベジェ曲線などなど…….

0 件のコメント:

コメントを投稿

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