Markdown LaTeX 変換ツール

左側に $ 付きの数式を含むMarkdownを書くと、右側でリアルタイムにプレビューでき、数式を1つずつLaTeXとして取り出せます。Overleafでそのままコンパイルできる文書も出力できます。処理はすべてブラウザ内で完結します。

無料 · 登録不要 · ブラウザ内で完結最終更新

MarkdownでLaTeXの数式を書くには?

数式をドル記号で囲みます。`$E = mc^2$` は文中に収まるインライン数式、行を分けて書いた `$$...$$` は中央揃えのブロック数式になります。Markdown自体に数式の解析機能はなく、描画を担うのはGitHubやJupyter、Obsidianなどプラットフォーム側のKaTeXまたはMathJaxです。

markdown
インライン数式:質量とエネルギーの関係 $E = mc^2$。

$$
\sum_{i=1}^{n} i = \frac{n(n+1)}{2}
$$

1行目の数式は文の途中にそのまま組まれます。$$ で挟んだ部分は、独立した行に中央揃えで表示されるブロック数式になります。

Markdown LaTeX 変換ツールを使う

Markdown エディター

出力

数式を含む Markdown

インライン数式:E=mc2E = mc^2

ブロック数式:

ddx(0xf(u)du)=f(x)\frac{d}{dx}\left( \int_{0}^{x} f(u)\,du\right)=f(x)

総和:

i=1ni=n(n+1)2\sum_{i=1}^{n} i = \frac{n(n+1)}{2}

行列:

(abcd)\begin{pmatrix} a & b \\ c & d \end{pmatrix}

連立方程式:

{3x+5y+z=07x2y+4z=06x+3y+2z=0\begin{cases} 3x + 5y + z = 0 \\ 7x - 2y + 4z = 0 \\ -6x + 3y + 2z = 0 \end{cases}

Markdownで使うLaTeX数式の書き方

MarkdownとLaTeXはドル記号で接続します。ルール自体は短いのですが、描画されない原因はほぼ3つに絞られます。区切り記号の前後にある空白、Markdownが強調として解釈してしまうアンダースコア、そしてプラットフォーム独自の数式記法です。

ドル記号1つ:インライン数式

前後にドル記号を1つずつ置くと、数式が文中にそのまま組まれます。区切り記号と数式の間に空白を入れてはいけません。空白があると、多くの描画エンジンはドル記号を通貨記号としてそのまま出力します。

markdown
質量とエネルギーの関係 $E = mc^2$ は今も多くの人を驚かせます。
\$25 のような金額はエスケープしないと数式の開始と誤認されます。

1行目は E = mc² が文中にそのまま組まれます。2行目のエスケープしたドル記号は数式を開始せず、$ がそのまま表示されます。

ドル記号2つ:ブロック数式

ドル記号を2つにすると、中央揃えのブロック数式になります。区切り記号はそれぞれ独立した行に置き、ブロックの前後には空行を入れてください。これを守らないとJupyterや一部の静的サイトジェネレーターは描画してくれません。

markdown
解の公式は2つの解を与えます:

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

独立した行に中央揃えで数式が表示され、上の段落との間にはっきりとした余白が入ります。

行列・場合分け・整列環境

複数行になる構造はすべてamsmathの環境の中に書きます。行の区切りはバックスラッシュ2つ、列の区切りは & で、全体は引き続き $$ でブロック数式として囲みます。

markdown
$$
\begin{cases}
3x + 5y + z = 0 \\
7x - 2y + 4z = 0
\end{cases}
$$

大括弧でまとめられた連立方程式になります。cases を pmatrix、bmatrix、aligned に置き換えれば、同じ行と列の書き方のまま行列や多段の式変形も書けます。

GitHub・GitLabの数式フェンス

GitHubはファイル、Issue、コメントで $ と $$ をそのまま描画しますが、公式に案内されている書き方はインラインがドル記号とバッククォートの組み合わせ、ブロックがmathコードフェンスです。GitLabも同じ2種類を使います。フェンス記法がもっとも安全で、中身がMarkdownとして先に解析されることがありません。

markdown
インライン:$`\sqrt{3x-1}+(1+x)^2`$

```math
\left| \vec{v} \right| = \sqrt{x^2 + y^2}
```

どちらの書き方もGitHubとGitLabで描画されます。mathフェンスは中身がそのまま数式エンジンに渡されるため、エスケープの問題が完全になくなります。

アンダースコア・ドル記号・バックスラッシュのエスケープ

アンダースコアはLaTeXでは下付き文字、Markdownでは強調を意味するため、Markdownの解析が先に走る環境では消えてしまうことがあります。文字をエスケープするか、数式をmathフェンスに移せば解決します。バックスラッシュを2つ書く必要があるのは、Markdown自体が文字列リテラルの中にある場合だけです。

markdown
$x_1 + x_2$     厳密なパーサーでは下付きが失われることがあります
$x\_1 + x\_2$   どの描画エンジンでも安全です
価格:\$50      エスケープしたドル記号。数式にはなりません

エスケープした書き方はKaTeXでもMathJaxでも同じ組版結果になり、しかもMarkdown自身の強調の解析を安全に通過します。

Overleafでそのままコンパイルできる文書

Markdownの外で数式をコンパイルするには、文書の外枠が必要です。amsmathとamssymbを読み込み、ブロック数式をそれぞれequation環境に入れます。本ツールのOverleafタブが生成するのは、まさにこの形式の文書です。

markdown
\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}

