Hallo,
das Problem beteht darin, daß beim Zeilen wechsel zwei stencils entstehen. Der eine wird ans Zeilenende, der andere an den Anfang der neuen Zeile gedruckt.
(Passiert übrigens immer in dieser Situation! Je nach Taktstrichart ist es allerdings ein empty-stencil, also nicht sichtbar.)
Mittels
ly:item-break-dir sind die beiden aber unterscheidbar und auch einzeln ansprechbar.
Oder Du definierst gleich neue Taktstricharten

Im Code unten ist beides:
\version "2.18.0"
%\paper { ragged-right = ##t }
\layout {
\context {
\Score
\override StaffSymbol #'layer = #-2
\override TextScript #'layer = #-1
}
}
mrkp =
\markup {
\with-dimensions #'(0.298 . 6) #'(0 . 0)
\whiteout {
\raise #0.7 {
\line {
\hspace #1.2
\center-column \italic {
"D.C."
\line { al \bold fine }
}
}
}
}
}
#(define (make-my-dcAlFine-bar-line grob extent)
(grob-interpret-markup grob mrkp))
#(add-bar-glyph-print-procedure "m" make-my-dcAlFine-bar-line)
#(define-bar-line "m" "m" #f " ")
#(define-bar-line "||m" "||m" #f "||")
#(define-bar-line "||m-r" "||m" ".|:" "")
dcAlFine =
\once \override Staff.BarLine #'stencil =
#(lambda (grob)
(ly:stencil-combine-at-edge
(ly:bar-line::print grob)
X RIGHT
(grob-interpret-markup grob #{
\markup
\with-dimensions #'(0 . 6) #'(0 . 0)
\whiteout {
\raise #0.7 {
\line {
\hspace #1.2
\center-column \italic {
"D.C."
\line { al \bold fine }
}
}
}
}
#})
0))
dcAlFine-rev =
\once \override Staff.BarLine #'stencil =
#(lambda (grob)
(let ((stil (ly:bar-line::print grob))
(break-dir (ly:item-break-dir grob)))
(if (= -1 break-dir)
(ly:stencil-combine-at-edge
stil
X RIGHT
(grob-interpret-markup grob #{
\markup
\with-dimensions #'(0 . 6) #'(0 . 0)
\whiteout {
\raise #0.7 {
\line {
\hspace #1.2
\center-column \italic {
"D.C."
\line { al \bold fine }
}
}
}
}
#})
0)
stil)))
{ s1*4 \break \dcAlFine \bar "||" s1*4 }
{ s1*4 \break \bar "||m" s1*4 }
\new StaffGroup
<<
{ s1*4 \break \bar "||m-r" s1*4 }
{ s1*4 s1*4 }
>>
{ s1*4 \break \dcAlFine-rev \bar ".|:" s1*4 }Natürlich gibt es ein Problem hier. Denn der eingefügte Text erscheint in einer StaffGroup mit zwei Systemen auch
zwei mal, nicht unbedingt was man haben will.
Eine gute Lösung hab' ich da aber auch nicht.
Gruß,
Harm