MathML

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche
MathML-Association-Logo
MathML (Mathematical Markup Language) ist ein XML-Dialekt mit der Aufgabe, technisch-wissenschaftliche Inhalte, die mathematische Formelsprache zur Darstellung benötigen, abzubilden.




Vorüberlegungen

HTML wurde 1990 vom Web-Gründer Tim Berners-Lee am CERN als Auszeichnungssprache für wissenschaftliche (und andere) Texte entwickelt. Während HTML zusammen mit dem WWW auch außerhalb der wissenschaftlichen Welt immer präsenter wurde und heute aus dem täglichen Leben nicht mehr wegzudenken ist, blieben XML-Dialekte wie SVG und MathML aufgrund mangelnder Browserunterstützung vergleichsweise unbekannt.

Formeln wurden in HTML als Rastergrafiken eingefügt, was zwei Nachteile hatte:

  1. Selbst kleine Änderungen an der Formel benötigten oft einen völligen Neubeginn
  2. Grafiken sind nicht zugänglich und konnten so den Inhalt nicht allen Nutzern verfügbar machen.

Präsentation und Inhalt

MathML bestand bis zur Version 3.0 aus zwei Teilsprachen, die gemeinsam zum Einsatz kommen konnten:

  • Content MathML beschreibt nur die Struktur einer Formel, also welche Funktionen oder Operatoren auf welche Variablen oder Werte angewendet werden. In diesem Format ist die Bedeutung (Semantik) einer Formel besser zu erfassen. Diese Variante wurde nie von Browsern implementiert.
  • Presentation MathML ist stärker auf die grafische Gestaltung einer Formel orientiert. Es schreibt zwar nicht die genaue Gestaltung einer Formel vor, wohl aber die Anordnung und Reihenfolge der Symbole.[1] MathML Core besteht aus Presentation MathML.

MathML Core

Deshalb wurde MathML ähnlich wie SVG2[2] reformiert und in HTML integriert. Das Subset MathML Core -verabschiedet im August 2021 - ist eine Untermenge mit erweiterten Implementierungsdetails, die auf den Regeln von LaTeX und Open Font format beruht. Es ist auf die modernen Browser zugeschnitten und wurde speziell für die Zusammenarbeit mit anderen Webstandards entwickelt, darunter HTML, CSS, DOM und JavaScript.

Ähnlich wie bei SVG2 wurden einige Elemente (MathML 3.0 hatte 195, Math ML Core nur noch 32 Elemente)[3], mehr noch aber eine Vielzahl spezieller MathML-Attribute, aussortiert, wobei parallel die Integration von CSS für MathML vorangetrieben wird.


Mittlerweile unterstützen alle großen Browser MathML, trotzdem sollte zusätzlich der Einsatz der JavaScript-Bibliothek MathJax erwogen werden, um MathML allen Nutzern zur Verfügung zu stellen.[4]

Dabei gibt es zwei Baustellen:

  1. Ein Webseitenersteller sollte nicht nur Textinhalt und Grafiken, sondern eben auch Formeln zugänglich für alle lesbar ins Netz stellen. Dafür ist MathML die passende Technologie.
  2. Nutzer können diese Formeln dank der guten Browserunterstützung lesen.
    • Nutzer, denen eine gute Darstellung wichtig ist, können zusätzlich zu den systemeigenen Schriften die Schriften Latin Modern Math und STIX Two Math herunterladen und installieren.[5]
    • Nutzer, die ein eingeschränktes Sehvermögen haben, können MathML beliebig skalieren, da es aus Glyphen besteht und immer gestochen scharf bleibt.
    • Nutzer von Screenreadern können zusätzlich den MathPlayer installieren, der ihnen Formeln vorliest oder über die Braille-Zeile ausgibt.

In unserem Wiki, das wie die Wikipedia mit der Mediawiki-Software läuft, ist der Einsatz von MathML noch nicht möglich. Im SVG-Bereich gibt es mehrere Formeln, die als Rastergrafiken abgebildet werden. Eine Extension ist vorhanden und wird evtl. in Zukunft implementiert.[6]

Im Self-Forum können Sie Formeln in LaTeX-Syntax eingeben. Diese werden dann via MathJax in MathML umgewandelt.

LaTeX vs. MathML

Warum sollte man jetzt etwas Neues einführen? - Ich hatte bisher - auch im SELF-Forum - mit LaTeX gearbeitet?

\frac{1}{x}

Das sieht (für den geübten Nutzer) einfach aus. Schwierig wird es, wenn Sie …

  • einen Anker innerhalb Ihres Ausdrucks erstellen
  • DOM-Manipulationen anwenden
    oder
  • die Farbe des Nenners im Ausdruck 1/x dynamisch ändern

möchten.

Wie wäre es jetzt mit:

    <mfrac>
      <mn>1</mn>
      <mi>x</mi>
    </mfrac>

MathML ist für Bibliotheksautoren und Webentwickler viel einfacher als TeX zu handhaben.[7]

Hilfsmittel

Editoren und Generatoren

Zwischenergebnis unserer Recherchen war erst einmal das Staunen über das aufgeblasene Markup. Während HTML nur die Inhaltsstruktur erfasst (HTML kam anfangs mit 18 Elementen aus, von denen 15 heute noch einen Großteil des Markups ausmachen!) und nur gelegentlich Wörter betont oder hervorhebt, ist MathML sehr ausführlich.

Während (fast) jeder Mensch und selbst eine Suchmaschine

(a+b)2 = a2 + 2ab + b2

problemlos lesen kann, werden bei MathML Formeln in ihre kleinsten Bestandteile zerlegt und ausgezeichnet.

Auf die Spitze getrieben wird es bei der Auslassung von Multiplikationszeichen, die in MathML (unsichtbar) notiert werden und dann von Screenreadern vorgelesen werden können:

<mn>2</mn>
<mo>&InvisibleTimes;</mo>
<mi>a</mi>
<mo>&InvisibleTimes;</mo>
<mi>b</mi>
Beachten Sie: Terme, die ohne die Token-Elemente mi, mn und mo notiert werden, werden von Chrome nicht gerendert!'

Fazit: Das zeigt eben auch die Daseinsberechtigung von MathML auf:

MathML ist in die HTML-Welt integriert und kann …

  • mit CSS ansprechend gestaltet,
  • mit JavaScript dynamisch verändert
    und
  • von Screenreadern (im Gegensatz zu Formeln in Grafiken) auch vorgelesen werden.

Allerdings sollte MathML nicht per Hand geschrieben, sondern von Formel-Editoren automatisch erzeugt werden.

In einem eigenen Kapitel werden wir Editoren, Generatoren und Online-Tools vorstellen, die Ihnen die Arbeit erleichtern.

--Matthias Scharwies (Diskussion) 17:24, 16. Mär. 2023 (CET)

MathJax

MathJax ist eine browserübergreifende, auf JavaScript basierende Bibliothek, die mathematische Formeln und Gleichungen, die in LaTeX und MathML Markup geschrieben wurden, in Webbrowsern grafisch darstellt. Sie wird als freie Software (Open-Source) unter Apache-Lizenz veröffentlicht.

Die Javascript-Library MathJax kann von www.mathjax.org geladen oder über ein Content Delivery Network (CDN) eingebunden werden.

Beispiel
<script id="MathJax-script" async
  src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
</script>

Nachdem das CDN auf cdn.mathjax.org 2017 eingestellt wurde, führt die MathJax Dokumentation weitere CDNs auf.

Weblinks

Editoren

  • TeXZilla von Frédéric Wang
    wandelt LaTeX in MathML um; MathML kann mit dem Seiteninspektor ausgelesen werden
  • LATExml A LATEX to XML/HTML/MathML Converter
    wandelt LaTeX in Webseiten um; MathML kann mit dem Seiteninspektor ausgelesen werden
  • itex2MML Plugin


Quellen

  1. Fundamentals of MathML / Presentation and content (Excerpt from "The MathML Handbook" by Pavi Sandhu)
  2. SELF-Blog: SVG 2 - was lange währt ... vom 16.11.2016
  3. W3C: The elements of MathML-Core MathML Core Explainer
  4. SELF-Forum: Unterstützung Falkon vom 12.03.2023
  5. MDN: Fonts for MathML
  6. https://www.mediawiki.org/wiki/Extension:Math
  7. On: Bringing MathML back to Chromium (hackernews)