if (!s)
{
programming_error ("Your numbering function needs to return a stencil.");
- footnote_number_markups.push_back (SCM_EOL);
+ footnote_number_markups.push_back (SCM_EOL);
footnote_number_stencils.push_back (Stencil (Box (Interval (0, 0), Interval (0, 0)), SCM_EOL));
}
else
- {
- footnote_number_markups.push_back (markup);
- footnote_number_stencils.push_back (*s);
- }
+ {
+ footnote_number_markups.push_back (markup);
+ footnote_number_stencils.push_back (*s);
+ }
counter++;
}
{
in_text_numbers = scm_cons (footnote_number_markups[i], in_text_numbers);
footnote_number_stencils[i].translate_axis ((max_length
- - footnote_number_stencils[i].extent (X_AXIS).length ()),
- X_AXIS);
+ - footnote_number_stencils[i].extent (X_AXIS).length ()),
+ X_AXIS);
numbers = scm_cons (footnote_number_stencils[i].smobbed_copy (), numbers);
}
Stencil annotation = *unsmob_stencil (scm_car (numbers));
annotation.translate_axis ((footnote_stencil.extent (Y_AXIS)[UP]
- + number_raise
- - annotation.extent (Y_AXIS)[UP]),
- Y_AXIS);
+ + number_raise
+ - annotation.extent (Y_AXIS)[UP]),
+ Y_AXIS);
footnote_stencil.add_at_edge (X_AXIS, LEFT, annotation, 0.0);
numbers = scm_cdr (numbers);
in_text_numbers = scm_cdr (in_text_numbers);
if (!unsmob_stencil (in_text_stencil))
in_text_stencil = SCM_EOL;
annotation.translate_axis ((footnote_stencil.extent (Y_AXIS)[UP]
- + number_raise
- - annotation.extent (Y_AXIS)[UP]),
- Y_AXIS);
+ + number_raise
+ - annotation.extent (Y_AXIS)[UP]),
+ Y_AXIS);
footnote_stencil.add_at_edge (X_AXIS, LEFT, annotation, 0.0);
numbers = scm_cdr (numbers);
in_text_numbers = scm_cdr (in_text_numbers);
foot_stencil = add_footnotes_to_footer (footnotes, foot_stencil, pb);
}
else
- warning ("A page layout problem has been initiated that cannot accommodate footnotes.");
+ warning (_ ("A page layout problem has been initiated that cannot accommodate footnotes."));
header_height_ = head ? head->extent (Y_AXIS).length () : 0;
footer_height_ = foot_stencil.extent (Y_AXIS).length ();
void
Page_layout_problem::append_system (System *sys, Spring const &spring, Real indent, Real padding)
{
- Grob *align = sys->get_vertical_alignment ();
+ Grob *align = unsmob_grob (sys->get_object ("vertical-alignment"));
if (!align)
return;
spring_copy.ensure_min_distance (minimum_distance);
springs_.push_back (spring_copy);
+ if (elts.size () && !is_spaceable (elts[0]))
+ {
+ // store the minimum distance, considering relative indents,
+ // for a loose line
+ Skyline first_skyline (UP);
+ Skyline_pair *sky = Skyline_pair::unsmob (elts[0]->get_property ("vertical-skylines"));
+ if (sky)
+ first_skyline.merge ((*sky)[UP]);
+ first_skyline.shift (indent);
+ minimum_distance = first_skyline.distance (bottom_skyline_) - bottom_loose_baseline_;
+ }
bottom_skyline_ = down_skyline;
- elements_.push_back (Element (elts, minimum_offsets, padding));
+ elements_.push_back (Element (elts, minimum_offsets, minimum_distance, padding));
// Add the springs for the VerticalAxisGroups in this system.
found_spaceable_staff = true;
spring_idx++;
}
- else
+ else // ! is_spaceable
{
if (loose_lines.empty ())
loose_lines.push_back (last_spaceable_line);
{
// distance to the final line in the preceding system,
// including 'system-system-spacing 'padding
- min_dist = (Axis_group_interface::minimum_distance (loose_lines.back (),
- staff, Y_AXIS)
- + elements_[i].padding);
+ min_dist = elements_[i].min_distance + elements_[i].padding;
// A null line to break any staff-affinity for the previous system
loose_line_min_distances.push_back (0.0);
loose_lines.push_back (0);
}
else if (!last_title_extent.is_empty ())
// distance to the preceding title,
- // including 'markup-system-spacing 'padding
+ // including 'markup-system-wg 'padding
min_dist = (staff->extent (staff, Y_AXIS)[UP] - last_title_extent[DOWN]
+ elements_[i].padding);
else // distance to the top margin