在 tikz-cd 中绘制箭头组成的“蜘蛛”网

在 tikz-cd 中绘制箭头组成的“蜘蛛”网

不管是不是万圣节,我都在尝试通过 tikzcd 做出类似下面的“蜘蛛”网图,大致是这样的(当然我只是画的比较丑的版本,箭头要细一点) enter image description here 但迄今为止我都失败了: enter image description here 我失败了,因为我想达到以下标准:

  1. ai 和 aii 在同一垂直轴上对齐,

  2. b 本身位于其垂直轴上

  3. ci、ciii 和 cii 在同一垂直轴上对齐,

  4. d 本身位于其垂直轴上

  5. edi 和 eiii 在同一垂直轴上对齐,

  6. f 本身位于其垂直轴上

  7. 相同首字母相邻纵轴之间的水平距离相同(即纵a轴、纵b轴、纵c轴、纵d轴、纵e轴、纵f轴之间的距离相同)。

以下是我的最小工作模板和我的试验:

\begin{document}

\usepackage[all,cmtip]{xy}
\usepackage{tikz-cd}

\begin{center}
\begin{tikzcd}
BPin^-\ar[d]\\
BO\ar[r,"w_1^2+w_2"] &K(\Z/2,2)
\end{tikzcd}
\end{center}
\end{document}

您能否给我提供一份指南和一个可能的样本?

我很乐意使用\usepackage{tikz-cd}\usepackage[all,cmtip]{xy}。您也可以使用弯曲(例如\ar[uur,bend left= ...,""]如果您愿意)

提前感谢这里的万圣节超级英雄专家!!:-)

enter image description hereenter image description here

答案1

我将使用matrix of math nodes(当前 蒂克兹手动)。这为您提供了一种在网格中布局b、、d等的简单方法,以便您自动获得垂直对齐。一旦您将所有顶点都放置到位,您就可以使用以下语句绘制多条边:f\foreach

enter image description here

完整代码如下:

\documentclass[tikz, border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}

    \begin{tikzpicture}[>=stealth,->,shorten >=2pt,looseness=.5,auto]
      \matrix (M)[matrix of math nodes,row sep=1cm,column sep=16mm]{
          & b &    & d &    & f\\
        ai&   & ci &   &cdi &\\
          &   &ciii&   &eiii\\
       aii&   &cii\\
       };
       \foreach \a/\b in {1-2/1-4, 1-4/1-6, 2-1/2-3, 2-3/2-5, 
                          3-3/3-5, 4-1/4-3, 2-1/1-2, 2-3/1-4, 
                          2-5/1-6, 3-3/2-5, 3-5/1-6, 4-1/3-3, 
                          4-3/3-5, 2-1/3-3, 3-3/1-4, 4-3/1-4} {
          \draw[thick,->](M-\a)--(M-\b);
       }
    \end{tikzpicture}

\end{document}

后面(M)\matrix意思是节点在非空单元格中有标签(M-1-2)(M-1-4)(使用选项,nodes in empty cells您也可以在空单元格中有节点)。您可以将其更改(M)为任何您喜欢的内容。

您可以根据自己的喜好来调整间距row sep=1cm,column sep=16mm

答案2

使用 来做这件事非常简单tikz-cd

您还可以选择您喜欢的箭头:

\tikzcdset{arrow style=tikz, diagrams={>=...}}

并微调箭头位置,使用:

end anchor={[shift={(...,...)}]}

这是我的 MWE:

\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{tikz-cd}
\tikzcdset{arrow style=tikz, diagrams={>=Latex}}% arrow tip

\begin{document}
    \begin{tikzcd}
         & b\ar[rr] &  & d\ar[rr] &  & f\\
        ai \ar[ur]\ar[rr]\ar[drr] &  & ci\ar[ur]\ar[rr] &  & edi\ar[ur]\\
         &  & ciii\ar[rru]\ar[rr]\ar[ruu] &  & eiii\ar[uur]\\
        aii\ar[uuur]\ar[urr]\ar[rr] &  & cii\ar[rru]\ar[uuur,end anchor={[shift={(2pt,-1pt)}]} % fine tuning of the arrow position
        ]
    \end{tikzcd} 
\end{document}

enter image description here

相关内容