2020-07-24 16:11:42 +02:00
|
|
|
---
|
2022-06-19 13:01:44 +02:00
|
|
|
icon: material/alphabet-greek
|
2020-07-24 16:11:42 +02:00
|
|
|
---
|
|
|
|
|
|
|
|
# MathJax
|
|
|
|
|
2021-10-10 12:19:14 +02:00
|
|
|
[MathJax] is a beautiful and accessible way to display mathematical content
|
|
|
|
in the browser, adds support for mathematical typesetting in different notations
|
2023-05-13 13:34:57 +02:00
|
|
|
(e.g. [LaTeX], [MathML], [AsciiMath], [KaTeX]), and can be easily integrated with
|
2020-07-24 16:11:42 +02:00
|
|
|
Material for MkDocs.
|
|
|
|
|
2021-10-10 12:19:14 +02:00
|
|
|
[MathJax]: https://www.mathjax.org/
|
|
|
|
[LaTeX]: https://en.wikibooks.org/wiki/LaTeX/Mathematics
|
|
|
|
[MathML]: https://en.wikipedia.org/wiki/MathML
|
|
|
|
[AsciiMath]: http://asciimath.org/
|
2023-05-13 13:34:57 +02:00
|
|
|
[KaTeX]: https://katex.org/
|
2020-07-24 16:11:42 +02:00
|
|
|
|
|
|
|
## Configuration
|
|
|
|
|
2021-10-10 12:19:14 +02:00
|
|
|
This configuration enables support for rendering block and inline block
|
|
|
|
equations through [MathJax]. Create a configuration file and add the following
|
|
|
|
lines to `mkdocs.yml`:
|
2020-07-24 16:11:42 +02:00
|
|
|
|
2022-09-11 19:25:40 +02:00
|
|
|
=== ":octicons-file-code-16: `docs/javascripts/mathjax.js`"
|
2020-07-24 16:11:42 +02:00
|
|
|
|
|
|
|
``` js
|
|
|
|
window.MathJax = {
|
|
|
|
tex: {
|
|
|
|
inlineMath: [["\\(", "\\)"]],
|
|
|
|
displayMath: [["\\[", "\\]"]],
|
|
|
|
processEscapes: true,
|
|
|
|
processEnvironments: true
|
|
|
|
},
|
|
|
|
options: {
|
|
|
|
ignoreHtmlClass: ".*|",
|
|
|
|
processHtmlClass: "arithmatex"
|
|
|
|
}
|
|
|
|
};
|
2021-04-10 11:00:10 +02:00
|
|
|
|
2021-12-11 14:30:07 +01:00
|
|
|
document$.subscribe(() => { // (1)!
|
2021-04-10 11:00:10 +02:00
|
|
|
MathJax.typesetPromise()
|
|
|
|
})
|
2020-07-24 16:11:42 +02:00
|
|
|
```
|
|
|
|
|
2021-10-10 12:19:14 +02:00
|
|
|
1. This integrates MathJax with [instant loading].
|
|
|
|
|
2023-05-13 13:34:57 +02:00
|
|
|
=== ":octicons-file-code-16: `docs/javascripts/katex.js`"
|
|
|
|
|
|
|
|
``` js
|
|
|
|
document$.subscribe(() => { // (1)!
|
|
|
|
renderMathInElement(document.body, {
|
|
|
|
delimiters: [
|
|
|
|
{left: '$$', right: '$$', display: true},
|
|
|
|
{left: '$', right: '$', display: false},
|
|
|
|
{left: '\\(', right: '\\)', display: false},
|
|
|
|
{left: '\\[', right: '\\]', display: true},
|
|
|
|
],
|
|
|
|
});
|
|
|
|
})
|
|
|
|
```
|
|
|
|
|
|
|
|
1. This integrates KaTeX with [instant loading].
|
|
|
|
|
|
|
|
=== ":octicons-file-code-16: `mkdocs.yml` for MathJax"
|
2020-07-24 16:11:42 +02:00
|
|
|
|
|
|
|
``` yaml
|
2021-10-10 12:19:14 +02:00
|
|
|
markdown_extensions:
|
|
|
|
- pymdownx.arithmatex:
|
|
|
|
generic: true
|
|
|
|
|
2020-07-24 16:11:42 +02:00
|
|
|
extra_javascript:
|
2023-05-13 13:34:57 +02:00
|
|
|
- javascripts/mathjax.js
|
2020-07-24 16:11:42 +02:00
|
|
|
- https://polyfill.io/v3/polyfill.min.js?features=es6
|
|
|
|
- https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js
|
|
|
|
```
|
|
|
|
|
2023-05-13 13:34:57 +02:00
|
|
|
=== ":octicons-file-code-16: `mkdocs.yml` for KaTeX"
|
|
|
|
|
|
|
|
``` yaml
|
|
|
|
extra_javascript:
|
|
|
|
- javascripts/katex.js
|
|
|
|
- https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.7/katex.min.js # (1)!
|
|
|
|
- https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.7/contrib/auto-render.min.js
|
|
|
|
|
|
|
|
extra_css:
|
|
|
|
- https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.7/katex.min.css
|
|
|
|
```
|
|
|
|
|
|
|
|
1. Or you can adgitd these JS/CSS via `<script>` tag by overriding HTML files.
|
|
|
|
|
|
|
|
|
2021-10-10 12:19:14 +02:00
|
|
|
See additional configuration options:
|
2020-07-24 16:11:42 +02:00
|
|
|
|
2021-10-10 12:19:14 +02:00
|
|
|
- [Arithmatex]
|
2020-07-31 09:06:00 +02:00
|
|
|
|
2021-10-10 12:19:14 +02:00
|
|
|
[Arithmatex]: ../setup/extensions/python-markdown-extensions.md#arithmatex
|
|
|
|
[instant loading]: ../setup/setting-up-navigation.md#instant-loading
|
2020-07-31 09:06:00 +02:00
|
|
|
|
2020-07-24 16:11:42 +02:00
|
|
|
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
|
|
|
|
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
|
|
|
<script>
|
|
|
|
window.MathJax = {
|
|
|
|
tex: {
|
|
|
|
inlineMath: [["\\(", "\\)"]],
|
|
|
|
displayMath: [["\\[", "\\]"]],
|
|
|
|
processEscapes: true,
|
|
|
|
processEnvironments: true
|
|
|
|
},
|
|
|
|
options: {
|
|
|
|
ignoreHtmlClass: ".*|",
|
|
|
|
processHtmlClass: "arithmatex"
|
|
|
|
}
|
|
|
|
};
|
|
|
|
</script>
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
### Using block syntax
|
|
|
|
|
2022-01-10 14:31:58 +01:00
|
|
|
Blocks must be enclosed in `#!latex $$...$$` or `#!latex \[...\]` on separate
|
|
|
|
lines:
|
2020-07-24 16:11:42 +02:00
|
|
|
|
2022-01-10 14:31:58 +01:00
|
|
|
``` latex title="MathJax, block syntax"
|
2020-07-24 16:11:42 +02:00
|
|
|
$$
|
|
|
|
\operatorname{ker} f=\{g\in G:f(g)=e_{H}\}{\mbox{.}}
|
|
|
|
$$
|
|
|
|
```
|
|
|
|
|
2022-01-10 14:31:58 +01:00
|
|
|
<div class="result" markdown>
|
2020-07-24 16:11:42 +02:00
|
|
|
|
|
|
|
$$
|
|
|
|
\operatorname{ker} f=\{g\in G:f(g)=e_{H}\}{\mbox{.}}
|
|
|
|
$$
|
|
|
|
|
2022-01-10 14:31:58 +01:00
|
|
|
</div>
|
|
|
|
|
2020-07-24 18:29:34 +02:00
|
|
|
### Using inline block syntax
|
2020-07-24 16:11:42 +02:00
|
|
|
|
2020-07-24 18:29:34 +02:00
|
|
|
Inline blocks must be enclosed in `#!latex $...$` or `#!latex \(...\)`:
|
2020-07-24 16:11:42 +02:00
|
|
|
|
2022-01-10 14:31:58 +01:00
|
|
|
``` latex title="MathJax, inline syntax"
|
2020-07-24 16:11:42 +02:00
|
|
|
The homomorphism $f$ is injective if and only if its kernel is only the
|
|
|
|
singleton set $e_G$, because otherwise $\exists a,b\in G$ with $a\neq b$ such
|
|
|
|
that $f(a)=f(b)$.
|
|
|
|
```
|
|
|
|
|
2022-01-10 14:31:58 +01:00
|
|
|
<div class="result" markdown>
|
2020-07-24 16:11:42 +02:00
|
|
|
|
|
|
|
The homomorphism $f$ is injective if and only if its kernel is only the
|
|
|
|
singleton set $e_G$, because otherwise $\exists a,b\in G$ with $a\neq b$ such
|
|
|
|
that $f(a)=f(b)$.
|
2022-01-10 14:31:58 +01:00
|
|
|
|
|
|
|
</div>
|