• Willkommen im Forum „Archiviertes Lilypond Forum (2017)“.
 

Dies ist das Archiv des alten Forums (bis März 2017). Das aktuelle Forum ist unter lilypondforum.de zu finden.
This is the archive of the old forum (until March 2017). You can find the current forum at lilypondforum.de.

Hauptmenü

Copyright auf jeder Seite

Begonnen von Jolander, Dienstag, 4. Juni 2013, 15:14

Vorheriges Thema - Nächstes Thema

Jolander

Hallo an Alle,

ich arbeite mit \book und \bookpart an einem Sammelband. Jedes Stück bekommt eine neue Seite, auf jeder Seite werden die Infos der Kopfzeile der jeweiligen externen header.ly übernommen, die ich mit \include "header.ly" in das jeweilige \bookpart einbinde.

Nur das Copyright wehrt sich krampfhaft.

Einzig das Copyright auf der ersten Seite des \book wird gedruckt alle anderen Seiten bleiben ohne Copyright.

Wo ist mein denkfehler?

Gruß
Guido

Be-3

#1
Hallo Guido,

das hängt an der Standard-Fußzeilendefinition:

oddFooterMarkup = \markup {
  \column {
    \fill-line {
      %% Copyright header field only on first page.
      \on-the-fly #first-page \fromproperty #'header:copyright
    }
    \fill-line {
      %% Tagline header field only on last page.
      \on-the-fly #last-page \fromproperty #'header:tagline
    }
  }
}


Der Zusatz \on-the-fly #first-page vor der Ausgabe des Copright-Hinweises bewirkt, daß dieser nur auf der ersten Seite gedruckt wird - da kannst Du Dich auf den Kopf stellen, es hilft nichts ;)

Abhilfe: Definiere Dein eigenes oddFooterMarkup. Dann kannst Du dort reinschreiben, was Du wann und wo möchtest.

Wenn die Fußzeilen auf geraden Seiten genauso aussehen sollen, mußt Du nichts weiter tun, denn es wird automatisch der Inhalt von oddFooterMarkup gedruckt, wenn evenFooterMarkup undefiniert ist.

Viele Grüße
Torsten


PS: OK, vielleicht sollte ich noch eine mögliche "Auflösung" verraten, diese Auf-der-Fliege-Funktionen scheinen ja nicht besonders glasklar beschrieben zu sein:
Man ersetze #first-page durch #part-first-page, dann erscheint der Copyright-Hinweis immer auf der ersten Seite eines Bookparts, nicht nur des gesamten Books.
Entsprechendes gilt auch für #last-page und #part-last-page.

\paper {
  oddFooterMarkup = \markup {
    \column {
      \fill-line {
        %% Copyright header field only on first page.
        \on-the-fly #part-first-page \fromproperty #'header:copyright
      }
      \fill-line {
        %% Tagline header field only on last page.
        \on-the-fly #last-page \fromproperty #'header:tagline
      }
    }
  }
}

Jolander

Zitat\paper {
  oddFooterMarkup = \markup {
    \column {
      \fill-line {
        %% Copyright header field only on first page.
        \on-the-fly #part-first-page \fromproperty #'header:copyright
      }
      \fill-line {
        %% Tagline header field only on last page.
        \on-the-fly #last-page \fromproperty #'header:tagline
      }
    }
  }
}

Danke für die rasche Antwort, muss aber, aus fehlender Gelegenheit das sofort auszuprobieren nachfragen:

Ich baue den vorstehenden Schnipsel nur ein mal in die \book Umgebung ein, (da wo ich Papierformat und Blattaufteilung, Blattränder u.a. anlege) oder gehört das in jedes \bookpart?

Gruß
Guido

Be-3

Zitat von: Jolander am Mittwoch,  5. Juni 2013, 07:53
Ich baue den vorstehenden Schnipsel nur ein mal in die \book Umgebung ein, (da wo ich Papierformat und Blattaufteilung, Blattränder u.a. anlege) oder gehört das in jedes \bookpart?

Die Fußzeilen-Definition soll ja für das komplette Book gelten (ist im wahrsten Sinne des Wortes bookpart-überspannend), deshalb am besten mit in die globale Paper-Umgebung packen, so, wie Du es schreibst.

Viele Grüße
Torsten

Jolander


Jolander

Nachfrage:

Ich möchte nun in jeder bookpart Umgebung mehre Stücke auf eine Seite setzen. Dazu nutze ich den Befehl print-all+headers, so wie es in diesem Forum beschrieben ist. Zusätzlich möchte ich zu jedem Stück aber auch das copyright ausgeben.

