
이것은 질문에 대한 후속 조치입니다.TikZ에서 노드가 잘못 연결됨 .
해당 질문에 허용된 답변에서 제안한 접근 방식을 사용하여 원래 코드에서 논리를 사용했을 때 출력이 동일하지 않았습니다.
나는 다음과 같은 것을 얻습니다 :
암호:
\documentclass{article}
\usepackage{tikz}
\tikzset{square/.style = {
shape = rectangle,
fill = gray!50,
draw = black,
thick
}}
\tikzset{circle/.style = {
shape = circle,
fill = blue!20,
draw = blue,
thick
}}
\tikzset{help lines/.style=very thin}
\tikzset{My Grid/.style={help lines,color=blue!50}}
\begin{document}
\begin{tikzpicture}
%\draw[My Grid] (-5,-5) grid (15,15);
\draw[square] (-4,4)rectangle node (r1) {r1} (-3,5);
\draw[square] (1,4) rectangle node (r2) {r2} (2,5);
\draw[square] (-3,0) rectangle node (r3) {r3} (-4,1);
\draw[square] (1,0) rectangle node (r4) {r4} (2,1);
\draw[circle] (-1,2.5) circle [radius=0.5cm] node[above=2ex,red] (s) {$s \leq 3$};
\draw[circle] (-1,4.5) circle [radius=0.5cm] node (s1) {s1};
\draw[circle] (-1,6.5) circle [radius=0.5cm] node (s2) {};
\draw[fill=black] (-1,6.5) circle [radius=0.1cm] node (s3) {};
\draw[circle] (-1,0.5) circle [radius=0.5cm] node (s4) {s4};
\draw[circle] (-1,-1.5) circle [radius=0.5cm] node (s5) {};
\draw[fill=black] (-1,-1.5) circle [radius=0.1cm];
\draw[->] (r1) -- (s1);
\end{tikzpicture}
\end{document}
답변1
요소를 \node
. 이 방법으로 요소에 앵커 포인트를 정의할 수 있습니다. 코드의 일부를 사용하여 이 방법을 표시하면 다음과 같습니다.
\documentclass{article}
\usepackage{tikz}
\tikzset{square/.style = {
shape = rectangle,
fill = gray!50,
draw = black,
minimum height=1cm,
minimum width=1cm,
thick
}}
\tikzset{circle/.style = {
shape = circle,
fill = blue!20,
draw = blue,
minimum size=1cm,
inner sep=0pt,
thick
}}
\tikzset{help lines/.style=very thin}
\tikzset{My Grid/.style={help lines,color=blue!50}}
\begin{document}
\begin{tikzpicture}
%\draw[My Grid] (-5,-5) grid (15,15);
\node (r1) at (-3.5,4.5) [square] {r1};
\node (s1)at (-1,4.5) [circle]{s1};
\draw[->] (r1) -- (s1);
\end{tikzpicture}
\hfill
\begin{tikzpicture}[xshift=2cm]
%\draw[My Grid] (-5,-5) grid (15,15);
\node (r1) at (-3.5,4.5) [square] {r1};
\node (s1)at (-1,4.5) [circle]{s1};
\draw[->] (r1.east) -- (s1.west);
\end{tikzpicture}
\hfill
\begin{tikzpicture}[xshift=2cm]
%\draw[My Grid] (-5,-5) grid (15,15);
\node (r1) at (-3.5,4.5) [square] {r1};
\node (s1)at (-1,4.5) [circle]{s1};
\draw[->] (r1.south east) -- (s1.180);
\draw[->] (r1.north east) -- (s1.north);
\end{tikzpicture}
\end{document}
답변2
생성하려는 그래픽은 튜토리얼에서 생성한 것과 정확히 동일합니다.매뉴얼에 있는 Hagen용 Petri-Net49~60페이지의 3.1.1.
나는 당신이 그것을 읽어 보도록 권유합니다. 그것은 매우 잘 쓰여졌고 매우 완벽합니다.
다음은 52페이지에 제공된 매뉴얼 그림의 전체 코드입니다.
\documentclass[tikz,border=5mm]{standalone}
\usetikzlibrary{arrows,decorations.pathmorphing,backgrounds,positioning,fit,petri}
\begin{document}
\begin{tikzpicture}[place/.style={circle,draw=blue!50,fill=blue!20,thick,
inner sep=0pt,minimum size=6mm},
transition/.style={rectangle,draw=black!50,fill=black!20,thick,
inner sep=0pt,minimum size=4mm}]
\node[place] (waiting) {};
\node[place] (critical) [below=of waiting] {};
\node[place] (semaphore) [below=of critical] {};
\node[transition] (leave critical) [right=of critical] {};
\node[transition] (enter critical) [left=of critical] {};
\draw [->] (enter critical.east) -- (critical.west);
\draw [->] (waiting.west) .. controls +(left:5mm) and +(up:5mm)
.. (enter critical.north);
\end{tikzpicture}
\end{document}
다음은 튜토리얼이 끝나면 만들어진 최종 그림입니다.