MathML-Textcontainer
Da Sie nun eine bessere Vorstellung von MathML haben, richten wir den Fokus auf Textcontainer (Variablen, Zahlen, Operatoren, ...), die als Bausteine von MathML-Formeln verwendet werden.
Unicode-Zeichen für Mathematik
Mathematische Formeln umfassen viele Sonderzeichen, zum Beispiel griechische Buchstaben (z.B. Δ), Fraktur-Buchstaben (z.B. 𝔄), doppelt gestrichene Buchstaben (z.B. ℂ), binäre Operatoren (z.B. ≠), Pfeile (z.B. ⇒), Integralsymbole (z.B. ∮), Summationssymbole (z.B. ∑), logische Symbole (z.B. ∀), Klammern (z.B. ⌊) und viele mehr. Der Wikipedia-Artikel Mathematical operators and symbols in Unicode bietet einen guten Überblick über die verwendeten Zeichen.
Da die meisten dieser Zeichen nicht Teil des Basis-Latin-Unicode-Blocks sind, wird empfohlen, die Zeichenkodierung Ihres Dokuments anzugeben und es mit entsprechenden Web-Fonts zu präsentieren. Hier ist eine grundlegende Vorlage zur Verwendung der UTF-8-Kodierung und der Latin Modern Math-Schriftart:
<!doctype html>
<html lang="en-US">
<head>
<meta charset="utf-8" />
<title>My page with math characters</title>
<link
rel="stylesheet"
href="https://fred-wang.github.io/MathFonts/LatinModern/mathfonts.css" />
</head>
<body>
<p>∀A∊𝔰𝔩(n,𝔽),TrA=0</p>
</body>
</html>
p {
font-family: "Latin Modern Math", math;
}
Ein wenig Semantik
Im Artikel Erste Schritte mit MathML haben wir festgestellt, dass der Text in MathML-Formeln in spezifische Containerelemente wie <mn>
oder <mo>
eingebettet ist. Allgemeiner gesagt muss jeder Text in MathML-Formeln in solchen Containerelementen enthalten sein, die als Token -Elemente bezeichnet werden. Darüber hinaus bietet MathML mehrere Token-Elemente, um unterschiedliche Bedeutungen des Textinhalts zu unterscheiden:
- Das
<mi>
-Element repräsentiert einen "Bezeichner", der ein symbolischer Name oder beliebiger Text sein könnte. Beispiele:<mi>x</mi>
(Variable),<mi>cos</mi>
(Funktionsname) und<mi>π</mi>
(symbolische Konstante). - Das
<mn>
-Element repräsentiert eine "numerische Literal" oder andere Daten, die als numerische Literal angezeigt werden sollen. Beispiele:<mn>2</mn>
(ganze Zahl),<mn>0.123</mn>
(Dezimalzahl) oder<mn>0xFFEF</mn>
(hexadezimaler Wert). - Das
<mo>
-Element repräsentiert einen Operator oder alles, was als Operator angezeigt werden soll. Zum Beispiel<mo>+</mo>
(binäre Operation),<mo>≤</mo>
(binäre Beziehung),<mo>∑</mo>
(Summationssymbol) oder<mo>[</mo>
(Klammer). - Das
<mtext>
-Element wird verwendet, um beliebigen Text darzustellen. Zum Beispiel kurze Wörter in Formeln wie<mtext>wenn<mtext>
oder<mtext>zuordnet</mtext>
.
An der Reihe: Erkennen von Token-Elementen
Unten sehen Sie ein komplexeres Beispiel, das besagt, dass der absolute Wert einer reellen Zahl gleich dieser Zahl ist, wenn und nur wenn sie nicht negativ ist. Wir möchten, dass Sie versuchen, die verschiedenen Token-Elemente zu identifizieren und zu verstehen, wofür sie verwendet werden. Jedes Mal, wenn Sie auf den entsprechenden Text klicken, wird er hervorgehoben und eine Bestätigungsmeldung angezeigt.
Lesen Sie abschließend den MathML-Quellcode, um zu überprüfen, ob dieser Ihren Erwartungen entspricht:
<math display="block">
<mrow>
<mrow>
<mo>|</mo>
<mi>x</mi>
<mo>|</mo>
</mrow>
<mo>=</mo>
<mi>x</mi>
</mrow>
<mtext> iff </mtext>
<mrow>
<mi>x</mi>
<mo>≥</mo>
<mn>0</mn>
</mrow>
</math>
Hinweis:
Es ist manchmal schwierig zu entscheiden, welches Token-Element für einen bestimmten Textinhalt verwendet werden soll. In der Praxis sollte die Auswahl des falschen Elements keine größeren Probleme verursachen, da alle Token-Elemente im Allgemeinen von Browserimplementierungen gleich gerendert werden (sowohl visuell als auch für unterstützende Technologien). Allerdings haben die <mi>
- und <mo>
-Elemente besondere Unterscheidungsmerkmale, deren Sie sich bewusst sein sollten. Diese werden in den folgenden Abschnitten erklärt.
Automatische Kursivschrift von <mi>
Eine typografische Konvention in der Mathematik ist die Verwendung von kursiven Buchstaben für Variablen. Um dies zu erleichtern, können <mi>
-Elemente mit einem einzelnen Zeichen automatisch kursiv dargestellt werden. Dies gilt für alle Buchstaben des lateinischen und griechischen Alphabets. Vergleichen Sie die Darstellung der beiden <mi>
-Elemente in der folgenden Formel:
<math>
<mi>sin</mi>
<mi>x</mi>
</math>
Hinweis: Diese Tabelle aus MathML Core bietet die vollständige Liste von Zeichen, die kursiv angezeigt werden, zusammen mit den entsprechenden kursiven Zeichen.
Rückgängigmachen der automatischen Kursivschrift von <mi>
Um diese standardmäßige kursive Transformation rückgängig zu machen, können Sie ein Attribut mathvariant="normal"
an das <mi>
-Element anhängen. Vergleichen Sie die Darstellung der Großgamma-Buchstaben in der folgenden Formel:
<math>
<mi>Γ</mi>
<mi mathvariant="normal">Γ</mi>
</math>
Hinweis: Obwohl Sie diese Transformation anwenden können, würden Sie normalerweise einfach die gewünschten Mathematical Alphanumeric Symbols verwenden.
Operator-Eigenschaften von <mo>
MathML enthält ein Operator-Wörterbuch, das die Standardeigenschaften von <mo>
-Elementen je nach ihrem Inhalt und der Position innerhalb ihres Containers (Präfix, Infix oder Postfix) definiert. Betrachten wir ein konkretes Beispiel:
<table>
<tr>
<td>Prefix plus</td>
<td>
<math>
<mo>+</mo>
<mi>i</mi>
</math>
</td>
</tr>
<tr>
<td>Infix plus</td>
<td>
<math>
<mi>j</mi>
<mo>+</mo>
<mi>i</mi>
</math>
</td>
</tr>
<tr>
<td>Prefix sum</td>
<td>
<math>
<mo>∑</mo>
<mi>i</mi>
</math>
</td>
</tr>
</table>
Dieses Beispiel sollte ähnlich dem Screenshot unten dargestellt werden. Beachten Sie den Abstand zwischen den <mi>i</mi>
-Elementen und ihrem vorangestellten <mo>
: kein Abstand für das Präfix-Plus, etwas Abstand für das Infix-Plus und etwas kleineren Abstand für das Präfix-Summationssymbol.
Operatoren haben viele andere Eigenschaften, die wir später noch ausführlicher sehen werden. Denken Sie vorerst daran, einen <mo>
-Container für Zeichen im Operator-Wörterbuch zu verwenden und Teilausdrücke ordnungsgemäß mit <mrow>
-Elementen zu gruppieren, um den MathML-Renderern zu helfen.
Finden Sie den Unterschied
Da Sie nun mit den Besonderheiten von <mi>
und <mo>
einigermaßen vertraut sind, möchten wir, dass Sie das <p>
-Element im Beispiel oben auf der Seite mit etwas tatsächlichem MathML umschreiben. Vergleichen Sie die visuelle Darstellung in Ihrem Browser und erklären Sie die Unterschiede zur rein textbasierten Version.
<!doctype html>
<html lang="en-US">
<head>
<meta charset="utf-8" />
<title>My page with math characters</title>
<link
rel="stylesheet"
href="https://fred-wang.github.io/MathFonts/LatinModern/mathfonts.css" />
</head>
<body>
<p class="text">∀A∊𝔰𝔩(n,𝔽),TrA=0</p>
<p>
<math>
<mo>∀</mo>
<mrow>
<mi>A</mi>
<mo>∊</mo>
<mrow>
<mi>𝔰𝔩</mi>
<mrow>
<mo>(</mo>
<mi>n</mi>
<mo>,</mo>
<mi>𝔽</mi>
<mo>)</mo>
</mrow>
</mrow>
</mrow>
<mo>,</mo>
<mrow>
<mrow>
<mi>Tr</mi>
<mi>A</mi>
</mrow>
<mo>=</mo>
<mn>0</mn>
</mrow>
</math>
</p>
<input id="showSolution" type="button" value="Show solution" />
<div id="solution"></div>
</body>
</html>
Hinweis: Ein offensichtlicher Unterschied ist, dass der Quellcode mit MathML viel umfangreicher geworden ist. Denken Sie daran, dass dieses Tutorial dazu dient, die Sprache zu lernen, aber in der Praxis wird MathML-Inhalt im Allgemeinen nicht manuell geschrieben. Weitere Informationen finden Sie auf der Seite MathML verfassen.
Erkennen von dehnbaren Operatoren
Das Operator-Wörterbuch definiert eine Standard-dehnbare Eigenschaft sowie die entsprechende Dehnachse für einige Operatoren. Ein Operator kann beispielsweise standardmäßig vertikal gedehnt werden, um die maximale Höhe der nicht dehnbaren Geschwister innerhalb seines <mrow>
-Containers abzudecken. Indem man eine frühere Übung modifiziert, kann man Operatoren vertikal dehnen. Können Sie sie finden?
Wie üblich sind Sie eingeladen, den Quellcode zu lesen, wenn Sie fertig sind:
<math display="block">
<mrow>
<mrow>
<mo>|</mo>
<mfrac>
<mn>1</mn>
<mi>x</mi>
</mfrac>
<mo>|</mo>
</mrow>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mrow>
<mo>|</mo>
<mi>x</mi>
<mo>|</mo>
</mrow>
</mfrac>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mi>x</mi>
</mfrac>
</mrow>
<mtext> iff </mtext>
<mrow>
<mi>x</mi>
<mo>≥</mo>
<mn>0</mn>
</mrow>
</math>
Warnung: Spezielle Mathe-Fonts sind im Allgemeinen erforderlich, um diese Dehnung zu ermöglichen. Das vorherige Beispiel basiert auf Web-Fonts.
Zusammenfassung
In diesem Artikel haben wir einige Token-Elemente kennengelernt, die als Textcontainer dienen, sowie deren unterschiedliche Semantiken, nämlich <mi>
(Bezeichner), <mn>
(Zahlen), <mo>
(Operatoren), <mtext>
(allgemeiner Text). Wir haben spezielle Unicode-Zeichen betrachtet, die häufig in mathematischen Formeln vorkommen, und einen Überblick über einige beobachtbare Verhaltensweisen der <mi>
- und <mo>
-Elemente gegeben. Im nächsten Artikel werden wir sehen, wie man Token-Elemente verwendet, um viel komplexere Ausdrücke wie Brüche und Wurzeln zu erstellen.