• Willkommen im Forum „Archiviertes Lilypond Forum (2017)“.
 

Dies ist das Archiv des alten Forums (bis März 2017). Das aktuelle Forum ist unter lilypondforum.de zu finden.
This is the archive of the old forum (until March 2017). You can find the current forum at lilypondforum.de.

Hauptmenü

Variablen im Header

Begonnen von alegria, Mittwoch, 28. Dezember 2011, 20:23

Vorheriges Thema - Nächstes Thema

alegria

Hey!
Ich hab ne Vorlage wo ich relevanten Variablen oben definiere um alles zentral an einem Ort zu haben. Ich bekomme es aber dummerweise nicht hin die Masseinheit von vspace in eine Variable zu packen...

\header {
  title = \markup {\vspace #4.75 \fontsize #+4 \Titel }
}

\Titel greift hier schon als Variable. Ich hätte nun gern "4.75" ausgelagert, so etwa:

mySize = #4.75
...
\header {
  title = \markup {\vspace \mySize \fontsize #+4 \Titel }
}


Wie bekomme ich das hin???
(Nutze Version 2.15.22)

harm6

Hallo alegria,

da gibt es verschiedene Möglichkeiten. Man muß aber auf jeden Fall die Definition aus define-markup-commands.scm ins file holen und verändern.

Hier habe ich custom-vspace draus gemacht. Beachte, daß im Code selbst keine Variable hinter custom-vspace auftaucht, denn der Wert wird vorher definiert.

\version "2.15.20"

#(define mySize 4.75)

#(define-markup-command (custom-vspace layout props)()
#:category align
  (let ((mySize (* mySize 3.0)))
    (if (> mySize 0)
        (ly:make-stencil "" (cons 0 0) (cons 0 mySize))
        (ly:make-stencil "" (cons 0 0) (cons mySize mySize)))))
   
Titel = "Titel"

\header {
  title = \markup { \custom-vspace
  \fontsize #+4 \Titel }
}

{ c'1 }


HTH,
  Harm

alegria

Puh... Das hatte ich mir leichter vorgestellt. Dachte ich mach irgendeinen syntaxfehler aber ist ja wohl doch komplexer...

Danke für die Antwort bzw. den Code!

harm6

ZitatDachte ich mach irgendeinen syntaxfehler aber ist ja wohl doch komplexer...

Nö - einfach kopieren und anwenden.

Kann natürlich sein, daß es nicht genau macht was Du möchtest, aber dann kannst Du Dich ja wieder melden.