11.4.2 Alignment modifiers

Sometimes one wants to depart from the row or column-like arrangement enabled by the above mechanisms. For this you can use the alignment modifiers that can be written before any block definition. They can be of two kind: major and minor. Major alignment modifiers are leftof, rightof, above or below. Writing them before any block places that block in the given relation to the previous block (and center/middle aligned in the other direction). You can also use minor alignment modifiers top, bottom, left or right, which only set alignment in one direction making the new block align at the specified side. You can use two major alignemnt modifier of them like below leftof box A;, which will place A diagonally south-west from the previous block. Note that the next block will continue to use the default row or column like layout, that is be left or below and middle or center aligned to the previous (so far last) block, such as block H is aligned to G on the figure below.

exD7_cshexD7

You can also specify one major and one minor alignment specifier, like below left to override the center alignment in the horizontal direction and make it left aligned.

You can specify one or more blocks after the alignment modifiers (use the plus sign (+) to separate them) if you want to relate to a block other than the previous one. When using several blocks, Msc-generator will align to their bounding box, similar to how attribute values are interpreted.

exF4_cshexF4

You can also specify an offset in addition to (or instead of) the block(s) after alignment modifiers. This number will be added appropriately.

exG6_cshexG6

Note that the blocks/number and the second alignment modifier may come in any order.

You can also specify a coordinate after alignment modifiers. This is less useful, so I do not give an example here.

If you specify alignment modifiers before a definition of multiple blocks, it will only apply to the first one. For example, in the example below only block C is below block A, whereas block D simply follows block C following the default row alignment. The same way, you can apply alignment modifiers after the definition of the block, but if you do it for a series of blocks, it only applies to the first one (C.F in the example below).

exI6_cshexI6