Autor Thema: system-separator-markup auch links möglich?  (Gelesen 3579 mal)

Radler

  • Member
system-separator-markup auch links möglich?
« am: Freitag, 17. September 2010, 10:47 »
Hallo liebe Mit-Notisten,

ich setze gerade ein etwas unübersichtliches Stück, wo die Anzahl der Systeme pro Notenzeile häufig wechselt (3-stimmig zu 1-stimmig und zurück - zwecks Platzersparnis möchte ich die leeren Systeme mittels \RemoveEmptyStaffContext entfernen und auch entfernt lassen), also ich setze gerade ein unübersichtliches Stück und hätte die system-separator-markup-Zeichen gerne zusätzlich auf der rechten Seite, ersatzweise nur auf der rechten Seite.

Hat jemand 'ne Idee? Würde mir sehr nützen!

Viele Grüße und Dank
von Radler
« Letzte Änderung: Sonntag, 19. September 2010, 08:37 von Radler »

RobUr

  • Member
Re:system-separator-markup auch links möglich?
« Antwort #1 am: Sonntag, 19. September 2010, 04:24 »
Lieber Radler: Die separators sind doch links! Und ich habe diese auch noch nie am rechten Rand gesehen. Meinst du vielleicht etwas anderes?

Grüße, Robert

Radler

  • Member
Re:system-separator-markup auch links möglich?
« Antwort #2 am: Sonntag, 19. September 2010, 08:37 »
Manche Leute meinen, lechts und rinks könne man nicht verwechseln - werch ein Illtum (Ernst Jandl - trifft auch auf mich zu) - ich habe meine Anfrage korrigiert. Danke Robert!

Ich habe die Seperatoren übrigens auch noch nie auf der rechten Seite gesehen. Aber bei der Benutzung der Noten fiel mir auf, dass mein Auge am rechten Ende der Zeile wissen muss, wie weit nach unten es muss, wenn es auf die nächste Zeile springt. Deshalb ist rechts die richtige Seite, diese Information (also die Zeilen-Seperatoren) anzubringen.

Grüße und Dank
von Radler

(Alle Seiten-Angaben (rechts/links) vor dem Absenden mehrfach überprüft - wenn wieder was nicht stimmt: bitte melden!)
« Letzte Änderung: Sonntag, 19. September 2010, 10:58 von Radler »

RobUr

  • Member
Re:system-separator-markup auch links möglich?
« Antwort #3 am: Donnerstag, 23. September 2010, 12:37 »
Hallo Radler,

