Help XY-pic  ⇒

XY-pic

1 はじめに

AMS-L^{A}TEX の CD 環境で簡単な可換図式が描けますが，矢印の形状が限られている上，斜めの矢印が描けないなど種々の制約があります． XY-pic はこのような制約が無く，各種の図式を描くことができます．

• 任意の２点間に矢印が引け，矢先，軸，矢羽を組み合わせて種々の形状が可能で，軸の部分も自由に曲げることができる．

• 可換図式，フローチャート，有向グラフやツリーグラフ，カテゴリー理論のセル２つの図式，多角形や楕円などの図形や自由曲線，格子構造の図式，結び目やリンク，などを描くための機能が備わっている．

• 矢印や曲線などは独自のフォントによって（specials を用いない）標準の TEX の機能内で動作する．一方，出力デバイスに依存するが， tpic specials や PostScript を使った軽く綺麗な出力にも対応し，タイプセットは（綺麗さを除いて）両者で同一である．これを利用し，拡大してもギザギザが出ない PDF に変換できる．

• 座標の原点の移動のみならず， X-軸， Y -軸の単位ベクトルを任意に指定できるので，斜交座標の採用や図形のアフィン変換が容易．

• L^{A}TEX, plainTEX, AMS-TEX など，種々の TEX の下で同様に動く．

XY-pic はいくつかのファイル群から成り立っており，必要なもののみ読み込むことができますが，当面は

\usepackage[all]{xy}

を L^{A}TEX の冒頭の\usepackage{} の最後に追加しておくのがよいでしょう．以下で扱う L^{A}TEX や pL^{A}TEX の場合， XY-pic は，本文の中で

\begin{xy}

⋯ \end{xy}

として使うのが基本です．

なお，ここをクリックして得たパッケージを .\texmf の存在するディレクトリで展開すれば XY-pic がインストールされます．

2 矢印 ⇐ ⇒

1. デフォルトの座標単位は mm で， (0, 0) から (20, 0) に矢印を引くには

[figure: \begin{xy} ; \ar (20,0) ; \end{xy}]

とします． (20, 0) の代わりに実寸を用いて <2cm,0cm> のように書くこともできます（TEX で有効な長さを用いる）．

  実際には「続けて\begin{xy} \ar (20,0)\end{xy}と書く」と，以下

のようになります．

「続けて[figure]と書く」

より短く「続けて\xybox{\ar(20,0)}と書く」としても同じ結果です．

2. 一般に {(a,b) \ar @{arrow} (c,d)} または {\ar @{arrow} (a,b);(c,d)}

によって， (a,b) から (c,d) へ arrow で形状を指定した矢印が引かれます（形状指定がないときは，上の標準の矢印）：

