mirror of
https://github.com/foo-dogsquared/hugo-theme-more-contentful.git
synced 2025-01-31 16:57:59 +00:00
410 lines
7.3 KiB
Plaintext
410 lines
7.3 KiB
Plaintext
|
---
|
||
|
title: "MathJax Support for Asciidoctor"
|
||
|
date: 2019-08-28T01:47:02+08:00
|
||
|
|
||
|
categories:
|
||
|
- "asciidoctor"
|
||
|
tags:
|
||
|
- "asciidoctor"
|
||
|
- "mathjax"
|
||
|
- "guide"
|
||
|
---
|
||
|
|
||
|
= MathJax Support for Asciidoctor
|
||
|
Gabriel Arazas <foo.dogsquared@gmail.com>
|
||
|
2019-08-28
|
||
|
:stem: latexmath
|
||
|
|
||
|
|
||
|
This is just an article for testing MathJax in Asciidoctor files.
|
||
|
|
||
|
You can use this as a testing template for all of your LaTeX math needs.
|
||
|
|
||
|
|
||
|
|
||
|
== Basics
|
||
|
|
||
|
This should be an inline math content stem:[\LaTeX] with the LaTeX symbol.
|
||
|
|
||
|
The following block content should contain a sentence with the LaTeX symbol.
|
||
|
|
||
|
[stem]
|
||
|
++++
|
||
|
\LaTeX\text{ is awesome.}
|
||
|
++++
|
||
|
|
||
|
|
||
|
=== Whitespace
|
||
|
|
||
|
LaTeX treats whitespace characters such as tabs and spaces uniformly as one unit
|
||
|
of space.
|
||
|
A text that is composed of two tabs and 10 spaces consecutively is one space.
|
||
|
|
||
|
This is especially prominent in math mode (which MathJax is... always).
|
||
|
|
||
|
Try to render this, for example.
|
||
|
|
||
|
[source,latex]
|
||
|
----
|
||
|
This is a LaTeX sentence (or I guess in MathJax).
|
||
|
----
|
||
|
|
||
|
And it'll render as the following:
|
||
|
|
||
|
[stem]
|
||
|
++++
|
||
|
This is a LaTeX sentence (or I guess in MathJax).
|
||
|
++++
|
||
|
|
||
|
Since MathJax is in... perpetual math mode and specifically made for rendering
|
||
|
math formulae, we shouldn't have a problem with maintaining it.
|
||
|
|
||
|
Just a heads up.
|
||
|
|
||
|
|
||
|
=== Commands
|
||
|
|
||
|
One of the main syntax you should mind in MathJax are the LaTeX commands.
|
||
|
Think of it like the HTML tags in LaTeX (although not really).
|
||
|
|
||
|
Here's the basic construct of a LaTeX command:
|
||
|
|
||
|
[source,latex]
|
||
|
----
|
||
|
\commandname[option1,option2,...]{argument1}{argument2}...
|
||
|
----
|
||
|
|
||
|
Within commands and if allowed, you can nest commands.
|
||
|
Take this example for example:
|
||
|
|
||
|
[source,latex]
|
||
|
----
|
||
|
\sum_{i=0}^{6} = \frac{i^{2}}{ 2 \bmod (i * 4)} + i^{3}
|
||
|
----
|
||
|
|
||
|
[stem]
|
||
|
++++
|
||
|
\sum_{i=0}^{6} = \frac{i^{2}}{ 2 \bmod (i * 4)} + i^{3}
|
||
|
++++
|
||
|
|
||
|
|
||
|
=== Reserved characters
|
||
|
|
||
|
The following characters have special meaning to LaTeX.
|
||
|
|
||
|
```
|
||
|
# $ % ^ & _ { } ~ \
|
||
|
```
|
||
|
|
||
|
[stem]
|
||
|
++++
|
||
|
# $ % ^ & _ { } ~ \
|
||
|
++++
|
||
|
|
||
|
As you can see, it should result in an error or not rendered
|
||
|
properly.
|
||
|
|
||
|
In order to render them in text, you need to add an escape character.
|
||
|
In this case, it's a backslash.
|
||
|
|
||
|
[source,latex]
|
||
|
----
|
||
|
\# \$ \% \^ \& \_ \{ \} \~ \\
|
||
|
----
|
||
|
|
||
|
[stem]
|
||
|
++++
|
||
|
\# \$ \% \^{} \& \_ \{ \} \~{} \textbackslash{}
|
||
|
++++
|
||
|
|
||
|
NOTE: Some of them may not render properly due to MathJax lack of support for
|
||
|
the following. (We don't really need those when using MathJax anyway)
|
||
|
|
||
|
|
||
|
== Text formatting
|
||
|
|
||
|
You can do a little text formatting in a LaTeX math content (though it's pointless
|
||
|
to do so).
|
||
|
|
||
|
|
||
|
=== Literal text
|
||
|
|
||
|
You can make a text with `\text{}`.
|
||
|
|
||
|
[source,latex]
|
||
|
----
|
||
|
\text{The quick brown fox jumps over the lazy dog.}
|
||
|
----
|
||
|
|
||
|
[stem]
|
||
|
++++
|
||
|
\text{The quick brown fox jumps over the lazy dog.}
|
||
|
++++
|
||
|
|
||
|
|
||
|
=== Boldface text
|
||
|
|
||
|
You can make a text boldface with `\textbf{}`.
|
||
|
|
||
|
[source,latex]
|
||
|
----
|
||
|
\textbf{The quick brown fox jumps over the lazy dog.}
|
||
|
----
|
||
|
|
||
|
[stem]
|
||
|
++++
|
||
|
\textbf{The quick brown fox jumps over the lazy dog.}
|
||
|
++++
|
||
|
|
||
|
|
||
|
=== Italic text
|
||
|
|
||
|
To make a text block italic, enclose it with a `\textit{}` command.
|
||
|
|
||
|
[source,latex]
|
||
|
----
|
||
|
\textit{The quick brown fox jumps over the lazy dog.}
|
||
|
----
|
||
|
|
||
|
[stem]
|
||
|
++++
|
||
|
\textit{The quick brown fox jumps over the lazy dog.}
|
||
|
++++
|
||
|
|
||
|
|
||
|
=== Monospaced text
|
||
|
|
||
|
In order for the text to be monospaced, enclose it with a `\texttt{}` (text teletype) command.
|
||
|
|
||
|
[source,latex]
|
||
|
----
|
||
|
\texttt{The quick brown fox jumps over the lazy dog.}
|
||
|
----
|
||
|
|
||
|
[stem]
|
||
|
++++
|
||
|
\texttt{The quick brown fox jumps over the lazy dog.}
|
||
|
++++
|
||
|
|
||
|
|
||
|
=== Text in sans-serif font equivalent
|
||
|
|
||
|
Most importantly, you can make a text rendered in sans-serif with `\textsf{}` command.
|
||
|
|
||
|
[source,latex]
|
||
|
----
|
||
|
\textsf{The quick brown fox jumps over the lazy dog.}
|
||
|
----
|
||
|
|
||
|
[stem]
|
||
|
++++
|
||
|
\textsf{The quick brown fox jumps over the lazy dog.}
|
||
|
++++
|
||
|
|
||
|
|
||
|
=== More options
|
||
|
|
||
|
You can see a lot more options from https://en.wikibooks.org/wiki/LaTeX/Fonts[this reference].
|
||
|
|
||
|
|
||
|
|
||
|
== Math formatting
|
||
|
|
||
|
This is what you mostly came for, right?
|
||
|
|
||
|
All righty then.
|
||
|
Let's see what MathJax in Asciidoctor (M in A?) can do.
|
||
|
|
||
|
|
||
|
=== Fractions
|
||
|
|
||
|
For rendering fractions, you need to use the `\frac` command.
|
||
|
The command simply needs two positional arguments.
|
||
|
|
||
|
[source,latex]
|
||
|
----
|
||
|
\frac{NUMERATOR}{DENOMINATOR}
|
||
|
----
|
||
|
|
||
|
For a bit of an example:
|
||
|
|
||
|
[source,latex]
|
||
|
----
|
||
|
\frac{x_1 + y_2}{x_2 + y_1}
|
||
|
----
|
||
|
|
||
|
[stem]
|
||
|
++++
|
||
|
\frac{x_1 + y_2}{x_2 + y_1}
|
||
|
++++
|
||
|
|
||
|
|
||
|
=== Roots
|
||
|
|
||
|
In order to create roots, you need the `\sqrt` command.
|
||
|
It only needs the content to be put inside of it as the argument.
|
||
|
|
||
|
[source,latex]
|
||
|
----
|
||
|
\sqrt{2a + b}
|
||
|
----
|
||
|
|
||
|
[stem]
|
||
|
++++
|
||
|
\sqrt{2a + b}
|
||
|
++++
|
||
|
|
||
|
Yes, you can nest some stuff.
|
||
|
|
||
|
[source,latex]
|
||
|
----
|
||
|
\sqrt{\frac{2a + b}{a^2 - b^2}}
|
||
|
----
|
||
|
|
||
|
[stem]
|
||
|
++++
|
||
|
\sqrt{\frac{2a + b}{a^2 - b^2}}
|
||
|
++++
|
||
|
|
||
|
You can specify an optional argument to change the magnitude.
|
||
|
|
||
|
[source,latex]
|
||
|
----
|
||
|
\sqrt[\frac{1}{2}]{2a + b}
|
||
|
----
|
||
|
|
||
|
[stem]
|
||
|
++++
|
||
|
\sqrt[\frac{1}{2}]{2a + b}
|
||
|
++++
|
||
|
|
||
|
|
||
|
=== Superscripts
|
||
|
|
||
|
In order to make superscripts, place it next to a caret character (`^`).
|
||
|
To render it in more than one character, enclose it in curly brackets (`{}`).
|
||
|
|
||
|
[source,latex]
|
||
|
----
|
||
|
2^2 * 2^{23} = 2^{25}
|
||
|
----
|
||
|
|
||
|
[stem]
|
||
|
++++
|
||
|
2^2 * 2^{23} = 2^{25}
|
||
|
++++
|
||
|
|
||
|
You can also nest it within a superscript like so.
|
||
|
|
||
|
[source,latex]
|
||
|
----
|
||
|
2^{2^{10}} * 2^{23^2} = \infty
|
||
|
----
|
||
|
|
||
|
[stem]
|
||
|
++++
|
||
|
2^{2^{10}} * 2^{23^2} = \infty
|
||
|
++++
|
||
|
|
||
|
OK, I've gone overboard with the scale so I just put infinity as the
|
||
|
answer instead.
|
||
|
|
||
|
|
||
|
=== Subscripts
|
||
|
|
||
|
For making subscripts, place it next to the underscore (`_`).
|
||
|
Like the superscript command, if you include more than one character,
|
||
|
enclose it in a pair of curly brackets (`{}`).
|
||
|
|
||
|
[source,latex]
|
||
|
----
|
||
|
a_1 + a_2 + a_3 + ... + a_{14} = \frac{a_1 * a_{14}}{2}
|
||
|
----
|
||
|
|
||
|
[stem]
|
||
|
++++
|
||
|
a_1 + a_2 + a_3 + ... + a_{14} = \frac{a_1 * a_{14}}{2}
|
||
|
++++
|
||
|
|
||
|
Like superscripts and most of the commands, you can nest subscripts
|
||
|
to another subscript (and other commands).
|
||
|
|
||
|
[source,latex]
|
||
|
----
|
||
|
a_{2_{1}} + a_{2_{2}} = b_{2_{1}} + b_{2_{2}}
|
||
|
----
|
||
|
|
||
|
[stem]
|
||
|
++++
|
||
|
a_{2_{1}} + a_{2_{2}} = b_{2_{1}} + b_{2_{2}}
|
||
|
++++
|
||
|
|
||
|
|
||
|
=== Greek letters
|
||
|
|
||
|
You can render Greek letters with the appropriate command.
|
||
|
|
||
|
`\alpha` for lowercase Greek letter alpha,
|
||
|
`\beta` for lowercase Greek letter beta,
|
||
|
`\gamma` for lowercase Greek letter gamma,
|
||
|
`\Gamma` for uppercase Greek letter gamma,
|
||
|
you get the point.
|
||
|
|
||
|
[source,latex]
|
||
|
----
|
||
|
\alpha, \beta, \gamma, \Gamma, \pi, \Pi, \phi, \varphi, \mu, \Phi
|
||
|
----
|
||
|
|
||
|
[stem]
|
||
|
++++
|
||
|
\alpha, \beta, \gamma, \Gamma, \pi, \Pi, \phi, \varphi, \mu, \Phi
|
||
|
++++
|
||
|
|
||
|
|
||
|
=== Mathematical sizing
|
||
|
|
||
|
Oftentimes, you might need to align and resize certain characters like
|
||
|
the parenthesis or the brackets that enclose a formula or an example.
|
||
|
|
||
|
You can use the `\left`, `\right`, and `\middle` commands to resize
|
||
|
the delimiters.
|
||
|
|
||
|
[source,latex]
|
||
|
----
|
||
|
\left(\frac{x^2}{y^3}\right)
|
||
|
----
|
||
|
|
||
|
[stem]
|
||
|
++++
|
||
|
\left(\frac{x^2}{y^3}\right)
|
||
|
++++
|
||
|
|
||
|
Since curly braces have semantic meaning to stem:[\LaTeX], you need to
|
||
|
escape it.
|
||
|
Pretty much, it'll look like this:
|
||
|
|
||
|
[source,latex]
|
||
|
----
|
||
|
\left\{\frac{x^2}{y^3}\right\}
|
||
|
----
|
||
|
|
||
|
[stem]
|
||
|
++++
|
||
|
\left\{\frac{x^2}{y^3}\right\}
|
||
|
++++
|
||
|
|
||
|
|
||
|
=== A lot more!
|
||
|
|
||
|
You have a whole slew of mathematical symbols available.
|
||
|
Please refer to
|
||
|
https://oeis.org/wiki/List_of_LaTeX_mathematical_symbols[this list of LaTeX mathematical symbols].
|
||
|
Though I don't know what's missing symbols and whatnot (since I don't MathJax often) but
|
||
|
it should be enough.
|
||
|
|
||
|
You can also go to
|
||
|
https://math-on-quora.surge.sh/[this web page that details using MathJax on Quora]
|
||
|
by Gilles Castel.
|
||
|
It is specifically made for writing stem:[\LaTeX] on Quora but it
|
||
|
can be used as a general MathJax guide, anyways.
|