プログラミング

マークダウンで数式を書く方法|LaTeX記法の基本から複数行・行列、Obsidianでの運用まで

MarkdownでLaTeX記法の数式を書く方法をチートシート形式でまとめました。インライン・ディスプレイの基本、分数・総和・ギリシャ文字などの基本記法から、alignedによる式変形・場合分け・行列、機械学習ノートで使う記号まで。うまく表示されないときのチェックリストと、勉強ノートでの実戦例も載せています。

目次

はじめに

勉強ノートに、きれいな数式を残したいと思ったことはありませんか。

私はE資格(ディープラーニングの資格)の勉強をしていたとき、数式をノートにどう残すかで悩みました。
教科書の写真を貼ると後から直せないし、y = a*x^2 のようなベタ書きは読み返す気になれません。
結論としては、MarkdownのノートにはLaTeX記法の数式をそのまま書けるので、これを覚えるのが一番の近道でした。

この記事では、Markdownで数式を書く方法を、基本記法から複数行の式変形・行列・機械学習でよく使う記号まで、チートシートとして使える形でまとめます。
私はObsidianでノートを取っているので、Obsidianでのつまずきポイントも合わせて載せますが、記法自体はJupyter NotebookやGitHubなど他の環境でもほぼ共通です。

長いので、必要なところだけ拾い読みしてもらって大丈夫です。
それぞれ「書き方」をコードブロックで、「表示結果」を実際に描画された数式で並べていきます。

Markdownで数式が書ける仕組み

最初に前提だけ簡単に説明します。

実は、Markdown自体には数式の記法がありません。
数式を表示しているのは、MarkdownにくっついているMathJaxやKaTeXといった描画エンジンで、これらがLaTeX(ラテフ)記法で書かれた文字列を数式に組んでくれます。
LaTeXは理系の論文で昔から使われている組版システムで、その数式の書き方だけを借りてきている、というイメージです。

対応している環境はかなり広いです。

  • Obsidian(MathJaxで描画)
  • Jupyter Notebook
  • GitHubのREADMEやIssue
  • VS CodeのMarkdownプレビュー

プレーンテキストなので後から直せますし、Gitでのバージョン管理にもそのまま乗ります。
「LaTeXなんて大げさな」と思うかもしれませんが、使う記号はパターン化されているので、この記事のチートシートの範囲でほとんどのノートは書けてしまいます。

ちなみに、このブログもKaTeXという描画エンジンを使っています。
この記事の表示例は、画像ではなくすべてその場で描画された本物の数式です。

基本:$で挟むだけ

書き方は2通りです。

インライン数式:文章の中に数式を埋め込むときは $ で挟みます。

二次方程式 $ax^2 + bx + c = 0$ の解を考えます。

表示はこうなります:二次方程式 \(ax^2 + bx + c = 0\) の解を考えます。

ディスプレイ数式:数式を独立した行として大きく表示するときは $$ で挟みます。

$$x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}$$

\[x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}\]

使い分けの目安は、「文章の一部として触れる数式はインライン、あとで見返すときに目に留まってほしい重要な式はディスプレイ」です。
定義や公式はディスプレイにしておくと、ノートをスクロールしたときに拾いやすくなります。

Obsidianのライブプレビューなら、カーソルをその行から外した瞬間にきれいな数式に変わります。

チートシート1:基本記法

四則演算・比較

意味 書き方 表示
足し算・引き算 x + yx - y \(x + y\)、\(x - y\)
掛け算 x \times yx \cdot y \(x \times y\)、\(x \cdot y\)
割り算 x \div y \(x \div y\)
等しい・等しくない x = yx \neq y \(x = y\)、\(x \neq y\)
ほぼ等しい x \approx y \(x \approx y\)
大小 x < yx \leq yx \geq y \(x < y\)、\(x \leq y\)、\(x \geq y\)

上付き・下付き

意味 書き方 表示
上付き(2乗など) x^2 \(x^2\)
下付き(添え字) x_i \(x_i\)
組み合わせ x_i^2 \(x_i^2\)
2文字以上は波カッコ x^{10}e^{-x} \(x^{10}\)、\(e^{-x}\)

この「2文字以上は {} でくくる」が最初のつまずきポイントです。
x^10 と書くと「xの1乗」と「0」に分かれて \(x^10\) になってしまいます。
指数に式を入れるとき(e^{-\frac{x^2}{2}} → \(e^{-\frac{x^2}{2}}\) など)も同じルールです。

分数・ルート

意味 書き方 表示
分数 \frac{分子}{分母} \(\frac{x+1}{y-1}\)
平方根 \sqrt{x} \(\sqrt{x}\)
n乗根 \sqrt[n]{x} \(\sqrt[n]{x}\)

分数が入れ子になるとき(分数の中に分数)は、そのまま \frac を重ねられます。
読みにくくなったら、後述のalignedで式を分けるほうがノートとしては見やすいです。

総和・積分・極限

