要約:Xy-pic か TikZ-cd を使おう。
LaTeX において可換図式を描くためのパッケージはいくつか存在する。この記事では、そういうパッケージをいくつか調べ、試してみた。
目次
amscd
ドキュメント (amscd.pdf) によると、 AMS-TeX にあった可換図式機能の LaTeX 版、ということらしい。(しかし、AMS-TeX の User’s Guide (amsguide.pdf) を見ても可換図式への言及がない)
\usepackage{amscd} で使えるようになる。
amscd で図式を描くには、CD 環境を使う。CD 環境は数式環境の中に書く。矢印はアットマークから始まるやつで指定する。
\[
\begin{CD}
A @>{f}>> B \\
@V{g}VV @VVV \\
C @>>> D
\end{CD}
\]
矢印の指定は、次の7種類が用意されている:
@>>>: 右向き矢印(キーボードに>キーがない人のために、代替記法として@)))が用意されている)@<<<: 左向き矢印(キーボードに>キーがない人のために、代替記法として@(((が用意されている)@AAA: 上向き矢印@VVV: 下向き矢印@=: 等号(横)@|,@\vert: 等号(縦)@.: 矢印を出力しない
逆にいうと、これらの7種類以外の矢印(斜め方向とか、破線とか)は使えない。
矢印にラベル(射の名前)をつける場合は、アットマークに続く3文字のうち、1文字目と2文字目の間、または2文字目と3文字目の間に書く。 @>{ほにゃらら}>> という感じで。
AMScd はこのように貧弱なので、真面目に LaTeX を書く際に使うことは少ないだろうが、 MathJax は AMScd を拡張機能として実装している(他の図式用パッケージは実装されていない)という事情があるので、 MathJax を使う際には重宝するかもしれない。
Five Lemma の例:
\[
\begin{CD}
0 @>>> a @>>> b @>>> c @>>> 0 \\
@. @VV{f}V @VV{g}V @VV{h}V @. \\
0 @>>> a' @>>> b' @>>> c' @>>> 0
\end{CD}
\]
pb-diagram
\usepackage{pb-diagram} で使えるようになる。
矢印の向きは n, e, s, w, ne, nw, se, sw などの「方角」で指定する。
\[
\begin{diagram}
\node{A} \arrow{e,t}{f} \arrow{s,l}{g} \node{B} \arrow{s} \\
\node{C} \arrow{e} \node{D}
\end{diagram}
\]
\[
\begin{diagram}
\node[2]{x} \arrow{sw} \arrow{s,..} \arrow{se} \\
\node{a} \node{a\times b} \arrow{w} \arrow{e} \node{b}
\end{diagram}
\]
xypic
かなり強力である。
TeX 文書を DVI 経由で処理する場合は、ドライバ指定(dvips, dvipdfmx 等)をした方が、良い結果を得られる(詳しくは以前の記事を参照)。
プリアンブルで\usepackage[all]{xy} とすれば使えるようになるが、代わりに \usepackage[matrix,arrow]{xy} として、使う機能を個別に指定することも可能である。
図式の記述は環境ではなく、 \xymatrix コマンドの引数で行う。非 LaTeX な文書でも使えるようにという配慮であろうか。
\[
\xymatrix{
A \ar[r]^{f} \ar[d]_{g} & B \ar[d] \\
C \ar[r] & D
}
\]
\[
\xymatrix{
& x \ar[ld] \ar@{..>}[d] \ar[rd] & \\
a & a\times b \ar[l] \ar[r] & b
}
\]
\[
\xymatrix{
x \ar@/_/[ddr] \ar@/^/[rrd] \ar@{..>}[rd] & & \\
& a \ar[r] \ar[d] & b \ar[d] \\
& c \ar[r] & d
}
\]
多分ググれば例や解説がたくさん出てくるので、ここで改めて解説するまでもないだろう。
TODO: XyJax について書く。
tikz-cd
今回紹介するものの中では最も後発である(CTAN への登録が2011年9月)。
\usepackage{tikz-cd} または \usepackage{tikz}\usetikzlibrary{cd} で使えるようになる。
図式の部分には tikzcd 環境を使うが、 \[ \] 等で囲わなくても自動で数式モードになる。
矢印には、Xy-pic と同様の \ar の他に、 \arrow を使うことができる。
Xy-pic は矢印の指定に記号を多用していたが、 tikz-cd はそういう箇所に英単語を使うように見受けられる。
\begin{tikzcd}
A \ar[r, "f"] \arrow[d, "g"'] & B \ar[d] \\
C \ar[r] & D
\end{tikzcd}
\begin{tikzcd}
& x \arrow[ld] \arrow[d, dotted] \arrow[rd] & \\
a & a\times b \arrow[l] \arrow[r] & b
\end{tikzcd}
\begin{tikzcd}
x \arrow[ddr, bend right] \arrow[rrd, bend left] \arrow[rd, dotted] & & \\
& a \arrow[r] \arrow[d] & b \arrow[d] \\
& c \arrow[r] & d
\end{tikzcd}
参考リンク
- Guide to Commutative Diagram Packages — J.S. Milne (この記事で扱っていないパッケージにも触れている)
- CTAN: Package diagrams (各種可換図式パッケージを集めたもの)
本当はもっと色々調べて書こうと思っていたが、面倒になった。










