![xy-pic 中的弯曲箭头](https://linux22.com/image/336208/xy-pic%20%E4%B8%AD%E7%9A%84%E5%BC%AF%E6%9B%B2%E7%AE%AD%E5%A4%B4.png)
这个问题几乎重复了使用 xy-pic 弯曲蛇,但我需要一些与那里提供的解决方案略有不同的东西。我花了一些时间试图弄清楚箭头弯曲在 XY-pic 中的工作原理,但我似乎不明白语法。
所以我有下面的图表:
\[ \xymatrix@M=1em{
& \ker d^\prime\ar@{>->}[d]\ar[r] & \ker d\ar@{>->}[d]\ar[r] & \ker d^{\prime\prime}\ar@{>->}[d]\ar[dddll] \\
& M^\prime\ar[r]\ar[d] & M\ar@{->>}[r]\ar[d] & M^{\prime\prime}\ar[r]\ar[d] & 0 \\
0\ar[r] & N^\prime\ar@{>->}[r]\ar@{->>}[d] & N\ar[r]\ar@{->>}[d] & N^{\prime\prime}\ar@{->>}[d] \\
& \coker d^\prime\ar[r] & \coker d\ar[r] & \coker d^{\prime\prime}} \]
我想弯曲对角箭头,使其看起来像我上面画的红色箭头:向下,穿过箭头 M'' -> 0,然后穿过三个垂直箭头,最后穿过箭头 0 -> N'。我希望它由直线段组成,角略圆。我很确定 XY-pic 的“弯曲”功能应该可以做到这一点,但我无法按照一些示例产生所需的结果。
我发现了另一个问题:如何绘制蛇形引理中连接同态的“蛇”形箭头?,接受的解决方案看起来几乎和我想要的一样,但是我不想使用 TikZ。我希望这里有人可以向我展示在这种情况下如何进行 XY-pic 弯曲。
谢谢你!
答案1
Kristoffer H. Rose 编写的 XY-pic 用户指南是一份方便(且简短)的文档,可在以下网址以“用户指南”形式获取https://www.ctan.org/pkg/xypic?lang=en。弯曲箭头是第 2.8 节,您能得到的最好结果如下:
\documentclass{article}
\usepackage[arrow,matrix]{xy}
\newcommand{\coker}{\mathrm{coker}~}
\begin{document}
\[
\xymatrix@M=1em{
& \ker d'\ar@{>->}[d]\ar[r] & \ker d\ar@{>->}[d]\ar[r] & \ker d''\ar@{>->}[d]
\ar`r[dr]`[dlll]`[dddlll]`[dddll][dddll] %\ar[dddll]
\\
& M'\ar[r]\ar[d] & M\ar@{->>}[r]\ar[d] & M''\ar[r]\ar[d] & 0 \\
0\ar[r] & N'\ar@{>->}[r]\ar@{->>}[d] & N\ar[r]\ar@{->>}[d] & N''\ar@{->>}[d] \\
& \coker d'\ar[r] & \coker d\ar[r] & \coker d''}
\]
\end{document}
(我已将其替换\primeskip
为'
),其变为:
让我们分解一下感兴趣的命令:
\ar % an arrow
`r % which starts by going to the right before curving to go toward
[dr] % the entry one down and one to the right
` % before bending to go toward
[dlll] % the entry one down and three to the left
` % before bending to go toward
[dddlll] % the entry three down and three to the left
` % before bending to go toward
[dddll] % the entry three down and two to the left
[dddll] % where the arrow ends
为了更接近您想要的结果,我们可以借鉴第 2.7 节中的技巧,定义一些幻影目标。我们将在箭头需要弯曲的地方添加额外的列和行。为了使间距正确,我们还将在其他地方添加额外的列和行。因此,我们将有 9 列和 7 行,而不是 5 列和 4 行(但其他列/行不会有条目;其中一些只是箭头弯曲的目标)。这会将东西分开太多,因此我们缩小了尺寸(进行了大量猜测和检查以匹配原始尺寸)。最后,[ddddddlllll]
我们将使用相对值(参见第 2.5 节),而不是目标值[6,-5]
。这样我们就得到了:
\documentclass{article}
\usepackage[arrow,matrix]{xy}
\newcommand{\coker}{\mathrm{coker}~}
\begin{document}
\[
\xymatrix@C=.3em@R=.7ex@M=1em{
&& \ker d'\ar@{>->}[dd]\ar[rr] && \ker d\ar@{>->}[dd]\ar[rr] && \ker d''\ar@{>->}[dd]
\ar`r[3,1]`[3,-5]`[6,-5]`[6,-4][6,-4]
&& \\\\
&& M'\ar[rr]\ar[dd] && M\ar@{->>}[rr]\ar[dd] && M''\ar[rr]\ar[dd] && 0 \\
&&&&&&&& \\ % needs enough columns to have the target we want
0\ar[rr] && N'\ar@{>->}[rr]\ar@{->>}[dd] && N\ar[rr]\ar@{->>}[dd] && N''\ar@{->>}[dd] \\\\
&& \coker d'\ar[rr] && \coker d\ar[rr] && \coker d''}
\]
\end{document}
和