Autor Thema: Wie füge ich in einer Instrumentalstimme eine Leerseite ein?  (Gelesen 5729 mal)

juppes

  • Member
Re: Wie füge ich in einer Instrumentalstimme eine Leerseite ein?
« Antwort #15 am: Sonntag, 28. Oktober 2012, 16:21 »
hallo Harm,

grippebedingt komme ich erst heute dazu, Deine Vorschläge zu probieren. Die gute Nachricht zuerst: beinahe alles hat sich mit den Toplevel-Spacing-Einstellungen erledigt. Außerdem hat eine nochmalige genaue Betrachtung der Boxes ergeben, daß eine Markup-Leerzeile, die ich bei "instrument" als centercolum eingetragen hatte, zu einer Leerzeile in der Box führte, die als Nebeneffekt einen guten Abstand auch auf der linken Seite zwischen Seitenzahl und Taktzahl hatte. Ich brauchte sie aber im Titel, weil sonst Untertitel und Instrumentenangabe zu eng beieinander gestanden hätten. Diese Leerzeile habe ich nun an den Untertitel gehängt, was am Aussehen des Titels nichts ändert, aber die Kopfzeilen der bookparts vereinheitlicht.
Aus mir unerfindlichen Gründen wurde diese Leerzeile in der Instrumentenangabe nun nach der Leerseite nicht wieder übernommen, so daß dort dann Seitenzahl und Taktzahl auf den linken Seiten zu eng standen.

Jetzt bleibt noch ein kleiner Rest, und ich hoffe, auch den kannst Du mir noch helfen wegzubekommen:

auf der "Titelseite" des bookpart nach der Leerseite stehen Seitenzahl und Instrumentenangabe nicht wie sonst immer in einer Zeile oder innerhalb der Box. Diesen bookpart hatten wir angewiesen, nicht noch einmal den vollen Titel, sondern nur noch die Instrumentenangabe in der Kopfzeile wie auf den anderen Folgeseiten im bookpart vor der Leerseite zu übernehmen. Nur dort steht die Seitenzahl allein in der Box und das Instrument drunter. Hat sicher was mit der Tatsache zu tun, daß diese Seite als Titelseite oder Erste Seite gesehen wird.

Gäbe es eine Möglichkeit, das auch noch zu vereinheitlichen und das Instrument wieder in die Box zur Seitenzahl zu verpflanzen?

Im bookpart vor der Leerseite stört das ja nicht, weil eben das ganze vollständige Titelgedöns steht. Erst ohne Gedöns fällt es auf.

Bin auf Deine Antwort gespannt
« Letzte Änderung: Sonntag, 28. Oktober 2012, 19:48 von juppes »

juppes

  • Member
Re: Wie füge ich in einer Instrumentalstimme eine Leerseite ein?
« Antwort #16 am: Sonntag, 28. Oktober 2012, 20:45 »
hallo Harm,

unbedingt noch ein Nachtrag und eine viel einfachere Frage mit Codebeispiel danach:

Vergiß den größten Teil des im vorigen Post Geschriebenen wieder. Ich habe die Ursache dessen gefunden, was ich noch beseitigen wollte: ich hatte mir irgendwann einen Header für das betreffende Bookpart gebaut mit Formatierungen. Darum hatte der auch exakt die Größe von den in den Boxen stehenden Header-Strings. Das war nur eine Krücke, die ich vergessen hatte. Habe lange an diesem Projekt gearbeitet und mal wieder den Überblick verloren...

Die Frage lautet: warum wird nach der Leerseite der Header-String von vorher nicht wieder übernommen?
Zum Diagnostizieren habe ich ein Beispiel mit meiner Konstellation/Struktur gebaut. Was fehlt da?

harm6

  • Member
Re: Wie füge ich in einer Instrumentalstimme eine Leerseite ein?
« Antwort #17 am: Sonntag, 28. Oktober 2012, 22:56 »
Hallo juppes,

Zitat
Die Frage lautet: warum wird nach der Leerseite der Header-String von vorher nicht wieder übernommen?

