Allgemein > Allgemeine Diskussion
Buch erstellen
musicmaker:
Da ich noch ziemlich neu im Umgang mit lilypond bin, bitte ich um eine Struktur für ein Buch. Das was ich in der Buchdatei habe, ist aus irgendwelchen Codeschnipseln zusammengeschrieben worden. Daher können Fehler durch das Einfügen von Dateien schon entstanden sein, die selbst Variablen beinhalten.
Ich bitte um Rückmeldungen.
Gruß musicmaker
ding-dong:
ich hab hier einmal deine unterdatei.ly "bereinigt" um sie dann in der buchdatei zu includieren:http://
musicmaker:
Hallo,
die Idee mit der Variable in der Unterdatei finde ich gut, aber sie macht diese für die Erstellung einer PDF der Unterdatei unbrauchbar. Kann man nicht auch temporär diese Variable dort setzen? Vielleicht am Anfang Überschreiben und am Ende zurück überschreiben?
Des Weiteren müsste dies auch irgendwie automatisch gehen, indem eine Funktion die inkludierten Dateien in Reihenfolge durchgeht und Variablen setzt.
Übrigens bei der tocItem- Funktion möchte ich die subtitles der Unterdateien übergeben. Wie kann ich das realisieren?
Gruß musicmaker
RobUr:
Hallo musicmaker,
herzlich willkommen im Forum!
--- Zitat von: musicmaker ---Da ich noch ziemlich neu im Umgang mit lilypond bin, bitte ich um eine Struktur für ein Buch.
--- Ende Zitat ---
Sicher hilft dir dieser Beitrag dabei.
--- Zitat von: musicmaker ---Dass heißt, das Einfügen mit Include darf keine eigenen Variablen beinhalten, …
--- Ende Zitat ---
Das ist nicht richtig. Es gibt aber grundsätzliche, einfache Regeln für Variablen in Lily:
* Der Bezeichner (Name der Variablen) muss dokumentweit eindeutig sein (also bis zur obersten Datei, in der die Variable bspw. aus einer anderen Datei durch \include eingebunden wird).
* Die Variable muss im Quelltext vor ihrem Aufruf bereits definiert sein.
* Existieren mehrere Variablen mit dem gleichen Bezeichner, wird ab der entsprechenden Stelle der zuletzt definierte Inhalt interpretiert.
--- Zitat von: musicmaker ---Das was ich in der Buchdatei habe, ist aus irgendwelchen Codeschnipseln zusammengeschrieben worden. Daher können Fehler durch das Einfügen von Dateien schon entstanden sein, die selbst Variablen beinhalten.
--- Ende Zitat ---
Also Vorsicht beim Verschachteln von Variablen und Einbinden von Dateien, deren Inhalt man nicht genau kennt! Wichtige und häufig gebrauchte Snippets/Variablen landen bei mir in einer separaten Datei, die zu Beginn jedes neuen Dokuments eingebunden wird und dadurch zur Verfügung steht. Alle „alten Hasen“ hier machen das ähnlich. Kann ich nur jedem Einsteiger wärmstens empfehlen! (Anfangs ist es meist nur eine unsortierte Datei, in die man lose Schnipsel kopiert und bei Bedarf in das Hauptdokument einfügt; quasi Spickzettel. Immer wieder gebrauchte Variablen sind aber in einer zentralen Include-Datei am besten aufgehoben.)
--- Zitat von: musicmaker ---aber dann muss man ja prinzipiell eine andere Struktur vorsehen, um Lieder in ein Buch schreiben zu können?
--- Ende Zitat ---
Andere Struktur? Nö. Nur eindeutige Variablendeklaration nach obigen Grundregeln.
--- Zitat von: musicmaker ---Beziehungsweise muss man, wenn man vor hat, die Lieder mal später in ein Buch zu bringen von vornherein eine kompatible Struktur vorsehen.
--- Ende Zitat ---
Kompatibel ist immer gut und beantwortet deine eigene Frage. Sehr gut. Allerdings (das muss man zugeben): man weiß ja vorher nicht genau oder gar nicht, in welchen Dateien außer der aktuellen die Includes später noch verwendet werden. Es ist aber recht einfach, eine Datei zu duplizieren und darin befindliche Variablen kurzerhand umzubenennen.
--- Zitat von: musicmaker ---Und die Lesbarkeit dabei ist stark herabgesetzt, gerade bei Stücken mit vielen Instrumenten oder Chorälen.
--- Ende Zitat ---
Da muss ich dir bedingt Recht geben. Aber es liegt viel an deiner Kreativität, die Variablen kanonisch zu benennen. Ich persönlich finde es äußerst hinderlich, dass Variablennamen in Lily nur Buchstaben enthalten dürfen. Das schränkt die Kreativität in der Bezeichnung immens ein.
--- Zitat von: musicmaker ---die Idee mit der Variable in der Unterdatei finde ich gut, aber sie macht diese für die Erstellung einer PDF der Unterdatei unbrauchbar. Kann man nicht auch temporär diese Variable dort setzen? Vielleicht am Anfang Überschreiben und am Ende zurück überschreiben?
--- Ende Zitat ---
In wie weit „unbrauchbar“? Ich schau’s mir mal kurz an. Temporär funktioniert nicht so, wie du es meinst. Anfangs setzen, dann überschreiben (das ist einfach) und auswerten und zum Schluss den vorangegangenen Wert zurück schreiben und neu auswerten geht selbst in gestandenen Programmiersprachen nicht ohne Hilfe von temporär deklarierten Variablen. Haben wir etwa Speicherknappheit??? ;)
--- Zitat von: musicmaker ---Des Weiteren müsste dies auch irgendwie automatisch gehen, indem eine Funktion die inkludierten Dateien in Reihenfolge durchgeht und Variablen setzt.
--- Ende Zitat ---
Das ist es ja gerade: eine .ly-Eingabedatei wird doch von oben nach unten eingelesen und ausgewertet! Eine \include-Anweisung wird dabei so gehandhabt, als ob der Inhalt der Datei an dieser Stelle hineinkopiert wäre. Ist das so schwer zu verstehen? Mach dir einfach mal die Mühe und füge den Dateiinhalt 1:1 an Stelle des \include ein. Dann kannst du den Durchlauf vielleicht besser nachvollziehen.
--- Zitat von: musicmaker ---Übrigens bei der tocItem- Funktion möchte ich die subtitles der Unterdateien übergeben.
--- Ende Zitat ---
Das dürfte per \fromproperty #'header:subtitle machbar sein (ungetestet), sofern subtitle bereits definiert wurde.
Viele Grüße, Robert
musicmaker:
Also das sind ja sehr viele Anregungen für mich.
Es ist aber so, wenn man eine Datei vorher includiert, dann hat man den vollständigen Quellcode von der Unterdatei in der Buchdatei enthalten und ruft dann im bookpart -> score {Variable} den Scorepart der Unterdatei auf.
Jetzt muss man aber weiter denken, denn man will ja nicht nur eine Datei includieren. Am Besten man würde das System die Unterdateien in einem Ordner suchen lassen und einfügen oder man schreibt alle Dateilinks rein. Egal wie, auf jeden Fall muss dann jede Datei eine andere Variable für den Score besitzen. Dass heißt, man muss das immer per Hand machen. Daher hatte ich gefragt, ob man wie beim Programmieren eine Zählvariable hochlaufen lässt, um den Scorteil nacheinander einzufügen. Dies aber in verschiedenen Bookparts.
Der Hinweis für \tocItem \markup { \fromproperty #'header:subtitle \null} funktioniert leider nicht. Hierbei wird der Untertitel der Unterdatei, obwohl angegeben, transparent dargestellt (also nicht dargestellt). Die Seitenzahl ist aber zu sehen.
Mit dem unbrauchbar ist es so zu sehen: Wenn ich die Unterdateien so mit Variablen strukturiere, dann kann ich sie anschließend nicht mehr einzeln aufrufen und eine PDF erstellen!
Noch etwas:
Ich dachte, ich könnte den Header-Bereich aus der Unterdatei auch in eine Variable schreiben und einfügen. Zum Beispiel, um die TExtmarken für das Inhaltsverzeichnis zu setzen. DIes funktioniert aber nicht. Leider ist es eher so, dass sich der Header von der Buchdatei und der Unterdatei überschreiben.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln