Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: erich am Sonntag, 19. Juni 2022, 11:37

Titel: Ausschalten einer Fuktion
Beitrag von: erich am Sonntag, 19. Juni 2022, 11:37
Hallo Allen

Ich verwende im Notentext eine selbstdefinierte Funktion 'pz', die mir Hilfslinien erzeugt.
Mein Problem: Ich möchte die pz-Anweisungen im Notentext überlesen können, ich möchte sie also nicht einzeln schöschen. Wie kann ich die Fuktion ausschalten, etwa indem ich sie durch eine leere Funktion überschreibe. Wie kann man das machen?

Gruß Erich
Titel: re: Ausschalten einer Funktion
Beitrag von: ingmar am Sonntag, 19. Juni 2022, 12:31
?

Ich hab Schwierigkeiten, dein Problem zu verstehen. Üblicherweise setzt man einfach eine Variable, also sowas wie myfunction_ignore = ##t. Und in der Funktion selbst fragt man dann, (1) ob die Variable überhaupt definiert ist, und anschließend (2), ob sie #f ist, und führt nur in diesem Falle aus; andernfalls kehrt man zurück oder liefert { }.

Wo genau drückt der Schuh?

--ingmar
Titel: Antw:Ausschalten einer Fuktion
Beitrag von: Malte am Sonntag, 19. Juni 2022, 17:41
Ich könnte mir vorstellen, daß du so etwas wie
pz = #(define-music-function ...)hast. Das läßt sich direkt im Anschluß überschreiben:
pz = #(define-music-function ...)
pz = {}
Titel: Antw:Ausschalten einer Fuktion
Beitrag von: erich am Montag, 20. Juni 2022, 12:41
Danke für die Hinweise; mir scheint, mann muss bei einer leeren Funktion die Parameter spezifizieren.
So hab ich es hinbekommen.
Erich
Titel: Antw:Ausschalten einer Fuktion
Beitrag von: Malte am Montag, 20. Juni 2022, 15:50
Oh, stimmt, daran hab ich nicht gedacht. Nur für den Fall, daß jemand in Zukunft über diesen Thread stolpert: Das könnte z. B. so aussehen:
\version "2.22.2"

farbe = #(define-music-function (color) (color?) #{
  \once \override NoteHead.color = #color
  \once \override Stem.color = #color
         #})

%farbe = #(define-music-function (color) (color?) #{#})

\relative {
  c'2 \farbe #red d e \farbe #blue f
}
Die zweite (hier auskommentierte) Definition von farbe überschreibt die Funktion, sodaß sie einfach nichts tut.