• Willkommen im Forum „Archiviertes Lilypond Forum (2017)“.
 

Dies ist das Archiv des alten Forums (bis März 2017). Das aktuelle Forum ist unter lilypondforum.de zu finden.
This is the archive of the old forum (until March 2017). You can find the current forum at lilypondforum.de.

Hauptmenü

Inhaltsverzeichnis hat andere Seitengröße als der Rest -wieso?

Begonnen von Manuela, Montag, 26. September 2016, 09:47

Vorheriges Thema - Nächstes Thema

Manuela

Hi, ich bin noch immer bei meiner Liedersammlung.

Das Inhaltsverzeichnis bereitet mir Kopfzerbrechen, der Seitenumbruch erfolgt früher als beim Rest der Lieder, es scheint so, als ob das Seitenlayout anders ist als beim Rest des Dokuments. Ich füge mal als Beispiel einen Teil des erzeugten PDFs ein  (komplettes Inhaltsverzeichnis plus ein paar Lieder) sowie die ly-Dateien. Es kompiliert nur die Datei "__Header.ly", wenn sich die anderen Lieder aus der ZIP-Datei im gleichen Verzeichnis befinden (ich hoffe, ich habe bei der Aufbereitung keinen Fehler gemacht)

harm6

ZitatDas Inhaltsverzeichnis bereitet mir Kopfzerbrechen, der Seitenumbruch erfolgt früher als beim Rest der Lieder, es scheint so, als ob das Seitenlayout anders ist als beim Rest des Dokuments.

Das Seitenlayout ist nicht anders. Aber das Inhaltsverzeichnis ist eine markuplist. LilyPond versucht allerdings eine gleichmäßige Aufteilung auf mehrere Seiten.
Beim Inhalstsverzeichnis ist das in der Regel unerwünscht.

Ich würde das Inhaltserzeichnis in einen eigenen bookpart setzen und im bookpart
ragged-last-bottom = ##t
evtl auch page-count


Folgendes minimal hat ragged-last-bottom = ##f und die Zeilen sind über zwei Seiten verteilt.
Ändere auf ##t und beobachte was passiert.
Ohne es mit Deinen files ausprobiert zu haben erwarte ich dort den gleichen Effekt.


\bookpart {
   \paper { ragged-last-bottom = ##f }
   $(make-list 120 "xy")
}



Gruß,
  Harm

Manuela

Danke, Harm.
Inzwischen habe ich sogar herausgefunden, wie man das Inhaltsverzeichnis in einen eigenen Bookpart setzt  ;)

Inhaltsverzeichnis seitlich enger

Manuela

#3
Harm, das funktioniert leider nicht, zumindest nicht mit dem Inhaltsverzeichnis.

Ich habe ein Beispiel zusammengestellt, leider nicht unbedingt minimal (muss jetzt dringend weg)

Manuela

#4
Ich habe jetzt in einer Brachialaktion das Papierformat des Inhaltsverzeichnisses auf 20" Höhe gesetzt


#(set! paper-alist (cons '("mein Format" . (cons (* 8.27 in) (* 20 in))) paper-alist))
\bookpart {
  \paper {
    #(set-paper-size "mein Format")
    %right-margin =3.5\cm %rechter Rand
    left-margin = 3.5\cm %linker Rand
    top-margin = 20\mm
    bottom-margin = 35\mm
    annotate-spacing = ##f
    #(define page-breaking ly:minimal-breaking)
    print-page-number = ##f
    %\override #'(font-size . -3)
    last-bottom-spacing  = #'((basic-distance . 12)
                              (padding . 4)
                              (minimum-distance . 10)
                              (stretchability . 60))
  }


  \markuplist
  \table-of-contents
  \pageBreak
  \markuplist \index
  \indexSection #"#" \markup { " " }
}


Die tatsächliche Seitenhöhe ist zwar noch immer A4, aber das Verzeichnis geht bis zum unteren Rand.

harm6

Hallo Manuela,

