IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Python Discussion :

Latex, MathML ou le casse-tête des formules en html


Sujet :

Contribuez Python

  1. #1
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut Latex, MathML ou le casse-tête des formules en html
    Je m'adresse spécialement à ceux d'entre vous qui publient des articles scientifiques sur le web.
    Nous sommes en présence d'une contradiction.
    Il y a sur le web un langage natif il s'agit d'html.
    Il y a en sciences un standard il s'agit de Latex.
    Que font en pratique les auteurs scientifiques? Ils écrivent en Latex, et transforment en format pdf ou postscript. Ils rendent ensuite accessibles leurs articles au moyen des visionneurs de pdf plus ou moins intégrés aux navigateurs standard. Le résultat est généralement correct, mais aucun espoir d'avoir une moindre forme d'interactivité. Les pdf sont essentiellement statiques ...
    Le temps est venu d'écrire des mathématiques INTERACTIVES, avec des programmes javascript, des applets java, etc... Je m'y emploie depuis une année déjà.
    A souligner que les initiatives de ce genre sont suffisamment peu nombreuses pour qu'on en parle.
    L'auteur de sites web consacrés à la science a donc un problème qu'il peut résoudre de deux manières.
    Convertir automatiquement le pdf en html (le résultat est épouvantable). Pour vous en convaincre, vous n'avez qu'à voir les 'versions html' des documents pdf, c'est à peine lisible.
    Convertir avec des produits comme 'KILE' les formules en images au format GIF ou PNG. C'est un truc que j'ai utilisé et que j'utilise encore parfois. Toutefois, le rendu n'est pas toujours excellent d'une part, l'image est figée d'autre part de sorte que toute correction est laborieuse.. En outre les images n'obéissent pas aux commandes de zoom du navigateur, elles ne font pas partie du texte.
    Il existe une solution théorique extrêmement élégante et promue à un bel avenir: le langage MathML. A mon avis MathML est beaucoup plus cohérent, plus 'clean' que Latex (avec tout le respect que nous devons tous à D. Knuth) Mais il y a un mais ...
    Firefox sait lire les formules MathML pourvu qu'elles se trouvent dans un fichier d'extension xhtml. Explorer ne sait pas lire directement un fichier xhtml. Explorer peut lire une formule MathML mais avec un 'plug-in', nommé MathPlayer. Encore que la version du plugin doit être conpatible avec la version d'internet explorer 6,7,8, demain 9 ????
    D'autres navigateurs 'Opera' sont éduqués pour lire du MathML dans un fichier html, d'autres comme Chrome ne le sont pas.
    Bref, c'est pour le moment un véritable 'casse-tête' que de faire un document html comportant des formules MathML et lisible par tous les navigateurs leaders du marché.
    La solution sera bien sûr la reconnaissance du format MathML et son intégration dans tous les navigateurs. Ce jour viendra, et quand les internautes auront mis à jour leurs navigateurs vers les versions les plus récentes on peut espérer qu'il sera possible d'écrire pour le grand public...
    Que faire en attendant ???
    J'ai remarqué que les symboles mathématiques sont disponibles en totalité dans le langage html sous la forme &....;
    exemples;
    ∀ ∃ ∅
    Tout l'alphabet grec est disponible en majuscules comme en minuscules.
    Bref, du point de vue des symboles il ne manque rien et tous les navigateurs les lisent.
    Seul problème, en html on ne peut produire que des expressions 'linéaires' et pas des formules étagées.
    D'où les trucs habituels (1+x)/(1-y) au lieu de la notation étagée traditionnelle.
    Indices et exposants sont également disponibles <sub> ..</sub> <sup>..</sup>
    mais s'appliquent encore une fois à des expressions linéaires, pas à des expressions étagées.
    Gérer les niveaux en html pur nécessite l'emploi des tableaux.
    C'est possible, à la main, mais fort laborieux (gestion du format des cellules, des bordures, des alignements, des fusions, etc...)
    D'où l'idée d'écrire un script python qui gère les écritures à plusieurs niveaux.
    Voici ce programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    # -*- coding: utf-8 -*-
    # To change this template, choose Tools | Templates
    # and open the template in the editor.
     
    __author__ = "gilles"
    __date__ = "$3 août 2009 16:42:34$"
    Ops=['ind','pow','frac','par','abs','integ','sum','prod','prod_null','prod_dot','prod_cross','equ','radic','add','sub','neq','le','ge','lt','gt','cpn','lim','forces','equiv']
    Varsm=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
    VarsM=[x.upper() for x in Varsm]
    Grecm=['alpha','beta','gamma','delta','epsilon','zeta','eta','theta','iota','kappa','lambda','mu','nu','ksi','omicron','pi','rho','sigma','tau','upsilon','phi','khi','psi','omega']
    def string_form(exp):
        return isinstance(exp, str)
    def number_form(exp):
        return isinstance(exp,int) or isinstance(exp,float) or isinstance(exp,long)
    def index_form(exp):
        return exp[0] == "ind"
    def pow_form(exp):
        return exp[0] == "pow"
    def frac_form(exp):
        return exp[0]=="frac"
    def par_form(exp):
        return exp[0]=="par"
    def abs_form(exp):
        return exp[0]=="abs"
    def integ_form(exp):
        return exp[0]=="integ"
    def sum_form(exp):
        return exp[0]=="sum"
    def prod_form(exp):
        return exp[0]=="prod"
    def lim_form(exp):
        return exp[0]=="lim"
    def prod_null_form(exp):
        return exp[0]=="prod_null"
    def prod_dot_form(exp):
        return exp[0]=="prod_dot"
    def prod_cross_form(exp):
        return exp[0]=="prod_cross"
    def equ_form(exp):
        return exp[0]=="equ"
    def le_form(exp):
        return exp[0]=="le"
    def ge_form(exp):
        return exp[0]=="ge"
    def lt_form(exp):
        return exp[0]=="lt"
    def gt_form(exp):
        return exp[0]=="gt"
    def neq_form(exp):
        return exp[0]=="neq"
    def radic_form(exp):
        return exp[0]=="radic"
    def add_form(exp):
        return exp[0]=="add"
    def sub_form(exp):
        return exp[0]=="sub"
    def cpn_form(exp):
        return exp[0]=="cpn"
    def forces_form(exp):
        return exp[0]=="forces"
    def equiv_form(exp):
        return exp[0]=="equiv"
     
     
    def http_code(exp):
        if string_form(exp):
            return exp
        if number_form(exp):
            return str(exp)
        if index_form(exp):
            return http_code(exp[1]) + "<sub>" + http_code(exp[2]) + "<sub>"
        if pow_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td></td><td>"+http_code(exp[2])+"</td></tr><tr><td>"+http_code(exp[1])+"</td><td></td></tr></table>"
        if frac_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td align='center'>"+http_code(exp[1])+"</td></tr><tr><td><hr></td></tr><tr><td align='center'>"+http_code(exp[2])+"</td></tr></table>"
        if par_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td><font size='6'>(</font></td><td>"+http_code(exp[1])+"</td><td><font size='6'>)</font></td></tr></table>"
        if abs_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td><font size='6'>|</font></td><td>"+http_code(exp[1])+"</td><td><font size='6'>|</font></td></tr></table>"
        if integ_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td align='center'>"+http_code(exp[2])+"</td><td></td></tr><tr><td><font size='20'>&int;</font></td><td>"+http_code(exp[3])+"</td></tr><tr><td align='center'>"+http_code(exp[1])+"</td><td></td></tr></table>"
        if sum_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td align='center'>"+http_code(exp[2])+"</td><td></td></tr><tr><td><font size='20'>&Sigma;</font></td><td>"+http_code(exp[3])+"</td></tr><tr><td align='center'>"+http_code(exp[1])+"</td><td></td></tr></table>"
        if lim_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td align='center'>lim </td><td align='center' rowspan='1'>"+http_code(exp[2])+"</td></tr><tr><td>"+http_code(exp[1])+"</td></tr></table>"
        if prod_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td align='center'>"+http_code(exp[2])+"</td><td></td></tr><tr><td><font size='20'>&Pi;</font></td><td>"+http_code(exp[3])+"</td></tr><tr><td align='center'>"+http_code(exp[1])+"</td><td></td></tr></table>"
        if prod_null_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td>"+http_code(exp[1])+"</td><td>"+http_code(exp[2])+"</td></tr></table>"
        if add_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td>"+http_code(exp[1])+"</td><td>+</td><td>"+http_code(exp[2])+"</td></tr></table>"
        if sub_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td>"+http_code(exp[1])+"</td><td>&nbsp;-&nbsp; </td><td>"+http_code(exp[2])+"</td></tr></table>"
        if prod_dot_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td>"+http_code(exp[1])+"</td><td valign='middle'>"+".</td><td>"+http_code(exp[2])+"</td></tr></table>"
        if prod_cross_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td>"+http_code(exp[1])+"</td><td valign='middle' >"+"&times;</td><td>"+http_code(exp[2])+"</td></tr></table>"
        if equ_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td>"+http_code(exp[1])+"</td><td>=</td><td>"+http_code(exp[2])+"</td></tr></table>"
     
        if forces_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td>"+http_code(exp[1])+"</td><td>&rArr;</td><td>"+http_code(exp[2])+"</td></tr></table>"
        if equiv_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td>"+http_code(exp[1])+"</td><td>&hArr;</td><td>"+http_code(exp[2])+"</td></tr></table>"
        if neq_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td>"+http_code(exp[1])+"</td><td>&ne;</td><td>"+http_code(exp[2])+"</td></tr></table>"
        if le_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td>"+http_code(exp[1])+"</td><td>&le;</td><td>"+http_code(exp[2])+"</td></tr></table>"
        if ge_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td>"+http_code(exp[1])+"</td><td>&ge;</td><td>"+http_code(exp[2])+"</td></tr></table>"
        if lt_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td>"+http_code(exp[1])+"</td><td>&lt;</td><td>"+http_code(exp[2])+"</td></tr></table>"
        if gt_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td>"+http_code(exp[1])+"</td><td>&gt;</td><td>"+http_code(exp[2])+"</td></tr></table>"
        if radic_form(exp):
            return "<table cellpadding='0' cellspacing='0' border='0'><tr><td>&radic;</td><td>"+http_code(exp[1])+"</td></tr></table>"
        if cpn_form(exp):
            return "<table cellpadding='O' cellspacing='O' border='0'><tr><td rowspan='2'><font size='5'>(</font></td><td>"+http_code(exp[2])+"</td><td rowspan='2'><font size='5'>)</font></td></tr><tr><td>"+http_code(exp[1])+"</td></tr></table>"
     
    def subst(x,y,E):
        if number_form(E):
            return E
        if string_form(E):
            if E==x:
                return y
            else:
                return E
        else:
            return [E[0]]+ [subst(x,y,X) for X in E[1:]]
    def su(x,y):
        global E
        E=subst(x,y,E)
     
     
    def init_globals():
        globals().update([(k,k) for k in Ops])
        globals().update([(k,k) for k in Varsm])
        globals().update([(k,k) for k in VarsM])
        globals().update([(k,'&'+k+';') for k in Grecm])
        GrecM=[x.capitalize() for x in Grecm]
        globals().update([(k,'&'+k+';') for k in GrecM])
     
    if __name__ == "__main__":
        init_globals()
    L'idée est assez simple. La syntaxe utilisée est préfixée à la LISP mais avec la syntaxe python des listes.
    Ainsi [frac,x,y] est la fraction x/y (étagée)
    Ensuite on peut substituer à x une autre fraction ou une puissance ou une racine.
    Voici par exemple un quotient à niveaux multiples:
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        #exemple direct
        print http_code([equ,[frac,"u<sub>n+1</sub>-u<sub>n</sub>","u<sub>n</sub>-u<sub>n-1</sub>"],[prod_cross,[frac,"u<sub>n</sub>-a","u<sub>n-1</sub>-a"],[frac,[sub,1,[frac,"u<sub>n+1</sub>-a","u<sub>n</sub>-a"]],[sub,1,[frac,"u<sub>n</sub>-a","u<sub>n-1</sub>-a"]]]]])
        #exemple avec utilisation de subst
        E=[equ, A,B]
        E=subst(A,[frac,"v<sub>n</sub>-a","u<sub>n</sub>-a"],E)
        E=subst(B,[sub,X,Y],E)
        E=subst(X,[prod_cross,U,V],E)
        E=subst(U,[frac,k,"1-k"],E)
        E=subst(V,[frac,"u<sub>n+1</sub>-a","u<sub>n</sub>-a"],E)
        E=subst(Y,[frac,k,"1-k"],E)
        print http_code(E)
    et voici le code html généré:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <table cellpadding='0' cellspacing='0' border='0'><tr><td><table cellpadding='0' cellspacing='0' border='0'><tr><td align='center'>u<sub>n+1</sub>-u<sub>n</sub></td></tr><tr><td><hr></td></tr><tr><td align='center'>u<sub>n</sub>-u<sub>n-1</sub></td></tr></table></td><td>=</td><td><table cellpadding='0' cellspacing='0' border='0'><tr><td><table cellpadding='0' cellspacing='0' border='0'><tr><td align='center'>u<sub>n</sub>-a</td></tr><tr><td><hr></td></tr><tr><td align='center'>u<sub>n-1</sub>-a</td></tr></table></td><td valign='middle' >&times;</td><td><table cellpadding='0' cellspacing='0' border='0'><tr><td align='center'><table cellpadding='0' cellspacing='0' border='0'><tr><td>1</td><td>&nbsp;-&nbsp; </td><td><table cellpadding='0' cellspacing='0' border='0'><tr><td align='center'>u<sub>n+1</sub>-a</td></tr><tr><td><hr></td></tr><tr><td align='center'>u<sub>n</sub>-a</td></tr></table></td></tr></table></td></tr><tr><td><hr></td></tr><tr><td align='center'><table cellpadding='0' cellspacing='0' border='0'><tr><td>1</td><td>&nbsp;-&nbsp; </td><td><table cellpadding='0' cellspacing='0' border='0'><tr><td align='center'>u<sub>n</sub>-a</td></tr><tr><td><hr></td></tr><tr><td align='center'>u<sub>n-1</sub>-a</td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table>
    <table cellpadding='0' cellspacing='0' border='0'><tr><td><table cellpadding='0' cellspacing='0' border='0'><tr><td align='center'>v<sub>n</sub>-a</td></tr><tr><td><hr></td></tr><tr><td align='center'>u<sub>n</sub>-a</td></tr></table></td><td>=</td><td><table cellpadding='0' cellspacing='0' border='0'><tr><td><table cellpadding='0' cellspacing='0' border='0'><tr><td><table cellpadding='0' cellspacing='0' border='0'><tr><td align='center'>k</td></tr><tr><td><hr></td></tr><tr><td align='center'>1-k</td></tr></table></td><td valign='middle' >&times;</td><td><table cellpadding='0' cellspacing='0' border='0'><tr><td align='center'>u<sub>n+1</sub>-a</td></tr><tr><td><hr></td></tr><tr><td align='center'>u<sub>n</sub>-a</td></tr></table></td></tr></table></td><td>&nbsp;-&nbsp; </td><td><table cellpadding='0' cellspacing='0' border='0'><tr><td align='center'>k</td></tr><tr><td><hr></td></tr><tr><td align='center'>1-k</td></tr></table></td></tr></table></td></tr></table>
    Des raccourcis on été prévus pour les substitutions su(X,[frac,A,B]) au lieu de
    E=subst(E,X,...).
    Bref, tout cela fait que ce petit programme sans prétention est utilisable pour une production très rapide de code html pour le rendu des formules. J'écris avec aussi vite qu'en Latex ou en MathML et mes formules sont tout à fait lisibles par tous les navigateurs. Il va de soi que c'est une solution provisoire, pour quelques mois ou quelques années en attendant que le standard MathML soit reconnu. Tout programmeur python comprendra immédiatement comment il fonctionne et pourra l'étendre à sa guise.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  2. #2
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Bonjour.

    Citation Envoyé par Zavonen Voir le message
    Je m'adresse spécialement à ceux d'entre vous qui publient des articles scientifiques sur le web.
    Je pense que c'est mon cas...

    Citation Envoyé par Zavonen Voir le message
    ...mais aucun espoir d'avoir une moindre forme d'interactivité. Les pdf sont essentiellement statiques ...
    Le temps est venu d'écrire des mathématiques INTERACTIVES, avec des programmes javascript, des applets java, etc... Je m'y emploie depuis une année déjà.
    Je remonte ce post pour indiquer qu'il existe dorénavant MathJax qui est utilise de façon combinée avec jQuery : j'ai mis un exemple dans cette discussion.

    Indiquons au passage que MathJax peut être utilisé avec des applets dans la page HTML. On a donc tout ce qu'il faut pour taper des maths pour le web.

  3. #3
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Merci pour les liens, rambc.
    Entre temps je me suis rallié au standard mathml. Cela passe sur tous les navigateurs sauf chrome (17% du marché quand même).
    Bon enfin je me dit que les fans de 'chrome' ont toujours en réserve un firefox ou un internet explorer (ou même un opera) pour voir mes pages.
    Je vais aller voir mathjax et tes exemples dès que j'ai un petit moment.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  4. #4
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Je viens d'essayer MathJax avec MML
    config:
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    jax: ["input/MathML", "output/HTML-CSS"],
    extensions: ["mml2jax.js"],
    Les résultats sont satisfaisants avec Firefox et Explorer
    Moyens voir mauvais avec Opera (linux)
    Très mauvais avec Chrome.
    Je reste donc avec mon système en délaissant chrome jusqu'à ce que les problèmes soient résolus.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  5. #5
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Sous Mac, pas de souci avec Chrome. Cela doit être lié à Linux. Je vais essayer sur mon mini-pc car cela m'intrigue.

    Le mieux serait que tu passes l'info. sur la liste intitulée mathjax-dev. Ce projet est tout jeune, et je pense que l'équipe est motivée pour un bon rendu sur toute plateforme.

    PS : j'ai pris le choix d'indiquer les navigateurs supportés par mon nouveau future site. Pourquoi ? Tout simplement car mon site est amateur donc cela ne me choque pas le moins du monde. Je serais pro., je ferais autrement.

  6. #6
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Je viens de poster à Mathjax users group (pseudo zavonen).
    Malheureusement je ne sais pas joindre une image au post sur ce forum d'utilisateurs.
    Je te joins le résultat sous chrome conjointement avec ce qu'on devrait obtenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
     <math mode="display">
      <mrow>
        <mi>F</mi>
        <mrow>
          <mo>(</mo>
          <mi>G</mi>
          <mrow>
            <mo>(</mo>
            <mi>x</mi>
            <mo>)</mo>
          </mrow>
          <mo>+</mo>
          <msup>
            <mi>x</mi>
            <mi>n</mi>
          </msup>
          <msub>
            <mi>&epsilon;</mi>
            <mn>2</mn>
          </msub>
          <mrow>
            <mo>(</mo>
            <mi>x</mi>
            <mo>)</mo>
          </mrow>
          <mo>)</mo>
        </mrow>
        <mo>&minus;</mo>
        <mi>F</mi>
        <mrow>
          <mo>(</mo>
          <mi>G</mi>
          <mrow>
            <mo>(</mo>
            <mi>x</mi>
            <mo>)</mo>
          </mrow>
          <mo>)</mo>
        </mrow>
        <mo>=</mo>
        <mrow>
          <munderover>
            <mo>&sum;</mo>
            <mrow>
              <mi>k</mi>
              <mo>=</mo>
              <mn>1</mn>
            </mrow>
            <mi>n</mi>
          </munderover>
          <msub>
            <mi>a</mi>
            <mi>k</mi>
          </msub>
          <mrow>
            <mo>(</mo>
            <mrow>
              <msup>
                <mrow>
                  <mo>(</mo>
                  <mi>G</mi>
                  <mrow>
                    <mo>(</mo>
                    <mi>x</mi>
                    <mo>)</mo>
                  </mrow>
                  <mo>+</mo>
                  <msup>
                    <mi>x</mi>
                    <mi>n</mi>
                  </msup>
                  <msub>
                    <mi>&epsilon;</mi>
                    <mn>2</mn>
                  </msub>
                  <mrow>
                    <mo>(</mo>
                    <mi>x</mi>
                    <mo>)</mo>
                  </mrow>
                  <mo>)</mo>
                </mrow>
                <mi>k</mi>
              </msup>
              <mo>&minus;</mo>
              <msup>
                <mrow>
                  <mi>G</mi>
                  <mrow>
                    <mo>(</mo>
                    <mi>x</mi>
                    <mo>)</mo>
                  </mrow>
                </mrow>
                <mi>k</mi>
              </msup>
            </mrow>
            <mo>)</mo>
          </mrow>
        </mrow>
        <mo>=</mo>
        <mrow>
          <munderover>
            <mo>&sum;</mo>
            <mrow>
              <mi>k</mi>
              <mo>=</mo>
              <mn>1</mn>
            </mrow>
            <mi>n</mi>
          </munderover>
          <msub>
            <mi>a</mi>
            <mi>k</mi>
          </msub>
          <msup>
            <mi>x</mi>
            <mi>n</mi>
          </msup>
          <msub>
            <mi>&epsilon;</mi>
            <mn>2</mn>
          </msub>
          <mrow>
            <mo>(</mo>
            <mi>x</mi>
            <mo>)</mo>
          </mrow>
          <msub>
            <mi>u</mi>
            <mi>k</mi>
          </msub>
          <mrow>
            <mo>(</mo>
            <mi>x</mi>
            <mo>)</mo>
          </mrow>
        </mrow>
      </mrow>
    </math>
    Il y a en outre un autre gros problème, la librairie est TRES lourde.
    Images attachées Images attachées   
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  7. #7
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Salut,
    pourrais-tu me donner directement la formule LaTeX ce sera plus simple ?

    Pour le coup c'est un vrai bug effectivement. D'où vient-il ? MathJax ? Mauvais support de MathML ?

  8. #8
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Je n'utilise pas LaTEX seulement MML .
    Je m'explique de ces choix dans le post initial. La-TEX bien que répandu est d'une conception ancienne, MML est créé pour le web. MML contient la sémantique d'une formule, pas laTEX.
    Si tu veux la formule laTex elle est facile à reconstituer à partir du png firefox inclus.
    Il s'agit bien d'un bug, reconnu (j'ai reçu une réponse à mon post).
    Je crois qu'il y a beaucoup de problèmes en suspens avec chrome (et avec mml)
    Par ailleurs, comme je te l'ai dit plus haut, je pense qu'il est contre nature de passer par javascript pour rendre des objets créés pour les pages web.
    En outre, bien que je n'ai pas encore cherché à isoler la partie 'utile' de la bibliothèque, en l'état elle est difficilement utilisable (17 GB !!!!).
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  9. #9
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Bonjour.

    Citation Envoyé par Zavonen Voir le message
    Par ailleurs, comme je te l'ai dit plus haut, je pense qu'il est contre nature de passer par javascript pour rendre des objets créés pour les pages web.
    Sauf si tu veux avoir un rendu dynamique sur une page HTML sans passer par PhP, ce qui est mon cas.

    Citation Envoyé par Zavonen Voir le message
    Je n'utilise pas LaTEX seulement MML .
    Je m'explique de ces choix dans le post initial. La-TEX bien que répandu est d'une conception ancienne, MML est créé pour le web. MML contient la sémantique d'une formule, pas laTEX.
    Pour ma part, il me faut un rendu papier et un autre HTML. Donc j'opte pour LaTeX (je pense que LaTeX va devenir un peu le code C du langage d'écriture scientifique, à savoir qu'il va y avoir des surcouches à LaTeX permettant de simplifier les choses).

    Par contre, aurais-tu un exemple concret d'un fichier HTML contenant du texte et des formules qui soit directement lisible par FireFox par exemple ? La dernière fois que j'avais lu quelque chose sur MathML dans du HTML, j'avais eu un peu mal à la tête. Est-ce simple aujourd'hui ?

    Citation Envoyé par Zavonen Voir le message
    En outre, bien que je n'ai pas encore cherché à isoler la partie 'utile' de la bibliothèque, en l'état elle est difficilement utilisable (17 GB !!!!).
    Oui et non. S'il propose un serveur dédié, il suffit de renvoyer vers un lien qui utilise le JS. Cela se fait avec jQuery sans souci mais il faut un serveur qui ne rame pas bien entendu.

  10. #10
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Si tu veux tu peux aller sur mon site dans la partie analyse.
    Voici le lien.
    http://gilles.dubois10.free.fr/analyse_reelle/analyse_reelle.html
    Après tu peux lister le code source de n'importe quelle page qui contient des formules.
    Par exemple celle-ci
    http://gilles.dubois10.free.fr/analy...ivleibniz.html
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  11. #11
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Merci.

Discussions similaires

  1. [WD16] Le casse-tête des conversions de caractètres
    Par stounouslous dans le forum WinDev
    Réponses: 2
    Dernier message: 21/12/2013, 15h09
  2. Du casse-tête des composants
    Par Laskar dans le forum Débuter
    Réponses: 1
    Dernier message: 27/06/2011, 14h10
  3. Le casse tête des aléatoires
    Par HeavenPunisher dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 12/10/2010, 12h51
  4. mon casse-tête des versions php-Mysql
    Par marcel marie dans le forum Langage
    Réponses: 4
    Dernier message: 03/09/2007, 08h10
  5. Casse-tête de 10000 pages html
    Par Sekkate dans le forum Langage
    Réponses: 6
    Dernier message: 14/08/2006, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo