12.4.7. Synchronization of Flow Objects

Facilities in this clause require the page feature.

It is sometimes necessary to constrain the relative positioning of flow objects in different streams. For example, a footnote might be constrained to be on the same page as the corresponding reference, or a sidenote might be constrained to be at the same vertical position as its reference. Such constraints are specified by creating a synchronization set. A synchronization set is a set of flow objects whose relative positioning is constrained. A flow object contains information describing the synchronization sets to which it belongs. A flow object can belong to any number of synchronization sets. For every synchronization set, there shall be a flow object, the synchronizing flow object, that is a flow ancestor of all the flow objects in the synchronization set. In addition, each stream of that flow object can contain (either directly or as a descendant) at most one flow object in the synchronization set.

(sync sosofo1 sosofo2
      #!key type: min: max:)

Creates a synchronization set whose members are the first member of sosofo1 and the first member of sosofo2. sync returns a sosofo comprising:

  1. a copy of the first flow object of sosofo1 with added synchronization information,

  2. any remaining flow objects of sosofo1,

  3. a copy of the first flow object of sosofo2 with added synchronization information, and

  4. any remaining flow objects of sosofo2.

The type: argument is a symbol specifying the type of constraint on the areas created by formatting the synchronized flow objects. The min: and max: arguments are integers that further specify the type of constraint. The value of max: shall be greater than or equal to that of min:. min: and max: default to 0. The permitted values for type: are:

The default value of type: is page.
(side-sync list)

Creates a synchronization set containing the first members of each of the members of list, which shall be a list of two or more sosofos. side-sync returns the sosofo that results from concatenating the members of the list except that the first member of each sosofo is replaced by a copy with added synchronization information. The first areas produced by each member of the synchronization set are constrained to be positioned in the same column-set so that the position of their placement paths is the same in the filling-direction, possibly adjusted for any difference in alignment mode.