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 ± 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>α</mi> </msup> 12.6.2002 <mo>+</mo> <msubsup> <mi>x</mi> <mn>1</mn> <mi>α</mi> </msubsup> </mrow> Seminar XML-Technologien: MathML 15 Beispiele zu Indices (2): <mrow> <mstyle displaystyle='true'> <munderover> <mo>∑</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>′</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