Autor Thema: Copyright auf jeder Seite  (Gelesen 4698 mal)

Jolander

  • Member
Copyright auf jeder Seite
« am: Dienstag, 4. Juni 2013, 15:14 »
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

  • Member
Re: Copyright auf jeder Seite
« Antwort #1 am: Dienstag, 4. Juni 2013, 15:52 »
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
      }
    }
  }
}
« Letzte Änderung: Dienstag, 4. Juni 2013, 16:09 von Be-3 »

Jolander

  • Member
Re: Copyright auf jeder Seite
« Antwort #2 am: Mittwoch, 5. Juni 2013, 07:53 »
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

  • Member
Re: Copyright auf jeder Seite
« Antwort #3 am: Mittwoch, 5. Juni 2013, 08:29 »
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

  • Member
Re: Copyright auf jeder Seite
« Antwort #4 am: Mittwoch, 5. Juni 2013, 08:38 »
Danke!

Jolander

  • Member
Re: Copyright auf jeder Seite
« Antwort #5 am: Sonntag, 10. November 2013, 15:49 »
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

  • Member
Re: Copyright auf jeder Seite
« Antwort #6 am: Sonntag, 10. November 2013, 16:01 »
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

  • Member
Re: Copyright auf jeder Seite
« Antwort #7 am: Sonntag, 10. November 2013, 16:18 »
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

  • Member
Re: Copyright auf jeder Seite
« Antwort #8 am: Freitag, 15. November 2013, 08:15 »
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

  • Member
Re: Copyright auf jeder Seite
« Antwort #9 am: Freitag, 15. November 2013, 10:39 »
Hallo Guido,

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

Bis dann,
  Harm

harm6

  • Member
Re: Copyright auf jeder Seite
« Antwort #10 am: Samstag, 16. November 2013, 01:04 »
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://liarchiv.joonet.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

  • Member
Re: Copyright auf jeder Seite
« Antwort #11 am: Mittwoch, 4. Dezember 2013, 15:21 »
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://liarchiv.joonet.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

  • Member
Re: Copyright auf jeder Seite
« Antwort #12 am: Donnerstag, 5. Dezember 2013, 00:57 »
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

  • Member
Re: Copyright auf jeder Seite
« Antwort #13 am: Donnerstag, 5. Dezember 2013, 11:36 »
Hallo Harm,

danke für die Antwort

Zitat
funktioniert bei mir

bei mir auch!

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

Was ist damit gemeint?

Zitat
Das << \\ >> 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

  • Member
Re: Copyright auf jeder Seite
« Antwort #14 am: Mittwoch, 11. Dezember 2013, 08:16 »
Zitat
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.

Nachtrag:

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

\version "2.16.2"

% see also:
% https://liarchiv.joonet.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