As far as the ELK core is concerned, the following elements can have spacing:
The first three can be thought of as boxes with some space to be left around them. Edges are not boxes, and connected components may be more complex than simple boxes.
ELK Layered adds the concept of layers, which leads to a few additional spacing values as described later.
Spacings are always defined between pairs of things. All spacings in this section are influenced by the base value for spacings. We define spacings between the following pairs of things (ordered lexicographically):
Since ELK Layered adds the concept of layers, it interprets many of the spacings above as being spacings active inside each layer (as vertical spacings, if the layout direction is right). To control spacing between layers (horizontal spacing), ELK Layered adds the following pairs:
Additionally the following spacing values were introduced to handle special cases:
Examples how these spacings influence layout can be found here.
Spacing that do not use the base value for spacings but are still called spacing:
Spacings are generally set on compound nodes and affect their direct children. There may be times, though, when a particular element wants to override the spacing settings. This could be solved by simply setting the appropriate spacing properties on that element. If that element is itself a compound node, however, we would introduce ambiguity: should the spacings be applied to the node’s children or to the node itself?
The solution is to provide a individual spacings property whose value is a property holder on which the spacing options that should be overridden can be set.