From madore@clipper.ens.fr Sun Sep 24 18:46:05 2000
Article: 400 of ens.forum.informatique.html
Path: eleves!not-for-mail
From: madore@clipper.ens.fr (GroTeXdieck)
Newsgroups: ens.forum.informatique.html
Subject: Re: =?iso-8859-1?Q?Caract=E8res_sp=E9ciaux=2C_formules_math=E9matiques?=
Date: Sun, 24 Sep 2000 16:46:05 +0000 (UTC)
Organization: Forum.
Lines: 120
Sender: madore@clipper.ens.fr
Message-ID: <8qlb4d$8e6$1@clipper.ens.fr>
References: <8ql8k0$7i0$1@clipper.ens.fr>
NNTP-Posting-Host: clipper.ens.fr
X-Trace: clipper.ens.fr 969813965 8646 129.199.129.1 (24 Sep 2000 16:46:05 GMT)
X-Complaints-To: forum@clipper.ens.fr
NNTP-Posting-Date: Sun, 24 Sep 2000 16:46:05 +0000 (UTC)
X-Newsreader: Flrn (0.4.0 - 07/99)
X-Start-Date: 24 Sep 2000 16:08:43 GMT
X-Mark: BOG
Xref: eleves ens.forum.informatique.html:400

Veronique Bastouill in litteris <8ql8k0$7i0$1@clipper.ens.fr> scripsit:
> Je voudrais savoir comment faire des bêtes lettres grecques en HTML. 

Bon, il y a deux choses.  Faire quelque chose de correct, et faire
quelque chose qui marche.

Faire quelque chose de correct, c'est facile.  D'abord, il faut savoir
que tout document HTML utilise le jeu de caractères universel Unicode.
On peut entrer n'importe quel caractère Unicode dans un document HTML
quelconque à n'importe quel endroit (enfin, hors balises) en écrivant
&#nnnn; où « nnnn » est le numéro (en décimal) du caractère.  (On peut
encore écrire &#xnnnn; où « xnnnn » est le numéro en hexadécimal
précédé d'un « x », mais, comme Valentin l'a fait remarqué à
l'instant, c'est HTML4.01 seulement, donc, autant éviter.)  Par
exemple, si j'écris « &#20013;&#22269; » dans un texte HTML, ça veut
dire « Chine » en chinois (ce sont deux caractères chinois).

Pour trouver le numéro d'un caractère Unicode, on consulte soit le
bouquin dont j'ai fait don à la bibliothèque de la salle S (la version
2.0 du standard Unicode) soit on regarde sur le site du Consortium
Unicode, précisément sur

http://charts.unicode.org/Web.html

Bon, maintenant, ce n'est pas toujours très amusant de prendre
caractère après caractère, de chercher le numéro Unicode, (de le
convertir éventuellement en décimal,) et de le taper.

Alors la norme HTML a prévu un certain nombre de caractères qui ont
des noms, plus commodes à taper que les numéros Unicode.  Notamment
tous les caractères accentués du Latin-1 (comme &eacute; pour &#233;
autrement dit é), les lettres grecques sans accents, et quelques
ponctuations importantes.  Cela s'appelle des entités de caractères
prédéfinies.  La liste officielle se trouve sur

http://www.w3.org/TR/html4/sgml/entities.html

On apprend par exemple que &Gamma; doit produire un Gamma majuscule,
&lambda; un lambda minuscule et ainsi de suite.

On peut regarder la table des entités avec un exemple de chacun sur

http://www.eleves.ens.fr:8080/home/madore/computers/unicode/htmlent.html

Une explication un peu différente de ce que je viens de dire se trouve
sur ma page Unicode, en cours de construction : voir

http://www.eleves.ens.fr:8080/home/madore/computers/unicode/#faq_html


Bon, là, je viens d'expliquer comment c'est censé marcher.  Un jour,
promis, ça marchera vraiment.  D'ailleurs, ça marche déjà sous
Microsoft Internet Explorer et Mozilla (je rappelle que Mozilla est
installé chez gourous et que, si on est à l'École, pour le lancer il
suffit de taper « mozilla », à condition de ne pas être sur une
machine avec Solaris 2.5) - du moins si on a les bonnes polices,
évidemment.

L'ennui, c'est qu'il y a cet horrible machin nommé Netscape
Communicator, qui agonise et agonise, dont on n'en peut plus
d'attendre qu'il meure enfin.  Ce que je viens d'expliquer est valable
pour le HTML4 ; or Netscape Communicator ne comprend pas vraiment le
HTML4 (ni d'ailleurs aucune version de HTML, en fait) - et même dans
la mesure où il le comprend, il ne gère pas l'Unicode correctement ou
anywhere near correctement.  J'explique mes griefs contre Netscape
Communicator dans

http://www.eleves.ens.fr:8080/home/madore/computers/unicode/#faq_html_netscape

Si on veut que ça marche sous Netscape, il y a éventuellement moyen de
s'en sortir quand même.  On écrit le document correctement, comme je
viens de l'expliquer.  Ensuite, on applique le script Perl
~madore/perl/latin12utf8.pl qui va convertir un document HTML écrit en
Latin-1 en HTML écrit en UTF-8, en remplaçant les entités par les
codes UTF-8 correspondants.  *Normalement ça ne devrait rien changer
du tout à la façon dont le document apparaît dans un browser.*  Mais
avec Netscape, pourvu qu'on règle dans le menu l'indication du
« document character set » à UTF-8, ça semble changer quelque chose.
Comparer notamment les deux URL suivantes :

http://www.eleves.ens.fr:8080/home/madore/.test/greek.html
http://www.eleves.ens.fr:8080/home/madore/.test/greek.UTF8.html

la première est le document HTML tel que je l'ai écrit (en
l'occurrence en XHTML mais je pense que ça ne doit rien changer) ; le
second est le document HTML que j'ai produit en faisant

~madore/perl/latin12utf8.pl greek.html > greek.UTF8.html

Les deux sont censés donner exactement le même résultat.  Or on voit
que sous Communicator 4.x le second s'affiche correctement mais pas le
premier.

(Attention quand même à l'utilisation de ce script : il est très
primitif, et je ne promets en aucune façon qu'il marche dans des
situations un tant soit peu compliquées.)


> Pour tout vous avouer, je voudrais aller jusqu'à savoir comment écrire des
> petits bouts de formules mathématiques. Par exemple, ce qui en LaTeX
> s'écrit : \rho(\vec{r}).

Il existe un standard appelé MathML qui sert à ça.  L'avenir du Web,
c'est le XHTML ; et le XHTML permet d'intégrer du MathML dans du
HTML.  Mais pour l'instant c'est encore très peu supporté.  Ça
viendra.  Je pense que dans deux ou trois ans on pourra sérieusement
utiliser du MathML dans des pages web.

Pour l'instant, il n'y a pas grand-chose à faire que prendre son mal
en patience.  On peut utiliser plein de petites images pour les
formules (comme fait Hévéa) ; ou on peut être déjà un peu plus en
avance et utiliser des caractères Unicode pour les différents
symboles, mais en s'efforçant d'éviter les formules compliquées (ou
alors mettre des images pour celles-là) ; ou alors on utilise vraiment
du MathML, mais ça ne marchera vraiment pas avant quelques années
encore.

Le browser Amaya, installé chez gourous, a plein de problèmes en tous
genres, mais au moins il supporte à peu près correctement le MathML.
Et il permet même d'en écrire.

