Die hier beschriebenen Elemente gehören nicht zu HTML, sondern zu einer XML-basierten Sprache namens MathML. Der HTML5-Standard ermutigt Web-Autoren jedoch, MathML zur Repräsentation mathematischer Formeln direkt in HTML zu verwenden.

Browser-Anbieter sind angehalten, in HTML erkannte MathML-Bereiche zu rendern. Dabei ist kein XHTML erforderlich, und Sie müssen keine XML-Namensraumsyntax beachten. Nur wenn Sie XHTML als XML ausliefern wollen, müssen Sie MathML über das Namensraumkonzept von XML einbinden.

Die direkte Umsetzung von MathML in modernen Browsern ist allerdings bislang kaum implementiert.

MathML

MathML wird vom W3-Konsortium spezifiziert. Zum Redaktionszeitpunkt liegt der Sprachstandard 2.0 vor, Version 3.0 steht unmittelbar bevor. Die erste Version erschien bereits 1998 und war die erste XML-basierte Sprache, die das W3-Konsortium selbst entwickelte. Ein Teil der MathML-Elemente dient dazu, die Bestandteile von Formeln nach ihrer Bedeutung auszeichnen. Andere Elemente dienen der Notation, also der Präsentation der Formeln. In HTML eingebettetes MathML verwendet vor allem das Präsentationsmarkup.

Es ist im Rahmen dieses Buchabschnitts nicht möglich, MathML auch nur annähernd vollständig zu beschreiben. Interessierte seien auf die Links zu einschlägiger Literatur im Kasten verwiesen. Dieser Abschnitt beschränkt sich darauf, einige wenige Grundlagen der Sprache zu vermitteln.

Eine einfache Formel

Mit nachfolgender Formel beginnt so ziemlich jede Einführung in MathML:

math-einfach.gif

Beispiel

<p>Hier eine einfache mathematische Formel mitten in HTML:</p>
<p>
<math>
  <msup>
    <mfenced>
      <mi>a</mi>
      <mo>+</mo>
      <mi>b</mi>
    </mfenced>
    <mn>2</mn>
  </msup>
</math>
</p>

Erläuterung

Die gesamte Formel wird in <math>…</math> eingeschlossen. Dies ist eigentlich das Dokumentelement von MathML. In der von HTML5 erlaubten Einbettungs-Syntax kann es jedoch wie ein ganz normales HTML-Element notiert werden.

Das Beispiel zeigt Präsentationsmarkup von MathML. Mit <msup>…</msup> wird ein Superscript-Ausdruck markiert. Das Element erwartet als Inhalt zum einen die Basis und zum anderen den Superscript-Part. Im obigen Beispiel besteht die Basis aus dem geklammerten Teilausdruck (a+b). Die Klammerung kann wie im Beispiel durch <mfenced>…</mfenced> beschrieben werden. Die Bestandteile a und b im Beispiel sind Variablen. Diese werden durch <mi>…</mi> ausgezeichnet (das „i“ steht für identifyer = Bezeichner). Operatoren, wie im Beispiel das Pluszeichen, werden im MathML-Präsentations-Markup mit <mo>…</mo> markiert (das „o“ steht für operator). Der Superscript-Part besteht im Beispiel einfach aus dem Wert 2. Zahlen werden in Formeln durch <mn>…</mn> markiert (das „n“ steht für number). Das msup-Element enthält mit mfenced und mn genau die beiden erwarteten inneren Elemente. Das erste, also mfenced, wird zur Basis, und das zweite, also mn, zum Superscript.

Alle für eine Formel relevanten Bestandteile werden durch Elemente markiert. Leerraum dazwischen wird einfach ignoriert.

Gleichung mit Bruch und Wurzel über einem Ausdruck

Nachfolgendes Beispiel ist einem Lehrveranstaltungstext von Marcus Zelend von der TU Chemnitz entnommen:

math-equiv-fract.gif

Beispiel

<h3>Die Gleichung</h3>
<math>
  <mrow>
    <mi>x</mi>
    <mo>=</mo>
    <mfrac>
      <mrow>
        <mrow>
          <mo>-</mo>
          <mi>b</mi>
        </mrow>
        <mo>&PlusMinus;</mo>
        <msqrt>
          <mrow>
            <mi>b</mi>
            <mo>-</mo>
            <mrow>
              <mn>4</mn>
              <mo>&InvisibleTimes;</mo>
              <mi>a</mi>
              <mo>&InvisibleTimes;</mo>
              <mi>c</mi>
            </mrow>
          </mrow>
        </msqrt>
      </mrow>
      <mrow>
        <mn>2</mn>
        <mo>&InvisibleTimes;</mo>
        <mi>a</mi>
      </mrow>
    </mfrac>
  </mrow>
</math>

Erläuterung

Im Präsentationsmarkup von MathML ist nicht wirklich erkennbar, was ein Teilausdruck innerhalb der Gesamtformel ist. Um beliebige Ausdrücke oder Teilausdrücke zu markieren, steht das mrow-Element zur Verfügung. Im obigen Beispiel wird von diesem Element reichlich Gebrauch gemacht. Das Element kann auch wie im Beispiel zu sehen verschachtelt werden, um die logische Hierarchie zwischen komplexeren und elementareren Ausdrücken abzubilden.

Das mrow-Element markiert Ausdrücke auf einer horizontalen Ebene (row = Reihe). Deswegen dient es im obigen Beispiel auch dazu, um die beiden Horizontebenen Zähler und Nenner des Bruchs zu markieren. Schema: <mfrac><mrow>Zähler</mrow><mrow>Nenner</mrow></mfrac>. Das mfrac-Element schließt den gesamten Bruch ein (frac = fraction = Bruch). Es erwartet zwei innere Elemente. Das erste markiert den Zähler, das zweite den Nenner.

Das Gleichheitszeichen der Gleichung ist im Präsentationsmarkup von MathML einfach ein Operator, der wie andere Operatoren durch <mo>…</mo> ausgezeichnet wird.

Wurzeln werden durch <msqrt>…</msqrt> ausgezeichnet (sqrt = square root = Quadratwurzel). Der Browser muss die Wurzel so rendern, dass sie den gesamten Elementinhalt einschließt.

In MathML gibt es auch etliche benannte Zeichen (named entities) für die zahlreichen mathematischen Symbole und Sonderzeichen. Zwei davon sind im obigen Beispiel enthalten: &PlusMinus; für das Zeichen ±, und &InvisibleTimes; für das in Ausdrücken meist nicht explizit notierte Multiplikationszeichen (invisible times = unsichtbares Malzeichen).

 


Korrekturen, Hinweise und Ergänzungen
Bitte scheut euch nicht und meldet, was auf dieser Seite sachlich falsch oder irreführend ist, was ergänzt werden sollte, was fehlt usw. Dazu bitte oben aus dem Menü Seite den Eintrag Diskutieren wählen. Es ist keine Anmeldung erforderlich, um Anmerkungen zu posten. Unpassende Postings, Spam usw. werden allerdings kommentarlos entfernt.