\begin{document}
\begin{equation}
\sum_{i=1}^{n} i = \frac{n(n+1)}{2}
\end{equation}
\end{document}

手を加えずにOverleaf、pdflatex、tectonicのいずれでもコンパイルでき、番号付きの数式が出力されます。

Markdownの数式が使えるサービス

数式はMarkdownの中でもっとも移植性の低い部分です。以下のサービスはそれぞれ別の描画エンジンを使っており、まったく対応していないものもあります。READMEやWikiに数式を書く前に確認してください。

プラットフォーム対応状況備考
GitHub対応ファイル、Issue、PR、Discussionsで $、$$、$`...`$、mathフェンスがすべて使えます。
GitLab対応インラインは $`...`$、ブロックはmathフェンスが推奨です。新しいバージョンでは $$ もそのまま使えます。
Jupyter Notebook対応MarkdownセルがMathJaxで $ と $$ を描画します。align や cases などの環境も使えます。
Obsidian対応MathJaxベースです。$$ をそれぞれ独立した行に置かないと、ブロックがインライン扱いになります。
Qiita / Zenn対応どちらもKaTeXで描画します。Qiitaはmathコードフェンス、Zennは独立した行の $$ が確実です。
はてなブログ一部Markdownモードでも数式は [tex:...] というはてな記法で書き、MathJaxが描画します。$$ はそのままでは描画されません。
R Markdown / Quarto対応HTML出力ではMathJax、PDF出力では実際のLaTeXエンジンが数式を処理します。
VS Code プレビュー一部標準のプレビューにはMarkdown+Math拡張が必要です。MDXのビルド構成ではさらに挙動が変わります。
Notion一部独自のインライン数式と数式ブロックがあり、貼り付けた $$ の記法は自動では変換されません。
Discord / Slack非対応数式の描画機能がありません。画像を貼るかコードブロックで代用します。

Markdownの数式をLaTeXに変換する手順

  1. Markdownを貼り付ける

    $...$ や $$...$$ の数式を含む文書を左側のエディターに貼り付けます。入力しながらremarkがローカルで解析するため、どこにもアップロードされません。

  2. プレビューで確認する

    プレビュータブは文書全体をKaTeXで描画します。書き出す前に、すべての数式が正しく解析されているか確認できます。

  3. 抽出された数式を確認する

    LaTeXタブに切り替えると、文書から取り出されたインライン数式とブロック数式が一覧で表示され、それぞれに個別のコピーボタンが付きます。

  4. コンパイルできる文書を書き出す

    Overleafタブはすべての数式をarticleクラスの文書にまとめ、amsmath、amssymb、amsfonts、mathtoolsを読み込んだ状態で出力します。コピーすればOverleafでそのままコンパイルできます。

