Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Rendu mathématique 2D avec syntaxe TeX
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

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


Précédente 1, 2, 3, 4
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 27/05/2015 06:26 | #


Dark storm a écrit :
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...

Dark storm a écrit :
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é !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 31/05/2015 09:41 | #




Tu pourra mettre à jour la liste de ce qui est supporté dans le topic ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 31/05/2015 09:47 | #


J'ai ajouté la liste des symboles
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 31/05/2015 09:49 | #


Faut que je voie avec Ziqumu pour intégrer un mode "WebCalc" à Eact-Maker.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 31/05/2015 09:52 | #


Ça devrait pas être trop difficile

file.write(editor.innerHTML);

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

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 !

\left(\begin{matrix}
  \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!
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

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 !


Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Ninestars Hors ligne Membre Points: 2462 Défis: 24 Message

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.
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

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.


Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 21/06/2019 08:02 | #


@Lephenixnoir: Ça serait possible d'intégrer cette lib à votre projet Symbolibre ?
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

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
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Précédente 1, 2, 3, 4

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 188 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd