[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Displaying typesetting information at compile time
From: |
Jean Abou Samra |
Subject: |
Re: Displaying typesetting information at compile time |
Date: |
Sun, 20 Mar 2022 18:43:11 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 |
Le 20/03/2022 à 17:43, Richard Shann a écrit :
I wonder if someone could suggest how to get LilyPond to emit various
bits of information about the score it is typesetting. Specifically can
it be persuaded to display the number of pages in the output PDF and
the total number of systems?
The idea would be to guide the user as to suitable values for
\paper {
system-count = xx
page-count = yy
}
without having to count up the number of systems (pages is not really a
problem of course).
Richard Shann
Not sure if there's a more elegant way, but you could try
\version "2.22.2"
markWithPageInfo =
%% Must not get called before line breaking
\tweak X-extent #'(0 . 0)
\tweak Y-extent #'(0 . 0)
\tweak horizontal-skylines
#(ly:make-unpure-pure-container
ly:grob::simple-horizontal-skylines-from-extents)
\tweak vertical-skylines
#(ly:make-unpure-pure-container
ly:grob::simple-vertical-skylines-from-extents)
\tweak stencil
#(lambda (grob)
(let* ((sys (ly:grob-system grob))
;; No broken pieces for systems ...
(alignment (ly:grob-object sys 'vertical-alignment))
(all-alignments (ly:spanner-broken-into (ly:grob-original
alignment)))
(all-systems (map ly:grob-system all-alignments))
(n-systems (length all-systems))
(all-pages (map (lambda (s) (ly:grob-property s 'page-number))
all-systems))
(n-pages (1+ (- (apply max all-pages)
(apply min all-pages))))
(layout (ly:grob-layout grob))
(defs (append `((n-systems . ,(number->string n-systems))
(n-pages . ,(number->string n-pages)))
(ly:output-def-lookup layout 'text-font-defaults)))
(props (ly:grob-alist-chain grob defs))
(text (ly:grob-property grob 'text)))
(interpret-markup layout props text)))
\mark \etc
{
\markWithPageInfo \markup { Have \fromproperty #'n-systems systems on
\fromproperty #'n-pages pages }
\repeat unfold 20 { 1 1 \break }
}
Jean
- Displaying typesetting information at compile time, Richard Shann, 2022/03/20
- Re: Displaying typesetting information at compile time,
Jean Abou Samra <=
- Re: Displaying typesetting information at compile time, Richard Shann, 2022/03/20
- Re: Displaying typesetting information at compile time, Jean Abou Samra, 2022/03/20
- Re: Displaying typesetting information at compile time, Richard Shann, 2022/03/21
- Re: Displaying typesetting information at compile time, Jean Abou Samra, 2022/03/21
- Re: Displaying typesetting information at compile time, Richard Shann, 2022/03/22
- Re: Displaying typesetting information at compile time, Jean Abou Samra, 2022/03/22