From d2f56cebd7e5174a726f520a51b7a39be590154e Mon Sep 17 00:00:00 2001 From: Ron Kok Date: Fri, 10 Aug 2018 13:37:08 -0700 Subject: [PATCH] Sync support pages (#1556) * Sync support pages * Use KaTeX logo for \href example * mobile support * Unit block sizes * Add texvc to supported.md * Fix CSS lint errors * Added suggested braces to demo page * Pick up review comments * Move \allowbreak --- docs/support_table.md | 28 +-- docs/supported.md | 419 +++++++++++++++++++--------------- website/pages/index.html | 2 +- website/static/css/custom.css | 96 ++++++++ 4 files changed, 347 insertions(+), 198 deletions(-) diff --git a/docs/support_table.md b/docs/support_table.md index d250e148..a613f8da 100644 --- a/docs/support_table.md +++ b/docs/support_table.md @@ -64,7 +64,7 @@ If you know the shape of a character, but not its name, [Detexify](http://detexi |:---------------|:------------|:-----------------| |\AA|$\text{\AA}$|`\text{\AA}`| |\aa|$\text{\aa}$|`\text{\aa}`| -|\above||In master| +|\above|${a \above{2pt} b+1}$|`{a \above{2pt} b+1}`| |\abovewithdelims|Not supported|| |\acute|$\acute e$|`\acute e`| |\AE|$\text{\AE}$|`\text{\AE}`| @@ -100,7 +100,7 @@ If you know the shape of a character, but not its name, [Detexify](http://detexi |\arrowvert|Not supported|| |\ast|$\ast$|| |\asymp|$\asymp$|| -|\atop|$a \atop b$|`a \atop b`| +|\atop|${a \atop b}$|`{a \atop b}`| |\atopwithdelims|Not supported|| ## B @@ -179,9 +179,9 @@ If you know the shape of a character, but not its name, [Detexify](http://detexi |\boxminus|$\boxminus$|| |\boxplus|$\boxplus$|| |\boxtimes|$\boxtimes$|| -|\brace||In master| +|\brace|${n\brace k}$|`{n\brace k}`| |\bracevert|Not supported|| -|\brack||In master| +|\brack|${n\brack k}$|`{n\brack k}`| |\breve|$\breve{eu}$|`\breve{eu}`| |\buildrel|Not supported|| |\bull|$\bull$|| @@ -401,7 +401,7 @@ If you know the shape of a character, but not its name, [Detexify](http://detexi |\geneuro|Not supported|| |\geneuronarrow|Not supported|| |\geneurowide|Not supported|| -|\genfrac||In master| +|\genfrac|$\genfrac ( ] {2pt}{0}a{a+1}$|`\genfrac ( ] {2pt}{0}a{a+1}`| |\geq|$\geq$|| |\geqq|$\geqq$|| |\geqslant|$\geqslant$|| @@ -446,7 +446,7 @@ If you know the shape of a character, but not its name, [Detexify](http://detexi |\hookleftarrow|$\hookleftarrow$|| |\hookrightarrow|$\hookrightarrow$|| |\hphantom|$a\hphantom{bc}d$|`a\hphantom{bc}d`| -|\href|$\href{https://khan.github.io/KaTeX/}{KaTeX}$|`\href{https://khan.github.io/KaTeX/}{KaTeX}`| +|\href|$\href{https://khan.github.io/KaTeX/}{\KaTeX}$|`\href{https://khan.github.io/KaTeX/}{\KaTeX}`| |\hskip|$w\hskip1em i\hskip2em d$|`w\hskip1em i\hskip2em d`| |\hslash|$\hslash$|| |\hspace|$s\hspace7ex k$|`s\hspace7ex k`| @@ -512,7 +512,7 @@ If you know the shape of a character, but not its name, [Detexify](http://detexi |\label|Not supported|| |\land|$\land$|| |\lang|$\lang A\rangle$|`\lang A\rangle`| -|\langle|$\langle$|| +|\langle|$\langle A\rangle$|`\langle A\rangle`| |\Larr|$\Larr$|| |\lArr|$\lArr$|| |\larr|$\larr$|| @@ -736,8 +736,8 @@ If you know the shape of a character, but not its name, [Detexify](http://detexi |\OE|$\text{\OE}$|`\text{\OE}`| |\oe|$\text{\oe}$|`\text{\oe}`| |\officialeuro|Not supported|| -|\oiiint||In master| -|\oiint||In master| +|\oiiint|$\oiiint$|| +|\oiint|$\oiint$|| |\oint|$\oint$|| |\oldstyle|Not supported|| |\omega|$\omega$|| @@ -775,7 +775,7 @@ If you know the shape of a character, but not its name, [Detexify](http://detexi |\P|$\text{\P}$|`\text{\P}`| |\pagecolor|Not supported|[Deprecated](https://en.wikipedia.org/wiki/Help:Displaying_a_formula#Deprecated_syntax)| |\parallel|$\parallel$|| -|\part|Not supported|| +|\part|Not supported|[Deprecated](https://en.wikipedia.org/wiki/Help:Displaying_a_formula#Deprecated_syntax)| |\partial|$\partial$|| |\perp|$\perp$|| |\phantom|$\Gamma^{\phantom{i}j}_{i\phantom{j}k}$|`\Gamma^{\phantom{i}j}_{i\phantom{j}k}`| @@ -790,7 +790,7 @@ If you know the shape of a character, but not its name, [Detexify](http://detexi |\pm|$\pm$|| |\pmatrix|Not supported|See `{pmatrix}`| |{pmatrix}|$\begin{pmatrix}a&b\\c&d\end{pmatrix}$|`\begin{pmatrix}`
   `a & b \\`
   `c & d`
`\end{pmatrix}` -|\pmb||In master| +|\pmb|$\pmb{\mu}$|`\pmb{\mu}`| |\pmod|$x\pmod a$|`x\pmod a`| |\pod|$x \pod a$|`x \pod a`| |\pounds|$\pounds$|| @@ -823,8 +823,8 @@ If you know the shape of a character, but not its name, [Detexify](http://detexi |\r|$\text{\r{a}}$|`\text{\r{a}}`| |\raise|Not supported|see `\raisebox`| |\raisebox|$h\raisebox{2pt}{ighe}r$|`h\raisebox{2pt}{ighe}r`| -|\rang|$\angle A\rang$|`\angle A\rang`| -|\rangle|$\rangle$|| +|\rang|$\langle A\rang$|`\langle A\rang`| +|\rangle|$\langle A\rangle$|`\langle A\rangle`| |\Rarr|$\Rarr$|| |\rArr|$\rArr$|| |\rarr|$\rarr$|| @@ -1078,7 +1078,7 @@ If you know the shape of a character, but not its name, [Detexify](http://detexi |\upsilon|$\upsilon$|| |\upuparrows|$\upuparrows$|| |\urcorner|$\urcorner$|| -|\url|$\url{https://khan.github.io/KaTeX/}$|`\url{https://khan.github.io/KaTeX/}`| +|\url|$\footnotesize\url{https://khan.github.io/KaTeX/}$|`\url{https://khan.github.io/KaTeX/}`| |\utilde|$\utilde{AB}$|`\utilde{AB}`| ## V diff --git a/docs/supported.md b/docs/supported.md index 87927a25..cd0bc26e 100644 --- a/docs/supported.md +++ b/docs/supported.md @@ -4,15 +4,23 @@ title: Supported Functions --- This is a list of TeX functions supported by KaTeX. It is sorted into logical groups. There is a similar [Support Table](./support_table.md), sorted alphabetically, that lists both supported and un-supported functions. +
+ ## Accents |||| @@ -51,6 +59,7 @@ See also [letters](#letters) |$\vert$ | |$\vert$ `\vert` |$┌ ┐$ `┌ ┐`|$\ulcorner \urcorner$ `\ulcorner`
$~~~~$`\urcorner` |$\Downarrow$ `\Downarrow` |$\Vert$ \| |$\Vert$ `\Vert` |$└ ┘$ `└ ┘`|$\llcorner \lrcorner$ `\llcorner`
$~~~~$`\lrcorner` |$\Updownarrow$ `\Updownarrow` |$\lvert~\rvert$ `\lvert`
$~~~~$`\rvert`|$\lVert~\rVert$ `\lVert`
$~~~~~$`\rVert` |`\left.`| `\right.` |$\backslash$ `\backslash` +|$\lang~\rang$ `\lang`
$~~~~$`\rang` **Delimiter Sizing** @@ -58,18 +67,21 @@ $\left(\LARGE{AB}\right)$ `\left(\LARGE{AB}\right)` $( \big( \Big( \bigg( \Bigg($ `( \big( \Big( \bigg( \Bigg(` -||||| -|:--------|:------|:--------|:------| -|`\left` |`\big` |`\bigl` |`\bigr` -|`\middle`|`\Big` |`\Bigl` |`\Bigr` -|`\right` |`\bigg`|`\biggl` |`\biggr` -| |`\Bigg`|`\Biggl` |`\Biggr` +|||||| +|:--------|:------|:--------|:-------|:------| +|`\left` |`\big` |`\bigl` |`\bigm` |`\bigr` +|`\middle`|`\Big` |`\Bigl` |`\Bigm` | `\Bigr` +|`\right` |`\bigg`|`\biggl` |`\biggm`|`\biggr` +| |`\Bigg`|`\Biggl` |`\Biggm`|`\Biggr` +
## Environments +
+ ||||| -|:--------------------:|:---------------------|:--------------------:|:----- +|:---------------------|:---------------------|:---------------------|:-------- |$\begin{matrix} a & b \\ c & d \end{matrix}$ | `\begin{matrix}`
   `a & b \\`
   `c & d`
`\end{matrix}` |$\begin{array}{cc}a & b\\c & d\end{array}$ | `\begin{array}{cc}`
   `a & b \\`
   `c & d`
`\end{array}` |$\begin{pmatrix} a & b \\ c & d \end{pmatrix}$ |`\begin{pmatrix}`
   `a & b \\`
   `c & d`
`\end{pmatrix}` |$\begin{bmatrix} a & b \\ c & d \end{bmatrix}$ | `\begin{bmatrix}`
   `a & b \\`
   `c & d`
`\end{bmatrix}` |$\begin{vmatrix} a & b \\ c & d \end{vmatrix}$ |`\begin{vmatrix}`
   `a & b \\`
   `c & d`
`\end{vmatrix}` |$\begin{Vmatrix} a & b \\ c & d \end{Vmatrix}$ |`\begin{Vmatrix}`
   `a & b \\`
   `c & d`
`\end{Vmatrix}` @@ -77,6 +89,8 @@ $( \big( \Big( \bigg( \Bigg($ `( \big( \Big( \bigg( \Bigg(` |$\begin{aligned} a&=b+c \\ d+e&=f \end{aligned}$ |`\begin{aligned}`
   `a&=b+c \\`
   `d+e&=f`
`\end{aligned}`|$\begin{alignedat}{2}10&x+&3&y=2\\3&x+&13&y=4\end{alignedat}$ |`\begin{alignedat}{2}`
   `10&x+ &3&y = 2 \\`
   ` 3&x+&13&y = 4`
`\end{alignedat}` |$\begin{gathered} a=b \\ e=b+c \end{gathered}$ |`\begin{gathered}`
   `a=b \\ `
   `e=b+c`
`\end{gathered}`|$x = \begin{cases} a &\text{if } b \\ c &\text{if } d \end{cases}$ |`x = \begin{cases}`
   `a &\text{if } b \\`
   `c &\text{if } d`
`\end{cases}` +
+ KaTeX also supports `darray` and `dcases`. Acceptable line separators include: `\\`, `\cr`, `\\[distance]`, and `\cr[distance]`. *Distance* can be written with any of the [KaTeX units](#units). @@ -85,25 +99,30 @@ The `{array}` environment supports `|` and `:` vertical separators. The `{array}` environment does not yet support `\cline` or `\multicolumn`. +
+ ## HTML ||| |:----------------|:-------------------| -| $\href{https://khan.github.io/KaTeX/}{KaTeX}$ | `\href{https://khan.github.io/KaTeX/}{KaTeX}` | +| $\href{https://khan.github.io/KaTeX/}{\KaTeX}$ | `\href{https://khan.github.io/KaTeX/}{\KaTeX}` | | $\url{https://khan.github.io/KaTeX/}$ | `\url{https://khan.github.io/KaTeX/}` | ## Letters and Unicode **Greek Letters** -Direct Input: $Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω$
-$α β γ δ ϵ ζ η θ ι κ λ μ ν ξ o π ρ σ τ υ ϕ χ ψ ω ε ϑ ϖ ϱ ς φ$ +Direct Input: $Α Β Γ Δ Ε Ζ Η Θ Ι \allowbreak Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω$ +$\allowbreak α β γ δ ϵ ζ η θ ι κ λ μ ν ξ o π \allowbreak ρ σ τ υ ϕ χ ψ ω ε ϑ ϖ ϱ ς φ$ ||||| |---------------|-------------|-------------|---------------| -| $\Gamma$ `\Gamma`| $\Delta$ `\Delta` | $\Theta$ `\Theta` | $\Lambda$ `\Lambda` | -| $\Xi$ `\Xi`| $\Pi$ `\Pi` | $\Sigma$ `\Sigma` | $\Upsilon$ `\Upsilon` | -| $\Phi$ `\Phi` | $\Psi$ `\Psi`| $\Omega$ `\Omega` || +| $\Alpha$ `\Alpha` | $\Beta$ `\Beta` | $\Gamma$ `\Gamma`| $\Delta$ `\Delta` +| $\Epsilon$ `\Epsilon` | $\Zeta$ `\Zeta` | $\Eta$ `\Eta` | $\Theta$ `\Theta` +| $\Iota$ `\Iota` | $\Kappa$ `\Kappa` | $\Lambda$ `\Lambda` | $\Mu$ `\Mu` +| $\Nu$ `\Nu` | $\Xi$ `\Xi` | $\Omicron$ `\Omicron` | $\Pi$ `\Pi` +| $\Sigma$ `\Sigma` | $\Tau$ `\Tau` | $\Upsilon$ `\Upsilon` | $\Phi$ `\Phi` +| $\Chi$ `\Chi` | $\Psi$ `\Psi`| $\Omega$ `\Omega` | $\varGamma$ `\varGamma`| $\varDelta$ `\varDelta` | $\varTheta$ `\varTheta` | $\varLambda$ `\varLambda` | | $\varXi$ `\varXi`| $\varPi$ `\varPi` | $\varSigma$ `\varSigma` | $\varUpsilon$ `\varUpsilon` | | $\varPhi$ `\varPhi` | $\varPsi$ `\varPsi`| $\varOmega$ `\varOmega` || @@ -113,31 +132,42 @@ $α β γ δ ϵ ζ η θ ι κ λ μ ν ξ o π ρ σ τ υ ϕ χ ψ ω ε ϑ ϖ | $\nu$ `\nu`| $\xi$ `\xi` | $\omicron$ `\omicron` | $\pi$ `\pi`| | $\rho$ `\rho` | $\sigma$ `\sigma` | $\tau$ `\tau`| $\upsilon$ `\upsilon` | | $\phi$ `\phi` | $\chi$ `\chi`| $\psi$ `\psi`| $\omega$ `\omega`| -| $\varepsilon$ `\varepsilon` | $\varkappa$ `\varkappa` | $\vartheta$ `\vartheta` | $\varpi$ `\varpi`| -| $\varrho$ `\varrho` | $\varsigma$ `\varsigma` | $\varphi$ `\varphi`| $\digamma $ `\digamma `| +| $\varepsilon$ `\varepsilon` | $\varkappa$ `\varkappa` | $\vartheta$ `\vartheta` | $\thetasym$ `\thetasym` +| $\varpi$ `\varpi`| $\varrho$ `\varrho` | $\varsigma$ `\varsigma` | $\varphi$ `\varphi` +| $\digamma $ `\digamma` **Other Letters** |||||| -|------------|-----------|----------|---------|----------| -| $\imath$ `imath` | $\eth$ `\eth` | $\Im$ `\Im`| $\text{\aa}$ `\text{\aa}`| $\text{\o}$ `\text{\o}` | -| $\jmath$ `\jmath`| $\Finv$ `\Finv`| $\Re$ `\Re`| $\text{\AA}$ `\text{\AA}`| $\text{\O}$ `\text{\O}` | -| $\aleph$ `\aleph`| $\Game$ `\Game`| $\wp$ `\wp`| $\text{\ae}$ `\text{\ae}`| $\text{\ss}$ `\text{\ss}` | -| $\beth$ `\beth` | $\ell$ `\ell` | $\partial$ `\partial` | $\text{\AE}$ `\text{\AE}`| $\text{\i}$ `\text{\i}` | -| $\gimel$ `\gimel`| $\hbar$ `\hbar`| $\nabla$ `\nabla`| $\text{\oe}$ `\text{\oe}`| $\text{\j}$ `\text{\j}` | -| $\daleth$ `\daleth` | $\hslash$ `\hslash` | $\Bbbk$ `\Bbbk` | $\text{\OE}$ `\text{\OE}`| +|:----------|:----------|:----------|:----------|:----------| +|$\imath$ `\imath`|$\nabla$ `\nabla`|$\Im$ `\Im`|$\Reals$ `\Reals`|$\text{\OE}$ `\text{\OE}` +|$\jmath$ `\jmath`|$\partial$ `\partial`|$\image$ `\image`|$\wp$ `\wp`|$\text{\o}$ `\text{\o}` +|$\aleph$ `\aleph`|$\Game$ `\Game`|$\Bbbk$ `\Bbbk`|$\weierp$ `\weierp`|$\text{\O}$ `\text{\O}` +|$\alef$ `\alef`|$\Finv$ `\Finv`|$\N$ `\N`|$\Z$ `\Z`|$\text{\ss}$ `\text{\ss}` +|$\alefsym$ `\alefsym`|$\cnums$ `\cnums`|$\natnums$ `\natnums`|$\text{\aa}$ `\text{\aa}`|$\text{\i}$ `\text{\i}` +|$\beth$ `\beth`|$\Complex$ `\Complex`|$\R$ `\R`|$\text{\AA}$ `\text{\AA}`|$\text{\j}$ `\text{\j}` +|$\gimel$ `\gimel`|$\ell$ `\ell`|$\Re$ `\Re`|$\text{\ae}$ `\text{\ae}` +|$\daleth$ `\daleth`|$\hbar$ `\hbar`|$\real$ `\real`|$\text{\AE}$ `\text{\AE}` +|$\eth$ `\eth`|$\hslash$ `\hslash`|$\reals$ `\reals`|$\text{\oe}$ `\text{\oe}` -Direct Input: $∂ ∇ ℑ Ⅎ ℵ ℶ ℷ ℸ ⅁ ℏ$ ð
-ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝÞß
àáâãäåçèéêëìíîïðñòóôöùúûüýþÿ +Direct Input: $∂ ∇ ℑ Ⅎ ℵ ℶ ℷ ℸ ⅁ ℏ ð$ +ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝÞßàáâãäåçèéêëìíîïðñòóôöùúûüýþÿ + +
+
**Unicode Mathematical Alphanumeric Symbols** -| Item | Range | Item | Range | -|-------------|------------------|------------------|---------------| -| Bold | $\text{𝐀-𝐙 𝐚-𝐳}$ | Double-struck | $\text{𝔸-}ℤ\ 𝕜$ | -| Italic | $\text{𝐴-𝑍 𝑎-𝑧}$ | Sans serif | $\text{𝖠-𝖹 𝖺-𝗓}$ | -| Bold Italic | $\text{𝑨-𝒁 𝒂-𝒛}$ | Monospace | $\text{𝙰-𝚉 𝚊-𝚣}$ | -| Script | $\text{𝒜-𝒵}$ | Fractur | $\text{𝔄-}ℨ\text{ 𝔞-𝔷}$| +| Item | Range | Item | Range | +|-------------|---------------------|-------------------|---------------| +| Bold | $\text{𝐀-𝐙 𝐚-𝐳 𝟎-𝟗}$ | Double-struck | $\text{𝔸-}ℤ\ 𝕜$ +| Italic | $\text{𝐴-𝑍 𝑎-𝑧}$ | Sans serif | $\text{𝖠-𝖹 𝖺-𝗓 𝟢-𝟫}$ +| Bold Italic | $\text{𝑨-𝒁 𝒂-𝒛}$ | Sans serif bold | $\text{𝗔-𝗭 𝗮-𝘇 𝟬-𝟵}$ +| Script | $\text{𝒜-𝒵}$ | Sans serif italic | $\text{𝘈-𝘡 𝘢-𝘻}$ +| Fractur | $\text{𝔄-}ℨ\text{ 𝔞-𝔷}$| Monospace | $\text{𝙰-𝚉 𝚊-𝚣 𝟶-𝟿}$ + +
+
**Unicode** @@ -158,28 +188,27 @@ For Persian composite characters, a user-supplied [plug-in](https://github.com/ |$\xcancel{ABC}$ `\xcancel{ABC}`|$\not =$ `\not =` |$\sout{abc}$ `\sout{abc}`|$\boxed{\pi=\frac c d}$ `\boxed{\pi=\frac c d}` - `\tag{hi} x+y^{2x}` $$\tag{hi} x+y^{2x}$$ `\tag*{hi} x+y^{2x}` $$\tag*{hi} x+y^{2x}$$ -### Line Breaks and Vertical Layout +### Line Breaks -KaTeX 0.10.0+ will insert automatic line breaks in inline math after relations or binary operators such as “=” or “+”. These can be suppressed by placing math inside a pair of braces, as in `{F=ma}`. +KaTeX 0.10.0+ will insert automatic line breaks in inline math after relations or binary operators such as “=” or “+”. These can be suppressed by `\nobreak` or by placing math inside a pair of braces, as in `{F=ma}`. `\allowbreak` will allow automatic line breaks at locations other than relations or operators. Hard line breaks are `\\` and `\newline`. In display math, KaTeX does not insert automatic line breaks. It ignores display math hard line breaks when rendering option `strict: true`. -**Vertical Layout** +### Vertical Layout |||| |:--------------|:----------------------------------------|:----- |$x_n$ `x_n` |$\stackrel{!}{=}$ `\stackrel{!}{=}` |$a \atop b$ `a \atop b` |$e^x$ `e^x` |$\overset{!}{=}$ `\overset{!}{=}` |$a\raisebox{0.25em}{b}c$ `a\raisebox{0.25em}{b}c` -|$_u^o $ `_u^o `|$\underset{!}{=}$ `\underset{!}{=}`| $~$ +|$_u^o $ `_u^o `|$\underset{!}{=}$ `\underset{!}{=}` The second argument of `\raisebox` can contain math if it is nested within `$…$` delimiters, as in `\raisebox{0.25em}{$\frac a b$}` @@ -194,46 +223,52 @@ $\displaystyle\sum_{\mathclap{1\le i\le j\le n}} x_{ij}$ `\sum_{\mathclap{1\le i KaTeX also supports `\llap`, `\rlap`, and `\clap`, but they will take only text, not math, as arguments. +
+
+ **Spacing** -| Function | Produces | Function | Produces| -|:----------------|:-------------------|:----------------------|:--------------------------------------| -| `\!`| – ³∕₁₈ em space | `\kern{distance}` | space, width = *distance* | -| `\,`| ³∕₁₈ em space| `\mkern{distance}` | space, width = *distance* | -| `\thinspace` | ³∕₁₈ em space| `\skip{distance}` | space, width = *distance* | -| `\:`| ⁴∕₁₈ em space| `\mskip{distance}` | space, width = *distance* | -| `\medspace` | ⁴∕₁₈ em space| `\hspace{distance}`| space, width = *distance* | -| `\;`| ⁵∕₁₈ em space| `\hspace*{distance}` | space, width = *distance* | -| `\thickspace`| ⁵∕₁₈ em space| `\phantom{content}`| space the width and height of content | -| `\enspace`| ½ em space| `\hphantom{content}` | space the width of content| -| `\quad`| 1 em space| `\vphantom{content}` | a strut the height of content| -| `\qquad` | 2 em space| || -| `~`| non-breaking space | || -| `\` | space | || -| `\nobreakspace` | non-breaking space | || -| `\space` | space | || +| Function | Produces | Function | Produces| +|:----------------|:-------------------|:---------------------|:--------------------------------------| +| `\,` | ³∕₁₈ em space | `\kern{distance}` | space, width = *distance* +| `\thinspace` | ³∕₁₈ em space | `\mkern{distance}` | space, width = *distance* +| `\:` | ⁴∕₁₈ em space | `\mskip{distance}` | space, width = *distance* +| `\medspace` | ⁴∕₁₈ em space | `\hskip{distance}` | space, width = *distance* +| `\;` | ⁵∕₁₈ em space | `\hspace{distance}` | space, width = *distance* +| `\thickspace` | ⁵∕₁₈ em space | `\hspace*{distance}` | space, width = *distance* +| `\enspace` | ½ em space | `\phantom{content}` | space the width and height of content +| `\quad` | 1 em space | `\hphantom{content}` | space the width of content +| `\qquad` | 2 em space | `\vphantom{content}` | a strut the height of content +| `~` | non-breaking space | `\!` | – ³∕₁₈ em space +| `\` | space | `\negthinspace` | – ³∕₁₈ em space +| `\nobreakspace` | non-breaking space | `\negmedspace` | – ⁴∕₁₈ em space +| `\space` | space | `\negthickspace` | – ⁵∕₁₈ em space + +
**Notes:** `distance` will accept any of the [KaTeX units](#units). -`\kern`, `\mkern`, and `\hspace` accept unbraced distances, as in: `\kern1em`. +`\kern`, `\mkern`, `\mskip`, and `\hspace` accept unbraced distances, as in: `\kern1em`. `\mkern` and `\mskip` will not work in text mode and both will write a console warning for any unit except `mu`. +
+ ## Logic and Set Theory ||||| -|:--------------------|:--------------------------|:----------------------------------|:----- -|$\forall$ `\forall` |$\complement$ `\complement`|$\therefore$ `\therefore` |$\neg$ `\neg` or `\lnot` -|$\exists$ `\exists` |$\subset$ `\subset` |$\because$ `\because` |$\emptyset$ `\emptyset` -|$\nexists$ `\nexists`|$\supset$ `\supset` |$\mapsto$ `\mapsto` |$\varnothing$ `\varnothing` -|$\in$ `\in` |$\mid$ `\mid` |$\to$ `\to`|$\implies$ `\implies` -|$\notin$ `\notin` |$\land$ `\land`|$\gets$ `\gets` |$\impliedby$ `\impliedby` -|$\ni$ `\ni` |$\lor$ `\lor` |$\leftrightarrow$ `\leftrightarrow`|$\iff$ `\iff` -|$\notni$ `\notni` | +|:--------------------|:--------------------------|:----------------------------|:----- +|$\forall$ `\forall` |$\complement$ `\complement`|$\therefore$ `\therefore` |$\emptyset$ `\emptyset` +|$\exists$ `\exists` |$\subset$ `\subset` |$\because$ `\because` |$\empty$ `\empty` +|$\exist$ `\exist` |$\supset$ `\supset` |$\mapsto$ `\mapsto` |$\varnothing$ `\varnothing` +|$\nexists$ `\nexists`|$\mid$ `\mid` |$\to$ `\to` |$\implies$ `\implies` +|$\in$ `\in` |$\land$ `\land` |$\gets$ `\gets` |$\impliedby$ `\impliedby` +|$\isin$ `\isin` |$\lor$ `\lor` |$\leftrightarrow$ `\leftrightarrow`|$\iff$ `\iff` +|$\notin$ `\notin` |$\ni$ `\ni` |$\notni$ `\notni` |$\neg$ `\neg` or `\lnot` -Direct Input:`∀ ∴ ∁ ∵ ∃ ∣ ∈ ∉ ∋ ⊂ ⊃ ∧ ∨ ↦ → ← ↔ ¬ ℂ ℍ ℕ ℙ ℚ ℝ ℤ` +Direct Input: $∀ ∴ ∁ ∵ ∃ ∣ ∈ ∉ ∋ ⊂ ⊃ ∧ ∨ ↦ → ← ↔ ¬$ ℂ ℍ ℕ ℙ ℚ ℝ ## Macros @@ -241,20 +276,20 @@ Direct Input:`∀ ∴ ∁ ∵ ∃ ∣ ∈ ∉ ∋ ⊂ ⊃ ∧ ∨ ↦ → ← |:-------------------------------------|:------ |$\def\foo{x^2} \foo + \foo$ | `\def\foo{x^2} \foo + \foo` |$\gdef\bar#1{#1^2} \bar{y} + \bar{y}$ | `\gdef\bar#1{#1^2} \bar{y} + \bar{y}` -|$~$ | `\global\def\macroname#1#2…{definition}` -|$~$ | `\newcommand\macroname[numargs]{definition}` -|$~$ | `\renewcommand\macroname[numargs]{definition}` -|$~$ | `\providecommand\macroname[numargs]{definition}` +| | `\global\def\macroname#1#2…{definition}` +| | `\newcommand\macroname[numargs]{definition}` +| | `\renewcommand\macroname[numargs]{definition}` +| | `\providecommand\macroname[numargs]{definition}` Macros can also be defined in the KaTeX [rendering options](options.md). -Macros accept up to ten arguments: #1, #2, etc. +Macros accept up to nine arguments: #1, #2, etc. `\gdef` and `\global\def` macros will persist between math expressions. Available functions include: -`\mathchoice` `\TextOrMath` `\@ifstar` `\@ifnextchar` `\@firstoftwo` `\@secondoftwo` `\relax` +`\char` `\mathchoice` `\TextOrMath` `\@ifstar` `\@ifnextchar` `\@firstoftwo` `\@secondoftwo` `\relax` @ is a valid character for commands, as if `\makeatletter` were in effect. @@ -263,12 +298,12 @@ Available functions include: ### Big Operators ||||| -|----------|-------------|-------------|--------------| -| $\sum$ `\sum` | $\prod$ `\prod`| $\bigvee$ `\bigvee` | $\bigotimes$ `\bigotimes` -| $\int$ `\int` | $\coprod$ `\coprod` | $\bigwedge$ `\bigwedge` | $\bigoplus$ `\bigoplus` -| $\iint$ `\iint`| $\intop$ `\intop` | $\bigcap$ `\bigcap` | $\bigodot$ `\bigodot` -| $\iiint$ `\iiint` | $\smallint$ `\smallint` | $\bigcup$ `\bigcup` | $\biguplus$ `\biguplus` -| $\oint$ `\oint`| | $\bigsqcup$ `\bigsqcup` || +|------------------|-------------------------|--------------------------|--------------| +| $\sum$ `\sum` | $\prod$ `\prod` | $\bigotimes$ `\bigotimes`| $\bigvee$ `\bigvee` +| $\int$ `\int` | $\coprod$ `\coprod` | $\bigoplus$ `\bigoplus` | $\bigwedge$ `\bigwedge` +| $\iint$ `\iint` | $\intop$ `\intop` | $\bigodot$ `\bigodot` | $\bigcap$ `\bigcap` +| $\iiint$ `\iiint`| $\smallint$ `\smallint` | $\biguplus$ `\biguplus` | $\bigcup$ `\bigcup` +| $\oint$ `\oint` | $\oiint$ `\oiint` | $\oiiint$ `\oiiint` | $\bigsqcup$ `\bigsqcup` Direct Input: $∫ ∬ ∭ ∮ ∏ ∐ ∑ ⋀ ⋁ ⋂ ⋃ ⨀ ⨁ ⨂ ⨄ ⨆$ @@ -292,21 +327,22 @@ Direct Input: $∫ ∬ ∭ ∮ ∏ ∐ ∑ ⋀ ⋁ ⋂ ⋃ ⨀ ⨁ ⨂ ⨄ ⨆$ | $\boxtimes$ `\boxtimes` | $\dotplus$ `\dotplus` | $\oplus$ `\oplus` | $\vee$ `\vee` | | $\bullet$ `\bullet`| $\doublebarwedge$ `\doublebarwedge` | $\otimes$ `\otimes`| $\veebar$ `\veebar` | | $\Cap$ `\Cap`| $\doublecap$ `\doublecap`| $\oslash$ `\oslash`| $\wedge$ `\wedge` | -| $\cap$ `\cap`| $\doublecup$ `\doublecup`| $\pm$ `\pm` | $\wr$ `\wr` | +| $\cap$ `\cap`| $\doublecup$ `\doublecup`| $\pm$ `\pm` or `\plusmn` | $\wr$ `\wr` | Direct Input: $+ - / * ⋅ ± × ÷ ∓ ∔ ∧ ∨ ∩ ∪ ≀ ⊎ ⊓ ⊔ ⊕ ⊖ ⊗ ⊘ ⊙ ⊚ ⊛ ⊝$ -### Fractions and Binomial Coefficients +### Fractions and Binomials |||| |:--------------------------|:----------------------------|:----- -|$\frac{a}{b}$ `\frac{a}{b}`|$\tfrac{a}{b}$ `\tfrac{a}{b}`|$a/b$ `a/b` -|${a \over b}$ `{a \over b}`|$\dfrac{a}{b}$ `\dfrac{a}{b}`|$\cfrac{a}{1 + \cfrac{1}{b}}$ `\cfrac{a}{1 + \cfrac{1}{b}}` +|$\frac{a}{b}$ `\frac{a}{b}`|$\tfrac{a}{b}$ `\tfrac{a}{b}`|$\genfrac ( ] {2pt}{1}a{a+1}$ `\genfrac ( ] {2pt}{1}a{a+1}` +|${a \over b}$ `{a \over b}`|$\dfrac{a}{b}$ `\dfrac{a}{b}`|${a \above{2pt} b+1}$ `{a \above{2pt} b+1}` +|$a/b$ `a/b` | |$\cfrac{a}{1 + \cfrac{1}{b}}$ `\cfrac{a}{1 + \cfrac{1}{b}}` -||| -|:------------------------------|:----- -|$\binom{n}{k}$ `\binom{n}{k}` |$\dbinom{n}{k}$ `\dbinom{n}{k}` -|${n \choose k}$ `{n \choose k}`|$\tbinom{n}{k}$ `\tbinom{n}{k}` +|||| +|:------------------------------|:------------------------------|:-------- +|$\binom{n}{k}$ `\binom{n}{k}` |$\dbinom{n}{k}$ `\dbinom{n}{k}`|${n\brace k}$ `{n\brace k}` +|${n \choose k}$ `{n \choose k}`|$\tbinom{n}{k}$ `\tbinom{n}{k}`|${n\brack k}$ `{n\brack k}` ### Math Operators @@ -341,8 +377,8 @@ $\stackrel{!}{=}$ `\stackrel{!}{=}` |$=$ `=` |$\eqcirc$ `\eqcirc` |$\lesseqgtr$ `\lesseqgtr` |$\sqsupset$ `\sqsupset` |$<$ `<` |$\eqcolon$ `\eqcolon`|$\lesseqqgtr$ `\lesseqqgtr`|$\sqsupseteq$ `\sqsupseteq` |$>$ `>` |$\Eqcolon$ `\Eqcolon`|$\lessgtr$ `\lessgtr`|$\Subset$ `\Subset` -|$:$ `:` |$\eqqcolon$ `\eqqcolon` |$\lesssim$ `\lesssim`|$\subset$ `\subset` -|$\approx$ `\approx` |$\Eqqcolon$ `\Eqqcolon` |$\ll$ `\ll` |$\subseteq$ `\subseteq` +|$:$ `:` |$\eqqcolon$ `\eqqcolon` |$\lesssim$ `\lesssim`|$\subset$ `\subset` or `\sub` +|$\approx$ `\approx` |$\Eqqcolon$ `\Eqqcolon` |$\ll$ `\ll` |$\subseteq$ `\subseteq` or `\sube` |$\approxeq$ `\approxeq`|$\eqsim$ `\eqsim` |$\lll$ `\lll` |$\subseteqq$ `\subseteqq` |$\asymp$ `\asymp`|$\eqslantgtr$ `\eqslantgtr`|$\llless$ `\llless` |$\succ$ `\succ` |$\backepsilon$ `\backepsilon`|$\eqslantless$ `\eqslantless` |$\lt$ `\lt` |$\succapprox$ `\succapprox` @@ -351,7 +387,7 @@ $\stackrel{!}{=}$ `\stackrel{!}{=}` |$\between$ `\between` |$\frown$ `\frown` |$\multimap$ `\multimap` |$\succsim$ `\succsim` |$\bowtie$ `\bowtie` |$\ge$ `\ge` |$\owns$ `\owns`|$\Supset$ `\Supset` |$\bumpeq$ `\bumpeq` |$\geq$ `\geq` |$\parallel$ `\parallel` |$\supset$ `\supset` -|$\Bumpeq$ `\Bumpeq` |$\geqq$ `\geqq`|$\perp$ `\perp`|$\supseteq$ `\supseteq` +|$\Bumpeq$ `\Bumpeq` |$\geqq$ `\geqq`|$\perp$ `\perp`|$\supseteq$ `\supseteq` or `\supe` |$\circeq$ `\circeq` |$\geqslant$ `\geqslant` |$\pitchfork$ `\pitchfork` |$\supseteqq$ `\supseteqq` |$\colonapprox$ `\colonapprox`|$\gg$ `\gg` |$\prec$ `\prec`|$\thickapprox$ `\thickapprox` |$\Colonapprox$ `\Colonapprox`|$\ggg$ `\ggg` |$\precapprox$ `\precapprox`|$\thicksim$ `\thicksim` @@ -362,7 +398,7 @@ $\stackrel{!}{=}$ `\stackrel{!}{=}` |$\colonsim$ `\colonsim`|$\gtreqqless$ `\gtreqqless`|$\risingdotseq$ `\risingdotseq` |$\vartriangle$ `\vartriangle` |$\Colonsim$ `\Colonsim`|$\gtrless$ `\gtrless`|$\shortmid$ `\shortmid` |$\vartriangleleft$ `\vartriangleleft` |$\cong$ `\cong` |$\gtrsim$ `\gtrsim` |$\shortparallel$ `\shortparallel`|$\vartriangleright$ `\vartriangleright` -|$\curlyeqprec$ `\curlyeqprec`|$\in$ `\in` |$\sim$ `\sim` |$\vcentcolon$ `\vcentcolon` +|$\curlyeqprec$ `\curlyeqprec`|$\in$ `\in` or `\isin` |$\sim$ `\sim` |$\vcentcolon$ `\vcentcolon` |$\curlyeqsucc$ `\curlyeqsucc`|$\Join$ `\Join`|$\simeq$ `\simeq` |$\vdash$ `\vdash` |$\dashv$ `\dashv`|$\le$ `\le` |$\smallfrown$ `\smallfrown`|$\vDash$ `\vDash` |$\dblcolon$ `\dblcolon`|$\leq$ `\leq` |$\smallsmile$ `\smallsmile`|$\Vdash$ `\Vdash` @@ -371,9 +407,7 @@ $\stackrel{!}{=}$ `\stackrel{!}{=}` |$\doteqdot$ `\doteqdot`|$\lessapprox$ `\lessapprox`|$\sqsubseteq$ `\sqsubseteq`| -Direct Input: $= < > : ∈ ∋ ∝ ∼ ∽ ≂ ≃ ≅ ≈ ≊ ≍ ≎ ≏ ≐ ≑ ≒ ≓ ≖ ≗ ≜ ≡ ≤ ≥ ≦ ≧$
-$≫ ≬ ≳ ≷ ≺ ≻ ≼ ≽ ≾ ≿ ⊂ ⊃ ⊆ ⊇ ⊏ ⊐ ⊑ ⊒ ⊢ ⊣ ⊩ ⊪ ⊸ ⋈ ⋍ ⋐ ⋑ ⋔ ⋙ ⋛ ⋞ ⋟ ⌢ ⌣$
-$⩾ ⪆ ⪌ ⪕ ⪖ ⪯ ⪰ ⪷ ⪸ ⫅ ⫆ ≲ ⩽ ⪅ ≶ ⋚ ⪋ ⟂ ⊨ ≔ ≕ ⩴$ +Direct Input: $= < > : ∈ ∋ ∝ ∼ ∽ ≂ ≃ ≅ ≈ ≊ ≍ ≎ ≏ ≐ ≑ ≒ ≓ ≖ ≗ ≜ ≡ ≤ ≥ ≦ ≧ ≫ ≬ ≳ ≷ ≺ ≻ ≼ ≽ ≾ ≿ ⊂ ⊃ ⊆ ⊇ ⊏ ⊐ ⊑ ⊒ ⊢ ⊣ ⊩ ⊪ ⊸ ⋈ ⋍ ⋐ ⋑ ⋔ ⋙ ⋛ ⋞ ⋟ ⌢ ⌣ ⩾ ⪆ ⪌ ⪕ ⪖ ⪯ ⪰ ⪷ ⪸ ⫅ ⫆ ≲ ⩽ ⪅ ≶ ⋚ ⪋ ⟂ ⊨$ `≔ ≕ ⩴` ### Negated Relations @@ -397,43 +431,45 @@ $\not =$ `\not =` | $\ngeq$ `\ngeq`| $\nshortparallel$ `\nshortparallel` | $\nVdash$ `\nVdash` | | $\ngeqq$ `\ngeqq` | $\nsim$ `\nsim` | $\precnapprox$ `\precnapprox`| -Direct Input: $∉ ∌ ∤ ∦ ≁ ≆ ≠ ≨ ≩ ≮ ≯ ≰ ≱ ⊀ ⊁ ⊈ ⊉ ⊊ ⊋ ⊬ ⊭ ⊮ ⊯ ⋠ ⋡$
-$⋦ ⋧ ⋨ ⋩ ⋬ ⋭ ⪇ ⪈ ⪉ ⪊ ⪵ ⪶ ⪹ ⪺ ⫋ ⫌$ +Direct Input: $∉ ∌ ∤ ∦ ≁ ≆ ≠ ≨ ≩ ≮ ≯ ≰ ≱ ⊀ ⊁ ⊈ ⊉ ⊊ ⊋ ⊬ ⊭ ⊮ ⊯ ⋠ ⋡ ⋦ ⋧ ⋨ ⋩ ⋬ ⋭ ⪇ ⪈ ⪉ ⪊ ⪵ ⪶ ⪹ ⪺ ⫋ ⫌$ ### Arrows |||| -|:--------------------------------------|:--------------------------------------------|:----- -|$\circlearrowleft$ `\circlearrowleft` |$\Leftrightarrow$ `\Leftrightarrow` |$\rightarrow$ `\rightarrow` -|$\circlearrowright$ `\circlearrowright`|$\leftrightarrows$ `\leftrightarrows` |$\Rightarrow$ `\Rightarrow` -|$\curvearrowleft$ `\curvearrowleft` |$\leftrightharpoons$ `\leftrightharpoons` |$\rightarrowtail$ `\rightarrowtail` -|$\curvearrowright$ `\curvearrowright` |$\leftrightsquigarrow$ `\leftrightsquigarrow`|$\rightharpoondown$ `\rightharpoondown` +|:----------|:----------|:----------| +|$\circlearrowleft$ `\circlearrowleft`|$\leftharpoonup$ `\leftharpoonup`|$\rArr$ `\rArr` +|$\circlearrowright$ `\circlearrowright`|$\leftleftarrows$ `\leftleftarrows`|$\rarr$ `\rarr` +|$\curvearrowleft$ `\curvearrowleft`|$\leftrightarrow$ `\leftrightarrow`|$\restriction$ `\restriction` +|$\curvearrowright$ `\curvearrowright`|$\Leftrightarrow$ `\Leftrightarrow`|$\rightarrow$ `\rightarrow` +|$\Darr$ `\Darr`|$\leftrightarrows$ `\leftrightarrows`|$\Rightarrow$ `\Rightarrow` +|$\dArr$ `\dArr`|$\leftrightharpoons$ `\leftrightharpoons`|$\rightarrowtail$ `\rightarrowtail` +|$\darr$ `\darr`|$\leftrightsquigarrow$ `\leftrightsquigarrow`|$\rightharpoondown$ `\rightharpoondown` |$\dashleftarrow$ `\dashleftarrow`|$\Lleftarrow$ `\Lleftarrow`|$\rightharpoonup$ `\rightharpoonup` -|$\dashrightarrow$ `\dashrightarrow` |$\longleftarrow$ `\longleftarrow`|$\rightleftarrows$ `\rightleftarrows` -|$\downarrow$ `\downarrow` |$\Longleftarrow$ `\Longleftarrow`|$\rightleftharpoons$ `\rightleftharpoons` -|$\Downarrow$ `\Downarrow` |$\longleftrightarrow$ `\longleftrightarrow` |$\rightrightarrows$ `\rightrightarrows` -|$\downdownarrows$ `\downdownarrows` |$\Longleftrightarrow$ `\Longleftrightarrow` |$\rightsquigarrow$ `\rightsquigarrow` -|$\downharpoonleft$ `\downharpoonleft` |$\longmapsto$ `\longmapsto`|$\Rrightarrow$ `\Rrightarrow` -|$\downharpoonright$ `\downharpoonright`|$\longrightarrow$ `\longrightarrow` |$\Rsh$ `\Rsh` -|$\gets$ `\gets`|$\Longrightarrow$ `\Longrightarrow` |$\searrow$ `\searrow` -|$\hookleftarrow$ `\hookleftarrow`|$\looparrowleft$ `\looparrowleft`|$\swarrow$ `\swarrow` -|$\hookrightarrow$ `\hookrightarrow` |$\looparrowright$ `\looparrowright` |$\to$ `\to` -|$\iff$ `\iff` |$\Lsh$ `\Lsh` |$\twoheadleftarrow$ `\twoheadleftarrow` -|$\impliedby$ `\impliedby` |$\mapsto$ `\mapsto` |$\twoheadrightarrow$ `\twoheadrightarrow` +|$\dashrightarrow$ `\dashrightarrow`|$\longleftarrow$ `\longleftarrow`|$\rightleftarrows$ `\rightleftarrows` +|$\downarrow$ `\downarrow`|$\Longleftarrow$ `\Longleftarrow`|$\rightleftharpoons$ `\rightleftharpoons` +|$\Downarrow$ `\Downarrow`|$\longleftrightarrow$ `\longleftrightarrow`|$\rightrightarrows$ `\rightrightarrows` +|$\downdownarrows$ `\downdownarrows`|$\Longleftrightarrow$ `\Longleftrightarrow`|$\rightsquigarrow$ `\rightsquigarrow` +|$\downharpoonleft$ `\downharpoonleft`|$\longmapsto$ `\longmapsto`|$\Rrightarrow$ `\Rrightarrow` +|$\downharpoonright$ `\downharpoonright`|$\longrightarrow$ `\longrightarrow`|$\Rsh$ `\Rsh` +|$\gets$ `\gets`|$\Longrightarrow$ `\Longrightarrow`|$\searrow$ `\searrow` +|$\Harr$ `\Harr`|$\looparrowleft$ `\looparrowleft`|$\swarrow$ `\swarrow` +|$\hArr$ `\hArr`|$\looparrowright$ `\looparrowright`|$\to$ `\to` +|$\harr$ `\harr`|$\Lrarr$ `\Lrarr`|$\twoheadleftarrow$ `\twoheadleftarrow` +|$\hookleftarrow$ `\hookleftarrow`|$\lrArr$ `\lrArr`|$\twoheadrightarrow$ `\twoheadrightarrow` +|$\hookrightarrow$ `\hookrightarrow`|$\lrarr$ `\lrarr`|$\Uarr$ `\Uarr` +|$\iff$ `\iff`|$\Lsh$ `\Lsh`|$\uArr$ `\uArr` +|$\impliedby$ `\impliedby`|$\mapsto$ `\mapsto`|$\uarr$ `\uarr` |$\implies$ `\implies`|$\nearrow$ `\nearrow`|$\uparrow$ `\uparrow` -|$\leadsto$ `\leadsto`|$\nleftarrow$ `\nleftarrow`|$\Uparrow$ `\Uparrow` -|$\leftarrow$ `\leftarrow` |$\nLeftarrow$ `\nLeftarrow`|$\updownarrow$ `\updownarrow` -|$\Leftarrow$ `\Leftarrow` |$\nleftrightarrow$ `\nleftrightarrow` |$\Updownarrow$ `\Updownarrow` -|$\leftarrowtail$ `\leftarrowtail`|$\nLeftrightarrow$ `\nLeftrightarrow` |$\upharpoonleft$ `\upharpoonleft` -|$\leftharpoondown$ `\leftharpoondown` |$\nrightarrow$ `\nrightarrow` |$\upharpoonright$ `\upharpoonright` -|$\leftharpoonup$ `\leftharpoonup`|$\nRightarrow$ `\nRightarrow` |$\upuparrows$ `\upuparrows` -|$\leftleftarrows$ `\leftleftarrows` |$\nwarrow$ `\nwarrow`| -|$\leftrightarrow$ `\leftrightarrow` |$\restriction$ `\restriction` | +|$\Larr$ `\Larr`|$\nleftarrow$ `\nleftarrow`|$\Uparrow$ `\Uparrow` +|$\lArr$ `\lArr`|$\nLeftarrow$ `\nLeftarrow`|$\updownarrow$ `\updownarrow` +|$\larr$ `\larr`|$\nleftrightarrow$ `\nleftrightarrow`|$\Updownarrow$ `\Updownarrow` +|$\leadsto$ `\leadsto`|$\nLeftrightarrow$ `\nLeftrightarrow`|$\upharpoonleft$ `\upharpoonleft` +|$\leftarrow$ `\leftarrow`|$\nrightarrow$ `\nrightarrow`|$\upharpoonright$ `\upharpoonright` +|$\Leftarrow$ `\Leftarrow`|$\nRightarrow$ `\nRightarrow`|$\upuparrows$ `\upuparrows` +|$\leftarrowtail$ `\leftarrowtail`|$\nwarrow$ `\nwarrow` +|$\leftharpoondown$ `\leftharpoondown`|$\Rarr$ `\Rarr` - -Direct Input∷ $← ↑ → ↓ ↔ ↕ ↖ ↗ ↘ ↙ ↚ ↛ ↞ ↠ ↢ ↣ ↦ ↩ ↪ ↫ ↬ ↭ ↮ ↰ ↱$
-$↶ ↷ ↺ ↻ ↼ ↽ ↾ ↾ ↿ ⇀ ⇁ ⇂ ⇃ ⇄ ⇆ ⇇ ⇈ ⇉ ⇊ ⇋ ⇌$
-$⇍ ⇎ ⇏ ⇐ ⇑ ⇒ ⇓ ⇔ ⇕ ⇚ ⇛ ⇝ ⇠ ⇢ ⟵ ⟶ ⟷ ⟸ ⟹ ⟺ ⟼$ ↽ +Direct Input: $← ↑ → ↓ ↔ ↕ ↖ ↗ ↘ ↙ ↚ ↛ ↞ ↠ ↢ ↣ ↦ ↩ ↪ ↫ ↬ ↭ ↮ ↰ ↱↶ ↷ ↺ ↻ ↼ ↽ ↾ ↾ ↿ ⇀ ⇁ ⇂ ⇃ ⇄ ⇆ ⇇ ⇈ ⇉ ⇊ ⇋ ⇌⇍ ⇎ ⇏ ⇐ ⇑ ⇒ ⇓ ⇔ ⇕ ⇚ ⇛ ⇝ ⇠ ⇢ ⟵ ⟶ ⟷ ⟸ ⟹ ⟺ ⟼$ ↽ **Extensible Arrows** @@ -471,24 +507,26 @@ $\textcolor{#228B22}{F=ma}$ `\textcolor{#228B22}{F=ma}`
$\colorbox{aqua}{A}$ `\colorbox{aqua}{A}`
$\fcolorbox{red}{aqua}{A}$ `\fcolorbox{red}{aqua}{A}` -For color definition, KaTeX color functions will accept the standard HTML [predefined color names](https://www.w3schools.com/colors/colors-names.asp). They will also accept an RGB argument in CSS hexa­decimal style. +For color definition, KaTeX color functions will accept the standard HTML [predefined color names](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#Color_keywords). They will also accept an RGB argument in CSS hexa­decimal style. **Font** |||| -|:----------------------------------|:----------------------------------|:----- -|$\mathrm{AB}$ `\mathrm{AB}` |$\mathbf{AB}$ `\mathbf{AB}` |$\mathit{AB}$ `\mathit{AB}` -|$\textrm{AB}$ `\textrm{AB}` |$\textbf{AB}$ `\textbf{AB}` |$\textit{AB}$ `\textit{AB}` -|$\rm AB$ `\rm AB`|$\bf AB$ `\bf AB`|$\it AB$ `\it AB` -|$\textnormal{AB}$ `\textnormal{AB}`|$\bold{AB}$ `\bold{AB}`|$\Bbb{AB}$ `\Bbb{AB}` -|$\text{AB}$ `\text{AB}`|$\boldsymbol{AB}$ `\boldsymbol{AB}`|$\mathbb{AB}$ `\mathbb{AB}` -|$\mathsf{AB}$ `\mathsf{AB}` |$\bm{AB}$ `\bm{AB}` |$\frak{AB}$ `\frak{AB}` -|$\textsf{AB}$ `\textsf{AB}` |$\mathtt{AB}$ `\mathtt{AB}` |$\mathfrak{AB}$ `\mathfrak{AB}` -|$\sf AB$ `\sf AB`|$\texttt{AB}$ `\texttt{AB}` |$\mathcal{AB}$ `\mathcal{AB}` -| |$\tt AB$ `\tt AB`|$\mathscr{AB}$ `\mathscr{AB}` +|:------------------------------|:------------------------------|:----- +|$\mathrm{Ab0}$ `\mathrm{Ab0}` |$\mathbf{Ab0}$ `\mathbf{Ab0}` |$\mathit{Ab}$ `\mathit{Ab}` +|$\textrm{Ab0}$ `\textrm{Ab0}` |$\textbf{Ab0}$ `\textbf{Ab0}` |$\textit{Ab}$ `\textit{Ab}` +|$\rm Ab0$ `\rm Ab0` |$\bf Ab0$ `\bf Ab0` |$\it Ab$ `\it Ab` +|$\textnormal{Ab0}$ `\textnormal{Ab0}`|$\bold{Ab0}$ `\bold{Ab0}`|$\Bbb{AB}$ `\Bbb{AB}` +|$\text{Ab0}$ `\text{Ab0}` |$\boldsymbol{Ab}$ `\boldsymbol{Ab}`|$\mathbb{AB}$ `\mathbb{AB}` +|$\mathsf{Ab0}$ `\mathsf{Ab0}` |$\bm{Ab}$ `\bm{Ab}` |$\frak{Ab0}$ `\frak{Ab0}` +|$\textsf{Ab0}$ `\textsf{Ab0}` |$\mathtt{Ab0}$ `\mathtt{Ab0}` |$\mathfrak{Ab0}$ `\mathfrak{Ab0}` +|$\sf Ab0$ `\sf Ab0` |$\texttt{Ab0}$ `\texttt{Ab0}` |$\mathcal{AB0}$ `\mathcal{AB0}` +| |$\tt Ab0$ `\tt Ab0` |$\mathscr{AB}$ `\mathscr{AB}` One can stack font family, font weight, and font shape by using the `\textXX` versions of the font functions. So `\textsf{\textbf{H}}` will produce $\textsf{\textbf{H}}$. The other versions do not stack, e.g., `\mathsf{\mathbf{H}}` will produce $\mathsf{\mathbf{H}}$. +In cases where KaTeX fonts do not have a bold glyph, `\pmb` can simulate one. For example, `\pmb{\mu}` renders as : $\pmb{\mu}$ + **Size** ||| @@ -502,55 +540,59 @@ One can stack font family, font weight, and font shape by using the `\textXX` v **Style** -||| -|:-------------------------------------------------------|:------ -|$\displaystyle\sum_{i=1}^n$ `\displaystyle\sum_{i=1}^n` | $~$ -|$\textstyle\sum_{i=1}^n$ `\textstyle\sum_{i=1}^n` | $~$ -|$\scriptstyle x$ `\scriptstyle x` | The size of a first sub/superscript | -|$\scriptscriptstyle x$ `\scriptscriptstyle x` | The size of subsequent sub/superscripts | -|$\lim\limits_x$ `\lim\limits_x` | $~$ -|$\lim\nolimits_x$ `\lim\nolimits_x`| $~$ -|$\verb!x^2!$ `\verb!x^2!` | $~$ +|| +|:-------------------------------------------------------| +|$\displaystyle\sum_{i=1}^n$ `\displaystyle\sum_{i=1}^n` +|$\textstyle\sum_{i=1}^n$ `\textstyle\sum_{i=1}^n` +|$\scriptstyle x$ `\scriptstyle x`         (The size of a first sub/superscript) +|$\scriptscriptstyle x$ `\scriptscriptstyle x` (The size of subsequent sub/superscripts) +|$\lim\limits_x$ `\lim\limits_x` +|$\lim\nolimits_x$ `\lim\nolimits_x` +|$\verb!x^2!$ `\verb!x^2!` `\text{…}` will accept nested `$…$` fragments and render them in math mode. ## Symbols and Punctuation |||| -|:------------------------------------------------------|:--------------------------------------------|:----- -| `% comment` |$\dots$ `\dots`|$\nabla$ `\nabla` -|$\%$ `\%` |$\cdots$ `\cdots` |$\infty$ `\infty` -|$\#$ `\#` |$\ddots$ `\ddots` |$\checkmark$ `\checkmark` -|$\&$ `\&` |$\ldots$ `\ldots` |$\dag$ `\dag` -|$\_$ `\_` |$\vdots$ `\vdots` |$\dagger$ `\dagger` -|$\text{\textunderscore}$ `\text{\textunderscore}`|$\mathellipsis$ `\mathellipsis` |$\text{\textdagger}$ `\text{\textdagger}` -|$\text{--}$ `\text{--}` |$\text{\textellipsis}$ `\text{\textellipsis}`|$\ddag$ `\ddag` -|$\text{\textendash}$ `\text{\textendash}` |$\Box$ `\Box` |$\ddagger$ `\ddagger` -|$\text{---}$ `\text{---}`|$\square$ `\square` |$\text{\textdaggerdbl}$ `\text{\textdaggerdbl}` -|$\text{\textemdash}$ `\text{\textemdash}` |$\blacksquare$ `\blacksquare` |$\angle$ `\angle` -|$\text{\textasciitilde}$ `\text{\textasciitilde}`|$\triangle$ `\triangle` |$\measuredangle$ `\measuredangle` -|$`$ `|$\triangledown$ `\triangledown` |$\sphericalangle$ `\sphericalangle` -|$\text{\textquoteleft}$ `\text{\textquoteleft}` |$\triangleleft$ `\triangleleft` |$\top$ `\top` -|$\lq$ `\lq` |$\triangleright$ `\triangleright`|$\bot$ `\bot` -|$\text{\textquoteright}$ `\text{\textquoteright}`|$\bigtriangledown$ `\bigtriangledown` |$\$$ `\$` -|$\rq$ `\rq` |$\bigtriangleup$ `\bigtriangleup`|$\text{\textdollar}$ `\text{\textdollar}` -|$\text{\textquotedblleft}$ `\text{\textquotedblleft}` |$\blacktriangle$ `\blacktriangle`|$\pounds$ `\pounds` -|$"$ `"`|$\blacktriangledown$ `\blacktriangledown` |$\text{\textsterling}$ `\text{\textsterling}` -|$\text{\textquotedblright}$ `\text{\textquotedblright}`|$\blacktriangleleft$ `\blacktriangleleft` |$\yen$ `\yen` -|$\colon$ `\colon` |$\blacktriangleright$ `\blacktriangleright` |$\surd$ `\surd` -|$\backprime$ `\backprime`|$\diamond$ `\diamond`|$\degree$ `\degree` -|$\prime$ `\prime` |$\Diamond$ `\Diamond`|$\diagdown$ `\diagdown` -|$\text{\textless}$ `\text{\textless}`|$\lozenge$ `\lozenge`|$\diagup$ `\diagup` -|$\text{\textgreater}$ `\text{\textgreater}`|$\blacklozenge$ `\blacklozenge` |$\flat$ `\flat` -|$\text{\textbar}$ `\text{\textbar}` |$\star$ `\star`|$\natural$ `\natural` -|$\text{\textbardbl}$ `\text{\textbardbl}` |$\bigstar$ `\bigstar`|$\sharp$ `\sharp` -|$\text{\textbraceleft}$ `\text{\textbraceleft}` |$\clubsuit$ `\clubsuit` |$\copyright$ `\copyright` -|$\text{\textbraceright}$ `\text{\textbraceright}`|$\diamondsuit$ `\diamondsuit` |$\circledR$ `\circledR` -|$\text{\P}$ `\text{\P}` |$\heartsuit$ `\heartsuit` |$\text{\textregistered}$ `\text{\textregistered}` -|$\text{\S}$ `\text{\S}` |$\spadesuit$ `\spadesuit` |$\circledS$ `\circledS` -|$\maltese$ `\maltese` |$\mho$ `\mho` |$\text{\textcircled a}$ `\text{\textcircled a}` - -$\KaTeX$ `\KaTeX` $\LaTeX$ `\LaTeX`$\TeX$ `\TeX` +|:----------|:----------|:----------| +|`% comment`|$\dots$ `\dots`|$\KaTeX$ `\KaTeX` +|$\%$ `\%`|$\cdots$ `\cdots`|$\LaTeX$ `\LaTeX` +|$\#$ `\#`|$\ddots$ `\ddots`|$\TeX$ `\TeX` +|$\&$ `\&`|$\ldots$ `\ldots`|$\nabla$ `\nabla` +|$\_$ `\_`|$\vdots$ `\vdots`|$\infty$ `\infty` +|$\text{\textunderscore}$ `\text{\textunderscore}`|$\dotsb$ `\dotsb`|$\infin$ `\infin` +|$\text{--}$ `\text{--}`|$\dotsc$ `\dotsc`|$\checkmark$ `\checkmark` +|$\text{\textendash}$ `\text{\textendash}`|$\dotsi$ `\dotsi`|$\dag$ `\dag` +|$\text{---}$ `\text{---}`|$\dotsm$ `\dotsm`|$\dagger$ `\dagger` +|$\text{\textemdash}$ `\text{\textemdash}`|$\dotso$ `\dotso`|$\text{\textdagger}$ `\text{\textdagger}` +|$\text{\textasciitilde}$ `\text{\textasciitilde}`|$\sdot$ `\sdot`|$\ddag$ `\ddag` +|$`$ `|$\mathellipsis$ `\mathellipsis`|$\ddagger$ `\ddagger` +|$\text{\textquoteleft}$ `text{\textquoteleft}`|$\text{\textellipsis}$ `\text{\textellipsis}`|$\text{\textdaggerdbl}$ `\text{\textdaggerdbl}` +|$\lq$ `\lq`|$\Box$ `\Box`|$\Dagger$ `\Dagger` +|$\text{\textquoteright}$ `\text{\textquoteright}`|$\square$ `\square`|$\angle$ `\angle` +|$\rq$ `\rq`|$\blacksquare$ `\blacksquare`|$\measuredangle$ `\measuredangle` +|$\text{\textquotedblleft}$ `\text{\textquotedblleft}`|$\triangle$ `\triangle`|$\sphericalangle$ `\sphericalangle` +|$"$ `"`|$\triangledown$ `\triangledown`|$\top$ `\top` +|$\text{\textquotedblright}$ `\text{\textquotedblright}`|$\triangleleft$ `\triangleleft`|$\bot$ `\bot` +|$\colon$ `\colon`|$\triangleright$ `\triangleright`|$\$$ `\$` +|$\backprime$ `\backprime`|$\bigtriangledown$ `\bigtriangledown`|$\text{\textdollar}$ `\text{\textdollar}` +|$\prime$ `\prime`|$\bigtriangleup$ `\bigtriangleup`|$\pounds$ `\pounds` +|$\text{\textless}$ `\text{\textless}`|$\blacktriangle$ `\blacktriangle`|$\mathsterling$ `\mathsterling` +|$\text{\textgreater}$ `\text{\textgreater}`|$\blacktriangledown$ `\blacktriangledown`|$\text{\textsterling}$ `\text{\textsterling}` +|$\text{\textbar}$ `\text{\textbar}`|$\blacktriangleleft$ `\blacktriangleleft`|$\yen$ `\yen` +|$\text{\textbardbl}$ `\text{\textbardbl}`|$\blacktriangleright$ `\blacktriangleright`|$\surd$ `\surd` +|$\text{\textbraceleft}$ `\text{\textbraceleft}`|$\diamond$ `\diamond`|$\degree$ `\degree` +|$\text{\textbraceright}$ `\text{\textbraceright}`|$\Diamond$ `\Diamond`|$\text{\textdegree}$ `\text{\textdegree}` +|$\text{\P}$ `\text{\P}`|$\lozenge$ `\lozenge`|$\mho$ `\mho` +|$\text{\S}$ `\text{\S}`|$\blacklozenge$ `\blacklozenge`|$\diagdown$ `\diagdown` +|$\text{\sect}$ `\text{\sect}`|$\star$ `\star`|$\diagup$ `\diagup` +|$\copyright$ `\copyright`|$\bigstar$ `\bigstar`|$\flat$ `\flat` +|$\circledR$ `\circledR`|$\clubsuit$ `\clubsuit`|$\natural$ `\natural` +|$\text{\textregistered}$ `\text{\textregistered}`|$\clubs$ `\clubs`|$\sharp$ `\sharp` +|$\circledS$ `\circledS`|$\diamondsuit$ `\diamondsuit`|$\heartsuit$ `\heartsuit` +|$\text{\textcircled a}$ `\text{\textcircled a}`|$\diamonds$ `\diamonds`|$\hearts$ `\hearts` +|$\maltese$ `\maltese`|$\spadesuit$ `\spadesuit`|$\spades$ `\spades` Direct Input: $£ ¥ ∇ ∞ · ∠ ∡ ∢ ♠ ♡ ♢ ♣ ♭ ♮ ♯ ✓ … ⋮ ⋯ ⋱ !$ ‼ @@ -559,28 +601,39 @@ Direct Input: $£ ¥ ∇ ∞ · ∠ ∡ ∢ ♠ ♡ ♢ ♣ ♭ ♮ ♯ ✓ … In KaTeX, units are proportioned as they are in TeX.
KaTeX units are different than CSS units. -| KaTeX Unit | Value | KaTeX Unit | Value | -|:--------------:|:------------------------|:--------------:|:--------------------| -| em | CSS em| bp | 1/72​ inch × F × G| -| ex | CSS ex| pc | 12 KaTeX pt| -| mu | 1/18 CSS em | dd | 1238/1157​ KaTeX pt | -| pt | 1/72.27 inch × F × G    | cc | 14856/1157 KaTeX pt | -| mm | 1 mm × F × G| nd | 685/642 KaTeX pt | -| cm | 1 cm × F × G| nc | 1370/107​ KaTeX pt| -| in | 1 inch × F × G | sp | 1/65536 KaTeX pt | +
+
+ +| KaTeX Unit | Value | KaTeX Unit | Value | +|:---|:---------------------|:---|:----------------| +| em | CSS em | bp | 1/72​ inch × F × G| +| ex | CSS ex | pc | 12 KaTeX pt| +| mu | 1/18 CSS em | dd | 1238/1157​ KaTeX pt | +| pt | 1/72.27 inch × F × G | cc | 14856/1157 KaTeX pt | +| mm | 1 mm × F × G | nd | 685/642 KaTeX pt | +| cm | 1 cm × F × G | nc | 1370/107​ KaTeX pt| +| in | 1 inch × F × G | sp | 1/65536 KaTeX pt | + +
where:
+ F = (font size of surrounding HTML text)/(10 pt) -G = 1.21 by default, because KaTeX font-size is normally 1.21 × the surrounding font size. This value [can be over-ridden](font.md#font-size-and-lengths) by the CSS of an HTML page. +G = 1.21 by default, because KaTeX font-size is normally 1.21 × the surrounding font size. This value [can be overridden](font.md#font-size-and-lengths) by the CSS of an HTML page. +
The effect of style and size: +
+ | Unit | textstyle | scriptscript | huge | -|:-------|:-----------------:|:------------:|:------:| +|:------:|:-----------------:|:------------:|:------:| |em or ex|$\rule{1em}{1em}$ |$\scriptscriptstyle\rule{1em}{1em}$ |$\huge\rule{1em}{1em}$ | mu |$\rule{18mu}{18mu}$|$\scriptscriptstyle\rule{18mu}{18mu}$|$\huge\rule{18mu}{18mu}$ | others |$\rule{10pt}{10pt}$|$\scriptscriptstyle\rule{10pt}{10pt}$|$\huge\rule{10pt}{10pt}$ + +
diff --git a/website/pages/index.html b/website/pages/index.html index c7cd8235..bae5aa8a 100644 --- a/website/pages/index.html +++ b/website/pages/index.html @@ -82,7 +82,7 @@ f(x) = \int_{-\infty}^\infty
-
+
diff --git a/website/static/css/custom.css b/website/static/css/custom.css index 351dab5a..1d3e70dd 100644 --- a/website/static/css/custom.css +++ b/website/static/css/custom.css @@ -26,6 +26,102 @@ height: 80%; } +/* Add special CSS for supported.md rendered on mobile */ +@media screen and (max-width: 480px) { + /* We have two styles for very narrow screens. + * We apply the hopscotch style to headless tables. It breaks + * tables down so that each cell acts like a
+ * + * We apply a card style to tables with headings. This converts + * each cell into its own row, with a heading to its left. + */ + + .katex-cards table td { + display: block; + border: none; + border-bottom: 1px solid #eee; + position: relative; + padding-left: 50%; + } + + .katex-hopscotch table td { + display: inline-block; + background: #fff; + } + + .katex-hopscotch table tr { + border: none; + background: #fff; + } + + .katex-cards table, + .katex-cards thead, + .katex-cards tbody, + .katex-cards th { + display: block; + } + + /* Hide table headers (but not display: none;, for accessibility) */ + .katex-cards thead tr { + display: block; + position: absolute; + top: -9999px; + left: -9999px; + } + + .katex-cards td:nth-of-type(1), + .katex-cards td:nth-of-type(2) { background-color: #fff; } + + .katex-cards td:nth-of-type(3), + .katex-cards td:nth-of-type(4) { background-color: #f6f8fa; } + + .katex-cards table td:nth-child(even) { border-bottom: 1px solid #ccc; } + + .katex-cards td::before { + /* Now like a table header */ + position: absolute; + + /* Top/left values mimic padding */ + top: 6px; + left: 6px; + width: 45%; + padding-right: 10px; + white-space: nowrap; + } + + /* + Label the data + */ + #spacing-tbl td:nth-of-type(1)::before, + #spacing-tbl td:nth-of-type(3)::before { content: "Function:"; } + + #spacing-tbl td:nth-of-type(2)::before, + #spacing-tbl td:nth-of-type(4)::before { content: "Produces:"; } + + #math-alpha td:nth-of-type(1)::before, + #math-alpha td:nth-of-type(3)::before { content: "Item:"; } + + #math-alpha td:nth-of-type(2)::before, + #math-alpha td:nth-of-type(4)::before { content: "Range:"; } + + #environments td:nth-of-type(1)::before, + #environments td:nth-of-type(3)::before { content: "Environment:"; } + + #environments td:nth-of-type(2)::before, + #environments td:nth-of-type(4)::before { content: "From code:"; } + + #unit-tbl td:nth-of-type(1)::before, + #unit-tbl td:nth-of-type(3)::before { content: "Unit:"; } + + #unit-tbl td:nth-of-type(2)::before, + #unit-tbl td:nth-of-type(4)::before { content: "Value:"; } + + #unit-blocks td:nth-of-type(2)::before { content: "textstyle:"; } + #unit-blocks td:nth-of-type(3)::before { content: "scriptscript:"; } + #unit-blocks td:nth-of-type(4)::before { content: "huge:"; } + #unit-blocks td { background-color: #fff; } +} + /* stylelint-disable block-no-empty */ @media only screen and (min-device-width: 360px) and (max-device-width: 736px) { }