Darstellung Mathematischer Gleichungen
Darstellung Mathematischer Gleichungen
Hallo,
gibt es bereits eine einfache Möglichkeit, mathematische Gleichungen "schön" darzustellen?
Z.B.:
((2+1)/(2+3))+8*√9+2^2 =
Das Ganze in "schön": Mit richtiger waagrechter Bruchlinie, den Rest dann auch mittiger, die 9 schön im Wurzelzeichen usw.
Eine einfache Grafik zur Darstellung wäre schon in Ordnung.
Oder muss man da selbst kreativ werden?
Was ich mir vorstelle ist, dass ich nur die Gleichung schreibe, und nicht unnötig kompliziert noch was "formatieren" muss.
gibt es bereits eine einfache Möglichkeit, mathematische Gleichungen "schön" darzustellen?
Z.B.:
((2+1)/(2+3))+8*√9+2^2 =
Das Ganze in "schön": Mit richtiger waagrechter Bruchlinie, den Rest dann auch mittiger, die 9 schön im Wurzelzeichen usw.
Eine einfache Grafik zur Darstellung wäre schon in Ordnung.
Oder muss man da selbst kreativ werden?
Was ich mir vorstelle ist, dass ich nur die Gleichung schreibe, und nicht unnötig kompliziert noch was "formatieren" muss.
Re: Darstellung Mathematischer Gleichungen
Es gibt was für Delphi, ist allerdings nur auf russisch beschrieben.
Möglicherweise kriegst du das mit ein paar Handgriffen für Lazarus auf Windows zum Laufen.
Auf Linux scheint es leider nicht ohne weiteres zu funzen, da es nicht portiertes WinAPI wie "GetGlyphOutline" verwendet.
Jedenfalls denke ich, dass es das wäre, was du suchst.
http://www.delphikingdom.com/asp/viewit ... alogid=718
Möglicherweise kriegst du das mit ein paar Handgriffen für Lazarus auf Windows zum Laufen.
Auf Linux scheint es leider nicht ohne weiteres zu funzen, da es nicht portiertes WinAPI wie "GetGlyphOutline" verwendet.
Jedenfalls denke ich, dass es das wäre, was du suchst.
http://www.delphikingdom.com/asp/viewit ... alogid=718
Re: Darstellung Mathematischer Gleichungen
Habe mal mein Windows gebootet. Hat ganz schön gestaubt.
Also so ein bisschen geht das schon damit.
Man müsste noch ziemlich schrauben, aber so etwas macht er schon:
S.a. https://stackoverflow.com/questions/101 ... xpressions
Für Cross-platform müsste man wahrscheinlich auf Freetype umstellen.

