6
\$\begingroup\$

MathJax (a relative of \$\LaTeX\$) is now enabled on this site. Mathematics.SE has a MathJax basic tutorial and quick reference, but this question will be a cookbook for Game Development-specific mathematics formatting. Many posts in here will repeat or summarise content from that quick reference.

Contributing to this cookbook

Please do so! Answers should each be a specific topic, or set of closely related topics. If in doubt, group them by how game development mathematicians would think of them. You can help in several ways:

  • Revise existing answers to add or improve details, including formatting that isn't covered yet in that topic but ought to be.
  • Expand an answer with new subsections covering tightly related topics that aren't covered yet.
  • Post new answers about new topics, and link them in the table of contents in a position you feel is appropriate.

Table of Contents

  1. Basic MathJax and Mathematics
  2. Vectors and Matrices
  3. Boolean Algebra and Logic
  4. Tables and arrays
  5. Tag and reference equations
\$\endgroup\$
1
  • 3
    \$\begingroup\$ I find this really useful, even when you know most of the markdown. \$\endgroup\$
    – Bálint
    Dec 13, 2017 at 14:40

5 Answers 5

1
\$\begingroup\$

Boolean Algebra and Logic

  1. Quantifiers. use \forall and \exists: \$ \forall\ and \ \exists\ \$
  2. Operators. use \neg, \land and \lor: \$ \neg, \land\ and \lor\ \$
\$\endgroup\$
1
\$\begingroup\$

Vectors and Matrices

Basic symbols

  • \vec puts an arrow over the next symbol: \$\vec a\$. For larger groups, use \overrightarrow: \$\overrightarrow{abc}\$

  • \overleftrightarrow and \overleftarrow are also available: \$ \overleftrightarrow{abc}\$ and \$\overleftarrow{abc}\$

  • \vert and \Vert display single and double vertical bars: \$\vert a \vert\$ or \$\Vert a \Vert\$.

    • Strictly speaking, use \lvert \rvert and \lVert \rVert to display on the left and right sides of symbols respectively: \$\lvert a \rvert\$ and \$\lVert a \rVert\$. It may display more correctly certain formula renders.
  • \cdot represents the centered dot for dot products: \$x \cdot y\$

Matrices

The \begin{matrix} ... \end{matrix} environment facilitates display of a matrix. Separate matrix elements with & and create new matrix lines with \\. So the following code:

$$
\begin{matrix}
a & b \\
c & d
\end{matrix}
$$

produces

$$ \begin{matrix} a & b \\ c & d \end{matrix} $$

To surround the matrix in brackets of some form, either use the \left and \right brackets from section 6 of the basic mathjax tutorial, or use pmatrix \$ \begin{pmatrix} a & b \\ c & d \end{pmatrix} \$ , bmatrix \$ \begin{bmatrix} a & b \\ c & d \end{bmatrix} \$ , Bmatrix \$ \begin{Bmatrix} a & b \\ c & d \end{Bmatrix} \$ , vmatrix \$ \begin{vmatrix} a & b \\ c & d \end{vmatrix} \$ , or Vmatrix \$ \begin{Vmatrix} a & b \\ c & d \end{Vmatrix} \$.

You can use \cdots \$\cdots\$, \ddots \$\ddots\$, and \vdots \$\vdots\$ to omit entries.

$$ \begin{pmatrix} a & b & \cdots & e \\ c & d & \cdots & f \\ \vdots & \vdots & \ddots & g \\ h & i & j & k \end{pmatrix} $$

Vectors

Use a one-dimensional matrix. For example:

$$
\begin{pmatrix}
a \\
b \\
c
\end{pmatrix}
$$

$$ \vec v = \begin{pmatrix} a \\ b \\ c \end{pmatrix} $$

\$\endgroup\$
1
\$\begingroup\$

Basic MathJax and Mathematics

Displaying a formula

For inline formulas, use \$ ... \$. For display-mode formulas (i.e. multiline, centered formulas which take up their own paragraph), use $$ ... $$. Various symbols will be displaye differently in inline vs multiline mode.

For example, the equation \sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6} renders in inline mode (\$) as the following: \$\sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6}\$

Meanwhile in display mode ($$) it displays as: $$ \sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6} $$

(Note the $$ also breaks it out into its own lines and centers it.)

New lines: Display formulas can have multiple lines. Insert a line break with \\.

Grouping

MathJax operates on symbols or groups of symbols. Usually, a MathJax operator that's expecting to do something fancy with some symbols will grab just the very first symbol available and nothing more. For example, a^bc will be displayed as \$a^bc\$.

If we want to represent that as \$a\$ to the power of \$bc\$ we instead need to group these symbols using curly braces, i.e. { }. So we'd write a^{bc} instead: \$a^{bc}\$.

You can get literal curly braces by escaping them: \{foo\}\$ \{foo\} \$

Basic mathematical formatting

  1. Mathematical operations: +, - (hyphen), \times and \div: \$1 + 2 - 3 \times 4 \div 5\$.

    • \cdot for \$ x \cdot y \$
    • \pm \mp for \$\pm \mp\$
  2. Comparison:

    • \gt and \lt for \$\gt\$ and \$\lt\$
    • \ge or \geq for \$\ge\$, \geqslant for \$\geqslant\$.
    • \le or \leq for \$\le\$, \leqslant for \$\leqslant\$
    • \approx \sim \simeq for \$\approx \sim \simeq\$
  3. Superscripts and subscripts: use ^ and _. These can be combined: x_i^2 or x^2_i renders as \$x_i^2\$.

  4. Fractions:

    • \frac a b grabs the next two groups: \$\frac{a+1}{b+1}\$
    • \dfrac a b works the same but always occupies two lines of vertical space: \$\dfrac{a+1}{b+1}\$
    • You may instead prefer to use \over: {a+1 \over b+1} for \${a+1 \over b+1}\$
  5. Greek letters: Use \alpha, \beta, …, \omega: \$\alpha, \beta \ldots \omega\$. For uppercase \Gamma, \Delta, …, \Omega: \$\Gamma, \Delta, \ldots \Omega\$.

  6. Plain text: Usually all text is treated as symbols, so these are some words gets rendered as \$these are some words\$ despite the spaces. To tell MathJax to treat it as just ordinary text use \text{stuff}: \$\text{these are some words}\$.

  7. Floor and ceiling: \lfloor x \rfloor for \$\lfloor x \rfloor\$, \lceil x \rceil for \$\lceil x \rceil\$