Geht das?

Gruß
Guido

harm6

Hallo,

wie soll es aussehen?

So?

<Seite 1>

  <Titel 1>
  <Noten 1>
  <copyright 1>

  <Titel 2>
  <Noten 2>
  <copyright 2>

  <Titel 3>
  <Noten 3>
  <copyright 3>

<Seite 2>
  ...

Oder soll das copyright nur unten auf jede Seite?


Gruß,
  Harm

Jolander

So!!

<Seite 1>

  <Titel 1>
  <Noten 1>
  <copyright 1>

  <Titel 2>
  <Noten 2>
  <copyright 2>

  <Titel 3>
  <Noten 3>
  <copyright 3>

<Seite 2>

Gruß
Guido

Jolander

Höfliche Nachfrage:

Gibt es hier einen Lösungsansatz?

Das mit dem copyright auf jeder Seite klappt eigentlich ganz gut. Jeder Titel eine \bookpart Umgebung also auch ein copyrigth.

Wenn aber das Stücklein nur 2 Zeilen hat sollen mehrere von denen auf eine Seite, oder wenn von einem größeren Werk die letzten 2 Zeilen auf einer Sete zu liegen kommen, arbeite ich mit 2 \score und print-all-headers. Das copyright geht dabei aber verloren.

Gruß
Guido

harm6

Hallo Guido,

ja es gibt zumindest einen workaround.
Ich hoffe, ich komme heute abend dazu einen entsprechenden post zu formulieren.

Bis dann,
  Harm

harm6

Zitat von: harm6 am Freitag, 15. November 2013, 10:39
ja es gibt zumindest einen workaround.
Ich hoffe, ich komme heute abend dazu einen entsprechenden post zu formulieren.

Nunja, auch heute abend (eher nacht) habe ich nicht wirklich Zeit. Hier zumindest der Code für den workaround:

\version "2.16.2"

% see also:
% https://archiv.lilypondforum.de/index.php?topic=605.msg3313#msg3313

lastLine =
#(define-music-function (parser location y-off mrkp)
      (number? markup?)
"
@code{y-off} is needed for manually adjusting the space below last system.
@code{mrkp} is the markup-argument which can be a simple string or a more
elaborated markup.
"
   #{
     \once \override Staff.BarLine #'stencil =
     #(lambda (grob)
        (ly:stencil-combine-at-edge
           (ly:bar-line::print grob)
           Y DOWN
           (grob-interpret-markup grob
             #{
               \markup
               \with-dimensions #'(0 . 0) #'(-10 . 5)
               \right-align
               \fill-line {
               #mrkp
               }
             #})
           y-off))
   #})

\paper {
        ragged-right = ##f
        print-all-headers = ##t
}

%------------------- Test ------------------------------------------------------

one =
\relative c'' {
        c1 \break c1 d,
}

two = \transpose c cis \one

\score {
        \new Staff = "one"{
        \one \lastLine #10 "first-copyright"
        }
        \header {
                title = "title 1"
                subtitle = "subtitle1"
                subsubtitle = "subsubtitle1"
                composer = "composer1"
                arranger = "arranger1"
                poet = "poet1"
        }
        \layout { }
}

\score {
        \new Staff = "two" {
        \two \lastLine #0 \markup \with-color #red \italic "second-copyright"
        }
        \header {
                title = "title 2"
                subtitle = "subtitle2"
                subsubtitle = "subsubtitle2"
                composer = "composer2"
                arranger = "arranger2"
                poet = "poet2"
        }
        \layout { }
}


HTH,
  Harm

Jolander

Hallo Harm,

Entschuldigung, das ich mich erst jetzt melde, aber wenn man mehrere Baustellen gleichzeitig beackert, bleibt das ein oder andere liegen.

Vielen Dank für deinen Code, klappt bei einem einstimmigen Satz ganz gut, aber...

Ich habe den Code einmal für einen 4-stimmigen Satz zusammengstrickt, und er unterschlägt mir mein Copyright:
\version "2.16.2"

% see also:
% https://archiv.lilypondforum.de/index.php?topic=605.msg3313#msg3313

lastLine =
#(define-music-function (parser location y-off mrkp)
      (number? markup?)
