MathEd: Ecrire des formules mathématiques simples sans Latex

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

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.