我正在尝试使用 tikz 绘制箭筒,我需要在两个节点之间绘制 =-> 和 -=> 形式的箭头。最好的方法是什么?任何帮助都值得感激。
答案1
这接近你想要的吗?
\documentclass[tikz, border=5pt]{standalone}
\usetikzlibrary{decorations.pathreplacing, arrows}
\tikzset{
-z>/.style={
decoration={
show path construction,
lineto code={
\path (\tikzinputsegmentfirst) -- (\tikzinputsegmentlast) coordinate[pos=#1] (mid);
\draw (\tikzinputsegmentfirst) -- (mid);
\draw[double, -implies] (mid) -- (\tikzinputsegmentlast); }
},decorate
}, -z>/.default=.5,
z->/.style={
decoration={
show path construction,
lineto code={
\path (\tikzinputsegmentfirst) -- (\tikzinputsegmentlast) coordinate[pos=#1] (mid);
\draw[double] (\tikzinputsegmentfirst) -- (mid);
\draw[->] (mid) -- (\tikzinputsegmentlast);
}
},decorate
}, z->/.default=.5,
}
\begin{document}
\begin{tikzpicture}
\draw [-z>] (0,0) -- (1,0);
\begin{scope}[red, thick]
\draw [z->=.3] (0,-.2) -- (1,-.4);
\end{scope}
\end{tikzpicture}
\end{document}
我认为您不能将其=
作为样式名称的一部分,因此我用 表示了双线z
。请注意,两种样式的箭头并不完全相同,尽管这可能可以修复。出于某种原因,命令上的样式\draw
无法可靠地传递给装饰,但如果您需要进一步设置样式,则可以使用范围。
答案2
您可以做类似的事情,使用edge
带有箭头尖绘制第二条线。
\documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
\draw (0,0) -- (1,0) edge [double, -{Implies}] ++(10pt,0);
\draw [double] (0,-.25) -- (1,-.25) edge [double=none, ->] ++(10pt,0);
\end{tikzpicture}
\end{document}
但我并不确信我明白你想做什么。
答案3
您可以使用midway
键(或pos
键)coordinate
或node
找到边的中点,然后绘制两个半边,或者在单半边的顶部重新绘制双半边。以下是执行此操作的一些基本示例。(请注意,cfr 使用 arrows.meta tikz 库会产生更好的箭头。)
\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[black!10] (-1,0) grid (3,3);
\path (0,0) node (A)[draw,circle] {A} -- (3,1) node[draw,circle](B){B} (A)--(B) coordinate[midway](mAB);
\path (A) -- (-1,2) node[draw,circle] (C) {C} (A)--(C) coordinate[pos=0.5](mAC);
\draw[double,line cap=round] (A)--(mAB); \draw[->] (mAB)--(B);
\draw (A)--(mAC); \draw[double,->] (mAC)--(C);
\draw[thick] (3,3)coordinate(A)--(1,1)coordinate(Z) coordinate[midway](M); \draw[double,->] (M)--(Z);
\end{tikzpicture}
\end{document}