"
@code{y-off} is needed for manually adjusting the space below last system.
@code{mrkp} is the markup-argument which can be a simple string or a more
elaborated markup.
"
   #{
     \once \override Staff.BarLine #'stencil =
     #(lambda (grob)
        (ly:stencil-combine-at-edge
           (ly:bar-line::print grob)
           Y DOWN
           (grob-interpret-markup grob
             #{
               \markup
               \with-dimensions #'(0 . 0) #'(-10 . 5)
               \right-align
               \fill-line {
               #mrkp
               }
             #})
           y-off))
   #})

\paper {
        ragged-right = ##f
        print-all-headers = ##t
}

%------------------- Test ------------------------------------------------------




one =
\relative c'' {
        c1 \break c1 d
}

two = \transpose bes c \one


\book {
\bookpart {

  \score {
       
  \new StaffGroup
  <<
        \new Staff = "one"
          <<
           \one
          \\ \two
          >>
                   
           \new Staff = "two"{
          <<
           \one
          \\ \two \lastLine #0 "first-copyright"
          >>
          }
  >>       
     
     
       
        \header {
                title = "title 1"
                subtitle = "subtitle1"
                subsubtitle = "subsubtitle1"
                composer = "composer1"
                arranger = "arranger1"
                poet = "poet1"
        }
        \layout { }
}

\score {
        \new Staff = "two" {
        \two \lastLine #0 \markup \with-color #red \italic "second-copyright"
        }
        \header {
                title = "title 2"
                subtitle = "subtitle2"
                subsubtitle = "subsubtitle2"
                composer = "composer2"
                arranger = "arranger2"
                poet = "poet2"
        }
        \layout { }
}

  }

}


In mein Songbook letztendlich möchte ich die entsprechenden Stücke per \include"Songbook\titelA" und \include"Songbook\titelB" einbinden.

Wie also soll ich den Code ändern?

Gruß
Guido

harm6

Hi,

auf \lastLine muß direkt \bar <whatever> folgen oder stelle sicher, daß \lastLine den default-Taktstrich anspricht.

  \new StaffGroup
  <<
        \new Staff = "one"
          <<
           \one
          \\ \two
          >>
                   
           \new Staff = "two"{
          <<
           \one
          \\ \two
          >>
          \lastLine #0 "first-copyright" %% hier!!!!!!!!!!!!!!!!!
          }
  >>


funktioniert bei mir.
Das << \\ >> Konstrukt zeigt hier mal wieder seine Fragilität. :(

Gruß,
  Harm

Jolander

Hallo Harm,

danke für die Antwort

Zitatfunktioniert bei mir

bei mir auch!

Dumme Frage als unbedarfter Nur Anwender:
Zitatauf \lastLine muß direkt \bar <whatever> folgen oder stelle sicher, daß \lastLine den default-Taktstrich anspricht.

Was ist damit gemeint?

ZitatDas << \\ >> Konstrukt zeigt hier mal wieder seine Fragilität.

Gibt es eine bessere Lösung?

Wie ich das ganze nun in meine \book und \bookpart Umgebung einbauen kann, muss ich in einer stillen Stunde mal probieren!
Da ich wie erwähnt meine Songs mit \include ins Songbook einbinde klappt das nicht mehr so ganz auf Anhieb.


Gruß
Guido

Jolander

ZitatWie ich das ganze nun in meine \book und \bookpart Umgebung einbauen kann, muss ich in einer stillen Stunde mal probieren!
Da ich wie erwähnt meine Songs mit \include ins Songbook einbinde klappt das nicht mehr so ganz auf Anhieb.

Nachtrag:

Nach mehrmaligem erfolgreichen probieren gehe ich davon aus, dass dieses:

\version "2.16.2"

% see also:
% https://archiv.lilypondforum.de/index.php?topic=605.msg3313#msg3313

lastLine =
#(define-music-function (parser location y-off mrkp)
      (number? markup?)
"
@code{y-off} is needed for manually adjusting the space below last system.
@code{mrkp} is the markup-argument which can be a simple string or a more
elaborated markup.
"
   #{
     \once \override Staff.BarLine #'stencil =
     #(lambda (grob)
        (ly:stencil-combine-at-edge
           (ly:bar-line::print grob)
           Y DOWN
           (grob-interpret-markup grob
             #{
               \markup
               \with-dimensions #'(0 . 0) #'(-10 . 5)
               \right-align
               \fill-line {
               #mrkp
               }
             #})
           y-off))
   #})

\paper {
        ragged-right = ##f
        print-all-headers = ##t
}


in die Datei gehört, die  das Songbook erstellt, und dass dieses:

\lastLine #0 "first-copyright"

in die Datei kommt, die mittels \include in die Songbook - Datei eingebunden wird.

Gruß
Guido