Fonction pour oddFooterMarkup

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 (#<procedure #f ()>): : 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

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.

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 : lilypond-user-fr@gnu.org
Copie à :
Objet : Re: (no subject)

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.


liste de diffusion lilypond-user-fr
lilypond-user-fr@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user-fr

#(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 {" ̶"} } }

}

}

}

}#}))

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.

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 : ****@****
A : lilypond-user-fr@gnu.org, "Remy CLAVERIE" <****@****>
Copie à :
Objet : Re:

#(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 {" ̶"} } }

}

}

}

}#}))

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.