• Willkommen im Forum „Archiviertes Lilypond Forum (2017)“.
 

Dies ist das Archiv des alten Forums (bis März 2017). Das aktuelle Forum ist unter lilypondforum.de zu finden.
This is the archive of the old forum (until March 2017). You can find the current forum at lilypondforum.de.

Hauptmenü

Problem bei Funktionen mit mehr als 3 Parametern

Begonnen von derburn, Mittwoch, 9. März 2011, 17:41

Vorheriges Thema - Nächstes Thema

derburn

Hallo allerseits,

ich habe ein Problem beim Definieren einer Funktion mit mehr als 3 Parametern (lilypond-Version 2.12.2).
Die Funktion sieht folgendermaßen aus:

#(define-markup-command (fourCards layout props letterOne letterTwo letterThree letterFour) (string? string? string? string?)
 "Print a line of four cards."
 (interpret-markup layout props
  (markup
    #:left-column (
      #:line(
        #:column (#:hcenter-in 40 (#:card letterOne))
        #:hspace 1
        #:column (#:hcenter-in 40 (#:card letterTwo))
        #:hspace 1
        #:column (#:hcenter-in 40 (#:card letterThree))
        #:hspace 1
        #:column (#:hcenter-in 40 (#:card letterFour)))))))


Die Methode #:card zeichnet eine Box mit dem angegebenen Buchstaben als Inhalt, d.h. mit der Methode fourCards
sollte eigentlich eine Zeile mit 4 Karten entstehen.

Aufruf:

\markup \fourCards #"A" #"B" #"C" #"D"

Der Aufruf ergibt den Fehler: "no parser tag defined for this markup signature"
und in der betreffenden Aufrufzeile entsteht die Meldung:
"syntax error, unexpected SCM_TOKEN
\markup \fourCards
                  #"A" #"B" #"C" #"D"
"

Jetzt könnte ich noch an falsche Syntax glauben.
Sowie ich aber den 4. Parameter weglasse und beispielsweise #:card letterFour mit #:card letterThree ersetze,
(und natürlich beim Aufruf nur bis zum "C" übergebe), habe ich (fast) genau das, was ich wollte:
eine Zeile mit 4 Karten, worin die ersten 3 Buchstaben angezeigt werden, der dritte dank meiner Ersetzung doppelt.

Gibt es etwa eine ungeschriebene Regel, die sagt: nicht mehr als 3 Parameter bei markups?
So einen Fehler habe ich bislang noch nie beobachtet - ich bin ziemlich ratlos...

Was ebenfalls nicht funktioniert, ist, den 4. Parameter nicht als string, sondern z.B. als Nummer zu übergeben
(und weiter zu ignorieren). Ich kann machen, was ich will: sowie ich den 4. Parameter hinzu nehme, erscheinen o.g. Fehlermeldungen.

Hat jemand schon mal so was Verrücktes gesehen?
  -

RobUr

Wo und wie ist denn die Methode #:card definiert?

RobUr

Mit der Entwicklerversion geht's! Muss wohl eine Beschränkung in 2.12.3 sein :(

Grüße, Robert

derburn

Vielen Dank!

Gehe ich recht in der Annahme, dass Du die aktuelle Entwickler-Version 2.13.53-1 bemühst?

Viele liebe Grüße,
Manuel

derburn

Hallöchen nochmal,

ich hab es jetzt einfach mal mit der neuesten Version (2.13.53-1) probiert - geht.
Danke nochmals!

RobUr

Ja, ich hatte es mit 2.12.3 und dann mit 2.13.53 probiert.

Grüße, Robert