Autor Thema: Farbe im markup und Titel  (Gelesen 2330 mal)

iugin

  • Member
Farbe im markup und Titel
« am: Sonntag, 30. Juni 2013, 22:27 »
Hallo, liebe Lilypond Gurus,

zwei Fragen:
1) ich habe (mit sehr viel Mühe, da ich Scheme leider nicht verstehe) folgendes gebastelt:
#(define-markup-command (titleOne layout props text) (string?)
  (interpret-markup layout props
    (markup   
      #:fontsize 4
      #:bold
      ( #:column
        ( text )))))
Wie kann ich den Text jetzt farbig schreiben? Z.b. ähnlich wie rgb-color? Ich weiss, es ist sicher banal, ich schaffe es aber nicht... :)

2) Ich habe ca. 100 Partituren, welche ein Layout-File importieren. Ich kann etwas im Layout.ly ändern, alles kompilieren, und alle Partituren sind dann gleich.
Leider muss ich jetzt den Titel von jeder Partitur (im \header definiert) blau haben (mit bestimmte RGB-Werte). Ist es möglich etwas in meinem Layout.ly einzufügen, damit beim Neukompilieren, alle Titel farbig werden? Wenn ja, wie?

Meine Lilypond-Version ist 16.0.2.

Ich wünsche euch einen schönen Abend, und danke euch für eure Hilfe sehr.

Liebe Grüsse

Eugenio

eluze

  • Member
Re: Farbe im markup und Titel
« Antwort #1 am: Sonntag, 30. Juni 2013, 23:42 »

zwei Fragen:
1) ich habe (mit sehr viel Mühe, da ich Scheme leider nicht verstehe) folgendes gebastelt:

Wie kann ich den Text jetzt farbig schreiben? Z.b. ähnlich wie rgb-color? Ich weiss, es ist sicher banal, ich schaffe es aber nicht... :)
hallo Eugenio

zu frage 1:

#(define-markup-command (titleOne layout props text) (string?)
  (interpret-markup layout props
    (markup   
      #:fontsize 4
      #:bold
      ( #:column
        ( #:with-color blue text )))))
oder die rgb farben benutzen (s. NR … ev. list of colors)

zu frage 2:

da müsste man am odd/evenHeaderMarkup rumbasteln - dafür bin ich aber jetzt zu müde  ::)

Eluze

harm6

  • Member
Re: Farbe im markup und Titel
« Antwort #2 am: Montag, 1. Juli 2013, 00:52 »
Hallo Eugenio,

im Prinzip hat Eluze absolut korrekt geantwortet.

Allerdings würde ich nicht string? abfragen sondern markup?
Ein string ist hier viel zu limitiert in der Anwendung.

Warum nicht die Farbe als Variable setzen.
Btw, rgb-Farben im Markup funktionieren simpelst:
  \with-color #'(0 0 1)

Es ist in LilyPond nicht üblich den Namen für das markup-command als camelCase zu schreiben.
Benutze besser: title-one

Miitlerweile ist es möglich an manchen Stellen LilyPond-Syntax in scheme/guile zu benutzen. Das vereinfacht die Sache.

Dein markup-command könnte dann so aussehen:

#(define-markup-command (title-one layout props color text) (color? markup?)
  (interpret-markup layout props
        #{
        \markup
          \fontsize #4 \bold
          \with-color #color
           \column {
            #text
           }
        #}))
Obwohl ich mich frage was das \column hier soll!?

Um den Titel neu zu definieren mußt Du das bookTitleMarkup aus /ly/titling-init.ly neu definieren.

D.h.
Kopiere dort heraus und füge es in Dein layout-file ein.
Verändere es nach Deinen Wünschen und benenne es neu. Z.B. `bookBlueTitleMarkup'
Aktiviere es in \paper mit
\paper {
bookTitleMarkup = \bookBlueTitleMarkup
}

Sollen page-header auch blau werden? Dann muß Du da auch noch ran, habe ich mir jetzt gespart.

Im folgenden ein komplettes Beispiel. Wobei mir nicht ganz klar ist, ob Du nur den Titel oder den ganzen header einfärben möchtest.
Beide Möglichkeiten sind kodiert (siehe Kommentare im Code), aktiv eingefärbt ist im Moment nur der Titel.

Allerdings stellt sich mir die Frage, warum Du überhaupt ein neues markup-command schreibst. Du könntest die gewünschten Änderungen doch auch direkt im `bookBlueTitleMarkup' vornehmen.

\version "2.16.2"

#(define-markup-command (title-one layout props color text) (color? markup?)
  (interpret-markup layout props
        #{
        \markup
          \fontsize #4 \bold
          \with-color #color
           \column {
            #text
           }
        #}))

bookBlueTitleMarkup = \markup {
  % Um den kompletten header einzufärben benutze:
  % \title-one #'(0 0 1)
  \override #'(baseline-skip . 3.5)
  \column {
    \fill-line { \fromproperty #'header:dedication }
    \override #'(baseline-skip . 3.5)
    \column {
      \fill-line {
        \huge \larger \larger \bold
        % Um nur den Titel einzufärben benutze:
        \title-one #'(0 0 1)
        \fromproperty #'header:title
      }
      \fill-line {
        \large \bold
        \fromproperty #'header:subtitle
      }
      \fill-line {
        \smaller \bold
        \fromproperty #'header:subsubtitle
      }
      \fill-line {
        \fromproperty #'header:poet
        { \large \bold \fromproperty #'header:instrument }
        \fromproperty #'header:composer
      }
      \fill-line {
        \fromproperty #'header:meter
        \fromproperty #'header:arranger
      }
    }
  }
}





       
\paper {
bookTitleMarkup = \bookBlueTitleMarkup
}

\header {
title = "DIESER TITEL IST BLAU"
subtitle = "Subtitle"
composer = "Composer"
}
       
\markup \title-one #red #"Dieses Markup ist rot"

Gruß,
  Harm

P.S.
Zitat von: Eugenio
Meine Lilypond-Version ist 16.0.2.
Diese Version möchte ich auch haben. ;)



« Letzte Änderung: Montag, 1. Juli 2013, 01:01 von harm6 »

eluze

  • Member
Re: Farbe im markup und Titel
« Antwort #3 am: Montag, 1. Juli 2013, 11:12 »
danke, Harm, für diese richtigstellung - als nicht-Schemer ist mir das überhaupt nicht aufgefallen  ;) - Eluze

iugin

  • Member
Re: Farbe im markup und Titel
« Antwort #4 am: Montag, 1. Juli 2013, 14:05 »
Hallo miteinander,

danke für die schnelle Antwort!
Zitat
    Meine Lilypond-Version ist 16.0.2.
Diese Version möchte ich auch haben
:D Ich auch... es war einfach spät und ich war tot müde... Sorry...

Also, ich werde so schnell wie möglich schauen, wie es funktioniert.
Zur präzisierung: titleOne (oder eben title-one) ist eine Art Untertitel, der zwischen versch. \score-blocks kommt. Da es ca. 100 Partituren sind, habe ich titleOne, -Two, und -Three definiert, damit alles gleich aussieht.
Deswegen ein neues markup-command.
Wieso \column? Keine Ahnung. Ist vielleicht geblieben von tausendmal ändern... eben: von Scheme leider keine Ahnung (ich bin irgendwie zu blöd) :)

Was ich blau brauche ist nur den Titel vom Stück (im \header), und kein Composer, Subtitle und so.

Auf jeden Fall, morgen probiere ich alles, obwohl ich schon weiss, dass es super funktionieren wird!

Ciao a tutti

Eugenio