![]() |
Wie geht man an einen Formeleditor heran?
Ich mache mir rein aus Interesse momentan Gedanken darüber, wie man einen Formeleditor programmieren könnte. Ich denke mir das so, dass man eine Eingabe macht (und da schien mir eine Eingabe so ähnlich wie LaTeX gut zu parsen):
/{1#2}+root{3#/{1#2}} zum Beispiel für LaTeX: \frac{1}{2}+\sqrt[3]{\frac{1}{2}} Also hab ich mir gedacht, das muss rekursiv gemacht werden. :angel2: Ich denke da an einen record Term, aber wie sieht das mit den Typen aus? Ich brauche ja size (oder auch nicht, MetaFiles kann ich ja beliebig stretchen), fix (Höhe von Gleichheitszeichen, Bruchstrich, ...), height, width, ... und vor allem ein geparstes Image, Content: TMetaFile. Da bin ich aber auf folgendes Problem gestoßen: Wann soll ich wo dieses MetaFile erstellen und wieder freigeben? Hat jemand sowas schon einmal gemacht? Ich hatte mir mal eine Lösung in C# angesehen, allerdings gibt es die Website anscheinend nicht mehr und die Formeln sahen hinterher grässlich aus, weil on-the-fly gezeichnet wurde, also ein völlig unbrauchbares Konzept. |
Re: Wie geht man an einen Formeleditor heran?
Guten Morgen,
Zitat:
Für eine graphische Aufbereitung der Formel gehst Du am einfachsten so vor, wie \TeX es auch macht: Du brauchst einen Container, der entweder ein graphisches Element oder mehrere andere Container enthält. Jeder Container hat eine feste Höhe und Breite, wobei sich die Höhe und Breite der übergeordneten Container aus denen der enthaltenen Container ergibt, ggfs zusätzlich zu dem eigenen graphischem Element. Beispiel: Ein Container für einen Bruch enthält zwei Sub-Container, nämlich oben und unten, und ein graphisches Element, den Querstrich. Wenn Du jedem Container eine virtuelle Methode Paint() gibts, kannst Du deine Formel relativ einfach auf ein Canvas zeichnen lassen. Gruß, SirTwist |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz