\include en fonction de la version de Lilypond utilisée

Bonjour à tous,

J'utilise `\include "lilypond-lib.ily"` dans mes fichiers lilypond, ce fichier contient différents `\include` pour mes réglages habituels.

J'aimerais pouvoir utiliser 2 versions différentes de lilypond avec ce même fichier, et inclure automatiquement un fichier différent en fonction de la version utilisée (j'imagine bien que ça n'est pas vraiment "règlementaire", mais j'aimerais quand même tester !). Pour l'instant j'ai ce code, mais ça ne fonctionne pas comme je voudrais. Est-ce que quelqu'un a une solution ?

testVersion = #(define-scheme-function ()()
    (let ((version (ly:version)))
       (if (equal? version '(2 25 4))
         (#{ \include "./fonts-dev.ily" #})
         (#{ \include "./fonts.ily" #}))))

\testVersion
%\include "./fonts.ily"
%\include "./fonts-dev.ily"
\include "./layout.ily"
\include "./stylesheet.ily"
\include "./tools.ily"
\include "./chords.ily"

Au passage, je voudrais remercier toute l'équipe pour ces améliorations concernant les polices sur la version 2.25.4 !

Simon

Bonjour Simon,

L'instruction pour faire un \include en scheme est:

(ly:parser-include-string (format #f "\\include \"~A\"\n" "fonts.ily"))

Au plaisir,

Ben

···

Le 1 mai 2023 à 12:41, Simon Martineau <****@****> a écrit :

Bonjour à tous,

J'utilise `\include "lilypond-lib.ily"` dans mes fichiers lilypond, ce fichier contient différents `\include` pour mes réglages habituels.

J'aimerais pouvoir utiliser 2 versions différentes de lilypond avec ce même fichier, et inclure automatiquement un fichier différent en fonction de la version utilisée (j'imagine bien que ça n'est pas vraiment "règlementaire", mais j'aimerais quand même tester !). Pour l'instant j'ai ce code, mais ça ne fonctionne pas comme je voudrais. Est-ce que quelqu'un a une solution ?

testVersion = #(define-scheme-function ()()
  (let ((version (ly:version)))
     (if (equal? version '(2 25 4))
       (#{ \include "./fonts-dev.ily" #})
       (#{ \include "./fonts.ily" #}))))

\testVersion
%\include "./fonts.ily"
%\include "./fonts-dev.ily"
\include "./layout.ily"
\include "./stylesheet.ily"
\include "./tools.ily"
\include "./chords.ily"

Au passage, je voudrais remercier toute l'équipe pour ces améliorations concernant les polices sur la version 2.25.4 !

Simon

Super, merci beaucoup !

Simon

Bonjour,

Bonjour à tous,

J'utilise \include "lilypond-lib.ily" dans mes fichiers lilypond, ce fichier contient différents \include pour mes réglages habituels.

J'aimerais pouvoir utiliser 2 versions différentes de lilypond avec ce même fichier, et inclure automatiquement un fichier différent en fonction de la version utilisée (j'imagine bien que ça n'est pas vraiment "règlementaire", mais j'aimerais quand même tester !). Pour l'instant j'ai ce code, mais ça ne fonctionne pas comme je voudrais. Est-ce que quelqu'un a une solution ?

testVersion = #(define-scheme-function ()()
    (let ((version (ly:version)))
       (if (equal? version '(2 25 4))
         (#{ \include "./fonts-dev.ily" #})
         (#{ \include "./fonts.ily" #}))))

\testVersion
%\include "./fonts.ily"
%\include "./fonts-dev.ily"
\include "./layout.ily"
\include "./stylesheet.ily"
\include "./tools.ily"
\include "./chords.ily"

La solution de Ben fonctionne. Mais ne serait-il pas plus simple de garder un seul fichier fonts.ily qui fonctionne pour les deux versions ? Quelque chose comme ceci devrait le faire :

$(if (ly:version? >= '(2 25 4))
     #{
       \paper {
         fonts.roman = "Noto Serif"
       }
     #}
     #{
       \paper {
         fonts = #(set-global-fonts
                   #:roman "Noto Serif")
       }
     #})

Au passage, je voudrais remercier toute l'équipe pour ces améliorations concernant les polices sur la version 2.25.4 !

Améliorations qui viennent de moi en l'occurrence, donc de rien :slight_smile: (Et ce n'est pas fini, il y a beaucoup de changements de ce côté-là qui sont en train d'être développés...)

Cordialement,

Jean

···

Le lundi 01 mai 2023 à 12:41 +0200, Simon Martineau a écrit :

Merci Jean !

Bonne idée en effet ! Comment insérer #:factor (/ staff-height pt 20) dans la deuxième partie du code ? J’ai essayé de cette manière mais j’ai un message d’erreur :

$(if (ly:version? >= '(2 25 4))
     #{
       \paper {
         fonts.roman = "Noto Serif"
       }
     #}
     #{
       \paper {
         fonts = #(set-global-fonts
                   #:roman "Noto Serif"
                   #:factor (/ staff-height pt 20))
       }
     #})

Dès lors que l'instruction #{ }# ne gère pas la syntaxe usuelle de lilypond, je préfère passer par les \include, cela évite de chercher des heures pour rien, et de se retrouver ensuite à devoir gérer deux syntaxes différentes…

Au plaisir,

Ben

···

Le 1 mai 2023 à 19:47, Simon Martineau <****@****> a écrit :

Merci Jean !

Bonne idée en effet ! Comment insérer #:factor (/ staff-height pt 20) dans la deuxième partie du code ? J’ai essayé de cette manière mais j’ai un message d’erreur :

$(if (ly:version? >= '(2 25 4))
     #{
       \paper {
         fonts.roman = "Noto Serif"
       }
     #}
     #{
       \paper {
         fonts = #(set-global-fonts
                   #:roman "Noto Serif"
                   #:factor (/ staff-height pt 20))
       }
     #})

Ah oui, en effet, il y a une bizarrerie ici (c'est aussi pour cela que la syntaxe a été changée) :

#(define my-staff-height #f)
\paper {
  #(set! my-staff-height staff-height)
}
$(if (ly:version? >= '(2 25 4))
     #{
       \paper {
         fonts.roman = "Noto Serif"
       }
     #}
     #{
       \paper {
         fonts = #(set-global-fonts
                   #:roman "Noto Serif"
                   #:factor (/ my-staff-height (ly:pt 1) 20))
       }
     #})

Cordialement,

Jean

···

Le lundi 01 mai 2023 à 19:47 +0200, Simon Martineau a écrit :

Merci Jean ! Bonne idée en effet ! Comment insérer#:factor (/ staff-height pt 20) dans la deuxième partie du code ? J’ai essayé de cette manière mais j’ai un message d’erreur :

$(if (ly:version? >= '(2 25 4))
     #{
       \paper {
         fonts.roman = "Noto Serif"
       }
     #}
     #{
       \paper {
         fonts = #(set-global-fonts
                   #:roman "Noto Serif"
                   #:factor (/ staff-height pt 20))
       }
     #})