Subject: Fonction pour oddFooterMarkup

From: Remy CLAVERIE <[email-masked]>
Date: Thu, 7 Aug 2014 09:10:48 +0200 (CEST)

Bonjour à tous,

Grâce à votre aide, il y a quelques temps, j'ai pu redéfinir la fonction oddFooterMarkup ainsi :

oddFooterMarkup=\markup {

\fill-line { 

\center-column {

\on-the-fly #part-last-page \fromproperty #'header:tagline

\line { \on-the-fly #not-part-last-page { {" ̶"} \on-the-fly #print-page-number-check-first \bookpart-page-number {" ̶"} } }

} 

}

}

La variable 'not-part-last page' est défini dans une fonction séparée.

Je souhaiterai maintenant, écrire une commande qui réalise ce bas de page ; ainsi, j'aurais un bout de code plus facilement réutilisable. Pour ce faire, je pensais simplement écrire :

#(define-markup-command (MyoddFooterMarkup layout props) ()

(interpret-markup layout props

#{\markup { 

\fromproperty #'paper:oddFooterMarkup=\markup {

\fill-line { 

\center-column {

\on-the-fly #part-last-page \fromproperty #'header:tagline

\line { \on-the-fly #not-part-last-page { {" ̶"} \on-the-fly #print-page-number-check-first \bookpart-page-number {" ̶"} } }

} 

}

}

}#}))

Or, cela ne fonctionne pas à cause (apparemment) des variables 'part-last-page' et 'not-part-last-page'. Voici l'erreur renvoyé par Lylipond :

Dessin des systèmes...: In expression (#
): : Unbound variable: part-last-page

L'un de vous peut-il m'expliquer mon erreur ? Est-ce un \fromproperty qui manque ?

Merci de votre aide !

La définition de commandes et de fonction sous Lylipond n'est quand même pas simple du tout....

Rémy

---

From: Seventies <[email-masked]>
Date: Thu, 7 Aug 2014 05:02:37 -0700 (PDT)

Bonjour Rémy,

Voici un code transmis par Xavier, pour les headers et footers. Je n'en
comprends pas toutes les subtilités, mais tout fonctionne parfaitement :

#(define (not-last-page layout props arg)
    (if (not (book-last-page? layout props))
         (interpret-markup layout props arg)
        empty-stencil))

  print-page-number = ##t

  evenHeaderMarkup = \markup {
    \column {
      \fill-line {
        {
          \abs-fontsize #10 \on-the-fly #print-page-number-check-first
          \fromproperty #'page:page-number-string
        }
        {
          \center-column {
            \lower #2 \fontsize #-1 \thisPart
          }
        }
        {
          " "
        }
      }
    }
  }

  oddHeaderMarkup = \markup {
    \column {
      \fill-line {
        {
          " "
        }
        {
          \center-column {
            \lower #2 \fontsize #-1 \thisPart
          }
        }
        {
          \abs-fontsize #10 \on-the-fly #print-page-number-check-first
          \fromproperty #'page:page-number-string
        }
      }
    }
  }

  evenFooterMarkup = \markup {
    \column {
      \fill-line {
        %% Copyright header field only on first page.
        \on-the-fly #first-page \firstCopyRight
      }
      %% Ajout footer sur toutes les pages SAUF la toute première
      %% et la toute dernière page
      \center-column {
        \on-the-fly #not-first-page \on-the-fly #not-last-page
        { \thisBigTitle }
         \on-the-fly #not-first-page \on-the-fly #not-last-page
        { \reference }
      }
      %% Fin footer ajouté
      \fill-line {
        %% Tagline header field only on last page.
        \on-the-fly #last-page \fromproperty #'header:tagline
      }
    }
  }

  oddFooterMarkup = \markup {
    \column {
      \fill-line {
        %% Copyright header field only on first page.
        \on-the-fly #first-page \firstCopyRight
      }
      %% Ajout footer sur toutes les pages SAUF la toute première
      %% et la toute dernière page
      \center-column {
        \on-the-fly #not-first-page \on-the-fly #not-last-page
        { \thisBigTitle }
         \on-the-fly #not-first-page \on-the-fly #not-last-page
        { \reference }
      }
      %% Fin footer ajouté
      \fill-line {
        %% Tagline header field only on last page.
        \on-the-fly #last-page \fromproperty #'header:tagline
      }
    }
  }

Les variables telles que thisPart, firstCopyRight, ... doivent avoir été
définies, d'autres telles que tagLine doivent être définies dans le bloc
\header.

Cordialement,

Jean-François

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/no-subject-tp7581584p7581585.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Remy CLAVERIE <[email-masked]>
Date: Thu, 7 Aug 2014 17:02:08 +0200 (CEST)

Bonjour Jean-François,

Merci de cette réponse, mais il me semble que le pb provient de l'utilisation de 'define-markup-command' car la variable 'last-part-page' n'est pas accessible dans ce cas.

Merci pour tout,

Rémy

> Message du 07/08/14 14:18
> De : "Seventies" 
> A : [email-masked]
> Copie à : 
> Objet : Re: Fonction pour oddFooterMarkup
> 
> Bonjour Rémy,
> 
> _______________________________________________
> liste de diffusion lilypond-user-fr
> [email-masked]
> https://lists.gnu.org/mailman/listinfo/lilypond-user-fr
>

---

From: [email-masked]
Date: Mon, 11 Aug 2014 23:43:39 +0200

> \line { \on-the-fly #not-part-last-page { {" ̶"} \on-the-fly
> #print-page-number-check-first \bookpart-page-number {" ̶"} } }
> 
> }
> 
> }
> 
> }
> 
> }#}))
> 
Bonjour.
Je ne peux pas expliquer le message d'erreur mais il y a un problème dans  le 
\markup. Le = n'est pas une commande markup

Il faut sûrement enlever la partie 
 \fromproperty #'paper:oddFooterMarkup=\markup {

#(define-markup-command (MyoddFooterMarkup layout props) ()
(interpret-markup layout props
#{\markup {
\fill-line {
\center-column {
\on-the-fly #part-last-page \fromproperty #'header:tagline
\line { \on-the-fly #not-part-last-page { {" ̶"} \on-the-fly #print-page-number-
check-first \bookpart-page-number {" ̶"} } }
}
}
}#}))

(J'ai pas vérifié si le nombre de { et } correspondent.

---

From: Remy CLAVERIE <[email-masked]>
Date: Tue, 12 Aug 2014 15:18:21 +0200 (CEST)

Merci Gilles pour ce coup de main.

Je vais tester ça rapidement et vous tiendrait au courant.

Merci !

Rémy

> Message du 11/08/14 23:43
> De : [email-masked]
> A : [email-masked], "Remy CLAVERIE" 
> Copie à : 
> Objet : Re:
> 
>