Как сломать изогнутую стрелу?

Как сломать изогнутую стрелу?

У меня есть следующая диаграмма xypic:

\documentclass{article}
\usepackage{amsmath,amsthm}
\usepackage[all,cmtip,2cell]{xy}

\begin{document}

\[\xymatrix{
& K\Omega M \ar[rr] \ar[ld]_(.4){K\Omega F} \ar@{.>}'[d][dd]_-\simeq  &&  K\Delta M \ar[rr] \ar[ld]  && Kq\Delta M \ar[ld]  \\
K\Omega N \ar[rr] \ar@{.>}[dd]_-\simeq  &&  K\Delta N \ar[rr]  &&  Kq\Delta N  \\
& \Omega Kq\Delta M \ar@/_2pc/[rruu] \ar[ld]_-{\Omega Kq\Delta F} & \\
\Omega Kq\Delta N \ar@/_2pc/[rruu]
}\]

\end{document}

Это выглядит так:

введите описание изображения здесь

Изогнутая стрелка "на заднем плане" должна быть сломана дважды, каждый раз, когда она пересекает другую стрелку, чтобы создать впечатление, что она действительно находится на заднем плане. Как мне этого добиться?

решение1

Я не знаю, можно ли это сделать с помощью xypic, но просто для справки (и ради развлечения) я сделал это с помощью Tikz.

В этом случае фокус в том, чтобы нарисовать линию, которая находится «спереди», дважды. Первый раз рисуем ее белой и очень толстой, а второй раз — черной и обычной ширины.

Обратите внимание, что в TikZ вы сначала рисуете матрицу узлов, используя синтаксис, похожий на xy-pic, а затем рисуете все соединения, используя в качестве координат имена узлов матрицы, которые имеют общий вид (M-row-column), и маркируете необходимые соединения с помощью node.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\matrix[matrix of math nodes, row sep=1cm, column sep=0.5cm] (M) {
   & K\Omega M  &&  K\Delta M  && Kq\Delta M   \\
K\Omega N  &&  K\Delta N  &&  Kq\Delta N  \\
   & \Omega Kq\Delta M  & \\
\Omega Kq\Delta N \\
};
\draw[->] (M-1-2) -- (M-2-1) 
   node[midway, above left] {\scriptsize $K\Omega F$};
\draw[->,dotted] (M-2-1) -- (M-4-1)
   node[midway, left] {\scriptsize $\simeq$};
\draw[->] (M-3-2) -- (M-4-1)
   node[midway, above, xshift=-1em] {\scriptsize $\Omega Kq\Delta F$};
\draw[->, dotted] (M-1-2) -- (M-3-2)
   node[pos=0.7, left] {\scriptsize $\simeq$};
\draw[->] (M-1-2) -- (M-1-4);
\draw[->] (M-1-4) -- (M-1-6);
\draw[->] (M-3-2) to[out=20, in=-110] (M-1-4);
\draw[white, line width=1ex] (M-2-1) -- (M-2-3);
\draw[->] (M-2-1) -- (M-2-3);
\draw[white, line width=1ex] (M-2-3) -- (M-2-5);
\draw[->] (M-2-3) -- (M-2-5);
\draw[white, line width=.5ex] (M-4-1) to[out=20, in=-110] (M-2-3);
\draw[->] (M-4-1) to[out=20, in=-110] (M-2-3);
\draw[->] (M-1-4) -- (M-2-3);
\draw[->] (M-1-6) -- (M-2-5);

\end{tikzpicture}
\end{document}

Результат:

Результат

решение2

Это все еще не xypic, но синтаксис tikz-cdочень похож на него. Может быть, вы можете перейти на этот пакет для всей вашей диаграммы. Я бы рекомендовал использовать , tikz-cdтак как он дает вам гораздо больше возможностей.

% arara: pdflatex

\documentclass{article}
\usepackage{tikz-cd}

\begin{document}
\[
\begin{tikzcd}
& K\Omega M \ar{rr} \ar[swap, "K\Omega F"]{dl} \ar[dotted, near end, swap, "\simeq"]{dd}  &&  K\Delta M \ar{rr} \ar{dl} \ar[bend left, <-]{ddll}  && Kq\Delta M \ar{dl}  \\
K\Omega N \ar[crossing over]{rr} \ar[dotted, swap, "\simeq"]{dd} & &  K\Delta N \ar[crossing over]{rr}  &&  Kq\Delta N  \\
& \Omega Kq\Delta M \ar[swap, near start, "\Omega Kq\Delta F"]{dl} & \\
\Omega Kq\Delta N \ar[crossing over, bend right]{uurr}
\end{tikzcd}
\]
\end{document}

введите описание изображения здесь

Связанный контент