Kann ich eine Zeile im BookTitle nur hinzufügen, wenn eine Variable existiert?

Begonnen von UCas, Dienstag, 8. August 2023, 11:37

« vorheriges - nächstes »

UCas

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

Manuela

Danke für eure Hilfe
viele Grüße
-- Manuela

Jean Abou Samra

\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
        }
      }
    }
  }
}