"Retour à la ligne" en Scheme

Bonjour à tous,

Je débute en Scheme. Pour me faire la main, j'essaye d'écrire une fonction qui affiche deux lignes l'une en dessous de l'autre. Simple en apparence, mais je bute. Le code ci-dessous produit deux lignes qui se suivent et non deux lignes qui se superposent.

#(define-markup-command (two-lines layout props nameI nameII) (string? string?)

(interpret-markup layout props ( markup

(markup (#:override '(font-name . "Times New Roman")

#:abs-fontsize 28 #:italic #:medium nameI ))

(markup "\n")

(markup (#:override '(font-name . "Times New Roman")

#:abs-fontsize 28 #:italic #:medium nameII ))

)

)

)

L'un de vous peut-il me guider (Je suis en version 2.16.2).

Merci,

Bonne journée,

Rémy

Bonjour à tous,

bonjour Rémy,

Je débute en Scheme. Pour me faire la main, j'essaye d'écrire une fonction qui affiche deux lignes l'une en dessous de l'autre. Simple en apparence, mais je bute. Le code ci-dessous produit deux lignes qui se suivent et non deux lignes qui se superposent.

#(define-markup-command (two-lines layout props nameI nameII) (string? string?)

(interpret-markup layout props ( markup

(markup (#:override '(font-name . "Times New Roman")

#:abs-fontsize 28 #:italic #:medium nameI ))

(markup "\n")

(markup (#:override '(font-name . "Times New Roman")

#:abs-fontsize 28 #:italic #:medium nameII ))

)

)

)

L'un de vous peut-il me guider (Je suis en version 2.16.2).

Nous en sommes à la version 2.19... Je pense que tu devrais mettre ta
version de lilyponr à jour.

Moi, je n'y connais rien en Scheme mais le "mot" qui permet de mettre
deux textes l'un au dessus de l'autre chez Lilypond est "\column".

Peut être suffit il de le rajouter tout de suite après le dernier
(markup), tel que :

(markup column (#:override '(font-name . "Times New Roman") ...

Essaie et tu verras bien. :slight_smile:
(j'ai placé ce bout de code en scheme dans une partition finie et la
compilation ne me présente pas d'erreur !)

Bonne chance

···

Le 27/02/2018 à 05:15, Remy CLAVERIE a écrit :

--

JJG

#(define-markup-command (two-lines layout props nameI nameII) (string? string?)

(interpret-markup layout props ( markup

(markup (#:override '(font-name . "Times New Roman")

#:abs-fontsize 28 #:italic #:medium nameI ))

(markup "\n")

(markup (#:override '(font-name . "Times New Roman")

#:abs-fontsize 28 #:italic #:medium nameII ))

Moi, je n'y connais rien en Scheme mais le "mot" qui permet de mettre
deux textes l'un au dessus de l'autre chez Lilypond est "\column".

Oui, c'est du genre (si mes souvenirs sont bon)
(#:column (list
     arg1
     arg2
     ...))

···

--
Gilles

Merci à Jean-jacques qui m'a bien aiguillé !

Voici ce qui fonctionne chez moi:

#(define-markup-command (two-lines layout props nameI nameII) (markup? markup? )

(interpret-markup layout props

( markup

(markup #:line

(#:right-column

(#:override '(font-name . "Gentium Book Basic")

(#:abs-fontsize 28 #:italic #:medium nameI )

#:abs-fontsize 28 "\n"

#:override '(font-name . "Gentium Book Basic")

(#:abs-fontsize 28 #:italic #:medium nameII )

)

)

)

)

)

)

Merci à tous,

Rémy

···

Message du 27/02/18 10:57
De : "Gilles Thibault" <****@****>
A : "Jean-Jacques Gerbaud" <****@****>
Copie à : "Remy CLAVERIE" <****@****>, "Mialing list Lilypond" lilypond-user-fr@gnu.org, "lilypond-user-fr" <lilypond-user-fr-bounces+gillesth=****@****>
Objet : Re: "Retour à la ligne" en Scheme

#(define-markup-command (two-lines layout props nameI nameII) (string?
string?)

(interpret-markup layout props ( markup

(markup (#:override '(font-name . "Times New Roman")

#:abs-fontsize 28 #:italic #:medium nameI ))

(markup "\n")

(markup (#:override '(font-name . "Times New Roman")

#:abs-fontsize 28 #:italic #:medium nameII ))

Moi, je n'y connais rien en Scheme mais le "mot" qui permet de mettre
deux textes l'un au dessus de l'autre chez Lilypond est "\column".

Oui, c'est du genre (si mes souvenirs sont bon)
(#:column (list
arg1
arg2
...))

--
Gilles

Voici ce qui fonctionne chez moi:
#(define-markup-command (two-lines layout props nameI nameII) (markup? markup? )
(interpret-markup layout props
( markup
(markup #:line ;; pourquoi 2 markup ?
(#:right-column
(#:override '(font-name . "Gentium Book Basic")
(#:abs-fontsize 28 #:italic #:medium nameI )
#:abs-fontsize 28 "\n" ;; du coup ça ne sert plus à rien.
#:override '(font-name . "Gentium Book Basic")
(#:abs-fontsize 28 #:italic #:medium nameII )
)

Hum, on peut sûrement optimiser un peu, si nameI et nameII ont les même réglages :

#(define-markup-command (two-lines layout props nameI nameII) (markup? markup? )
(interpret-markup layout props
   (markup
     #:override '(font-name . "Gentium Book Basic")
       #:abs-fontsize 28 #:italic #:medium
         #:right-column (nameI nameII))))

\markup \two-lines #"ligne 1" #"ligne 2"

Note :
Le (markup #:line ...) est inutile sous 2.19, mais peut-être que ça ne l'était pas sous 2.16. Je ne me rappelle plus.

···

--
Gilles