+
+ SCM spec = Page_layout_problem::get_spacing_spec (elems[j-1], elems[j]);
+ Page_layout_problem::read_spacing_spec (spec, &padding, ly_symbol2scm ("padding"));
+
+ Real min_distance = 0;
+ if (Page_layout_problem::read_spacing_spec (spec, &min_distance, ly_symbol2scm ("minimum-distance")))
+ dy = max (dy, min_distance);
+
+ if (Page_layout_problem::is_spaceable (elems[j]) && last_spaceable_element)
+ {
+ // Spaceable staves may have min-distance and padding
+ // constraints coming from the previous spaceable staff
+ // as well as from the previous staff.
+ spec = Page_layout_problem::get_spacing_spec (last_spaceable_element, elems[j]);
+ Real spaceable_padding = 0;
+ Page_layout_problem::read_spacing_spec (spec,
+ &spaceable_padding,
+ ly_symbol2scm ("padding"));
+ padding = max (padding, spaceable_padding);
+
+ Real min_distance = 0;
+ if (Page_layout_problem::read_spacing_spec (spec,
+ &min_distance,
+ ly_symbol2scm ("minimum-distance")))
+ dy = max (dy, min_distance + stacking_dir*(last_spaceable_element_pos - where));
+
+ if (scm_is_pair (forced_distances))
+ {
+ SCM forced_dist = scm_car (forced_distances);
+ forced_distances = scm_cdr (forced_distances);
+
+ if (scm_is_number (forced_dist))
+ dy = scm_to_double (forced_dist) + stacking_dir * (last_spaceable_element_pos - where);
+ }
+ }