【TikZ簡単学習(その2):基本描画】Latex上での描画マクロパッケージ

その上

複数のノードを描画する

  • 方法 1:複数のノードを描画するために
    使用します\path A node[attr]{info}。ノードは「パス」とは何の関係もありません。
\documentclass{
    
    article}
\usepackage{
    
    tikz}
\begin{
    
    document}
\begin{
    
    tikzpicture}
	\path 	( 0,2) node [shape=circle,draw] {
    
    }
			( 0,1) node [shape=circle,draw] {
    
    }
			( 0,0) node [shape=circle,draw] {
    
    }
			( 1,1) node [shape=rectangle,draw] {
    
    }
			(-1,1) node [shape=rectangle,draw] {
    
    };
\end{
    
    tikzpicture}
\end{
    
    document}

ここに画像の説明を挿入

  • 方法 2:ここに追加する必要がある の省略
    \nodeです。つまり、前述したように、意味は であり、描画の意味です。ここで次のように省略できます\path nodeat
    \node at A [attr]{info};
    [draw][shape=circle][circle]
\documentclass{
    
    article}
\usepackage{
    
    tikz}
\begin{
    
    document}
\begin{
    
    tikzpicture}
	\node at ( 0,2) [circle,draw] {
    
    };
	\node at ( 0,1) [circle,draw] {
    
    };
	\node at ( 0,0) [circle,draw] {
    
    };
	\node at ( 1,1) [rectangle,draw] {
    
    };
	\node at (-1,1) [rectangle,draw] {
    
    };
\end{
    
    tikzpicture}
\end{
    
    document}

ノードに統一スタイルを追加する

  • ノードにはテキストがありません。なぜノードにはまだサイズがあるのでしょうか? TikZはテキストの周囲にスペースを自動的に追加するためinner sep
    、 を変更して[inner sep = 0pt]そのような内容を変更できます。
    ただし、ノードが適切に表示されるようにするには、最小サイズを設定してください。[minumun size = 6mm]
  • 次に、統一されたスタイルを設定することです[XXX/.style={……}]
\documentclass{
    
    article}
\usepackage{
    
    tikz}
\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 at ( 0,2) [place] {
    
    };
	\node at ( 0,1) [place] {
    
    };
	\node at ( 0,0) [place] {
    
    };
	\node at ( 1,1) [transition] {
    
    };
	\node at (-1,1) [transition] {
    
    };
\end{
    
    tikzpicture}
\end{
    
    document}

ここに画像の説明を挿入

ノードに名前を付けます

  • ノードに名前を付けると、後続の操作が便利になり、座標描画を個別に計算する必要がなくなります。
    (name), 名前には特殊文字などを使用できず、アンダースコアとハイフンを使用できることに注意してください。
  • TikiZ\node [A] (B) at C構文は、またはなどの複数の並列属性の順序に対して比較的緩やかです\node (B) [A] at C
\documentclass{
    
    article}
\usepackage{
    
    tikz}
\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 1) at ( 0,2) {
    
    };
	\node[place] (critical 1) at ( 0,1) {
    
    };
	\node[place] (semaphore) at ( 0,0) {
    
    };
	\node[transition] (leave critical) at ( 1,1) {
    
    };
	\node[transition] (enter critical) at (-1,1) {
    
    };

\end{
    
    tikzpicture}
\end{
    
    document}

相対位置を指定して描画する

  • 多くの座標が上に示されていますが、実際、相対位置によって描画することもできます。 を
    インポートし\usetikzlibrary {positioning}てから、次の構文を使用する必要があります。
    [below = of name]など[right = of name]、それらの間の距離は です。node distanceデフォルトはノードの中心間、またはノード間の距離です。境界距離。
\documentclass{
    
    article}
\usepackage{
    
    tikz}
\usetikzlibrary {
    
    positioning}

\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] {
    
    };
\end{
    
    tikzpicture}
\end{
    
    document}

ここに画像の説明を挿入

ノードにラベルを付ける

  • 方法 1:
    姓を持つノードを追加し、属性を に設定し、ノードの北[red,above]に追加します。テキスト情報は次のようになります。(semaphore.north){s \e 3}
\documentclass{
    
    article}
\usepackage{
    
    tikz}
\usetikzlibrary {
    
    positioning}

\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] {
    
    };
	\node [red,above] at (semaphore.north) {
    
    $s\le 3$};
\end{
    
    tikzpicture}
\end{
    
    document}

