我有一个论证框架,其中有对攻击的攻击。所以基本上我想画的是具有边的节点和攻击这些边的边。
我目前得到的:
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2cm,
thick,main node/.style={circle,draw,font=\sffamily\Large\bfseries}]
\node[main node] (A) {A};
\node[main node] (B) [left of=A] {B};
\node[main node] (C) [above left of=A] {C};
\path[every node/.style={font=\sffamily\small}]
(A) edge [bend right] node [left] {} (B)
(B) edge [bend right] node [left] {} (A)
;
\path [every node/.style={font=\sffamily\small}]
(C) edge node [left] {} ($ (A) !.5! (B) $)
;
\end{tikzpicture}
得出的结果是这样的:
但正如您所想象的,我希望从 C→(A→B)开始的箭头在弯曲边缘的正确位置结束。当然我可以删除该bend right
选项,但这会导致图表不像预期的那样可读。
有什么通用方法可以解决这个问题吗?
答案1
答案2
仅供比较,这里有一个luamplib
+元帖子选择。
关键构造是沿路径point t of p
给出(x,y)
时间的对。t
p
\documentclass[border=2mm]{standalone}
\usepackage{fontspec}
\setmainfont{Latin Modern Sans}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
path A, B, C, a[];
A = fullcircle scaled 16 shifted 20 right rotated -30;
B = A rotated -120;
C = B rotated -140;
a1 = center A .. { dir 220 } center B cutbefore A cutafter B;
a2 = center B .. { dir 40 } center A cutbefore B cutafter A;
a3 = center C .. point 0.5 of a1 cutbefore C;
forsuffixes $=A,B,C: draw $; label("\textbf{" & str $ & "}", center $); endfor
interim ahangle := 32;
forsuffixes $=1,2,3: drawarrow a$; endfor
endfig;
\end{mplibcode}
\end{document}