From: Paolo Prete <paolopr...@gmail.com>
Date: Thursday, January 16, 2020 at 10:24 AM
To: Robin Bannister <r...@dabble.ch>
Cc: Michael Gerdau <m...@qata.de>, Lilypond-User Mailing List 
<lilypond-user@gnu.org>, Carl Sorensen <c_soren...@byu.edu>
Subject: Re: Distance of a grob from its reference point



On Thu, Jan 16, 2020 at 5:33 PM Robin Bannister 
<r...@dabble.ch<mailto:r...@dabble.ch>> wrote:


OR

3) make outside-staff-padding 0.46 more than needed vertical shift
    e.g. 2.46

Cheers,
Robin

This is *precious* info. Please, can you tell/confirm  if


  1.  you are referring to \offset command ?

My testing found that \offset didn’t work with outside-staff-padding for 
OttavaBracket grobs.


  1.  is it applicable as a replacement for "\offset Y-offset" for *every* grob 
that support Y-offset ?


No.  outside-staff-padding is a different property than Y-offset.  Grobs that 
live in the staff are largely controlled by Y-offset.  Grobs that live outside 
of the staff are placed outside the staff grobs by at least 
outside-staff-padding when all of the properties that control the automatic 
placement are considered.

It is *very* unlikely that you will find a single approach that will work with 
*every* grob.  You may be able to find approaches that will work with classes 
of grobs.  You may need to have individual approaches that apply to specific 
grobs.

The music layout problem is very complex.  Lilypond treats it as such.  Once 
the layout is accomplished, you can manually move grobs with extra-offset, but 
you are then responsible for resolving collisions.  Providing bias that causes 
fixed incremental motion of individual grobs in the collision-resolved output 
is not a trivial problem, as you have discovered.  It appears that much or your 
dissatisfaction is because you thought you had found a trivial solution (i.e. 
use \offset Y-offset) only to find that it doesn’t work.

I am completely confident that there is *no* trivial solution.  There may be a 
*set* of trivial solutions, each of which applies to a family of grobs.  But 
finding those solutions will require individually checking how each grob is 
affected.  You can get the list of grobs in the NR (All layout objects).

Carl.

Reply via email to