> > Good question. Perhaps `\concat { f i }' should be really > > identical to `fi', contrary to \line with word-space set to > > zero... > > It's your call. You could try to inspect the arguments, and if they > are strings or simple markups, concatenate the strings.
OK, here it is. Please comment -- especially my Scheme code since I'm not really acquainted with it. Werner ====================================================================== #(define-markup-command (concat layout props args) (markup-list?) "Concatenate @var{args} in a horizontal line, without spaces inbetween. Strings and simple markups are concatenated on the input level, allowing ligatures. For example, @code{\\concat @{ \"f\" \\simple #\"i\" @}} is equivalent to @code{\"fi\"}." (define (concat-string-args arg-list) (do ((arg-list arg-list (cdr arg-list)) (result-list '() result-list) (result #f (car result-list))) ((null? arg-list) (reverse result-list)) (let ((arg (car arg-list))) (if (and (pair? arg) (eqv? (car arg) simple-markup)) (set! arg (cadr arg))) (if (and (string? result) (string? arg)) (set! result-list (cons (string-append result arg) (cdr result-list))) (set! result-list (cons arg result-list)))))) (interpret-markup layout (prepend-alist-chain 'word-space 0 props) (make-line-markup (concat-string-args args)))) \relative { c-\markup { \concat { "f" "i" } \concat { "f" \null "i" } } c-\markup { \concat { "j" } } c-\markup { \concat { \tiny { "k" } } } c-\markup { \concat { \simple #"f" \simple #"i" } } } _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-devel