Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: Rhaban am Montag, 28. Mai 2018, 11:35

Titel: Weihnachtsliederbuch (sic) und Seitenvorschübe
Beitrag von: Rhaban am Montag, 28. Mai 2018, 11:35
Hallo,

ich bin von Freunden, die ein christliches Gästehaus leiten, gebeten worden, ein Weihnachtsliederbuch mit Lilypond zu setzen. Ich habe nun alle Lieder gesetzt und wollte nun eine PDF-Datei mit Lilypond erzeugen, in welcher alle Lieddateien enthalten sind. (Bei den einzelnen Liedern gab es mit Lilypond keine unüberwindlichen Probleme.)

Da ich in den Weihnachtstagen die Lieder selbst am Klavier oder auf der Orgel spielen möchte, aber auch andere das Liederbuch verwenden möchten, ist mir Folgendes wichtig:

1. Lieder sollten nicht von der ungeraden (rechten) Seite auf die gerade (linke) Seite gehen, weil man während des Spiels ja nicht umblättern kann.

2. Es ist kein Problem, wenn ein Lied von der geraden (linken) auf die ungerade (rechte) Seite geht, da man ja da nicht umblättern muss.

Ich habe nun mit \include versucht, die einzelnen Lilyponddateien nacheinander aufzurufen und kompilieren zu lassen, habe mit \pageBreak Seitenvorschübe eingefügt ... leider will Lilypond oft nicht so, wie ich will.

Konkret: Meine Lieddateien heißen W_000.ly, W_001.ly bis (mit numerischen Lücken) W_416.ly. Jede einzelne Lilyponddatei ließ sich einzeln auch problemlos nach W_000.pdf usf. kompilieren.

Für meine ,,Gesamt-PDF-Datei" habe ich (via Shellscript; ich verwende Kubuntu) eine Lilypond-,,Stammdatei" erzeugt, in der alle zu kompilierenden Lilyponddateien hintereinander aufgeführt sind:

\version "2.18.2"
\include "papier_wlb.ly"
\include "W_000.ly"
\include "zeile.ly"
\allowPageTurn
\include "W_001.ly"
\include "zeile.ly"
\allowPageTurn
\include "W_002.ly"
\include "zeile.ly"
\allowPageTurn
\include "W_003.ly"
\include "zeile.ly"
\allowPageTurn


usf.

In papier_wlb.ly steht:

\paper {
    myStaffSize = #15  % alt: 20
    %    #(define fonts (make-pango-font-tree "Minion Pro" "Helvetica_Neue" "FreeMono" (/ myStaffSize 20)))
indent = 0\cm

        page-breaking = #ly:optimal-breaking
print-page-number = ##f
print-first-page-number = ##f
between-system-padding = #2.0 % alt: 1.6, dann: 2.0
left-margin = 20\mm
line-width = 172\mm
ragged-last-bottom = ##t
ragged-bottom = ##t % alt: ##f
oddFooterMarkup = ""
evenFooterMarkup = ""           
        #(set-global-staff-size 15)  % alt: 16
        %      annotate-spacing = ##t 
}


In zeile.ly (mit dem Ziel, etwas Leerraum zwischen den Liedern zu erzeugen:

\markup { " " }
\markup { " " }


Theoretisch könnte ich auch mit pdftk alle PDF-Dateien (die ja existieren) aneinander hängen, dann aber hätte man ― je nach Länge des Liedes ― oft viel Leerraum, der aber, aus Kostengründen, vermieden werden sollte.

Wenn mir jemand weiterhelfen könnte, die Lieddateien in der gewünschten Weise aneinanderzu hängen, wäre ich dankbar.

Rhaban
Titel: Antw:Weihnachtsliederbuch (sic) und Seitenvorschübe
Beitrag von: Arnold am Montag, 28. Mai 2018, 13:35
Hallo,

entschuldige die knappe Antwort, aber:

Hilft Dir page-turn-breaking (statt optimal-breaking) weiter?

Arnold
Titel: Antw:Weihnachtsliederbuch (sic) und Seitenvorschübe
Beitrag von: Rhaban am Montag, 28. Mai 2018, 16:23
Hallo, Arnold,

vielen Dank für Deine schnelle Antwort. Du schreibst: ,,Hilft Dir page-turn-breaking (statt optimal-breaking) weiter?".

Ich muss gestehen, dass ich die Datei paper_wlb.ly zu großen Teilen aus dem Internet kopiert habe; von wo genau, weiß ich leider nicht mehr. Da stand "optimal-breaking".

Ich will es aber gleich einmal mit page-turn-breaking versuchen.

(...)

Leider führt page-turn-breaking dazu, dass jetzt nach fast jeder Zeile ein Seitenumbruch erfolgt.

Viele Grüße

Rhaban
Titel: Antw:Weihnachtsliederbuch (sic) und Seitenvorschübe
Beitrag von: Manuela am Mittwoch, 30. Mai 2018, 07:59
Ich stand auch vor dem "Liederbuchproblem". Bisher habe ich noch keine andere Lösung gefunden als eine Menge Handarbeit.

Hier habe ich meine Erfahrungen zusammenfasst (https://archiv.lilypondforum.de/index.php/topic,2383.msg13402.html#msg13402), vll. hilft dir das ja weiter
Titel: Antw:Weihnachtsliederbuch (sic) und Seitenvorschübe
Beitrag von: Hilflos-im-Code am Donnerstag, 31. Mai 2018, 11:53
Es entspricht zwar nicht dem Automatismusgedanken von Lilypond, aber als ich vor solch einem Problem stand, habe ich mir zusätzlich mit \bookpart geholfen. Vorraussetzung für das Verfahen ist, dass das Endprodukt für lange Zeit feststeht.

Also 1. Durchlauf ohne bookpart.
Ergebnis ansehen. Ab dem Punkt, wo ich mit all den Umbrechungskommandos mehr Schaden als Nutzen angerichtet habe, habe ich die bis dahin brauchbaren Anfangsstücke in ein  \bookpart {} gepackt. Notfalls in dieser \bookpart Umgebung die Seitenzahl mit \paper bestimmt.

Dann den nächsten Bereich einkapseln, den Lilypond einigermaßen vernünftig darstellt.

Für besonders kniffelige Sachen habe ich in jedem einzelnen Lied folgenden Layoutblock gehabt:

\layout {
       system-count = 6
    \context {
      \Score
      \override SpacingSpanner.base-shortest-duration = #(ly:make-moment 1/48)
    }


Aber entweder System-count verwenden oder den SpacingSpanner.

Wirkt kompliziert, aber ging schneller als herauszufinden, wie ich den Automatismus am besten einstelle.

Befegle \nopageTurn und \nopageBreak kennst Du?
Titel: Antw:Weihnachtsliederbuch (sic) und Seitenvorschübe
Beitrag von: harm6 am Donnerstag, 31. Mai 2018, 13:33
Zitat von: Hilflos-im-Code
als ich vor solch einem Problem stand, habe ich mir zusätzlich mit \bookpart geholfen.
[...]
Wirkt kompliziert, aber ging schneller als herauszufinden, wie ich den Automatismus am besten einstelle.

Ich würde ähnlich vorgehen.

Der Vollständigkeit halber:
Du kannst aber auch versuchen das line-break-, page-break- und page-turn-Verhalten durch Gewichtungen zu beeinflussen.

Dafür gibts:

Das music-property:
break-penalty

Und die grob-properties von (NonMusical)PaperColumn:
line-break-penalty
page-break-penalty
page-turn-penalty

Anwendungsbeipiele sind aber kaum zu finden.
Hier eines von Torsten:
https://archiv.lilypondforum.de/index.php/topic,1356.msg7454.html#msg7454 (https://archiv.lilypondforum.de/index.php/topic,1356.msg7454.html#msg7454)


Gruß,
  Harm
Titel: Antw:Weihnachtsliederbuch (sic) und Seitenvorschübe
Beitrag von: Ansgar am Freitag, 18. Februar 2022, 15:40
Ich habe auch lange an diesem Problem gesessen und gegrübelt. Aber durch den Link von Harm, habe ich eine einfache gut funktionierende Lösung gefunden:

\score {
  \relative c' { \key c \major \time 4/4
    \override Score.NonMusicalPaperColumn #'page-break-penalty = #10
    c4 d e2 \bar "|."
    \revert Score.NonMusicalPaperColumn #'page-break-penalty
  }
}

% Sowohl Möglichkeit für Lilypond einen "schöneren" Umbruch durchzuführen,
% als auch Abstandshalter zwischen Score und nachfolgende Überschrift:
\markup { " " }

Die beiden Zeilen mit override bzw revert habe ich gleich in meine Vorlage mit eingebaut. Jetzt funktionieren die automatischen Umbrüche nur nach einem Score (es sei denn der Score ist zu lang für eine Seite.) Wenn der Score zu lang sein sollte kann man äquivalent dazu mit turn-page-penalty verhindern, dass im Stück umgeblättert werden muss.
(Ich fand es sinnvoller, den ganzen Score mit einem Umbruchsmalus zu belegen als die Schlußnote mit einem Umbruchsbonus)