formule de math avec mathML

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Je souhaite mettre du code mathML (obtenu avec mathcast http://mathcast.sourceforge.net/home.htm ) dans des pages Drupal.

j'ai fait l'essai avec firefox. Après quelques essais, il apparaît que pour que firefox comprenne le code mathlm il est essentiel que le fichier contenant ce code soit nommé .xhtml (l'entête du fichier DOCTYPE ... ne semble pas être essentielle).
D'après ce que je que j'ai pu comprendre les pages Drupal arrivent dans le navigateur avec le format .htm (lorsque on fait: fichier-enregistrer_sous on voit apparaître un nom avec .htm )

Mes questions :
- Comment peut-on faire pour que les pages arrivent dans le navigateur avec le suffixe .xhtml ?

  • Est-ce que cela peut avoir des conséquences néfastes par ailleurs?

  • Y aurait-il un autre moyen de faire pour que le code mathml soit compris par le navigateur?

Merci

Version de Drupal : 

D'après ce que je que j'ai pu comprendre les pages Drupal arrivent dans le navigateur avec le format .htm (lorsque on fait: fichier-enregistrer_sous on voit apparaître un nom avec .htm )
Quand tu fais enregistrer-sous l'explorateur prends le format par defaut qui est HTML meme si la page est .xml ou autre...
Perso jepense pas que la terminaison de la page soit essentielle, au contraire, le navigateur se base sur le doctype pour interpreter lespages web.

- Comment peut-on faire pour que les pages arrivent dans le navigateur avec le suffixe .xhtml ? comme t'as pu le constater, les pages de drupal n'ont pas de suffixe... Ceci dit tu peux faire une ruse (meme si comme je le dis plus haut je ne pense pas qu'elle ait d'impact sur la maniere de rendre les pages), donc une ruse en creant un alias ex: node/10 devient math.xml si tu veux...

- Y aurait-il un autre moyen de faire pour que le code mathml soit compris par le navigateur?
Perso je trouve que cette solution de mathml est vraiment bancale.
- elle n'a l'air de marcher qu'avec FF, exit IE, opera...
- pour firefox, il faut que installer des polices speciales pour voir la page, bref, encore moins top...

My 2 cts

Merci beaucoup pour ta réponse ultra-rapide.

Ma question au sujet des suffixes de fichiers était certainement stupide ... il n'était pas évident pour moi que ce qui apparaissait dans la barre d'adresse correspondait effectivement au nom de fichier!

Je pense que l'utilisation d'alias sera effectivement une partie de la solution à mon problème, mais ce n'est pas suffisant. J'ai fait l'essai: lorsque j'inclus le code mathlm dans une page Drupal (thème garland) il ne fonctionne plus même si je met l'alias avec .xhtml . Par exemple si je met le code pour l'équation
y = x2 (x au carré) j'obtient l'affichage y = x2 (sans mise en forme de l'exposant) ... Si quelqu'un a une solution ...

Pour compléter ce que j'ai écrit au sujet de mon problème avec mathlm:
Le code généré par mathcast pour l'équation y = x2 par exemple est:

<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>y</mi>
    <mo>=</mo>
    <msup>
      <mi>x</mi>
      <mn>2</mn>
    </msup>
  </mrow>
</math>

Si je met ça dans un fichier que j'appele equa.xhtml ou equa.xml et que j'ouvre ce fichier avec firefox je vois mon équation correctement. par contre si je le nomme equa.html ça va plus du tout!
Le doctype ne semble pas nécessaire à priori.

Au sujet de l'intérêt d'utiliser mathlm :
je ne connais pas vraiment ce qui existe d'autre. Voila juste mon idée sur le sujet:
- Il me semble que c'est la solution la plus standard.
- Même si elle n'est utilisée que par firefox je pense que les autres navigateurs l'utiliserons dans le futur.
- Quand on visualise l'équation avec firefox on peut agrandir ou réduire à volonté la taille des caractères de l'équation ce qui n'est pas possible si on met une image graphique de l'équation.
- Même si ce n'est pas vraiment mon problème maintenant, je crois que l'écriture mathlm correpond à une représentation mathématique alors que latex par exemple ne correspond qu'à une représentation graphique (sauf erreur).
- bien sûr il faudrait mettre les équations sous forme .png pour les navigateurs qui ne comprenent pas mathlm je suppose que ça doit pouvoir se faire. ça complique ...c'est sûr!

j'ai vu qu'il y a un module Drutex ( plus ou moins latex pour drupal) mais je ne suis pas arrivé à le faire fonctionner et il me semble qu'il donne uniquement une représentation sous forme graphique .png des équations fournie en language latex.

En résumé si quelqu'un peu me préciser un peu plus comment faire fonctionner mathml avec Drupal ...

Merci bien par avance

J'ai maintenant un très gros doute sur le fait que l'alias qui s'affiche dans la barre d'adresse corresponde effectivement au nom du fichier qui arrive dans le navigateur.

Voilà pourquoi je dis ça:
j'ai fait afficher avec firefox une page de mon site Drupal (avec un alias equation.xhtml) contenant du code mathlm (le code pour l'équation y=x2). Cette page s'affichait de façon incorrecte (pas de mise en exposant pour le 2 de x2). J'ai fait afficher le code source de cette page et je l'ai recopié dans un fichier (sur mon ordinateur) que j'ai nommé en .html . Bien sûr quand j'ai ouvert ce fichier avec firefox l'équation s'affichait mal comme lorsque j'explorais mon site Drupal. Par contre lorsque j'ai renommé ce fichier en .xhtml ou en .xml alors mon équation s'affichait correctement!
Si je transfère ce fichier en .xhtml dans un répertoire sur mon site drupal et que j'y accède en mettant un lien à partir d'une page drupal, alors mon équation s'affiche correctement (mais malheureusement les caractères accentués de la page ne sont plus affichés correctement)

La seule explication possible que je vois au mauvais affichage de mon équation lorsque j'explore mon site drupal c'est que ma page drupal n'arrive pas dans firefox comme un fichier .xhtml même si l'alias qui s'affiche dans la barre d'adresse est en .xhtml .

j'ai donc deux problèmes :

  • Comment faire pour que l'explorateur reçoive effectivement un fichier en .xhtml ?

  • Comment faire pour que les caractères accentués soient correctement affichés ?

Merci par avance pour toute solution ou explication !

La notion centrale ici est celle de "type MIME", et non pas de "Doctype". Quand le navigateur demande une page au serveur (avec le protocole HTTP), il reçoit également du serveur un entête spécial nommé "Content-type" qui décrit le type MIME du contenu envoyé. Le navigateur s'appuie sur cette information pour interpréter le fichier (ainsi un contenu avec un entête Content-type: image/png sera interprété par le navigateur comme une image PNG, quelque soit l'extension "apparente" du fichier).

Par défaut, Drupal spécifie un Content-type de type text/html. De ce fait, firefox interprète la page reçue comme un page HTML classique (ie. XHTML ou pas). Cela a un avantage: du fait que Firefox ne passe pas le fichier à travers son parser/validateur XML, il est peu moins difficile sur la syntaxe, et de ce fait peut afficher un document même s'il contient quelques erreurs. Cela a apparemment l'inconvénient que les codes MathML ne sont pas interprétés...

Pour corriger cela, il faut forcer Drupal à envoyer un vrai Doctype XHTML, c'est à dire application/xhtml+xml. Une des façons de faire est de rajouter le code suivant en haut de ton thème (fichier page.tpl.php) :

<?php
drupal_set_header
('Content-Type: application/xhtml+xml; charset=utf-8');
?>

Note : au cas où tu t'interrogerais : lors du chargement d'un fichier local, Firefox n'a pas d'entête Content-type. Il "devine" alors le contenu du fichier sur la base de son extension.

Parfait !

Pour l'instant j'ai juste fait un petit essai ... c'est bon!
Il ne me reste plus qu'à trouver comment corriger les erreurs de syntaxe qui sont apparues dans mes pages xhtml/xml ... Mais ça c'est un autre problème et c'est peut être pas plus mal si on est contraint d'écrire les pages correctement.

Merci beaucoup.