「XyJaxの基本的な使い方」で紹介した\xymatrix
コマンドは、自動でレイアウトしてくれるのでとても便利です。が、\xymatrix
を使わずに、手動で座標指定をしてレイアウトすることも可能です。Xy-picの基本描画命令と\ar
コマンドを使います。
\begin{xy} % markers % (0, 0)*+[red]{+}; (60, 0)*+[red]{+}; (0, 30)*+[red]{+}; (60, 30)*+[red]{+}; % vertices % (0, 15)*++{\bullet}="left"; (15, 30)*+{A}="A"; (45, 30)*+{B}="B"; (15, 0)*+{C}="C"; (45, 0)*+{D}="D"; (60, 15)*++{\bullet}="right"; % arrows % {\ar@{->>}@/_/ "A";"left"}; {\ar@{>->}@/_/ "left";"C"}; {\ar "A";"B"}; {\ar "A";"C"}; {\ar "B";"D"}; {\ar "C";"D"}; {\ar@{->>}@/^/ "B";"right"}; {\ar@{>->}@/^/ "right";"D"}; % commutativity % (7, 15)*{\circlearrowleft}; (53, 15)*{\circlearrowright}; (30, 15)*{\circlearrowright}; \end{xy}
この例はマトリックス・レイアウト〈グリッド・レイアウト〉ですが、変則的なレイアウトで描きたいときは座標直接指定になるでしょう。座標直接指定は手間がかかり、やりたいとは思いませんが、“最後の手段”として利用できます。