![怎样才能让弯箭折断?](https://linux22.com/image/290075/%E6%80%8E%E6%A0%B7%E6%89%8D%E8%83%BD%E8%AE%A9%E5%BC%AF%E7%AE%AD%E6%8A%98%E6%96%AD%EF%BC%9F.png)
我有以下图表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}