自动分割

可以通过相对位置把一堆节点放置在一起;最简单的相对摆放方式应该是使用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是CDECED-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 |
+---+---+----+