要約: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 (各種可換図式パッケージを集めたもの)
本当はもっと色々調べて書こうと思っていたが、面倒になった。