CommonMark / GFM の仕様には含まれない、各方言の拡張記法をまとめたリファレンスです。
それぞれの記法に対応している方言を付けているので、「どれだけ広く使える記法なのか」を確認できます。
標準の記法(CommonMark / GFM)については、
Markdown 記法:基本的な書き方(CommonMark 〜 GFM)を参照してください。
Markdown 記法:基本的な書き方 | オリジナル・CommonMark・GFM・GLFMの違い
対象の方言
| 方言 | 概要 |
|---|---|
| GitHub | GFM + GitHub 独自の機能。Issue・Pull Request・リポジトリ内の .md ファイルなどで使える |
| GitLab(GLFM) | GFM + GitLab 独自の機能。GitHub の独自機能とも重なる部分が多い |
| Pandoc | ドキュメント変換ツール Pandoc の Markdown(Pandoc's Markdown)。拡張の多くは「extension」として個別に有効・無効を切り替えられる |
| kramdown | Ruby 製のパーサー。Jekyll(GitHub Pages)の既定のパーサーとして広く使われている |
| Markdown Extra | PHP Markdown Extra。脚注・定義リスト・略語・{#id} など、ほかの方言に広く取り入れられた記法の元になった方言 |
| markdown-it | JavaScript 製のパーサー。本体は CommonMark + テーブル・打ち消し線で、拡張記法はプラグインで追加する |
| MultiMarkdown(MMD) | 論文・書籍など「文書」の作成向けの方言。HTML のほか LaTeX・ODF・EPUB にも出力できる。この記事は MultiMarkdown 6 の仕様にもとづく |
| Markdown Preview Enhanced(MPE) | VS Code の拡張機能。markdown-it(公式プラグイン多数)に独自の拡張を加えたもので、ダイアグラム・コードの実行・スライド作成・Obsidian 風のノートリンクなどに対応する |
| Qiita | 技術記事の投稿サービス。GFM + 独自の拡張(ノート・リンクカード・コードブロックのファイル名など)。パーサーは Qiita Markdown として OSS で公開されている |
| Zenn | 技術記事の投稿サービス。markdown-it + 独自の拡張(メッセージ・折りたたみ・外部サービスの埋め込みなど)。パーサーは zenn-markdown-html として OSS で公開されている |
| Obsidian | Markdown ファイルでノートを管理するアプリ。CommonMark・GFM + 独自の拡張(ウィキリンク・コールアウト・埋め込みなど)で、Obsidian Flavored Markdown と呼ばれる |
| VitePress | Vue 製の静的サイトジェネレーター。markdown-it + 独自の拡張(カスタムコンテナ・コードブロックの拡張・ファイルのインクルードなど)。Markdown の中で Vue コンポーネントも使える |
| Starlight | Astro 製のドキュメントサイト用テーマ。remark(GFM)+ 独自の拡張(補足情報の :::、Expressive Code によるコードブロックの拡張など)。MDX・Markdoc でも書ける |
GitHub・GitLab・markdown-it・MPE・Qiita・Zenn・Obsidian・VitePress・Starlight は CommonMark がベースです。Pandoc・kramdown・Markdown Extra・MultiMarkdown は、オリジナル Markdown をベースにした独自の方言なので、基本記法の細かい挙動も CommonMark とは違うことがあります。
対応の表記について
- Pandoc(
+mark) のように書いているものは、既定では無効で、拡張を有効にすると使えるものです(例:pandoc -f markdown+mark)。 - markdown-it(プラグイン) は、markdown-it の公式プラグイン(
markdown-it-footnoteなど)で対応しているものです。サードパーティ製のプラグインまで含めると、ほかの多くの記法にも対応できます(markdown-it-attrs・markdown-it-anchorなど)。 - MPE は、パーサーを markdown-it(既定)と Pandoc から選べます。この記事の MPE の対応状況は、markdown-it パーサーを使った場合のものです。MPE(
enableTypographer) のように書いているものは、拡張機能の設定で有効にすると使えるものです。 - GitHub と GitLab は、同じ記法でも使える場所が限られるものがあります(コメント欄のみ、
.mdファイルのみ など)。 - Qiita・Zenn・Obsidian・VitePress・Starlight で、ほかの方言と役割は同じで書き方だけが違うもの(アラートなど)は、既存の項目の中に「Qiita での書き方」のように追加しています。
対応状況一覧
○ = 対応、△ = 設定が必要・一部のみ・書き方が違う、- = 非対応
| 記法 | GitHub | GitLab | Pandoc | kramdown | Markdown Extra | markdown-it | MultiMarkdown | Preview Enhanced | Qiita | Zenn | Obsidian | VitePress | Starlight |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 脚注 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | - | ○ |
| インライン脚注 | - | - | ○ | - | - | ○ | △ | ○ | - | ○ | ○ | - | - |
| 絵文字 | ○ | ○ | △ | - | - | ○ | - | ○ | ○ | - | - | ○ | - |
| アラート | ○ | ○ | △ | - | - | - | - | ○ | △ | △ | ○ | ○ | △ |
| カスタムコンテナ(<div>) | - | - | ○ | - | - | ○ | - | - | - | - | - | - | - |
| 折りたたみ(<details>) | - | - | - | - | - | - | - | - | - | ○ | △ | ○ | - |
| フロントマター・メタデータ | ○ | ○ | ○ | △ | - | - | △ | ○ | △ | △ | ○ | ○ | ○ |
| カラーチップ | ○ | ○ | - | - | - | - | - | - | ○ | - | - | - | - |
| 数式 | ○ | ○ | ○ | △ | - | - | ○ | ○ | ○ | ○ | ○ | △ | - |
| ダイアグラム(Mermaid など) | ○ | ○ | - | - | - | - | - | ○ | ○ | ○ | ○ | - | - |
| メンション・Issue 参照 | ○ | ○ | - | - | - | - | - | - | - | - | - | - | - |
| 目次 | - | ○ | - | ○ | - | - | ○ | ○ | - | - | - | ○ | - |
| 定義リスト | - | ○ | ○ | ○ | ○ | ○ | ○ | ○ | - | - | - | - | - |
| リスト番号の拡張 | - | - | ○ | - | - | - | - | - | - | - | - | - | - |
| 上付き・下付き | - | - | ○ | - | - | ○ | △ | ○ | - | - | - | - | - |
| 略語 | - | - | - | ○ | ○ | ○ | △ | ○ | - | - | - | - | - |
ハイライト(==) |
- | - | △ | - | - | ○ | - | ○ | - | - | ○ | - | - |
挿入(++) |
- | - | - | - | - | ○ | - | - | - | - | - | - | - |
| コメント(表示されないメモ) | - | - | - | ○ | - | - | - | - | - | - | ○ | - | - |
| CriticMarkup(校正記法) | - | - | - | - | - | - | ○ | △ | - | - | - | - | - |
| 画像サイズ・リンクの属性 | - | ○ | ○ | ○ | ○ | - | △ | - | - | △ | △ | ○ | - |
| ID・クラス・属性の付与 | - | - | ○ | ○ | ○ | - | △ | △ | - | - | - | ○ | - |
| 見出しへの参照 | - | - | ○ | - | - | - | ○ | - | - | - | - | - | - |
ブロック参照(^id) |
- | - | - | - | - | - | - | ○ | - | - | ○ | - | - |
| コードブロックの行番号・行ハイライト | - | - | ○ | - | - | - | - | ○ | - | - | - | ○ | ○ |
| コードブロックのファイル名 | - | - | - | - | - | - | - | - | ○ | ○ | - | - | ○ |
| diff と言語のハイライトの併用 | - | - | - | - | - | - | - | - | ○ | ○ | - | ○ | ○ |
出力形式を指定した生コード({=html}) |
- | - | ○ | - | - | - | ○ | - | - | - | - | - | - |
| テーブルのセル結合 | - | - | - | - | - | - | ○ | △ | - | - | - | - | - |
| テーブルのキャプション | - | - | ○ | - | - | - | ○ | - | - | - | - | - | - |
テーブルの複数 <tbody> |
- | - | - | ○ | - | - | ○ | - | - | - | - | - | - |
テーブルのフッター(<tfoot>) |
- | - | - | ○ | - | - | - | - | - | - | - | - | - |
| グリッドテーブル | - | - | ○ | - | - | - | - | - | - | - | - | - | - |
| スマート記号(タイポグラフィ) | - | - | ○ | ○ | - | ○ | ○ | △ | - | - | - | - | ○ |
画像だけの段落を <figure> にする |
- | - | ○ | - | - | - | ○ | - | - | - | - | - | - |
HTML ブロック内の Markdown(markdown="1") |
- | - | - | ○ | ○ | - | - | - | - | - | - | - | - |
| ファイルの読み込み(include) | - | ○ | - | - | - | - | ○ | ○ | - | - | - | ○ | - |
| 動画・音声の埋め込み | - | ○ | - | - | - | - | - | △ | - | - | - | - | - |
ウィキリンク([[ ]]) |
- | - | - | - | - | - | - | ○ | - | - | ○ | - | - |
ノートの埋め込み(![[ ]]) |
- | - | - | - | - | - | - | ○ | - | - | ○ | - | - |
タグ(#tag) |
- | - | - | - | - | - | - | ○ | - | - | ○ | - | - |
| リンクカード | - | - | - | - | - | - | - | - | ○ | ○ | - | - | - |
| 外部サービスの埋め込み | - | - | - | - | - | - | - | - | △ | ○ | - | - | - |
| コンポーネントの埋め込み(Vue・MDX) | - | - | - | - | - | - | - | - | - | - | - | ○ | △ |
複数行の引用(>>>) |
- | ○ | - | - | - | - | - | - | - | - | - | - | - |
| JSON テーブル | - | ○ | - | - | - | - | - | - | - | - | - | - | - |
| bracketed span | - | - | ○ | - | - | - | - | - | - | - | - | - | - |
| ラインブロック | - | - | ○ | - | - | - | - | - | - | - | - | - | - |
| 属性の定義と再利用(ALD) | - | - | - | ○ | - | - | - | - | - | - | - | - | - |
| コードチャンク(コードの実行) | - | - | - | - | - | - | - | ○ | - | - | - | - | - |
| タスクの拡張ステータス | - | - | - | - | - | - | - | - | - | - | ○ | - | - |
複数の方言で使える拡張記法
脚注(Footnote)
対応 :GitHub・GitLab・Pandoc・kramdown・Markdown Extra・markdown-it(プラグイン)・MultiMarkdown・MPE・Qiita・Zenn・Obsidian・Starlight
本文に脚注をつけます[^1]。
[^1]: これが脚注の内容です。ラベルは数字でも文字列でもかまいません。
- 脚注の定義はどこに書いてもよく、出力では文書の末尾にまとめられます。
- 番号は、ラベルに関係なく 本文に出てきた順 に自動で振られます。
- 定義の 2 段落目以降は、4 スペース下げて書きます。
- GitHub では、Wiki では使えません。
すべての方言が対応している、最も広く使える拡張記法です。
インライン脚注
対応 :Pandoc・markdown-it(プラグイン)・MultiMarkdown(書き方が違う)・MPE・Zenn・Obsidian
本文に脚注をつけます^[ここが脚注の内容です。定義を別の場所に書く必要はありません。]。
脚注の内容を、その場に直接書けます。出力は通常の脚注と同じです。Obsidian では、リーディングビューでのみ表示されます(ライブプレビューでは表示されません)。
MultiMarkdown は、[^ ] の中に直接内容を書きます。
本文に脚注をつけます[^ここが脚注の内容です。]。
絵文字(Emoji)
対応 :GitHub・GitLab・Pandoc(+emoji)・markdown-it(プラグイン)・MPE・Qiita・VitePress
今日も元気 :smile: :+1:
↓
今日も元気 😄 👍
:で囲んだショートコードが、絵文字に変換されます。- Pandoc では、
markdown+emojiで有効になります(入力形式をgfmにした場合は既定で有効)。 - markdown-it の絵文字プラグインは、
:-);)8-)などの顔文字も絵文字に変換します。 - MPE は、
:fa-car:のようにfa-で始まるコードを Font Awesome のアイコンに変換します。 - Zenn は、Markdown の記法としては対応していません。エディタで
:に続けて入力すると候補が表示され、絵文字の文字そのものが入力されます。
アラート(Alert)
対応 :GitHub・GitLab・Pandoc(+alerts)・MPE(書き方が違う)・Obsidian・VitePress・Qiita(書き方が違う)・Zenn(書き方が違う)・Starlight(書き方が違う)
> [!NOTE]
> 読み飛ばしていても知っておいてほしい情報。
> [!TIP]
> より良く・簡単にするためのヒント。
> [!IMPORTANT]
> 目的の達成に欠かせない重要な情報。
> [!WARNING]
> 問題を避けるために、すぐに注意が必要な情報。
> [!CAUTION]
> ある操作によるリスクや悪い結果についての注意。
引用の 1 行目に種類を書くと、色とアイコン付きのボックスで表示されます。種類は 5 つです。
- GitLab では、種類の後ろに タイトルを付けられます (
> [!warning] データの削除)。また、後述の複数行の引用(>>>)でもアラートを使えます。 - Pandoc では、
markdown+alertsで有効になります(入力形式をgfmにした場合は既定で有効)。 - MPE には、MkDocs 由来の別の記法(
!!! note)もあります(後述の「Admonition」)。 - 非対応の環境では、
[!NOTE]の文字がそのまま入った普通の引用になります。
Obsidian での書き方(コールアウト/折りたたみ)
> [!note] タイトルを付けられる
> 本文
> [!faq]- 折りたたまれた状態で表示する
> 本文
> [!faq]+ 開いた状態で折りたためるようにする
> 本文
書き方は GitHub と同じですが、種類が多く(note abstract info todo tip success question warning failure danger bug example quote とその別名)、タイトルを付けたり、- + で折りたためるようにしたりできます。種類の大文字・小文字は区別されません。
Qiita での書き方(:::note)
:::note info
補足説明(info は省略できます)
:::
:::note warn
警告
:::
:::note alert
より強い警告
:::
種類は info warn alert の 3 つです。中で使える Markdown の記法は、リスト・強調・打ち消し線・コード・リンク・画像に限られます。
Zenn での書き方(:::message)
:::message
メッセージ
:::
:::message alert
警告メッセージ
:::
種類は通常と alert の 2 つです。
VitePress での書き方(カスタムコンテナ)
::: info
情報ボックス
:::
::: tip
ヒント
:::
::: danger 停止
タイトルを変えた危険の警告
:::
種類は info tip warning danger と、折りたたみの details です。種類の後ろに文字列を書くと、タイトルになります。VitePress は、GitHub と同じ > [!NOTE] の書き方にも対応していて、同じ見た目で表示されます。
Starlight での書き方(補足情報 / Aside)
:::note
注釈
:::
:::tip[ご存知でしたか?]
タイトルを付けたヒント
:::
:::caution{icon="heart"}
アイコンを変えた注意
:::
種類は note tip caution danger の 4 つです。タイトルは [ ]、アイコンは {icon="..."} で指定します。VitePress とは、::: の後に空白を入れないことと、タイトルの書き方が違います。
MPE での書き方(Admonition)
!!! note これはタイトルです
これは本文です。
本文は 4 スペース下げて書きます。
!!! 種類 タイトル の行の後に、4 スペース下げて本文を書くと、色とアイコン付きのボックスで表示されます。種類には note tip warning danger などがあります。
もともとは Python-Markdown の拡張で、ドキュメント作成ツールの MkDocs(Material for MkDocs)でよく使われている記法です。
カスタムコンテナ(<div>)
対応 :Pandoc・markdown-it(プラグイン)
::: warning
ここは `warning` クラスの div になります。
**Markdown の記法**もそのまま使えます。
:::
↓
<div class="warning">
<p>ここは <code>warning</code> クラスの div になります。</p>
<p><strong>Markdown の記法</strong>もそのまま使えます。</p>
</div>
::: を 3 個以上並べた行で囲むと、<div> になります。
- Pandoc (fenced div):どんなクラス名でも使えます。
::: {#id .class}のように、ID や複数のクラスも付けられます。 - markdown-it (
markdown-it-container):使うクラス名を、あらかじめプラグインに登録しておく必要があります。登録していない名前は、ただの文字として表示されます。
折りたたみ(<details>)
対応:Zenn・VitePress・Obsidian(コールアウトで代用)
Zenn
:::details タイトル
クリックすると表示される内容
:::
中にほかの ::: の要素を入れるときは、外側のコロンを増やします。
::::details タイトル
:::message
ネストされた要素
:::
::::
VitePress
::: details クリックして表示
表示したい内容
:::
::: details 最初から開いておく {open}
表示したい内容
:::
{open} を付けると、開いた状態で表示されます。
Obsidian:前述のコールアウトに - を付けると、折りたたまれた状態で表示されます(> [!note]- タイトル)。
<details> タグについて
多くの方言では、HTML の<details> <summary> タグで同じことができます(GitHub・Qiita・Starlight など)。Markdown の記法を中で使うときは、<summary> の後に空行を入れます。
フロントマター・メタデータ
対応 :GitHub・GitLab・Pandoc・kramdown(Jekyll などの SSG 側で処理)・MultiMarkdown(書き方が違う)・MPE・Obsidian・Qiita(Qiita CLI)・Zenn(Zenn CLI)・VitePress・Starlight
---
title: 記事タイトル
date: 2026-09-24
tags: [markdown, pandoc]
---
本文
文書の先頭に、--- で囲んだ YAML でメタデータを書きます。
- GitHub :
.mdファイルでは、表の形で表示されます。 - GitLab :
.mdファイルと Wiki で、そのままの形でボックスに表示されます。YAML のほか、TOML(+++)と JSON(;;;)にも対応しています。 - Pandoc :本文には出力されず、タイトルなどのメタデータとして使われます。
- kramdown :kramdown 自体は対応していません。Jekyll などが、kramdown に渡す前に取り除いて処理します。
- Obsidian :「プロパティ」として、ノートの上部に表で表示・編集できます。
tagsaliasesなどのキーは、Obsidian の機能(タグ・別名)にも使われます。 - VitePress・Starlight :ページのタイトルやレイアウトなどの設定に使われます。Starlight では
titleが必須です。VitePress では、本文中から{{ $frontmatter.title }}のように値を参照することもできます。 - Qiita・Zenn :Web のエディタでは使えません。GitHub のリポジトリで記事を管理する Qiita CLI・Zenn CLI の記事ファイルで、タイトルやタグなどを書くのに使います。
- MPE :既定ではプレビューに表示されず、目次・プレゼンテーション・出力などの設定に使われます(表やコードブロックとして表示する設定もあります)。
MultiMarkdown は、YAML ではなく キー: 値 の形式です(前後の --- は省略できます)。
Title: 記事タイトル
Author: 名前
Date: 2026-09-24
本文
YAML と似ていますが、YAML の構文すべてに対応しているわけではありません。
メタデータ変数
対応 :MultiMarkdown
Title: 記事タイトル
Version: 1.2.0
# [%Title]
この文書のバージョンは [%Version] です。
[%キー] と書くと、メタデータの値に置き換わります。
カラーチップ
対応 :GitHub・GitLab・Qiita
背景色は `#0969DA` です。
インラインコードの中に色のコードを書くと、横に色の見本(丸いチップ)が表示されます。
| 形式 | GitHub | GitLab | Qiita |
|---|---|---|---|
| HEX | `#RRGGBB` |
`#RGB` `#RGBA` `#RRGGBB` `#RRGGBBAA` |
`#RRGGBB` |
| RGB | `rgb(R,G,B)` |
`RGB(R,G,B)` `RGBA(R,G,B,A)` |
`rgb(R,G,B)` `rgba(R,G,B,A)` |
| HSL | `hsl(H,S,L)` |
`HSL(H,S,L)` `HSLA(H,S,L,A)` |
`hsl(H,S,L)` `hsla(H,S,L,A)` |
GitHub では、Issue・Pull Request・Discussions でのみ表示されます(.md ファイルでは表示されません)。
数式(Math)
対応 :GitHub・GitLab・Pandoc・kramdown($$ のみ)・MultiMarkdown・MPE・Qiita・Zenn・Obsidian・VitePress(markdown.math)
インライン:$E = mc^2$
ブロック:
$$
E = mc^2
$$
LaTeX の記法で数式を書けます。表示には MathJax や KaTeX などが使われます。
GitHub・GitLab・MPE・Qiita では、次の書き方も使えます($`...`$ は GitHub・GitLab・Qiita のみ)。
インライン:$`E = mc^2`$
```math
E = mc^2
```
MPE では ( ... )(インライン)と [ ... ](ブロック)も、MultiMarkdown では ( ... ) と [ ... ](バックスラッシュ 2 個)も使えます。
Qiita の注意
$や$$で囲む書き方では、数式の中の{_などが Markdown のエスケープや強調と衝突することがあります。Qiita では、エスケープが不要な$`...`$と```mathの書き方が推奨されています。
Zenn の注意
$$の前後には空行を入れます。空行がないと、正しく表示されないことがあります。
VitePress の注意
数式は既定で無効です。markdown-it-mathjax3をインストールし、設定でmarkdown.math: trueにすると使えます。
kramdown の注意
kramdown は$1 個の記法に対応していません。インラインもブロックも$$で書き、段落の中にあればインライン、単独の段落ならブロックとして扱われます。
$の前後の空白
Pandoc と MultiMarkdown では、開きの$の直後と閉じの$の直前に空白があると、数式として扱われません($ x $は不可)。金額の$と区別するためのルールです。
Markdown 記法:数式(Math)記法のまとめ
ダイアグラム(Mermaid など)
対応 :GitHub・GitLab・MPE・Qiita・Zenn・Obsidian
```mermaid
graph LR
A[開始] --> B{条件}
B -->|Yes| C[処理1]
B -->|No| D[処理2]
```
コードブロックの言語名を mermaid にすると、図として表示されます。フローチャートのほか、シーケンス図・ガントチャートなども書けます。
コードブロックの言語名で表示が変わるものは、ほかにもあります。
- GitHub :
geojson/topojson(地図)、stl(3D モデル) - GitLab :
plantuml(PlantUML)、Kroki 経由の各種ダイアグラム(管理者による設定が必要) - Qiita :
plantuml(PlantUML)。Mermaid は、1 つのコードブロックあたり 2000 文字までなどの制限があります - MPE :
plantuml/puml(PlantUML)、wavedrom(タイミング図)、dot/viz(Graphviz)、vega/vega-lite(グラフ)、d2、tikz、wsd(WebSequenceDiagrams)など。{kroki=true}で Kroki 経由の図にも対応します。図にせずコードのまま表示したいときは、{code_block=true}を付けます(PlantUML・D2 などは、Java や各ツールのインストールが必要です)
Markdown 記法:図表(Diagram)記法のまとめ
メンション・Issue 参照
対応 :GitHub・GitLab
@username さん、#123 を確認してください。
ユーザー名や Issue 番号が、自動でリンクになります。GitHub・GitLab のデータと結びついているため、それ以外の環境では意味を持ちません。
| 参照先 | GitHub | GitLab |
|---|---|---|
| ユーザー | @username |
@username |
| Issue | #123 |
#123 |
| Pull Request / Merge Request | #123 |
!123 |
| 別リポジトリの Issue | owner/repo#123 |
group/project#123 |
| ラベル | - | ~label |
| マイルストーン | - | %milestone |
目次(Table of Contents)
対応 :GitLab・kramdown・MultiMarkdown・MPE・VitePress
GitLab
[[_TOC_]]
[TOC] でも同じです(MPE も [TOC] に対応)。単独の行に書くと、その位置に見出しの目次が入ります。Issue・Merge Request・エピックの説明欄、.md ファイル、Wiki で使えます(コメントでは使えません)。
kramdown
* 目次(この行が目次に置き換わる)
{:toc}
リストの 1 項目に {:toc} を付けると、そのリストが目次に置き換わります。1. で書けば番号付きの目次になります。目次から外したい見出しには {:.no_toc} を付けます。
MultiMarkdown
{{TOC}}
{{TOC:2}} でレベル 2 までに、{{TOC:2-3}} でレベル 2〜3 だけに絞れます。
MPE
[TOC]
[TOC] はプレビューにだけ目次を表示し、元の Markdown は変わりません。コマンド(Markdown Preview Enhanced: Create Toc)を使うと、目次のリストを Markdown に直接書き込み、保存のたびに更新します。見出しに {ignore=true} を付けると、目次から除外できます。
VitePress
[[toc]]
表示する見出しのレベルは、設定(markdown.toc)で変えられます。GitLab の [[_TOC_]] と似ていますが、アンダースコアがない小文字の toc です。
メモ
Pandoc には目次を置く記法はなく、変換時のオプション(--toc)で文書の先頭に目次を生成します。Qiita・Zenn・Starlight も記法はなく、見出しから目次が自動で生成され、ページの横に表示されます。
定義リスト(Definition List)
対応 :GitLab・Pandoc・kramdown・Markdown Extra・markdown-it(プラグイン)・MultiMarkdown・MPE
用語A
: 用語Aの説明。
用語B
: 用語Bの説明1。
: 用語Bの説明2。
↓
<dl>
<dt>用語A</dt>
<dd>用語Aの説明。</dd>
<dt>用語B</dt>
<dd>用語Bの説明1。</dd>
<dd>用語Bの説明2。</dd>
</dl>
- 1 つの用語に、説明を複数付けられます。
- 用語と
:の間に空行を入れると、説明が<p>で囲まれます。 - MultiMarkdown は、空行の有無に関係なく、説明を常に
<p>で囲みます。 - Pandoc・markdown-it・MPE では、
:の代わりに~も使えます。
項目の間の空行 :Pandoc・markdown-it・MPE では、 項目(用語と説明のセット)の間に空行が必要 です。空行がないと、次の用語が前の説明の続きとして扱われます。
リスト番号の拡張
対応 :Pandoc
英字・ローマ数字の番号
a. 項目1
b. 項目2
i. 項目1
ii. 項目2
↓
<ol type="a">
<li>項目1</li>
<li>項目2</li>
</ol>
A. a) (i) など、英字・ローマ数字・括弧の組み合わせを番号にできます。#. と書くと、前の番号から自動で連番になります。
例リスト(@)
(@) 1つ目の例。
(@) 2つ目の例。
説明の文章を挟んでも……
(@) 番号は続きから振られます(3)。
(@) の項目には、文書全体を通して連番が振られます。(@good) のようにラベルを付けると、本文から (@good) で番号を参照できます。
上付き・下付き(<sub> / <sup>)
対応 :Pandoc・markdown-it(プラグイン)・MultiMarkdown(書き方が一部違う)・MPE
H~2~O、2^10^
↓
H<sub>2</sub>O、2<sup>10</sup>
^...^で上付き、~...~で下付きになります。- 中にスペースを含めたいときは、
とエスケープします(a^b c^)。
MultiMarkdown は、閉じの記号を省略できます。空白や記号を含む場合は、閉じの記号まで書きます。
100m^2
x~z
y^(a+b)^
x~y,z~
注意 :GFM では
~...~が 打ち消し線 になるため、同じ記法でも結果が変わります。GitHub・GitLab で上付き・下付きを使うときは、<sup><sub>を直接書きます。
ハイライト(<mark>)
対応 :Pandoc(+mark)・markdown-it(プラグイン)・MPE・Obsidian
==ハイライトしたい部分==
↓
<mark>ハイライトしたい部分</mark>
- Pandoc は、
markdown+markで有効になります。拡張を有効にしなくても、後述の bracketed span で[ハイライトしたい部分]{.mark}と書けば<mark>になります。 - MultiMarkdown の CriticMarkup にも、似た記法
{==...==}があります(後述)。
挿入・削除(<ins>, <del>)
対応 :markdown-it(プラグイン)
++追加した文字++
↓
<ins>追加した文字</ins>
<ins>(挿入されたテキスト)になり、多くのブラウザでは下線付きで表示されます。
同じように追加・削除を表す記法には、GitLab のインライン差分({+ +})や、MultiMarkdown の CriticMarkup({++ ++})があります。
インライン差分
対応 :GitLab
- {+ 追加した文字 +}
- {- 削除した文字 -}
追加は緑、削除は赤でハイライトされます。{ } の代わりに [ ] でも書けますが、開きと閉じの記号は揃える必要があります({+ ... +] は不可)。
コメント(表示されないメモ)
対応 :kramdown・Obsidian(書き方が違う)
kramdown
{::comment}
ここはコメントとして扱われ、表示されません。
{:/comment}
この部分は {::nomarkdown}**変換されません**{:/} 。
{::comment}〜{:/comment}の部分は、HTML コメント(<!-- -->)として出力されます。{::nomarkdown}〜{:/}の部分は、Markdown として変換されず、そのまま出力されます。
Obsidian
これは%%インラインの%%コメントです。
%%
これはブロックのコメントです。
複数行にわたって書けます。
%%
%% で囲んだ部分は、エディタでだけ表示され、リーディングビューには表示されません。
ほかの方言では、HTML コメント(
<!-- -->)で同じことができます。ただし HTML コメントは、出力された HTML のソースには残ります。
CriticMarkup(校正記法)
対応 :MultiMarkdown・MPE(enableCriticMarkupSyntax)
これは{++追加した++}文です。
これは{--削除した--}文です。
これは{~~古い~>新しい~~}文です。
これは{==ハイライトした==}文です。
これは文です{>>ここにコメント<<}。
| 記法 | 意味 |
|---|---|
{++ ++} |
追加 |
{-- --} |
削除 |
{~~ 旧 ~> 新 ~~} |
置換 |
{== ==} |
ハイライト |
{>> <<} |
コメント |
文書の校正・変更履歴を、テキストのまま書ける記法です。変換時に、変更をハイライトして表示するほか、すべての変更を反映した版(--accept)や、すべての変更を取り消した版(--reject)を出力できます。
MPE では、設定(enableCriticMarkupSyntax)で有効にすると、プレビューで変更箇所が色分け表示されます(markdown-it パーサーのみ)。
CriticMarkup 自体は独立した仕様で、MultiMarkdown 以外にも対応しているエディタやツールがあります。
画像サイズ・リンクの属性
対応 :GitLab・Pandoc・kramdown・Markdown Extra・MultiMarkdown(書き方が違う)・Zenn(書き方が違う)・Obsidian(書き方が違う)・VitePress
画像やリンクの後ろに、属性を { } で続けます。
GitLab・Pandoc・Markdown Extra・VitePress での書き方
{width=300}
[リンク](https://example.com){.external}
kramdown での書き方
{: width="300"}
MultiMarkdown (( ) の中に続けて書く)

![代替テキスト][img]
[img]: image.png "タイトル" width=300px height=200px
↓
<img src="image.png" alt="代替テキスト" width="300">
- GitLab は
widthとheightの指定に対応していて、単位はpx(既定)か%です。 - Pandoc・kramdown・Markdown Extra は、後述の「クラス・属性の付与」と同じ書き方です。
Zenn での書き方(URL の後ろに =幅x)

Obsidian (代替テキストの後ろに |幅x高さ)


![[image.png|100]]
幅だけを指定すると、縦横比を保ったまま拡大・縮小されます。
- GitHub・markdown-it(公式プラグイン)・MPE・Qiita では使えないため、
<img width="300">のように HTML を直接書きます。
ID・クラス・属性の付与
対応 :Pandoc・kramdown・Markdown Extra・MultiMarkdown(リンク・画像のみ)・MPE(見出し・コードブロックのみ)・VitePress
## 見出し {#my-id}
↓
<h2 id="my-id">見出し</h2>
- 見出しの末尾に
{#ID}を書くと、その ID が付きます。 - Pandoc・Markdown Extra・MPE では、クラスも同時に付けられます(
## 見出し {#my-id .note})。 - MPE では、
{ignore=true}を付けると、その見出しを目次から除外できます。
MultiMarkdown は、[ ] でラベルを書きます。
## 見出し [my-id]
どの方言も { } の中に #ID .クラス 属性=値 を書きますが、付けられる要素と書き方が違います。
Pandoc・Markdown Extra :見出し・コードブロック・リンク・画像などの 直後 に { } を書きます。Pandoc はインラインコードや、後述の fenced div・bracketed span にも付けられます。
## 見出し {.main #top lang=ja}
[ボタン](https://example.com){.btn}
```{.python .numberLines}
print("hello")
```
↓
<h2 class="main" id="top" lang="ja">見出し</h2>
<a href="https://example.com" class="btn">ボタン</a>
kramdown :IAL(Inline Attribute List)と呼ばれる {: } を使います。ブロック要素なら 次の行 、インライン要素なら 直後 に書き、ほぼすべての要素に属性を付けられます。
> 引用文
{: .note #quote1}
これは *赤い文字*{: style="color: red"} です。
↓
<blockquote class="note" id="quote1">
<p>引用文</p>
</blockquote>
<p>これは <em style="color: red">赤い文字</em> です。</p>
MultiMarkdown :前述の「画像サイズ・リンクの属性」の書き方で、リンクと画像にだけ属性を付けられます。
VitePress :属性のプラグイン(@mdit/plugin-attrs)が組み込まれていて、ほぼすべての要素に、Pandoc とほぼ同じ書き方({.class #id})で属性を付けられます。
MPE :見出しとコードブロックにだけ、Pandoc と同じ書き方で付けられます(コードブロックは ```js {.class1 .class2} のように、言語名の後ろに書きます)。
見出しへの参照
対応 :Pandoc・MultiMarkdown
## はじめに
詳しくは [はじめに][] を参照してください。
↓
<p>詳しくは <a href="#はじめに">はじめに</a> を参照してください。</p>
見出しの文字列を参照名にして、その見出しへのリンクを作れます。見出しの ID を調べて書く必要がありません。
- Pandoc は
[はじめに]だけでも同じリンクになります。 - MultiMarkdown は、見出しに付けたラベル(
## はじめに [intro])や、テーブル・画像のラベルも参照できます。
ブロック参照(^id)
対応 :MPE・Obsidian
この段落は参照できます。 ^my-block
- リストの項目も参照できます。 ^another-block
段落やリスト項目の末尾に ^ID を付けると、ほかのファイルから [[Note#^my-block]] でリンクしたり、![[Note#^my-block]] で埋め込んだりできます。
コードブロックの行番号・行ハイライト
対応 :Pandoc・MPE・VitePress・Starlight(書き方が違う)
Pandoc での書き方
```{.python .numberLines startFrom="10"}
print("hello")
```
.numberLines で行番号が付きます。startFrom で開始番号を指定できます。
MPE での書き方
```javascript {.line-numbers}
function add(x, y) {
return x + y;
}
```
```javascript {highlight=[1-3,5]}
...
```
.line-numbersクラスで、行番号が付きます。highlight=で、指定した行をハイライトします(highlight=10、highlight=10-20、highlight=[1-10,15,20-22])。
VitePress での書き方
VitePress
```js{1,4,6-8}
...
```
```ts:line-numbers=2
...
```
const a = 1 // [!code highlight]
const b = 2 // [!code focus]
const c = 3 // [!code error]
const d = 4 // [!code warning]
- 言語名の直後の
{ }で、ハイライトする行を指定します({4}、{5-8}、{4,7-13,16})。 :line-numbersで行番号を表示し、=2で開始番号を指定できます。設定(markdown.lineNumbers)ですべてのコードブロックに行番号を付けることもできます。- コードの行末に
// [!code highlight]などのコメントを書くと、その行をハイライト・フォーカス(ほかの行をぼかす)・エラー表示・警告表示にできます。コメント自体は表示されません。
Starlight での書き方(Expressive Code)
```js {2-3}
...
```
```js "個別の用語" /正規表現.*います/
...
```
```js ins={4} del={5}
...
```
{ }で行を、" "や/ /(正規表現)で行の中の文字列をマークできます。ins=del=を使うと、挿入(緑)・削除(赤)のマークになります。- 行番号は、Expressive Code の行番号プラグインを追加すると表示できます(既定では無効)。
コードブロックのファイル名
対応 :Qiita・Zenn・Starlight(書き方が違う)
Qiita・Zenn での書き方
```ruby:qiita.rb
puts 'Hello'
```
言語名の後ろに :ファイル名 を書くと、コードブロックの上部にファイル名が表示されます。Qiita・Zenn とも同じ書き方です。
Starlight での書き方(Expressive Code)
```js title="my-test-file.js"
console.log('Hello World!');
```
```js
// my-test-file.js
console.log('Hello World!');
```
```bash title="依存関係のインストール"
npm install
```
title="..."、またはコードの 1 行目のファイル名のコメントで、エディタ風のタブにファイル名が表示されます。bash sh などのシェルの言語は、ターミナル風の枠で表示されます(frame="none" で枠なし)。
VitePress の
:line-numbersは、Qiita・Zenn のファイル名と同じ:の書き方ですが、意味が違います。VitePress でファイル名を表示できるのは、後述のコードグループの中(```js [config.js])だけです。
ほかの方言では、
ruby:qiita.rb全体が言語名として扱われ、シンタックスハイライトが効かなくなることがあります。
diff と言語のハイライトの併用
対応 :Qiita・Zenn・VitePress・Starlight(書き方が違う)
Qiita での書き方(diff_言語名)
```diff_javascript
- const a = 1;
+ const a = 2;
```
Zenn での書き方(diff 言語名、半角スペース区切り)
```diff js:fooBar.js
- const a = 1;
+ const a = 2;
```
VitePress での書き方(行末のコメント)
```js
const a = 1 // [!code --]
const a = 2 // [!code ++]
```
Starlight での書き方(diff lang="言語名")
```diff lang="js"
- const a = 1;
+ const a = 2;
```
行頭の + -(VitePress は行末のコメント)で追加・削除の行を色分けしながら、その言語のシンタックスハイライトも適用します。Zenn では、ファイル名も同時に指定できます。
通常の
diffだけでは、追加・削除の色分けはされますが、コードのシンタックスハイライトは効きません。
出力形式を指定した生コード({=html})
対応 :Pandoc・MultiMarkdown
これは `<b>HTML</b>`{=html} です。
```{=latex}
newpage
```
コードの後ろに {=出力形式} を付けると、その形式に出力するときだけ、中身が 変換されずにそのまま 出力されます。ほかの形式に出力するときは無視されます。
HTML・LaTeX など、複数の形式に出力する文書で使います。MultiMarkdown は {=*} で、すべての形式にそのまま出力できます。
テーブルのセル結合
対応 :MultiMarkdown・MPE(enableExtendedTableSyntax、書き方が違う)
MultiMarkdown での書き方
| | グループ ||
| 列1 | 列2 | 列3 |
|--------------|:---------:|----------:|
| 内容 | 横に2列分結合 ||
| 内容 | 内容 | 内容 |
セルの末尾に | を 結合したい列の数だけ 並べると、横方向に結合されます(colspan)。行の末尾のセルを結合する場合は、行末の | を省略できません。
MPE での書き方
| 列1 | 列2 | 列3 |
|---------------|-------------|---------------|
| 縦に2行分結合 | > | 横に2列分結合 |
| ^ | 内容 | 内容 |
>だけのセルは、 右隣のセル と結合されます(colspan)。^だけのセルは、 上のセル と結合されます(rowspan)。>や^を文字として表示したいときは、>^とエスケープします。- 設定(
enableExtendedTableSyntax)で有効にすると使えます。
テーブルのキャプション
対応 :Pandoc・MultiMarkdown(書き方が違う)
Pandoc での書き方
テーブルの直前か直後に、: で始まる行(または Table: )を書きます。
| 列1 | 列2 |
|---|---|
| 内容1 | 内容2 |
: テーブルのキャプション
MultiMarkdown での書き方
テーブルの直後の行に、[ ] で囲んで書きます。
| 列1 | 列2 |
|---|---|
| 内容1 | 内容2 |
[テーブルのキャプション]
↓
<table>
<caption>テーブルのキャプション</caption>
...
</table>
MultiMarkdown は [キャプション][label] とラベルも付けられ、相互参照に使えます。
テーブルの複数 <tbody>
対応 :kramdown・MultiMarkdown(書き方が違う)
kramdown での書き方
本文の途中に |---- の行を入れます。
| 列1 | 列2 |
|-----|-----|
| A-1 | A-2 |
|----
| B-1 | B-2 |
MultiMarkdown での書き方
行の間に 空行を 1 行 入れます。
| 列1 | 列2 |
|-----|-----|
| A-1 | A-2 |
| B-1 | B-2 |
↓
<table>
<thead>...</thead>
<tbody>
<tr><td>A-1</td><td>A-2</td></tr>
</tbody>
<tbody>
<tr><td>B-1</td><td>B-2</td></tr>
</tbody>
</table>
<tbody> ごとに CSS で区切り線を付けるなど、テーブルをグループに分けて見せたいときに使います。
テーブルのフッター(<tfoot>)
対応 :kramdown
| Header1 | Header2 | Header3 |
|:--------|:-------:|--------:|
| cell1 | cell2 | cell3 |
| cell4 | cell5 | cell6 |
|----
| cell1 | cell2 | cell3 |
| cell4 | cell5 | cell6 |
|=====
| Foot1 | Foot2 | Foot3 |
↓
<table>
<thead>
<tr><th>Header1</th><th>Header2</th><th>Header3</th></tr>
</thead>
<tbody>
<tr><td>cell1</td><td>cell2</td><td>cell3</td></tr>
<tr><td>cell4</td><td>cell5</td><td>cell6</td></tr>
</tbody>
<tbody>
<tr><td>cell1</td><td>cell2</td><td>cell3</td></tr>
<tr><td>cell4</td><td>cell5</td><td>cell6</td></tr>
</tbody>
<tfoot>
<tr><td>Foot1</td><td>Foot2</td><td>Foot3</td></tr>
</tfoot>
</table>
(style="text-align: …" は省略)
|=====(|の直後に=):これより下の行が<tfoot>になります。|----(|の直後に-):区切り行です。ヘッダの直下なら<thead>と<tbody>の境目になり、本文の途中なら<tbody>を分割します(前述の「テーブルの複数<tbody>」)。- ヘッダの区切り行がないテーブルも書けます(すべて
<tbody>になる)。
グリッドテーブル
対応 :Pandoc
+--------+---------------+
| 列1 | 列2 |
+========+===============+
| 内容1 | - リスト1 |
| | - リスト2 |
+--------+---------------+
+ - | で罫線を描く形式です。 セルの中にリストや複数の段落 を書けます。
このほかに、罫線なしで列の位置を揃えて書く simple table 、セル内で改行できる multiline table もあります。
simple table
Right Left Center Default
------- ------ ---------- -------
12 12 12 12
123 123 123 123
1 1 1 1
multiline table
-------------------------------------------------------------
Centered Default Right Left
Header Aligned Aligned Aligned
----------- ------- --------------- -------------------------
First row 12.0 Example of a row that
spans multiple lines.
Second row 5.0 Here's another one. Note
the blank line between
rows.
-------------------------------------------------------------
Table: Here's the caption. It, too, may span
multiple lines.
スマート記号(タイポグラフィ)
対応 :Pandoc・kramdown・markdown-it(typographer オプション)・MultiMarkdown・MPE(enableTypographer)・Starlight
"引用符" と 'シングル' -- 範囲 --- ダッシュ...
↓
“引用符” と ‘シングル’ – 範囲 — ダッシュ…
記号が、印刷用の記号に自動で変換されます。
| 入力 | 出力 |
|---|---|
" ' |
“ ” ‘ ’(向きのある引用符) |
-- |
–(en ダッシュ) |
--- |
—(em ダッシュ) |
... |
…(三点リーダー) |
- markdown-it は、
(c)→ ©、(r)→ ®、(tm)→ ™、+-→ ± なども変換します。 - kramdown は、
<<>>→ « » も変換します。 - Pandoc・kramdown・MultiMarkdown・Starlight(Astro の
smartypants)では 既定で有効 です。markdown-it はオプション(typographer: true)で、MPE は設定(enableTypographer)で有効にします。
注意 :コードの中は変換されませんが、本文中に書いたコマンドのオプション(
--tocなど)は変換されてしまいます。コマンドやオプションは、インラインコードで囲みます。
画像だけの段落を <figure> にする
対応 :Pandoc・MultiMarkdown

↓
<figure>
<img src="photo.jpg" alt="写真の説明">
<figcaption>写真の説明</figcaption>
</figure>
画像 だけ の段落は、<figure> で囲まれ、代替テキストが <figcaption> として使われます。文中の画像は、通常どおり <img> になります。
HTML ブロック内の Markdown(markdown="1")
対応 :kramdown・Markdown Extra
<div class="note" markdown="1">
*ここは Markdown として処理される*
</div>
↓
<div class="note">
<p><em>ここは Markdown として処理される</em></p>
</div>
- kramdown と Markdown Extra は、既定では HTML ブロックの中の Markdown を処理しません。タグに
markdown="1"を付けると処理されます(属性は出力時に取り除かれます)。 <p>や<td>に付けた場合は、インラインの記法だけが処理されます。ブロックの記法も処理させたいときはmarkdown="block"にします。
ほかの方言では、HTML ブロックの中の扱いが違います。Pandoc は既定で中の Markdown を処理します。CommonMark ベースの方言と MultiMarkdown 6 は、開きタグの後に空行を入れると処理します(MultiMarkdown 5 までは
markdown="1"に対応していましたが、6 で廃止されました)。
ファイルの読み込み(include)
対応 :GitLab・MultiMarkdown(書き方が違う)・MPE(書き方が違う)・VitePress(書き方が違う)
GitLab での書き方
::include{file=chapter1.md}
.md ファイルと Wiki でのみ使え、行の先頭に書く必要があります。
MultiMarkdown での書き方
{{chapter1.md}}
{{foo.*}} と書くと、出力形式に合わせて foo.html や foo.tex などを選んで読み込みます。
MPE での書き方
@import "chapter1.md"
@import "data.csv"
@import "sample.js" {code_block=true}

![[chapter1]]
@import のほか、画像の記法やウィキリンクの埋め込み(![[ ]])でも読み込めます。読み込むファイルの種類で扱いが変わり、.md は Markdown として、.csv はテーブルとして、画像は画像として表示されます。{code_block=true} を付けると、ソースコードをコードブロックとして表示します。@import "chapter1.md#見出しID" で、特定の見出しのセクションだけを読み込むこともできます。
VitePress での書き方
<!--@include: ./parts/basics.md-->
<!--@include: ./parts/basics.md{3,}-->
<!--@include: ./parts/basics.md#my-section-->
<<< @/snippets/snippet.js
<<< @/snippets/snippet.js{2}
<<< @/snippets/snippet-with-region.js#snippet
<!--@include: ファイル-->で、Markdown ファイルを読み込みます。{3,}{1,10}で行の範囲を、#見出しIDや VS Code のリージョン名で特定のセクションを指定できます。<<< @/ファイルで、ソースコードのファイルをコードブロックとして読み込みます(@はプロジェクトのルート)。{2}はハイライトする行です。- HTML コメントの形なので、ほかの環境では何も表示されません。
いずれも、別のファイルの内容をその位置に読み込みます。コードブロックの中に書いて、ソースコードのファイルを読み込むこともできます。
動画・音声の埋め込み
対応 :GitLab・MPE(enableHTML5Embed)


↓
<video src="video.mp4" controls></video>
<audio src="audio.mp3" controls></audio>
画像の記法で動画や音声のファイルを指定すると、プレーヤーとして埋め込まれます。MPE では、設定(enableHTML5Embed)で有効にすると使えます。
ウィキリンク([[ ]])
対応 :MPE・Obsidian
[[Note]] ← Note.md へのリンク
[[Note|表示テキスト]] ← 表示テキストを指定
[[Note#見出し]] ← Note.md の特定の見出しへのリンク
[[Note#^block-id]] ← Note.md の特定のブロックへのリンク
[[#見出し]] ← 同じファイル内の見出しへのリンク
ファイル名だけで、ほかの Markdown ファイルへのリンクを作れます。もとは Obsidian の記法で、MPE も同じ書き方に対応しています。リンク先のファイルがなければ、クリックしたときに新規作成されます。
- ブロックへのリンクは、Obsidian では
[[Note#^block-id]]と書きます。MPE は[[Note^block-id]]と[[Note#^block-id]]のどちらにも対応しています。 - MPE では、
|の前後の順序を設定(useGitHubStylePipedLink)で[[表示テキスト|リンク先]](GitHub Wiki 式)に切り替えられます。既定は[[リンク先|表示テキスト]](Obsidian・Wikipedia 式)です。
ノートの埋め込み(![[ ]])
対応 :MPE・Obsidian
![[Note]] ← Note.md 全体を埋め込む
![[Note#見出し]] ← 特定の見出しのセクションだけを埋め込む
![[Note#^block-id]] ← 特定のブロックだけを埋め込む
![[image.png]] ← 画像を埋め込む
![[image.png|100]] ← 画像を幅 100px で埋め込む(Obsidian)
ウィキリンクの前に ! を付けると、リンク先の内容がその場に埋め込まれて表示されます。前述の「ファイルの読み込み」と同じ役割です。Obsidian では、PDF(![[資料.pdf#page=3]])・音声・動画も埋め込めます。
タグ(#tag)
対応 :MPE・Obsidian
このメモには #重要 と #project/q1 のタグを付けます。
本文中の #タグ名 がタグになり、クリックすると、同じタグの付いたファイルを一覧・検索できます。/ で階層を作れます(#親/子)。
- 行頭の
# 見出しはタグにならないので、見出しの記法とは衝突しません。 - Obsidian では、タグには数字以外の文字を 1 つ以上含める必要があります(
#2026はタグにならない)。フロントマターのtagsに書くこともできます。
リンクカード
対応 :Qiita・Zenn
(空行)
https://zenn.dev/zenn/articles/markdown-guide
(空行)
URL だけ の行を書くと、ページのタイトル・説明・画像を含むカード形式で表示されます。前後には空行を入れます。
- Zenn では、
@[card](URL)とも書けます。URL に_を含むと正しく認識されないことがあるので、その場合はこちらを使います。 - 文中に書いた URL は、通常の自動リンクになります。
外部サービスの埋め込み
対応 :Zenn・Qiita(HTML の埋め込みコードを使う)
Zenn での書き方
https://www.youtube.com/watch?v=xxxxxxxx
https://github.com/octocat/Spoon-Knife/blob/main/README.md#L1-L3
@[codepen](https://codepen.io/xxxx/pen/xxxx)
@[gist](https://gist.github.com/xxxx/xxxx)
@[speakerdeck](スライドのID)
@[figma](https://www.figma.com/file/xxxx)
- X(Twitter)・YouTube・GitHub のファイルは、URL だけの行を書くと埋め込まれます。GitHub のファイルは、
#L1-L3で表示する行を指定できます。 - そのほかのサービスは、
@[サービス名](URL または ID)の形で書きます。CodePen・Gist・SlideShare・SpeakerDeck・Docswell・JSFiddle・CodeSandbox・StackBlitz・Figma・blueprintUE に対応しています。
Qiita には専用の記法はなく、各サービスが発行する 埋め込みコード(HTML)をそのまま貼り付け ます。X・YouTube・CodePen・GitHub Gist・Figma・Speaker Deck など、許可されたサービスの埋め込みコードだけが表示されます。
コンポーネントの埋め込み(Vue・MDX)
対応 :VitePress(Vue)・Starlight(MDX ファイルのみ)
VitePress での書き方
<script setup>
import CustomComponent from '../components/CustomComponent.vue'
</script>
# {{ $frontmatter.title }}
1 + 1 = {{ 1 + 1 }}
<CustomComponent />
Markdown ファイルが Vue のコンポーネントとして扱われるので、{{ }} の式やVue コンポーネントをそのまま書けます。
Starlight での書き方(.mdx ファイル)
import { Tabs, TabItem } from '@astrojs/starlight/components';
<Tabs>
<TabItem label="npm">npm install</TabItem>
<TabItem label="pnpm">pnpm add</TabItem>
</Tabs>
.md ではなく .mdx ファイルにすると、コンポーネントを読み込んで使えます。Starlight には、タブ・カード・ステップなどの組み込みコンポーネントが用意されています。
MDX は、Markdown の中に JSX を書ける別の形式です。
{<などの扱いが Markdown と違うため、同じ内容でも.mdと.mdxでは結果が変わることがあります。
GitLab だけの記法
複数行の引用
対応 :GitLab
>>>
ほかの場所から貼り付けた複数行の文章を、
各行の先頭に `>` を付けずに
まとめて引用できます。
>>>
>>> で囲んだ部分が、1 つの引用になります。アラートと組み合わせることもできます(>>> [!note] タイトル)。
JSON テーブル
対応 :GitLab
```json:table
{
"fields": ["名前", "価格"],
"items": [
{"名前": "りんご", "価格": "120"},
{"名前": "みかん", "価格": "80"}
]
}
```
コードブロックの言語名を json:table にすると、JSON のデータがテーブルとして表示されます。fields を省略すると、items の最初の要素のキーが列名になります。
Pandoc だけの記法
bracketed span
対応 :Pandoc
これは [重要な部分]{.highlight} です。
↓
これは <span class="highlight">重要な部分</span> です。
[ ] で囲んだ文字の直後に { } を書くと、<span> になります。
ラインブロック(Line Block)
対応 :Pandoc
| 〒810-0001
| 福岡県福岡市中央区
| 天神 1-1-1
↓
<div class="line-block">〒810-0001<br>
福岡県福岡市中央区<br>
天神 1-1-1</div>
行頭に | を付けると、 改行と行頭のスペースがそのまま保たれます 。住所や詩などに使います。
kramdown だけの記法
属性の定義と再利用(ALD)
対応 :kramdown
{:note: .box .box-note title="補足"}
1つ目の段落
{: note}
2つ目の段落
{: note}
↓
<p class="box box-note" title="補足">1つ目の段落</p>
<p class="box box-note" title="補足">2つ目の段落</p>
{:名前: ...} で属性の組み合わせに名前を付けておき、IAL の中でその名前を呼び出して使い回せます。
MPE だけの記法
コードチャンク(コードの実行)
対応 :MPE
```bash {cmd=true}
ls .
```
```javascript {cmd="node"}
console.log(new Date().toString())
```
```python {cmd=true matplotlib=true}
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.show()
```
コードブロックに {cmd=true} を付けると、プレビューからコードを実行して、その 結果を文書に表示 できます。
| オプション | 内容 |
|---|---|
cmd |
実行するコマンド(true なら言語名をコマンドとして使う) |
output |
結果の表示方法(html markdown text png none) |
hide |
コードを隠して、結果だけを表示する |
args |
コマンドに渡す引数 |
continue |
前のコードチャンクの続きとして実行する |
matplotlib |
Python の matplotlib のグラフを表示する |
注意 :コードの実行は、既定では無効です。設定(
enableScriptExecution)で有効にできますが、悪意のあるコードを含む Markdown を開くと、そのまま実行されてしまう危険があります。信頼できるファイルでだけ使います。
Obsidian だけの記法
タスクの拡張ステータス
対応 :Obsidian
- [x] 完了したタスク
- [ ] 未完了のタスク
- [?] 保留中のタスク
- [-] 取り消したタスク
チェックボックスの [ ] の中には、 x 以外の任意の文字を入れられます。どの文字も完了扱いになりますが、テーマやプラグインによっては、文字ごとに違うアイコンで表示されます。
参考リンク
- GitHub:基本的な書き込みと書式設定の構文
- GitLab:GitLab Flavored Markdown (GLFM)
- Pandoc:Pandoc User's Guide(Pandoc's Markdown)
- kramdown:Quick Reference / Syntax
- Markdown Extra:PHP Markdown Extra
- markdown-it:markdown-it demo / GitHub
- MultiMarkdown:MultiMarkdown 6 Syntax
- Qiita:Markdown記法 チートシート
- Zenn:ZennのMarkdown記法一覧
- Obsidian:基本的な書式構文 / Obsidian Flavored Markdown
- VitePress:Markdown 拡張
- Starlight:Markdownでのコンテンツ作成
- Markdown Preview Enhanced:ドキュメント / GitHub