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:

•  page specifying that the number of pages separating

1.  the first of the areas created from the first synchronized flow object from

2.  the first of the areas created from the second synchronized flow object

shall not be less than min: nor greater than max:. The synchronizing flow object shall be a page-sequence flow object or a column-set-sequence flow object with a page-sequence flow object as an ancestor.  The number of pages from one area to another area is defined to be the index, among all the pages of the page-sequence, of the page on which the second area lies minus the index of the page on which the first area lies.

NOTE 46

If min: were -1 and max: were 2, then the first of the areas created from the second synchronized flow object would be constrained to be either on the page before the first of the areas created from the first synchronized flow object, on the same page as the first of the areas created from the first synchronized flow object, on the page after the first of the areas created from the first synchronized flow object, or on the next page after that.

•  spread specifying that the number of spreads from the first of the areas created from the first synchronized flow object to the first of the areas created from second synchronized flow object shall not be less than min: nor greater than max:. The synchronizing flow object shall be a page-sequence flow object or a column-set-sequence flow object with a page-sequence flow object as an ancestor.

•  column specifying that the first of the areas created from the first synchronized flow object and the first of the areas created from the second synchronized flow object shall be in the same column-subset and that the number of columns from the first of the areas created from the first synchronized flow object to the first of the areas created from the second synchronized flow object shall be between min: and max:.  The synchronizing flow object shall be of class column-set-sequence.
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.