\begin{xy}
 {(0,20)  \ar @{=>}  (15,23)},
 {(0,15)  \ar @{|-->}  (15,15)},
 {(0,15)  \ar @{~>}  (35,5)},
 {(0,5)   \ar @{.}  (15,5)},
 {(0,0)   \ar @_{||->>}  (10,0)},
 {(20,20) \ar @/^4mm/      (35,20)},
 {(20,15) \ar @3{<->}  (35,15)},
 {(20,0)  \ar @{^{(}-_{>}} (35,0)}
\end{xy}

[figure]

矢印の進む向きに対し， ^は左直交方向， _は右直交方向を表します（左から右へ向かう矢印に対しては，前者は「上」，後者は「下」方向）．

一般に / / はずらしを表し， @/^4mm/ は「左直交方向に 4mm のずらし」となります．矢印の始点と終点は固定されたままで，上の例では 4mm 上に曲がった曲線の軸を持つ標準の形状の矢印が引かれます．

矢先と矢羽には < > ( ) | ' ` + / x o {*} などが使えます．

矢軸には - . ~ = : が使えます．

@ の直後に ^_2 3 （左／右半，二／三重）のいずれかを付加できます．形状の arrow における上の例の^{(}は「矢羽 ( の左半分」を表します． 3. 矢印のフォントは Computer Modern や Euler に変更できます: ⇐ ⇒

\begin{xy}  \ar (0,10);(10,10)
 \SelectTips{cm}{} \ar (0,5) ;(10,5)
 \SelectTips{eu}{} \ar (10,0)  \end{xy}

[figure]

後の { } の中で，ポイント（10/11/12）が指定できます．

4. 矢印には，以下のように ^_|(挿入) によってラベルを付けられます：

\begin{xy}
 {(0,20) \ar @{o.x}(20,20)^{n\to\infty}_p},
 {(0,15) \ar @/_/@{{*}->} (20,10)^A_\alpha},
 {(0,0)  \ar @{||->>} (20,0)|{\sum_n a_n}}
\end{xy}

[figure: ∘; n→∞; p; •; A; α; ∑_{n} a_{n}]

5. 位置やラベルに={id} によって名前をつけると，後から参照できます：

\begin{xy}
 (5,8.66)="A", (0,0)="B", (10,0)="C",
 \ar@{-}"A";"B" \ar@{-}"B";"C" \ar@{-}"C";"A"
\end{xy}
\begin{xy}
 \ar @{<-|} (0,0);(10,0)^a="A"
 \ar @{|=>}(15,0);(25,0)^b="B"
 \ar @/^/ @{<->}"A";"B"^c
\end{xy}

[figure] [figure: a; b; c]

6. 矢（羽）の出発方向と，終点からみた矢先の到着方向とは，この順に

                        @(方向, 方向)

で指定できます．方向には r （右）， rd （右下）， d （下）， ld （左下）， l （左）， lu （左上）， u （上）， ru （右上）があります．

\begin{xy}
 (0,0)="A", (20,0)="B",
 \ar @(lu,ld) "A";"A"|{id}
 \ar @(d,d) "A";"B"^f \ar @(ld,ru) "B";"A"_g
\end{xy}

[figure: id; f; g]

7. 矢印は，指定した長さ（左方向が正）だけの平行のずらしができます：

                           @<長さ>
\begin{xy}
 (0,0)="A", (20,0)="B",
 \ar @<1mm> "A";"B"^{f}
 \ar @<1mm> "B";"A"^{f^{-1}}
\end{xy}

[figure: f; f^{−1}]

8. ラベルの直前にラベルの場所指定を置くことができます． ⇐ ⇒ < > - :矢印の末尾/先頭/中央（- は <>(0.5) と同等） (比) :比で指定 /長さ/ :ずらし !{ 位置 } :位置で指定

\begin{xy} (0,15)="A",(0,0)="B",
 \ar        "A";"B"^<a
 \ar@<6mm>  "A";"B"^<<<b
 \ar@<12mm> "A";"B"^>c
 \ar@<18mm> "A";"B"^(.3)d
 \ar@<24mm> "A";"B"^/3mm/e  \end{xy}

[figure: a; b; c; d; e]

9. “A” と “B” を結ぶ直線との交点の位置は

                         !{"A";"B"}

によって得られます．

\begin{xy}
 (0,0)="A",(10,10)="B",(15,0)="C",(0,10)="D",
 \ar "A";"B"
 \ar "C";"D"|!{"A";"B"}\hole
\end{xy}

[figure]

“C” から “D” への矢印に対し， “A” と “B” を結ぶ直線との交点に空白の穴 \hole を空けたものです．

一般に “A” と “B” を結ぶ直線と “C” と “D” を結ぶ直線の交点は

                    !{"A";"B":"C";"D",x}

によって求められます．

3 要素

1. 図式に要素を配置し，それを矢印で結ぶことができます．要素は，通常の記号や文字，さらに一般に TEX で表現されたものとすることができます．

\begin{xy}
 (0,0) *{A}="A",(10,10)*{B}="B",
 (15,0)*{C}="C",(0,10) *{D}="D",
 \ar "A";"B"
 \ar "C";"D"|!{"A";"B"}\hole
\end{xy}

[figure: A; B; C; D]

要素を配置するには，先頭に * をつけて *{要素} のように書きます．次のようなものが要素として，先頭に * を付加することで配置されます． {テキスト} :テキストは数式モードで組まれます．

TEX における通常の \hbox のように組まれた箱でも OK です. \txt<幅>{テキスト} :テキストは通常の文章として組まれます．

<幅> は省略可能で，テキスト中は強制改行記号 \\ が使用できます． \xybox{XY-pic による図式 }

これらの要素は，ラベルとしても使用できます． ⇐ ⇒

\begin{xy}
 \ar (0,0) *{\sum_{n=1}^N2^-n};
 (30,0)

*\txt{ 増加して\\1 に収束 }

 ^-{N\to\infty}
\end{xy}

[figure: ∑_{n=1}^{N} 2^{−n}; {増加して \atop 1 に収束}; N→∞]

2. 要素は大きさや位置が調整でき，枠を付けることなどもできます．

add-op 長さ :大きさの調整． add-op には， + - = += -= がある．

長さを指定しない場合は，デフォルト値が用いられる． !ベクトル :位置の調整（境界までのベクトル R RD D ⋯ なども可） [形] :様々な形（[o] は丸に）を設定可能で，以下の枠もそのひとつ．

[Fframe:opt] ::opt は省略可． F に（空白無しで続けた） frame は . - = :矩形の枠， opt は<長さ>で角の丸みの半径 -- o- :破線の枠，丸みを帯びた枠 , -, :影つきの枠（opt は<長さ>で影のサイズ） o .o -o oo :円形の枠， opt は<長さ>で半径を指定 ( ) ^) _( : ( の形の括弧（左/右/上/下） \{ \} ^{ _}: { の形の括弧（左/右/上/下）

枠は *\frm opt{frame} または， **\frm opt{frame} によっても描ける．前者は直前の要素を囲み，後者はその前の要素も囲むものとなる．

\begin{xy}
{\ar(0,20) *{\times}*+!D{a};(15,20) *{\bigcirc}
 \ar(0,15) *=0{\times};(15,15) *=0{\bigcirc}
 \ar(0,10) *+[F]{A};   (15,10) *+[Fo]{B}
 \ar *++={A} *\frm{o};
    (15,3) *+++={B} *\frm{oo} **\frm{-}},
 (8,-8) *+[Fo]{AB} ="A",
    \ar @(lu,ld) "A";"A"
\end{xy}

[figure: ×; a; ◯; ×; ◯; A; B; A; B; AB]

3. 行列形式の図式． ⇐ ⇒ 要素を，直接座標を指定せずに行列の成分として配置します．座標を考慮する必要がなく，可換図式のような図式を描くのに便利です．

列は & で，行は \\ で区切り，以下のように書きます．

\xymatrix{

成分 & 成分 & ⋯ \\ 成分 & 成分 & ⋯ \\

⋯ } 各成分には，配置された要素と，そこを始点とする矢印の情報があり・要素がテキストの場合， * は不要．先頭が \ でないなら { } も不要．・矢印の行き先は，成分の番号で指定できる：

[hop] :hop は， r l u d (右/左/上/下) をいくつか並べたものたとえば [rrd] は，その場所から 2 つ右で一つ下の成分を意味する．

"行, 列" :例えば "1,1" は左上の (1, 1) 成分

\xymatrix{ \ar@{}[rd]|{\circlearrowright}
X\times_Z Y \ar[r]_q \ar[d]^p & Y \ar[d]_q\\
X \ar[r]^q & Z }

\xymatrix{X ×_{Z} Y \ar[r]_{⟳}_{q} \ar[d]^{p} & Y \ar[d]_{p} \\ X \ar[r]^{q} & Z}

\xymatrix{
U \ar@/_/[ddr]_y \ar@{.>}[dr]
   |{x\otimes y} \ar@/^/[drr]^x \\
& *+[F-:<3pt>]{X \times_Z Y}
 \ar[d]^q \ar[r]_p & X \ar[d]_f \\
& Y \ar[r]^g & Z }

[figure: U; y; x⊗y; x; X ×_{Z} Y; q; p; X; f; Y; g; Z]

4 いろいろな図式

1．曲がった軸をもつ矢印円弧と線分を組み合わせて，迂回する矢印を描くことができる．経路は

' 目標 :目標までの線分 `方向目標 :出発方向から目標に向かって\frac{1}{4} 回転する．

最初の方向指定がなければ，前回の方向からの回転となる（次項も）． `方向回転の向き方向目標 :最初の方向へ出発して直線的に移動し，後

の方向で進むと目標に到達できる地点で必要な回転をする．

  方向には r rd d ld l lu u ru がある．

回転の向きは， ^(反時計回り) または _(時計回り) 最後は，同じ向きの矢印を引いて，最終目標に到達させる．円弧の半径は 10pt であるが /長さにより以降変更可能．

\xymatrix{
 {\circ} \ar
   `r[d] `[rr] `^lu/3pt[rr] [rr]
        &{\circ}&{\circ}\\
 {\circ}&{\circ}&{\circ}\\ }

[figure: ∘; ∘; ∘; ∘; ∘; ∘]

より一般に，始点と終点とを与えたとき，途中の制御点を指定した Bézier 曲線を使って自由曲線が描けます．

**\crv{ 制御点 & 制御点 & ⋯ }

・制御点がないときは，二点を結ぶ線分になります．・矢印のときと同様 ~*{.} などを入れて線種指定できます．

\begin{xy}
 (0,10)*[o]+{A};(20,0)*[o]+{B}="B"
 **\crv{}
 **\crv{~*{.}(10,15)}
 **\crv{(10,20)&(20,20)} ?>*\dir{>}, "B"
 **\crv{(5,10)&(10,10)&(15,-10)&(20,-5)}
\end{xy}

[figure: A; B; ^{....................}]

2．座標軸の回転 ⇐ ⇒ ベクトル: X 軸の単位ベクトルを定める（回転＋スケール変換を行う）．

\begin{xy} {\ar (8,0)},
 (-.5,\halfrootthree): {\ar(0,0);(8,0)},
 (0,0),(-.5,\halfrootthree): \ar(0,0);(8,0)
\end{xy}

[figure]

次に， \xymatrix を使った\frac{π}{4} の整数倍の回転の例を挙げます．

  \xymatrix の直後の指定で

@方向 :方向に向けた回転をする（@r :回転なし）

@add-op 長さ:行と列の空きの設定（@! :行と列の空きを等しくする） @Cadd-op 長さ:列の空き（@C! :列の空きを等しくする） @Radd-op 長さ:行の空き（@R! :行の空きを等しくする） @Madd-op 長さ:要素のデフォルトの空き

\xymatrix@=0pt@M=0pt{X&Y\\Z&W}\qquad
\xymatrix@dr@=0pt@M=0pt{X&Y\\Z&W}
\xymatrix@dr@C=4mm{
 A \ar[r]^a &  B \ar@{.>}[d]^b\\
 C \ar[u]^c &  D \ar@{.>}[l]^d }

X Y Z W _{XY ZW} [figure: A; a; B; b; C; c; D; d]

3．仕様と例 ⇐

[figure: α_{1}; α_{2}; α_{1}; α_{2}; α_{3}; α_{4}; α_{4}; α_{1}; α_{2}; α_{3}; ⋯; α_{n}]

この Dynkin 図式の例（ここをクリックすると，ソースがクリップボードにコピーされます）では，以下の円弧を描くコマンドを使っています．

\cir<半径>{方向回転の向き方向} 最初の方向で円周上を回転の向き（^は反時計回り， _は時計回り）にスタートし，後の方向まで円弧を描きます． { } の中を空として，これらを指定しない場合は円を描きます．

\begin{xy}
 *\cir<5mm>{l_d}, (10,0) *\cir<5mm>{r^d},
 (22,0) *+{M} *\cir{dr_ur}
\end{xy}

[figure: M]

XY-pic は TEX のメモリーを大量に使うため，複雑な図式を扱うと TeX capacity exceeded のエラーが発生することがあります．それが解消できない場合，より軽い

  \usepackage[all,ps,dvisp]{xy}

として DVI ファイルを作成して下さい．その後 PS ファイルから EPS ファ

イル，あるいは PDF ファイルに変換（Ghostscript+dvipsk+ps2pdf な

ど）することができます．

これまで XY-pic の基本的な機能をいくつか紹介してきましたが，その他にも，楕円や多角形，各種ダイアグラムや結び目などに関する多くの描画機能を持っています．より詳しい仕様やこれらの機能については，添付の Help，あるいはそこに挙げてある文献などを参照してください．