Gelöst: Spalten und Zeilen

Begonnen von Joei, Donnerstag, 19. Dezember 2019, 10:44

« vorheriges - nächstes »

Joei

Moin,

ich versuche das Handwerkszeug \column \line \fillline zu verstehen - es gelingt mir aber nicht wirklich.
Ich möchte folgendes erreichen:

Liedstrophen unter einem Lied in folgender Verteilung

Strophe 1             Strophe 2
           
            Strophe 3

Das habe ich jetzt auch hinbekommen - allerdings gefällt mir der Abstand zwischen den oberen beiden Strophen nicht.
Lasse ich \fill-line weg, dann ist alles linksbündig, mit \fill-line passt der Abstand nicht.

\version "2.18.2"

\markup {
  \fill-line {
   % \hspace #15.0 % moves the column off the left margin;
    % can be removed if space on the page is tight
    \column {

      \line {
        \bold "5."
        \column {
          "O klare Sonn, du schöner Stern,"
          "Dich wollten wir anschauen gern;"
          "O Sonn, geh auf, ohn' deinen Schein"
          "In Finsternis wir alle sein."
        }
      }
    }


%    \combine \null \vspace #0.9 % adds vertical spacing between verses
    \column{
      \line{
        \bold "6."
        \column {
          "Hie leiden wir die größte Not,"
          "Vor Augen steht der ewig Tod."
          "Ach komm, führ uns mit starker Hand"
          "Vom Elend zu dem Vaterland."
        }
      }
    }

}
}

\markup{
    \combine \null \vspace #3.0 % adds vertical spacing between verses
  \fill-line{
    \line {
      \bold "7."
      \column {
        "Da wollen wir all danken dir,"
        "Unserm Erlöser, für und für;"
        "Da wollen wir all loben dich"
        "Zu aller Zeit und ewiglich."
      }
    }
  }
}


Neben der Lösung neben des akuten Problems, wäre ich interessiert das Prinzip grundsätzlich zu verstehen. Aber auf den Hilfeseiten habe ich nicht wirklich übergreifend was entdeckt...

Dank&Gruß
Johannes

Arnold

Hallo Johannes,

ich schreibe, wenn etwas über die Seite zentiert werden soll, diese meistens in ein \fill-line mit drei Elementen, bei dem die beiden Randelemente der »unsichtbare Punkt« \null sind.
Außerdem setze ich solche Sachen meistens in einen einzigen \markup-Block mittles eines weiteren \column (manchmal benutze ich auch die Markup-List) und steuere den Abstand zwischen den Teilen (bei mir oft auch \justify) mit einem extra eingefügten \vspace.

Dein Beispiel, und wo ich Ergänzungen einfügte sind drei Prozentzeichen zu finden:
\version "2.18.2"

\markup {
  \column { %%% in einer 'Spaltensammlung' der 'links-rechts'- und der 'mittig'-Block
    \fill-line {
      % \hspace #15.0 % moves the column off the left margin;
      % can be removed if space on the page is tight
      \column {
        \line {
          \bold "5."
          \column {
            "O klare Sonn, du schöner Stern,"
            "Dich wollten wir anschauen gern;"
            "O Sonn, geh auf, ohn' deinen Schein"
            "In Finsternis wir alle sein."
          }
        }
      }
%     \combine \null \vspace #0.9 % adds vertical spacing between verses
      \column{
        \line{
          \bold "6."
          \column {
            "Hie leiden wir die größte Not,"
            "Vor Augen steht der ewig Tod."
            "Ach komm, führ uns mit starker Hand"
            "Vom Elend zu dem Vaterland."
          }
        }
      }
    }
  %   \combine \null \vspace #3.0 % adds vertical spacing between verses
    \vspace #1.0 %%% Vertikalen Abstand steuern
    \fill-line { %%% mit drei Elementen, links und rechts der unsichtbare Punkt, damit der Mittelteil zentriert wird
  \null %%% unsichtbarer Punkt
      \line {
        \bold "7."
        \column {
          "Da wollen wir all danken dir,"
          "Unserm Erlöser, für und für;"
          "Da wollen wir all loben dich"
          "Zu aller Zeit und ewiglich."
        }
      }
  \null %%% unsichtbarer Punkt
}
  }
}

Versuche das ganze als ein »Ineinanderschachteln von Formatierungsanweisungen« zu verstehen, und das ganze dann mit einer ordentlichenen Anzahl der logischen Ebenen.

Frohe Weihnachten,

Arnold.

Joei

vielen Dank Arnold, das hat geholfen.