tikz-cd:蛇形箭头的对齐和标签放置

tikz-cd:蛇形箭头的对齐和标签放置

请考虑以下示例:

\documentclass[tikz, border=1cm]{standalone}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
    {C_{n+1}'} & {C_{n+1}} & {C_{n+1}''} \\
    {C_n'} & {C_n} & {C_n''} \\
    {C_{n-1}'} & {C_{n-1}} & {C_{n-1}''}
    \arrow[from=1-1, to=1-2]
    \arrow[from=1-2, to=1-3]
    \arrow[from=2-1, to=2-2]
    \arrow[from=2-2, to=2-3]
    \arrow[from=3-1, to=3-2]
    \arrow[from=3-2, to=3-3]
    \arrow[from=1-2, to=2-2, phantom, ""{coordinate, name=Z1}]
    \arrow[from=1-3, to=2-1, "\delta"', rounded corners,
             to path={ -- ([xshift=2ex]\tikztostart.east)
                       |- (Z1) [near end]\tikztonodes
                       -| ([xshift=-2ex]\tikztotarget.west)
                       -- (\tikztotarget)}]
    \arrow[from=2-2, to=3-2, phantom, ""{coordinate, name=Z2}]
    \arrow[from=2-3, to=3-1, "\delta"', rounded corners,
             to path={ -- ([xshift=2ex]\tikztostart.east)
                       |- (Z2) [near end]\tikztonodes
                       -| ([xshift=-2ex]\tikztotarget.west)
                       -- (\tikztotarget)}]
\end{tikzcd}
\end{document}

结果如下:

在此处输入图片描述

我有两个问题:

  1. 如何让两条蛇形箭头水平对齐?
  2. 如何将标签放置\delta在箭头的右侧?

提前感谢您的建议!

1-1(另外,当我第一次2-1颤动,因为这样可以将所有元素写成表格,然后再写箭头,这大大提高了代码的可读性。但是,的文档中似乎没有提到这tikz-cd一点,还是我遗漏了什么?)

答案1

由于节点内容的宽度不同,请使用节点的中心进行对齐。您需要增加来进行xshift补偿。要放置\delta,请使用\pos=.25'从描述中删除。

在此处输入图片描述

\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
    {C_{n+1}'} & {C_{n+1}} & {C_{n+1}''} \\
    {C_n'} & {C_n} & {C_n''} \\
    {C_{n-1}'} & {C_{n-1}} & {C_{n-1}''}
    \arrow[from=1-1, to=1-2]
    \arrow[from=1-2, to=1-3]
    \arrow[from=2-1, to=2-2]
    \arrow[from=2-2, to=2-3]
    \arrow[from=3-1, to=3-2]
    \arrow[from=3-2, to=3-3]
    \arrow[from=1-2, to=2-2, phantom, ""{coordinate, name=Z1}]
    \arrow[from=1-3, to=2-1, "\delta", rounded corners,
             to path={ -- ([xshift=6ex]\tikztostart.center)
                       |- (Z1) [pos=.25]\tikztonodes
                       -| ([xshift=-6ex]\tikztotarget.center)
                       -- (\tikztotarget)}]
    \arrow[from=2-2, to=3-2, phantom, ""{coordinate, name=Z2}]
    \arrow[from=2-3, to=3-1, "\delta", rounded corners,
             to path={ -- ([xshift=6ex]\tikztostart.center)
                       |- (Z2) [pos=.25]\tikztonodes
                       -| ([xshift=-6ex]\tikztotarget.center)
                       -- (\tikztotarget)}]
\end{tikzcd}
\end{document}

答案2

回答这两个问题。

  1. 每个单元格都需要相同的宽度:
\begin{tikzcd}[
    every cell/.style={
        minimum width=.85cm
        % or: text width=.85cm
    }
]
    % your code
\end{tikzcd}
  1. 您必须替换near end为:
near start, right=.35cm

相关内容