我正在尝试绘制如下图所示的网络。我可以使用标记、节点和边绘制类似的网络,但问题是我只能通过边连接节点。
我需要的是通过边连接节点内的标记如下图所示:(本例中节点R有两个Token,其中一个连接到节点A,另一个连接到节点B。)
是否可以使用 Tikz 实现这一点?
这是我迄今为止尝试过的:
\begin{tikzpicture}[node distance=1.5cm]
\begin{scope}
\node [place,tokens=1](0)[label=below:$A$]{};
\node [place,tokens=2] (1) [right of=0,label=below:$R$] {} edge (0);
\node [place,tokens=1] (2) [right of=1,label=below:$B$] {} edge (1);
\end{scope}
\end{tikzpicture}
答案1
众多可能的方法之一:
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning, fit}
\begin{document}
\begin{tikzpicture}[
dot/.style={fill,circle, minimum size=5pt,inner sep=0,node contents={}},
circ/.style={draw, circle, minimum size=10pt,inner sep=0pt, node contents={}}
]
\node [dot, name=n1];
\node [dot, name=n2, right=of n1];
\node [dot, name=n3, right=5mm of n2];
\node [dot, name=n4, right=of n3];
\draw (n1) -- (n2) (n3) -- (n4);
\node [circ,fit=(n2)(n3), label={[name=R]below:R}];
\node [circ, left, at=(n1.east), name=A];
\node [circ, right, at=(n4.west), name=B];
\node at (A |- R) {A};
\node at (B |- R) {B};
\end{tikzpicture}
\end{document}
答案2
只需使用arrows.meta
库,Circle
即可根据需要使用和自定义笔尖,例如,>={Circle[length=5pt]}, shorten >= -5pt, shorten <= -5pt
将使用5pt
实心圆,并将线的两边延长相同的量。如果您希望笔尖从内部接触圆,只需\pgflinewidth
从上面减去另一个即可。
\documentclass[tikz,12pt]{standalone}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}[>={Circle[length=5pt]}, shorten >= -5pt-\pgflinewidth, shorten <= -5pt-\pgflinewidth]
\node(a) at (0,0) [draw,circle,minimum size=.5cm]{};
\node(r) at (2,0) [draw,circle,minimum size=1cm]{};
\node(b) at (4,0) [draw,circle,minimum size=.5cm]{};
\node at ([yshift=-2em]a) {A};
\node at ([yshift=-2em]r) {R};
\node at ([yshift=-2em]b) {B};
\draw[<->] (a) -- (r);
\draw[<->] (r) -- (b);
\end{tikzpicture}
\end{document