Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: martinusbaum am Sonntag, 4. November 2018, 20:43

Titel: LyricText für Liederheft einstellen?
Beitrag von: martinusbaum am Sonntag, 4. November 2018, 20:43
Hallo,
nach einer Titelseite und Inhaltsverzeichnis kommt u.a. eine Vielzahl von Texten mit \lyricmode, die mit \include eingebunden werden.
Die Schriftgröße der Texte im Bereich der Melodie habe ich mit
\override StanzaNumber.font-size = #3
    \override LyricText.font-size =#3
eingestellt. Jetzt stehe ich auf dem Schlauch, wo/wie ich die selbe Schriftgröße für die Strophen (\markup) einstellen muss...
Wäre dankbar um Hilfe.
Titel: Antw:LyricText für Liederheft einstellen?
Beitrag von: barrios am Sonntag, 4. November 2018, 21:07
Ein kleines Beispiel welches das Problem verdeutlicht wäre hilfreich um Dir zu helfen.
Titel: Antw:LyricText für Liederheft einstellen?
Beitrag von: martinusbaum am Montag, 5. November 2018, 00:28
hallo,
danke für das Hilfsangebot!
Im Anhang die Dateistruktur (.ily für die Noten und die erste Strophe, .lyi für die weiteren Strophen, .ly für die Zusammenstellung).
Für alle mit \include eingebundenen .lyi-Dateien soll die Schriftgröße geändert werden.
Aller Strophen-Text, der aus .lyi angezeigt wird, soll so groß sein wie der Liedtext der ersten Strophe
Ich stelle mir vor, dass der Befehl an der eingerahmten Stelle in der Test.ly steht.  ( ??.font-size = #2)

Ich suche das Wort, das für die Fragezeichen steht...

Wahrscheinlich habe ich da noch ein Problem mit \bookpart, aber das ist gerade nachrangig...
Titel: Antw:LyricText für Liederheft einstellen?
Beitrag von: Manuela am Montag, 5. November 2018, 12:06
Soweit ich weiß, sind Markups unabhängig von Contexten und lassen sich daher nicht über diese steuern. Einen Befehl, wie du ihn dir vorstellst, gibt es daher afaik leider nicht. Harm, korrigiere mich bitte, wenn ich falsch liege.

Als Workaround könntest du eine Variable an zentraler Stelle definieren und diese überall verwenden, wo Liedstrophentext vorkommt. Zusätzliche Änderungen der Schriftgröße werden dann auf diese Schriftgröße bezogen, schau dir einfach das Beispiel an.

schrift = #1.5

\markup {
% \fill-line {
    \hspace #0.1
    \column {\line \fontsize #2 { "Standardgröße #2" }
        \line {   "2. "
          \column {
            "Standardgröße"
                  }
              }
          }
        }

\markup \fontsize #schrift {
% \fill-line {
    \hspace #0.1
    \column {\line \fontsize #2 { "fontsize+schrift #2" }
        \line {   "2. "
          \column {
            "Zweite Strophe"
                  }
              }
          }
        }
Titel: Antw:LyricText für Liederheft einstellen?
Beitrag von: Manuela am Montag, 5. November 2018, 12:07
statt ändern auf "Zitat" geklickt und abgeschickt, sorry  :-[
Titel: Antw:LyricText für Liederheft einstellen?
Beitrag von: martinusbaum am Montag, 5. November 2018, 16:31
Vielen Dank für den Workaround!

Titel: Antw:LyricText für Liederheft einstellen?
Beitrag von: martinusbaum am Montag, 5. November 2018, 16:42
Leider wirkt so die Schriftgrößenänderung nur auf die genannte Zeile, nicht jedoch für die ganze Strophe...
Titel: Antw:LyricText für Liederheft einstellen?
Beitrag von: Manuela am Montag, 5. November 2018, 18:42
Zitat von: martinusbaum am Montag,  5. November 2018, 16:42
Leider wirkt so die Schriftgrößenänderung nur auf die genannte Zeile, nicht jedoch für die ganze Strophe...

Mein Code ist viell verwirrend, probier mal folgendes

\version "2.19.80"

schrift = #4

\markup {
  % \fill-line {
  \hspace #0.1
  \column {
    \line { "Standardgröße" }
    \line {
      "2. "
      \column {
        "Standardgröße"
      }
    }
  }
}

\markup \fontsize #schrift {
  % \fill-line {
  \hspace #0.1
  \column {
    \line { "fontsize #2" }
    \line {
      "2. "
      \column {
        "Zweite Strophe"
      }
    }
  }
}


Hier sollte der Unterschied deutlich zu sehen sein
Titel: Antw:LyricText für Liederheft einstellen?
Beitrag von: harm6 am Montag, 5. November 2018, 23:45
Zitat von: ManuelaSoweit ich weiß, sind Markups unabhängig von Contexten und lassen sich daher nicht über diese steuern. Einen Befehl, wie du ihn dir vorstellst, gibt es daher afaik leider nicht. Harm, korrigiere mich bitte, wenn ich falsch liege.

Eigentlich ist \markup sowas wie ein Eingabemodus für Text. So wie \notemode ein Eingabemodus (von mehreren) für Musik ist.

Wenn \markup innerhalb eines musikalischen Context verwendet wird, wird ein grob (mit-)initiert. Am ehesten einsichtig natürlich TextScript.
Aber \tempo \markup \italic "Furioso" führt zu einer MetronomeMark. Und natürlich kann man eigentlich den stencil eines jeglichen grobs mit Text, also unter Verwendung von markup überschreiben. Falls nicht anders angegeben holt sich das jeweilige markup seine Schriftgröße aus den properties des jeweiligen grobs (oder einem fall-back: text-font-size des aktuellen layouts, in seltenen Fällen auch aus dem $defaultpaper.) Ein \markup mit \fontsize ist soweit es die Schriftgröße angeht ein multiplikator bei dem der default (das fallback) mit einem bestimmten Wert multipliziert wird, afaiu.
Deshalb kann man die Schriftgröße eines solchen grobs mit einem override verändern. Wie zum Beispiel \override LyricText.font-size  aus dem initialen post dieses threads.

Bei toplevel-markup sieht die Sache anders aus. Es wird kein grob initiiert. Deshalb ist auch kein override möglich. Falls nicht anders angegeben kommt die gewählte Schriftgröße aus dem fallback.

Insoweit, Manuela, hast Du ganz recht.
Natürlich kann man das was ich fallback genannt habe verändern, aber dann hat man auch andere Schriftgrößen für den Text in musikalischen Contexten. Eine Differenzierung ist nicht möglich soweit ich weiß.

Um differenziert zu arbeiten empfehle ich Manuelas Vorschlag zu folgen.

In manchen Fällen könntest Du auch diesen Code verwenden, aber Vorsicht!, jedes toplevelmarkup (außer \header) wird verändert. Der Aufruf der Funktion muß am Ende eines files erfolgen und es funktioniert nicht falls Du \book und/oder \bookpart verwendest, da müßte man anders vorgehen.

Aber hier ist er:

\version "2.19.82"


setToplevelMarkupFontsize =
#(define-void-function (fs)(number?)
  (set! toplevel-scores
    (map
      (lambda (e)
        (if (markup-list? e)
            (map (lambda (m) (make-fontsize-markup fs m)) e)
            e))
      (ly:parser-lookup 'toplevel-scores))))

\header {
  title = "TITLE"
}

\markup  "some long markup"

\new Voice
{
   \tempo "Allegro"
   R1
   c'-"foo-bar-buzz"
}

\markup \fontsize #3 { "some other long markup" "bar" }

\new Voice
{
   \tempo "Allegro"
   R1
   c'-"foo-bar-buzz"
}

   
\setToplevelMarkupFontsize 4



Gruß,
  Harm