不管是不是万圣节,我都在尝试通过 tikzcd 做出类似下面的“蜘蛛”网图,大致是这样的(当然我只是画的比较丑的版本,箭头要细一点) 但迄今为止我都失败了: 我失败了,因为我想达到以下标准:
ai 和 aii 在同一垂直轴上对齐,
b 本身位于其垂直轴上
ci、ciii 和 cii 在同一垂直轴上对齐,
d 本身位于其垂直轴上
edi 和 eiii 在同一垂直轴上对齐,
f 本身位于其垂直轴上
相同首字母相邻纵轴之间的水平距离相同(即纵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= ...,""]
如果您愿意)
提前感谢这里的万圣节超级英雄专家!!:-)
答案1
我将使用matrix of math nodes
(当前
蒂克兹手动)。这为您提供了一种在网格中布局b
、、d
等的简单方法,以便您自动获得垂直对齐。一旦您将所有顶点都放置到位,您就可以使用以下语句绘制多条边:f
\foreach
完整代码如下:
\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}