xy-pic 中的弯曲箭头

xy-pic 中的弯曲箭头

这个问题几乎重复了使用 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}

最终图表

相关内容