Изменение горизонтального интервала между текстами в 2.20.0?

Я печатал богослужебные песнопения с декламацией нот. Используя lilypond версии 2.18.2, я получаю то, что хочу, но когда я перешел на 2.20.0, в некоторых случаях между слогами слишком много пробелов . Я пытался возиться с несколькими значениями переменных SpacingSpanner, но не могу получить то поведение, которое хочу. Похоже, что-то изменилось по умолчанию или была введена новая функция, но я не смог отследить, где/что это.

Вот MWE кода, который получается по-разному, в зависимости от того, набран ли он с помощью lilypond 2.18.2 или 2.20.0:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\version "2.18.2"
\language "english"

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\header
{
    tagline = ##f
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\layout
{
    ragged-right = ##t
    \context
    {
        \Score
        \remove "Bar_engraver"
        \remove "Bar_number_engraver"
        \override SpacingSpanner #'spacing-increment = #2.0
        timing = ##f
    }
    \context
    {
        \Staff
        \remove "Clef_engraver"
        \remove "Time_signature_engraver"
        \remove "Stem_engraver"
        \remove "Beam_engraver"
        \hide Flag
        \override StaffSymbol.line-count = #2
        \override StaffSymbol.line-positions = #'( 0 -2 )
    }
    \context
    {
        \Voice
        \override Stem #'length = #0
    }
    \context
    {
        \Lyrics
        \override VerticalAxisGroup.staff-affinity = #UP
        \override VerticalAxisGroup.nonstaff-relatedstaff-spacing =
            #'(
                (basic-distance . 0)
                (minimum-distance . 0)
                (padding . 1)
                (stretchability . 0)
            )
        \override LyricText #'font-size = #0
        \override LyricText #'self-alignment-X = #CENTER
        \override LyricHyphen #'minimum-distance = #0.0
    }
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% music macros

longnote =
{
    \once \override NoteHead #'stencil = #ly:text-interface::print
    \once \override NoteHead #'text = #(markup #:concat(
        #:musicglyph "noteheads.s2la"
        #:hspace -0.5
        #:musicglyph "noteheads.s2la"
        #:hspace -0.1
        #:musicglyph "noteheads.s2la"))
}

divisioMajor =
{
    \bar "|"
}

divisioMaxima =
{
    \bar "|"
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% lyric macros

recite =
{
    \once \override LyricText #'self-alignment-X = #LEFT
}

#(define-markup-command (singer layout props text) (markup?)
    (interpret-markup layout props
        #{
            \markup { \raise #0.5 \fontsize#-1 \italic #text }
        #}
    )
)

officiant = \markup { \singer "Officiant" }
people = \markup { \singer "People" }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

melodyLine = \transpose c c
{
    \relative c'
    {
        \clef treble
        \key f\major
        \stemDown

        f4^\officiant g
        \longnote a16
        bf4 g f2*1/2
        \divisioMajor
        \break
        f4^\people g a g f g2*1/2
        \divisioMaxima
        \break

        f4^\officiant g
        \longnote a16
        bf4 g f2*1/2
        \divisioMajor
        \break
        f4^\people g a g f g2*1/2
        \divisioMaxima
        \break

        f4^\officiant g
        \longnote a4
        bf4 g f2*1/2
        \divisioMajor
        \break
        f4^\people g a g f g2*1/2
        \divisioMaxima
    }
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

verse = \lyricmode
{
    That this \recite "evening may be holy, good," and peace -- ful,
    We en -- treat you, O God.

    That your \recite "holy angels may lead us in paths of peace" and good -- will,
    We en -- treat you, O God.

    That we \recite "may be pardoned and forgiven for our sins and" of -- fen -- ses,
    We en -- treat you, O God.
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\paper
{
    indent = 0\pt
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\score
{
    \new Staff
    <<
        \new Voice = melody { \melodyLine }
        \new Lyrics \lyricsto melody \verse
    >>
    \layout{}
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Вывод с lilypond 2.18.2:Верстка с lilypond 2.18.2

Вывод с lilypond 2.20.0:

Верстка с lilypond 2.20.0

Это не совсем MWE, то есть не минимальный. Только первая часть распева показывает проблему. Все остальное можно было бы исключить.

Ответы (1)

Добро пожаловать в Music.SX! Честно говоря, виновника я так и не нашел. Однако следующий код содержит предложение, как решить проблему.

Я думаю, что возможная причина такого поведения заключается в том, что вы установили длину длинных заметок на 16(или 4). Хотя вы установили , похоже timing = #f, это оказывает некоторое влияние на следующие примечания. Следовательно, я изменил все длинные ноты на \breves. Кроме того, я заключил длинные ноты в \cadenzaOffи \candenzaOn, что должно было поместить их в два отдельных такта, использующих собственный контекст интервалов. Дабы упростить ввод, я переделал ваш \longnoteмакрос в музыкальную функцию.

Одним из недостатков этого подхода является то, что будут появляться тактовые линии. Чтобы решить эту проблему, я сделал тактовые линии скрытыми в макросе \longnote. Поскольку вы хотите, чтобы тактовые черты не были скрыты в конце строки, я поместил \undos в соответствующие макросы \divisioMajorи .divisioMaxima

Результат не совсем тот, что у вас был с LilyPond 2.18, но я думаю, что он близок.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\version "2.20.0"
\language "english"

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\header
{
    tagline = ##f
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\layout
{
    ragged-right = ##t
    \context
    {
        \Score
        \remove "Bar_engraver"
        \remove "Bar_number_engraver"
        \override SpacingSpanner #'spacing-increment = #2.0
        timing = ##f
    }
    \context
    {
        \Staff
        \remove "Clef_engraver"
        \remove "Time_signature_engraver"
        \remove "Stem_engraver"
        \remove "Beam_engraver"
        \hide Flag
        \override StaffSymbol.line-count = #2
        \override StaffSymbol.line-positions = #'( 0 -2 )
    }
    \context
    {
        \Voice
        \override Stem #'length = #0
    }
    \context
    {
        \Lyrics
        \override VerticalAxisGroup.staff-affinity = #UP
        \override VerticalAxisGroup.nonstaff-relatedstaff-spacing =
            #'(
                (basic-distance . 0)
                (minimum-distance . 0)
                (padding . 1)
                (stretchability . 0)
            )
        \override LyricText #'font-size = #0
        \override LyricText #'self-alignment-X = #CENTER
        \override LyricHyphen #'minimum-distance = #0.0
    }
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% music macros

longnote = #(define-music-function (note) (ly:music?)
    #{
        \hide Staff.BarLine
        \cadenzaOff
        \once \override NoteHead #'stencil = #ly:text-interface::print
        \once \override NoteHead #'text = #(markup #:concat(
            #:musicglyph "noteheads.s2la"
            #:hspace -0.5
            #:musicglyph "noteheads.s2la"
            #:hspace -0.1
            #:musicglyph "noteheads.s2la"))
        #note
        \cadenzaOn
    #})


divisioMajor =
{
    \undo \hide Staff.BarLine
    \bar "|"
}

divisioMaxima =
{
    \undo \hide Staff.BarLine
    \bar "|"
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% lyric macros

recite =
{
    \once \override LyricText #'self-alignment-X = #LEFT
}

#(define-markup-command (singer layout props text) (markup?)
    (interpret-markup layout props
        #{
            \markup { \raise #0.5 \fontsize#-1 \italic #text }
        #}
    )
)

officiant = \markup { \singer "Officiant" }
people = \markup { \singer "People" }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

melodyLine = \transpose c c
{
    \relative c'
    {
        \clef treble
        \key f\major
        \stemDown

        f4^\officiant g 
        \longnote a\breve 
        bf4 g f2*1/2
        \divisioMajor
        \break
        f4^\people g a g f g2*1/2
        \divisioMaxima
        \break

        f4^\officiant g 
        \longnote a\breve 
        bf4 g f2*1/2 
        \divisioMajor
        \break
        f4^\people g a g f g2*1/2
        \divisioMaxima
        \break

        f4^\officiant g 
        \longnote a\breve 
        bf4 g f2*1/2
        \divisioMajor
        \break
        f4^\people g a g f g2*1/2
        \divisioMaxima
    }
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

verse = \lyricmode
{
    That this \recite "evening may be holy, good," and peace -- ful,
    We en -- treat you, O God.

    That your \recite "holy angels may lead us in paths of peace" and good -- will,
    We en -- treat you, O God.

    That we \recite "may be pardoned and forgiven for our sins and" of -- fen -- ses,
    We en -- treat you, O God.
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\paper
{
    indent = 0\pt
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\score
{
    \new Staff
    <<
        \new Voice = melody { \melodyLine }
        \new Lyrics \lyricsto melody \verse
    >>
    %\layout{}
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Результат:

введите описание изображения здесь