Transcript MathML

Seminar XML-Technologien
MathML
Von Primo Cirrincione
Was ist MathML?
• MathML = Mathematical Markup Language
• MathML ist eine auf XML basierende
Auszeichnungssprache für mathematische
Ausdrücke.
• Was HTML für Text-Information ist, soll
MathML für mathematische Ausdrücke sein.
12.6.2002
Seminar XML-Technologien:
MathML
2
Geschichte von MathML (1)
• 1994 - Es wurde ein Vorschlag für HTML Math im HTML
3.0 working draft eingefügt.
• Mai 1996 - Nach einem Meeting der digital Library
Initiative wurde ein Ausschuss für HTML Math Editorial
Review gegründent.
• März 1997 - Dieser Ausschuss wurde zum W3C Math
Working Group neu zusammengesetzt.
• April 1998 - W3C veröffentlicht MathML 1.0 als
Recommendation.
12.6.2002
Seminar XML-Technologien:
MathML
3
Geschichte von MathML (2)
•
•
•
Juli 1999 - Das Math Working Group veröffentlicht
MathML 1.01 als überarbeitete Version der vorherigen
Recommendation.
Februar 2001 - Die W3C Recommendation von MathML
2.0 wurde veröffentlicht.
An der Entwicklung von MathML sind auch folgende
Firmen beteiligt:
– Waterloo (Maple)
– Wolfram Research (Mathematica)
– IBM
– Microsoft
– uvm.
12.6.2002
Seminar XML-Technologien:
MathML
4
Alternativen zu MathML
• Man lässt sich von Mathematik-Programmen (z.B. Maple
oder Mathematica) Bilder der Ausdrücke generieren und
fügt diese in ein HTML-Dokument ein.
• Man versucht die Ausdrücke mit HTML zu schreiben
Zum Beispiel:
<b>
<pre>
-b &#177; Sqrt(b<sup>2</sup> - 4ac)
x=
------------------2a
</pre>
-b ± Sqrt(b2 - 4ac)
x = ------------------2a
</b>
12.6.2002
Seminar XML-Technologien:
MathML
5
Nachteile
• Mit HTML hat man Probleme um „spezielle“
mathematische Ausdrücke darzustellen (z.B.
Integrale, Summen, usw.).
• Die mathematische Bedeutung geht verloren.
• Wenn die Formeln als Bilder abgespeichert sind,
geht jegliche Dynamik verloren.
• Bilder können nicht als Input für Programme
benützt werden, die symbolisch Rechnen können.
• Bilder brauchen mehr Speicher -> Der Aufbau
einer Internetseite ist langsamer.
12.6.2002
Seminar XML-Technologien:
MathML
6
Lösung: MathML
• MathML erlaubt sowohl äussere Struktur eines
Ausdrucks als auch dessen Semantik zu kodieren.
• Durch die Attribute von MathML-Elemente kann
man den Layout der Ausdrücke festlegen.
• Man könnte MathML als Input für MathematikProgramme verwenden.
• Man kann MathML in andere Formate
umwandeln, z.B. LaTeX.
12.6.2002
Seminar XML-Technologien:
MathML
7
Aufbau von MathML
• Jedes MathML Dokument beginnt mit <math>
und endet mit dem schliessenden </math> und es
ist wie ein XML Dokument aufgebaut.
• Es gibt zwei Unterschiedliche Arten ein
mathematischer Ausdruck in MathML zu
kodieren: Presentation oder Content Markup.
• Presentation Markup ermöglicht es einen
Ausdruck über das Aussehen zu kodieren.
• Content Markup ermöglicht es einen Ausdruck
über die Semantik zu kodieren.
• Man kann beide Markup Varianten auch mischen
bzw. parallel benützen.
12.6.2002
Seminar XML-Technologien:
MathML
8
Idee von MathML: Expression Trees
• Die Idee ist es die Baumstruktur eines
mathematischen Ausdrucks zu nutzen.
• Man kann mathematische Symbole nur auf wenige
Arten in einem Ausdruck anordnen. Z.B.:
– In einer Reihe.
– In eine Matrix.
– Als Index.
• Mathematische Ausdrücke sind oft nur
Ineinanderschachtelungen einfacherer Ausdrücke.
12.6.2002
Seminar XML-Technologien:
MathML
9
Presentation Markup: Layout Box
• Presentation Markup hat 27 Elemente mit ca. 50
Attributen.
• Presentation Markup basiert auf der Idee der Layout
Box: Jedes Element ist eine Layout Box.
– Die einfachsten Layout Boxes enthalten Zeichen, Zahlen oder
Entitäten.
– Kompliziertere Boxes ordnen ihre „child Boxes“ gemäss einem
Algorithmus an.
– Z.B. gibt es ein Element <mfrac> welches seine zwei KinderElemente als Bruch darstellt.
• Man könnte sagen, dass jedes Element eine Art
„intelligentes Template“ ist, welches seine Kinder auf
eine gewisse Art darstellt.
12.6.2002
Seminar XML-Technologien:
MathML
10
Presentation Markup: Tokens
• Die einfachsten Elemente im Presentation Markup
sind die Tokens.
• Das sind die einzigen Elemente die direkt Daten
enthalten (entweder Zahlen, Buchstaben oder
Entitäten), also die eigentlichen Blätter im Baum.
• <mi> .. </mi>
Weist darauf hin, dass sein Inhalt als Variable angezeigt werden soll.
Wichtige Attribute sind fontweight, fontstyle, etc..
• <mn> .. </mn>
Weist darauf hin, dass sein Inhalt als Zahl angezeigt werden soll. Hat
dieselben Attribute wie <mi>.
• <mo> .. </mo>
Weist darauf hin, dass sein Inhalt als Operator angezeigt werden soll.
Attribute sind lspace, rspace, stretchy, movablelimits
12.6.2002
Seminar XML-Technologien:
MathML
11
Presentation Markup: Layout Schemata
• <mrow> Kind(1)..Kind(n) </mrow>
Das üblichste Layout Schema. Es zeigt seine Kinder in
einer Reihe entlang einer Horizontalen Basislinie an.
• <mfenced> Kind(1)..Kind(n) </mfenced>
Erfüllt gleiche Aufgabe wie <mrow> und schliesst
zusätzlich seine Kinder in Klammern ein.
• <mfrac> Zähler Nenner </mfrac>
Zeigt einen Bruch an. Wenn man das Attribut
linethickness auf 0 setzt, kann <mfrac> dazu benutzen
Binomialausdrücke anzeigen zu lassen.
• <msqrt> Kind(1)..Kind(n) </msqrt>
Zeigt seine Kinder unter einem Wurzel-Zeichen an.
• <mroot> Basis Index </mroot>
Benötigt man um Wurzeln höherer Ordnung anzeigen zu
lassen.
12.6.2002
Seminar XML-Technologien:
MathML
12
<math>
Erstes Beispiel:
<mfrac>
<mn>3</mn>
<mrow>
<mo>(</mo>
<mi>x</mi>
<mo>+</mo>
<mn>2</mn>
<mo>)</mo>
</mrow>
</mfrac>
</math>
12.6.2002
Seminar XML-Technologien:
MathML
13
Presentation Markup: Indices
• <msub> Basis tiefgestellter-Index </msub>
<msup> Basis hochgestellter-Index </msup>
Erstes Kind wird als Basis angezeigt und zweites Kind als
tiefgestellter bzw. hochgestellter Index
• <msubsup> Basis tiefg.-Index hochg.-Index </msubsup>
Ermöglicht es sowohl einen tiefgestellten Index als auch einen
hochgestellten zu setzen
• <munder> Basis Zeichen </munder>
<mover> Basis Zeichen </mover>
Das Zeichen wird über der Basis bzw. unter der Basis angezeigt.
Benutzt man z.B. um ein Tilde oder ein Strich über eine Variable zu
schreiben.
• <munderover> Basis Zeichen Zeichen </munderover>
Erlaubt es einem Zeichen sowohl über die Basis als auch darunter zu
schreiben. Findet Anwendung bei Summen oder Integralen (z.B. die
Grenzen über und unter dem Integralzeichen).
12.6.2002
Seminar XML-Technologien:
MathML
14
Beispiele zu Indices (1):
<mrow>
<msup>
<msub>
<mi>x</mi>
<mn>1</mn>
</msub>
<mi>&alpha;</mi>
</msup>
12.6.2002
<mo>+</mo>
<msubsup>
<mi>x</mi>
<mn>1</mn>
<mi>&alpha;</mi>
</msubsup>
</mrow>
Seminar XML-Technologien:
MathML
15
Beispiele zu Indices (2):
<mrow>
<mstyle displaystyle='true'>
<munderover>
<mo>&sum;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>&infty;</mi>
</munderover>
</mstyle>
12.6.2002
Seminar XML-Technologien:
MathML
<msup>
<mi>x</mi>
<mi>i</mi>
</msup>
</mrow>
16
Presentation Markup: Tabellen
Tabellen in MathML sind ähnlich zu den
Tabellen in HTML aufgebaut. Sie haben aber
noch einige zusätzliche Attribute um das
Verhalten des Layouts besser zu kontrollieren.
• <mtable> Reihe(1)..Reihe(n) </mtable>
wobei Reihe(i) <mtr> Elemente (math table row)
sind.
• <mtr> Zelle(1)..Zelle(n) </mtr>
wobei Zelle(i) <mtd> Elemente (Datenzellen)
sind.
• <mtd> Kind(1)..Kind(n) </mtd>
12.6.2002
Seminar XML-Technologien:
MathML
17
Beispiel: Matrix
<mrow>
<mi>A</mi>
<mo>=</mo>
<mfenced open='['; close=']'>
<mtable>
<mtr>
<mtd><mi>x</mi></mtd>
<mtd><mi>y</mi></mtd>
</mtr>
12.6.2002
<mtr>
<mtd><mi>z</mi></mtd>
<mtd><mi>w</mi></mtd>
</mtr>
</mtable>
</mfenced>
</mrow>
Seminar XML-Technologien:
MathML
18
Presentation Markup: Vererbung
• Attribute können entweder explizit in den MathMLTags gesetzt werden oder von der Umgebung ererbt
werden.
• Jedes MathML-Element hat eine Umgebung welches
einen Default-Wert für die Attribute festlegt. Die Idee
ist, dass die Attribute der Umgebung, die für
Schriftart, Hintergrund, etc. zuständig sind, durch
den Browser initialisiert werden.
• Attribute die in einem Element gesetzt werden,
wirken sich nur auf dieses aus.
• Um gewisse Attribute für mehrere Elemente
gleichzeitig zu setzen, benutzt man das Element
<mstyle>.
12.6.2002
Seminar XML-Technologien:
MathML
19
Beispiel zu <mstyle>
<mrow>
<mi>f</mi>
<mfenced>
<mstyle color=‘#ff0000’>
<mrow>
<mi>x</mi>
<mo>+</mo>
<mi>y</mi>
</mrow>
</mstyle>
</mfenced>
</mrow>
12.6.2002
Seminar XML-Technologien:
MathML
f(x + y)
20
Content Markup: Prefix-Notation
• In Content Markup werden die Ausdrücke
in Prefix-Notation geschrieben.
• Der Vorteil ist, dass Klammern überflüssig
werden, da die Reihenfolge der Operationen
durch die Notation eindeutig ist.
Zum Beispiel: (x+y)/2 wird zu / + x y 2
12.6.2002
Seminar XML-Technologien:
MathML
21
Content Markup: Tokens und fundamentale
Elemente
• <ci>..</ci>
Ist das analoge Element zu <mi>. Hat ein Attribut type, welches
den Typ des angezeigten Objekts festlegt (z.B. vector, array, etc.).
• <cn>..</cn>
Ist das analoge Element zu <mn>. Hat auch ein Attribute type (z.B.
real, integer, rational, complex-cartesian, complex-polar, constant)
und ein Attribut base um das Zahlsystem festzulegen.
• <apply> Operator Argument(1)..Argument(n) </apply>
Ist ein fundamentales Element des Content Markup um
Operationen auszudrücken.
• <reln> Typ Argument(1) Argument(2) </reln>
Ist das Analogon zu <apply> um Relationen auszudrücken.
• Es gibt kein <co> Element! Operatoren sind „leere
Elemente“ oder werden durch das <fn> Element definiert.
12.6.2002
Seminar XML-Technologien:
MathML
22
Content Markup: Operatoren und Relationen
• Es gibt ca. 50 „leere“ Operator Elemente für die
üblichsten Funktionen und Operatoren (z.B.
<cos/> oder <plus/>).
• Es gibt ein Element um Funktionen bzw.
Operatoren zu definieren: <fn> Operator </fn>
• Bemerkung: Wenn man eine Funktion f(x)
definiert, sagt man nicht explizit, dass das x in
Klammern dargestellt werden soll. Das muss der
Browser „selber“ erkennen.
• Relationen werden von Operatoren unterschieden.
Man definiert sie über das <reln> Element.
12.6.2002
Seminar XML-Technologien:
MathML
23
Beispiel: Funktionen und Relation
3. x=1
1. (sin + cos)(x)
<apply>
<reln> <eq/>
<fn>
<ci>x</ci>
<mfenced>
<cn>1</cn>
<apply><plus/>
</reln>
<sin/>
2. g(y)
<cos/>
</apply>
<apply>
</mfenced>
<fn><ci>g</ci></fn>
</fn>
<ci>y</ci>
<ci>x</ci>
</apply>
</apply>
12.6.2002
Seminar XML-Technologien:
MathML
24
Content Markup: Containers
• MathML benutzt sogenannte Container Elemente um
elemantare mathematische Objekte und Datentypen
darzustellen.
• <set> <element1> <element2>...| <condition> </set>
Konstruiert eine Menge dessen Elemente auf zwei Arten
definiert werden: Entweder durch eine Liste von Tokens (in
einem <bvar> Container) und Containers oder durch ein
<condition> Element.
• <interval> Punkt1 Punkt2 </interval>
Definiert ein Intervall, wobei die Punkte die Anfangs und
Endpunkte sind. Durch das Attribut closure kann man
Intervalltyp festlegen („open“, „open-closed“, etc.).
• <vector> <element1> <element2> ... </vector>
Konstruiert ein Vektor (per Konvention ein Spaltenvektor).
• <matrix> <Reihe(1)> <Reihe(2)> ... </matrix>
<Reihe(i)> sind <matrixrow> Elemente, deren Kinder dann die
Matrixeinträge sind.
12.6.2002
Seminar XML-Technologien:
MathML
25
Beispiel: Menge und Intervall
<reln> <eq/>
<set>
<bvar> <ci>x</ci> </bvar>
<condition>
<reln> <geq/><ci>x</ci><cn>0</cn> </reln>
</condition>
</set>
<interval closure='closed-open'>
<cn>0</cn>
<ci>&infty;</ci>
</interval>
</reln>
12.6.2002
Seminar XML-Technologien:
MathML
26
Beispiel: Matrix und Vektor
<reln> <eq/>
<apply><times/>
<vector type=“row”> <cn>1 </cn> <cn>2 </cn> </vector>
<matrix>
<matrixrow> <cn>0 </cn> <cn>1 </cn> </matrixrow>
<matrixrow> <cn>1 </cn> <cn>0 </cn> </matrixrow>
</matrix>
</apply>
<apply> <transpose/>
<vector> <cn>2 </cn> <cn>1 </cn> </vector>
</apply>
</reln>
12.6.2002
Seminar XML-Technologien:
MathML
27
Paralleler und gemischter Markup:
• Es ist notwendig beide Markup Varianten gleichzeitig zu
verwenden, um das Layout eines mathematischen Ausdrucks
kontrollieren zu können, aber dabei die semantische Bedeutung
nicht zu verlieren.
• Der mathematische Ausdruck soll möglichst „schön“ angezeigt
werden, aber dabei muss der Inhalt für ein Programm noch
immer verständlich bleiben.
• Das <semantics> Element erlaubt dies.
• Mit dem <annotation> bzw. <annotation-xml> Element
(innerhalb von <semantics>) können noch zusätzliche
Informationen gespeichert werden.
• Es ist auch möglich Presentation Markup im Content Markup zu
verwenden und umgekehrt. Dies kann aber heikel sein. Man
muss vieles beachten, damit der Code noch Sinn macht.
12.6.2002
Seminar XML-Technologien:
MathML
28
Beispiel: semantics
<semantics>
<mrow>
<msup> <mi>f</mi> <mi>&prime;</mi> </msup>
<mfenced><mi>x</mi></mfenced>
</mrow>
<annotation-xml encoding="MathML-Content">
<apply><diff/>
<bvar>
<ci>x</ci>
</bvar>
<apply>
<fn> f </fn>
<ci> x </ci>
</apply>
</apply>
</annotation-xml>
</semantics>
12.6.2002
Seminar XML-Technologien:
MathML
29
Tools (1):
• Da MathML von XML stammt, ist es mühsam MathML
„von Hand“ zu schreiben.
• Der WebEQ Equation Editor ist ein graphischer Editor, der
es einem Erlaubt einen mathematischen Ausdruck sowohl
in Content als auch Presentation Markup zu exportieren.
12.6.2002
Seminar XML-Technologien:
MathML
30
Tools (2):
• WebEQ kann das MathML Dokument als Applet
exportieren (natürlich auch als XML oder auch als Bild),
so dass der mathematische Ausdruck in einem Applet
generiert wird.
• Vorteil: Man braucht kein Browser der MathML
unterstützt um den Ausdruck zu lesen.
Beispiel
• Eine weitere Möglichkeit um ein MathML Dokument zu
erstellen ist es, mit einem Programm wie Maple (nur mit
Version 7 möglich) oder Mathematica den Ausdruck zu
schreiben und dann als MathML zu exportieren.
12.6.2002
Seminar XML-Technologien:
MathML
31
Browser und Plug-ins
• Applets sind zwar Praktisch, da sie von jedem Browser
unterstützt werden. Aber das ganze ist dafür ziemlich
langsam und undynamisch.
• MathML wird noch nicht standardmässig von allen
Browsern unterstützt.
• Es gibt aber Plug-ins für IE (ab Version 5.5), der
sogenannte Mathplayer
Beispiel
• Browser die MathML Presentation Markup schon
unterstützen:
– Netscape 7.0
– Mozilla
– Amaya
12.6.2002
Seminar XML-Technologien:
MathML
32
Nützliche Links
• www.w3.org/Math : Die W3C Math
Working Group Homepage
• www.w3.org/Math/implementations.html:
Informationen zu Software für MathML
• www.webeq.com/mathml/gitmml/: Ein
gutes Tutorial für MathML
12.6.2002
Seminar XML-Technologien:
MathML
33
Fazit:
• MathML ist ein gutes Beispiel dafür, wie man XML
sinnvoll anwenden kann.
• Da es auf XML basiert, ist es einfach möglich MathML in
andere Formate (wie TeX z.B.) umzuwandeln.
• MathML hat natürlich auch den Nachteil von XML, das
der Code schnell ziemlich gross wird und sich
entsprechend schnell Fehler reinschleichen.
• Ein Nachteil ist auch, dass es leider nur wenig Freeware
gibt, um MathML Dokumente zu erzeugen.
• Damit MathML sinnvoll eingesetzt werden kann, ist es
notwendig, dass alle Browser MathML standardmässig
unterstützen. Was wahrscheinlich bald der Fall sein wird.
12.6.2002
Seminar XML-Technologien:
MathML
34