节点与节点连接


节点

节点有名字,有边界,有中心。节点连接指向节点中心。边界决定了连接点在哪儿。

命令

\rnode[引用点]{名字}{内容}
把“内容”放进一个盒子,节点的中心就是“引用点”。“引用点”的指定方法与“\rput” 一样。连接这样的节点,由于节点的高度和深度可能不同,连接线可能相互不平行。比如
\rnode{A}{sp} \hskip 2cm \rnode{B}{Bit}
\ncline{A}{B}

命令

\Rnode*[参数]{名字}{内容}
也把“内容”放进一个盒子,但它的中心是相对于基线的,因而避免了由于节点的高度和深度可能不同, 而导致的连接线相互不平行。比如
\Rnode{A}{sp} \hskip 2cm \Rnode{B}{Bit}
\ncline{A}{B}

命令

\pnode(x,y){名字}
在(x,y)处创建一个大小为0的节点。

命令

\cnode*[参数](x,y){半径}{名字}
绘制一个圆。比如
\cnode(0,1){.25}{A}
\pnode(3,0){B}
\ncline{<-}{A}{B}

命令

\Cnode*[参数](x,y){名字}
也绘制一个圆,只是它的半径由参数
radius=dim
设置,缺省值是0.25cm。

命令

\circlenode*[参数]{名字}{内容}
是“\pscirclebox”的一个变种,绘制一个圆形节点。

命令

\cnodeput*[参数]{旋转角度}(x,y){名字}{内容}
是“\cput”的一个变种,绘制一个圆形节点。

命令

\ovalnode*[参数]{名字}{内容}
是“\psovalbox”的一个变种,绘制一个椭圆形节点。比如
\circlenode{A}{Circle} and \ovalnode{B}{Oval}
\ncbar[angle=90]{A}{B}

命令

\dianode*[参数]{名字}{内容}
绘制一个菱形节点。

命令

\trinode*[参数]{名字}{内容}
绘制一个三角形节点。比如
\rput[tl](0,3){\dianode{A}{Diamond}}
\rput[br](4,0){\trinode[trimode=L]{B}{Triangle}}
\nccurve[angleA=-135,angleB=90]{A}{B}

命令

\dotnode*[参数](x,y){名字}
绘制一个点。比如
\dotnode[dotstyle=triangle*,dotscale=2 1](0,0){A}
\dotnode[dotstyle=+](3,2){B}
\ncline[nodesep=3pt]{A}{B}

命令

\fnode*[参数](x,y){名字}
绘制一个矩形。比如
\fnode{A}
\fnode*[framesize=1 5pt](2,2){B}
\ncline[nodesep=3pt]{A}{B}

节点连接

节点连接命令都以nc开头,并且语法都是

命令[参数]{箭头}{节点名字}{节点名字}
连接点与节点边界的距离由参数
nodesep=dim
设置,缺省值为0pt。若想单独设置一边,可以用参数
nodesepA=dim
nodesepB=dim

命令

\ncline*[参数]{箭头}{节点名字}{节点名字}
用直线段连接两个节点。比如
\rput[bl](0,0){\rnode{A}{Idea 1}}
\rput[tr](4,3){\rnode{B}{Idea 2}}
\ncline[nodesep=3pt]{<->}{A}{B}

命令

\ncarc*[参数]{箭头}{节点名字}{节点名字}
用弧线连接两个节点。比如
\cnodeput(0,0){A}{X}
\cnodeput(3,2){B}{Y}
\psset{nodesep=3pt}
\ncarc{->}{A}{B}
\ncarc{->}{B}{A}
弧线和连接两个节点的直线段之间的夹角由参数
arcangle=角度
设置,缺省值为8。

下面一组命令中,你可以用参数

angle=角度
直接指定连接角度,用参数
arm=dim
同时指定两个节点处的连接臂长度,缺省值是10pt,如果只想指定一边,可以用参数
armA=dim
armB=dim

命令

\ncdiag*[参数]{箭头}{节点名字}{节点名字}
在两边各画一个连接臂,然后用直线段连接两个连接臂。比如
\rput[tl](0,3){\rnode{A}{\psframebox{Node A}}}
\rput[br](4,0){\ovalnode{B}{Node B}}
\ncdiag[angleA=-90, angleB=90, arm=.5, linearc=.2]{A}{B}

命令

\ncdiagg*[参数]{箭头}{节点名字}{节点名字}
只在第一个节点处画连接臂。比如
\cnode(0,0){12pt}{a}
\rput[l](3,1){\rnode{b}{H}}
\rput[l](3,-1){\rnode{c}{T}}
\ncdiagg[angleA=180, armA=1.5, nodesepA=3pt]{b}{a}
\ncdiag[angleA=180, armA=1.5, armB=0, nodesepA=3pt]{c}{a}

命令

\ncbar*[参数]{箭头}{节点名字}{节点名字}
在两边各画一个连接臂,只是其中一个按需要可能会长一些,如果连接臂有一定的角度。比如
\rnode{A}{Connect} some \rnode{B}{words}!
\ncbar[nodesep=3pt,angle=-90]{<-**}{A}{B}
\ncbar[nodesep=3pt,angle=70]{A}{B}

命令

\ncangle*[参数]{箭头}{节点名字}{节点名字}
在两边各画一个连接臂,只是第一个节点处的连接臂会做出调整,以便连接线和第一个 连接臂能以正确的角度连接。比如
\rput[tl](0,3){\rnode{A}{\psframebox{Node A}}}
\rput[br](4,0){\ovalnode{B}{Node B}}
\ncangle[angleA=-90,angleB=90,armB=1cm]{A}{B}

