- && is_loose_column (cols->at (i - 1), c, cols->at (i + 1), options);
+ && is_loose_column (cols->at (i - 1), c, cols->at (i + 1), options);
+
+ /* Breakable columns never get pruned; even if they are loose,
+ their broken pieces are not. However, we mark them so that
+ the spacing can take their mid-line looseness into account. */
+ if (loose && Paper_column::is_breakable (c))
+ {
+ loose = false;
+ c->set_property ("maybe-loose", SCM_BOOL_T);
+ }
+ /*
+ Unbreakable columns which only contain page-labels also
+ never get pruned, otherwise the labels are lost before they can
+ be collected by the System: so we mark these columns too.
+ */
+ if (!loose && !Paper_column::is_breakable (c)
+ && scm_is_pair (c->get_property ("labels")))
+ {
+ extract_grob_set (c, "elements", elts);
+ if (elts.empty ())
+ c->set_property ("maybe-loose", SCM_BOOL_T);
+ }