Entwickler-Ecke

Sonstiges (Delphi) - Mathematische Formeln/Ausdrücke als "Text" darstellen


ImbaPanda - Do 01.01.09 19:27
Titel: Mathematische Formeln/Ausdrücke als "Text" darstellen
Gibt es bzw. kennt jemand eine Möglichkeit, mit deren Hilfe man mathematische Ausdrücke (z.B. Vektoren,Brüche etc.) in Delphi korrekt darstellen kann? Es geht mir nämlich in erster Linie darum, dass es teils sehr unübersichtlich wird bei langen Termen, wenn man eine derartige Schreibweise verwendet.

Schonmal danke für alle Ideen.

MfG André Stollenwerk


alzaimar - Do 01.01.09 20:36

Such mal nach 'Mathe Parser', da solltest Du hier fündig werden.


ImbaPanda - Do 01.01.09 20:45

Ich benötige keinen Matheparser^^ Falls ich meine Fragestellung etwas ungenau formuliert habe, ich suche eine Möglichkeit Formeln korrekt als Text darzustellen, z.B. Vektoren oder griechische Symbole (Lambda,pi etc.). Darum geht es mir ;)


alzaimar - Do 01.01.09 20:58

Ahhhhh. Verstehe. Sowas hätte ich auch gerne. Es gibt rudimentäre Ansätze, aber Du benötigst ja etwas TeX/TROFF ähnliches. Das wird kniffelig. Du könntest es mit einem TRichEdit probieren, das kann wenigstens verschiedene Zeichensätze darstellen. Vielleicht findest Du auch etwas bei http://www.torry.net


Jakob_Ullmann - Do 01.01.09 21:11

Also nativ jedenfalls nicht. Und wenn du dir einen eigenen Formeleditor programmieren willst, benötigst du sehr wohl eine Art "Parser", und da geht es sehr gut, einfach einen Matheparser weiterzuentwickeln.

Ansonsten: LaTeX, falls es installiert ist. Ne andere Möglichkeit wäre MathML, wofür allerdings der TMozillaBrowser oder was anderes, MathML kompatibles, gebraucht wird. Oder, wenn es wirklich nur Brüche sind, über HTML-Tabellen vielleicht:


XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"
 http-equiv="content-type">
  <title></title>
</head>
<body>
<table border="0" cellpadding="0" cellspacing="0">
  <tbody>
    <tr>
      <td>
      <table border="0" cellpadding="0" cellspacing="0">
        <tbody>
          <tr>
            <td>α</td>
          </tr>
          <tr>
            <td style="border-top: 1px solid black;">2</td>
          </tr>
        </tbody>
      </table>
      </td>
      <td>
      <sup>2</sup> ×

      </td>
      <td>
      <table style="border-top: 1px solid black;" border="0"
 cellpadding="0" cellspacing="0">
        <tbody>
          <tr>
            <td>2</td>
          </tr>
        </tbody>
      </table>
      </td>
    </tr>
  </tbody>
</table>
<br>
</body>
</html>


Sieht nicht besonders schön aus, v.a. bei sup- und superscripts, aber es ist eine Lösung die auf jedem Windows-System laufen sollte (ich habe es jetzt nur schnell in Mozilla und IE getestet, sieht weitgehend gleich aus).

EDIT: ich weiß, dass es mit HotEqn ein Java-Applet gibt (nur, weil das im Special Thanks Fenster von GeoGebra steht), das LaTeX-Codes in JPG umwandelt, ohne "LaTeX" selber zu benutzen. Bei torry.net (und ich nehme mal an, damit auch für Delphi) gibt es so gut wie gar nichts.
EDIT2: Eine Einleitung in MathML gibt's hier: http://www.dessci.com/en/support/mathtype/tutorials/mathml/default.htm . Was auch noch eine Lösung wäre: Wikipedia, Matheboard.de oder sonst irgendwas in der Art zum Parsen verwenden. Oder du bastelst dir einen eigenen Server für sowas.


Kha - Do 01.01.09 21:29

user profile iconJakob_Ullmann hat folgendes geschrieben Zum zitierten Posting springen:
Was auch noch eine Lösung wäre: Wikipedia, Matheboard.de oder sonst irgendwas in der Art zum Parsen verwenden. Oder du bastelst dir einen eigenen Server für sowas.
Wenn Webservices akzeptabel sind, gibt's z.B. hier einen: http://www.univie.ac.at/ZID/latex/


Jakob_Ullmann - Do 01.01.09 21:33

Interessant. :) Ansonsten habe ich auch mal irgendwo ein Script in PHP gefunden: http://www.wpavel.de/wpformeleditor/wpformeleditor.php. Sieht ebenfalls nicht besonders schön aus, ist aber eine Lösung. Wäre jemand an einer Delphi-Portierung (und Schönmachung) des Scripts interessiert? :)