Autor Thema: Gelöst: Ausrichtung Titel  (Gelesen 3671 mal)

Joei

  • Member
Gelöst: Ausrichtung Titel
« am: Dienstag, 19. Februar 2013, 22:09 »
und wieder ich....

Simples Problem: Ich möchte einen Titel linksbündig einrichten (linksbündig zu den Notenlinien...)

folgendes habe ich versucht - nicht dem "soll" entsprechend:

\version "2.16.2"
\language "deutsch"

\header {
  title =  \markup { \left-column \override #'(font-name . "Calluna") \abs-fontsize #24 { "Meine Seele erhebet den Herrn" } }
  composer =\markup { \override #'(font-name . "Calluna") \abs-fontsize #11 { \concat {"Johann " Ern\char ##xFB06 " Bach 1770"}}}
  copyright =\markup \smaller  { \char ##x00A9 "Johannes Roeßler CC BY-NC-SA 3.0" }
  tagline = "J.E.Bach Magnificat 1764"
}

{d''4 e''4}

\markup {  \override #'(font-name . "Calluna") \abs-fontsize #24 { "Meine Seele erhebet den Herrn" } }
{d''4 e''4}

das "\left-column" scheint garnichts auszurichten...  und als einfaches \markup ist es zu weit links :(  ::)

Aussehen solls eher wie im Anhang...

Danke für Eure Hilfe,
Joei
« Letzte Änderung: Mittwoch, 20. Februar 2013, 15:10 von Joei »

RobUr

  • Member
Re: Ausrichtung Titel
« Antwort #1 am: Dienstag, 19. Februar 2013, 23:11 »
Hallo Joei,

dazu musst du bookTitleMarkup in den \paper-Block aufnehmen und umdefinieren. In ly/titling-init.ly ist es wie folgt definiert:
bookTitleMarkup = \markup {
  \override #'(baseline-skip . 3.5)
  \column {
    \fill-line { \fromproperty #'header:dedication }
    \override #'(baseline-skip . 3.5)
    \column {
      \fill-line { %% ==> "\fill-line" muss durch "\left-column" ersetzt werden
        \huge \larger \larger \bold
        \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
      }
    }
  }
}

Gruß, Robert

harm6

  • Member
Re: Ausrichtung Titel
« Antwort #2 am: Mittwoch, 20. Februar 2013, 00:49 »
Hallo Joei,

falls Du ein größeres Projekt ausführst, empfehle ich die von Robert vorgestellte Verfahrensweise.

Aus der Ecke quick-and-dirty geht auch:

\version "2.16.1"

\header {
  title =
    \markup
      \column {
         \vspace #2
         \fill-line {
             \override #'(font-name . "Calluna")
               \abs-fontsize #11 {
                   \concat { "Johann " Ern\char ##xFB06 " Bach 1770" }
               }
             \null
         }
         \vspace #2
      }
   
  subtitle = 
    \markup
      \fill-line {
         \override #'(font-name . "Calluna")
           \abs-fontsize #24 "Meine Seele erhebet den Herrn"
         \null
      }
  subsubtitle = \markup \vspace #2
  copyright =\markup \smaller  { \char ##x00A9 "Johannes Roeßler CC BY-NC-SA 3.0" }
  tagline = "J.E.Bach Magnificat 1764"
}

{ d''4 e''4 }


HTH,
  Harm

Joei

  • Member
Re: Ausrichtung Titel
« Antwort #3 am: Mittwoch, 20. Februar 2013, 09:22 »
Moin RobUr und Harm,

danke für Eure Lösungen - momentan tendiere ich zur quick'n'dirty Variante - vielleicht auch nur aus mangelndem Verständnis
für Änderungen in den Definitionen.

Versteh' ich das richtig, wenn ich in der ly/titling-init.ly das umschreiben würde, dann wäre das meine neue default Titelgestaltung (die im Dokument über title = "" aufgerufen würde) und wenn ich dann wieder den Lilypond default haben wöllte müsste ich den quick'n'dirty erstellen oder wieder die ly/titling-init.ly zurückändern?!?

viele Grüße
Joei

Joei

  • Member
Re: Ausrichtung Titel
« Antwort #4 am: Mittwoch, 20. Februar 2013, 10:04 »
soo... fast da.

Harms Variante führte fast zum gewünschten Ergebnis, es fehlt noch die Ausrichtung am Staffrand.

Für den Komponistennamen hab ich das mit \translate #'(19 . 0) erreicht - aber beim Titel fand ich keine Stelle wo die \translate Funktion Wirkung zeigte...  da hab' ich dann *räusper*  :-\  ::)  ??? Leerzeichen benutzt... aber das ist selbst mir eigentlich zuuu dirty... muss doch auch anders gehen?!?

@Harm: Ich habe auch noch nicht durchschaut warum Du beim Komponistennamen (aka \title) mit \column und beim Titel (aka \subtitle) ohne \column gearbeitet hast.

hier mein modifizierte Code:
\version "2.16.2"
\language "deutsch"



\header {
  title =
    \markup
      \column {
         \vspace #1 \translate #'(19 . 0) % ist \translate hier sinnvoll? \hspace hatte ich auch in Verdacht - aber scheinbar ohne impact
         \fill-line {
             \override #'(font-name . "Calluna")
               \abs-fontsize #13 {
                   \concat { "Johann " Ern\char ##xFB06 " Bach 1770" }
               }
             \null
         }
         \vspace #1 %Abstand Komponist zu Titel
      }
     
   
   
  subtitle = 
    \markup 
       \fill-line {
         \override #'(font-name . "Calluna")
            \abs-fontsize #24 "        Meine Seele erhebet den Herrn" % brrrr Leerzeichen... das ist selbst mir zu dirty...
         \null
      }
  subsubtitle = \markup \vspace #3
  copyright =\markup \smaller  { \char ##x00A9 "Johannes Roeßler CC BY-NC-SA 3.0" }
  tagline = "J.E.Bach Magnificat 1764"
}

{a''4 e''}

harm6

  • Member
Re: Ausrichtung Titel
« Antwort #5 am: Mittwoch, 20. Februar 2013, 14:18 »
Zitat von: Joei
Versteh' ich das richtig, wenn ich in der ly/titling-init.ly das umschreiben würde, dann wäre das meine neue default Titelgestaltung (die im Dokument über title = "" aufgerufen würde) und wenn ich dann wieder den Lilypond default haben wöllte müsste ich den quick'n'dirty erstellen oder wieder die ly/titling-init.ly zurückändern?!?

Nein!

Robert schrieb
Zitat von: RobUr
dazu musst du bookTitleMarkup in den \paper-Block aufnehmen und umdefinieren.

Ich mache es (fast) genauso:
(1) bookTitleMarkup = ... aus /ly/titling-init.ly herauskopieren und in Dein file einfügen.
(2) In myBookTitleMarkup umbenennen.
(3) Verändern wie gewünscht.
(4) In \paper aufrufen: \paper { bookTitleMarkup = \myBookTitleMarkup }
(5) Voilà!

Wenn man myBookTitleMarkup vordefiniert und im \paper nur aufruft hat das den Vorteil, daß man die Definition auch auslagern kann, in ein zu inkludierendes file.

Beispiel:

\version "2.16.0"

myBookTitleMarkup = \markup {
  \override #'(baseline-skip . 3.5)
  \column {
    \fill-line { \fromproperty #'header:dedication }
    \override #'(baseline-skip . 5)
    \column {
      \fill-line {
        \fromproperty #'header:composer
        \null
      }
      \left-column {
        \huge \larger \larger \bold
        \fromproperty #'header:title
      }
      \fill-line {
        \large \bold
        \fromproperty #'header:subtitle
      }
      \fill-line {
        \smaller \bold
        \fromproperty #'header:subsubtitle
      }
      % delete the following line to get rid of printing "myLogo"
      \fill-line { \rounded-box \rotate #-90 \fontsize #8 \fromproperty #'header:myLogo }
      \fill-line {
        \fromproperty #'header:poet
        { \large \bold \fromproperty #'header:instrument }
        \null
      }
      \fill-line {
        \fromproperty #'header:meter
        \fromproperty #'header:arranger
      }
    }
  }
}


\paper {
  bookTitleMarkup = \myBookTitleMarkup
}

\header {
  title =  \markup
             \fill-line {
                \override #'(font-name . "Calluna")
                  \abs-fontsize #24 "Meine Seele erhebet den Herrn"
                \null
             }
  composer =  \markup { 
               \override #'(font-name . "Calluna")
                 \abs-fontsize #11 {
                     \concat { "Johann " Ern\char ##xFB06 " Bach 1770" }
                 }
  }
  % delete the following line to get rid of "myLogo"
  myLogo = ":)"
  copyright =\markup \smaller  { \char ##x00A9 "Johannes Roeßler CC BY-NC-SA 3.0" }
  tagline = "J.E.Bach Magnificat 1764"
}

{ d''4 e''4 }

Zusätzlich habe ich noch `myLogo´ in den header geschrieben und in myBookTitleMarkup formatiert, um zu zeigen wie leicht sowas geht.

Zitat von: Joei
@Harm: Ich habe auch noch nicht durchschaut warum Du beim Komponistennamen (aka \title) mit \column und beim Titel (aka \subtitle) ohne \column gearbeitet hast.
Nunja, das war die quick-and-dirty-Variante.
\column habe ich nur dort benutzt wo ich \vspace benutzen wollte, um mehr vertikalen Abstand zu gewinnen.
Bei Benutzung der "sauberen" Methode wird das via baseline-skip geregelt.

Zitat von: Joei
es fehlt noch die Ausrichtung am Staffrand.
Ich hatte das bislang ignoriert, da nicht klar ist, ob Du die erste Notenzeile einrückst oder nicht, ob Du es linksbündig zur ersten (eingerückten) Zeile oder zum Rest haben willst.
Schreib doch mal was genau Du haben willst, dann mach ich mir auch Gedanken drüber. ;)


Gruß,
  Harm

Joei

  • Member
Re: Ausrichtung Titel
« Antwort #6 am: Mittwoch, 20. Februar 2013, 14:42 »
Zitat von: harm6
Ich mache es (fast) genauso:
(1) bookTitleMarkup = ... aus /ly/titling-init.ly herauskopieren und in Dein file einfügen.
(2) In myBookTitleMarkup umbenennen.
(3) Verändern wie gewünscht.
(4) In \paper aufrufen: \paper { bookTitleMarkup = \myBookTitleMarkup }
(5) Voilà!

sehr geil.. kapiert.



Zitat von: Harm
Ich hatte das bislang ignoriert, da nicht klar ist, ob Du die erste Notenzeile einrückst oder nicht, ob Du es linksbündig zur ersten (eingerückten) Zeile oder zum Rest haben willst.

daran hast du gut getan... das sah natürlich total bescheuert aus so ohne indent... so finde ichs jetzt ganz gut... muss nur noch rausfinden, wie ich den Abstand von "1. Coro" zum Notenblock etwas vergrößert bekomme... aber dazu habe ich den \piece Block ohnehin falsch positioniert... aber eins nach dem andern :)

Wie immer meinen herzlichsten Dank für die schnelle und kompetente Hilfe!

Joei

  • Member
Re: Ausrichtung Titel
« Antwort #7 am: Mittwoch, 20. Februar 2013, 15:10 »
so... Dein Hinweis auf \column und \vspace hat mir geholfen das Abstandsproblem von \piece selber zu lösen :)

harm6

  • Member
Re: Gelöst: Ausrichtung Titel
« Antwort #8 am: Mittwoch, 20. Februar 2013, 23:39 »
Hallo,

linksbündig
ich würde \translate nicht in Verbindung mit \fill-line benutzen.
Es sieht zwar zunächst so aus wie man es möchte, aber de facto verschiebt man einen bestimmten Bereich nur nach außerhalb des Druckes. Ich hab' das früher auch mal gemacht und es ist mir nach einem upgrade um die Ohren geflogen.

Siehe:
\markup \translate #'(10 . 0) \box \fill-line { "XY" }

Stattdessen habe ich ein markup-command, compensate-indent, entwickelt, welches
a) den indent ausliest und im markup ausgleicht und
b) die Möglichkeit zur Nachjustierung via \override #'(add-space . 5) beinhaltet. Den numerischen Wert kann man natürlich nach Belieben wählen.

scoreTitleMarkup
Genauso wie das bookTitleMarkup kann man das scoreTitleMarkup auch nach den eigenen Wünschen vordefinieren.
Im Moment habe ich Deine Setzungen festgeschrieben.
Allerdings war es nötig zusätzlich die Definition von print-all-headers einzustellen, da sie nicht `public´ ist.

Beispiel:

\version "2.16.1"

#(set-global-staff-size 20)

#(define-markup-command (compensate-indent layout props arg)(markup?)
#:properties ((add-space  0))
  (let* ((amount (+ add-space (ly:output-def-lookup layout 'indent)))
         (mrkp (make-concat-markup
                 (list
                   (make-hspace-markup amount) 
                   arg))))
  (interpret-markup layout props mrkp)))

% C/P from /ly/titling-init.ly
% Needs to be here because it isn't public

#(define (print-all-headers layout props arg)
  (if (eq? (ly:output-def-lookup layout 'print-all-headers) #t)
   (interpret-markup layout props arg)
   empty-stencil))

myBookTitleMarkup = \markup  {
  \override #'(baseline-skip . 3.5)
  \column {
    \fill-line { \fromproperty #'header:dedication }
    \override #'(baseline-skip . 6)
    \column {
      \box % DELETEME
      \fill-line {
        % Uncomment the line below to get more space before the argument
        % of \compensate-indent:
        % \override #'(add-space . 10)
        \compensate-indent
        %\override #'(font-name . "Calluna")
        \abs-fontsize #11
        \fromproperty #'header:composer
        \null
      }
      \box % DELETEME
      \fill-line {
        \huge \larger \larger \bold
        \compensate-indent
        %\override #'(font-name . "Calluna")
        \abs-fontsize #24
        \fromproperty #'header:title
        \null
      }
      \fill-line {
        \large \bold
        \fromproperty #'header:subtitle
      }
      \fill-line {
        \smaller \bold
        \fromproperty #'header:subsubtitle
      }
      \fill-line {
        \fromproperty #'header:poet
        { \large \bold \fromproperty #'header:instrument }
        \null
      }
      \fill-line {
        \fromproperty #'header:meter
        \fromproperty #'header:arranger
      }
    }
  }
}

myScoreTitleMarkup =
    \markup {
       \box  % DELETEME
       \column {
         \on-the-fly #print-all-headers { \myBookTitleMarkup \hspace #1 }
         \vspace #1
         \fill-line {
            \override #'(font-name . "Calluna Italic")
            \override #'(add-space . 5)
              \compensate-indent
              \abs-fontsize #13 \fromproperty #'header:piece
            \fromproperty #'header:opus
         }
         \vspace #1
       }
    }
   
% EXAMPLE:

\paper {
  bookTitleMarkup = \myBookTitleMarkup
  scoreTitleMarkup = \myScoreTitleMarkup
  indent = 20
}

\header {
  title = "Meine Seele erhebet den Herrn"
  composer =  \markup \concat { "Johann " Ern\char ##xFB06 " Bach 1770" }
  copyright = \markup \smaller  { \char ##x00A9 "Johannes Roeßler CC BY-NC-SA 3.0" }
  tagline = "J.E.Bach Magnificat 1764"
}

\score {
        \new Staff { c''1 \break d''1 }
        \header {
                piece = "1. Coro"
                opus = "op 1.1"
        }
}

\score {
        \new Staff { cis''1 \break dis''1 }
        \header {
                piece = "2. Aria"
                opus = "op 1.2"
        }
}

Ich habe die header-Angaben alle als \box geschrieben, um besser demonstrieren zu können.
Das sollte natürlich gelöscht werden, die entsprechenden Zeilen sind mit DELETEME markiert.
Einige weitere Möglichkeiten sind z.Zt. auskommentiert.

HTH,
  Harm