>> * Contrary to Valentin's solution, the first 'a 2' text is not
>> left-aligned to the left edge of the note head. This is
>> especially visible with whole notes (see attached image). [...]
>
> See the attached file, fixing that problem and making it per-voice.
Thanks, will test soon in more detail.
>> * `\tweak` doesn't work right before `\set Staff.staffAnnotation`.
>> Instead, I have to use `\once \override`, AFAICS.
>
> It actually never makes sense to \tweak a \set. [...]
Thanks for the explanation.
>> Hopefully, I'm missing something. Otherwise both Valentin's and
>> Jeans' solutions are heavily limited because it happens quite
>> often that the 'a 2' string must be positioned individually
>> without affecting other rehearsal marks – or text spanners.
>
> What do you mean by 'positioned individually'? Can you give an
> example?
[Referring to your latest code version]
Let's assume that I could adjust `bound-details` of the `TextSpanner`
grob created by `\annotation` (which is not possible). If an ordinary
text spanner starts at the same time, overrides like
```
\once \override TextSpanner.bound-details.left.padding = -2
\annotation "2."
c'1\startTextSpan
```
would affect both spanners because they start at the same moment.
BTW, it would be very helpful if `padding` actually moved the 'a 2'
text horizontally...
> This question also still stands:
>
>
>>> Very nice, thanks! Besides the (hopefully) harmless warning
>>>
>>> ```
>>> programming error: Spanner `TextSpanner' is not fully contained
>>> in parent spanner. Ignoring orphaned part
>>> continuing, cross fingers
>>> ```
>>>
>>> it seems to work fine.
>>>
>>>
>>> Werner
>>
>>
>> Can you give an example where it occurs?
I haven't found the time yet to reduce the code of my real-world
example to do that.
Werner