+ for (SCM p = bookparts_; scm_is_pair (p); p = scm_cdr (p))
+ if (Paper_book *pbookpart = unsmob_paper_book (scm_car (p)))
+ systems_ = scm_append_x (scm_list_2 (systems_, pbookpart->systems ()));
+ }
+ else
+ {
+ SCM specs = get_system_specs ();
+ for (SCM s = specs; scm_is_pair (s); s = scm_cdr (s))
+ {
+ if (Paper_score *pscore = dynamic_cast<Paper_score*> (unsmob_music_output (scm_car (s))))
+ {
+ SCM system_list = scm_vector_to_list (pscore->get_paper_systems ());
+ system_list = scm_reverse (system_list);
+ systems_ = scm_append (scm_list_2 (system_list, systems_));
+ }
+ else
+ {
+ systems_ = scm_cons (scm_car (s), systems_);
+ }
+ }
+ systems_ = scm_reverse (systems_);
+
+ /* backwards compatibility for the old page breaker */
+ int i = 0;
+ Prob *last = 0;
+ for (SCM s = systems_; scm_is_pair (s); s = scm_cdr (s))
+ {
+ Prob *ps = unsmob_prob (scm_car (s));
+ ps->set_property ("number", scm_from_int (++i));
+
+ if (last
+ && to_boolean (last->get_property ("is-title"))
+ && !scm_is_number (ps->get_property ("penalty")))
+ ps->set_property ("penalty", scm_from_int (10000));
+ last = ps;
+
+ if (scm_is_pair (scm_cdr (s)))
+ {
+ SCM perm = ps->get_property ("page-break-permission");
+ Prob *next = unsmob_prob (scm_cadr (s));
+ if (perm == SCM_EOL)
+ next->set_property ("penalty", scm_from_int (10001));
+ else if (perm == ly_symbol2scm ("force"))
+ next->set_property ("penalty", scm_from_int (-10001));
+ }
+ }