Séparation d'une portée en bout de ligne en 2 portées : avec doubles flèches ET barre de mesure de reprise

Bonsoir à tous,
Mon sujet est un peu long, mais que j'espère explicite.

J'ai, pour les doubles flèches en bout de ligne, utilisé le fragment
suivant :
https://lilypond.org/doc/v2.25/Documentation/snippets/staff-notation-_002d-adding-indicators-to-staves-which-get-split-after-a-break.fr.html

qui fonctionne parfaitement avec une barre de mesure normale (\bar"|").

En revanche, avec une barre de mesure en fin de ligne telle que \bar
".|:-||", la double flèche est présente en fin de ligne et, puisqu'elle
est attachée à la barre de mesure, elle réapparaît aussi au début de la
ligne :

Est-ce que quelqu'un aurait une idée pour contourner le problème ?

J'ajoute un extrait du code pour illustrer le problème.

Merci à tous.

Bonne soirée,
Luc

\version "2.24.0"
% snippets 
https://lilypond.org/doc/v2.25/Documentation/snippets/staff-notation-_002d-adding-indicators-to-staves-which-get-split-after-a-break.fr.html
#(define-markup-command (arrow-at-angle layout props angle-deg length fill)
    (number? number? boolean?)
    (let* ((PI-OVER-180 (/ (atan 1 1) 34))
           (degrees->radians (lambda (degrees) (* degrees PI-OVER-180)))
           (angle-rad (degrees->radians angle-deg))
           (target-x (* length (cos angle-rad)))
           (target-y (* length (sin angle-rad))))
      (interpret-markup layout props
                        (markup
                         #:translate (cons (/ target-x 2) (/ target-y 2))
                         #:rotate angle-deg
                         #:translate (cons (/ length -2) 0)
                         #:concat (#:draw-line (cons length 0)
                                               #:arrow-head X RIGHT 
fill)))))
splitStaffBarLineMarkup = \markup \with-dimensions #'(0 . 0) #'(0 . 0) {
   \combine
   \arrow-at-angle #45 #(sqrt 8) ##t
   \arrow-at-angle #-45 #(sqrt 8) ##t
}

splitStaffBarLine = {
   \once \override Staff.BarLine.stencil =
   #(lambda (grob)
      (ly:stencil-combine-at-edge
       (ly:bar-line::print grob)
       X RIGHT
       (grob-interpret-markup grob splitStaffBarLineMarkup)
       0))
   \break
}

separateSopranos = {
   \set Staff.instrumentName = ""
   \set Staff.shortInstrumentName = ""
   \splitStaffBarLine
   %\change Staff = "VoixUn"
}
VoixUn = \relative c''{
   \time 4/4
   \key c \major
   c4 c c c | c c c c
   \separateSopranos
   \break
   %sans barre de mesure spéciale \bar ".|:-||"
   \set Staff.shortInstrumentName = "Sop."
   c4 c c c | c c c c
   \break
   % même exemple avec la barre de mesure spéciale
   \set Staff.shortInstrumentName = ""
   c4 c c c | c c c c
   \separateSopranos
   \break
   \bar ".|:-||"
   \set Staff.shortInstrumentName = "Sop."
   c4 c c c | c c c c

}
VoixDeux = \relative c' {
   \override Score.VerticalAxisGroup.remove-first = ##t
   R1*2
   \set Staff.shortInstrumentName = "Alt."
   c4 c c c | c c c c
   R1*2
   c4 c c c | c c c c
}

\paper {
   short-indent = 10\mm
}
\score {
   \new ChoirStaff
   <<
     \new Voice  {
       \VoixUn
     }
     \new Voice  {
       \VoixDeux
     }
   >>
   \layout {
     \context {
       \Staff \RemoveEmptyStaves
     }
   }
}

Bonjour, une solution vite fait :

\version "2.26.0"

#(define-markup-command (arrow-at-angle layout props angle-deg length fill)
    (number? number? boolean?)
    (let* ((PI-OVER-180 (/ (atan 1 1) 34))
           (degrees->radians (lambda (degrees) (* degrees PI-OVER-180)))
           (angle-rad (degrees->radians angle-deg))
           (target-x (* length (cos angle-rad)))
           (target-y (* length (sin angle-rad))))
      (interpret-markup layout props
                        (markup
                         #:translate (cons (/ target-x 2) (/ target-y 2))
                         #:rotate angle-deg
                         #:translate (cons (/ length -2) 0)
                         #:concat (#:draw-line (cons length 0)
                                               #:arrow-head X RIGHT 
fill)))))
splitStaffBarLineMarkup = \markup \with-dimensions #'(0 . 0) #'(0 . 0) {
   \combine
   \arrow-at-angle #45 #(sqrt 8) ##t
   \arrow-at-angle #-45 #(sqrt 8) ##t
}

splitStaffBarLine = {
   \once \override Staff.BarLine.stencil =
   #(lambda (grob)
      (let* ((orig (ly:bar-line::print grob))
             (dir (ly:item-break-dir grob)))
        (if (eqv? dir LEFT)
            (let* ((split (grob-interpret-markup grob splitStaffBarLineMarkup)))
              (ly:stencil-combine-at-edge orig X RIGHT split))
            orig)))
   \break
}

separateSopranos = {
   \set Staff.instrumentName = ""
   \set Staff.shortInstrumentName = ""
   \splitStaffBarLine
   %\change Staff = "VoixUn"
}
VoixUn = \relative c''{
   \time 4/4
   \key c \major
   c4 c c c | c c c c
   \separateSopranos
   \break
   %sans barre de mesure spéciale \bar ".|:-||"
   \set Staff.shortInstrumentName = "Sop."
   c4 c c c | c c c c
   \break
   % même exemple avec la barre de mesure spéciale
   \set Staff.shortInstrumentName = ""
   c4 c c c | c c c c
   \separateSopranos
   \break
   \bar ".|:-||"
   \set Staff.shortInstrumentName = "Sop."
   c4 c c c | c c c c

}
VoixDeux = \relative c' {
   \override Score.VerticalAxisGroup.remove-first = ##t
   R1*2
   \set Staff.shortInstrumentName = "Alt."
   c4 c c c | c c c c
   R1*2
   c4 c c c | c c c c
}

\paper {
   short-indent = 10\mm
}
\score {
   \new ChoirStaff
   <<
     \new Voice  {
       \VoixUn
     }
     \new Voice  {
       \VoixDeux
     }
   >>
   \layout {
     \context {
       \Staff \RemoveEmptyStaves
     }
   }
}