Tikzpicture:从节点到弯曲边缘绘制边缘

Tikzpicture:从节点到弯曲边缘绘制边缘

我有一个论证框架,其中有对攻击的攻击。所以基本上我想画的是具有边的节点和攻击这些边的边。

我目前得到的:

\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

我认为一个相对省事的解决方案是沿途放置任意坐标

  \path[every node/.style={font=\sffamily\small}]
    (A) edge [bend right] coordinate [pos=0.2] (top) (B) 
    (B) edge [bend right] (A)
    ;
   \path [every node/.style={font=\sffamily\small}] (C) edge (top);

在此处输入图片描述

答案2

仅供比较,这里有一个luamplib+元帖子选择。

在此处输入图片描述

关键构造是沿路径point t of p给出(x,y)时间的对。tp

\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}

相关内容