自动分割

可以通过相对位置把一堆节点放置在一起;最简单的相对摆放方式应该是使用auto-split特性。

  • 两个节点之间的|会把节点分成两部分,然后水平放置在一起
  • 同样,使用||(两个竖线)可以把节点分成两部分,然后把第二个节点放置在第一个节点的下一行。
  • 如果|连接的两个节点中有一个是一个空格组成,那么就会生成一个不可见的节点
  • 如果|连接的两个节点中有一个是超过一个空格组成,那么就会生成一个空节点。
  • 开头和结尾的空格和在中间使用空格的效果一样;例如[ | .. 会在开头处创建一个不可见的节点;[ | ..(两个空格)会在开头处创建一个不可见节点,尾部也是一样。

下面是一些例子:

  1. [ A | B | C ] +---+---+---+
  2. | A | B | C |
  3. +---+---+---+
  1. [ A | B || C ] +---+---+
  2. | A | B |
  3. +---+---+
  4. | C |
  5. +---+
  1. [ A | B ||
  2. C | D | E ||
  3. F ]
  4. +---+---+
  5. | A | B |
  6. +---+---+---+
  7. | C | D | E |
  8. +---+---+---+
  9. | F |
  10. +---+

下面是一个头部和尾部有空节点的例子:

  1. [ | C | ]
  2. [ | D | ]
  3. [ | E | ]
  4. [ | F | ]
  5. [|G|]
  6. [ |H| |]
  7. [ C.2 ] -> [ A1 ]
  8. [ D.2 ] -> [ A2 ]
  9. [ E.2 ] -> [ A3 ]
  10. [ F.2 ] -> [ A4 ]
  11. [ G.2 ] -> [ A5 ]
  12. [ H.3 ] -> [ A6 ]
  13. +--+---+--+ +----+
  14. | | C | | --> | A1 |
  15. +--+---+--+ +----+
  16. |---+--+ +----+
  17. | D | | --> | A2 |
  18. ---+--+ +----+
  19. +--+---+ +----+
  20. | | E | --> | A3 |
  21. +--+---+ +----+
  22. |---+ +----+
  23. | F | --> | A4 |
  24. ---+ +----+
  25. |---+ +----+
  26. | G | --> | A5 |
  27. ---+ +----+
  28. +--+---+ +----+
  29. | | H | --> | A6 |
  30. +--+---+ +----+

查看属性这一章查看如何在自动分割模式下面使用私有属性。要引用一个自动分割的节点,你需要知道它的basename和它分割位置的信息;basename可以通过属性来指定,如果没有指定basename,那么就会自动生成一个basename,这个basename是所有节点名字串联起来的字符串(没有空格和下划线)如果这个basename已经存在过,那么就会使用一个连接线加上一个数字,从1开始:

  1. [ A | B | C ] # basename is: ABC
  2. [ A | B | C ] # basename is: ABC-1

在下面这个例子里面,第一个自动分割模式的节点的名字是"ABC",因此第二个自动分割的节点组的名字是ABC-1

  1. [ A | B | C ] # basename: ABC
  2. [ A | B | C ] # basename: ABC-1
  3. [ C | D | E ] # basename: CDE
  4. [ C | D | E ] # basename: CDE-2

但是这个自动增加的数字是全局唯一的,因此第三个和第四个自动分割的节点的basename是CDECED-2而不是CDE-1

自动分割节点组里面的节点可以通过数字和一个点号.引用;下面是一个例子:

  1. [ A | B | C ]
  2. [ 1 ] -> [ ABC.2 ]
  3. +---+
  4. | 1 |
  5. +---+
  6. |
  7. |
  8. v
  9. +---+---+----+
  10. | A | B | C |
  11. +---+---+----+

下面是一个更复杂一点的例子:

  1. [ A|B|C ] { basename: A } [ 1 ] -> [ A.2 ]
  2. [ A|B|C ] [ 2 ] -> [ ABC-1.2 ]

渲染之后效果如下:

  1. +---+
  2. | 2 |
  3. +---+
  4. |
  5. |
  6. v
  7. +---+---+----+
  8. | A | B | C |
  9. +---+---+----+
  10. +---+
  11. | 1 |
  12. +---+
  13. |
  14. |
  15. v
  16. +---+---+----+
  17. | A | B | C |
  18. +---+---+----+