Rendu mathématique 2D avec syntaxe TeX
Posté le 14/05/2015 15:11
Voici une bibliothèque que j'avais écrite il y a longtemps pour WebCalc et que je reprends au propre. Elle permet d'afficher des formules mathématiques en 2D (parfois appelé
pretty printing) et de les produire à partir de code TeX.
\frac{x^7 \left[X,Y\right] + 3\left|\frac{A}{B}\right>}
{\left\{\frac{a_k+b_k}{k!}\right\}^5}
+ \int_a^b \frac{\left(b-t\right)^{n+1}}{n!} dt
+ \left(\begin{matrix} \frac{1}{2} & 5 \\ -1 & a+b \end{matrix}\right)
Elle peut s'utiliser avec fxlib, gint, ou n'importe quel système qui fournit des opérations de dessins élémentaires comme tracer une ligne ou du texte.
Vous pouvez télécharger la bibliothèque et trouver des détails plus techniques sur le dépôt :
Dépôt du programme sur la forge Gitea
Il y avait une autre version assez sale de cette bibliothèque entre 2014 et 2015, et je supporte toutes ses fonctions sauf les racines carrées et les caractères spéciaux. Ça arrive !
Liste des éléments supportés :
^exposant
_indice
\frac{numérateur}{dénominateur}
\vec{vecteur}
\sum_{début}^{fin}
\prod_{début}^{fin}
\int_{inf}^{sup}
\lim_{limite}
\left( \right)
\left[ \right]
\left\{ \right\}
\left| \right|
\left. \right.
\begin{matrix} ... & ... \\ ... & ... \end{matrix}
Fichier joint
Citer : Posté le 27/05/2015 06:26 | #
Mouais, les symboles ne rendent pas très bien en italique, ni en gras d'ailleurs.
Faudrait que je les retravaille mais c'est galère des barrer les symboles >_<
Je trouve que le gras est encore convenable mais tout ce qui est en italique est illisible...
Sinon, beau boulot pour les caractères grecs.
Au passage, comment tu différencie le sigma classique du sigma de fin de mot ?
Dans la doc de TeX, le sigma final se note \varsigma (quelques variations, il y en a pour 6 ou 7 lettres).
Ajouté le 31/05/2015 à 09:08 :
Hop, je passe rapidement pour signaler que j'ai implémenté les symboles et la gestion des polices proportionnelles, et intégré le moteur obtenu à WebCalc.
J'ai laissé quelques infos plus détaillées dans un article pour la RDP, si vous avez l'occasion de tester WebCalc n'hésitez pas à me dire ce que vous en avez pensé !
Citer : Posté le 31/05/2015 09:41 | #
Tu pourra mettre à jour la liste de ce qui est supporté dans le topic ?
Citer : Posté le 31/05/2015 09:47 | #
J'ai ajouté la liste des symboles
Citer : Posté le 31/05/2015 09:49 | #
Faut que je voie avec Ziqumu pour intégrer un mode "WebCalc" à Eact-Maker.
Citer : Posté le 31/05/2015 09:52 | #
Ça devrait pas être trop difficile
Bon, j'exagère un peu.
Mais ne t'embête pas avec ça dans l'immédiat, je pense que tu dois avoir mieux à faire... ^^'
Ajouté le 31/05/2019 à 20:30 :
Après environ exactement 4 ans d'inactivité sur ce topic, j'ai mis à jour le post principal car je suis en train de retaper cette bibliothèque. J'ai déjà fait plein de choses, jetez-y un oeil !
Ajouté le 12/06/2019 à 04:36 :
La structure de la formule est normalement une alternance de noeuds et de flots. Les noeuds, c'est les constructions mathématiques, comme le texte, les fractions, les exposants... et les flots sont des listes horizontales de noeuds écrits les uns à la suite des autres. Les flots contiennent des noeuds, et les noeuds contiennent des flots ; en effet le numérateur et le dénominateur d'une fraction peuvent être arbitrairement complexes.
Je viens d'étendre ce modèle avec la notion d'environnement. Exactement comme en LaTeX, un environnement ressemble à un noeud sauf qu'il a une notion de paramètres plus complexe, il peut contenir des séparateurs (&) et des pauses (\\), et est syntaxiquement différent (\begin et \end).
La formule est donc un environnement contenant un flot, et les noeuds peuvent être des environnements. Cela prépare à l'ajout des matrices qui seront des environnements encapsulés dans des noeuds.
Avec les matrices j'aurai un state-of-the-art assez pété et ce sera probablement quasi-final. Manquera, à vue de nez, les racines (facile) et les caractères spéciaux (plus tard, nécessite de l'Unicode côté gint pour la partie gint).
Ajouté le 12/06/2019 à 22:16 :
J'ai poussé en ligne le code permettant de gérer des environnements (voir ci-dessus). C'était la dernière barrière avant l'implémentation des matrices.
Citer : Posté le 18/06/2019 03:32 | # | Fichier joint
Je viens d'ajouter et de pousser la gestion des matrices. Normalement tout est complet aux risques de bugs près !
\frac{1}{2} & 5 & cos(x) \\
z & & \frac{x+y}{2} &-1 \\
3a+b & \sum_{i=1}^n i!
\end{matrix}\right)
(Note : en pratique il ne faut pas mettre d'espace dans la formule.)
Palmenros, this is also for you. I hope you'll be satisfied with this implementation!
Citer : Posté le 19/06/2019 01:35 | # | Fichier joint
J'ai poussé les racines carrées et un test démentiel avec une matrice dans une matrice. Ça marche, c'est sûr !
Citer : Posté le 19/06/2019 23:36 | #
Stylé... Et du coup, je suppose que c'est imbriquable ? Tu peux insérer une matrice dans une matrice ?
Aucune utilité mais pour pour le fun.
Citer : Posté le 19/06/2019 23:38 | #
C'est exactement ce que j'ai fait dans le message au-dessus si tu regardes bien.
Donc ouais, avec cette lib' tu peux tout mettre dans tout, et réciproquement.
Ajouté le 21/06/2019 à 01:54 :
J'ai rajouté de la documentation sur le wiki du dépôt :
* Principes et utilisation, le fonctionnement général de la bibliothèque ;
* Fonctions d'interface, une explication de comment on gère le dessin ;
* Éléments et configuration, la liste de tous les éléments disponibles et leurs paramètres graphiques.
Citer : Posté le 21/06/2019 01:55 | # | Fichier joint
Ah et puis tant que j'y suis voici un petit résumé des éléments et paramètres.
Citer : Posté le 21/06/2019 08:02 | #
@Lephenixnoir: Ça serait possible d'intégrer cette lib à votre projet Symbolibre ?
-Planétarium 2
Citer : Posté le 21/06/2019 09:24 | #
C'est déjà le cas non ? Il me semble que l'application de calcul gère déjà l'affichage naturel, y compris pour l'input
Citer : Posté le 21/06/2019 13:43 | #
Techniquement parlant c'est possible. Mais... l'écran 320x240 de la Symbolibre est un peu grand pour la taille de graphismes que je vous montre là, et c'est difficile de trouver un équilibre avec quelque chose de plus grand.
Pour l'instant on a un autre affichage naturel (avec les entrées !) qui est codé, mais il est moins puissant en termes d'affichage et il ne contrôle pas précisément les dimensions. Il y a des améliorations à faire.