素の Markdown には数式の記法はありませんが、最近の Markdown ツールのほとんどは拡張機能で LaTeX の数式 に対応しています。ドル記号で囲んだ TeX 記法で数式を書くと、KaTeX や MathJax などの数式レンダラーがきれいに組版された数式に変換してくれます。
このガイドでは、GitHub、GitLab、Obsidian、Jupyter、そして Markdown Preview Editor で共通して使える記法を解説し、よく使うコマンドのリファレンスも紹介します。
インライン数式とディスプレイ数式
Markdown の数式には 2 種類あります。
- インライン数式 は文中に置く数式です。ドル記号 1 つで囲みます:
$E = mc^2$。 - ディスプレイ数式 は独立した行に中央揃えで表示されます。ドル記号 2 つで囲み、通常は別々の行に書きます。
markdown有名な公式 $E = mc^2$ は文中に収まります。
$$
x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
$$
ディスプレイ数式は、表示するとこのようになります。
基本の記法
| 内容 | 入力 | 備考 |
|---|---|---|
| 上付き文字 | x^2, e^{i\pi} |
2 文字以上は波かっこで囲む |
| 下付き文字 | a_1, x_{n+1} |
|
| 分数 | \frac{a}{b} |
インラインで大きな分数にするには \dfrac |
| 平方根 | \sqrt{x}, \sqrt[3]{x} |
|
| 総和、総乗 | \sum_{i=1}^{n} i, \prod_{k} k |
|
| 積分 | \int_0^1 x\,dx |
\, で細いスペースを追加 |
| 極限 | \lim_{x \to 0} \frac{\sin x}{x} |
|
| ギリシャ文字 | \alpha, \beta, \pi, \Omega |
先頭を大文字にすると大文字のギリシャ文字 |
| 関係演算子 | \le, \ge, \ne, \approx, \equiv |
|
| 演算子 | \times, \cdot, \pm, \div |
|
| 集合 | \in, \subset, \cup, \cap, \mathbb{R} |
|
| 矢印 | \to, \Rightarrow, \leftrightarrow |
|
| 数式内のテキスト | \text{if } x > 0 |
通常のスペースが保たれる |
| ベクトル、アクセント | \vec{v}, \hat{x}, \bar{y} |
波かっこはグループ化に使います。x^10 は x¹0 と表示されますが、x^{10} は x¹⁰ と表示されます。数式の表示がおかしいときは、波かっこの付け忘れがいちばんよくある原因です。
大きさが変わるかっこ
普通のかっこは大きさが変わりません。背の高い内容を囲むには \left と \right を使います。
latex\left( \frac{a}{b} \right)^2 \quad \text{vs} \quad (\frac{a}{b})^2
行列
行列には環境を使います。pmatrix は丸かっこ、bmatrix は角かっこ、vmatrix は縦線(行列式)で囲みます。列は & で、行は \\ で区切ります。
latex$$
A = \begin{pmatrix}
1 & 2 \\
3 & 4
\end{pmatrix}
$$
複数行の数式と揃えた数式
複数の式変形を等号の位置で揃えるには、ディスプレイ数式の中で aligned 環境を使い、揃える位置を & で指定します。
latex$$
\begin{aligned}
(a + b)^2 &= (a + b)(a + b) \\
&= a^2 + 2ab + b^2
\end{aligned}
$$
場合分けの関数には cases を使います。
latex$$
|x| = \begin{cases}
x & \text{if } x \ge 0 \\
-x & \text{if } x < 0
\end{cases}
$$
数式ではないドル記号
文中の金額が、うっかり数式になってしまうことがあります。ほとんどのレンダラーは Pandoc のルールに従います。開始の $ の直後にスペースがあってはならず、終了の $ の直前にスペースがあったり直後に数字が続いたりしてはいけません。そのため「$5 から $10 まで」のような表記は、たいていプレーンテキストのままです。迷ったときはドル記号をエスケープしましょう:\$5。
KaTeX と MathJax の違い
どちらも同じ LaTeX 記法を表示します。違いは主に速度と対応範囲です。
- KaTeX は高速で同期的に描画するため、リアルタイムプレビューに最適です。ドキュメント、メモ、論文で使われるコマンドの大部分に対応しています。
- MathJax はより多くの LaTeX パッケージに対応しており、GitHub や多くの学術サイトで使われていますが、動作は重めです。
Markdown Preview Editor は KaTeX を使い、ドキュメントに実際に数式が含まれるときだけ読み込むので、数式のないドキュメントは軽いままです。KaTeX 用に書いた数式は、ほぼ確実に GitHub でも表示されます。
GitHub での数式
GitHub は Markdown ファイル、Issue、プルリクエストで数式を表示できます。$…$ と $$…$$ に加えて、扱いにくいケース向けに 2 つの書き方があります。Markdown に解釈されてしまう文字を含むインライン数式には $`…`$ を、ディスプレイ数式には言語を math にしたコードブロックを使えます。
数式をすばやく書くには
- Markdown Preview Editor の「高度なエディター」ツールバーにある 数式ボタン で数式のテンプレートを挿入し、プレビューを横に見ながら編集しましょう。
- 行列、揃えたブロック、場合分けなど、よく使う数式をスニペットファイルにまとめておきましょう。
- アルゴリズムの説明には Mermaid 図 と組み合わせると効果的です。フローチャートで手順を示し、各手順を数式で表します。
- ドキュメントが完成したら HTML や PDF にエクスポート しましょう。数式はエクスポートしたファイルにもそのまま残ります。
Markdown 自体が初めてですか?まずは Markdown チートシート から始めましょう。
よくある質問
Markdown で数式を書くには?
インライン数式は LaTeX の数式をドル記号 1 つで囲み($a^2 + b^2 = c^2$)、中央揃えのディスプレイ数式はドル記号 2 つで囲みます。使っている Markdown ツールが数式に対応している必要があります。GitHub、GitLab、Obsidian、Jupyter、Markdown Preview Editor は対応しています。
数式がプレーンテキストのまま表示されるのはなぜですか?
よくある原因は次のとおりです:ツールが数式に対応していない、開始の $ の直後や終了の $ の直前にスペースがある、数式内の _ や * などの Markdown の文字が書式として解釈された。$$ を別々の行に書くディスプレイ数式を試してみてください。
Markdown で行列を書くには?
$$ の中で \begin{pmatrix} … \end{pmatrix}(または bmatrix、vmatrix)を使います。列は &、行は \\ で区切ります。
KaTeX はすべての LaTeX コマンドに対応していますか?
KaTeX は実際によく使われる数式コマンドのほとんどに対応していますが、すべての LaTeX パッケージに対応しているわけではありません。\section や \usepackage のような文書レイアウト用のコマンドは、そもそも Markdown の数式には当てはまりません。