Subject: Petites majuscules

From: Cécile Huneau <[email-masked]>
Date: Sun, 22 Aug 2010 19:38:02 +0200

Encore moi !
Toujours pour le même "recueil" mais à nouveau sujet, nouveau mail :
Je crois connaître la réponse (négative) mais dans le doute : est-il 
possible d'écrire des petites majuscules accentuées ?
C'est tout pour le moment !
Cécile

---

From: "R. Bastian" <[email-masked]>
Date: Sun, 22 Aug 2010 19:57:48 +0200

On Sun, 22 Aug 2010 19:38:02 +0200

> C'est tout pour le moment !

oui CÉCILE

{\sc Cécile} (avec Latex/Context)
{\sc C\'ecile} avec Rex
> 
> _______________________________________________
> liste de diffusion lilypond-user-fr
> [email-masked]
> http://lists.gnu.org/mailman/listinfo/lilypond-user-fr

-- 
René Bastian
www.pythoneon.org
www.musiques-rb.org
http://www.soundsurvey.org.uk/

---

From: Eluze <[email-masked]>
Date: Sun, 22 Aug 2010 14:47:51 -0700 (PDT)

Cécile Huneau wrote:
> 
> est-il possible d'écrire des petites majuscules accentuées ?
> 
il me semble que oui: 
http://lilypond.org/doc/v2.13/Documentation/notation/formatting-text#selecting-font-and-font-size
http://lilypond.org/doc/v2.13/Documentation/notation/formatting-text#selecting-font-and-font-size 

-- 
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Petites-majuscules-tp5450298p5450837.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: flup <[email-masked]>
Date: Sun, 22 Aug 2010 17:00:54 -0700 (PDT)

Et heureusement que c'est possible: c'est un règle élémentaire de typographie
française (même si on nous apprend le contraire à l'école, sous la forme
d'un mensonge par omission qui pose un problème pédagogique intéressant...
mais c'est une autre histoire).
-- 
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Petites-majuscules-tp5450298p5451040.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Jean-Charles Malahieude <[email-masked]>
Date: Mon, 23 Aug 2010 10:52:17 +0200

> mais c'est une autre histoire).

C'est en fait plus compliqué que cela, et aussi pour une raison historique :

- L'école nous enseigne que les majuscules ne sont pas accentuées, parce 
que nous écrivions à la plume. Il ne s'agit pas de typographie.
Mais, bien qu'utilisant elle aussi l'ordinateur, elle passe sous silence 
qu'il est un outil de typographe...

- Les machines à écrire étaient principalement de facture étasunienne, 
et y ajouter tout ce qui manque pour obtenir l'intégralité des 
caractères typographiques aurait abouti au fait qu'une secrétaire 
devrait avoir un bureau de super-ministre...

@+
Jean-Charles

---

From: Nicolas Sceaux <[email-masked]>
Date: Mon, 23 Aug 2010 22:01:40 +0200

Le 22 août 2010 à 19:38, Cécile Huneau a écrit :

> Je crois connaître la réponse (négative) mais dans le doute : est-il possible d'écrire des petites majuscules accentuées ?

J'utilise la fonction suivante pour les petites majuscules accentuées,
afin de coutourner une limitation de guile.  Ensuite, il suffit d'écrire
par exemple : \markup \smallCaps { Théâtre }

%%% 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)))

---

From: Nicolas Sceaux <[email-masked]>
Date: Mon, 23 Aug 2010 22:04:43 +0200

> http://lilypond.org/doc/v2.13/Documentation/notation/formatting-text#selecting-font-and-font-size 

La fonction proposée par défaut par LilyPond pour écrire les
petites majuscules ne supporte pas les caractères accentués.
Il faut utiliser un contournement (voir mon autre post).

Nicolas

---

From: Mike Solomon <[email-masked]>
Date: Mon, 23 Aug 2010 16:50:59 -0400

Y a-t-il une police de caractères qui assure la mise en page des accents
pour des petites majuscules tout en gardant le look lilypond?  Je me suis
aussi heurté à ce problème, et j'aimerais bien essayer d'en inclure une dans
la nouvelle version développement.

~Mike

---

From: Eluze <[email-masked]>
Date: Mon, 23 Aug 2010 14:57:49 -0700 (PDT)

> Il faut utiliser un contournement (voir mon autre post).
c'est juste! 

j'ai tout seulement vu l'accent sur le e et je n'ai pas prêté attention à ce
que le e n'était pas un E majuscule.

me repento - et merci, Nicolas!

serait-il possible d'appliquer ce contournement dans Lilypond? sinon, bien
sûr, je peux l'inclure dans mes fichiers, mais il serait bien plus sympa
d'avoir un \smallCaps quit fonctionne…

-- 
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Petites-majuscules-tp5450298p5454468.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: "j-f.lucarelli" <[email-masked]>
Date: Tue, 24 Aug 2010 18:14:33 +0200

== En réponse au message du 23-08-2010, 22:05:09 ==

>Il faut utiliser un contournement (voir mon autre post).

Résultats impeccables, un grand merci,

Jean-François

========================================

---

From: Nicolas Sceaux <[email-masked]>
Date: Tue, 24 Aug 2010 21:57:04 +0200

> d'avoir un \smallCaps quit fonctionne…

Il est possible que j'ai loupé quelque chose dans guile1.8 qui rende le
support des caractères accentués possible de base, sans bidouille (en
changeant la locale ou quelque chose du genre, mais je ne trouve pas d'info).

D'autres part, guile2.0 supporte utf-8 alors il n'y aura plus de problème
quand LilyPond changera de version de guile (il y a un effort en cours
apparemment).

Entre temps...  J'imagine que ce serait mieux en effet, même si ce hack est
grossier.  J'ai un peu la flemme.

Nicolas

---

From: Nicolas Sceaux <[email-masked]>
Date: Tue, 24 Aug 2010 22:03:05 +0200

> changeant la locale ou quelque chose du genre, mais je ne trouve pas d'info).

Je précise : support des caractères accentués dans les fonctions de modification
de la casse (type string-upcase ou string-downcase.)

---

From: Valentin Villenave <[email-masked]>
Date: Thu, 26 Aug 2010 01:58:09 +0200

> grossier.  J'ai un peu la flemme.

Bonjour Nicolas,

je me suis souvent demandé pourquoi tu n'avais pas mergé ton
workaround, effectivement. Est-ce que ça vaut le coup de le pusher
maintenant ? Est-ce qu'il faut attendre Lily/Guile2.0 ? Est-ce que tu
veux qu'on ouvre une page sur le trackeur en attendant ?

V.

---

From: Nicolas Sceaux <[email-masked]>
Date: Thu, 26 Aug 2010 20:44:15 +0200

> veux qu'on ouvre une page sur le trackeur en attendant ?

Moi je ne veux rien :-)