答案1
我建议你使用tikz-cd
包(基于 TikZ 构建)使图表的创建变得容易;使用空标签,您可以分配名称,然后可以使用这些名称来绘制“内部”箭头;弯曲箭头内的弯曲箭头内的弯曲箭头的一个小例子:
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}[column sep=1.5cm]
A
\arrow[r, out=90,in=90,looseness=2.4,"f",""{name=p, below,}]
\arrow[r, bend left=40, ""{name=q, above,}]
\arrow[r, bend left=40, ""{name=v, below,}]
\arrow[r, bend right=40,""{name=s, above,}]
\arrow[r, bend right=40,""{name=w, below,}]
\arrow[r, out=-90,in=-90,looseness=2.4,swap,"g",""{name=t, above,}]
\arrow[from=p, to=q]
\arrow[from=v,to=s]
\arrow[from=w,to=t]
& B
\arrow[r,"h"]
& C
\arrow[r, out=90,in=90,looseness=1.4,"j", ""{name=L, below,}]
\arrow[r, out=-90,in=-90,looseness=1.4,swap,"k",""{name=M, above}]
\arrow[from=L,to=M,bend right=60,""{name=N, right}]
\arrow[from=L,to=M,bend left=60,""{name=P, left}]
\arrow[from=N,to=P,bend left=40]
\arrow[from=N,to=P,bend right=40]
& D
\end{tikzcd}
\end{document}
结果:
并重现问题编辑后上传的图表:
\documentclass{article}
\usepackage{xargs}
\usepackage{tikz-cd}
\usetikzlibrary{arrows.meta}
\newlength{\myline}% line thickness
\setlength{\myline}{1pt}
\newcommandx*{\triplearrow}[4][1=0, 2=1]{% #1 = shorten left (optional), #2 = shorten right (optionsl),
% #3 = draw options (must contain arrow type), #4 = path
\draw[line width=\myline,double distance=3\myline,#3] #4;
\draw[line width=\myline,shorten <=#1\myline,shorten >=#2\myline,#3] #4;
}
\begin{document}
\begin{tikzcd}[
column sep=1.5cm,
execute at end picture={\triplearrow{arrows={-Implies}}{(N) -- (P)}},
every node/.append style={draw,fill}
]
\bullet
\arrow[r, out=90,in=90,looseness=1.4, ""{name=L, below,}]
\arrow[r, out=-90,in=-90,looseness=1.4,swap,""{name=M, above}]
\arrow[Rightarrow,from=L,to=M,bend right=60,""{name=N, right}]
\arrow[Rightarrow,from=L,to=M,bend left=60,""{name=P, left}]
&
\bullet
\end{tikzcd}
\end{document}
结果:
对于三重蕴涵箭头,我使用了约翰·科米洛的代码his answer
到tikz 中的自定义箭杆。