このブログの更新は X(旧Twitter)アカウント @m_hiyama で通知されます。
Follow @m_hiyama

ご連絡は上記 X アカウントに DM にてお願いします。

参照用 記事

XyJax: Xyマトリックスを使わない可換図式描画

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}


\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}

この例はマトリックス・レイアウト〈グリッド・レイアウト〉ですが、変則的なレイアウトで描きたいときは座標直接指定になるでしょう。座標直接指定は手間がかかり、やりたいとは思いませんが、“最後の手段”として利用できます。