Equation alignment

You can use the \begin{align} ... \end{align} environment to align equations over multiple lines. The & symbol is an alignment marker in this environment. Use \\ to start new lines. The following example aligns on the equals sign:

$$
\begin{align}
a^2 &= b^2 + c^2 \\
a &= \sqrt{b^2 + c^2}
\end{align}
$$

$$ \begin{align} a^2 &= b^2 + c^2 \\ a &= \sqrt{b^2 + c^2} \end{align} $$

Equation sizing

Occasionally the default mathjax sizing may need to be adjusted in order to make things readable. MathJax supports size Latex commands:

\tiny
\scriptsize
\footnotesize
\small
\normalsize
\large
\Large
\LARGE
\huge
\Huge

The commands are listed from smallest to largest. \normalsize is the default. Note that use of capitalization on some commands.

The a size command is applied within the scope it occurs in.
For example: \${\Large\sqrt{\frac{1}{a_z^x}}}\$
gives \${\Large\sqrt{\frac{1}{a_z^x}}}\$.

As a more practical example, the application \small allows the following to render without undesired line breaks: $$f(t)={\small\frac{cos(rt)(gr^2_x+gr^2_y-r_xr^2_zv_y(0)+r_yr^2_zv_x(0)+ r^3_x(-v_y(0))+r^2_xr_yv_x(0)-r_xr^2_yv_y(0)+r^3_yv_x(0))}{r}}$$

\$\endgroup\$
0
\$\begingroup\$

Tables and arrays

The array environment can do tables quite well.

$$
\begin{array}{r|lcl}
\text{Column One} & \text{Two} & \text{Three} & \text{Four} \\
\hline
foo & bar & baz & narf  \\
tinker & tailor & soldier & spy
\end{array}
$$

$$ \begin{array}{r|lcl} \text{Column One} & \text{Two} & \text{Three} & \text{Four} \\ \hline foo & bar & baz & narf \\ tinker & tailor & soldier & spy \end{array} $$

There's several parts to this.

First, we begin the array (\begin{array}), then immediately make a column declaration: {r|lcl}. r, l, and c define column alignment: right-aligned, left-aligned, centered. | establishes a vertical line between two columns. You can have |'s anywhere, including at the beginning or end, but multiple |s in a row are redundant.

Then we write out our rows. & separates the cells in a row. \\ marks the end of the row.

We can insert a horizontal separator with \hline. This line doesn't need a \\ at the end of it.

We end the array with \end{array}.

Boxing in a table

You can use | and \hline to completely box in a table, by placing lines at the start and end as well as between cells as you'd like:

$$ \begin{array}{|c|c|} \hline a & b \\ \hline c & d \\ \hline \end{array} $$


Advanced usage: you can use \rlap to right-overlap a heading across several cells

$$ \begin{array}{r|lll} & \rlap{\text{number of foo}} \\ \text{number of bar} & 0 & 1 & 2 \\ \hline 0 & 0.125 & 0.250 & 0.168 \\ 1 & 0.125 & 0.250 & 0.168 \\ 2 & 0.125 & 0.250 & 0.168 \end{array} $$

\$\endgroup\$
0
\$\begingroup\$

Tag and reference equations

Tagging

If you have multiple equations in the same post, you may want to tag them for reference using \tag. For example, \tag{1} adds this floaty \$(1)\$ on the right hand side here:

$$ c^2 = a^2 + b^2 \tag{1} \label{eq1} $$

$$ c^2 = a^2 + b^2 \tag{1} $$

You can also use letters, whole words, and so on.

Usually a MathJax block can only contain one tag. The Align environment lets you add multiple tags should you want:

$$ \begin{align} c^2 &= a^2 + b^2 \tag 1 \\ c &= \sqrt{a^2 + b^2} \tag 2 \end{align} $$

$$
\begin{align}
c^2 &= a^2 + b^2 \tag 1 \\
c &= \sqrt{a^2 + b^2} \tag 2
\end{align}
$$

Referencing equations in code

Your primary use case for tags might be referenceing your equations in code examples, to show what mathematics you're implementing:

python code implementing the pythagorean theorem for a triangle, with an "#equation 2" comment to reference the above equation

Referencing equations via a MathJax link

If you want to reference (and link back to) the equation elsewhere in your post, add a \label as well. I'll call this one eq3:

$$ c = \sqrt{a^2 + b^2} \tag{3} \label{eq3} $$

$$ c = \sqrt{a^2 + b^2} \tag{3} \label{eq3} $$

Then reference it using \eqref{eq3}: \eqref{eq3}. Note that the link text is \$(3)\$ because that is the tag text. If I had given this equation \tag{foo} instead then the eqref text here woud be \$(\text{foo})\$. The purpose of this link is to scroll the particular equation into view, so here's a link back to the very first equation on this post, to which I sneakily added a label, for a better example: \eqref{eq1}.

Labels must be unique: two equations can't share the same label.

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .