Comment passer des formules en MathML aux formules en KaTeX ?

Ce serait bien utile pour les contributions aux projets de traduction (astronomie, physique ...)

Le problème exposé dans ce sujet a été résolu.

Dans le cadre de la traduction des contenus d’Open Stax, il est nécessaire de traduire des formules.
Sur le site d’OpenStax, ces formules sont rédigées avec Math/MathML.

La seule méthode que je connaisse consiste à réécrire la formule en KaTeX en partant de ce qu’on voit. Cela peut s’avérer complexe et laborieux.

Y aurait-il un moyen automatique de réaliser la conversion ?
exemple de rendu souhaité :

codage sur Open Stax (en anglais):

<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <semantics>
    <mrow>
      <mrow>
        <mtext>speed</mtext>
        <mo>=</mo>
        <mfrac>
          <mrow>
            <mtext>distance</mtext>
          </mrow>
          <mrow>
            <mtext>time</mtext>
          </mrow>
        </mfrac>
      </mrow>
    </mrow>
    <annotation-xml encoding="MathML-Content">
      <mrow><mtext>speed</mtext><mo>=</mo><mfrac><mrow><mtext>distance</mtext></mrow><mrow><mtext>time</mtext></mrow></mfrac></mrow>
    </annotation-xml>
  </semantics>
</math>

Codage en KaTeX (en français) :

$$\mathrm{vitesse} = \frac{\mathrm{distance}}{\mathrm{temps}}$$
+0 -0

Salut,

Le code KaTeX correspondant serait plutôt

$$\text{speed} = \frac{\text{distance}}{\text{time}}$$

qui donne

speed=distancetime\text{speed} = \frac{\text{distance}}{\text{time}}

Essentiellement il suffit de remplacer les balises <mrow> par des accolades, <mtext> par la commande \text et <mfrac> par la commande \frac.

Ce serait pas la mer à boire de coder quelque heuristiques simples pour passer d’un format à l’autre. Cela dit, si tu as besoin de traduire aussi la moitié des symboles, ça ira probablement beaucoup plus vite d’écrire les formules directement plutôt que de faire un changement automatique puis d’ajuster… Par ailleurs, durée serait une meilleure traduction que temps dans ce contexte…

+0 -0

Salut,

Le code KaTeX correspondant serait plutôt

$$\text{speed} = \frac{\text{distance}}{\text{time}}$$

qui donne

speed=distancetime\text{speed} = \frac{\text{distance}}{\text{time}}

Essentiellement il suffit de remplacer les balises <mrow> par des accolades, <mtext> par la commande \text et <mfrac> par la commande \frac.

Ce serait pas la mer à boire de coder quelque heuristiques simples pour passer d’un format à l’autre. Cela dit, si tu as besoin de traduire aussi la moitié des symboles, ça ira probablement beaucoup plus vite d’écrire les formules directement plutôt que de faire un changement automatique puis d’ajuster… Par ailleurs, durée serait une meilleure traduction que temps dans ce contexte…

adri1

En fait, j’ai pris un exemple particulièrement simple.
Un peu plus loin, au chapitre "3.3 Newton’s Universal Law of Gravitation", on trouuve par exemple

<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <semantics>
    <mrow>
      <mrow>
        <msub>
          <mi>F</mi>
          <mrow>
            <mtext>gravity</mtext>
          </mrow>
        </msub>
        <mo>=</mo>
        <mi>G</mi>
        <mfrac>
          <mrow>
            <msub>
              <mi>M</mi>
              <mn>1</mn>
            </msub>
            <msub>
              <mi>M</mi>
              <mn>2</mn>
            </msub>
          </mrow>
          <mrow>
            <msup>
              <mi>R</mi>
              <mrow>
                <msub>
                  <mrow />
                  <mn>2</mn>
                </msub>
              </mrow>
            </msup>
          </mrow>
        </mfrac>
      </mrow>
    </mrow>
    <annotation-xml encoding="MathML-Content">
      <mrow><msub><mi>F</mi><mrow><mtext>gravity</mtext></mrow></msub><mo>=</mo><mi>G</mi><mfrac><mrow><msub><mi>M</mi><mn>1</mn></msub><msub><mi>M</mi><mn>2</mn></msub></mrow><mrow><msup><mi>R</mi><mrow><msub><mrow></mrow><mn>2</mn></msub></mrow></msup></mrow></mfrac></mrow>
    </annotation-xml>
  </semantics>
</math>

ce qui peut donner :

$$
F_{gravité} = G \frac {M_1M_2}{R^2}
$$  
Fgraviteˊ=GM1M2R2F_{gravité} = G \frac {M_1M_2}{R^2}

Et encore, j’ai peiné sur des formules bien plus complexes.

+0 -0

Pas sûr de comprendre où est le problème avec ton deuxième exemple (oublie pas le \text autour de "gravité" par contre). Il y a plein de balises qui peuvent simplement être virées et les règles simples que j’ai données s’appliquent toujours.

+0 -0

En ligne, tu as par exemple https://orcca.on.ca/MathML/texmml/mmltotex.html qui est pas mal (ça tombe bien, le w3c recommande les outils orcca –avec un lien cassé…) mais visiblement plus maintenu :(
Sinon, y a aussi http://www.imatheq.com/imatheq/com/imatheq/math-equation-editor-latex-mathml.html qui encore actif et que m’avait recommandé un collègue.

Si tu veux/dois/peux travailler en local, tu peux regarder l’exemple de D. Carliste, ou plus récent la bibliothèque de transpect. J’ai vu qu’il y a aussi du nodejs si c’est plus ta tasse (avec RunKit en ligne).

+0 -0

L’outil en ligne que tu proposes ne marche pas chez moi. L’as-tu testé ?

Aabu

Nos messages se sont croisés : j’étais en train d’éditer pour indiquer que le service est un peu à l’abandon. Mais tu as raison : les choses se sont empirées depuis mon dernier usage il y a quelques mois, et je n’ai pas refait de test avant de poster. (archi pas bien avec la pérennité des choses.)

+0 -0

Le lien http://www.imatheq.com/imatheq/com/imatheq/math-equation-editor-latex-mathml.html fonctionne sur win ce samedi 16 sseptembre à 01:29.
Win7, navigateurs Opera et Firefox.
Je vois apparaître une fenêtre avec l’application EmatEQnqui n’apparaissait pas lors de mes essais sous Win11.

image.png
image.png

au final, cela produit du code KaTeX fonctionnel à partir du code MzathML.

Reste à faire marcher ce truc sous Win11.

+0 -0

J’entends souvent parler de Wiris, qui serait comme iMathEq, mais je n’avais pas trouvé de test probant sur le site. C’est maintenant chose faite et j’en profite pour partager le lien : https://demo.wiris.com/mathtype/en/developers.php (je ne sais pas si ça marche mieux sous Win11 par contre.)

C’est marrant… Sachant que Open Stax utilise MathJax pour générer du MathML à partir justement de mode mathématique LaTeX (même combat que KaTeX et d’autres) et accessoirement ASCIIMath, on a une illustration flagrante d’un problème de non accès aux sources qui oblige à faire de la rétro-ingénierie. :o

+0 -0

J’entends souvent parler de Wiris, qui serait comme iMathEq, mais je n’avais pas trouvé de test probant sur le site. C’est maintenant chose faite et j’en profite pour partager le lien : https://demo.wiris.com/mathtype/en/developers.php (je ne sais pas si ça marche mieux sous Win11 par contre.)

C’est marrant… Sachant que Open Stax utilise MathJax pour générer du MathML à partir justement de mode mathématique LaTeX (même combat que KaTeX et d’autres) et accessoirement ASCIIMath, on a une illustration flagrante d’un problème de non accès aux sources qui oblige à faire de la rétro-ingénierie. :o

Gil Cot

je vais essayer sous Win 11 dès lundi 19/08

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte