赞
踩
\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}
\node
是 \path node
的省略,这里需要额外加上 at
,即:\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}
[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}
[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}
[label=60]
表示在60度的位置添加标签[label=-90]
表示在270度的位置添加标签[every label/.style={}]
来修改标签的风格。\tikz
\node [circle,draw,label=60:$60^\circ$,label=below:$-90^\circ$] {my circle};
\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}
TikZ
会自动聪明地选择合适方向。\draw [->] (enter critical) -- (critical);
\draw [->] (waiting) .. controls +(left:8mm) and +(up:8mm)
.. (enter critical);
\draw [->] A to B
替代 \draw [->] A .. B
\draw [->] A to [out=B,in=C] D
绘制曲线,即给定 in,out
属性表示离开或进入坐标的弧线的角度。\draw [->] (enter critical) to (critical);
\draw [->] (waiting) to [out=180,in=90] (enter critical);
[bend left=A]
表示向左/右弯的度数,也可以绘制对应的链接曲线。\draw [->] (waiting) to [bend right=45] (enter critical);
\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}
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}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。