ここに画像の説明を挿入

  • 方法 2: label 属性を
    使用して、ラベル情報を直接追加します。[label=above:$info$]
\documentclass{
    
    article}
\usepackage{
    
    tikz}
\usetikzlibrary {
    
    positioning}

\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,
		label=above:$s\le3$] {
    
    };
	\node[transition] (leave critical) [right=of critical] {
    
    };
	\node[transition] (enter critical) [left=of critical] {
    
    };
\end{
    
    tikzpicture}
\end{
    
    document}
  • 複数のラベルを指定することもできます。60度の位置にラベルを追加する場合は
    こちら、 270度の位置にラベルを追加する場合はこちらを使用します[label=60]
    [label=-90]
  • [every label/.style={}]ラベルのスタイルを変更するために使用します。
\tikz
	\node [circle,draw,label=60:$60^\circ$,label=below:$-90^\circ$] {
    
    my circle};

ここに画像の説明を挿入

リンクされたエッジの描画

  • 方法 1:
    構文を使用する\draw [->] (A.west) -- (B.east)\draw A .. controls B and C .. D曲線を描く
    ここでは、開始点と終了点を示す必要があります。
\documentclass{
    
    article}
\usepackage{
    
    tikz}
\usetikzlibrary {
    
    positioning}

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

ここに画像の説明を挿入

  • 方法 2:
    しかし、これは愚かです。簡単な記述方法は、次のコードのように、上記の指示をすべて省略することです。自動的かつインテリジェントに適切な方向を選択してくれる
    からです。TikZ
\draw [->] (enter critical) -- (critical);
\draw [->] (waiting) .. controls +(left:8mm) and +(up:8mm)
.. (enter critical);
  • 方法 3:または、曲線を描画するために を使用する代わりに、
    新しい構文
    を使用してみてください。つまり、指定された属性は、座標から出る、または座標に入る円弧の角度を表します。\draw [->] A to B\draw [->] A .. B
    \draw [->] A to [out=B,in=C] Din,out
\draw [->] (enter critical) to (critical);
\draw [->] (waiting) to [out=180,in=90] (enter critical);
  • 方法 4:
    を使用して[bend left=A]左右の曲がりの度合いを指定し、対応するリンク曲線を描画することもできます。
\draw [->] (waiting) to [bend right=45] (enter critical);
  • 方法 5:
    糖衣構文。\node A edge B edge C……点 A を点 B および点 C に結ぶエッジを描画するために使用します。
\node[transition] (enter critical) [left=of critical] {
    
    }
	edge [->] (critical)
	edge [<-,bend left=45] (waiting)
	edge [->,bend right=45] (semaphore);
  • 包括的な描画コードは次のとおりで、edge比較的単純な構文を使用することをお勧めします。
\documentclass{
    
    article}
\usepackage{
    
    tikz}
\usetikzlibrary {
    
    arrows.meta,positioning}

\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},
		bend angle=45,
		pre/.style={
    
    <-,shorten <=1pt,>={
    
    Stealth[round]},semithick},
		post/.style={
    
    ->,shorten >=1pt,>={
    
    Stealth[round]},semithick}]

	\node[place] (waiting) {
    
    };
	\node[place] (critical) [below=of waiting] {
    
    };
	\node[place] (semaphore) [below=of critical] {
    
    };
	\node[transition] (leave critical) [right=of critical] {
    
    }
		edge [pre] (critical)
		edge [post,bend right] (waiting)
		edge [pre, bend left] (semaphore);

	\node[transition] (enter critical) [left=of critical] {
    
    }
		edge [post] (critical)
		edge [pre, bend left] (waiting)
		edge [post,bend right] (semaphore);

\end{
    
    tikzpicture}
\end{
    
    document}

ここに画像の説明を挿入

線の端にラベルを追加する

  • [上篇]などを使用して、行の上部/中央/下部に情報を追加する方法を学習しました。ここ[sloped, below]での要件は、行の端に情報を追加する
    ことです。属性を使用するだけです。このプロパティを使用すると、線の反対側の描画が反映されます。以下のコードを参照してください。[auto]
    [swap]
\documentclass{
    
    article}
\usepackage{
    
    tikz}
\usetikzlibrary {
    
    arrows.meta,positioning}