die Position des separator-Markups ist hardcodiert und nicht durch eine Variable zu erreichen. Du kannst aber dennoch den Trenner an’s Zeilenende verlagern, indem du die Datei scm/page.scm editierst. Die Zeile #295 (v2.12.3) bzw. #261 (v2.13.33) suchen; dort steht eine 0. Das ist der Wert für den horizontalen Versatz. Die 0 wird nun mit dem Ausdruck (ly:output-def-lookup layout 'line-width) ersetzt. Der geänderte Abschnitt sollte dann folgendermaßen aussehen:
    (if (and (ly:stencil? system-separator-stencil)
     last-system
     (not (paper-system-title? system))
     (not (paper-system-title? last-system)))
(add-to-page
system-separator-stencil
;0 ;durch nachfolgende Zeile ersetzt
(ly:output-def-lookup layout 'line-width)
(average (- last-y
     (car (paper-system-staff-extents last-system)))
  (- y
     (cdr (paper-system-staff-extents system))))))

Grüße, Robert

Radler

  • Member
Re:system-separator-markup auch links möglich?
« Antwort #4 am: Montag, 27. September 2010, 09:13 »
Gute Güte, lieber Robert, da überschätzt Du mich aber erheblich!
Ich nehme an, dass Dein Tipp bedeutet, dass ich den LilyPond-Code (in Scheme, soviel ich weiß) verändern müsste. Dann müsste ich LilyPond neu bauen und das bei jedem neuen LilyPond-Release wiederholen.
So weit bin ich noch lange nicht, fürchte ich. Vorläufig beschränkt sich meine Kontakt zum LilyPond-Code auf die LilyPond.exe
Aber trotzdem Dank für Deine Mühe!
Viele Grüße
von Radler

RobUr

  • Member
Re:system-separator-markup auch links möglich?
« Antwort #5 am: Donnerstag, 30. September 2010, 04:15 »
Zitat von: Radler
Gute Güte, lieber Robert, da überschätzt Du mich aber erheblich!
Nö. Mach einfach!

Zitat von: Radler
Ich nehme an, dass Dein Tipp bedeutet, dass ich den LilyPond-Code (in Scheme, soviel ich weiß) verändern müsste.
Falsch. Es handelt sich um eine ordinäre Text-Datei (mit Scheme-Definitionen zugegebenermaßen), die während des Lily-Durchlaufs ausgewertet wird. Lily-(Binär-)Code ist es deswegen nicht. Es ist doch nur eine Zeile …

Zitat von: Radler
Dann müsste ich LilyPond neu bauen und das bei jedem neuen LilyPond-Release wiederholen.
Jein – Lily neu bauen nicht, bei jedem neuen Lily-Release wiederholen ja. So lange, bis es eine Benutzerschnittstelle dafür gibt …

Im Ernst – es ist nur diese eine Angabe innerhalb des Codeblocks, der für die Position des Separators sorgt! Ich habe es selbstverständlich ausprobiert, und ja: es klappt! Die Änderung ist ja auch reversibel. Der komplette Block ist nur zur Orientierung angegeben, weil die Zeilennummern zwischen den Versionen nicht übereinstimmen. Fakt ist, dass du dir die „0“ in dieser Umgebung raussuchst und sie gegen (ly:output-def-lookup layout 'line-width) austauschst. FALLS was schiefgehen sollte, ist mit Drüberinstallieren oder dem nächsten Update alles beim Alten. Zu beachten wäre nur, die Datei nicht mit MS Word oder Wordpad (generell Textverarbeitung), sondern mit einem Texteditor zu bearbeiten; mehr nicht.
In kommenden Lily-Versionen kann sich durchaus etwas in dieser Datei ändern, aber so viel wird’s nicht sein, dass die Abfrage nach „ist denn system-separator angefordert oder nicht“ vollständig umgebaut würde. Was ich sagen kann ist, dass der Wert „0“ in dieser Zeile der horizontale Offset vom linken Rand aus ist (also links minus null = ganz links) und die Scheme-Prozedur (ly:output-def-lookup layout 'line-width) den aktuellen Wert der Zeilenbreite zurückgibt, um das Separatormarkup um diesen Wert nach rechts zu verschieben, also am Zeilenende zu landen.

Ich bin nicht sehr vertraut damit, solche Lily-Internals in eine handliche Funktion zu packen, insbesondere wenn ich keinen Ansatz für eine Variable finde: dort steht einfach „0“ – und das war’s. Es wäre sicher eine Feature-Request wert, die Optionen rechts/links/beides anzubieten! Denn ehrlich gesagt habe ich das gleiche Leseproblem wie du ;)

Viele Grüße, Robert

ding-dong

  • Member
Re:system-separator-markup auch links möglich?
« Antwort #6 am: Donnerstag, 30. September 2010, 10:26 »
ab version 2.13.irgendwas gibt es die option include-settings die beim auruf von Lilypond angegeben werden kann und wo eigene einstellungen/präferenzen definiert werden können - ev. könnte dies dafür verwendet werden. damit würde dann das ständige "korrigieren" dieses programmteiles bei neuen versionen wegfallen. leider habe ich damit aber noch keine erfahrungen.

ding-dong

  • Member
Re:system-separator-markup auch links möglich?
« Antwort #7 am: Donnerstag, 30. September 2010, 11:12 »
sorry - das war etwas vorschnell, dort wird lilypond input erwartet...

Radler

  • Member
Re:system-separator-markup auch links möglich?
« Antwort #8 am: Donnerstag, 30. September 2010, 16:37 »
Wirklich und wahrhaftig, ich habs geschafft!!! Hätte ich ja nie gedacht!
Offenbar ist Scheme eine interpretierende Sprache? Wusste ich gar nicht.
Vielen Dank Robert!
Mal sehen, wenn mir ein sed-script einfällt, das die Änderung bei jeder neuen Version automatisch durchführt, stelle ich es hier noch ein.
Grüße und nochmals Dank
von Radler