Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: StefanLily am Dienstag, 22. Februar 2022, 22:26

Titel: Zeilen brechen ohne ersichtlichen Grund am rechten Rand aus. Was ist falsch?
Beitrag von: StefanLily am Dienstag, 22. Februar 2022, 22:26
Liebe Gemeinde!

Das ist jetzt nicht kompliziert, ein gaaanz einfacher Code: Ein einfaches Lied mit Liedtext. Lilypond macht Zeilenumbrüche, ja, aber irgendwo ganz rechts außerhalb des Seitenrandes. Die Notenzeilen brechen am rechten Rand ins Nichts aus.

Ich nehme an, es liegt an den fehlenden Takten. Dennoch macht "er" ja doch irgendwann einen Zeilenumbruch, warum nicht noch auf der sichtbaren Seite?

Ich vermute, es liegt an \cadenzaOff. Aber die Musikgeschichte ist nicht erst 300 Jahre alt, das Musikstück ist nunmal "taktlos". Also, was muss ich tun, dass das allmächtige Lilypond die Seitengrenzen selbst erkennt?

Quellcode und optisches Ergebnis findet Ihr im Dateianhang. Wäre echt um Hilfe dankbar, weil dieses Problem ist jetzt nicht sehr intuitiv; hab ja noch nicht mal was an den Abständen gedreht, sondern Lilypond einfach nur seiner vies beschworenen "Allmacht" überlassen.


Titel: Antw:Zeilen brechen ohne ersichtlichen Grund am rechten Rand aus. Was ist falsch?
Beitrag von: amateur am Mittwoch, 23. Februar 2022, 00:41
Du könntest den Umbruch manuell mit \break machen. Davor muss aber ein Taktstrich (unsichtbar) stehen  \bar ""
\version "2.20.0"

\header {
  title = "GL (1975) 571"
  tagline = ##f
}

\score { <<
  \new Staff
  \with { \remove "Time_signature_engraver" } {
    \clef violin \key g \major
    \new Voice \relative {
      \cadenzaOn
      e'4 g a g a b b2 \breathe g4 e fis g
      e d e2 \breathe d4 e g2 a g4 a b( c) a a \bar "" \break
      b c d b a b g2 r \bar "|" e4 b' a g
      a g fis g d e fis2 e \bar "" \break \breathe g4 a e d e2 \breathe
      g2 e4 d fis( g) e d e g a( g e) fis
      d2 e \bar "|" r4 d g( a) g2 a4 g b2 a4 g a2 \breathe
      g4 a b2 g4 b c( b) a b g( fis) e g \bar "" \break
      a2 \breathe g4 e e d e2 b d4( e) e g
      a( b) b2 \breathe g4 b c b a b g( e) fis g
      e2 e \bar "|" b'( a4 b) g fis e2 \breathe a( b4 c) a( g) a2 \breathe
      b( d) c4( b a) b g( fis) e g fis2 e \bar "|."
      \cadenzaOff
    } % Ende \new Voice \relative
   
    \addlyrics {
      Sei ge -- grüßt, o Kö -- ni -- gin, Mut -- ter der Barm --
      her -- zig -- keit, un -- ser Le -- ben, uns -- re Won -- ne und
      uns -- re Hoff -- nung, sei ge -- grüßt! Zu dir ru -- fen
      wir ver -- bann -- te Kin -- der E -- vas; zu dir seuf -- zen wir
      trau -- ernd und wei -- nend in die -- sem Tal __ der
      Trä -- nen. Wohl -- an denn, un -- sre Für -- spre -- che -- rin,
      wen -- de dei -- ne barm -- her -- zi -- gen Au -- gen uns
      zu, und nach die -- sem E -- lend zei -- ge uns
      Je -- sus, die ge -- be -- ne -- dei -- te Frucht dei -- nes
      Lei -- bes. O __ gü -- ti -- ge, o __ mil -- de,
      o __ sü -- ße Jung -- frau Ma -- rie -- a.
    }
  } % Ende \new Staff
 
  >>
 
  \layout { }
 
  \midi {
    \tempo 4 = 100
  }
} % Ende \score
Titel: Antw:Zeilen brechen ohne ersichtlichen Grund am rechten Rand aus. Was ist falsch?
Beitrag von: Malte am Mittwoch, 23. Februar 2022, 19:22
Man könnte z. B. das Umbrechen an den Atemzeichen erlauben, indem man \breathe neu definiert:
breathe = { \bar "" \breathe }

Alternativ geht das Umbrechen überall durch
\layout {
    \context {
      \Score
      barAlways = ##t
      defaultBarType = ""
    }
  }

Dadurch wird nach jeder Note ein Taktstrich gesetzt. Damit das kein durchgezogener wird, muß der ,,Standard"-Taktstrich auf "" gesetzt werden.

Diese zwei Möglichkeiten sind sehr grob bzw. sehr fein. Eine Zwischenlösung wäre, selbst geeignete Umbruchstellen zu suchen und von Hand mit \bar "" zu markieren. Ein \break ist dann nur nötig, wenn du einen Umbruch erzwingen willst (statt mehrere zu ermöglichen und LilyPond selbst den besten auswählen zu lassen).