\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},
		bend angle=45,
		pre/.style={
    
    <-,shorten <=1pt,>={
    
    Stealth[round]},semithick},
		post/.style={
    
    ->,shorten >=1pt,>={
    
    Stealth[round]},semithick}]

	\node[place] (waiting) {
    
    };
	\node[place] (critical) [below=of waiting] {
    
    };
	\node[place] (semaphore) [below=of critical] {
    
    };
	\node[transition] (leave critical) [right=of critical] {
    
    }
		edge [pre] (critical)
		edge [post,bend right] node[auto,swap]{
    
    2}	(waiting)
		edge [pre, bend left] (semaphore);

	\node[transition] (enter critical) [left=of critical] {
    
    }
		edge [post] (critical)
		edge [pre, bend left] 	node[auto]{
    
    3}(waiting)
		edge [post,bend right] node[auto]{
    
    4} node[auto,swap]{
    
    5} (semaphore);

\end{
    
    tikzpicture}
\end{
    
    document}

ここに画像の説明を挿入

曲がりくねった線と複数行のテキストを描画する

  • \usetikzlibrary {decorations.pathmorphing}ライブラリの追加蛇行ラインを追加するために
    使用します。また、などの他のパラメータを変更することもできます。[decoration={snake}][amplitude, segment length, post length]
  • 複数行のテキストは非常に単純で、LateX構文と同様に、\\折り返すために使用します。テキストの長さによって自動的にセグメント化するために
    使用することもできます。[text width=3cm]
\documentclass{
    
    article}
\usepackage{
    
    tikz}
\usetikzlibrary {
    
    decorations.pathmorphing}

\begin{
    
    document}
\begin{
    
    tikzpicture}
	\draw [->,decorate,
		decoration={
    
    snake,amplitude=.4mm,segment length=2mm,post length=1mm}]
	(0,0) -- (3,0)
	node [above,align=center,midway]
	{
    
    
		replacement of\\
		the \textcolor{
    
    red}{
    
    capacity}\\
		by \textcolor{
    
    red}{
    
    two places}
	};
\end{
    
    tikzpicture}
\end{
    
    document}

ここに画像の説明を挿入

レイヤーマップ

  • 絵を描いた後、絵の背景の後ろに特定の色の背景長方形を追加することが望まれます。
    グラフのサイズは動的であるため、描画する座標を指定するか、レイヤー Layer を使用するかを選択できます。レイヤー
    グラフはライブラリをインポートする必要がありbackgrounds、ライブラリはfitライブラリを使用し、両方をインポートする必要があります
  • これらの要素のオーバーレイに対応するために使用する背景レイヤーを描画するscope場所を指定するものを追加します。[on background layer]
    [fit = A B C D E]
\documentclass{
    
    article}
\usepackage{
    
    tikz}
\usetikzlibrary {
    
    arrows.meta,backgrounds,fit,positioning}

\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},
		bend angle=45,
		pre/.style={
    
    <-,shorten <=1pt,>={
    
    Stealth[round]},semithick},
		post/.style={
    
    ->,shorten >=1pt,>={
    
    Stealth[round]},semithick}]

	\node[place] (waiting) {
    
    };
	\node[place] (critical) [below=of waiting] {
    
    };
	\node[place] (semaphore) [below=of critical] {
    
    };
	\node[transition] (leave critical) [right=of critical] {
    
    }
	edge [pre] (critical)
	edge [post,bend right] node[auto,swap] {
    
    2} (waiting)
	edge [pre, bend left] (semaphore);
	\node[transition] (enter critical) [left=of critical] {
    
    }
	edge [post] (critical)
	edge [pre, bend left] (waiting)
	edge [post,bend right] (semaphore);
	\begin{
    
    scope}[on background layer]
		\node [fill=black!30,fit=(waiting) (critical) (semaphore)
		(leave critical) (enter critical)] {
    
    };
	\end{
    
    scope}

\end{
    
    tikzpicture}
\end{
    
    document}

ここに画像の説明を挿入

簡単な木を描く

  • より一般的に使用されるのは、\node {}ルート ノードの作成に使用され、子ノードの作成
    に使用されます。child {node{}}
\documentclass{
    
    article}
\usepackage{
    
    tikz}
\usetikzlibrary {
    
    arrows.meta,backgrounds,fit,positioning}

\begin{
    
    document}
\begin{
    
    tikzpicture}
	\node {
    
    Root}
	child {
    
    	node{
    
    A}
		child {
    
    node{
    
    B}}
		child {
    
    node{
    
    C}}
	}
	child {
    
    node{
    
    D}
		child {
    
    node{
    
    E}}
	}
	;
\end{
    
    tikzpicture}
\end{
    
    document}

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_45775438/article/details/130828621