From 76b14470d8de2ed78e2d0a751727916a1b768269 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Wang?=
Date: Thu, 21 Jul 2022 08:21:54 +0200
Subject: [PATCH 01/20] Add MathML tutorial
An introduction to basic MathML constructions, using similar structure
as the lessons for HTML, CSS and JavaScript. This only introduces the
"first steps" module but more advanced topics may be added in the
future.
---
.../first_steps/fractions_and_roots/index.md | 318 ++++++++++
.../fractions_and_roots/mfrac-msqrt-mroot.png | Bin 0 -> 6957 bytes
.../first_steps/getting_started/index.md | 225 ++++++++
files/en-us/learn/mathml/first_steps/index.md | 53 ++
.../learn/mathml/first_steps/scripts/index.md | 544 ++++++++++++++++++
.../learn/mathml/first_steps/tables/index.md | 343 +++++++++++
.../first_steps/text_containers/index.md | 421 ++++++++++++++
.../text_containers/operator-spacing.png | Bin 0 -> 15626 bytes
.../index.md | 142 +++++
.../xelatex-output.png | Bin 0 -> 29027 bytes
files/en-us/learn/mathml/index.md | 47 ++
11 files changed, 2093 insertions(+)
create mode 100644 files/en-us/learn/mathml/first_steps/fractions_and_roots/index.md
create mode 100644 files/en-us/learn/mathml/first_steps/fractions_and_roots/mfrac-msqrt-mroot.png
create mode 100644 files/en-us/learn/mathml/first_steps/getting_started/index.md
create mode 100644 files/en-us/learn/mathml/first_steps/index.md
create mode 100644 files/en-us/learn/mathml/first_steps/scripts/index.md
create mode 100644 files/en-us/learn/mathml/first_steps/tables/index.md
create mode 100644 files/en-us/learn/mathml/first_steps/text_containers/index.md
create mode 100644 files/en-us/learn/mathml/first_steps/text_containers/operator-spacing.png
create mode 100644 files/en-us/learn/mathml/first_steps/three_famous_mathematical_formulas/index.md
create mode 100644 files/en-us/learn/mathml/first_steps/three_famous_mathematical_formulas/xelatex-output.png
create mode 100644 files/en-us/learn/mathml/index.md
diff --git a/files/en-us/learn/mathml/first_steps/fractions_and_roots/index.md b/files/en-us/learn/mathml/first_steps/fractions_and_roots/index.md
new file mode 100644
index 000000000000000..82b0bfef110dbb5
--- /dev/null
+++ b/files/en-us/learn/mathml/first_steps/fractions_and_roots/index.md
@@ -0,0 +1,318 @@
+---
+title: MathML fractions and roots
+slug: Learn/MathML/First_steps/Fractions_and_roots
+tags:
+ - Beginner
+ - MathML
+ - Landing
+---
+{{LearnSidebar}}{{PreviousMenuNext("Learn/MathML/First_steps/Text_containers", "Learn/MathML/First_steps/Scripts", "Learn/MathML/First_steps")}}
+
+Relying on text containers, this article describes how to build more complex
+MathML expressions by nesting fractions and roots.
+
+
+
+## Subtrees of ``, `` and ``
+
+In the [getting started with MathML](/en-US/docs/Learn/MathML/First_steps/Getting_started) article, we've already met the `` element to describe a fraction. Let's consider a basic example which adds new elements for roots (`` and ``):
+
+```html
+
+
+ child1
+ child2
+
+
+
+
+
+ child1
+ child2
+ ...
+ childN
+
+
+
+
+
+ child1
+ child2
+
+
+```
+
+Below is a screenshot of how it is rendered by a browser:
+* We already know that the `` element is rendered as a fraction: the first child (the numerator) and is drawn above the second child (the denominator) separated by a horizontal bar.
+* The `` is rendered as a square root: its children are laid out like an [``](/en-US/docs/Learn/MathML/First_steps/Getting_started#grouping_with_the_mrow_element), prefixed by a root symbol √ and completely covered by an overbar.
+* Finally, the `` element is rendered as an nth root: the first element is covered by the radical symbol while the second element is used as the degree of the root and rendered as a prefix superscript.
+
+![Screenshot of mfrac, msqrt, mroot](mfrac-msqrt-mroot.png)
+
+### Active learning: nesting different elements
+
+Here is a simple exercise to verify whether you understood the relation between a MathML subtree and its visual rendering. The document contains a MathML formula and you must check all subtrees corresponding to a subtree in that MathML formula. Once you are done, you can inspect the source of the MathML formula and verify if it matches your expectation.
+
+```html hidden
+
+
+
+
+ My page with math characters
+
+
+
+
+
+
+
+ 2
+
+
+ 4
+ 3
+
+
+ +
+
+ 5
+
+ 6
+ 7
+
+
+ +
+
+ 8
+ −
+ 9
+
+
+
+
+
+
+ An mfrac with an mroot as its first child and an msqrt as its second child.
+
+
+
+ An mroot with an mn as its first child and mfrac as its second child.
+
+
+
+ An msqrt containing an mfrac element.
+
+
+
+ An msqrt with one mn child.
+
+
+
+ An mroot with an mfrac as its first child and mn as its second child.
+
+
+
+ An msqrt with the following list of children: mn, mo, mn.
+
+
+
+ An mfrac with an msqrt as its first child and an mroot as its second child.
+
+
+
+ An mfrac with the following list of children: msqrt, mn, msqrt.
+
+
+
+ An mroot with one mn child.
+
+
+
+ An mfrac with two mn children.
+
+
+
+ An msqrt with five mn children.
+
+
+
+ An mroot with two mn children.
+
+
+
+
+
+
+
+
+
+```
+
+```css hidden
+math {
+ font-family: Latin Modern Math, STIX Two Math;
+ font-size: 200%;
+}
+math .highlight {
+ background: pink;
+}
+math [id] .highlight {
+ background: lightblue;
+}
+p {
+ padding: .5em;
+}
+```
+
+```js hidden
+const options = document.getElementById('options');
+const comment = document.getElementById('comment');
+const checkboxes = Array.from(options.getElementsByTagName("input"));
+const status = document.getElementById('status');
+function verifyOption(checkbox) {
+ let mathml = checkbox.dataset.highlight;
+ if (mathml)
+ mathml = document.getElementById(mathml);
+ if (checkbox.checked) {
+ comment.textContent = checkbox.dataset.comment;
+ if (mathml)
+ mathml.classList.add('highlight');
+ else
+ checkbox.checked = false;
+ } else {
+ comment.textContent = "";
+ if (mathml)
+ mathml.classList.remove('highlight');
+ }
+ let finished = true;
+ checkboxes.forEach(checkbox => {
+ if (!!checkbox.checked != !!checkbox.dataset.highlight)
+ finished = false;
+ });
+ status.textContent = finished ? "Congratulations, you checked all the correct answers!" : "";
+
+}
+checkboxes.forEach(checkbox => {
+ checkbox.addEventListener('change', () => { verifyOption(checkbox); });
+});
+```
+
+{{ EmbedLiveSample('Active_learning_nesting_different_elements', 700, 600, "", "") }}
+
+## Stretchy radical symbols
+
+As previously seen, the overbar of the `` and `` elements
+stretches horizontally to cover their content. But actually the root symbol √
+also stretches to be as tall as their content.
+
+```html
+
+
+
+
+ My page with stretchy radical symbols
+
+
+
+
+
+
+
+ 1
+ 2
+
+
+ 3
+
+
+
+
+```
+
+{{ EmbedLiveSample('Stretchy_radical_symbols', 700, 200, "", "") }}
+
+> **Warning:** Special [math fonts](/en-US/docs/Web/MathML/Fonts) are generally required to make that stretching possible, the previous example relies on [web fonts](/en-US/docs/Learn/CSS/Styling_text/Web_fonts).
+
+## Fractions without bar
+
+Some mathematical concepts are sometimes written using fraction-like notations
+such [binomial coefficients](https://en.wikipedia.org/wiki/Combination) or
+[Legendre symbols](https://en.wikipedia.org/wiki/Legendre_symbol). It is
+appropriate to use an `` element to markup such notations. For
+fraction-like notations that don't draw a horizontal bar, attach a
+linethickness="0"
attribute to the `` element:
+
+```html
+
+
+
+
+ My binomial coefficient
+
+
+
+
+
+ (
+
+ 3
+ 2
+
+ )
+
+ =
+ 6
+ ≠
+
+ 3
+ 2
+
+
+
+
+```
+
+{{ EmbedLiveSample('Fraction_without_bar', 700, 200, "", "") }}
+
+> **Note:** Although the `linethickness` attribute can be used to specify an arbitrary thickness, it is better to keep the default value, which is calculated from parameters specified in the math font.
+
+## Summary
+
+In this lesson, we've seen how to build fractions and roots using the
+``, `` and `` elements. We noticed some special feature of
+these elements, namely the fraction and radical symbol. We've seen how to use the `linethickness` attribute to draw fractions without bars. In the next article, we will continue with basic math notations and consider [scripts](/en-US/docs/Learn/MathML/First_steps/Scripts).
+
+{{LearnSidebar}}{{PreviousMenuNext("Learn/MathML/First_steps/Text_containers", "Learn/MathML/First_steps/Scripts", "Learn/MathML/First_steps")}}
+
+## See also
+
+* [The `` element](/en-US/docs/Web/MathML/Element/mfrac)
+* [The `` element](/en-US/docs/Web/MathML/Element/msqrt)
+* [The `` element](/en-US/docs/Web/MathML/Element/mroot)
diff --git a/files/en-us/learn/mathml/first_steps/fractions_and_roots/mfrac-msqrt-mroot.png b/files/en-us/learn/mathml/first_steps/fractions_and_roots/mfrac-msqrt-mroot.png
new file mode 100644
index 0000000000000000000000000000000000000000..71b083515240e282fb0b017e0c65875d2de0b711
GIT binary patch
literal 6957
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
+
+
+ Prerequisites:
+
+ Basic computer literacy,
+ basic software installed , basic knowledge of
+ working with files , and HTML basics (study
+ Introduction to HTML .)
+
+
+
+ Objective:
+
+ To understand the basic syntax of MathML and how to integrate it in
+ HTML pages.
+
+
+
+
+
+## Inserting formulas in HTML via the `` element
+
+MathML uses the same syntax as HTML to represent a tree of elements and
+attributes. In particular, each mathematical formula is represented by an
+element `` which can be placed inside an HTML page. In the following
+document, it is inside a paragraph of text:
+
+```html
+
+
+
+ My first math page
+
+
+
+ The fraction
+
+
+ 1
+ 3
+
+
+ is not a decimal number.
+
+
+
+```
+
+The `` element specifies a fraction with a numerator (its first child)
+and a denominator (its second child). This is how it renders in your browser:
+
+{{ EmbedLiveSample('Inserting_formulas_in_HTML', 700, 100, "", "") }}
+
+> **Warning:** If you just see "1 3" instead of a fraction, then your browser may not support MathML. Check out the [browser compatibility table](/en-US/docs/Web/MathML/Element/math#browser_compatibility) for further details.
+
+### Inline and display modes
+
+Note that in the previous example, the formula is on the same line as the text
+of the paragraph, this is called *inline* mode. However, it is quite common for
+large mathematical formulas to use *display* mode: they are instead centered on
+their own line as shown below. To achieve that, one only need to attach a
+`display="block"` attribute on the `` element.
+
+```html hidden
+
+
+
+ My first math page
+
+
+
+ The fraction
+
+
+ 1
+ 3
+
+
+ is not a decimal number.
+
+
+
+```
+
+{{ EmbedLiveSample('Inline_and_display_modes', 700, 100, "", "") }}
+
+You may also notice some subtle change in the appearance: the text and vertical
+spacing of the fraction becomes a bit bigger.
+In *inline* mode, the height is minimized to avoid disturbing the flow
+of the surrounding text. In *display* mode, priority is instead put on
+legibility of the mathematical formula.
+
+> **Note:** This corresponds to the LaTeX's concept of *inline* formulas
+> (delimited by dollar signs `$...$`) and *display* formulas (delimited by
+> `\[...\]`).
+
+## Grouping with the `` element
+
+The `` element can actually contain an arbitrary number of children and
+will essentially render them in a row. For instance, the simple formula
+"1 + 2 + 3" would be be encoded like this in MathML:
+
+```html
+
+ 1
+ +
+ 2
+ +
+ 3
+
+```
+
+The `` element is a generic container that performs similar layout but
+can be placed anywhere in the MathML subtree. It is helpful to group several
+elements together. For instance, the numerator of the following fraction (its
+first child) is "one plus two".
+
+```html
+
+
+
+ 1
+ +
+ 2
+
+ 3
+
+
+```
+
+### Active learning: nested expressions
+
+As an exercise, figure out how to write the following expressions using
+only the MathML elements we've seen so far. If you are stuck or want to verify
+the solution, check the source code of the example.
+
+```html hidden
+
+"one half" plus "two third":
+
+
+
+ 1
+ 2
+
+ +
+
+ 2
+ 3
+
+
+
+"one plus two plus three" over "four plus five":
+
+
+
+ 1
+ +
+ 2
+ +
+ 3
+
+
+ 4
+ +
+ 5
+
+
+
+
+"one quarter" over "two plus three":
+
+
+
+ 1
+ 4
+
+
+ 2
+ +
+ 3
+
+
+
+
+
+```
+
+{{ EmbedLiveSample('Active_learning_nested_expressions', 700, 200, "", "") }}
+
+## Summary
+
+In this article, we have taken a look at how to use the `` element to insert a mathematical formula inside a HTML document. We have learned about the difference between *inline* and *display* formulas and how to specify them via the `display` attribute of the `` element.
+In addition, we stumbled upon a couple of other MathML elements: `` for fractions, `` for grouping and finally a few text elements. We will analyze these [text containers](/en-US/docs/Learn/MathML/First_steps/Text_containers) further in the next article.
+
+{{LearnSidebar}}{{NextMenu("Learn/MathML/First_steps/Text_containers", "Learn/MathML/First_steps")}}
+
+## See also
+
+* [Using MathML](/en-US/docs/Web/MathML/Authoring#using_mathml)
+* [The `` element](/en-US/docs/Web/MathML/Element/math)
+* [The `` element](/en-US/docs/Web/MathML/Element/mfrac)
+* [The `` element](/en-US/docs/Web/MathML/Element/mrow)
+* [The `math-depth` property](/en-US/docs/Web/CSS/math-depth)
diff --git a/files/en-us/learn/mathml/first_steps/index.md b/files/en-us/learn/mathml/first_steps/index.md
new file mode 100644
index 000000000000000..a8f0f76261a5912
--- /dev/null
+++ b/files/en-us/learn/mathml/first_steps/index.md
@@ -0,0 +1,53 @@
+---
+title: MathML first steps overview
+slug: Learn/MathML/First_steps
+tags:
+ - Beginner
+ - MathML
+ - Landing
+ - first steps
+---
+{{LearnSidebar}}
+
+MathML is the markup language used to write mathematical formulas in Web pages. This module provides a gentle beginning to your path towards MathML mastery with the basics of how it works, what the syntax looks like, and how you can start using it inside HTML.
+
+> **Callout:**
+>
+> #### Looking to become a front-end web developer?
+>
+> We have put together a course that includes all the essential information you need to
+> work towards your goal.
+>
+> [**Get started**](/en-US/docs/Learn/Front-end_web_developer)
+
+## Prerequisites
+
+Before starting this module, you should have:
+
+1. Basic familiarity with using computers and using the Web passively (i.e. looking at it, consuming the content.)
+2. A basic work environment set up, as detailed in [Installing basic software](/en-US/docs/Learn/Getting_started_with_the_web/Installing_basic_software), and an understanding of how to create and manage files, as detailed in [Dealing with files](/en-US/docs/Learn/Getting_started_with_the_web/Dealing_with_files).
+3. Basic familiarity with HTML, as described in [Introduction to HTML](/en-US/docs/Learn/HTML/Introduction_to_HTML).
+
+> **Note:** If you are working on a computer/tablet/other device where you don't have the ability to create your own files, you could try out (most of) the code examples in an online coding program such as [JSBin](https://jsbin.com/) or [Glitch](https://glitch.com/).
+
+## Guides
+
+This module contains the following articles, which will take you through all the basic theory of MathML, and provide opportunities for you to test out some skills.
+
+- [Getting started with MathML](/en-US/docs/Learn/MathML/First_steps/Getting_started)
+ - : In this article, we will take a simple HTML document and view how to add MathML formulas into it, introducing a few elements along the way.
+- [Text containers](/en-US/docs/Learn/MathML/First_steps/Text_containers)
+ - : Now that you get a better idea of MathML, we move focus on text containers (variables, numbers, operators, ...) which are used as building blocks of MathML formulas.
+- [Fractions and roots](/en-US/docs/Learn/MathML/First_steps/Fractions_and_roots)
+ - : Relying on text containers, this article describes how to build more complex MathML expressions by nesting fractions and roots.
+- [Scripts](/en-US/docs/Learn/MathML/First_steps/Scripts)
+ - : We continue the review of basic math notations and focuses on building MathML elements with scripts.
+- [Tables](/en-US/docs/Learn/MathML/First_steps/Tables)
+ - : Once all basic math notations are known, it remains to consider tabular layout which can be used for matrix-like expressions and other advanced math layout.
+
+## Assessments
+
+The following assessment will test your understanding of the MathML basics covered in the guides above.
+
+- [Three famous mathematical formulas](/en-US/docs/Learn/MathML/First_steps/Three_famous_mathematical_formulas)
+ - : With the things you have learned in the last few articles, you should already be able to write relatively sophisticated MathML formulas. This assessment gives you a chance to do that.
diff --git a/files/en-us/learn/mathml/first_steps/scripts/index.md b/files/en-us/learn/mathml/first_steps/scripts/index.md
new file mode 100644
index 000000000000000..ee525feb25294d8
--- /dev/null
+++ b/files/en-us/learn/mathml/first_steps/scripts/index.md
@@ -0,0 +1,544 @@
+---
+title: MathML scripted elements
+slug: Learn/MathML/First_steps/Scripts
+tags:
+ - Beginner
+ - MathML
+ - Landing
+---
+{{LearnSidebar}}{{PreviousMenuNext("Learn/MathML/First_steps/Fractions_and_roots", "Learn/MathML/First_steps/Tables", "Learn/MathML/First_steps")}}
+
+We continue the review of basic math notations and focuses on building MathML elements with scripts.
+
+
+
+## Subscripts and superscripts
+
+Similarly to what we saw in the [previous article](/en-US/docs/Learn/MathML/First_steps/Fractions_and_roots), the ``, `` and `` have a special structure expecting exactly two elements (for ``, ``) or three elements (for ``):
+
+```html
+msub:
+
+
+ child1
+ child2
+
+
+
msup:
+
+
+ child1
+ child2
+
+
+
+msubsup:
+
+
+ child1
+ child2
+ child3
+
+
+
+```
+
+Below is the rendering of the above example in your browser. You should notice
+that:
+
+* The second child of the `` element is attached as a subscript of
+ its first child.
+* The second child of the `` element is attached as a superscript of
+ its first child.
+* The second and third children of the `` element are respectively
+ attached as a subscript and superscript of its first child.
+* The text inside scripts is scaled down.
+
+{{ EmbedLiveSample('Subtrees_of_msub_msup_msubsup', 700, 200, "", "") }}
+
+> **Note:** The MathML elements `` and `` are different from the
+> HTML elements [``](/en-US/docs/Web/HTML/Element/sup) and
+> [``](/en-US/docs/Web/HTML/Element/sup). They allow to use an arbitrary
+> MathML subtree as scripts, not just text.
+
+## Underscripts and overscripts
+
+The ``, `` and `` elements are very similar except
+that they are used to attach underscripts and overscripts. Instead of giving
+details, we will let you figure out their definitions yourself with the
+following exercise.
+
+### Active learning: Recognize under/over scripts
+
+In the following example,
+try to guess the names of the mystery elements (written as question
+marks) and click the button to reveal the solution:
+
+```html hidden
+<???????? >
element
+ with exactly two children (child1, child2):
+
+
+ child1
+ child2
+
+
+
+<???????? >
element
+ with exactly three children (child1, child2 and child3):
+
+
+ child1
+ child2
+ child3
+
+
+
+<???????? >
element
+ with exactly two children (child1, child2):
+
+
+ child1
+ child2
+
+
+
+
+
+```
+
+```css hidden
+p {
+ padding: .5em;
+}
+```
+
+```js hidden
+document.getElementById("showSolution").addEventListener("click", () => {
+ const maths = Array.from(document.getElementsByTagName("math"));
+ Array.from(document.getElementsByTagName("span")).forEach( (span, index) => {
+ span.textContent = maths[index].firstElementChild.tagName;
+ });
+});
+```
+
+{{ EmbedLiveSample('Subtrees_of_munder_mover_munderover', 700, 400, "", "") }}
+
+### Active learning: Recognize scripted elements
+
+The following MathML formula contains a more complex expression, nesting
+fractions, roots and scripts. Try to guess the elements laid out with scripted
+elements ``, ``, ``, ``, ``, ``.
+Each time you click such an element, it is highlighted and a confirmation
+message is displayed. Finally, read the MathML source to verify whether that
+corresponds to your expectation.
+
+```html hidden
+
+
+
+
+ My page with scripted elements
+
+
+
+
+
+
+
+ β
+ ⎵
+
+
+ 3
+
+ +
+
+ |
+
+ α
+ →
+
+ |
+
+
+ s
+ 3
+
+
+ −
+
+
+ ∑
+
+ i
+ =
+ 1
+
+ n
+
+
+
+
+ a
+ i
+
+ −
+
+ K
+ 0
+ i
+
+
+
+
+
+
+
+
+
+```
+
+```css hidden
+.highlight {
+ color: red;
+}
+math {
+ font-size: 200%;
+}
+```
+
+```js hidden
+ const scriptedElements = Array.from(document.querySelectorAll('msub, msup, msubsup, munder, mover, munderover'));
+ const outputDiv = document.getElementById("output");
+ function clearHighlight() {
+ scriptedElements.forEach(scripted => {
+ scripted.classList.remove('highlight');
+ });
+ }
+ scriptedElements.forEach(scripted => {
+ scripted.addEventListener('click', () => {
+ clearHighlight();
+ scripted.classList.add('highlight');
+ outputDiv.insertAdjacentHTML('beforeend',
+ `You clicked an <${scripted.tagName}>
element.
`);
+ });
+ });
+ document.getElementById("clearOutput").addEventListener("click", () => {
+ clearHighlight();
+ outputDiv.innerHTML = "";
+ });
+```
+
+{{ EmbedLiveSample('Active_learning_recognize_scripted_elements', 700, 400, "", "") }}
+
+## More operator properties
+
+We have previously seen some [properties of the `` element](/en-US/docs/Learn/MathML/First_steps/Text_containers#operator_properties_of_mo)
+namely stretching in the vertical direction and spacing. Now that scripted
+elements are available, we can extend that list. We will do that by tweaking
+our [previous example](#active_learning_recognize_scripted_elements).
+
+### Stretching in horizontal direction
+
+Let's first perform the substitutions
+
+ β
+ ≔
+
+
+ z
+ 1
+
+ +
+
+ z
+ 2
+
+
+
+and
+
+ α
+ ≔
+
+
+ v
+ 1
+
+ +
+
+ v
+ 2
+
+
+ :
+
+```html hidden
+
+
+
+
+ My page with horizontal stretchy operators
+
+
+
+
+
+
+
+
+
+ z
+ 1
+
+ +
+
+ z
+ 2
+
+
+ ⎵
+
+
+ 3
+
+ +
+
+ |
+
+
+
+ v
+ 1
+
+ +
+
+ v
+ 2
+
+
+ →
+
+ |
+
+
+ s
+ 3
+
+
+ −
+
+
+ ∑
+
+ i
+ =
+ 1
+
+ n
+
+
+
+
+ a
+ i
+
+ −
+
+ K
+ 0
+ i
+
+
+
+
+
+
+
+```
+
+```css hidden
+.highlight {
+ color: red;
+}
+math {
+ font-size: 200%;
+}
+```
+
+{{ EmbedLiveSample('Stretching_in_horizontal_direction', 700, 200, "", "") }}
+
+We now realize that the bottom bracket "⎵" and the rightward arrow "→"
+stretch horizontally to cover the width of the substitued values. Recall that
+[some vertical operators can stretch](/en-US/docs/Learn/MathML/First_steps/Text_containers#active_learning_stretchy_operators) to cover the height of
+non-stretchy siblings inside an ``.
+Similarly some horizontal operators can stretch
+to cover the width of non-stretchy siblings in an ``, `` or
+`` element.
+
+> **Note:** Stretching can happen for any child of the
+> ``, `` or `` element, not just the underscript
+> or overscript.
+
+### Large operator and limits
+
+So far our example has actually been rendered in [*display* mode](/en-US/docs/Learn/MathML/First_steps/Getting_started#inline_and_display_modes). Let's detach the
+`display="block"` attribute from the `` element to show up some
+interesting changes:
+
+```html hidden
+
+
+
+
+ My page with moved limits and small largeop
+
+
+
+
+
+
+
+
+
+ z
+ 1
+
+ +
+
+ z
+ 2
+
+
+ ⎵
+
+
+ 3
+
+ +
+
+ |
+
+
+
+ v
+ 1
+
+ +
+
+ v
+ 2
+
+
+ →
+
+ |
+
+
+ s
+ 3
+
+
+ −
+
+
+ ∑
+
+ i
+ =
+ 1
+
+ n
+
+
+
+
+ a
+ i
+
+ −
+
+ K
+ 0
+ i
+
+
+
+
+
+
+
+```
+
+```css hidden
+.highlight {
+ color: red;
+}
+math {
+ font-size: 200%;
+}
+```
+
+{{ EmbedLiveSample('Large_operator_and_limits', 700, 200, "", "") }}
+
+As expected, the formula is no longer centered and the rendering is modified to
+minimized the height. Focusing on the summation symbol, one can notice that
+the sigma is drawn smaller and that the scripts of the `` element
+are now attached as a subscript and a superscript! This is due to two
+properties of the "∑" operator:
+
+* *largeop*: The operator is drawn with a bigger glyph in *display* mode.
+* *movablelimits*: The underscripts and overscripts attached to the
+ operator are respectively rendered as subscripts and superscripts in
+ *inline* mode.
+
+> **Note:** The *largeop* property is actually unrelated to scripts, even though
+> operators having this property are typically scripted. The *movablelimits*
+> property is taken into account for `` and `` elements too.
+
+## Summary
+
+In this article, we've finished reviewing basic layout introducing elements
+``, ``, ``, ``, ``, `` for
+subscripts, superscripts, underscripts and overscripts. Using these elements,
+we were able to briefly introduce new properties of the `` element.
+In the next article, we
+will continue focus on [tabular layout](/en-US/docs/Learn/MathML/First_steps/Tables).
+
+{{LearnSidebar}}{{PreviousMenuNext("Learn/MathML/First_steps/Fractions_and_roots", "Learn/MathML/First_steps/Tables", "Learn/MathML/First_steps")}}
+
+## See also
+
+* [The `` element](/en-US/docs/Web/MathML/Element/msub)
+* [The `` element](/en-US/docs/Web/MathML/Element/msup)
+* [The `` element](/en-US/docs/Web/MathML/Element/msubsup)
+* [The `` element](/en-US/docs/Web/MathML/Element/munder)
+* [The `` element](/en-US/docs/Web/MathML/Element/mover)
+* [The `` element](/en-US/docs/Web/MathML/Element/munderover)
diff --git a/files/en-us/learn/mathml/first_steps/tables/index.md b/files/en-us/learn/mathml/first_steps/tables/index.md
new file mode 100644
index 000000000000000..bc31d4ddbe34df3
--- /dev/null
+++ b/files/en-us/learn/mathml/first_steps/tables/index.md
@@ -0,0 +1,343 @@
+---
+title: MathML tables
+slug: Learn/MathML/First_steps/Tables
+tags:
+ - Beginner
+ - MathML
+ - Landing
+---
+{{LearnSidebar}}{{PreviousMenuNext("Learn/MathML/First_steps/Scripts", "Learn/MathML/First_steps/Three_famous_mathematical_formulas", "Learn/MathML/First_steps")}}
+
+Once all basic math notations are known, it remains to consider tabular layout which can be used for matrix-like expressions and other advanced math layout.
+
+
+
+## MathML tabular elements
+
+The MathML tabular elements are similar to the ones for [HTML tables](/en-US/docs/Learn/HTML/Tables): the `` element represents a table, the
+`` element represents a row and the `` element represents a cell.
+An `` table can be inserted anywhere in a MathML formula. The ``
+cell can contain any number of MathML children and will lay them out
+as an `` container.
+
+Tables are typically used for matrix-like expressions (including vectors).
+Here is a basic example taken from the [article about the CSS
+`matrix()` function](/en-US/docs/Web/CSS/transform-function/matrix):
+
+```html
+
+
+
+
+ My first matrix
+
+
+
+
+
+ (
+
+
+
+ a
+
+
+ c
+
+
+ 0
+
+
+
+ t
+ x
+
+
+
+
+
+ b
+
+
+ d
+
+
+ 0
+
+
+
+ t
+ y
+
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 1
+
+
+ 0
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 1
+
+
+
+ )
+
+
+
+
+```
+
+{{ EmbedLiveSample('MathML_tabular_elements', 700, 200, "", "") }}
+
+## Allowing cells to span multiple rows and columns
+
+This is again similar to [HTML's article](/en-US/docs/Learn/HTML/Tables/Basics#allowing_cells_to_span_multiple_rows_and_columns). The `` element accepts
+the `columnspan` and `rowspan` attributes to indicate that the cell spans
+multiples rows and columns. Below the inner matrix spans two columns of
+the outer matrix:
+
+
+```html hidden
+
+
+
+
+ My matrix with columnspan
+
+
+
+
+
+ (
+
+
+
+
+ (
+
+
+
+ a
+
+
+ c
+
+
+
+
+ b
+
+
+ d
+
+
+
+ )
+
+
+
+ 0
+
+
+ T
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 1
+
+
+ 0
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 1
+
+
+
+ )
+
+
+
+
+```
+
+{{ EmbedLiveSample('allowing_cells_to_span_multiple_rows_and_columns', 700, 200, "", "") }}
+
+> **Note:** For historical reason, the MathML attribute for column spaning is
+> called `columnspan` not `colspan`.
+
+## Usage for advanced layout
+
+Besides representing matrix-like objects, MathML tables are sometimes used for
+advanced layout inside mathematical formulas,
+for example in [Wikipedia's definition of
+Legendre symbol](https://en.wikipedia.org/wiki/Legendre_symbol). Here, the
+different cases are written on three different rows while the values and
+conditions are placed on two different columns.
+
+```html hidden
+
+
+
+
+ My first matrix
+
+
+
+
+
+
+ (
+
+ a
+ b
+
+ )
+
+ =
+
+ {
+
+
+
+ 1
+
+
+ if
+ a
+ is a quadratic residue modulo
+ p
+ and
+ a
+ is not a multiple of
+ p
+ ;
+
+
+
+
+ −
+ 1
+
+
+ if
+ a
+ is a non-quadratic residue modulo
+ p
+ ;
+
+
+
+
+ 0
+
+
+ if
+ a
+ is a multiple of
+ p
+ .
+
+
+
+
+
+
+
+
+```
+
+{{ EmbedLiveSample('Usage_for_advanced_layout', 700, 200, "", "") }}
+
+> **Warning:** The [`` article](/en-US/docs/Web/MathML/Element/mtable)
+> provides more advanced layout options via special attributes such as
+> alignment or spacing. This is inherited from the original design of MathML,
+> that was supposed to work in
+> engines that are not CSS-aware. However, these attributes may not be
+> implemented in all browsers. In the future, it is likely that usages of
+> `` for layout-only purpose (i.e. not actual matrix-like objects)
+> can be replaced with CSS-based alternatives.
+
+## Summary
+
+In this article, we've reviewed the
+``, `` and `` elements which are the equivalent of HTML
+elements for tables. We have seen how to use them for representing matrix-like
+objects and how it is sometimes used for advanced layout.
+
+You've nearly finished this module — we only have one more thing to do. In the [three famous mathematical formulas assessment](/en-US/docs/Learn/MathML/First_steps/Three_famous_mathematical_formulas) you'll use your new knowledge to rewrite a small mathematical article using HTML and MathML.
+
+{{LearnSidebar}}{{PreviousMenuNext("Learn/MathML/First_steps/Scripts", "Learn/MathML/First_steps/Three_famous_mathematical_formulas", "Learn/MathML/First_steps")}}
+
+## See also
+
+* [Learning about HTML tables](/en-US/docs/Learn/HTML/Tables)
+* [The `` element](/en-US/docs/Web/MathML/Element/mtable)
+* [The `` element](/en-US/docs/Web/MathML/Element/mtr)
+* [The `` element](/en-US/docs/Web/MathML/Element/mtd)
diff --git a/files/en-us/learn/mathml/first_steps/text_containers/index.md b/files/en-us/learn/mathml/first_steps/text_containers/index.md
new file mode 100644
index 000000000000000..1497143279d2d4c
--- /dev/null
+++ b/files/en-us/learn/mathml/first_steps/text_containers/index.md
@@ -0,0 +1,421 @@
+---
+title: MathML Text Containers
+slug: Learn/MathML/First_steps/Text_containers
+tags:
+ - Beginner
+ - MathML
+ - Landing
+---
+{{LearnSidebar}}{{PreviousMenuNext("Learn/MathML/First_steps/Getting_started", "Learn/MathML/First_steps/Fractions_and_roots", "Learn/MathML/First_steps")}}
+
+Now that you get a better idea of MathML, we move focus on text containers (variables, numbers, operators, ...) which are used as building blocks of MathML formulas.
+
+
+
+## Unicode characters for mathematics
+
+Mathematical formulas involve many special characters, for example greek letters (e.g. Δ), fraktur letters (e.g. 𝔄), double-struck letter (e.g. ℂ), binary operators (e.g. ≠), arrows (e.g. ⇒), integral symbols (e.g. ∮), summation symbols (e.g. ∑), logical symbols (e.g. ∀), fences (e.g. ⌊) and many more. Wikipedia's article [Mathematical operators and symbols in Unicode](https://en.wikipedia.org/wiki/Mathematical_operators_and_symbols_in_Unicode) provides a good overview of the characters used.
+
+Since most of these characters are not part of Basic Latin Unicode block, it is recommended to specify your [document's character encoding](/en-US/docs/Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML#specifying_your_documents_character_encoding) and to serve it with appropriate [web fonts](/en-US/docs/Learn/CSS/Styling_text/Web_fonts). Here is a basic template to use UTF-8 encoding and the [Latin Modern Math](/en-US/docs/Web/MathML/Fonts#fonts_with_a_math_table) font:
+
+```html
+
+
+
+
+ My page with math characters
+
+
+
+ ∀A∊𝔰𝔩(n,𝔽),TrA=0
+
+
+```
+
+{{ EmbedLiveSample('Unicode_characters_for_mathematics', 700, 100, "", "") }}
+
+## A bit of semantics...
+
+We noticed in the [getting started with MathML](/en-US/docs/Learn/MathML/First_steps/Getting_started) article that the text in MathML formulas are wrapped in specific container elements such as the `` or ``. More generally, every text in MathML formulas must be included inside such container elements, called *token* elements. In addition, MathML provides multiple token elements in order to distinguish different meanings of the text content:
+
+* The `` element, which represents a symbolic name or arbitrary text that should be rendered as an identifier. Examples: `x ` (variable), `cos ` (function name) and `π ` (symbolic constant).
+* The `` element represents a "numeric literal" or other data that should be rendered as a numeric literal. Examples: `2 ` (integer), `0.123 ` (decimal number) or `0xFFEF ` (hexadecimal value).
+* The `` element represents an operator or anything that should be rendered as an operator. For example `+ ` (binary operation), `≤ ` (binary relation), `∑ ` (summation symbol) or `[ ` (fence).
+* The `` element is used to represent arbitrary text. For example short words in formulas such as `if` or `maps to `.
+
+### Active learning: recognize token elements
+
+Below is a more complex example, which says that the absolute value of a real
+number is equal to that number if and only if it is nonnegative. Spot the
+different token elements and what they are used for.
+Each time you click the corresponding text, it is highlighted and a confirmation
+message is displayed. Finally, read the MathML source to verify whether that
+corresponds to your expectation.
+
+```html hidden
+
+
+
+
+ My page with math characters
+
+
+
+
+
+
+ |
+ x
+ |
+
+ =
+ x
+
+ iff
+
+ x
+ ≥
+ 0
+
+
+
+
+
+
+```
+
+
+```css hidden
+.highlight {
+ color: red;
+}
+math {
+ font-size: 200%;
+}
+```
+
+
+```js hidden
+ const tokenElements = Array.from(document.querySelectorAll('mi, mo, mn, mtext'));
+ const outputDiv = document.getElementById("output");
+ function clearHighlight() {
+ tokenElements.forEach(token => {
+ token.classList.remove('highlight');
+ });
+ }
+ tokenElements.forEach(token => {
+ token.addEventListener('click', () => {
+ clearHighlight();
+ token.classList.add('highlight');
+ outputDiv.insertAdjacentHTML('beforeend',
+ `You clicked an <${token.tagName}>
element.
`);
+ });
+ });
+ document.getElementById("clearOutput").addEventListener("click", () => {
+ clearHighlight();
+ outputDiv.innerHTML = "";
+ });
+```
+
+{{ EmbedLiveSample('Active_learning_recognize_token_elements', 700, 400, "", "") }}
+
+
+> **Note:** It is sometimes difficult to decide the token element to use for
+> a given text content. In practice, choosing the wrong element should not cause
+> major issues because all token elements are generally
+> rendered the same by browser implementations (for visual display and for
+> assistive technologies). However, the `` and `` elements have special
+> distinguishing features that one should be aware of. They are explained
+> in the following sections.
+
+## Automatic italicization of ``
+
+One typographic convention in mathematics is to use italic letters for variables.
+In order to help with that, `` elements with a single character may be
+automatically rendered as italic. This is the case for all the letters from the
+latin and greek alphabets. Compare the rendering of the two ``
+elements in the following formula:
+
+```html
+
+ sin
+ x
+
+```
+
+> **Note:** [This table from MathML Core](https://w3c.github.io/mathml-core/#italic-mappings)
+> provide the exhaustive list of characters that are subject to italicization,
+> together with the corresponding italic characters.
+
+It is sometimes needed to revert this default italic transformation. For that purpose, just attach a `mathvariant="normal"` attribute on the `` element.
+Compare the rendering of the uppercase gamma letters in the following formula:
+
+```html
+
+ Γ
+ Γ
+
+```
+
+> **Note:** Although the [`mathvariant`](/en-US/docs/Web/MathML/Global_attributes/mathvariant) provides other values to perform such transformations, it is recommended to just pick the desired [Mathematical Alphanumeric Symbols](https://en.wikipedia.org/wiki/Mathematical_Alphanumeric_Symbols) when possible.
+
+## Operator properties of ``
+
+MathML contains an [operator dictionary](https://w3c.github.io/mathml-core/#operator-dictionary-human) that defines default properties of `` elements depending on their content and the position within its container (prefix, infix or postfix). Let's consider a concrete example:
+
+```html
+
+
+ Prefix plus
+
+
+ +
+ i
+
+
+
+
+ Infix plus
+
+
+ j
+ +
+ i
+
+
+
+
+ Prefix sum
+
+
+ ∑
+ i
+
+
+
+
+```
+
+This example should render similarly to the screenshot below. Observe the spacing between the `i ` elements and its preceding ``: no spacing for the prefix plus, some spacing for the infix plus and some smaller spacing for the prefix summation symbol.
+
+![Screenshot of the MathML formula with different operator spacing](operator-spacing.png)
+
+Operators have many other properties that we will see in more details later. For now, remember to use an `` container for characters in the operator dictionary and to properly group subexpressions with `` elements in order to help MathML renderers to provide a good rendering.
+
+### Active learning: spot the difference
+
+Now that you are a bit familiar with special features of `` and ``,
+let's rewrite the `` element in the
+[example at the top of the page](#unicode_characters_for_mathematics) with some
+actual MathML. Compare the visual rendering in your browser and explain
+the differences with the text-only version.
+
+```html
+
+
+
+
+ My page with math characters
+
+
+
+ ∀A∊𝔰𝔩(n,𝔽),TrA=0
+
+
+ ∀
+
+ A
+ ∊
+
+ 𝔰𝔩
+
+ (
+ n
+ ,
+ 𝔽
+ )
+
+
+
+ ,
+
+
+ Tr
+ A
+
+ =
+ 0
+
+
+
+
+
+
+
+```
+
+```css hidden
+div {
+ padding: .5em;
+}
+```
+
+```js hidden
+document.getElementById('showSolution').addEventListener('click', () => {
+ document.getElementById('solution').insertAdjacentHTML(
+ "beforeEnd",
+ `
+ The <mi>
elements containing the "A" and "n" variables are rendered in italic . However, the <mi>
elements with multiple characters "𝔰𝔩" or whose character is "𝔽" are still rendered upright.
+ Spacing is automatically added around the <mo>
elements whose text is "∀", "∊", "=" or a comma . However, some of them have no spacing added before while the parentheses still have no spacing around them.
+ `
+ );
+}, {once: true});
+```
+
+{{ EmbedLiveSample('active_learning_spot_the_difference', 700, 500, "", "") }}
+
+> **Note:** An obvious difference is that the source code became much more verbose with MathML. Recall that this tutorial is about learning the language but in practice MathML content is generally not written manually. See the [Authoring MathML](/en-US/docs/Web/MathML/Authoring) page for more information.
+
+### Active learning: stretchy operators
+
+The operator dictionary defines a default *stretchy* property as well as
+corresponding *stretch axis* for some operators. For example, an operator
+can stretch vertically by default to cover the maximum height of non-stretchy
+siblings within its `` container. By tweaking a bit the
+[previous exercise](#active_learning_recognize_token_elements), one can
+make operators stretch vertically. Can you find them? As usual, you are invited
+to read the source code when you are done.
+
+```html hidden
+
+
+
+
+ My page with stretchy operators
+
+
+
+
+
+
+ |
+
+ 1
+ x
+
+ |
+
+ =
+
+ 1
+
+ |
+ x
+ |
+
+
+ =
+
+ 1
+ x
+
+
+ iff
+
+ x
+ ≥
+ 0
+
+
+
+
+
+
+```
+
+
+```css hidden
+.highlight {
+ color: red;
+}
+math {
+ font-size: 200%;
+}
+```
+
+
+```js hidden
+ const tokenElements = Array.from(document.querySelectorAll('mi, mo, mn, mtext'));
+ const stretchyMoElements = Array.from(document.getElementsByTagName("mo")).slice(0, 2);
+ const outputDiv = document.getElementById("output");
+ function clearHighlight() {
+ tokenElements.forEach(token => {
+ token.classList.remove('highlight');
+ });
+ }
+ tokenElements.forEach(token => {
+ token.addEventListener('click', () => {
+ clearHighlight();
+ token.classList.add('highlight');
+ let message = "";
+ let tagName = `<${token.tagName}>
`;
+ if (token.tagName !== "mo")
+ message = `No, this is an ${tagName} element!`;
+ else if (!stretchyMoElements.includes(token))
+ message = `No, this is an ${tagName} element, but it's not vertically stretched.`;
+ else
+ message = `Correct, this ${tagName} element is indeed stretched to the height of its <mfrac>
sibling.`
+ outputDiv.insertAdjacentHTML('beforeend',
+ `${message}
`);
+ });
+ });
+ document.getElementById("clearOutput").addEventListener("click", () => {
+ clearHighlight();
+ outputDiv.innerHTML = "";
+ });
+```
+
+{{ EmbedLiveSample('Active_learning_stretchy_fences', 700, 400, "", "") }}
+
+> **Warning:** Special [math fonts](/en-US/docs/Web/MathML/Fonts) are generally required to make that stretching possible, the previous example relies on [web fonts](/en-US/docs/Learn/CSS/Styling_text/Web_fonts).
+
+## Summary
+
+In this article, we have learnt about a few *token* elements that are used as text containers as well as their different semantics, namely `` (identifier), `` (numbers), `` (operators), `` (generic text). We have seen special Unicode characters that are commonly found in math formulas and given an overview of some observable behaviors of the `` and `` elements. In the next article, we will see how to rely on *token* elements to build much complex expressions such as [fractions and roots](/en-US/docs/Learn/MathML/First_steps/Fractions_and_roots).
+
+{{LearnSidebar}}{{PreviousMenuNext("Learn/MathML/First_steps/Getting_started", "Learn/MathML/First_steps/Fractions_and_roots", "Learn/MathML/First_steps")}}
+
+## See also
+
+* [The `` element](/en-US/docs/Web/MathML/Element/mi)
+* [The `` element](/en-US/docs/Web/MathML/Element/mn)
+* [The `` element](/en-US/docs/Web/MathML/Element/mo)
+* [The `` element](/en-US/docs/Web/MathML/Element/mtext)
diff --git a/files/en-us/learn/mathml/first_steps/text_containers/operator-spacing.png b/files/en-us/learn/mathml/first_steps/text_containers/operator-spacing.png
new file mode 100644
index 0000000000000000000000000000000000000000..9e328ee75463442aaab7722bc99673ecb7e19685
GIT binary patch
literal 15626
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
Dxdgvq
literal 0
HcmV?d00001
diff --git a/files/en-us/learn/mathml/first_steps/three_famous_mathematical_formulas/index.md b/files/en-us/learn/mathml/first_steps/three_famous_mathematical_formulas/index.md
new file mode 100644
index 000000000000000..cee554163e2f7ed
--- /dev/null
+++ b/files/en-us/learn/mathml/first_steps/three_famous_mathematical_formulas/index.md
@@ -0,0 +1,142 @@
+---
+title: Three famous mathematical formulas
+slug: Learn/MathML/First_steps/Three_famous_mathematical_formulas
+tags:
+ - Beginner
+ - MathML
+ - Landing
+---
+{{LearnSidebar}}{{PreviousMenu("Learn/MathML/First_steps/Tables", "Learn/MathML/First_steps")}}
+
+
+
+