Ausschalten einer Fuktion

Begonnen von erich, Sonntag, 19. Juni 2022, 11:37

« vorheriges - nächstes »

erich

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

ingmar

?

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

Malte

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 = {}

erich

Danke für die Hinweise; mir scheint, mann muss bei einer leeren Funktion die Parameter spezifizieren.
So hab ich es hinbekommen.
Erich

Malte

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.