[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: \smallCaps and special characteres
From: |
Zenith |
Subject: |
Re: \smallCaps and special characteres |
Date: |
Wed, 26 Mar 2008 19:26:20 -0700 (PDT) |
Well,
thanks for the answer. :clap:
I thought it would be an easy way, :confused:at this moment, this solution
is too advanced to me. %-|
But, I promiss that I'll try to change this on the right place... (rs)
:thinking:
Thx,:handshake:
Zenith
Nicolas Sceaux wrote:
>
>
> Le 25 mars 08 à 19:54, Zenith a écrit :
>>
>> Please,
>>
>> is it possible to use \smallCaps with some special characteres like
>> "ç",
>> "ã", "è", etc.
>>
>> Thx,
>>
>> Zenith
>
> It is possible, by redefining \smallCaps in order to force it dealing
> with accented characters (which guile does not).
>
> I use the following code, you may want to add some characters to the
> lists
> at the beginning.
>
>
> %%% Guile does not deal with accented letters
> #(use-modules (ice-9 regex))
> %%;; actually defined below, in a closure
> #(define-public string-upper-case #f)
> #(define accented-char-upper-case? #f)
> #(define accented-char-lower-case? #f)
>
> %%;; an accented character is seen as two characters by guile
> #(let ((lower-case-accented-string "éèêëáàâäíìîïóòôöúùûüçœæ")
> (upper-case-accented-string "ÉÈÊËÁÀÂÄÍÌÎÏÓÒÔÖÚÙÛÜÇŒÆ"))
> (define (group-by-2 chars result)
> (if (or (null? chars) (null? (cdr chars)))
> (reverse! result)
> (group-by-2 (cddr chars)
> (cons (string (car chars) (cadr chars))
> result))))
> (let ((lower-case-accented-chars
> (group-by-2 (string->list lower-case-accented-string)
> (list)))
> (upper-case-accented-chars
> (group-by-2 (string->list upper-case-accented-string)
> (list))))
> (set! string-upper-case
> (lambda (str)
> (define (replace-chars str froms tos)
> (if (null? froms)
> str
> (replace-chars (regexp-substitute/global #f (car
> froms) str
> 'pre (car
> tos) 'post)
> (cdr froms)
> (cdr tos))))
> (string-upcase (replace-chars str
> lower-case-accented-chars
> upper-case-accented-
> chars))))
> (set! accented-char-upper-case?
> (lambda (char1 char2)
> (member (string char1 char2) upper-case-accented-chars
> string=?)))
> (set! accented-char-lower-case?
> (lambda (char1 char2)
> (member (string char1 char2) lower-case-accented-chars
> string=?)))))
>
> #(define-markup-command (smallCaps layout props text) (markup?)
> "Turn @code{text}, which should be a string, to small caps.
> @example
> \\markup \\small-caps \"Text between double quotes\"
> @end example"
> (define (string-list->markup strings lower)
> (let ((final-string (string-upper-case
> (apply string-append (reverse strings)))))
> (if lower
> (markup #:fontsize -2 final-string)
> final-string)))
> (define (make-small-caps rest-chars currents current-is-lower prev-
> result)
> (if (null? rest-chars)
> (make-concat-markup (reverse! (cons (string-list->markup
> currents current-is-
> lower)
> prev-result)))
> (let* ((ch1 (car rest-chars))
> (ch2 (and (not (null? (cdr rest-chars))) (cadr rest-
> chars)))
> (this-char-string (string ch1))
> (is-lower (char-lower-case? ch1))
> (next-rest-chars (cdr rest-chars)))
> (cond ((and ch2 (accented-char-lower-case? ch1 ch2))
> (set! this-char-string (string ch1 ch2))
> (set! is-lower #t)
> (set! next-rest-chars (cddr rest-chars)))
> ((and ch2 (accented-char-upper-case? ch1 ch2))
> (set! this-char-string (string ch1 ch2))
> (set! is-lower #f)
> (set! next-rest-chars (cddr rest-chars))))
> (if (or (and current-is-lower is-lower)
> (and (not current-is-lower) (not is-lower)))
> (make-small-caps next-rest-chars
> (cons this-char-string currents)
> is-lower
> prev-result)
> (make-small-caps next-rest-chars
> (list this-char-string)
> is-lower
> (if (null? currents)
> prev-result
> (cons (string-list->markup
> currents current-is-lower)
> prev-result)))))))
> (interpret-markup layout props
> (if (string? text)
> (make-small-caps (string->list text) (list) #f (list))
> text)))
>
>
>
> _______________________________________________
> lilypond-user mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/lilypond-user
>
>
--
View this message in context:
http://www.nabble.com/%5CsmallCaps-and-special-characteres-tp16285133p16320272.html
Sent from the Gnu - Lilypond - User mailing list archive at Nabble.com.