よくある質問

Markdownで数式を書く方法は?

ドル記号を区切り文字として使います。$E = mc^2$ のように1組で囲むと文中に収まるインライン数式に、独立した行に置いた2組で囲むと中央揃えのブロック数式になります。Markdown自体は数式を解析せず、最終的に描画するのはプラットフォームが呼び出すKaTeXまたはMathJaxです。

Jupyter Notebookで数式を書くには?

Markdownセルに $数式$ と書けばインライン数式、$$数式$$ と書けばブロック数式になります。セルを実行するとMathJaxが描画します。align や cases といったamsmathの環境もそのまま使えます。Pythonの文字列リテラルとは違い、Markdownセルではバックスラッシュを2つ書く必要はありません。

R Markdownで数式を書くには?

本文では同じく $ と $$ を区切り文字として使います。HTMLにレンダリングするときはMathJaxが、PDFにレンダリングするときは実際のLaTeXエンジンが処理するため、後者では生のLaTeXコマンドやYAMLヘッダーのheader-includesで読み込んだパッケージも使えます。Rチャンクの中で数式を生成する場合は、cat() を使い results を asis に設定してください。

MarkdownとLaTeXの違いは?

Markdownは見出し、リスト、リンクといった構造を表す軽量な記法で、ソースのままでも読める点が特徴です。LaTeXは組版システムそのもので、改ページ、相互参照、参考文献、数式の体裁まで精密に制御できます。MarkdownにLaTeXの数式を埋め込むと、本文は読みやすいまま、数式だけ本格的な組版になります。

数式入りのMarkdownをPDFに変換するには?

定番はPandocです。pandoc paper.md -o paper.pdf を実行すると、数式はxelatexなどのLaTeXエンジンが組版します。QuartoやTypora、いくつかのVS Code拡張もボタン1つで同じことをします。数式だけが必要な場合は、本ツールからOverleaf用の文書を書き出してコンパイルするほうが簡単です。

LaTeXをMarkdownに変換するには?

Pandocは逆方向にも対応しています。pandoc paper.tex -o paper.md を実行してください。数式はドル記号に囲まれた形で残りますが、独自マクロ、フロート、図版の精密な配置、参考文献のスタイルなど、Markdownに対応する記法がない機能は平坦化されるか失われます。変換後は必ず目視で確認してください。

Markdownの数式が表示されないのはなぜ?

よくある原因は4つです。ドル記号と数式の間に空白がある、ブロック数式の前後に空行がない、数式エンジンが受け取る前にMarkdownがアンダースコアを強調として消費した、そもそもそのプラットフォームに数式の描画機能がない、のいずれかです。数式をmathコードフェンスに移すと、その多くを回避できます。

Markdownで行列や連立方程式を書くには?

ブロック数式の中でamsmathの環境を使います。pmatrix、bmatrix、vmatrix はそれぞれ丸括弧、角括弧、縦線で囲んだ行列になり、cases は大括弧付きの連立方程式になります。行の区切りはバックスラッシュ2つ、列の区切りは & です。

MarkdownでTikZなどのLaTeXパッケージは使えますか?

ブラウザ上で描画されるMarkdownでは使えません。KaTeXとMathJaxが実装しているのは数式のコマンドだけで、パッケージの仕組みはないため、TikZの図版や \usepackage の記述は無視されます。PandocやQuartoを通して実際のLaTeXエンジンでPDFにコンパイルする場合は有効になります。

Markdownの数式でバックスラッシュは2つ必要ですか?

通常の .md ファイルでは不要で、\frac や \sum はLaTeXと同じようにそのまま書けます。2つにする必要があるのは、そのMarkdownが別の文字列の中にある場合だけです。JavaScriptのテンプレートリテラル、JSONのフィールド、Pythonのドキュメント文字列などでは、バックスラッシュ自体がエスケープ文字として扱われます。