Mathematik-Display
-
Die Bearbeitung mathematischer
Formeln ist schon immer ein Problem in der Programmierung gewesen.
-
Seit TEX
ist zumindest die Wiedergabe beim Druck als erledigt anzusehen. Für
andere Anwendungen (Internet, Unterricht usw.) existieren viele
einzelne Lösungen. Die wenigsten sind Open-Source und noch
weniger arbeiten mit einer Sprache, die unabhängig vom
Betriebssystem ist.
-
Hier wird die Grundlage für ein
System vorgestellt, mit dem zunächst nur die Darstellung
mathematischer Ausdrücke möglich ist. Eine Übersetzung
nach MathML, (LATEX, OpenOffice ist in Planung) ist enthalten. Um
auch die Ausgabe selbst unabhängig von Programmiersprachen zu
halten, wird die Ausgabe auch über reine Glyphen mit SVG
möglich sein.
-
Vor allen Darstellungen sollte jedoch die
Verarbeitung stehen. Ein Interface für MathLab-Syntax ist
ebenfalls im Aufbau. Das Ziel ist jedoch eine Java-Anwendung aus
einem Guss, die trotzdem alle genannten Möglichkeiten bereit
hält.
-
Vor dem Einsatz des Systems bitte die
Lizenz GPL beachten. Für Fehlermeldungen, Erweiterungen,
Vorschläge usw. ist der Autor dankbar. Die Kontaktadresse ist
in jeder Quelltext-Datei zu finden.
Voraussetzungen
- Für den ersten Kontakt mit dem
Mathematik-Displays sind
-
erforderlich:
-
j2sdk1.4.2_xx oder besser,
-
Texteditor.
-
empfohlen:
-
j2sdk1.4.2_xx (wegen allgemeiner Verfügbarkeit),
-
Texteditor mit eigener Ausgabekonsole für die Anwendung, also
-
Textpad (Windows), xje, , NetBeans, eclipse.
-
Die Beschränkung auf eine reine
RunTime-Umgebung (jre) ist nicht empfehlenswert.
Installation
-
Laden der Datei GPLmath.zip in ein
beliebiges Verzeichns.
-
Entpacken der Datei GPLmath.zip
(Verzeichnisstruktur behalten).
-
Alle Dateien in allen Ordnern für
Lesen und Schreiben freigeben.
-
Starten der Demo mit [pfad]java
demo.
-
Die Angabe des Pfads vor java ist
abhängig von der Java-Installation. Wurden die Pfadangaben
global gemacht, kann sie entfallen. Bei Verwendung der empfohlenen
Editoren entfällt bei entsprechender Einrichtung sogar die
Angabe von java.
MathML
-
Die Interaktion mit MathML ist noch
ohne Argumente. Die Interpretation ist auf die Übernahme der
mathematischen Aussage beschränkt. Es ist also nicht das
Aussehen, sondern der Inhalt wichtig. Die Verwendung von
Content-Markup kommt wegen der Ansprüche (z.B. MathLab-Syntax)
nicht in Frage. So werden viele Probleme vermieden und trotzdem die
Vorgaben des W3C eingehalten. Die etwas umfangreicheren Ausdrücke
sichern die Darstellung in vorhandenen MathML-Browsern und sichern
die Eindeutigkeit der Formulierungen.
Ergebnisse der Demo-Programme
-
Die Programme demo und demo01 führen
zu der Anzeige von
-
-
-
Das Programm demo02 benutzt bereits
MathML und zeigt
-
-
-
Wie vom W3C vorgeschlagen, können
die Tags mit speziellen Darstellungen versehen werden. Hier wurde
davon kein Gebrauch gemacht, aber in der Datei
-
translators/DocToDisplay.java
-
stehen alle Möglichkeiten offen.
-
Die Positionen von Indizes, Exponenten
hängen vom gewählten Zeichensatz ab. Sie sind bestimmt
durch Faktoren und in der Datei display/DiskObject.java vorhanden.
Auch hier stehen alle Möglichkeiten bereit, die Faktoren
anzupassen. Der grafische Mathe-Editor (noch in Arbeit), wird
entsprechende Menüs enthalten. Antialiasing ist ebenfalls
optional. Der Zeichensatz sollte ebenfalls etwas gefälliger
sein (Times, Lucida).
Wie geht das überhaupt mit XML oder MathML?
- Eine kleine Hilfe für die Bearbeitung von XML-Dokumenten
erleichtert die Mitarbeit. Immer wieder wurde die Bitte geäußert,
doch ein paar Tipps für XML und Java zu geben. So sei zwar die
Anwendung des Displays in Java verständlich, jedoch das
Zusammenspiel mit XML und damit natürlich auch MathML schwierig
nachzuvollziehen.
-
Wir kommen diesem Wunsch nach. Hier also ein paar Beschreibungen und
Beispiele:
-
Auswahl des XML-Parsers
Soll SAX oder DOM verwendet werden? Wo sind die Unterschiede? Wie
verwendet man diese Parser überhaupt?
-
Formeln in MathML
Wie werden Formeln in MathML ausgedrückt? Wie kann Java sie
auslesen? Welche Möglichkeiten der textuellen Ausgabe (für
die Berechnung wichtig) gibt es?
-
Java Programme aus MathML-Dokumenten erzeugen
Wie geht das? Was muss beachtet werden? Wie können die Typen
für Variablen erzeugt werden? Wie werden die Klammern gesetzt,
die ja in MathML-Brüchen unnötig sind?
- Diese Fragen werden beantwortet. Natürlich kann nur das Wie
gezeigt werden. Es sind keine Komplettlösungen, wohl aber
Grundlagen für weitere Entwicklungen.
-
Allgemeines zur weiteren Entwicklung
-
Ein paar Hinweise zu eigenen Entwicklungen sind hilfreich. Damit die
GPL-Vorgabe der Unabhängigkeit gewahrt bleibt, sind folgende
Punkte erwähnenswert:
-
Soweit möglich sind alle Methoden statisch.
-
Das DOM wird nicht als Parsing-Model verwendet.
-
Die Anzeige wird auf das Zeichnen der Glyphen reduziert.
-
Dynamische Speicherstrukturen werden auf eigene Listen umgestellt.
Die Verbindung zu anderen Systemen wird natürlich ebenfalls
bearbeitet. Die frühe Bereitstellung erfolgt, damit der
Community viel Raum für Anregungen bleibt.