Markup als 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 |txt3=Anwendungsbeispiel mit verschiedenen Formatierungen des Textes.
Die bekannten Dynamikzeichen wie f, p etc. werden nicht verändert.
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"
}
}