\addQuote – but add to what? [GELÖST]

Begonnen von ingmar, Freitag, 16. Oktober 2020, 11:42

« vorheriges - nächstes »

ingmar

Folgendes steht in der "NR":

Zitat von: Notation ReferenceDer \addQuote-Befehl, auf höchster Ebene in der Datei, definiert einen Notenabschnitt, aus dem zitiert werden kann.

Ebenfalls in der Doku finde ich noch:
Zitat\addQuote [void] - name (string) music (music)
– Define music as a quotable music expression named name

Ich frage mich nun, was das genau bedeutet, und wie ich feststellen kann, ob die Definition, also die Verknüpfung von "music" mit einem bestimmten Bezeichner, bereits stattgefunden hat. Wem fügt der Befehl denn nun dieses Zitat hinzu? – Ich brauche also sowas wie folgendes (die letzte Zeile geht so natürlich nicht und ist deshalb auskommentiert), das einfach nur ein boolean zurückliefen würde:

\version "2.20.0"
\addQuote "musica" \relative { c'8 d e f g4 g a8 a a a g2 }
% #(is-quote? "musica" )


Hat jemand eine Idee? – Danke!
--ingmar

harm6

Sobald \addQuote aufgerufen ist, weiß der parser darüber Bescheid und verwaltet eine Liste (genauer gesagt eine hash-table) mit solcher zitierfähiger Musik.

Du kannst es prüfen mit:


\addQuote "musica" \relative { b1 }

#(define (is-stored-as-quote? name-string)
  (let ((target (hash-ref (ly:parser-lookup 'musicQuotes) name-string)))
    (format #t "Found \"~a\" in musicQuotes: ~a\n" name-string (->bool target))))
   
#(is-stored-as-quote? "musica")
#(is-stored-as-quote? "mus")


Zitat von: terminal
Found "musica" in musicQuotes: #t
Found "mus" in musicQuotes: #f

Gruß,
  Harm

ingmar

Ah! Danke.

Jetzt wird das ein ganzes Stück verständlicher. Sollte man sowas nicht in die Doku aufnehmen?

Gruß,
--ingmar

harm6

In der Doku steht nicht, daß mittels addQuote definierte Musik in einer hash-table gespeichert wird oder wie diese hash-table heißt bzw gefunden werden kann.
Aber es steht, wie Du ja auch gefunden hast, daß addQuote Musik zum zitieren definiert.
Reicht das nicht für fast jeden Anwendungsfall?
Das jemand wie ich daher kommt und im parser rumpopelt ist doch eher selten, imho... :)

Gruß,
  Harm

ingmar

#4
Zitat von: harm6 am Freitag, 16. Oktober 2020, 13:04
Sobald \addQuote aufgerufen ist, weiß der parser darüber Bescheid und verwaltet eine Liste (genauer gesagt eine hash-table) mit solcher zitierfähiger Musik.
Ja. Ich hatte in einem längeren Codeabschnitt seltsame Seiteneffekte und führte diese darauf zurück, dass ich die gleiche "Quote" ein zweites Mal hinzugefügt hatte. In dem Wissen, dass intern ein hashtable verwendet wird, kann ich mir nun aber nicht mehr vorstellen, dass das die Quelle meines Problems war. Insofern wäre das Wort "hashtable" in der Doku für mich nützlich gewesen. Aber solche Spezialfragen wie meine treten vermutlich nur selten auf.

Danke.

Inzwischen stoße ich mich aber an dem Wort "auf höchster Ebene" in der NR:
ZitatDer \addQuote-Befehl, auf höchster Ebene in der Datei, definiert einen Notenabschnitt, aus dem zitiert werden kann.
Ich verwende den Befehl innerhalb eines Scores, also sicher nicht der Ebene der Bundesregierung. Vielleicht war das mein Fehler...

Gruß,
--ingmar

EDIT: Zusatz.