自动分割
可以通过相对位置把一堆节点放置在一起;最简单的相对摆放方式应该是使用auto-split特性。
- 两个节点之间的
|会把节点分成两部分,然后水平放置在一起 - 同样,使用
||(两个竖线)可以把节点分成两部分,然后把第二个节点放置在第一个节点的下一行。 - 如果
|连接的两个节点中有一个是一个空格组成,那么就会生成一个不可见的节点 - 如果
|连接的两个节点中有一个是超过一个空格组成,那么就会生成一个空节点。 - 开头和结尾的空格和在中间使用空格的效果一样;例如
[ | ..会在开头处创建一个不可见的节点;[ | ..(两个空格)会在开头处创建一个不可见节点,尾部也是一样。
下面是一些例子:
[ A | B | C ] +---+---+---+| A | B | C |+---+---+---+
[ A | B || C ] +---+---+| A | B |+---+---+| C |+---+
[ A | B ||C | D | E ||F ]+---+---+| A | B |+---+---+---+| C | D | E |+---+---+---+| F |+---+
下面是一个头部和尾部有空节点的例子:
[ | C | ][ | D | ][ | E | ][ | F | ][|G|][ |H| |][ C.2 ] -> [ A1 ][ D.2 ] -> [ A2 ][ E.2 ] -> [ A3 ][ F.2 ] -> [ A4 ][ G.2 ] -> [ A5 ][ H.3 ] -> [ A6 ]+--+---+--+ +----+| | C | | --> | A1 |+--+---+--+ +----+|---+--+ +----+| D | | --> | A2 |---+--+ +----++--+---+ +----+| | E | --> | A3 |+--+---+ +----+|---+ +----+| F | --> | A4 |---+ +----+|---+ +----+| G | --> | A5 |---+ +----++--+---+ +----+| | H | --> | A6 |+--+---+ +----+
查看属性这一章查看如何在自动分割模式下面使用私有属性。要引用一个自动分割的节点,你需要知道它的basename和它分割位置的信息;basename可以通过属性来指定,如果没有指定basename,那么就会自动生成一个basename,这个basename是所有节点名字串联起来的字符串(没有空格和下划线)如果这个basename已经存在过,那么就会使用一个连接线加上一个数字,从1开始:
[ A | B | C ] # basename is: ABC[ A | B | C ] # basename is: ABC-1
在下面这个例子里面,第一个自动分割模式的节点的名字是"ABC",因此第二个自动分割的节点组的名字是ABC-1:
[ A | B | C ] # basename: ABC[ A | B | C ] # basename: ABC-1[ C | D | E ] # basename: CDE[ C | D | E ] # basename: CDE-2
但是这个自动增加的数字是全局唯一的,因此第三个和第四个自动分割的节点的basename是CDE和CED-2而不是CDE-1。
自动分割节点组里面的节点可以通过数字和一个点号.引用;下面是一个例子:
[ A | B | C ][ 1 ] -> [ ABC.2 ]+---+| 1 |+---+||v+---+---+----+| A | B | C |+---+---+----+
下面是一个更复杂一点的例子:
[ A|B|C ] { basename: A } [ 1 ] -> [ A.2 ][ A|B|C ] [ 2 ] -> [ ABC-1.2 ]
渲染之后效果如下:
+---+| 2 |+---+||v+---+---+----+| A | B | C |+---+---+----++---+| 1 |+---+||v+---+---+----+| A | B | C |+---+---+----+
