Dynamictext

Zur Navigation springen Zur Suche springen
Text als DynamicText

Im Context Dynamics kann man normalen Text nicht verwenden. Diese Funktion ermöglicht es, beliebigen Text in DynamicText umzuwandeln und außerdem alle Formatierung, die für Markup möglich sind, zu verwenden.

Folgende Zeile muss eingefügt werden, sonst ist die Funktion string-match nicht bekannt:

#(use-modules (ice-9 regex))

Die charakteristische Fehlermeldung lautet: Unbound variable: string-match

Score

dynamictext =
#(define-event-function (text) (markup?)
   (if (string? text)
       (let* ((underscores-replaced
               (string-map
                (lambda (x) (if (eq? x #\_) #\space x))
                text))
              (split-text (string-split underscores-replaced #\space))
              (formatted (map
                          (lambda (word)
                            (if (string-match "^[mrzfps]*$" word)
                                (markup #:dynamic word)
                                (markup #:normal-text #:italic word)))
                          split-text)))
         #{
           #(make-dynamic-script (make-line-markup formatted))
         #})
       ;; user provided a full-blown markup, so we don't mess with it:
       #{
         #(make-dynamic-script (markup #:normal-text text))
       #}))

Anwendungsbeispiel

Dieses Beispiel zeigt, wie Dynamiczeichen eingebunden werden können.
{
  c''4\dynamictext
  \markup {
    \fontsize #4 \dynamic "p" \italic \fontsize #2 "dolce"
    \bold "poco a poco diminuendo"
    \italic "a tempo" \typewriter "brilliante"
  }
}

Graphische Ausgabe

LilyWiki Markup 2 DynamicText.gif