命令

\ncangles*[参数]{箭头}{节点名字}{节点名字}
在两边各画一个连接臂,两个连接臂用两段线连接。比如
\rput[tl](0,4){\rnode{A}{\psframebox{Node A}}}
\rput[br](4,0){\ovalnode{B}{Node B}}
\ncangles[angleA=-90, armA=1cm, armB=.5cm, linearc=.15]{A}{B}

命令

\ncloop*[参数]{箭头}{节点名字}{节点名字}
画一个到自身的循环。比如
\rnode{a}{\psframebox{\Huge A loop}}
\ncloop[angleB=180,loopsize=1,arm=.5,linearc=.2]{->}{a}{a}

命令

\nccurve*[参数]{箭头}{节点名字}{节点名字}
用曲线连接两个节点。比如
\rput[bl](0,0){\rnode{A}{\psframebox{Node A}}}
\rput[tr](4,3){\ovalnode{B}{Node B}}
\nccurve[angleB=180]{A}{B}

命令

\nccircle*[参数]{箭头}{节点}{半径}
绘制一个穿过节点中心的圆。比如
\rnode{A}{\textbf{back}}
\nccircle[nodesep=3pt]{->}{A}{.7cm}
\kern 5pt

下面的两个节点连接比较特殊,都是用封闭的形状将节点包围起来,以下参数用于设置 包围节点的盒子的大小

boxsize=dim 盒子大小,缺省值是0.4cm
boxheight=dim 盒子的高度
boxdepth=dim 盒子的深度

命令

\ncbox*[参数]{节点}{节点}
用直线段组成的盒子把节点包围起来。比如
\rput[bl](.5,0){\rnode{A}{Idea 1}}
\rput[tr](3.5,2){\rnode{B}{Idea 2}}
\ncbox[nodesep=.5cm,boxsize=.6,linearc=.2,linestyle=dashed]{A}{B}

命令

\ncarcbox*[参数]{节点}{节点}
用曲线组成的盒子把节点包围起来。比如
\rput[bl](.5,0){\rnode{A}{1}}
\rput[tr](3.5,2){\rnode{B}{2}}
\ncarcbox[nodesep=.2cm,boxsize=.4,linearc=.4,arcangle=50]{<->}{A}{B}

点链接

除了节点连接,还有点连接,由于它们都与节点连接对应,所以不再详细说明,仅列出命令

\pcline{箭头}(x1,y1)(x2,y2)
\pccurve{箭头}(x1,y1)(x2,y2)
\pcarc{箭头}(x1,y1)(x2,y2)
\pcbar{箭头}(x1,y1)(x2,y2)
\pcdiag{箭头}(x1,y1)(x2,y2)
\pcdiagg{箭头}(x1,y1)(x2,y2)
\pcangle{箭头}(x1,y1)(x2,y2)
\pcangles{箭头}(x1,y1)(x2,y2)
\pcloop{箭头}(x1,y1)(x2,y2)
\pcbox(x1,y1)(x2,y2)
\pcarcbox(x1,y1)(x2,y2)

连接标注

如果节点间位置关系大致是左右(高点低点没关系),适用下面一组标注

\ncput*[参数]{内容}
\naput*[参数]{内容}
\nbput*[参数]{内容}
它们分别表示让连接穿过标注、将标注放在连接线的上方、将标注放在连接线的下方。比如
\cnode(0,0){.5cm}{root}
\cnode*(3,1.5){4pt}{A}
\cnode*(3,0){4pt}{B}
\cnode*(3,-1.5){4pt}{C}
\psset{nodesep=3pt}
\ncline{root}{A}
\naput{above}
\ncline{root}{B}
\ncput*{on}
\ncline{root}{C}
\nbput{below}

如果节点间的位置关系大致是上下关系(左点右点没关系),比如倒着的树,下面一组标注比较 使用

\tvput*[参数]{内容}
\tlput*[参数]{内容}
\trput*[参数]{内容}
\thput*[参数]{内容}
\taput*[参数]{内容}
\tbput*[参数]{内容}
分别表示将标注放在垂直中间、垂直左侧、垂直右侧、水平中间、水平上方、水平下方。

标注节点

命令

\nput*[参数]{引用角度}{节点名字}{内容}
为节点添加标注。比如
\rput[br](4,0){\ovalnode{B}{Node B}}
\rput[tl](0,3){\rnode{A}{\psframebox{Node A}}}
\nput[labelsep=0]{-70}{A}{%
\psarcn(0,0){.4cm}{0}{-70}
\uput{.4cm}[-35](0,0){\texttt{angleA}}}
\ncangle[angleA=-70,angleB=90,armB=1cm,linewidth=1.2pt]{A}{B}
\ncput[nrot=:U,npos=1]{\psframe[dimen=middle](0,0)(.35,.35)}

线圈、弹簧、锯齿线连接

在“pst-coil”包提供了用三维线圈、弹簧、锯齿线连接节点的命令,要使用它们 请在LaTeX导言中加入

\usepackage{pst-coil}
连接命令是
\nccoil*[参数]{箭头}{节点A}{节点B}
\nczigzag*[参数]{箭头}{节点A}{节点B}
\pccoil*[参数]{箭头}{节点A}{节点B}(x1,y1)(x2,y2)
\pczigzag*[参数]{箭头}{节点A}{节点B}(x1,y1)(x2,y2)


目录