CommonMark / GFM の仕様には含まれない、各方言の拡張記法をまとめたリファレンスです。

それぞれの記法に対応している方言を付けているので、「どれだけ広く使える記法なのか」を確認できます。

標準の記法(CommonMark / GFM)については、
Markdown 記法:基本的な書き方(CommonMark 〜 GFM)を参照してください。

Markdown 記法:基本的な書き方 | オリジナル・CommonMark・GFM・GLFMの違い 元祖のオリジナルMarkdownから、事実上の標準CommonMark、GitHubのGFM、GitLabのGLFMまで、それぞれの関係と違いを図と比較表で整理。Markdown の基本的な書き方を、現在の標準である CommonMark と GF...  続きを読む

対象の方言

方言 概要
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 :「プロパティ」として、ノートの上部に表で表示・編集できます。tags aliases などのキーは、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)記法のまとめ Markdown で数式を書く方法を、用語の意味・方言ごとの書き方と表示エンジン・LaTeX 数式の基本の順にまとめたリファレンスです。Markdown で数式を書く方法を、用語の意味・方言ごとの書き方と表示エンジン・LaTeX 数式の基本の順にま...  続きを読む

ダイアグラム(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)記法のまとめ Markdown のコードブロックにテキストで図を書く記法(Mermaid・PlantUML・Graphviz など)を、用語の意味・方言ごとの対応状況・各記法の書き方の順にまとめたリファレンスです。  続きを読む

メンション・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 での書き方

![代替テキスト](image.png){width=300}
[リンク](https://example.com){.external}

kramdown での書き方

![代替テキスト](image.png){: width="300"}

MultiMarkdown (( ) の中に続けて書く)

![代替テキスト](image.png "タイトル" width=300px)

![代替テキスト][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)

![代替テキスト](https://example.com/image.png =250x)

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

![代替テキスト|100x145](https://example.com/image.png)
![代替テキスト|100](https://example.com/image.png)
![[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

![写真の説明](photo.jpg)

 ↓

<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.md)
![[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.mp4)
![サンプル音声](audio.mp3)

 ↓

<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 以外の任意の文字を入れられます。どの文字も完了扱いになりますが、テーマやプラグインによっては、文字ごとに違うアイコンで表示されます。


参考リンク