Markdown には、 CommonMark / GFM 以外の"方言"や拡張記法がいくつも存在します。
この記事では、CommonMark / GFM の外側にある主要な方言と、方言をまたいでよく使われる拡張記法を、「どういう書き方があるか」「どこで対応しているか」が一目でわかる形で整理します。
前提:ここで挙げる拡張の多くは CommonMark / GFM には含まれません。使う前に、投稿先やパーサーが対応しているかを必ず確認してください。
1. 主要な Markdown 方言
まず、独自の記法拡張を定義した「方言(dialect)」のうち、知名度の高いものです。
| 方言 | 使われる場所 | 特徴 |
|---|---|---|
| Pandoc's Markdown | Pandoc(文書変換ツール) | 最も高機能。脚注・定義リスト・上付き下付き・メタデータ・数式・引用文献など。学術・書籍・PDF 出力の定番。 |
| PHP Markdown Extra | PHP 系 CMS・ブログ | 基本仕様に脚注・定義リスト等を追加。属性指定 {#id .class} の元祖的存在。 |
| MultiMarkdown (MMD) | MultiMarkdown | Extra に近い拡張(脚注・表・数式・メタデータ)。高度なテーブル記法を持つ。 |
| kramdown | Ruby 製。Jekyll(GitHub Pages)の既定 | GitHub Pages でブログを書くなら実質これ。{:...} のインライン属性が特徴。 |
このほか、Zenn・Qiita・GitLab・Obsidian・Notion などにも、それぞれ独自の方言があります。ただし記法が各サービス固有(:::message など)で汎用性に乏しいため、本記事では「共通して使われる拡張記法」に絞って解説します。
2. よく使う拡張記法と対応状況
| 記法 | 書き方 | Pandoc | Markdown Extra | kramdown | Obsidian 等 | GFM/CommonMark |
|---|---|---|---|---|---|---|
| 脚注 | [^1] … [^1]: |
○ | ○ | ○ | ○ | △(GFM一部) |
| 上付き | ^text^ |
○ | − | − | ○ | ✗ |
| 下付き | ~text~ |
○ | − | − | ○ | ✗ |
| ハイライト | ==text== |
✗※ | − | − | ○ | ✗ |
| 定義リスト | 用語→: 説明 |
○ | ○ | ○ | − | ✗ |
| 属性指定 | {#id .class} |
○ | ○ | ○ | − | ✗ |
| ウィキリンク | [[link]] |
✗ | − | − | ○ | ✗ |
| 目次 | [TOC] 等 |
△(オプション) | − | ○ | − | ✗(GitHubは自動) |
(○=対応、△=条件付き、✗=非対応、−=実装により異なる)
※ Pandoc は == ではなく [text]{.mark} で <mark> を出します。
以下、それぞれの書き方を補足します。
2-1. 脚注(Footnote)
本文に [^ラベル]、どこかで [^ラベル]: に内容を定義します。
本文に脚注をつけます[^1]。
[^1]: これが脚注の内容です。ラベルは数字でも文字列でもかまいません。
比較的多くの環境(GitHub の一部・Pandoc・Extra・MMD)で通じる、拡張の中では移植性が高めの記法です。
2-2. 上付き・下付き(Superscript / Subscript)
^text^ で上付き、~text~ で下付きになります。ただし中身にスペースは入れられません。
2^10^ は 1024、H~2~O は水。
GFM では無効(~~ は打ち消し線)なので、確実に効かせたいなら 2<sup>10</sup>・H<sub>2</sub>O と HTML で書くのが安全です。
2-3. ハイライト(Highlight / Mark)
蛍光ペンのような <mark> 相当。記法が割れる代表格です。
==ここが目立つ== ← Markdown-it 系・Obsidian など
[ここが目立つ]{.mark} ← Pandoc(属性指定)
==text== は CommonMark / GFM / Pandoc 標準では効きません。
2-4. 定義リスト(Definition List)
用語の次の行に :(コロン)+スペース+説明を書きます。用語集・FAQ に便利。
用語A
: 用語Aの説明。
用語B
: 説明1
: 説明2(複数の説明も付けられる)
出力は <dl><dt>…</dt><dd>…</dd></dl>。Pandoc・Extra・kramdown が対応します。
2-5. 属性指定(Attributes:id / class など)
要素に id や class を付与します。書き方が方言で分かれます。
# 見出し {#my-id .my-class} ← Pandoc / Extra / kramdown(見出しに付与)
[テキスト]{.highlight} ← Pandoc(インライン span に付与)
{:.my-class #my-id} ← kramdown(直前のブロックに付与)
波括弧内は #id → .class → key="value" の順が基本。GitHub 等では効かないので、その場合は <h2 id="..."> と HTML で書きます。
2-6. ウィキリンク(Wikilink)
[[ページ名]] でページ間リンクを作る Wiki 由来の記法。Obsidian や各種 Wiki で使われます。
[[ページ名]]
[[ページ名|表示テキスト]]
リンク先の解決方法が実装依存で移植性は低いため、汎用ドキュメントでは通常のリンク [表示](URL) を推奨します。
2-7. 目次(TOC)
見出しから目次を自動生成します。これも記法がバラバラです。
[TOC] ← Python-Markdown / Typora など
[[_TOC_]] ← GitLab / DokuWiki
{:toc} ← kramdown(直前のリストに付与)
Pandoc は記法ではなくコマンドオプション(--toc)で出力し、GitHub は README で見出しメニューを自動表示します([TOC] は不要かつ無効)。
3. Markdown Preview Enhanced(MPE)の独自記法
Markdown Preview Enhanced(MPE) は VS Code / Atom 向けの高機能プレビュー拡張で、ローカルで技術文書や本を書くのに向いています。GFM をベースに、独自の便利記法をいくつも備えています。
MPE の既定パーサーは markdown-it です。一部の記法はパーサーを Pandoc に切り替えると動きません。
3-1. 校正マークアップ(CriticMarkup)
原稿の加筆・削除・置換・コメント・ハイライトを記法で表せます(既定では無効、設定で有効化)。
{++ 追加した文章 ++}
{-- 削除した文章 --}
{~~ 旧い表現 ~> 新しい表現 ~~}
{== 強調(ハイライト)==}
{>> 校正者のコメント <<}
校正・レビューのやり取りを Markdown 上で完結できます。
3-2. テーブルのセル結合(rowspan / colspan)
GFM のテーブルにはないセル結合を、特殊なセルで表現できます。
>だけのセル … 右のセルと結合(colspan)^だけのセル … 上のセルと結合(rowspan)
| ヘッダー1 | ヘッダー2 | ヘッダー3 |
| --- | --- | --- |
| セルA1 | セルB1 | セルC1 |
| > | セルB2 | セルC2 |
| セルA3 | ^ | セルC3 |
MultiMarkdown 由来のテーブル拡張で、MPE や対応プラグイン(markdown-it-multimd-table など)で描画されます。
3-3. 図表(Diagrams)
コードブロックの言語名に図の種類を書くと、図としてレンダリングされます。
```mermaid
graph LR; A --> B; B --> C;
```
対応:Mermaid・PlantUML・flow・sequence・WaveDrom・GraphViz・Vega など。Mermaid は GitHub でも描画されますが、他は MPE 側の機能で、PDF・pandoc 出力では崩れることがあります。
3-4. 数式・その他
- 数式:
$...$(インライン)/$$...$$(ブロック)で LaTeX 数式(KaTeX / MathJax)。 - ファイル取り込み:
@import "file"で外部ファイルを展開。 - 目次:
<!-- toc -->で自動生成(MPE 独自)。 - 注記ブロック:
!!! note形式(mkdocs 系。GitHub の> [!NOTE]とは別文法)。 - Front Matter:冒頭に
---で囲んだ YAML でメタデータを指定。
MPE の独自記法(
@import・<!-- toc -->・!!!・CriticMarkup・PlantUML 等)は MPE でしか通じません。
まとめ
- CommonMark / GFM の外側には、Pandoc・Markdown Extra・MultiMarkdown・kramdown といった方言があり、脚注・定義リスト・属性指定などの拡張を提供している。
- 上付き下付き・ハイライト・ウィキリンク・目次・セル結合などは、記法も対応状況も方言ごとにバラバラ。使う前に対応確認が必須。
- MPE はローカル執筆向けに独自記法(校正マークアップ・セル結合・図表・数式など)を豊富に備えるが、それらは MPE の外では通じない。
参考リンク
- Pandoc's Markdown: https://pandoc.org/MANUAL.html
- PHP Markdown Extra: https://michelf.ca/projects/php-markdown/extra/
- MultiMarkdown: https://fletcherpenney.net/multimarkdown/
- kramdown 構文: https://kramdown.gettalong.org/syntax.html
- Markdown Preview Enhanced: https://shd101wyy.github.io/markdown-preview-enhanced/