On 24/04/2025 04:29, David F. wrote:
Would it be possible to extend the markupWithHeaders function (from
LSR 467: http://lsr.di.unimi.it/LSR/Item?id=467) so that it included
headers from the \book level? The comments have a TODO to add the
\score level headers. What would it take to add headers from \book
and \bookpart and \score?
Perhaps a solution is to pass the additional headers into the
markupWithHeaders function. Some of the code in LSR467 is copied from
the LilyPond source code, which I have replaced with a call to the LP
function. Make sure myHeaders is defined before songInfo.
\version "2.24"
\language "english"
%% http://lsr.di.unimi.it/LSR/Item?id=467
#(define-markup-command (markupWithHeader layout props markup
extraheader) (markup? module?)
"Interpret the given markup with the header fields added to the props.
This way, one can re-use the same functions (using fromproperty
#'header:field) in the header block and as top-level markup."
(let* (
;; TODO: If we are inside a score, add the score's local
header block, too!
;; Currently, I only use the global header block, stored in
$defaultheader
(scopes (list $defaultheader extraheader))
(prefixed-alist (headers-property-alist-chain scopes))
(props (append prefixed-alist
props
(layout-extract-page-properties layout))))
(interpret-markup layout props markup)))
\header {} %% \markupWithHeader blows up if no top level \header is defined
myHeaders = \header {
title = "My Title"
subtitle = "My Subtitle"
subsubtitle = "My Subsubtitle"
composer = "The Wiz"
}
songInfo = \markup \markupWithHeader
\column { \line { "TITLE:" \fromproperty #'header:title } }
\myHeaders
\book {
\myHeaders
\score {
\new Staff \fixed c'' { c1 }
\layout {}
}
\songInfo
}
--
Timothy Lanfear, Bristol, UK.