Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: Tapio am Mittwoch, 19. März 2025, 09:12

Titel: Zugriff auf Wert innerhalb \header{}
Beitrag von: Tapio am Mittwoch, 19. März 2025, 09:12
Hallo zusammen,

aus dem Codeblock geht es schon hervor. Kann ich den kurz zuvor definierten Titel "title" im Layout-Block zugreifen, hier in der tagline? Meine Frage ist besteht eher aus zwei Teilen. a) wie greift man darauf generell zu und b) ist hier in diesem Fall der Wert schon gesetzt? Eine Lilypond-Variable als Zwischenstation belegen will ich bewusst icht tun.

Danke

\header { % dedication = "" piece = "" subtitle = "" subsubtitle = "" opus = "" arranger = ""
  composer = "Composer"
  title = "Der Wolf, das Lamm, auf der grünen Wiese"
  tagline = \markup { \concat { "Der Wolf, das Lamm, auf der grünen Wiese - " \Date } }
  instrument = #(cond ((= PrintVoice 0) "") ((= PrintVoice 4) "Bass-Klarinette") (else (string-append "Klarinette " (number->string PrintVoice))))
}
Titel: Antw:Zugriff auf Wert innerhalb \header{}
Beitrag von: Lilysetter am Mittwoch, 19. März 2025, 13:41
tagline=\markup{\fromproperty #'header:title"-"#(strftime"%Y'%m%d"(localtime(current-time)))}
Titel: Antw:Zugriff auf Wert innerhalb \header{}
Beitrag von: Tapio am Donnerstag, 29. Mai 2025, 13:27
Zitat von: Lilysetter am Mittwoch, 19. März 2025, 13:41tagline=\markup{\fromproperty #'header:title"-"#(strftime"%Y'%m%d"(localtime(current-time)))}

Oh danke. Ich nutze jetzt:
tagline=\markup{\fromproperty #'header:title "-" \DateTime}
..weil \DateTime bei mir vorbelegt ist. Warum muss ich hier eigentlich kein concat() innerhalb des markup-Befehls nutzen?
Titel: Antw:Zugriff auf Wert innerhalb \header{}
Beitrag von: Malte am Donnerstag, 29. Mai 2025, 18:40
\markup fasst mehrere Dinge ähnlich wie \markup \concat zusammen, mit dem Unterschied, dass zwischen den einzelnen Teilen (in deinem Fall also vor und nach dem "-") noch Leerzeichen stehen.
Titel: Antw:Zugriff auf Wert innerhalb \header{}
Beitrag von: Tapio am Dienstag, 24. Juni 2025, 15:02
Ich bin jetzt doch zu Variablendefinitionen übergegangen. Wenn nämlich #'header:title Markup enthält, wird das auch wiederverwendet. Das will man aber nicht unbedingt haben.

(Ich hatte #'header:title in der Fußzeile verwendet)
Titel: Antw:Zugriff auf Wert innerhalb \header{}
Beitrag von: Lilysetter am Mittwoch, 25. Juni 2025, 16:07
Du kannst eine Hilfsvariable (hier: myvar und/oder mytitle) verwenden, aus der Du dann title und footer berechnest.
%15:30 25.06.2025  https://lilypondforum.de/index.php/topic,1502.0.html
\version"2.25.6" myvar="my Variable"
\header{
  composer="The Composer"
  mytitle="Der Wolf, das Lamm, auf der grünen Wiese"
  myfoot ="Footline Page 2"
  title=\markup\normal-text\tiny\fromproperty #'header:mytitle
  }
\paper{
  oddFooterMarkup=\markup{"Footline page 1"\fromproperty#'header:mytitle \fromproperty#'header:title }
  evenFooterMarkup=\markup\concat{\fromproperty#'header:myfoot "  "\italic\myvar}
  }
\repeat unfold500a'
Titel: Antw:Zugriff auf Wert innerhalb \header{}
Beitrag von: Lilysetter am Donnerstag, 3. Juli 2025, 15:38
> Wenn nämlich #'header:title Markup enthält, wird das auch wiederverwendet. Das will man aber nicht unbedingt haben.
Dazu gibt es "Converting markups to strings"  siehe Lilypond-Dokumentation extending.pdf
composerName = \markup \box "Arnold Schönberg"
\markup \composerName \markup \typewriter #(markup->string composerName)