Bedingte Fußzeile

Begonnen von ottogal, Donnerstag, 31. Januar 2019, 18:43

« vorheriges - nächstes »

ottogal

Hallo in die Runde,
die mit oddFooterMarkup bzw. evenFooterMarkup einzufügenden Fußzeilen möchte ich von einer Bedingung abhängig machen:
Ein Footer-Text (z.B. "weiter") soll auf allen Seiten erscheinen, jedoch nicht auf der letzten Seite.
Mit (z.B.) oddFooterMarkup = \markup { \on-the-fly #last-page \fill-line { "Ende." } }
kann ich ja nur die letzte Seite bedienen - aber wie verneine ich die Bedingung?
Vielen Dank und Grüße
ottogal

Malte

Hallo ottogal,

willkommen im Forum! Bitte gib bei deinen Fragen immer die von dir verwendete LilyPond-Version und nach Möglichkeit auch ein kompilierbares Minimalbeispiel an, also ein Stück Code, welches ohne weitere Hinzufügungen ohne Probleme (außer das von dir beschriebene) durchläuft. Das könnte in deinem Fall so aussehen:
\version "2.19.82"

\paper {
  oddFooterMarkup = \markup { \on-the-fly #last-page \fill-line { "Ende." } }
}

{ R1*500 }

last-page ist eine in der Datei titling-init.ly deiner LilyPond-Installation definierte Funktion. Diese Definition kann man in den \paper-Block kopieren und etwas anpassen (genauer gesagt um das not im if-Ausdruck ergänzen):
\version "2.19.82"

\paper {
  #(define (not-last-page layout props arg)
     (if (not (book-last-page? layout props))
         (interpret-markup layout props arg)
         empty-stencil))
  oddFooterMarkup = \markup { \on-the-fly #not-last-page \fill-line { "weiter gehts" } }
}

{ R1*500 }

Viele Grüße
Malte

ottogal

#2
Hallo Malte,

vielen Dank für das Willkommen und sorry wegen des Fehlens eines brauchbaren Code snippet.

Ich bin nicht nur neu im Forum, sondern auch in LilyPond, weshalb ich gar nicht weiß, welche minimale Ausstattung ein Stück Code haben muss, um kompilierbar zu sein. (Welche Bedeutung hat denn { R1*500 } ?)

Als anderweitig Codender bin ich von Musiker-Seite gefragt worden, ob ich bei dem besagten LilyPond-Problem helfen könne.
Ich hatte mich früher mal ganz kurz damit beschäftigt und auch ein wenig mit Scheme, das mir wegen des Prinzips der Polnischen Notation gefallen hat (Ich war auch schon immer Fan der hp-Taschenrechner mit RPN). Nach dieser Anfrage habe ich die LilyPond-Tutorials und auch etwas Scheme-Dokumentation zu Rate gezogen, um dann doch lieber hier bei euch um Rat zu fragen.

Deine modifizierte Funktion macht jedenfalls genau das Gewünschte - besten Dank!

Als Nicht-Musiker werde ich wohl nicht so oft hier auftauchen - es sei denn, ich erhalte wieder einen Hilferuf...
Grüße in die Community und viel Erfolg beim Frickeln!

ottogal

Malte

Zitat von: ottogal am Freitag,  1. Februar 2019, 08:22
Ich bin nicht nur neu im Forum, sondern auch in LilyPond, weshalb ich gar nicht weiß, welche minimale Ausstattung ein Stück Code haben muss, um kompilierbar zu sein. (Welche Bedeutung hat denn { R1*500 } ?)
Im Prinzip ist meistens irgendein Stück Musik nötig, damit es auch Output gibt. { R1*500 } ist ein Stück sequentielle Musik {}, welches nur eine Mehrtaktpause R enthält, die 500 Ganze lang ist. Das ist eine der einfachsten Möglichkeiten, mehrere Seiten Musik zu generieren, wenn es eigentlich um andere Dinge (in diesem Fall die Fußzeile) geht. ,,Kompilierbar" meint in unserem Fall ,,spuckt ohne Fehlermeldungen ein PDF aus", ,,minimal" eigentlich ,,man kann nichts mehr weglassen, ohne daß das Problem verschwindet", wird aber nicht immer ganz exakt gefordert. Aber z. B. sind oft Layout-Einstellungen, mehr als 5 Takte Musik etc. nicht nötig.

Häufig passiert es, daß Leute einen zu kurzen Ausschnitt zeigen, indem sie z. B. Variablen verwenden, deren Definition aber nicht mitliefern. Oder daß eben nur nach einer ganz bestimmten Codezeile gefragt wird, ohne daß man den Kontext kennt. In deinem Fall wußte ich mir zu helfen, weil ich eben wußte, daß diese Zeile in den \paper-Block gehört und auch schnell mal eben viel Musik generieren kann. Manchmal ists aber nicht so eindeutig.

ZitatAls Nicht-Musiker werde ich wohl nicht so oft hier auftauchen - es sei denn, ich erhalte wieder einen Hilferuf...
Interessant, ich glaub, Nicht-Musiker sieht man hier wirklich selten ;) Ich nehme an, du meinst weitere Hilferufe von bekannten Musikern, die du im Zweifelsfall hierhin weiterträgst. Trotzdem kommt hier mal ein Hilferuf von anderer Seite: Hättest du Zeit und Lust, an der Entwicklung des Programms mitzuwirken? Ich glaub, da kann immer mal Hilfe gebraucht werden, und es gibt auch genug Sachen, die nicht LilyPond-, Scheme- und C++-Kenntnisse benötigen ;)

ottogal

ZitatHättest du Zeit und Lust, an der Entwicklung des Programms mitzuwirken?

Leider habe ich die Zeit dafür gar nicht. (Außerdem müsste ich dazu viel mehr Ahnung vom Programmm haben.)