Die dumme Antwort lautet: weil Du es so geschrieben hast.. ;)

Etwas ausführlicher:

Du hast im dritten bookpart folgenden page-header definiert:

     oddHeaderMarkup = \markup \box
      \fill-line {
        \on-the-fly #print-page-number-check-first \fromproperty #'page:page-number-string
        \on-the-fly #not-part-first-page \fromproperty #'header:instrument " "
      }

Also wird auf der ersten  Seite des neuen bookparts kein instrument geschrieben.
Diese Angabe einfach streichen.

Ansonsten:
Es wird nie ein Header von einem in den anderen bookpart übernommen. Falls im neuen bookpart kein header definiert wurde, wird auf den book-header zurückgegriffen. Falls der nicht definiert ist, dann wird der default aus titling-init.ly genommen. Für andere toplevel-Angaben wie \paper, \layout gilt das gleiche.

Du brauchst die Definitionen für `not-part-first-page´ etc nicht in jedes \paper zu schreiben. einmal ganz oben genügt.

Auf der leeren Seite habe ich die \pageBreak-Angaben gelöscht, sie sind nicht nur überflüssig, da der \bookpart schon für den Seitenumbruch sorgt, sondern sie haben sogar zu zwei leeren Seiten geführt.

Im \paper der leeren Seite habe ich noch
    bookTitleMarkup = ##f
eingefügt, da sonst der bookheader auf die eigentlich leere Seite geschrieben wird.

\version "2.14.2"

#(define (not-part-first-page layout props arg)
   (if (not (= (chain-assoc-get 'page:page-number props -1)
               (ly:output-def-lookup layout 'first-page-number)))
       (interpret-markup layout props arg)
       empty-stencil))

#(define (print-page-number-check-part-first layout props arg)
   (if (or (not (= (chain-assoc-get 'page:page-number props -1)
                   (ly:output-def-lookup layout 'first-page-number)))
           (eq? (ly:output-def-lookup layout 'print-first-page-number) #t))
       (create-page-number-stencil layout props arg)
       empty-stencil))
           
\include "deutsch.ly"

\header {
  title = "Titel"
  subtitle = \markup \center-column { "Untertitel" " "}
  instrument = "Tenor"
}

\paper {
   #(set-paper-size "henle")
       outer-margin =25\mm
       inner-margin = 18\mm
       two-sided = ##t
       annotate-spacing = ##f
       ragged-bottom = ##f
       top-margin = 10\mm
       bottom-margin = 15\mm
       ragged-last-bottom = ##t
       
       top-system-spacing #'basic-distance = #4
       top-system-spacing #'minimum-distance = #4
       top-system-spacing #'padding = #4
       
       top-markup-spacing #'basic-distance = #4
       top-markup-spacing #'minimum-distance = #4
       top-markup-spacing #'padding = #4
       
 
}
 
\book {
    \bookpart {
     
       \paper {
          oddHeaderMarkup = \markup \box
          \fill-line {
            \on-the-fly #print-page-number-check-first \fromproperty #'page:page-number-string
            \on-the-fly #not-part-first-page \fromproperty #'header:instrument " "
           
          }
       
          evenHeaderMarkup = \markup \box
          \fill-line {
            \on-the-fly #print-page-number-check-first \fromproperty #'page:page-number-string
            \on-the-fly #not-part-first-page \fromproperty #'header:instrument  " "
           
          }
       }
      \relative c' { c1 \pageBreak c } 
    }
   
    \bookpart {
      \markup { \null }

      \paper {
        bookTitleMarkup = ##f
        evenHeaderMarkup = \markup { \null }
        oddHeaderMarkup = \markup { \null }
        evenFooterMarkup = \markup { \null }
        oddFooterMarkup = \markup { \null }
      }
    }
   
   
    \bookpart {
      \paper {
         oddHeaderMarkup = \markup \box
          \fill-line {
            \on-the-fly #print-page-number-check-first \fromproperty #'page:page-number-string
            %\on-the-fly #not-part-first-page
            \fromproperty #'header:instrument " "
          }
         
          evenHeaderMarkup = \markup \box
          \fill-line {
            \on-the-fly #print-page-number-check-first \fromproperty #'page:page-number-string
            %\on-the-fly #not-part-first-page
            \fromproperty #'header:instrument  " "
          } 
      }
     
      \relative c' { cis1 \pageBreak ces }

    }
}
 

Gruß,
  Harm

P.S.
Ich meine irgendwo gelesen zu haben, daß deutsche Umlaute in file-Namen schon mal Probleme bereiten. Sollte man vermeiden.

juppes

  • Member
Re: Wie füge ich in einer Instrumentalstimme eine Leerseite ein?
« Antwort #18 am: Montag, 29. Oktober 2012, 09:16 »
hallo Harm,

ich zitiere aus der Johannes-Passion:
Zitat
Was ich geschrieben habe, das habe ich geschrieben.

Daß das so einfach ist, hätte ich nie gedacht. Die von Dir bezeichnete Anweisung hatte ich natürlich auch im Verdacht. Da ich aber von Scheme (darum handelt es sich doch, oder?) keine Ahnung habe, habe ich lieber die Finger davon gelassen. Man soll nicht an etwas herumschrauben, das man nicht versteht...

Danke auch fuer den Hinweis auf die Umlaute in Dateinamen. Das war mir nicht bekannt, und ich habe es auch noch nie erlebt. Ich glaube Dir aber gerne - mir scheint, Du bist Programmierer, zumindest auch das.

Wenn das hier das Restproblemchen löst, vovon ich ausgehe, kann ich Dir nur noch einmal sehr herzlich danken für all Deine Mühe und den Zeitaufwand, der damit verbunden war. Ich habe hierbei sehr viel Nützliches gelernt und ein paar neue Techniken und Verfahren, die mir auch in Zukunft helfen werden.

Als Lohn der Mühe würde ich gerne Deine Initiative Kastrup-Sponsoring unterstützen, die ich sehr sinnvoll finde. Hast Du eine Bankverbindung oder muß ich ihn selber kontaktieren?

harm6

  • Member
Re: Wie füge ich in einer Instrumentalstimme eine Leerseite ein?
« Antwort #19 am: Montag, 29. Oktober 2012, 13:37 »
Hallo juppes,

Zitat
Da ich aber von Scheme (darum handelt es sich doch, oder?) keine Ahnung habe, habe ich lieber die Finger davon gelassen.

Nunja, scheme ist die Erweiterungssprache von LilyPond.
Tatsächlich ist die LilyPond-Syntax und scheme eng verwoben: jeder LilyPond-Ausdruck der mit "#" eingeleitet wird ist ein scheme-Ausdruck.
Meistens handelt es sich natürlich nur um einfache Daten wie in
  \override NoteHead #'extra-offset = #'(-3 . 3)
'(-3 . 3) ist ein pair und somit eine native scheme-Daten-Struktur.

#not-part-first-page ist dann natürlich auch ein scheme Ausdruck. Er ist allerdings nur der Name der Definition, die aufgerufen werden soll.

Zitat
mir scheint, Du bist Programmierer,

Hier irrst Du Dich. :)
Ich bin Musiker und Musikschullehrer und bevor ich mit LilyPond anfing hatte ich keinerlei Programmiererfahrung.
Da ich nach einiger Zeit der Benutzung jedoch immer wieder feststellen mußte, daß nicht alles was ich benötigte als default erhältlich war, habe ich angefangen scheme zu lernen, um es selbst zu bauen.
Sehr hilfreich dabei ist im Forum jedes gepostete Problem zu bedenken und eine Lösung zu versuchen.
Kann ich nur empfehlen. ;)

Zitat
Als Lohn der Mühe würde ich gerne Deine Initiative Kastrup-Sponsoring unterstützen, die ich sehr sinnvoll finde. Hast Du eine Bankverbindung oder muß ich ihn selber kontaktieren?

Du solltest ihn direkt (auf deutsch) kontaktieren.
e-mail-Adresse ist hier zu finden:
http://lilypond.org/doc/v2.17/Documentation/web/sponsoring


Gruß,
  Harm