Hier das entsprechende Minimalbeispiel:
Nein. Das ist alles andere als minimal, das sind 92 Zeilen Code! Man muss nicht alles unbedingt auf 5 Zeilen Code zusammenstampfen, aber < 20 wären schon gut:
\version "2.18.2"
<<
\lyrics { oben }
\new Staff {
\once \override TextScript #'extra-offset = #'(3 . -4)
a'^\markup {\fontsize #5 \override #'(thickness . 2) \combine \draw-line #'(0 . 4) \arrow-head #Y #DOWN ##f}
}
\lyrics { unten }
>>Das sind 10 Zeilen Code, die dein Beispiel genauso gut darstellen. Außerdem wärs schön, wenn du längeren Code in Code-Tags* packen könntest, dadurch wird er 1. besser abgehoben und es klar, wo Anfang und Ende sind 2. lange Codes erhalten einen Scrollbalken und brauchen nicht viel Platz und 3. kann man dann einfach auswählen und kopieren

So, zu deinem eigentlichen Problem: extra-offset verändert nur den sichtbaren Output, d. h. LilyPond richtet erstmal alles so aus, wie es das halt tut und zum Schluß werden Objekte noch um ihren extra-offset verschoben, ohne dabei aber die Positionen anderer Objekte zu beeinflussen (dadurch sind z. B. Überlagerungen von Dingen möglich). Es gibt nun zwei Möglichkeiten, das anders anzugehen:
1. Verwende X-offset und Y-offset. Die verschieben ein Objekt tatsächlich auch was das Spacing angeht, d. h. andere Objekte nehmen Rücksicht auf die Verschiebung. Allerdings brauchst du dann noch das Ausschalten von outside-staff-priority, weil das TextScript sich sonst weigert, innerhalb des Systems zu stehen:
\version "2.18.2"
<<
\lyrics { oben }
\new Staff {
\once \override TextScript.X-offset = 3
\once \override TextScript.Y-offset = -1.5
\once \override TextScript.outside-staff-priority = ##f
a'^\markup {\fontsize #5 \override #'(thickness . 2) \combine \draw-line #'(0 . 4) \arrow-head #Y #DOWN ##f}
}
\lyrics { unten }
>>2. Verwende doch extra-offset, aber tu so, als würde das \markup keinen Platz brauchen; dafür gibts den Befehl \with-dimensions, den ich auch schon in der Antwort auf deine Frage im
Nachbarthread verwendet habe:
\version "2.18.2"
<<
\lyrics { oben }
\new Staff {
\once \override TextScript.extra-offset = #'(3 . -4)
a'^\markup \with-dimensions #'(0 . 0) #'(0 . 0) {\fontsize #5 \override #'(thickness . 2) \combine \draw-line #'(0 . 4) \arrow-head #Y #DOWN ##f}
}
\lyrics { unten }
>>*Edit: Code-Tags sind [co de] und [/co de] ohne die Leerzeichen, es gibt dafür auch beim Post-Erstellen überm Textfeld einen Knopf mit ner Raute (#), der den markierten Text in solche Tags packt.