Upgrade the KaTeX engine to 0.10.0 (or later)
Problem to solve
Our team uses GitLab wikis and Markdown documents to capture technical documentation.
The KaTeX math engine is under constant development, and I would love to see a release bump to 0.10.0
(or whatever is latest at the time this proposal is considered).
The syntax is constantly being expanded, and nice features like macros, and delimiters in the array
environment (e.g., \hline
and \hdashline
) were first introduced in release 0.10.0.
Of particular importance, the 0.10.0
release supports macro definitions. Macros let the user declare find/replace "shortcuts" at the top of the math block to save lots of redundant typing, for instance
\newcommand\var[3]{\boldsymbol{\mathrm{#1}}_{#2}^{#3}}
\var{v}{eb}{l} = \var{C}{e}{l} \var{v}{eb}{e}
is much easier to type (and read/ edit) than
\boldsymbol{\mathrm{v}}_{eb}^{l} = \boldsymbol{\mathrm{C}}_{e}^{l} \boldsymbol{\mathrm{v}}_{eb}^{e}
Target audience
GitLab users who use math blocks for technical documentation.
Further details
Click to expand a use-case example
Here's an example formula that I would like to render:
(Screenshot):
(KaTeX >= 0.10.0 source):
\def\arraystretch{1.5}
\newcommand\var[2]{\boldsymbol{\mathrm{#1}}_{#2}}
\begin{aligned}
\var{T}{k}
\begin{bmatrix}
\begin{array}{c:c}
\var{R}{w} & 0 \\ \hdashline
-\var{R}{k-1} \var{\Phi}{k-1}^{-1} \var{\Gamma}{k-1} &
\var{R}{k-1} \var{\Phi}{k-1}^{-1} \\ \hdashline
-\var{\tilde{J}}{k} \var{\Phi}{k-1}^{-1} \var{\Gamma}{k-1} &
\var{\tilde{H}}{k} + \var{\tilde{J}}{k} \var{\Phi}{k-1}^{-1}
\end{array}
\end{bmatrix} &\begin{bmatrix}
\var{w}{k-1} \\ \var{x}{k}
\end{bmatrix}
\sim \var{T}{k}
\begin{bmatrix}
\begin{array}{c}
0 \\ \hdashline
\var{b}{k-1} \\ \hdashline
\var{\tilde{z}}{k}
\end{array}
\end{bmatrix} \\[3em]
\begin{bmatrix}
\begin{array}{c:c}
\# & \# \\ \hdashline
0 & \var{R}{k} \\ \hdashline
0 & 0
\end{array}
\end{bmatrix} &\begin{bmatrix}
\var{w}{k-1} \\ \var{x}{k}
\end{bmatrix}
\sim
\begin{bmatrix}
\begin{array}{c}
\# \\ \hdashline
\var{b}{k} \\ \hdashline
\var{\varepsilon}{k}
\end{array}
\end{bmatrix}
\end{aligned}
But, until the KaTeX engine is updated, I have to settle for
\begin{aligned}
\boldsymbol{\mathrm{T}}_k
\begin{bmatrix}
\begin{array}{cc}
\boldsymbol{\mathrm{R}}_w & 0 \\[0.5em]
-\boldsymbol{\mathrm{R}}_{k-1} \boldsymbol{\mathrm{\Phi}}_{k-1}^{-1} \boldsymbol{\mathrm{\Gamma}}_{k-1} & \boldsymbol{\mathrm{R}}_{k-1} \boldsymbol{\mathrm{\Phi}}_{k-1}^{-1} \\[0.5em]
-\boldsymbol{\tilde{\mathrm{J}}}_k \boldsymbol{\mathrm{\Phi}}_{k-1}^{-1} \boldsymbol{\mathrm{\Gamma}}_{k-1} & \boldsymbol{\tilde{\mathrm{H}}}_k + \boldsymbol{\tilde{\mathrm{J}}}_k \boldsymbol{\mathrm{\Phi}}_{k-1}^{-1}
\end{array}
\end{bmatrix} &\begin{bmatrix}
\boldsymbol{\mathrm{w}}_{k-1} \\[0.5em] \boldsymbol{\mathrm{x}}_k
\end{bmatrix}
\sim \boldsymbol{\mathrm{T}}_k
\begin{bmatrix}
\begin{array}{c}
0 \\[0.5em]
\boldsymbol{\mathrm{b}}_{k-1} \\[0.5em]
\boldsymbol{\tilde{\mathrm{z}}}_k
\end{array}
\end{bmatrix} \\[3em]
\begin{bmatrix}
\begin{array}{cc}
\# & \# \\[0.5em]
0 & \boldsymbol{\mathrm{R}}_k \\[0.5em]
0 & 0
\end{array}
\end{bmatrix} &\begin{bmatrix}
\boldsymbol{\mathrm{w}}_{k-1} \\[0.5em] \boldsymbol{\mathrm{x}}_k
\end{bmatrix}
\sim
\begin{bmatrix}
\begin{array}{c}
\# \\[0.5em]
\boldsymbol{\mathrm{b}}_k \\[0.5em]
\boldsymbol{\mathrm{\varepsilon}}_k
\end{array}
\end{bmatrix}
\end{aligned}
(KaTeX < 0.10.0 source):
\begin{aligned}
\boldsymbol{\mathrm{T}}_k
\begin{bmatrix}
\begin{array}{cc}
\boldsymbol{\mathrm{R}}_w & 0 \\[0.5em]
-\boldsymbol{\mathrm{R}}_{k-1} \boldsymbol{\mathrm{\Phi}}_{k-1}^{-1} \boldsymbol{\mathrm{\Gamma}}_{k-1} & \boldsymbol{\mathrm{R}}_{k-1} \boldsymbol{\mathrm{\Phi}}_{k-1}^{-1} \\[0.5em]
-\boldsymbol{\tilde{\mathrm{J}}}_k \boldsymbol{\mathrm{\Phi}}_{k-1}^{-1} \boldsymbol{\mathrm{\Gamma}}_{k-1} & \boldsymbol{\tilde{\mathrm{H}}}_k + \boldsymbol{\tilde{\mathrm{J}}}_k \boldsymbol{\mathrm{\Phi}}_{k-1}^{-1}
\end{array}
\end{bmatrix} &\begin{bmatrix}
\boldsymbol{\mathrm{w}}_{k-1} \\[0.5em] \boldsymbol{\mathrm{x}}_k
\end{bmatrix}
\sim \boldsymbol{\mathrm{T}}_k
\begin{bmatrix}
\begin{array}{c}
0 \\[0.5em]
\boldsymbol{\mathrm{b}}_{k-1} \\[0.5em]
\boldsymbol{\tilde{\mathrm{z}}}_k
\end{array}
\end{bmatrix} \\[3em]
\begin{bmatrix}
\begin{array}{cc}
\# & \# \\[0.5em]
0 & \boldsymbol{\mathrm{R}}_k \\[0.5em]
0 & 0
\end{array}
\end{bmatrix} &\begin{bmatrix}
\boldsymbol{\mathrm{w}}_{k-1} \\[0.5em] \boldsymbol{\mathrm{x}}_k
\end{bmatrix}
\sim
\begin{bmatrix}
\begin{array}{c}
\# \\[0.5em]
\boldsymbol{\mathrm{b}}_k \\[0.5em]
\boldsymbol{\mathrm{\varepsilon}}_k
\end{array}
\end{bmatrix}
\end{aligned}
Proposal
Bump the KaTeX engine to version 0.10.0 (or later).