Allgemein > Hilfe beim Einstieg in Lilypond
Variablen in Lilypond
Lebostein:
Hallo, ich bins nochmal....
Kann man in Lilypond Variablen festlegen? Zum Beispiel möchte ich eine Variable "titel" ganz oben in der Datei anlegen:
titel = "Alle meine Entchen"
später im Code (bzw. in einer externen Inlude-Datei) soll dann stehen:
\header {
title = \markup { \override #'(font-size . +6) \override #'(font-name . "Book Antiqua") titel }
}
Ziel ist es, alles was Formatierung ist, in eine oder mehrere separate Inlude-Dateien auszulagern. Wenn ich meine gesamte Liedersammlung irgendwann mit einer anderen Titelschriftart will, so brauche ich nur noch die eine Datei anzupassen und kann dann die gesamte Liedersammlung automatisch generieren lassen.
Leider geht das nicht. Hab auch schon mit # herumgespielt... Hat jemand damit Erfahrung? Ich hab zwar folgendes gefunden:
http://lilypond.org/doc/v2.2/Documentation/user/out-www/lilypond/Scheme-tutorial.html aber mit Strings scheint das nicht zu funktionieren....
etilli33:
Na klar kann man. Das wird alles abgehandelt in Kapitel 4.2 der Dokumentation zu 2.10. Davon gibt es auch eine deutsche Übersetzung für die Version 2.11. Variablen werden definiert, indem ein Name gegeben wird (keine Zahlen und keine Satzzeichen), dann Gleichheitszeichen, dann Inhalt in geschweiften Klammern:
Variable = {Inhalt}
und benutzt mit Backslash
\Variable
Gruß
Till
Lebostein:
So einfach ist es leider nicht. Ich möchte einen simplen "String" in einer Variable haben.
meinevar = {"Hallo"}
funktioniert da leider nicht. Was funktioniert, ist einen ganzen Befehl samt Argumente in eine Variable zu packen (wie die Überschrift "Saving typing with identifiers and functions" andeutet):
meinevar = \lyricmode {"Hallo"}
meinevar = \relative c {"Hallo"}
meinevar = \chordmode {"Hallo"}
???
etilli33:
Ja, ich hatte schon den Verdacht, da wahr wohl was mit \markup, das kann keine Variablen aufnehmen. War zu faul zum prüfen. Mit normalen Noten jedenfalls geht es hervorragend.
Till
Lebostein:
Für den Zweck sind wahrscheinlich die markup-commands gut geeignet. Einfache markup-commands funktionieren ohne Probleme:
--- Code: ---\version "2.11.38"
#(define-markup-command (aufblasen layout props text) (string?)
(interpret-markup layout props (markup #:huge text)))
#(define-markup-command (drehen layout props text winkel) (string? number?)
(interpret-markup layout props (markup #:rotate winkel text)))
\markup "test"
\markup \aufblasen #"test"
\markup \drehen #"test" #30
--- Ende Code ---
jetzt möchte ich aber das \override bzw. im Macro #:override verwenden und weiß nicht, wie die Syntax ist... so fürht es jedenfalls zu einem Fehler:
--- Code: ---\version "2.11.38"
#(define-markup-command (titelfont layout props text) (string?)
(interpret-markup layout props (markup #:override (font-name . "Arial") text)))
\markup \titelfont #"test"
--- Ende Code ---
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln