Autor Thema: Titel links ausrichten und mit einer Linie abgrenzen  (Gelesen 3954 mal)

Thadeus Punkt

  • Member
Titel links ausrichten und mit einer Linie abgrenzen
« am: Donnerstag, 14. März 2013, 18:19 »
Hallo,

Ich habe mal ein Problem für das ich im Forum leider keine Lösung gefunden habe.

Ich möchte gern den Titel linksbündig an der Seite ausgerichtet und unter den Titel eine Linie haben, die über die Gesamte Seiten breite läuft.

Zum Thema "Titel ausrichten" gibt es ja einen recht aktuellen Forumsbeitrag: https://liarchiv.joonet.de/index.php?topic=1345.msg7400#msg7400 . Wobei ich nicht wirklich verstehe, wie das funktioniert, da einige Befehle darin vorkommen, die ich nicht erklärt bekomme über die Hilfe und auch der Programm/Dateiaufbau erschließt sich mir nicht.

zum Thema Linie hab ich garnichts gefunden. Latex-Befehle wie \line {}  ergeben nur eine Fehlermeldung, wenn ich das in den header mit eintrage.


harm6

  • Member
Re: Titel links ausrichten und mit einer Linie abgrenzen
« Antwort #1 am: Donnerstag, 14. März 2013, 20:49 »
Hallo,

der von Dir schon genannte Thread liefert eigentlich schon die Methode zur Neudefinition des bookTitleMarkup.

In Deinem Fall:

\version "2.16.2"

myBookTitleMarkup = \markup {
  \override #'(baseline-skip . 3.5)
  \column {
    \fill-line { \fromproperty #'header:dedication }
    \override #'(baseline-skip . 3.5)
    \column {
      \line {
        \huge \larger \larger \bold
        \fromproperty #'header:title
      }
      \draw-hline
      % Other possibility
      % \fill-line { \override #'(span-factor . 1/3) \draw-hline }
      \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 = \myBookTitleMarkup }

\header {
        dedication = "DEDICATION"
        title = "TITLE"
        subtitle = "SUBTITLE"
        subsubtitle = "SUBSUBTITLE"
        arranger = "ARRANGER"
        composer = "COMPOSER"
        poet = "POET"
        meter = "METER"
}

\markup \null
       

Falls Du etwas nicht verstehst, dann frag halt. ;)

Gruß,
  Harm

eluze

  • Member
Re: Titel links ausrichten und mit einer Linie abgrenzen
« Antwort #2 am: Donnerstag, 14. März 2013, 20:53 »
hallo Thadeus

hast du ein stückchen code von dem was du machen willst?
ich rate mal:
\header {
  title = \markup \column {
    \fill-line {"mein titel" "" }
    \draw-hline
  }
}

{c' }
sollte den titel nach links rücken

Be-3

  • Member
Re: Titel links ausrichten und mit einer Linie abgrenzen
« Antwort #3 am: Donnerstag, 14. März 2013, 21:06 »
Ich möchte gern den Titel linksbündig an der Seite ausgerichtet und unter den Titel eine Linie haben, die über die Gesamte Seiten breite läuft.
[...]
zum Thema Linie hab ich garnichts gefunden. Latex-Befehle wie \line {}  ergeben nur eine Fehlermeldung, wenn ich das in den header mit eintrage.

Hallo Thadeus,

es gibt den Markup-Befehl \draw-hline, der eine horizontale Linie über die gesamte Seitenbreite zeichnet - er macht also genau das, was \hline in TeX tut.


Zum Thema "Titel ausrichten" gibt es ja einen recht aktuellen Forumsbeitrag: https://liarchiv.joonet.de/index.php?topic=1345.msg7400#msg7400 . Wobei ich nicht wirklich verstehe, wie das funktioniert, da einige Befehle darin vorkommen, die ich nicht erklärt bekomme über die Hilfe und auch der Programm/Dateiaufbau erschließt sich mir nicht.

Im Grunde ist das relativ einfach: Wenn einem die Standard-Titelaubereitung von Lilypond nicht paßt, kann man eigene Markups definieren. Die müssen dann nur in der \paper-Umgebung den richtigen Variablen zugewiesen werden, damit sie an den ensprechenden Stellen eingebunden werden.

Einfachst-Beispiel: der Titel soll nur "Hello, World!" ausgeben, und zwar linksbündig und fett in serifenloser Schrift, darunter eine horizontale Linie über die gesamte Seitenbreite (dann sind wir wieder beim Thema).

\version "2.16.1"

\paper {
  bookTitleMarkup = \markup {
    \override #'(baseline-skip . 0.5)
    \column {
      \sans \bold "Hello, World!"
      \draw-hline
    }
  }
}

\relative c' { c1 }

Der \override-Befehl ändert den Zeilenabstand in der darauffolgenden Spalte (\column), damit der vertikale Abstand vor dem Strich Strich nicht so groß ist.

Analog zu bookTitleMarkup gibt es z. B. noch foot scoreTitleMarkup, das vor jedem \score gedruckt wird oder oddHeaderMarkup/evenHeaderMarkup für die ungeraden und geraden Kopfzeilen usw.

Diese Markups kann man allerdings ziemlich komplex aufbauen; der Zugriff auf Variablen, die man im \header definiert hat (wie title, composer usw.) geschieht über \fromproperty #'header:title oder \fromproperty #'header:composer.

Im Prinzip kann man dort also alles tun, was einem die \markup-Umgebung bietet. Das würde hier allerdings den Rahmen sprengen.
Wenn Du spezifische Fragen zu Harms Lösung hast, kannst Du sie hier ja stellen - Du wirst sicher Antwort erhalten.

Viele Grüße
Torsten


PS: Jetzt habe ich so lange herumgetrödelt, daß inzwischen Harm und Eluze schon geantwortet haben. :)
« Letzte Änderung: Donnerstag, 14. März 2013, 21:09 von Be-3 »

Thadeus Punkt

  • Member
Re: Titel links ausrichten und mit einer Linie abgrenzen
« Antwort #4 am: Donnerstag, 14. März 2013, 23:15 »
Vielen Dank an euch drei, ihr habt mein Problem gelöst. Und was  noch interssant ist, das Ihr auch gleich Lösung mitgegeben habt für die Fragen die mir bei dem Ausprobieren Eurer Vorschläge gekommen sind.

Harm6's Vorschlag ist mein Favorit, um in ein MasterTemplate aufgenommen zu werden. Womit ich aber nicht zurecht kam, war der Abstand der Linie zum Titel. Ich habe da mal mit den Werten rumgespielt, aber bin nicht zu einem guten Ergebniss gekommen. Der Zweite \override #'(baseline-skip . 3.5) Befehl zieht zwar die Linie an den Titel heran, wenn man den Wert vermindert, aber es ist ein Verhältnis-wert, der Abstand zu den nachfolgenden Text wird proportional verringert. Das heißt irgendwann, wenn der Wert zu klein ist, läuft alles in einander. Daher hat mir der Vorschlag von Be-3 gut gefallen, bei dem die Linie sehr nah an dem Titel war. Wobei ja nicht der richtige "Titel" genutzt wurde sondern über bookTitleMarkup
Was mir bei Eluze sehr gut gefallen hat, ist die Möglichkeit einen zweiten Text auf der anderen Seite der Titelzeile zu erzeugen. Ich hatte mich schon im Vorfeld gefragt ob das irgendwie möglich ist. Ist sehr praktisch wenn man zB eine Liednummer angezeigt haben möchte.

Deshalb habe ich mal title = \markup \column {
    \fill-line {"MEIN NEUER TITEL" "232" }
        }
hinter den Titel bei Harm6 seinen Vorschlag eingesetzt, und es hat funktioniert. Ob das jetzt aber die eleganteste Lösung ist, kann ich nicht sagen.


harm6

  • Member
Re: Titel links ausrichten und mit einer Linie abgrenzen
« Antwort #5 am: Freitag, 15. März 2013, 01:23 »
Hallo,

Zitat
Ob das jetzt aber die eleganteste Lösung ist, kann ich nicht sagen.

nun, wie Torsten schon sagte, falls Du bookTitleMarkup neu definierst so denke daran: Es ist ein markup.
All die üblichen markup-commands können verwendet werden (und wenn etwas spezielles fehlt kann man ja im forum fragen :) )

Eluzes Methode ist quick'n dirty und dabei auch die Methode, die ich selbst für kleinere Sachen meistens verwende.

Bei größeren Projekten ist die Neudefinition von bookTitleMarkup, aber vor allem scoreTitleMarkup besser.

Was genau für Dich am besten ist kann ich nicht sagen, denn Du hast nicht geschrieben/gezeigt was Dir letztlich vorschwebt.

Anstatt mein übliches mantra erneut zu rezitieren nehme ich heute mal Eluzes: ;)
Zitat von: Eluze
hast du ein stückchen code von dem was du machen willst?


Gruß,
  Harm





eluze

  • Member
Re: Titel links ausrichten und mit einer Linie abgrenzen
« Antwort #6 am: Freitag, 15. März 2013, 07:05 »
hallo Harm
Zitat
Eluzes Methode ist quick'n dirty
von wegen dirty? - eher quick'n simple + dadurch schon fast genial!

Zitat
Bei größeren Projekten ist die Neudefinition von bookTitleMarkup, aber vor allem scoreTitleMarkup besser.
besser? - ich sage: (leider) erforderlich - ich finde aber, dass das lilypond team eine sehr gültige + immer wiederverwendbare vorlage geschaffen hat

gruss
Eluze

Thadeus Punkt

  • Member
Re: Titel links ausrichten und mit einer Linie abgrenzen
« Antwort #7 am: Samstag, 16. März 2013, 09:01 »
Also, was ich machen will ist recht simpel.  Ich will mir einfach ein Mastertemplate für ein Notenblatt erstellen, was ich dann als Leadsheet für mich und meine Band nutzen kann. Mit der Option, da auch mal was spezielles  wie eine Gitarrenspur oder Klavier mit einzubauen. Ich hab da schon mal begonnen, das Template aus Frescobaldi mir einbisschen umzuarbeiten. Und da ich vorher schon ein paar Notensatzprogramme ausprobiert habe, finde ich, das LilyPond für mich die Beste Wahl ist. Sei es, weil es am flexibelsten ist, weil es auch unter Linux läuft, und weil es das beste Preis-Leitungsverhältnis hat. :-)

zurück zum Thema:

Unten habe ich mal das bissherige Ergebnis gepostet: wobei ich mit dem Abstand der Linie zum Titel noch nicht richtig zufrieden bin. Ich hätte sie gern etwas näher.

\version "2.16.2"

myBookTitleMarkup = \markup {
  \override #'(baseline-skip . 3.5)
  \column {
    \fill-line { \fromproperty #'header:dedication }
    \override #'(baseline-skip . 3.5)
    \column {
      \line {
        \huge \larger \larger \bold
        \fromproperty #'header:title
      }
      \draw-hline
      % Other possibility
      % \fill-line { \override #'(span-factor . 1/3) \draw-hline }
      \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
      }
    }
  }
}


\header {
  dedication = "DEDICATION"
  title = \markup \column {
    \fill-line {"Titel" "333" }
  }
  subsubtitle = "Subtitel"
  poet = "Text:"
  composer= "Musik:"
  arranger = "Satz:"
  copyright = \markup { \char ##x00A9 "??? - Verlag" }
}

\paper {
  bookTitleMarkup = \myBookTitleMarkup
  #(set-paper-size "a4")
  markup-system-spacing #'basic-distance = #28
  %system-system-spacing #'basic-distance = #20
  % left-margin #'basic-distance = #22
  % right-margin #'basic-distance = #22
  top-margin = 10 \mm
  bottom-margin = 10 \mm
  %last-bottom-spacing = 20 \mm
  two-sided = ##t
  inner-margin = 10 \mm
  outer-margin = 20 \mm
}

global = {
  \key c \major
  \time 4/4
  %\partial 2
  \tempo 4=92
 
}

classicalGuitar = \relative c' {
  \global
  c1
}

chordNames = \chordmode {
  \global
  \override
 ChordName
 #'font-size = #4
 %\override
 %ChordName
 %#'color = #red
 \override
 ChordName
 #'font-family = #'roman
 \set chordChanges = ##t
 c
 
}

melody = \relative c'' {
  \global
  c4 c c c
 
}


verseOne = \lyricmode {
 Tra -- la -- lla _
 
}

verseTwo = \lyricmode {
%Text hier
 
}

verseThree = \lyricmode {
  \set stanza = "3."
  %Text hier
 
}

right = \relative c'' {
  \global
 c1
 
}

left = \relative c' {
  \global
c1
 
}

classicalGuitarPart = \new TabStaff \with {
  stringTunings = #guitar-tuning
  midiInstrument = "acoustic guitar (nylon)"
  \consists "Instrument_name_engraver"
  instrumentName = "Gt."
} \classicalGuitar

leadSheetPart = <<
  \new ChordNames \chordNames
  \new Staff { \melody }
  \addlyrics { \verseOne }
  \addlyrics { \verseTwo }
  %\addlyrics { \verseThree }
>>

pianoPart = \new PianoStaff \with {
  instrumentName = "Klav."
} <<
  \new Staff = "right" \with {
    midiInstrument = "acoustic grand"
  } \right
  \new Staff = "left" \with {
    midiInstrument = "acoustic grand"
  } { \clef bass \left }
>>

\score {
  <<
    \classicalGuitarPart
    \leadSheetPart
    \pianoPart
  >>
  \layout { #(layout-set-staff-size 20) }
  \midi { }
}


eluze

  • Member
Re: Titel links ausrichten und mit einer Linie abgrenzen
« Antwort #8 am: Samstag, 16. März 2013, 09:11 »
versuchs mal mit \hspace #… zu steuern!

sonst gibts noch diese geniale lösung: http://lists.gnu.org/archive/html/lilypond-user/2010-04/msg00057.html

Eluze

harm6

  • Member
Re: Titel links ausrichten und mit einer Linie abgrenzen
« Antwort #9 am: Samstag, 16. März 2013, 11:31 »
Hallo Thadeus,

Zitat von: Thadeus
Und da ich vorher schon ein paar Notensatzprogramme ausprobiert habe, finde ich, das LilyPond für mich die Beste Wahl ist. Sei es, weil es am flexibelsten ist, weil es auch unter Linux läuft, und weil es das beste Preis-Leitungsverhältnis hat. :-)

ich bin natürlich auch ein LilyPond-Fan :D.
Was das Preis-Leitungsverhältnis angeht, so muß man sagen, daß LilyPond natürlich als open-source Projekt erstmal "umsonst" zu haben ist.
Wir haben jedoch das Problem, daß unsere Personaldecke recht dünn ist. Zum Beispiel die Anzahl der aktiven Entwickler, die Anzahl der bug-squad-Mitglieder (frag Eluze!), LSR-Contributors, LSR-Upgrader, Fragenbeantworter in Foren, mailing-lists etc.
Es müssen halt viele Sachen erledigt werden, um LilyPond am laufen zu halten und weiterzuentwickeln. Falls wir nicht genug Mitarbeiter haben/halten können, so wird LilyPond einen langsamen Tod sterben.
Insoweit bitte ich Dich und jeden anderen nicht schon jetzt Aktiven darüber nochzudenken, ob Du/Ihr nicht irgendetwas zum Gelingen des Gesamt-Projektes beitrageen könnt.
-> http://lilypond.org/website/help-us.de.html
Man braucht wirklich kein LilyPond-Meister zu sein, um sinnvoll mitarbeiten zu können.
Darüberhinaus bzw anstatt dessen bitte ich Dich/Euch zu bedenken, ob ihr nicht David Kastrup, core developer, finanziell unterstützen könnt.
Siehe meinen Post hier.

Zum eigentlichen Thema:
Erstmal vielen Dank für Deinen Code! Es verbleibt noch die Frage, ob Du Dich auf einzelne Partituren beschränkst, oder ob Du sie in einem \book mit \bookparts sammeln möchtest.

Zitat von: Thaddeus
Unten habe ich mal das bissherige Ergebnis gepostet: wobei ich mit dem Abstand der Linie zum Titel noch nicht richtig zufrieden bin. Ich hätte sie gern etwas näher.

Ich habe myBookTitleMarkup ein klein wenig verändert. Ich hoffe es kommt Deinen Vorstellungen entgegen.

myBookTitleMarkup = \markup {
  \override #'(baseline-skip . 3.5)
  \column {
    \fill-line { \fromproperty #'header:dedication }
    \override #'(baseline-skip . 3.5)
    \column {
      \line {
        \override #'(baseline-skip . 1)
        \column {
          \huge \larger \larger \bold
          \fromproperty #'header:title
          \draw-hline
          % Other possibility
          % \fill-line { \override #'(span-factor . 1/3) \draw-hline }
          \vspace #1
        }
      }
      \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
      }
    }
  }
}

HTH,
  Harm

Thadeus Punkt

  • Member
Re: Titel links ausrichten und mit einer Linie abgrenzen
« Antwort #10 am: Montag, 18. März 2013, 21:11 »
Hallo harm,

Vielen Dank, das ist genau so, wie ich es mir vorgestellt habe.

Zitat
Es verbleibt noch die Frage, ob Du Dich auf einzelne Partituren beschränkst, oder ob Du sie in einem \book mit \bookparts sammeln möchtest.

Also, ich werde erstmal bei den Partituren bleiben.

Zu deinem Hinweis mit der Frage nach der Hilfe: In Lilypond und beim Notensetzen bin ich eher noch Anfänger. Bei Fortgeschrittenem Notensetzen könnte ich nicht den Bug vom Feature auseinanderhalten. Auch bestehen meine Englischkentnisse nur aus einem recht überschaubaren Wortschatz. Aber ich werd mal schauen was ich tun kann. Auch bei dem mit David Kastrup.

VG
Th.