Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: UCas am Dienstag, 8. August 2023, 11:37

Titel: Kann ich eine Zeile im BookTitle nur hinzufügen, wenn eine Variable existiert?
Beitrag von: UCas am Dienstag, 8. August 2023, 11:37
Hi zusammen,

ich habe jetzt hier das Forum durchsucht und diverse Drittquellen, aber finde keine funktionierende Lösung dafür. Es gibt verschiedene Notationen für if/then-Strukturen, aber in meinem Beispiel scheint keine zu funktionieren.

Ich habe ein paar Custom-Variablen im Header und ein allgemeines template.ly was in allen Notensätzen ganz oben includet wird. Das soll jetzt auch ein paar Sonderfälle abfangen, im Beispiel eine Angabe einer Lizenz für das Notenblatt.

Jetzt soll die ganze Zeile nur entstehen, wenn die Variable definiert ist, da ansonsten auf Blättern, die keine solche Lizenzangabe haben, eine Leerzeile entsteht im Titelbereich.

Die Zeile mit dem "if defined" ist natürlich so nicht funktionabel, sondern soll nur der Erklärung dienen, was ich vorhabe. Wie löst man sowas?

bookTitleMarkup =
\markup {
  \column {
    \if defined? #'header:license {
      \fill-line {
        \null
        \fontsize #-3 \fromproperty #'header:license
      }
    }
  }
}

Gruß
UCas
Titel: Antw:Kann ich eine Zeile im BookTitle nur hinzufügen, wenn eine Variable existiert?
Beitrag von: Manuela am Montag, 14. August 2023, 11:32
Wenn ich dich richtig verstanden habe, macht die Funktion text-fromproperty (https://lilypondforum.de/index.php/topic,923.msg5031.html#msg5031) das, was du willst.
Titel: Antw:Kann ich eine Zeile im BookTitle nur hinzufügen, wenn eine Variable existiert?
Beitrag von: Jean Abou Samra am Mittwoch, 16. August 2023, 23:13
\version "2.24.1"

defined =
#(define-scheme-function (sym) (symbol?)
   (lambda (layout props)
     (markup? (chain-assoc-get sym props))))

\paper {
  bookTitleMarkup =
  \markup {
    \column {
      \if \defined #'header:license {
        \fill-line {
          \null
          \fontsize #-3 \fromproperty #'header:license
        }
      }
    }
  }
}