意味 書き方 表示
総和 \sum_{i=1}^{n} x_i \(\sum_{i=1}^{n} x_i\)
積分 \int_{a}^{b} f(x)dx \(\int_{a}^{b} f(x)dx\)
極限 \lim_{x \to \infty} \(\lim_{x \to \infty}\)

いずれも「下限は _{}、上限は ^{}」という統一ルールです。
上付き・下付きの応用になっているのがわかると、覚えることが一気に減ります。

ギリシャ文字

\alpha \beta \gamma \theta \lambda \mu \sigma \pi のように、名前をそのまま書くだけです(\(\alpha\) \(\beta\) \(\gamma\) \(\theta\) \(\lambda\) \(\mu\) \(\sigma\) \(\pi\))。
大文字は先頭を大文字にします(\Sigma → \(\Sigma\)、\Delta → \(\Delta\))。

機械学習のノートだと \(\theta\)(パラメータ)と \(\sigma\)(標準偏差・シグモイド)は本当によく使います。

チートシート2:複数行・場合分け・行列

勉強ノートで実際に必要になるのは、実はここからです。

複数行の式変形(aligned)

式変形を = の位置で揃えて並べるには aligned 環境を使います。

$$
\begin{aligned}
(x+1)^2 &= x^2 + 2x + 1 \\
        &= x(x+2) + 1
\end{aligned}
$$

\[ \begin{aligned} (x+1)^2 &= x^2 + 2x + 1 \\ &= x(x+2) + 1 \end{aligned} \]

& を置いた位置が縦に揃い、\\ が改行です。
数式の導出をノートに残すときはほぼこれを使っています。
「教科書の式変形を1ステップずつ追った記録」がそのまま残せるので、後から見返したときに「なぜこうなるんだっけ」が起きません。

場合分け(cases)

絶対値や区分的な定義は cases 環境で書けます。

$$
|x| =
\begin{cases}
x & (x \geq 0) \\
-x & (x < 0)
\end{cases}
$$

\[ |x| = \begin{cases} x & (x \geq 0) \\ -x & (x < 0) \end{cases} \]

こちらも & が揃え位置、\\ が改行という同じルールです。

行列(pmatrix・bmatrix・vmatrix)

行列は matrix 系の環境を使います。
丸カッコなら pmatrix、角カッコなら bmatrix、行列式の縦棒なら vmatrix です。

$$
A = \begin{pmatrix} a & b \\ c & d \end{pmatrix},\quad
B = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix},\quad
\det A = \begin{vmatrix} a & b \\ c & d \end{vmatrix}
$$

\[ A = \begin{pmatrix} a & b \\ c & d \end{pmatrix},\quad B = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix},\quad \det A = \begin{vmatrix} a & b \\ c & d \end{vmatrix} \]

中身の区切りは aligned と同じで、列の区切りが &、行の区切りが \\ です。
aligned・cases・matrix と、\begin{...} ... \end{...} の形の環境はぜんぶ「& で揃えて \\ で改行」なので、1つ覚えれば全部同じ要領で書けます。

チートシート3:機械学習・統計でよく使う記号

E資格や統計の勉強ノートで出番が多かった記号をまとめます。

意味 書き方 表示
偏微分 \frac{\partial L}{\partial w} \(\frac{\partial L}{\partial w}\)
勾配(ナブラ) \nabla_\theta L(\theta) \(\nabla_\theta L(\theta)\)
推定値のハット \hat{y} \(\hat{y}\)
平均のバー \bar{x} \(\bar{x}\)
ベクトル・行列の太字 \mathbf{w}^\top \mathbf{x} \(\mathbf{w}^\top \mathbf{x}\)
条件付き確率 P(A \mid B) \(P(A \mid B)\)
分布に従う X \sim N(\mu, \sigma^2) \(X \sim N(\mu, \sigma^2)\)
集合に属する x \in \mathbb{R} \(x \in \mathbb{R}\)
部分集合・和集合・積集合 A \subset BA \cup BA \cap B \(A \subset B\)、\(A \cup B\)、\(A \cap B\)
矢印 \to\Rightarrow\leftarrow \(\to\)、\(\Rightarrow\)、\(\leftarrow\)
無限大 \infty \(\infty\)

組み合わせの実例をいくつか挙げます。

  • 勾配降下法の更新式:\theta \leftarrow \theta - \eta \nabla_\theta L(\theta) → \(\theta \leftarrow \theta - \eta \nabla_\theta L(\theta)\)
  • argmax:\arg\max_\theta P(y \mid x; \theta) → \(\arg\max_\theta P(y \mid x; \theta)\)
  • 条件付き確率の縦棒は \mid を使うときれいに空きます

\(\sim\) は「確率変数Xが正規分布に従う」を \(X \sim N(\mu, \sigma^2)\) と書くときの「〜」で、統計のノートでは毎ページ級に使います。

数式の中に日本語を入れる(\text)

数式の中に日本語や普通の単語を入れたいときは \text{} を使います。

$$\text{精度} = \frac{\text{正解数}}{\text{全体数}}$$

\[\text{精度} = \frac{\text{正解数}}{\text{全体数}}\]

\text{} を使わずに日本語を直接書くと、フォントや間隔が崩れることがあります。

括弧のサイズを自動調整する(\left \right)

分数を普通の括弧で挟むと、括弧が小さくて不格好になります。
\left(\right) を使うと中身の高さに合わせて自動で伸びます。

$$\left( \frac{1}{n} \sum_{i=1}^{n} x_i \right)^2$$

\[\left( \frac{1}{n} \sum_{i=1}^{n} x_i \right)^2\]

ちなみに、記法を全部暗記する必要はありません。
複雑な数式は、今どきはChatGPTやClaudeに「この数式をLaTeXで書いて」と教科書の写真ごと投げれば一発で出してくれます。
よく使うものは手で書けて、珍しいものはAIに聞ける、というバランスが一番実用的だと思います。

うまく表示されないときのチェックリスト

実際にObsidianで運用していて引っかかりやすい点をまとめておきます。
数式が描画されないときは、上から順に疑ってみてください。

  • $の内側に余計なスペースを入れていないか。 $x$ は描画されますが、$ x $ のように$の直後・直前に空白があると、数式として認識されないことがあります
  • 2文字以上を {} でくくり忘れていないか。 x^10x_max は途中で切れます。x^{10}x_{max} と書きます
  • 文章中の$記号(ドル表記)と衝突していないか。 「$100」のような金額を書くと、意図せず数式扱いされて表示が崩れることがあります。金額として書きたいときは \$100 とエスケープすれば大丈夫です
  • コードブロックの中に入れていないか。 バッククォート3つで囲んだ中の $...$ はただの文字列のままです。この記事の記法例がそのまま見えているのも、コードブロックに入れているからです。逆に言うと、「記法そのものをメモしたいとき」はコードブロックに入れる、と使い分けられます
  • ディスプレイ数式の前後を空行で区切っているか。 箇条書きの途中などに $$ ブロックを挟むと、描画が崩れることがあります。独立した段落として前後に空行を置くのが安全です
  • 環境の方言に引っかかっていないか。 基本記法は共通ですが、細かい挙動は環境ごとに微妙に違います。たとえばnoteの数式記法はObsidianとずれていて、Obsidianのノートをそのまま貼ると数式部分だけ崩れます。noteへの転載ルールは別の記事にまとめています

実戦例:勉強ノートの1ページ

最後に、実際のノートでの使い方のイメージです。
正規分布の確率密度関数をノートに残すなら、こう書きます。

## 正規分布

平均 $\mu$、分散 $\sigma^2$ の正規分布の確率密度関数:

$$
f(x) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left( -\frac{(x-\mu)^2}{2\sigma^2} \right)
$$

- $\mu$ が分布の中心、$\sigma$ が広がりを決める
- 指数の中身は「平均からの距離の2乗」→ 遠いほど確率密度が下がる

描画されるとこうなります。

平均 \(\mu\)、分散 \(\sigma^2\) の正規分布の確率密度関数:

\[ f(x) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left( -\frac{(x-\mu)^2}{2\sigma^2} \right) \]

  • \(\mu\) が分布の中心、\(\sigma\) が広がりを決める
  • 指数の中身は「平均からの距離の2乗」→ 遠いほど確率密度が下がる

数式(ディスプレイ)+記号の意味(インライン入りの箇条書き)というこの型を決めておくと、どの単元のノートも同じ形で積み上がっていきます。
私はこの型でE資格の数学ノートを作っていました(そのときの勉強法はこちらの記事に書いています)。

型のポイントは3つです。

  1. 公式そのものはディスプレイ数式で独立させる(あとで公式だけ拾い読みできる)
  2. 記号の意味は箇条書きで、インライン数式込みで書く(\(\mu\) のように記号のまま書くと、公式との対応が取りやすい)
  3. 導出が要る式はalignedで1ステップずつ(試験前に「なぜこうなる」を再確認できる)

逆に、教科書の説明文まで丸写しするのはおすすめしません。
数式と記号の意味、それに自分のつまずきメモだけに絞ったほうが、復習のときに密度の高いノートになります。

まとめ

いかがでしたか。
今回は、Markdownで数式を書く方法をチートシート形式でまとめました。

  • インラインは $...$、独立表示は $$...$$。重要な式はディスプレイに
  • 基本は分数 \frac・ルート \sqrt・総和 \sum・「2文字以上は {}」の4点セット
  • 式変形はaligned、場合分けはcases、行列はpmatrix。どれも「& で揃えて \\ で改行」
  • 機械学習ノートは \partial \nabla \hat{} \mathbf{} \text{} まで覚えると教科書の式が写せる
  • 描画されないときは$の内側のスペース・{} のくくり忘れ・エスケープ・空行を疑う

数式がきれいに残せるようになると、勉強ノートを読み返すのが楽しくなります。
ぜひ試してみてください。

この記事が誰かの役に立てばうれしいです。