MathEd: Ecrire des formules mathématiques simples sans Latex

Soyez le premier à donner votre avis sur cette source.

Vue 2 785 fois - Téléchargée 2 937 fois

Description

Écrire une fraction verticalement dans un Richedit, ça parait impossible. Et
pourtant, c'est possible. Pour y parvenir, il faut remplir deux conditions :

1°) que les caractères du numérateur soient plus hauts que ceux du dénominateur. Eh
bien Delphi permet de le faire. Vous trouverez dans le programme ci-joint, une unité
(U_Charformat) qui vous montrera comment.
Ce programme, c'est un éditeur très simple. Quand vous l'aurez compilé, lancez-le
puis chargez le fichier "Decouvre. RTF" qui vous dira ce que vous pouvez faire.

2°) que l'on puisse superposer 2 ou 3 caractères. Par exemple, pour la fraction 1/2,
il faut que le 1, la barre de fraction et le 2 restent sur une même verticale.
Delphi ne permet pas de faire ça. Pour y parvenir, il faut créer sa propre fonte,
une fonte dont les caractères ne font pas avancer le surseur horizontalement. C'est
possible. Je m'en suis aperçu en examinant une fonte tibétaine, j'ai vu que certains
caractères avaient cette propriété.
J'ai donc créé une fonte que j'ai appelée "Immobile. TTF" dans laquelle tous les
caractères sauf l'espace, le chr (32), maintiennent le curseur à l'abcisse où ils
l'ont trouvé. Elle est incluse dans le . Zip. (elle est toute petite : 20840 octets
car elle contient peu de caractères alors que Arial Unicode MS, avec ses 65536
caractères fait 24 millions d'octets)
Certes, elle n'a pas la qualité des fontes de Windows. Peut-être même direz-vous
qu'elle est moche mais tant pis, ce n'est pas le plus important.
(Pour la visualiser, quand vous aurez compilé Mathed, lancez-le et cliquez sur
"Insérer", puis sur "Caractére spécial" et choisissez la fonte "Immobile".
Elle aura été rendue active par l'éditeur lui-même)

Les deux conditions peuvent donc être remplies. Vous pourrez le vérifier en lançant
Mathed et en chargeant le fichier "Découvre. RTF". Vous y verrez des formules
mathématiques simples. Mais je vous mets en garde, ce petit éditeur ne peut servir
que pour épour écrire des choses très simples. Il ne prétend pas remplacer les
éditeurs d'équations, Latex ou CMaths. J'ai réussi à écrire la racine de l'équation
du second degré mais ça a été laborieux et ça m'a pris un temps fou. Un conseil:
si vous voulez modifier une formule une fois qu'elle est écrite, mettez-la dans une
autre fonte que "Immobile", sinon, c'est à devenir fou.

Un dernier petit mot : dans cet envoi, à la façon d'un alcoolique mal guéri, je suis
retombé dans un vieux travers.
Afin de garder à l'Unit1 une taille raisonnable, j'ai envoyé pas mal de procédures
dans des fichiers séparés. Ne soyez donc pas surpris de voir beaucoup de fichiers
.PAS. Cette façon de faire m'avait valu une levée de boucliers lors de mon premier
envoi. . Mais cette fois, j'ai agi avec plus de discernement. Toutes les procédures
correspondant à un événement sont restées dans l'Unit1. Donc, si vous allez dans
l'inspecteur d'objets et si vous cliquez sur un événement, vous n'aurez pas le
message si frustrant: "Impossible de trouver la procédure associée à cet événement".
Par contre, si vous recherchez une procédure, Checkfilesave par exemple, il vous
suffit d'aller dans la partie verte de l'Unit1, (celle où les lignes commencent
toutes par {$I ) et de cliquer sur cette ligne avec le bouton droit de la souris.
Vous aurez alors un petit menu dont la seconde option vous permet d'avoir tout de
suite la procédure désirée.
Voici à quoi ressemble la partie verte de l'Unit1 :

{$I Ajouter_au_memo_recentfiles}
{$I Alltrim}
{$I Checkfilesave}
{$I Create_... etc...

Si cet envoi provoque comme le précédent une levée de boucliers, je pense que ça
voudra dire qu'il vaut mieux que je renonce à cette façon de faire...

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
132
Date d'inscription
dimanche 29 octobre 2006
Statut
Membre
Dernière intervention
24 août 2020
2
Cette fois, je pense que Mathed.Ex est bien dans le zip.

Si ça ne marche toujours pas, tu peux peut-être essayer d'ajouter des showmessage (1 à lafin de la procedure FormCreate et 1 à la fin de la procédure FormActivate). Si tu aperçois le premier et pas le second, il y a des chances que ce soit la création de l'enfant Mdi qui bloque. Je te dirai comment remplacer ça par un simple composant.

En attendant, tu peux essayre de regarder le fichier Decouvre.Rtf avec Word; Avec les autres traitements de texte, le résultat n'est pas aussi bon.

Continue à me donner des nouvelles !
Messages postés
6
Date d'inscription
dimanche 20 octobre 2013
Statut
Membre
Dernière intervention
31 mars 2014

Chez moi, ça lance (mathed.exe visible dans le gestionnaire de tâches) mais je suis obligé de l'arrêter par ce même gestionnaire de tâches et rien n'apparait...
Euh l'ex n'est pas dans le zip ?
Messages postés
132
Date d'inscription
dimanche 29 octobre 2006
Statut
Membre
Dernière intervention
24 août 2020
2
J'ai ajouté l'exécutable dans le Zip en le nommant Mathed.ex, il faudra le renommer Mathed.Exe.
Si cet exécutable ne marche pas, je ne vois pas quoi faire...
Si d'autres ont réussi à le faire marcher, ce serait sympa de nous le dire.
En ce qui me concerne, je travaille aussi avec Delphi 7 version perso et l'exécution ne pose aucun problème si ce n'est que quelquefois, il s'écoule un certain temps (4 ou 5 secondes) entre le moment où je lance le programme.et le moment où il apparait sur l'écran mais la plupart du temps, il démarre aussitôt.
Peut-être pourrais-tu essayer de le faire démarrer en appuyant sur F8 (exécution pas à pas) plutôt que sur F9.
Messages postés
6
Date d'inscription
dimanche 20 octobre 2013
Statut
Membre
Dernière intervention
31 mars 2014

OK, j'ai re-téléchargé
J'ai remplacé HUtils pas Math
Je compile sous Delphi7 Perso
Pas d'erreur, mais pas de fenêtre ?... arrêt par CTRL+F2...
J'ai tenté sous l'exe sous cmd, nib, rien, nada !!!
Arghl ! Suis-je maudit ?
Messages postés
6
Date d'inscription
dimanche 20 octobre 2013
Statut
Membre
Dernière intervention
31 mars 2014

Ahhhhhhhhhh Merci ! ?
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.