+ Real scale = scm_to_double (bpd->c_variable ("outputscale"));
+
+ Output_def *def = scale_output_def (unsmob_output_def (outdef), scale);
+ scaled_def = def->self_scm ();
+
+ scaled_bookdef = scale_output_def (bpd, scale)->self_scm ();
+ unsmob_output_def (scaled_def)->parent_
+ = unsmob_output_def (scaled_bookdef);
+
+ scm_gc_unprotect_object (scaled_bookdef);
+ scm_gc_unprotect_object (scaled_def);
+ }
+
+ SCM context = ly_run_translator (music, scaled_def);
+ if (Global_context *g = dynamic_cast<Global_context*>
+ (unsmob_context (context)))
+ {
+ SCM systems = ly_format_output (context, outname);
+ Music_output *output = g->get_output ();
+ if (systems != SCM_UNDEFINED)
+ {
+ /* ugh, this is strange, Paper_book without a Book object. */
+ Paper_book *paper_book = new Paper_book ();
+ paper_book->header_ = header;
+ paper_book->paper_ = unsmob_output_def (scaled_bookdef);
+
+ Score_systems sc;
+ sc.systems_ = systems;
+ sc.header_ = header;
+
+ paper_book->score_systems_.push (sc);
+
+ paper_book->classic_output (ly_scm2string (outname));
+ scm_gc_unprotect_object (paper_book->self_scm ());
+ }
+ delete output;