ich hatte nur kurz Zeit durch Deine files zu schauen, aber es gibt dort dermaßen viele Setzungen, daß ich denke es gibt sich widersprechende/ausschließende Setzungen. Ich zumindest habe nach kurzer jeglichen Überblick verloren...
Allerdings denke ich nach wie vor, daß ragged-last-bottom = ##t der Weg zum Ziel ist.
Siehe auch folgendes Beispiel, in dem zu einem minimal einfach weitere tocItems hinzugesetzt werden (um die korrekte Seitenzahl hab' ich mich nicht gekümmert, deshalb erscheint immer "?")


#(define (add-more-tocs i)
  (set! toc-items
     (lambda ()
       (map
         (lambda (nmbr)
           `(,(string->symbol (format #f "toc~a" nmbr)) tocItemMarkup "foo"))
         (iota i 99 1)))))

\bookpart {
  \paper {
    ragged-last-bottom = ##t
  }
  \markuplist \table-of-contents
}


\score {
  {
    #(add-more-tocs 110)
    c'1
  }
}


Du solltest wohl alle paper-Setzungen auskommentieren und mit einem score anfangen, um das Problem zu finden.
Viel Arbeit, ich weiß...

Gruß,
  Harm

Manuela

Zitat von: harm6 am Dienstag, 27. September 2016, 00:49
ich hatte nur kurz Zeit durch Deine files zu schauen, aber es gibt dort dermaßen viele Setzungen, daß ich denke es gibt sich widersprechende/ausschließende Setzungen. Ich zumindest habe nach kurzer jeglichen Überblick verloren...
Allerdings denke ich nach wie vor, daß ragged-last-bottom = ##t der Weg zum Ziel ist.
Siehe auch folgendes Beispiel, in dem zu einem minimal einfach weitere tocItems hinzugesetzt werden (um die korrekte Seitenzahl hab' ich mich nicht gekümmert, deshalb erscheint immer "?")


Danke Harm, es scheint, dass ich ganz von vorne beginnen muss.
Zum Glück habe ich die Formatierung in einem eigenen File.

Manuela

Du hast recht, das hängt irgendwie mit diesen Einstellungen zusammen:

  %% Abstand von Liedtext zu nachfolgender Überschrift
  markup-markup-spacing  = #'((basic-distance . 12)
                              (minimum-distance . 5)
                              (padding . 5)
                              (stretchability . 0))

  %% Abstand des Textes nach den Noten
  score-markup-spacing  = #'((basic-distance . 3)
                             (minimum-distance . 15)
                             (padding . 5)
                             (stretchability . 0))
  %% Abstand vom oberen Seitenrand
  top-markup-spacing  = #'((basic-distance . 0)
                           (minimum-distance . 0)
                           (padding . 0)
                           (stretchability . 0))
  top-system-spacing  = #'((basic-distance . 0)
                           (minimum-distance . 4)
                           (padding . 0)
                           (stretchability . 0))
  markup-system-spacing  = #'((basic-distance . 3)
                              (minimum-distance . 8)
                              (padding . 0)
                              (stretchability . 0))
  last-bottom-spacing  = #'((basic-distance . 8)
                            (padding . 0)
                            (stretchability . 0))


Jetzt muss ich nur rausfinden, wie.

harm6

Für einen bookpart der nur das Inhaltsverzeichnis umfaßt sind die meisten spacings doch sowieso überflüssig. Verwende dort nur was Du wirklich haben willst.
Du hast auch stretchability überall auf null gesetzt. Und nimmst LilyPond damit einen großen Teil der Flexibilität, wohl um auf Deinen Angaben zu bestehen. Allerdings wundert es nicht wenn LilyPond das dann auch macht ;)

Also, ins paper für das file gehören nur die Sachen die für alle books eines files gelten sollen.
Ins book-paper gehören nur die Sachen, die für das ganze book gelten sollen.
Ins bookpart-paper gehören nur die Sachen, die für diesen bookpart gelten sollen.
Einzelne score-Setzungen ins score-layout.

Entsprechendes gilt natürlich fürs file/book/bookpart/score-layout.

Gruß,
  Harm

Manuela

Danke Harm für deine Mühe.

Ich muss die komplette Ausgabe neu sortieren (ist irgendwie "historisch" gewachsen und daher nicht ganz durchdacht) und melde mich dann wieder.

Manuela

Jetzt funktioniert zwar das Inhaltsverzeichis, aber sonst nichts.

Ein Minimalbeispiel:


\version "2.19.37"

\bookpart {
  \paper {
    line-width = 150\mm
  }
  \include "test.ly"
}

%%%%% test.ly

firstvoice =
\relative c' {
  \key g \major
  c c c
  \bar "|."
}
#'()
\relative c'' \firstvoice


liefert die Fehlermeldung

G:/Lilypond/_Liederheft/Forum/test.ly:3:1: Fehler: syntax error, unexpected STRING

firstvoice =
G:/Lilypond/_Liederheft/Forum/test.ly:12:15: Fehler: Ungültige Fluchtsequenz: »\firstvoice«
\relative c''
              \firstvoice
G:/Lilypond/_Liederheft/Forum/test.ly:12:15: Fehler: falscher Typ für Argument 2; music erwartet, "firstvoice" gefunden


Schreibe ich die Includedatei um, so kompiliert der Code

#(define firstvoice #{
\relative c' {
  \key g \major
  c c c
  \bar "|."
} #} )

#'()
\relative c'' \firstvoice


Das Problem ist jetzt natürlich, dass ich schon ca. 70 Dateien habe, wo ich in jeder 4-5 Variable auf diese Art umschreiben müsste. Gibt es einen einfacheren Weg?

harm6

pseudocode:

\bookpart {
#(define <whatever>)
...
}

birgt ein Problem. Ich hab' aber vergessen welches :(
Auf jeden Fall würde ich das lassen.

Der sicherste Weg wäre Deine Lieder in einzelne files abzulegen in denen ausschließlich Variablen definiert sind.
Im master-file werden sie dann via include eingebunden.
Im eigentlichen book(part) dann aufgerufen.
Die einzelnen bookparts können dann problemlos eigene Setzungen haben.


Nichtsdestotrotz im Anhang eine minimal-invasive Korrektur Deiner files. Hier verlasse ich mich aber auf bestimmte LilyPond-Automatismen, das kann auch schon mal in die Hose gehen...

Gruß,
  Harm

Manuela

#12
Wieder einmal danke Harm  :)

Zitat von: harm6 am Dienstag, 27. September 2016, 22:47
pseudocode:

\bookpart {
#(define <whatever>)
...
}

birgt ein Problem. Ich hab' aber vergessen welches :(
Auf jeden Fall würde ich das lassen.

Scheint ein älteres Problem zu sein, ich glaube, über genau das gleiche wird hier diskutiert

making a book with LilyPond
Re: \bookpart and the "\include trouble"
variables in \book { }

Das bedeutet, dass in diesem Fall der Fehler nicht vor dem Bildschirm sitzt, oder täusche ich mich?

harm6

Dieser thread variables in \book { } diskutiert das Problem, und, ja, an diese Diskussion hatte ich nur noch eine schwache Erinnerung. ;)
Danke für die Mühe ihn rausgesucht zu haben.

Zur Illustration:


music = \relative c' { c4 d e f }

\bookpart {
#(define music #{ \transpose c cis \music #})
\new Staff \music
}

\bookpart {
\new Staff \music
}


Welchen Inhalt soll "music" im zweiten bookpart haben?

Tatsächlich wird die transponierte Fassung genommen, denn faktisch ist die Definition im ersten bookpart eine auf toplevel-Niveau.

Allerdings gibt es ja die Möglichkeit in book(parts) eigene papers zu setzen, inwieweit es problematisch wäre diese Möglichkeit auch auf andere Typen von Setzungen auszudehnen, ist meinem Gefühl nach jedoch nicht völlig ausdiskutiert.

Gruß,
  Harm