Also so ein bisschen geht das schon damit.
Man müsste noch ziemlich schrauben, aber so etwas macht er schon:
S.a. https://stackoverflow.com/questions/101 ... xpressions
Für Cross-platform müsste man wahrscheinlich auf Freetype umstellen.
Re: Darstellung Mathematischer Gleichungen
Es gibt auch QDSEquations, https://github.com/karser/QDSEquations, das auch einen Formel-Editor enthält, ähnlich wie in den Office-Programmen, der ist aber etwas hakelig zu bedienen. Mein Test des beigefügten Demo-Programms (--> Screenshot) lief zunächst unter Delphi 7. Dann habe ich gesehen, dass es auch ein Lazarus-Package gibt. Das kompilierte und installierte auf Anhieb, nur beim Demo-Projekt musste ich die fehlende lpr-Datei aus der dpr-Datei regenerieren. Die Units enthalten allesamt die Windows-Unit, man müsste mal durchspielen, ob man sie durch LCLIntf ersetzen kann...
[EDIT]
Man muss in ein paar Message-Methoden den Message-Typ von TWMirgendwas auf TLMirgendwas ersetzen, sowie die Message-Konstante von WM_irgendwas auf LM_irgendwas - ich denke, das war das wesentliche. In eine Utility-Unit gibt es noch eine Keyboard-Mapping-Routine, bei der mir auf die Schnelle nicht eingefallen ist, wie man die in der LCL umsetzt - muss aber machbar sein, wenn man sich mit dem Thema näher beschäftigt.
[EDIT]
Man muss in ein paar Message-Methoden den Message-Typ von TWMirgendwas auf TLMirgendwas ersetzen, sowie die Message-Konstante von WM_irgendwas auf LM_irgendwas - ich denke, das war das wesentliche. In eine Utility-Unit gibt es noch eine Keyboard-Mapping-Routine, bei der mir auf die Schnelle nicht eingefallen ist, wie man die in der LCL umsetzt - muss aber machbar sein, wenn man sich mit dem Thema näher beschäftigt.
- Dateianhänge
-
- qdsequation.png (24.14 KiB) 1721 mal betrachtet
Re: Darstellung Mathematischer Gleichungen
@wp_xyz: Was man bei beiden Codes noch auf dem Schirm haben muss, ist das Thema UTF-8 vs. Ansi vs. WideChar.
Auch in QDSEquations hat es Dinge wie GetTextExtentPoint32W welche mit WideChar arbeiten.
Ich sage nicht, dass das automatisch ein grosses Problem sein muss, aber es könnte für Verwirrung sorgen.
EDIT: Übrigens: Manchmal kann in solchen Fällen auch die Unit DelphiCompat aus dem LCL Extensions Package (Sonst von Virtualtreeview benötigt) hilfreich sein.
Auch in QDSEquations hat es Dinge wie GetTextExtentPoint32W welche mit WideChar arbeiten.
Ich sage nicht, dass das automatisch ein grosses Problem sein muss, aber es könnte für Verwirrung sorgen.
EDIT: Übrigens: Manchmal kann in solchen Fällen auch die Unit DelphiCompat aus dem LCL Extensions Package (Sonst von Virtualtreeview benötigt) hilfreich sein.
Re: Darstellung Mathematischer Gleichungen
Ich habe in diesem Fällen einfach Canvas.TextExtent aufgerufen, obwohl das Argument in WideChar ist. FPC macht da einen phantastischen Job in der automatischen Konvertierung (manchmal aber auch nicht, und das macht den Umgang mit WideChar/WideString und Strings allgemein immer noch zu einem gewissen Abenteuer - da gebe ich dir recht):theo hat geschrieben: Mo 26. Sep 2022, 10:04 Auch in QDSEquations hat es Dinge wie GetTextExtentPoint32W welche mit WideChar arbeiten.
Code: Alles auswählen
function TEqExtSymbol.CalcHeight: Integer;
var
Size: TSize;
begin
SetCanvasFont;
{$IFDEF FPC}
Size := Canvas.TextExtent(Symbol);
{$ELSE}
GetTextExtentPoint32W(Canvas.Handle,@Symbol,1,Size);
{$ENDIF}
Result:=Size.CY
end;
Re: Darstellung Mathematischer Gleichungen
OK.
GetTextExtentPoint32W ist bspw. eine Funktion, die in DelphiCompat enthalten ist.
Mit dieser Unit kann man sich manchmal etwas Arbeit ersparen, bei Delphi/WinApi Code.
GetTextExtentPoint32W ist bspw. eine Funktion, die in DelphiCompat enthalten ist.
Mit dieser Unit kann man sich manchmal etwas Arbeit ersparen, bei Delphi/WinApi Code.
Re: Darstellung Mathematischer Gleichungen
Das russische Tool finde ich ziemlich gut. Leider ist der Fehler mit dem Bruchstrich drin. Den Fehler kann ich aber nicht korrigieren.
Inzwischen habe ich an einem eigenen Tool herumprobiert. Aber ganz so einfach ist es nicht, wie ich zunächst dachte. Wahrscheinlich ist es einfacher, das russische zu korrigieren. Interessant wäre, ob der gleiche Fehler auch in einer Delphi Umgebung ist oder dort funktioniert. Wollte mir die Community Edition besorgen, aber die Delphi Webseite funktioniert bei mir gar nicht oder im Schneckentempo.
Mit den Texten des russischen habe ich ziemliche Probleme, da mir nur kryptische Texte angezeigt werden (Win 7).
Ich habe allerdings AsciiMath gefunden. Leider, nicht für Lazarus, sondern für HTML.
http://asciimath.org/ bzw. https://docs.mathjax.org/en/latest/input/asciimath.html
Finde ich ziemlich interessant. Schöner wäre es noch, wenn man das als Grafik speichern könnte usw.
Inzwischen habe ich an einem eigenen Tool herumprobiert. Aber ganz so einfach ist es nicht, wie ich zunächst dachte. Wahrscheinlich ist es einfacher, das russische zu korrigieren. Interessant wäre, ob der gleiche Fehler auch in einer Delphi Umgebung ist oder dort funktioniert. Wollte mir die Community Edition besorgen, aber die Delphi Webseite funktioniert bei mir gar nicht oder im Schneckentempo.
Mit den Texten des russischen habe ich ziemliche Probleme, da mir nur kryptische Texte angezeigt werden (Win 7).
Ich habe allerdings AsciiMath gefunden. Leider, nicht für Lazarus, sondern für HTML.
http://asciimath.org/ bzw. https://docs.mathjax.org/en/latest/input/asciimath.html
Finde ich ziemlich interessant. Schöner wäre es noch, wenn man das als Grafik speichern könnte usw.
Re: Darstellung Mathematischer Gleichungen
Wäre LibreOffice Math eine Möglichkeit?