\documentclass[10pt]{jarticle} %%% \def\pdf{TF} % TT (pdf for dvipdfmx) <-> TF (dvi for dviout) %%% \usepackage{myhyper,amsmath,amssymb,amsfonts,amscd,alltt} \if\pdf \usepackage[nokeyin]{keyin} \else \usepackage{keyin} \fi \usepackage[dviout]{graphicx,color} \AtBeginDvi{\special{dviout -hyper=144 -hyperoff=0 v0}} % -hyper=144 : Blue letters without underline (hot spot) % -hyperoff=0: HyperTeX is valid % v0 : Minimal bars % v0vs : Minimal bars + Status bar % !3 : Copy to Editor without CTRL \if\pdf \AtBeginDvi{\special{papersize=5.5in,8in}} \hoffset=-1.03cm \voffset=-3.18cm \paperwidth=5.6in \paperheight=8in \else \AtBeginDvi{\special{papersize=4.6in,7.07in}} \hoffset=-2.3cm \voffset=-4.45cm \paperwidth=4.6in \paperheight=7in \fi \textwidth=4.4in \textheight=7.0in \renewcommand\baselinestretch{0.92} %\paraindent=0cm \setlength{\oddsidemargin}{0cm} \setlength{\parindent}{0cm} \def\BK{\texttt{\symbol{'134}}} \def\D#1{\keyin{#1}{#1}} \def\E#1{\keyin{\string#1}{#1}} \def\Q#1{\keyin{\string#1}{$#1$}} \def\R#1{\keyin{\noexpand#1}{$#1$}} \def\F#1{\special{html:}\BK#1\special{html:}} \def\G#1{\special{html:}\BK#1\special{html:}} \def\Goto#1#2{\goto{#1}{\colorbox{green}{\tiny\sf #2}}} % \def\gotop#1{\makebox[0mm]{\hspace{#1}\Goto{top}{Top}}} \def\red#1{{\color{red}#1}} \def\blue#1{{\color{blue}#1}} \def\green#1{{\color{green}#1}} \def\RED#1{{\it\color{red}#1}} \def\MGNT#1{{\it\color{magenta}#1}} \def\GREEN#1{{\it\color{green}#1}} \def\ops#1{\{\MGNT{#1}\}} \def\Ops#1{[\MGNT{#1}]} \def\opt#1{\{\RED{#1}\}} \def\Opt#1{[\RED{#1}]} \def\ST{\hspace{-.1em}\raisebox{-0.25em}*} \if\pdf \def\NEXT{\phantom{a}} \def\BACK{\phantom{a}} \else \def\NEXT% {\special{html:}\colorbox{cyan}{\tiny$\Rightarrow$}\special{html:}} \def\BACK% {\special{html:}\colorbox{cyan}{\tiny$\Leftarrow$}\special{html:}} \fi \def\GOTO#1{ \vspace*{-2.7ex} \hfill{\Goto{#1}{#1}} } % \pagestyle{empty} %%% \newlength{\minitwocolumn} \newenvironment{z2col}[1][0pt]% {\def\kaidan{\end{minipage}% \hspace{\columnsep}% \addtolength{\minitwocolumn}{-#1}% \begin{minipage}[t]{\minitwocolumn}}% \setlength{\minitwocolumn}{0.48\textwidth}% \addtolength{\minitwocolumn}{-0.5\columnsep}% \addtolength{\minitwocolumn}{#1}% \begin{minipage}[t]{\minitwocolumn}}% {\end{minipage}} %%% \if\pdf \usepackage[all,ps,dvips]{xy} \else \usepackage[all]{xy} \fi \xyoption{poly} \xyoption{arc} \xyoption{2cell} \xyoption{knot} \xyoption{web} \UseAllTwocells %%% \newenvironment{Alltt}{% \renewcommand{\\}{\char`\\} \begin{alltt}% }{% \end{alltt} } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\ToDef#1{\goto{#1}{\colorbox{magenta}{\tiny\sf Def}}} \def\ToEx#1{\goto{#1}{\colorbox{magenta}{\tiny\sf Ex}}} \def\La{\,$\leftarrow$\,} \def\pos{\MGNT{pos}} \def\Pos{\goto{pos}\pos} \def\cod{\MGNT{cod}} \def\Cod{\goto{cod}\cod} \def\obj{\MGNT{obj}} \def\Obj{\goto{obj}\obj} \def\vector{\MGNT{vector}} \def\Vector{\goto{vector}\vector} \def\place{\MGNT{place}\/} \def\Place{\goto{place}\place} \def\stack{\MGNT{stack}\/} \def\sav{\MGNT{save}} \def\FAC{{\it\color{cyan}factor}} \def\dr{\MGNT{direction}} \def\dm{{\it\color{cyan}dimen}} \def\Dm{\goto{dm}\dm} \def\CIR{{\it\color{magenta}cir}} \def\Cir{\goto{cir}\CIR} \def\anchor{\MGNT{anchor}} \def\Anchor{\goto{anchor}\anchor} \def\DIR{{\MGNT{dir}}} \def\Dir{\goto{dir}\DIR} \def\TEXT{{\it\color{cyan}text}} \def\ID{{\it\color{cyan}id}} \def\diag{{\it\color{magenta}diag}} \def\Diag{\goto{diag}\diag} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} \if\pdf \rightline{\href{http://akagi.ms.u-tokyo.ac.jp/input9.pdf}{\colorbox{cyan}{\scriptsize\sf Help \Xy-pic}} \ \NEXT} \else \rightline{\href{file:input9.dvi}{\colorbox{cyan}{\scriptsize\sf Help \Xy-pic}} \ \NEXT} \fi \centerline{\Large\bf\Xy-pic} \vspace*{-4ex} \section{はじめに} \AmS-\LaTeX の\texttt{CD}環境で簡単な可換図式が描けますが, 矢印の形状が限られている上,斜めの矢印が描けないなど種々の制約があります. $\Xy$-pic はこのような制約が無く,各種の図式を描くことができます. %簡単に可換図式を描くことができるなど, %以下のような優れた特徴を持っています. \begin{itemize} \item 任意の2点間に矢印が引け,矢先,軸,矢羽を組み合わせて種々の形状が可能で, 軸の部分も自由に曲げることができる. \item 可換図式,フローチャート,有向グラフやツリーグラフ, カテゴリー理論のセル2つの図式,多角形や楕円などの図形や自由曲線, 格子構造の図式,結び目やリンク,などを描くための機能が備わっている. \item 矢印や曲線などは独自のフォントによって(specialsを用いない)標準の\TeX の機能 内で動作する.一方,出力デバイスに依存するが,tpic specials や PostScriptを使 った軽く綺麗な出力にも対応し,タイプセットは(綺麗さを除いて)両者で同一で ある.これを利用し,拡大してもギザギザが出ないPDFに変換できる. \item 座標の原点の移動のみならず,$X$-軸,$Y$-軸の単位ベクトルを任意に指定できるので,斜交座標の採用や図形のアフィン変換が容易. \item \LaTeX, plain\TeX, \AmS-\TeX など,種々の\TeX の下で同様に動く. \end{itemize} \quad \Xy-pic はいくつかのファイル群から成り立っており,必要なもののみ読み込むことができますが,当面は \begin{quote} \keyin{\usepackage[all]{xy} 0d 0a}{{\sf \BK usepackage[all]\{xy\}}} \end{quote} を\LaTeX の冒頭の{\sf \BK usepackage\{\}}の最後に追加しておくのがよいでしょう. \quad 以下で扱う \LaTeX や p\LaTeX の場合,\Xy-pic は,本文の中で \begin{quote} \keyin{\begin{xy} 0d 0a\end{xy} 0d 0a}{{\sf \BK begin\{xy\}\\ \quad$\cdots$\\ \BK end\{xy\}}} \end{quote} として使うのが基本です.\\ \quad なお,\href{ftp://akagi.ms.u-tokyo.ac.jp/pub/TeX/macros/xypic.zip}{ここ} をクリックして得たパッケージを {\tt.\BK texmf} の存在するディレクトリで展開すれば \Xy-pic がインストールされます. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{矢印} \vspace*{-4ex} \hfill\raisebox{2ex}{\BACK\ \NEXT}\\ {\bf 1}. デフォルトの座標単位はmmで,%す.\\ \quad $(0,0)$から$(20,0)$に矢印を引くには \begin{z2col} \begin{Alltt} \\begin\{xy\} \\ar (20,0) \\end\{xy\} \end{Alltt} \kaidan \vspace*{3ex} \begin{xy} \ar (20,0) \end{xy} \end{z2col} \medskip とします. {\color{red}$(20,0)$} の代わりに実寸を用いて {\color{red}\verb|<2cm,0cm>|} の ように書くこともできます(\TeX で有効な\MGNT{長さ}を用いる). \quad 実際には「続けて{\color{red}\verb|\begin{xy} |}\verb|\ar (20,0)|{\color{red}\verb|\end{xy}|}と書く」と, 以下のようになります. \centerline{「続けて\begin{xy} \ar (20,0)\end{xy}と書く」} \smallskip \quad より短く「続けて{\color{red}\verb|\xybox{|}\verb|\ar(20,0)|{\color{red}\verb|}|}と書く」としても同じ結果です. \medskip {\bf 2}. 一般に \centerline{\tt\{(\MGNT{a},\MGNT{b}) \BK ar \string@\{\MGNT{arrow}\} (\MGNT{c},\MGNT{d})\} または \{\BK ar \string@\{\MGNT{arrow}\} (\MGNT{a},\MGNT{b});(\MGNT{c},\MGNT{d})\}} \medskip によって,{\tt(\MGNT{a},\MGNT{b})}から{\tt(\MGNT{c},\MGNT{d})}へ \MGNT{arrow}で形状を指定した矢印が引かれます (形状指定がないときは,上の標準の矢印): \begin{z2col} \begin{Alltt} \\begin\{xy\} \{(0,20) \\ar @\{\red{=>\}} (15,23)\}, \{(0,15) \\ar @\{\red{|-->}\} (15,15)\}, \{(0,15) \\ar @\{\red{~>}\} (35,5)\}, \{(0,5) \\ar @\{\red{.}\} (15,5)\}, \{(0,0) \\ar @\red{_}\{\red{||->>}\} (10,0)\}, \{(20,20) \\ar @\red{/^4mm/} (35,20)\}, \{(20,15) \\ar @\red{3}\{\red{<->}\} (35,15)\}, \{(20,0) \\ar @\{\red{^\{(\}-_\{>\}}\} (35,0)\} \\end\{xy\} \end{Alltt} \kaidan \vspace*{5ex} \hfill \begin{xy} {(0,20) \ar @{=>} (15,23)}, {(0,15) \ar @{|-->} (15,15)}, {(0,15) \ar @{~>} (35,2)}, {(0,5) \ar @{.} (15,5)}, {(0,0) \ar @_{||->>} (15,0)}, {(20,20) \ar @/^4mm/ (35,20)}, {(20,15) \ar @3{<->} (35,15)}, {(20,0) \ar @{^{(}-_{>}} (35,0)} \end{xy} \end{z2col} \medskip \quad 矢印の進む向きに対し,\red{\tt\string^} は左直交方向, \red{\tt\string_} は右直交方向を表します(左から右へ向かう矢印に対しては, 前者は「上」,後者は「下」方向). \quad 一般に {\color{red}\verb|/ /|} は\textbf{ずらし}を表し, {\color{red}\verb|@/^4mm/|} は「左直交方向に4mmのずらし」となります. 矢印の始点と終点は固定されたままで,上の例では4mm上に曲がった曲線の軸を持つ\textbf{標準の形状}の矢印が引かれます. \quad 矢先と矢羽には \red{\tt < > ( ) | ' ` + / x o \{*\}} などが使えます. \quad 矢軸には \red{\tt - . \string~ = :} が使えます. \quad \red{\tt@} の直後に {\tt\color{red}\verb|^ _ 2 3|} (左/右半,二/三重)のいずれかを付加できます. \quad 形状の\MGNT{arrow}における 上の例の{\color{red}\verb|^{(}|}は 「矢羽 \red{\tt(} の左半分」を表します. \medskip {\bf 3}. 矢印のフォントはComputer ModernやEulerに変更できます: \hfill{\BACK\ \NEXT\!\!} \begin{z2col} \begin{Alltt}\\begin\{xy\} \\ar (0,10);(10,10) \red{\\SelectTips\{cm\}\{\}} \\ar (0,5) ;(10,5) \red{\\SelectTips\{eu\}\{\}} \\ar (10,0) \\end\{xy\} \end{Alltt} \kaidan \vspace*{-.5ex} \hfill\hfill \begin{xy} \ar (0,10);(10,10) \SelectTips{cm}{} \ar (0,5); (10,5) \SelectTips{eu}{} \ar (10,0) \end{xy} \hfill\phantom{.} \end{z2col} \smallskip 後の\red{\tt\{\ \}} の中で,ポイント(\red{10}/\red{11}/\red{12})が 指定できます. \medskip {\bf 4}. 矢印には,以下のように {\color{red}\verb:^ _ |:}(挿入) によって\textbf{ラベル}を付けられます: \begin{z2col} \begin{Alltt} \\begin\{xy\} \{(0,20) \\ar @\{\red{o.x}\}(20,20)\red{\tt\string^\{}n\\to\\infty\red{\}\string_}p\}, \{(0,15) \\ar @\red{/_/}@\{\red{\{*\}->}\} (20,10)\red{\tt\string^}A\red{\tt\string_}\\alpha\}, \{(0,0) \\ar @\{\red{||->>}\} (20,0){\tt\color{red}|\{}\\sum_n a_n\red{\tt\}}\} \\end\{xy\} \end{Alltt} \kaidan \vspace*{-1.5ex} \hfill \begin{xy} {(0,15) \ar @{o.x}(20,15)^{n\to\infty}_p}, {(0,10) \ar @/_/@{{*}->} (20,7)^A_\alpha}, {(0,0) \ar @{||->>} (20,0)|{\sum_n a_n}} \end{xy}\!\!\!\! \end{z2col} %%%%%%%%%%%%%%%%%%%%%% \medskip {\bf 5}. 位置やラベルに{\tt\color{red}=\{\it{\color{cyan}id}\}} によって\textbf{名前}をつけると,後から参照できます: \begin{z2col} \begin{Alltt} \\begin\{xy\} (5,8.66)\red{="A"}, (0,0)\red{="B"}, (10,0)\red{="C"}, \\ar@\{-\}\red{"A"};\red{"B"} \\ar@\{-\}\red{"B"};\red{"C"} \\ar@\{-\}\red{"C"};\red{"A"} \\end\{xy\} \\begin\{xy\} \\ar @\{<-|\} (0,0);(10,0)^a\red{="A"} \\ar @\{|=>\}(15,0);(25,0)^b\red{="B"} \\ar @/^/ @\{<->\}\red{"A"};\red{"B"}^c \\end\{xy\} \end{Alltt} \kaidan \vspace*{1.ex} \hfill \begin{xy} (5,8.66)="A", (0,0)="B", (10,0)="C", \ar@{-}"A";"B" \ar@{-}"B";"C" \ar@{-}"C";"A" \end{xy} \vspace*{8ex} \hfill \begin{xy} \ar @{<-|}(0,0);(10,0)^a="A" \ar @{|=>}(15,0);(25,0)^b="B" \ar @/^/ @{<->}"A";"B"^c \end{xy} \end{z2col} \medskip {\bf 6}. 矢(羽)の\textbf{出発方向}と,終点からみた矢先の\textbf{到着方向}とは, この順に \centerline{\color{red}\tt@(\MGNT{方向},\MGNT{方向})} で指定できます. 方向には \red{\tt r}(右),\red{\tt rd}(右下),\red{\tt d}(下), \red{\tt ld}(左下),\red{\tt l}(左),\red{\tt lu}(左上),\ \red{\tt u}(上),\red{\tt ru}(右上)があります. \begin{z2col} \begin{Alltt} \\begin\{xy\} (0,0)="A", (20,0)="B", \\ar \red{@(lu,ld)} "A";"A"|\{id\} \\ar \red{@(d,d)} "A";"B"^f \\ar \red{@(ld,ru)} "B";"A"_g \\end\{xy\} \end{Alltt} \kaidan \vspace*{-.1ex} \hfill \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} \end{z2col} \medskip {\bf 7}. 矢印は,指定した長さ(左方向が正)だけの平行の\textbf{ずらし}ができます: \centerline{\color{red}\tt@<\MGNT{長さ}>} \vspace*{-2ex} \begin{z2col} \begin{Alltt} \\begin\{xy\} (0,0)="A", (20,0)="B", \\ar \red{@<1mm>} "A";"B"^\{f\} \\ar \red{@<1mm>} "B";"A"^\{f^\{-1\}\} \\end\{xy\} \end{Alltt} \kaidan \vspace{1ex} \hfill \begin{xy} (0,0)="A", (20,0)="B", \ar @<1mm> "A";"B"^{f} \ar @<1mm> "B";"A"^{f^{-1}} \end{xy} \end{z2col} \newpage \medskip {\bf 8}. ラベルの直前にラベルの\textbf{場所指定}を置くことができます.\hfill \BACK\ \NEXT \hspace{1cm}{\tt\red{< > -\ \ \ } :矢印の末尾/先頭/中央(\red{\tt-} は \red{<>(0.5)} と同等)}\\ \hspace{1cm}{\tt\red{(\MGNT{比})\ \ \ \ } :比で指定}\\ \hspace{1cm}{\tt\red{/\MGNT{長さ}/\ \ } :ずらし}\\ \hspace{1cm}{\tt\red{!\{\MGNT{位置}\}\ }} :位置で指定 \begin{z2col} \begin{Alltt} \\begin\{xy\} (0,15)="A",(0,0)="B", \\ar "A";"B"^\red{<}a \\ar@<6mm> "A";"B"^\red{<<<}b \\ar@<12mm> "A";"B"^\red{>}c \\ar@<18mm> "A";"B"^\red{(.3)}d \\ar@<24mm> "A";"B"^\red{/3mm/}e \\end\{xy\} \end{Alltt} \kaidan \vspace{1ex} \hfill \begin{xy} (0,15)="A", (0,0)="B", \ar "A";"B"^ "A";"B"^<< "A";"B"^>c \ar @<18mm> "A";"B"^(.3)d \ar @<24mm> "A";"B"^/3mm/e \end{xy}\!\!\!\! \end{z2col} \medskip {\bf 9}. ``A" と ``B" を結ぶ直線との交点の位置は \centerline{\color{red}\tt!\{"A";"B"\}} によって得られます. \begin{z2col} \begin{Alltt} \\begin\{xy\} (0,0)="A",(10,10)="B",(15,0)="C",(0,10)="D", \\ar "A";"B" \\ar "C";"D"|\red{!\{"A";"B"\}\\hole} \\end\{xy\} \end{Alltt} \kaidan \vspace*{1ex} \hfill \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} \end{z2col} \medskip ``C" から ``D" への矢印に対し,``A" と ``B" を結ぶ直線との交点に空白の穴 {\color{red}\verb|\hole|} を空けたものです. \quad 一般に ``A" と ``B" を結ぶ直線と ``C" と ``D" を結ぶ直線の交点は\\ \centerline{\tt\red{!\{"A";"B":"C";"D",x\}}} によって求められます. \vspace*{-3ex} \section{要素} {\bf 1}. 図式に{\bf 要素}を配置し,それを矢印で結ぶことができます.要素は, 通常の記号や文字,さらに一般に\TeX で表現されたものとすることができます. %要素の大きさが考慮されて矢印が引かれます. \begin{z2col} \begin{Alltt} \\begin\{xy\} (0,0) \red{*\{A\}}="A",(10,10)\red{*\{B\}}="B", (15,0)\red{*\{C\}}="C",(0,10) \red{*\{D\}}="D", \\ar "A";"B" \\ar "C";"D"|!\{"A";"B"\}\\hole \\end\{xy\} \end{Alltt} \kaidan \vspace*{2ex} \hfill \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} \end{z2col} \smallskip \quad 要素を配置するには,先頭に \red{\tt *} をつけて \red{\tt *\{\!要素\!\}} の ように書きます. %が,要素が通常の文字一つの時は \red{\tt\{\ \}} は省略できます.\\ \vspace{5ex} \quad 次のようなものが要素として,先頭に \red{\tt *} を付加することで配置されます. \hspace{.5cm}\red{\tt \{\!テキスト\!\}} :テキストは数式モードで組まれます.\\ \hspace{1cm}{\TeX}における通常の {\tt\BK hbox} のように組まれた\textbf{箱} でもOKです.\\ \hspace{.5cm}\red{\tt\BK txt<幅>\{\!テキスト\!\}} :テキストは通常の文章として組まれます.\\ \hspace{1cm}\red{\tt<幅>} は省略可能で,テキスト中は強制改行 記号 \red{\tt\BK\BK} が使用できます.\\ \hspace{.5cm}\red{\tt \BK xybox\{{\rm\Xy-pic}による図式\}} これらの要素は,{\bf ラベル}としても使用できます.\hfill \BACK\ \NEXT \begin{z2col} \begin{Alltt} \\begin\{xy\} \\ar (0,0) *\red{\{}\\sum_\{n=1\}^N2^{-n}\red{\}}; (30,0) *\red{\\txt\{}増加して\red{\\\\}1に収束\red{\}} ^-\red{\{}N\\to\\infty\red{\}} \\end\{xy\} \end{Alltt} \kaidan \vspace*{4ex} \hfill \begin{xy} \ar (0,0) *{\sum_{n=1}^N2^{-n}}; (30,0) *\txt{増加して\\1に収束} ^-{N\to\infty} \end{xy}\!\!\!\!\!\! \end{z2col} \medskip {\bf 2}. 要素は{\bf 大きさ}や{\bf 位置}が調整でき,{\bf 枠}を付けることなどもできます. \hspace{.5cm}\MGNT{add-op}\MGNT{長さ} :大きさの調整. \MGNT{add-op} には,\red{\tt + - = += -=} がある.\\ \hspace{1cm}\MGNT{長さ}を指定しない場合は,デフォルト値が用いられる.\\ \hspace{.5cm}\red{\tt !}\MGNT{ベクトル} :位置の調整(境界までのベクトル \red{\tt R RD D} $\cdots$ なども可)\\ \hspace{.5cm}\red{\tt[\MGNT{形}]} :様々な{\bf 形}(\red{\tt[o]}は丸に)を設定可能で,以下の{\bf 枠}もそのひとつ.\\ \hspace{1cm}\red{\tt [F\MGNT{frame}:\MGNT{opt}]\ \,} :\red{\tt:\MGNT{opt}}は省略可. \red{\tt F}に(空白無しで続けた)\MGNT{frame} は\\ \hspace{1.5cm}\red{\tt .\ - =\ \ \ \ \ } :矩形の枠,\MGNT{opt}は\red{\tt<\MGNT{長さ}>}で角の丸みの半径\\ \hspace{1.5cm}\red{\tt -- o-\ \ \ \ \ } :破線の枠,丸みを帯びた枠\\ \hspace{1.5cm}\red{\tt , -,\ \ \ \ \ \ } :影つきの枠(\MGNT{opt}は\red{\tt<\MGNT{長さ}>}で影のサイズ)\\ \hspace{1.5cm}\red{\tt o .o -o oo} :円形の枠,\MGNT{opt}は\red{\tt<\MGNT{長さ}>}で半径を指定\\ \hspace{1.5cm}\red{\tt ( ) \string^) \string_(\ } :\,{\tt (} の形の括弧(左/右/上/下)\\ \hspace{1.5cm}\red{\tt\BK\{ \BK\} \string^\{ \string_\}}:\,{\tt \{} の形の括弧(左/右/上/下) 枠は \red{\tt*\BK frm \MGNT{opt}\{\MGNT{frame}\}} または, \red{\tt**\BK frm \MGNT{opt}\{\MGNT{frame}\}} によっても描ける.前者は直前の \text{要素}を囲み,後者はその前の\text{要素}も囲むものとなる. \begin{z2col} \begin{Alltt} \\begin\{xy\} \{\\ar(0,20) *\{\\times\}*\red{+!D}\{a\};(15,20) *\{\\bigcirc\} \\ar(0,15) *\red{=0}\{\\times\};(15,15) *\red{=0}\{\\bigcirc\} \\ar(0,10) *\red{+[F]}\{A\}; (15,10) *\red{+[Fo]}\{B\} \\ar *\red{++=}\{A\} \red{*\\frm\{o\}}; (15,3) \red{*+++}=\{B\} \red{*\\frm\{oo\}} \red{**\\frm\{-\}}\}, (8,-8) \red{*+[Fo]}\{AB\} ="A", \\ar @(lu,ld) "A";"A" \\end\{xy\} \end{Alltt} \kaidan \vspace*{.2ex} \hfill \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}\!\!\!\! \end{z2col} \medskip {\bf 3}. \textbf{行列形式の図式}.\hfill{\BACK\ \NEXT}\\ \textbf{要素}を,直接座標を指定せずに行列の\textbf{成分}として 配置します.\\ 座標を考慮する必要がなく,可換図式のような図式を描くのに便利です. \quad 列は \red{\tt\string&} で,行は \red{\tt\BK\BK} で区切り,以下の ように書きます. {\tt \BK xymatrix\{\\[-.2ex] \quad \textbf{成分} \string& \textbf{成分} \string& $\cdots$ \BK\BK\\[-.4ex] \quad \textbf{成分} \string& \textbf{成分} \string& $\cdots$ \BK\BK\\[-.7ex] \qquad$\cdots$\quad\}} \quad 各\textbf{成分}には,配置された\textbf{要素}と,そこを始点と する\textbf{矢印}の情報があり ・ \textbf{要素}がテキストの場合,\red{\tt *} は不要.%\\ %\phantom{・ } 先頭が \red{\tt\BK} でないなら \red{\tt\{ \}} も不要.\\ ・ 矢印の行き先は,成分の番号で指定できる:\\ \quad \red{\tt[\MGNT{hop}]} :\MGNT{hop}は,\red{\tt r l u d} (右/左/上/下) を いくつか並べたもの\\ \qquad たとえば \red{\tt[rrd]} は, その場所から2つ右で一つ下の成分を意味する.\\ \quad \red{\tt "\MGNT{行},\MGNT{列}"} :例えば \red{\tt"1,1"} は左上 の$(1,1)$成分 \smallskip \begin{z2col} \begin{Alltt} \red{\\xymatrix\{} \\ar@\{\}\red{[rd]}|\{\\circlearrowright\} X\\times_Z Y \\ar\red{[r]}_q \\ar\red{[d]}^p \red{&} Y \\ar\red{[d]}_q\red{\\\\} X \\ar\red{[r]}^q \red{&} Z \red{\}} \end{Alltt} \kaidan \vspace*{-3ex} \hfill \xymatrix{ \ar@{}[rd]|{\circlearrowright} X\times_Z Y \ar[r]_q \ar[d]^p & Y \ar[d]_p\\ X \ar[r]^q & Z }\!\!\!\!\!\!\!\! \end{z2col} \begin{z2col} \begin{Alltt} \red{\\xymatrix\{} U \\ar@/_/\red{[ddr]}_y \\ar@\{.>\}\red{[dr]} |\{x\\otimes y\} \\ar@/^/\red{[drr]}^x \red{\\\\} \red{&} *+[F-:<3pt>]\{X \\times_Z Y\} \\ar\red{[d]}^q \\ar\red{[r]}_p \red{&} X \\ar\red{[d]}_f \red{\\\\} \red{&} Y \\ar\red{[r]}^g \red{&} Z \red{\}} \end{Alltt} \kaidan \vspace*{-1ex} \hfill \xymatrix{ U \ar@/_/[ddr]_y \ar@{.>}[dr]|{x\otimes y} \ar@/^/[drr]^x \\ & *+[F-:<4pt>]{X \times_Z Y} \ar[d]^q \ar[r]_p & X \ar[d]_f \\ & Y \ar[r]^g & Z }\!\!\!\! \end{z2col} \vspace*{-3ex} \section{いろいろな図式} {\bf 1}.曲がった軸をもつ矢印\\ 円弧と線分を組み合わせて,\textbf{迂回する矢印}を描くことができる.経路は\\ \quad\red{\tt '\MGNT{目標}} :目標までの線分\\ \quad\red{\tt `\MGNT{方向} \MGNT{目標}} :出発\MGNT{方向}から\MGNT{目標}に向かって$\frac14$回転する.\\ \qquad 最初の\MGNT{方向}指定がなければ,前回の方向からの回転となる(次項も). \\ \quad\red{\tt `\MGNT{方向} \MGNT{回転の向き} \MGNT{方向} \MGNT{目標}} :最初の\MGNT{方向}へ出発して直線的に移動し,後 \qquad の\MGNT{方向}で進むと\MGNT{目標}に到達できる地点で必要な回転をする.\\ \qquad 方向には \red{\tt r rd d ld l lu u ru} がある.\\ \qquad\MGNT{回転の向き}は,\red{\tt\string^} (反時計回り) また は \red{\tt\string_} (時計回り) \\ \quad 最後は,同じ向きの矢印を引いて,最終\MGNT{目標}に到達させる. \\ \quad 円弧の半径は 10pt であるが \red{\tt/\MGNT{長さ}} により以降変更可能. \begin{z2col} \begin{Alltt} \\xymatrix\{ \{\\circ\} \\ar \red{`r[d] `[rr] `^lu/3pt[rr] [rr]} &\{\\circ\}&\{\\circ\}\\\\ \{\\circ\}&\{\\circ\}&\{\\circ\}\\\\ \} \end{Alltt} \kaidan \vspace*{1ex} \hfill \xymatrix{ {\circ} \ar `r[d] `[rr] `^lu/3pt[rr] [rr] &{\circ} &{\circ}\\ {\circ}&{\circ}&{\circ}\\ } \end{z2col} \medskip \quad より一般に,始点と終点とを与えたとき,途中の\textbf{制御点}を指定したB\'ezier曲線 を使って\textbf{自由曲線}が描けます. \centerline{\tt\red{**\BK crv\{\MGNT{制御点} \string& \MGNT{制御点} \string& $\cdots$\}}} ・ 制御点がないときは,二点を結ぶ線分になります. ・ 矢印のときと同様 \red{\tt\string~*\{.\}} などを入れて\textbf{線種}指定できます.\\ \begin{z2col} \begin{Alltt} \\begin\{xy\} (0,10)*[o]+\{A\};(20,0)*[o]+\{B\}="B" \red{**\\crv\{\}} \red{**\\crv\{~*\{.\}}(10,15)\red{\}} \red{**\\crv\{}(10,20)\red{&}(20,20)\red{\}} ?>*\\dir\{>\}, "B" \red{**\\crv\{}(5,10)\red{&}(10,10)\red{&}(15,-10)\red{&}(20,-5)\red{\}} \\end\{xy\} \end{Alltt} \kaidan \vspace*{-1ex} \hfill \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} \end{z2col} \medskip {\bf 2}.座標軸の回転\hfill{\BACK\ \NEXT}\\ \MGNT{ベクトル\tt:} $X$軸の単位ベクトルを定める(回転+スケール変換を行う). \begin{z2col} \begin{Alltt} \\begin\{xy\} \{\\ar (8,0)\},  (-.5,\red{\\halfrootthree})\red{:} \{\\ar(0,0);(8,0)\},  (0,0),(-.5,\red{\\halfrootthree})\red{:} \\ar(0,0);(8,0) \\end\{xy\} \end{Alltt} \kaidan \vspace*{-.5ex} \hfill \begin{xy} {\ar (8,0)}, (-.5,\halfrootthree): {\ar(0,0);(8,0)}, (0,0),(-.5,\halfrootthree): \ar(0,0);(8,0) \end{xy} \end{z2col} \medskip %座標軸の単位ベクトルを指定することにより,自由なアフィン変換ができますが, 次に,{\tt \BK xymatrix} を使った$\frac\pi4$の整数倍の回転の例を挙げます.\\ \quad {\tt \BK xymatrix} の直後の指定で\\ \quad \red{\tt\ @}\MGNT{方向} :\MGNT{方向}に向けた回転をする (\red{\tt @r}\,:回転なし)\\ \quad \red{\tt\ @}\MGNT{\it add-op 長さ}:行と列の空きの設定 (\red{\tt@!}\,:行と列の空きを等しくする)\\ \quad \red{\tt@C}\MGNT{\it add-op 長さ}:列の空き (\red{\tt@C!}\,:列の空きを等しくする)\\ \quad \red{\tt@R}\MGNT{\it add-op 長さ}:行の空き (\red{\tt@R!}\,:行の空きを等しくする)\\ \quad \red{\tt@M}\MGNT{\it add-op 長さ}:要素のデフォルトの空き \begin{z2col} \begin{Alltt} \\xymatrix\red{@=0pt@M=0pt}\{X&Y\\\\Z&W\}\\qquad \\xymatrix\red{@dr@=0pt@M=0pt}\{X&Y\\\\Z&W\} \end{Alltt} \vspace*{-4ex} \begin{Alltt} \\xymatrix\red{@dr@C=4mm}\{ A \\ar[r]^a & B \\ar@\{.>\}[d]^b\\\\ C \\ar[u]^c & D \\ar@\{.>\}[l]^d \} \end{Alltt} \kaidan \vspace*{-.5ex} \hfill \xymatrix@=0pt@M=0pt{X&Y\\Z&W}\qquad \xymatrix@dr@=0pt@M=0pt{X&Y\\Z&W} \vspace*{-1ex} \hfill \xymatrix@dr@C=4mm{ A \ar[r]^a & B \ar@{.>}[d]^b\\ C \ar[u]^c & D \ar@{.>}[l]^d }\quad\phantom{.} \end{z2col} \medskip {\bf 3}.仕様と例\hfill{\BACK}\\[-4ex] \[\begin{xy} \ar@{=>} *++!D{\alpha_1} *\cir<4pt>{}; (10,0) *++!D{\alpha_2} *\cir<4pt>{} % \ar@{-} (20,0) *++!D{\alpha_1} *\cir<4pt>{}; (30,0) *++!D!R(0.4){\alpha_2} *\cir<4pt>{}="A", \ar@{-} "A";(35,8.61) *++!L{\alpha_3} *\cir<4pt>{} \ar@{-} "A";(35,-8.61) *++!L{\alpha_4} *\cir<4pt>{}, \ar@{-} "A";(35,-8.61) *++!L{\alpha_4} *\cir<4pt>{}, % \ar@{-} (50,0) *++!D{\alpha_1} *\cir<4pt>{}; (60,0) *++!D{\alpha_2} *\cir<4pt>{}="B" \ar@{-} "B";(70,0) *++!D{\alpha_3} *\cir<4pt>{}="C" \ar@{-} "C";(75,0) \ar@{.} (75,0);(80,0)^*!U{\cdots} \ar@{-} (80,0);(85,0) *++!D{\alpha_n} *\cir<4pt>{} \end{xy} \] \if\pdf \begin{verbatim} \begin{xy} \ar@{=>} *++!D{\alpha_1} *\cir<4pt>{}; (10,0) *++!D{\alpha_2} *\cir<4pt>{} \ar@{-} (20,0) *++!D{\alpha_1} *\cir<4pt>{}; (30,0) *++!D!R(0.4){\alpha_2} *\cir<4pt>{}="A", \ar@{-} "A";(35,8.61) *++!L{\alpha_3} *\cir<4pt>{} \ar@{-} "A";(35,-8.61) *++!L{\alpha_4} *\cir<4pt>{}, \ar@{-} "A";(35,-8.61) *++!L{\alpha_4} *\cir<4pt>{}, \ar@{-} (50,0) *++!D{\alpha_1} *\cir<4pt>{}; (60,0) *++!D{\alpha_2} *\cir<4pt>{}="B" \ar@{-} "B";(70,0) *++!D{\alpha_3} *\cir<4pt>{}="C" \ar@{-} "C";(75,0) \ar@{.} (75,0);(80,0)^*!U{\cdots} \ar@{-} (80,0);(85,0) *++!D{\alpha_n} *\cir<4pt>{} \end{xy} \end{verbatim} \else このDynkin図式の例( \keyin{\begin{xy} \ar@{=>} *++!D{\alpha_1} *\cir<4pt>{}; (10,0) *++!D{\alpha_2} *\cir<4pt>{} % \ar@{-} (20,0) *++!D{\alpha_1} *\cir<4pt>{}; (30,0) *++!D!R(0.4){\alpha_2} *\cir<4pt>{}="A", \ar@{-} "A";(35,8.61) *++!L{\alpha_3} *\cir<4pt>{} \ar@{-} "A";(35,-8.61) *++!L{\alpha_4} *\cir<4pt>{}, \ar@{-} "A";(35,-8.61) *++!L{\alpha_4} *\cir<4pt>{}, % \ar@{-} (50,0) *++!D{\alpha_1} *\cir<4pt>{}; (60,0) *++!D{\alpha_2} *\cir<4pt>{}="B" \ar@{-} "B";(70,0) *++!D{\alpha_3} *\cir<4pt>{}="C" \ar@{-} "C";(75,0) \ar@{.} (75,0);(80,0)^*!U{\cdots} \ar@{-} (80,0);(85,0) *++!D{\alpha_n} *\cir<4pt>{} \end{xy} }{ここ}をクリックすると,ソースがクリップボードにコピーされます) \fi では,以下の\textbf{円弧}を描くコマンドを使っています. \\ %\begin{verbatim} %\[\begin{xy} % \ar@{=>} *++!D{\alpha_1} *\cir<4pt>{}; % (10,0) *++!D{\alpha_2} *\cir<4pt>{} %% % \ar@{-} (20,0) *++!D{\alpha_1} *\cir<4pt>{}; % (30,0) *++!D!R(0.4){\alpha_2} *\cir<4pt>{}="A", % \ar@{-} "A";(35,8.61) *++!L{\alpha_3} *\cir<4pt>{} % \ar@{-} "A";(35,-8.61) *++!L{\alpha_4} *\cir<4pt>{}, % \ar@{-} "A";(35,-8.61) *++!L{\alpha_4} *\cir<4pt>{}, %% % \ar@{-} (50,0) *++!D{\alpha_1} *\cir<4pt>{}; % (60,0) *++!D{\alpha_2} *\cir<4pt>{}="B" % \ar@{-} "B";(70,0) *++!D{\alpha_3} *\cir<4pt>{}="C" % \ar@{-} "C";(75,0) \ar@{.} (75,0);(80,0)^*!U{\cdots} % \ar@{-} (80,0);(85,0) *++!D{\alpha_n} *\cir<4pt>{} %\end{xy} %\] %\end{verbatim} \quad \red{\tt \BK cir<\MGNT{半径}>\{\!\MGNT{方向} \MGNT{回転の向き} \MGNT{方向}\!\}} 最初の\MGNT{方向}で円周上を\MGNT{回転の向き}(\red{\tt\string^} は反時計回り, \red{\tt\string_} は時計回り)にスタートし,後の\MGNT{方向}まで円弧を 描きます.\red{\tt\{\ \}}の中を空として,これらを指定しない場合は円を描きます. \begin{z2col} \begin{Alltt} \\begin\{xy\} *\red{\\cir<5mm>\{l_d\}}, (10,0) *\red{\\cir<5mm>\{r^d\}}, (22,0) *+\{M\} *\red{\\cir\{dr_ur\}} \\end\{xy\} \end{Alltt} \kaidan \vspace*{.1ex} \hfill \begin{xy} *\cir<5mm>{l_d}, (10,0) *\cir<5mm>{r^d}, (22,0) *+{M} *\cir{dr_ur} \end{xy}\!\!\!\!\!\! \end{z2col} \medskip \quad \Xy-pic は {\TeX} のメモリーを大量に使うため,複雑な図式を扱うと {\tt TeX capacity exceeded} のエラーが発生することがあります. それが解消できない場合,より軽い \keyin{\usepackage[all,ps,dvisp]{xy} }{\quad{\tt\BK usepackage[all,ps,dvisp]\{xy\}}} としてDVIファイルを作成して下さい.その後 PS ファイルから EPS ファイル, あるいは PDF ファイルに変換({\tt Ghostscript}+{\tt dvipsk}+{\tt ps2pdf}な ど)することができます. \medskip \quad これまで \Xy-pic の基本的な機能をいくつか紹介してきましたが, その他にも,楕円や多角形,各種ダイアグラムや結び目などに関する 多くの描画機能を持っています. より詳しい仕様やこれらの機能については, \if\pdf dvioutに添付の \href{http://akagi.ms.u-tokyo.ac.jp/input9.pdf}{Help}, \else \href{file:input9.dvi}{添付のHelp}, \fi あるいはそこに挙げてある文献などを参照してください. \end{document}