- Spacing_result best = space_systems_on_best_pages (0, first_page_num);
- page_count = best.systems_per_page_.size ();
- best_division = ideal_line_division;
+ Page_spacing_result best;
+ SCM forced_page_count = book_->paper_->c_variable ("page-count");
+ vsize page_count = robust_scm2int (forced_page_count, 1);
+ Line_division ideal_line_division = current_configuration (0);
+ Line_division best_division = ideal_line_division;
+ vsize min_sys_count = 1;
+
+ // Note that system_count () only counts non-title systems.
+ vsize ideal_sys_count = system_count ();
+
+ if (!scm_is_integer (forced_page_count))
+ {
+ /* find out the ideal number of pages */
+ message (_ ("Finding the ideal number of pages..."));
+
+ best = space_systems_on_best_pages (0, first_page_num);
+
+ page_count = best.systems_per_page_.size ();
+ min_sys_count = ideal_sys_count - best.systems_per_page_.back ();
+
+ if (page_count > 1 && best.systems_per_page_[page_count - 2] > 1)
+ min_sys_count -= best.systems_per_page_[page_count - 2];
+
+ min_sys_count = max (min_sys_count, (vsize)1);
+ }
+ else
+ {
+ /* If systems-per-page and page-count are both specified, we know exactly
+ how many systems should be present. */
+ if (systems_per_page () > 0)
+ {
+ ideal_sys_count = systems_per_page () * page_count;