Markdown 記法とほぼ同じ内容を、Markdown 記法だけを使って記述してみたページです。 → 実際の Markdown のファイル
このページそのものが表示例なので、プレビュー部分は削除しています。


PHP Markdown & Extra

PHP Markdown & Extra の解説もどき&テキトーなまとめ。
全訳するには語学力がなく、きちんと整理するには要約力がなく…非常に中途半端な感じ。 大嘘は書いてないつもりだけど、小嘘が散りばめられてるかもしれません。 正確性には乏しいので、詳しくは原文*1で確認を。

※ * 印のついた項目は、PHP Markdown Extra の独自拡張部分です。

Inline HTML ―文中の (X)HTML

文中で (X)HTML を使用する場合、基本的にはそのまま (X)HTML タグを記入します。

ブロック要素(<div>, <table>, <pre>, <p> など)を使うときのみ、ちょっと注意。

  • ブロック要素の前後は空行であること。
  • ブロック要素のタグは行頭にあること(タグの前にスペースやタブを記入しない)。
  • ブロック要素のタグ内では、Markdown 記法は無効。
  • インライン要素のタグ内では、Markdown 記法は有効。

PHP Markdown Extra では、上記の制限が緩和されて下記になります。

  1. ブロック要素の開始タグはスペース 3つ分までインデントしてよい。
    (スペースが 4つ以上の場合、コードブロックと解釈される。)
  2. リスト内のブロック要素(のインデント)は、リスト内容のインデントとして扱われる。
    (必要以上にインデントすると、1. に従ってコードブロックと解釈される。)

Markdown Inside HTML Blocks * ―ブロック要素タグ内での Markdown

ブロック要素タグ内では、基本的に Markdown 記法は無効です。 1 を値とした markdown 属性をブロック要素タグに付加すると、Markdown 記法が有効になります。

記述例

<p markdown="1">
This is *true* markdown text.
</p>

変換後 (X)HTML

<p>
This is <em>true</em> markdown text.
</p>

<td> のようなブロック要素もインライン要素も子要素にできる要素に「内容がブロック要素」であることを明示する場合は、markdown 属性の値を block にします。

記述例

<table>
<tr>
<td markdown="block">This is *true* markdown text.</td>
</tr>
</table>

変換後 (X)HTML

<table>
<tr>
<td>

<p>This is <em>true</em> markdown text.</p>

</td>
</tr>
</table>

Automatic Escaping for Special Characters ―特殊記号の自動処理

(X)HTML の特殊記号 &, <, > はコードブロック内では、常に実体参照に自動変換処理されます。

コードブロック外では次の通り。

&(アンパサンド)
実体参照の一部として記述→変換せず、そのまま表示。
それ以外の場合→ &amp; に変換。
< / >(不等号)
(X)HTML タグとして記述→変換せず、そのまま表示。
それ以外の場合→ &lt; / &gt; に変換。

Span Elements ―インライン要素

Inline Links ―インライン(直接)リンク

[ ](角括弧/ブラケット)内にリンクテキスト、( )(丸括弧/パーレン)内にリンク先 URL を指定する方法です。 URL を < >(不等号)で囲んでも構いません。 スペースが URL に含まれる場合、< > は必須です。 必要なら "(引用符)で囲んで title 属性値を指定できます。

記述例

This is [an example](http://example.com/ "Title") inline link.

[This link](http://example.net/) has no title attribute.

変換後 (X)HTML

<p>This is <a href="http://example.com/" title="Title">an example</a> inline link.</p>

<p><a href="http://example.net/">This link</a> has no title attribute.</p>

同サーバ内のローカル・リソースに相対パスでリンクすることもできます。

記述例

See [etc.](/etc/) page.

変換後 (X)HTML

<p>See <a href="/etc/">etc.</a> page.</p>
Reference-style Links ―リファレンス(参照)リンク―

[ ](角括弧/ブラケット)を 2つ用いて、前の [ ] にリンクテキスト、後の [ ] にリンク先を示した ID を入れる方法です。 2つの [ ] の間にスペースや改行を 1つまでなら入れることができます。

記述例

This is [an example][id] reference-style link.

This is [an example] [id] reference-style link.

This is [an example]
[id] reference-style link.

[id]: http://example.com/

変換後 (X)HTML

<p>This is <a href="http://example.com/">an example</a> reference-style link.</p>

<p>This is <a href="http://example.com/">an example</a> reference-style link.</p>

<p>This is <a href="http://example.com/">an example</a> reference-style link.</p>

リンク ID の参照先は、文書内のどこか好きなところで定義しておきます。

  • 本文中で指定したリンク ID を [ ](角括弧/ブラケット)で囲んで定義します。 ([(左角括弧)の前で、スペース 3つまでインデントをしてもよい)。
    リンク ID には、文字列、数字、スペース、記号を使うことができますが、大文字小文字の区別はしません。
  • :(コロン)と 1つ以上のスペースまたはタブで隔てて、リンク先 URL を記入します。
    インライン(直接)リンクと同じように、URL を < >(不等号)で囲んでも構いません。 URL にスペースが含まれる場合、< > は必須です。
  • 必要なら "(二重引用符), '(一重引用符), ( )(丸括弧/パーレン)で囲んで title 属性を指定することができます。
    URL が長すぎる場合などには、タイトルを次の行に書くことができます。 この時、タイトル行にスペースかタブを追加してインデントさせても構いません。

記述例

[boo]: http://example.com/
[foo]: http://example.com/  'Optional Title Here'
[woo]: <http://example.com/>  (Optional Title Here)

[id]: http://example.com/longish/path/to/resource/here
    "Optional Title Here"

このリンク ID の定義はリンクの作成に利用されるだけなので、変換後の (X)HTML には表示されません。

リンクテキストとリンク ID が同じ場合は、本文中のリンク ID は省略できます。 また、[ ] 自体も省略できます。

記述例

[Google][Google],
[Google][] and
[Google]

[Google]: http://google.com/

変換後 (X)HTML

<p><a href="http://google.com/">Google</a>,
<a href="http://google.com/">Google</a> and
<a href="http://google.com/">Google</a></p>

Emphasis ―強調

*(アスタリスク)または _(アンダーライン)で囲むと強調表示になります。 どちらの記号を使っても構いませんが、始まりと終わりの記号は同じものである必要があります。

*, _ が 1つなら <em> に、2つなら <strong> に変換されます。

記述例

*single asterisks*

_single underscores_

**double asterisks**

__double underscores__

変換後 (X)HTML

<p><em>single asterisks</em></p>

<p><em>single underscores</em></p>

<p><strong>double asterisks</strong></p>

<p><strong>double underscores</strong></p>

記号のまま *_ を表示したい場合は、\(バックスラッシュ)を直前に記入して変換を回避します。 (→バックスラッシュ・エスケープ
また *_ の両側が空白である場合には、*, _ がそのまま表示されます。

記述例

\*this text is surrounded by literal asterisks\*

also * and _ is literal.

変換後 (X)HTML

<p>&#42;this text is surrounded by literal asterisks&#42;</p>

<p>also * and _ is literal.</p>

単語の途中(記号の前後どちらにも空白のない状態)でも強調表示は有効です。

記述例

un*frigging*believable

変換後 (X)HTML

<p>un<em>frigging</em>believable</p>

PHP Markdown Extra での強調記法は、オリジナルの Markdown 記法と若干異なります。

_ は単語途中の場合、そのまま _ と表示されます。 単語全体を囲む場合には、_ は従来通り強調表示として働きます。

記述例

Please open the folder "secret_magic_box".

I like it when you say _you love me_.

変換後 (X)HTML

<p>Please open the folder "secret_magic_box".</p>

<p>I like it when you say <em>you love me</em>.</p>

Code ―コード

`(バッククォート)で囲むとインラインレベルのソースコード表示となります。

記述例

Use the `printf()` function.

変換後 (X)HTML

<p>Use the <code>printf()</code> function.</p>

ソースコードの範囲内で ` を表示するためには、範囲の開始と終了の ` を二重にします。 ソースコードの冒頭や末尾で ` をそのまま表示したい場合、開始記号の直後と終了記号の直前にそれぞれスペースを挿入します。

記述例

``There is a literal backtick (`) here.``

A single backtick in a code span: `` ` ``

A backtick-delimited string in a code span: `` `foo` ``

変換後 (X)HTML

<p><code>There is a literal backtick (`) here.</code></p>

<p>A single backtick in a code span: <code>`</code></p>

<p>A backtick-delimited string in a code span: <code>`foo`</code></p>

ソースコード内では、(X)HTML の特殊記号(&, <, >)は、自動的に実体参照に変換処理されます。 (→特殊記号の自動処理

記述例

Please don't use any `<blink>` tags.

`&#8212;` is the decimal-encoded equivalent of `&mdash;`.

変換後 (X)HTML

<p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>

<p><code>&amp;#8212;</code> is the decimal-encoded equivalent of <code>&amp;mdash;</code>.</p>

Images ―画像

画像はリンク記法に似た方法(冒頭に ! を追加)で挿入します。

Inline Image ―インライン(直接)型画像

!(エクスクラメーション・マーク)で始めて、 [ ](角括弧/ブラケット)内に alt テキスト、( )(丸括弧/パーレン)で画像ファイルへのパスを指定します。 "(二重引用符)または '(一重引用符)で囲んで title 属性を付加することもできます。

記述例

![Alt text](/path/to/img.jpg)

![Alt text](/path/to/img.jpg "Optional title")

変換後 (X)HTML

<p><img src="/path/to/img.jpg" alt="Alt text" /></p>

<p><img src="/path/to/img.jpg" alt="Alt text" title="Optional title" /></p>
Reference-style Image ―リファレンス(参照)型画像

インライン型と同様 ! で始めて、最初の [ ]alt テキスト、次の [ ] で画像パスを定義した ID を指定します。

記述例

![Alt text][id]

[id]: url/to/image  "Optional title attribute"

変換後 (X)HTML

<p><img src="url/to/image" alt="Alt text" title="Optional title attribute" /></p>

画像パス定義の方法は、リンク記法の場合と全く同じです。

alt テキストと画像パス ID が同じ場合は、本文中の ID は省略できます。 ただし、リンク記法とは異なり、[ ] 自体を省略することはできません。

※ Markdown 記法による画像の挿入ではサイズ等の指定はできないので、必要な場合は直接 (X)HTML<img> タグを使います。

Abbreviations * ―略語

*(アスタリスク)に続く [ ](角括弧/ブラケット)に略語を、続けて :(コロン)を置いて、省略前の完全形を定義します。 : と完全形との間に、好みで空白を挟んでも OK。

文書内のどこでも好きな場所で略語の定義をすることができます。 略語定義は変換後の (X)HTML には表示されません。

本文中で、略語と定義された ID を記入すると、(X)HTML 変換時に <abbr> タグが自動的に作成されます。

記述例

*[HTML]: Hyper Text Markup Language
*[W3C]:  World Wide Web Consortium

The HTML specification is 
maintained by the W3C.

変換後 (X)HTML

The <abbr title="Hyper Text Markup Language">HTML</abbr> specification is 
maintained by the <abbr title="World Wide Web Consortium">W3C</abbr>.

略語は大文字小文字を区別し、また複数語からなる語句も定義できます。
完全形の定義が空の場合、(X)HTML 変換時に <abbr> タグは挿入されますが title 属性は付きません。

記述例

Operation Tigra Genesis is going well.

*[TIGRA GENESIS]: This definition is invalid.
*[Tigra Genesis]:

変換後 (X)HTML

<p>Operation <abbr>Tigra Genesis</abbr> is going well.</p>

Footnotes * ―脚注

脚注はリファレンス(参照)リンクとほぼ同じ記法です。

脚注リンクを設けたい場所に、[ ](角括弧/ブラケット)で囲んだ ^(サーカムフレックス符号)と脚注 ID を記述します。 脚注 ID はそれぞれの脚注に固有のもので、数字の他、(X)HTMLid 属性の値と同じ文字列が使用できます。 この ID は脚注へのリンクの id 属性値の一部として使われますが、変換後の (X)HTML で振られる脚注番号は、文書冒頭からの連番になります。

※ ID 文字列 : ラテン文字かハイフン(-)で始まって、任意の数のラテン文字、数字、ハイフン、アンダーライン(_)、コロン(:)、ピリオド(.)で構成された文字列

記述例

That's some text with a footnote.[^note]

[^note]: And that's the footnote.

変換後 (X)HTML

<p>That's some text with a footnote.<sup id="fnref:note"><a href="#fn:note" rel="footnote">1</a></sup></p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:note">
<p>And that's the footnote. <a href="#fnref:note" rev="footnote">↩</a></p>
</li>

</ol>
</div>

脚注の定義文は文書中のどこにでもおけますが、脚注の説明文が実際に (X)HTML で表示されるのは文書の最後です。

一つの脚注に対して、複数の場所からリンクすることはできません。 もしリンクしようとした場合、二つ目以降のリンクはそのまま変換されずに表示されます。

脚注の定義文には複数の段落、リスト、引用などのブロック要素を含むことができます。 リストと同様、二つ目以降の段落は空行で分け、行頭でスペース 4つ分インデントしておきます。 一行目には何も記入せず、一段落目を次の行に送ってインデントすることもできます。

記述例

That's some text with a footnote.[^1]
And more...[^2]

[^1]: And that's the footnote.

    That's the second paragraph.

[^2]:
    > And that's blockquote.

    That's normal paragraph.

変換後 (X)HTML

<p>That's some text with a footnote.<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup>
And more...<sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup></p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>And that's the footnote.</p>

<p>That's the second paragraph. <a href="#fnref:1" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:2">
<blockquote>
  <p>And that's blockquote.</p>
</blockquote>

<p>That's normal paragraph. <a href="#fnref:2" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>

上記変換後 (X)HTML 中の <a> 要素の rel および rev 属性は、リンクの関係を表しています。 つまり、脚注への参照リンク(rel="footnote")と脚注からの復帰リンク(rev="footnote")です。 これらは、CSS の属性セレクタなどに用いてスタイル指定に利用することができます。

記述例

a[rel="footnote"]
a[rev="footnote"]

脚注の参照リンクと復帰リンクそれぞれの class 属性値と title 属性値は、カスタマイズ可能です。 これらの 4つの設定は、markdown.php ファイルの冒頭部分(ver.1.2.3 の場合 29行目~35行目辺り)で行います。 設定する属性値の中で %% は各脚注の脚注番号に変換されます。

記述例

define( 'MARKDOWN_FN_LINK_TITLE', "Go to footnote %%." );

Block Elements ―ブロック要素

Paragraphs and Line Breaks ―段落と強制改行

他の Markdown 記法と競合せず、前後を空行で囲まれた部分は段落 <p> となります。

基本的にソース文書中での改行は (X)HTML には反映されません。 (X)HTML で強制改行 <br /> するには、行末に 2つ以上のスペースを入れて改行する必要があります。

記述例

This is normal paragraphs,  
with line break.

変換後 (X)HTML

<p>This is normal paragraphs,<br />
with line break.</p>

Headers ―見出し

Setext 式

見出しテキストの下に、<h1> なら =(等号)を、<h2> なら -(ハイフン)を入力します(記号の数は自由)。

記述例

This is an H1
=============

This is an H2
-------------

変換後 (X)HTML

<h1>This is an H1</h1>

<h2>This is an H2</h2>
atx 式

見出しテキストの行頭に見出しレベルに応じた 1 ~ 6個の #(番号記号)を入力します。 (# 後の空白はお好みで)。
また、後ろにも # を記入(数は自由)して「閉じる」ことができます。

記述例

## This is an H2

#### This is an H4 ####

###### This is an H6 ###

変換後 (X)HTML

<h2>This is an H2</h2>

<h4>This is an H4</h4>

<h6>This is an H6</h6>

※ Setext 式と atx 式が競合した場合は、Setext 式が優先されます。

記述例

##### This is an H2
-----

変換後 (X)HTML

<h2>##### This is an H2</h2>
Header ID Attribute * ―見出しの ID 属性

見出しテキストを記述した行の最後に、1つ以上のスペースを空けて # を付けた ID 名を { }(波括弧/ブレイス)で囲んで指定します。

記述例

Header 1           {#header1}
========

##### Header 5 ##  {#header5}

変換後 (X)HTML

<h1 id="header1">Header 1</h1>

<h5 id="header5">Header 5</h5>

id 属性の付加は、今のところ header 要素でのみ可能です。

Lists ―リスト(箇条書き)

冒頭にリストマーカーと 1つ以上のスペースかタブがあればリストとして認識されます。 行頭(リストマーカーの前)で最大スペース 3つ分までインデントすることもできます。

Unordered Lists ―順不同(番号なし)リスト

リストマーカーに *(アスタリスク), +(プラス記号), -(ハイフン)のいずれかを用います。 1種類だけでも 3種類混合でも大丈夫なようです。

記述例

*   Red
+   Green
-   Blue

変換後 (X)HTML

<ul>
<li>Red</li>
<li>Green</li>
<li>Blue</li>
</ul>
Ordered Lists ―番号付きリスト―

リストマーカーとして「任意の数字と .(ピリオド)」を用います。 使う数字の順番などは自由です(=変換後の (X)HTML に影響しません)。

記述例

1.  Bird
3.  McHale
2.  Parish

変換後 (X)HTML

<ol>
<li>Bird</li>
<li>McHale</li>
<li>Parish</li>
</ol>

リスト内容の二行目以降はインデントして揃えてもいいし、しなくても OK。

記述例

+   An apple a day,
    Sends the doctor away.
+   Apple in the morning,
Doctor's warning.

変換後 (X)HTML

<ul>
<li>An apple a day,
Sends the doctor away.</li>
<li>Apple in the morning,
Doctor's warning.</li>
</ul>

リストの項目を空行で分けると、リスト内容が段落扱いになります。

記述例

+   Bird

+   Magic

変換後 (X)HTML

<ul>
<li><p>Bird</p></li>
<li><p>Magic</p></li>
</ul>

リスト内容が複数の段落である場合には、段落ごとに空行で分け、各段落の行頭にスペース 4つか、タブ 1つを入れます。 インデントは段落冒頭の一行のみでも大丈夫です。

記述例

1.  This is a list item with two paragraphs.
    An apple a day,
    Sends the doctor away.

    Apple in the morning,
Doctor's warning.

2.  Roast apple at night,
Starves the doctor outright.

変換後 (X)HTML

<ol>
<li><p>This is a list item with two paragraphs.
An apple a day,
Sends the doctor away.</p>

<p>Apple in the morning,
Doctor's warning.</p></li>
<li><p>Roast apple at night,
Starves the doctor outright.</p></li>
</ol>

リスト内容に引用を入れる場合は、行頭の > を(リスト内容の位置まで)インデントします。

記述例

+   A list item with a blockquote:

    > This is a blockquote
    > inside a list item.

変換後 (X)HTML

<ul>
<li><p>A list item with a blockquote:</p>

<blockquote>
  <p>This is a blockquote
  inside a list item.</p>
</blockquote></li>
</ul>

リスト内容にコードブロックを入れる場合は、行頭のインデントを二倍(スペース 8つか、タブ 2つ)にします。 (リスト内容の位置から、さらにコードブロック分のインデントをする。)

記述例

+   A list item with a code block:

        <code goes here>

変換後 (X)HTML

<ul>
<li><p>A list item with a code block:</p>

<pre><code>&lt;code goes here&gt;
</code></pre></li>
</ul>
Definition Lists * ―定義リスト

定義用語の次の行で、:(コロン)と 1つ以上のスペースかタブに続けて定義文を記述すると定義リストになります。 行頭(コロンの前)で最大スペース 3つ分までインデントすることができます。 定義文の二行目以降のインデントはあってもなくても構いません。

複数の用語を定義する場合、前の定義文と次の定義用語の間を空行で分けなければなりません。

記述例

Apple
:   Pomaceous fruit of plants of the genus Malus in 
    the family Rosaceae.

Orange
:   The fruit of an evergreen tree of the genus Citrus.

変換後 (X)HTML

<dl>
<dt>Apple</dt>
<dd>Pomaceous fruit of plants of the genus Malus in 
the family Rosaceae.</dd>

<dt>Orange</dt>
<dd>The fruit of an evergreen tree of the genus Citrus.</dd>
</dl>

一つの定義用語に、複数の定義文を結びつけることができます。 また逆に、複数の定義用語を、一つの定義文と関連付けることもできます。

記述例

Apple
:   Pomaceous fruit of plants of the genus Malus in 
    the family Rosaceae.
:   An american computer company.

Orange
Lemon
:   The fruit of an evergreen tree of the genus Citrus.

変換後 (X)HTML

<dl>
<dt>Apple</dt>
<dd>Pomaceous fruit of plants of the genus Malus in 
the family Rosaceae.</dd>

<dd>An american computer company.</dd>

<dt>Orange</dt>
<dt>Lemon</dt>
<dd>The fruit of an evergreen tree of the genus Citrus.</dd>
</dl>

定義用語と定義文の間に空行を挿入すると、定義文の内容がブロック要素として解釈されます。 このため他のリスト(=順不同/番号付きリスト)と同じく、定義文には複数の段落、引用、コードブロック、リストなどのブロック要素を含めることができます。

記述例

Term 1

:   This is a list item with two paragraphs.
    An apple a day,
    Sends the doctor away.

    Apple in the morning,
    Doctor's warning.

:   Second definition for term 1,
also wrapped in a paragraph
because of the blank line preceding it.

Term 2

:   This definition has a code block,
    a blockquote and a list.

        code block.

    > block quote
    > on two lines.

    1.  first list item
    2.  second list item

変換後 (X)HTML

<dl>
<dt>Term 1</dt>
<dd>
<p>This is a list item with two paragraphs.
An apple a day,
Sends the doctor away.</p>

<p>Apple in the morning,
Doctor's warning.</p>
</dd>

<dd>
<p>Second definition for term 1,
also wrapped in a paragraph
because of the blank line preceding it.</p>
</dd>

<dt>Term 2</dt>
<dd>
<p>This definition has a code block,
a blockquote and a list.</p>

<pre><code>code block.
</code></pre>

<blockquote>
  <p>block quote
  on two lines.</p>
</blockquote>

<ol>
<li>first list item</li>
<li>second list item</li>
</ol>
</dd>
</dl>

Blockquotes ―引用

行頭に >(不等号)を付けると引用文になります。 > の付加は、全ての行頭ではなく、各段落の冒頭に一つ付けるだけでも構いません。

記述例

> An apple a day,
> Sends the doctor away.

> Apple in the morning,
Doctor's warning.

変換後 (X)HTML

<blockquote>
  <p>An apple a day,
  Sends the doctor away.</p>

  <p>Apple in the morning,
  Doctor's warning.</p>
</blockquote>

また、> を重ねて、引用を入れ子にすることもできます。

記述例

> This is the first level of quoting.
> 
> > This is nested blockquote.
> 
> Back to the first level.

変換後 (X)HTML

<blockquote>
  <p>This is the first level of quoting.</p>

  <blockquote>
    <p>This is nested blockquote.</p>
  </blockquote>

  <p>Back to the first level.</p>
</blockquote>

リスト同様、引用の中でも Markdown 記法は有効です。

記述例

> #### This is a header.
> 
> 1.  This is the first list item.
> 2.  This is the second list item.
> 
> Here's some example code:
> 
>     include_once "markdown.php";

変換後 (X)HTML

<blockquote>
  <h4>This is a header.</h4>

  <ol>
  <li>This is the first list item.</li>
  <li>This is the second list item.</li>
  </ol>

  <p>Here's some example code:</p>

<pre><code>include_once "markdown.php";
</code></pre>
</blockquote>

望むならば > 後にスペースを 3つまで付けられます。 が、引用中のブロック要素の間の空行部分に > と複数のスペースを記述した場合、下記の通り、変換後の (X)HTML は意図したものとは異なります。 > 後のスペースは 1つまでにしておいた方が無難だと思われます。

記述例

>    空行部分に `>` とスペース 3つを記述すると 2段落ではなく、
>   
>    改行 `<br />` 付の 1段落と解釈されます。
> 
>    `>` とスペース 1つの場合は別々の段落として扱われますが
>  
>    `>` とスペース 2つになると 1段落扱いです。

変換後 (X)HTML

<blockquote>
  <p>空行部分に <code>&gt;</code> とスペース 3つを記述すると 2段落ではなく、
  <br />
  改行 <code>&lt;br /&gt;</code> 付の 1段落と解釈されます。</p>

  <p><code>&gt;</code> とスペース 1つの場合は別々の段落として扱われますが

  <code>&gt;</code> とスペース 2つになると 1段落扱いです。</p>
</blockquote>

引用を入れ子にする場合も空行部分に > とスペース 2個 または 3個を付けると、3段落目が入れ子になったままになります。

記述例

>   This is the first level of quoting.
>   
>   >   This is nested blockquote.
>   
>   Back to the first level.

変換後 (X)HTML

<blockquote>
  <p>This is the first level of quoting.</p>

  <blockquote>
    <p>This is nested blockquote.</p>

    <p>Back to the first level.</p>
  </blockquote>
</blockquote>

Code Blocks ―コードブロック

(X)HTML やプログラムのソースコードを直接記述するための記法です。 Markdown では <pre><code> によってマークアップされます。

各行の行頭に 4つ以上のスペースか、タブ 1つを入れると、コードブロックになります。 行頭のスペース 4つあるいはタブ 1つは変換時には除去されますが、それ以上の空白はそのまま保持されます。

記述例

Here is an example of AppleScript:

tell application "Foo"
    beep
end tell

変換後 (X)HTML

<p>Here is an example of AppleScript:</p>

<pre><code>tell application "Foo"
    beep
end tell
</code></pre>

コードブロックの範囲は、インデントされていない行(あるいは記事の終わり)までです。

コードブロック中では、(X)HTML の特殊記号(&, <, >)は常に自動変換処理されます。 (→特殊記号の自動処理)。 また、Markdown 記法は無効となります。

記述例

<div class="footer">
    &copy; 2004 *Foo* Corporation
</div>

変換後 (X)HTML

<div class="footer">
    &copy; 2004 *Foo* Corporation
</div>
Fenced Code Blocks * ―囲い式コードブロック

PHP Markdown Extra では、インデントする代わりにコードブロックの範囲の前後を 3つ以上の ~(チルダ)で構成された行で囲んでもコードブロックになります。 この時、範囲の始まりと終わりの ~ の数は同じでなければなりません。

記述例

This is a paragraph introducing:

~~~~~~~~~~~~~~~~~~~~~
a one-line code block
~~~~~~~~~~~~~~~~~~~~~

変換後 (X)HTML

<p>This is a paragraph introducing:</p>

<pre><code>a one-line code block
</code></pre>

コードブロックの内容の前後に空行を入れることもできます。 コードブロック中の空行は、そのまま空行として解釈されます(=ブロック要素の区切りとはなりません)。

記述例

~~~

blank line before
blank line after

~~~

変換後 (X)HTML

<pre><code><br />blank line before
blank line after

</code></pre>

(インデントがリスト内容の二段落目と解釈されるため)インデント式コードブロックはリストの直後に置けませんが、囲い式コードブロックにはそのような制限はありません。

記述例

1.  List item

    Not an indented code block,
    but a second paragraph
    in the list item

2.  List item

~~~~
This is a code block, fenced-style
~~~~

変換後 (X)HTML

<ol>
<li><p>List item</p>

<p>Not an indented code block,
but a second paragraph
in the list item</p></li>
<li><p>List item</p></li>
</ol>

<pre><code>This is a code block, fenced-style
</code></pre>

Horizontal Rules ―区切り線(水平線)

-(ハイフン), *(アスタリスク), _(アンダーライン) のいずれか 1種類 3つ以上で構成された行は、水平線に変換されます。 前後の空行は任意、各記号の間や行頭(3つまで)や行末(無制限)にスペースを入れることもできます。

記述例

* * *

___
  *****                

- - -
-- -- -- -- -- -- -- -- --

変換後 (X)HTML

<hr />

<hr />

<hr />

<hr />

<hr />

※スペースを含まない - のみで構成された水平線は、前に空行が必要です。 (前の行が Setext 式の見出しと解釈されてしまうため。)

Tables * ―テーブル(表組み)

1行目にテーブルヘッダ、2行目はヘッダと内容を隔てる -(ハイフン)ライン行、3行目以降の各行に内容を記述することで、テーブルになります。 各列は |(バーティカルバー/パイプ)によって区別されます。

※ヘッダのないテーブルや、一行のみのテーブルは Markdown 記法では作ることができません。

記述例

First Header | Second Header
------------ | -------------
Content Cell | Content Cell 
Content Cell | Content Cell 

変換後 (X)HTML

<table>
<thead>
<tr>
  <th>First Header</th>
  <th>Second Header</th>
</tr>
</thead>
<tbody>
<tr>
  <td>Content Cell</td>
  <td>Content Cell</td>
</tr>
<tr>
  <td>Content Cell</td>
  <td>Content Cell</td>
</tr>
</tbody>
</table>

両端に | を付けることもできます。

記述例

| First Header | Second Header |
| ------------ | ------------- |
| Content Cell | Content Cell  |
| Content Cell | Content Cell  |

※ PHP Markdown Extra では、テーブルの各行に少なくとも 1つの | が必要なため、一列のテーブルを作るには行頭か行末かあるいは両方に | を付けなければなりません。

- ライン行に、:(コロン)を追加することで、列の水平配置を指定することができます。 ラインの左端に付ければ左揃え、右端に付ければ右揃え、両端に付ければ中央揃えとなります。 (align 属性は指定列の各セルに付加)。

記述例

| Item     | Value |
| -------- | -----:|
| Computer | $1600 |
| Phone    |   $12 |
| Pipe     |    $1 |

変換後 (X)HTML

<table>
<thead>
<tr>
  <th>Item</th>
  <th align="right">Value</th>
</tr>
</thead>
<tbody>
<tr>
  <td>Computer</td>
  <td align="right">$1600</td>
</tr>
<tr>
  <td>Phone</td>
  <td align="right">$12</td>
</tr>
<tr>
  <td>Pipe</td>
  <td align="right">$1</td>
</tr>
</tbody>
</table>

各セル内では、インラインレベルの Markdown 記法を使うことができます。

記述例

| Function name | Description                |
| ------------- | -------------------------- |
| `help()`      | Display the help window.   |
| `destroy()`   | **Destroy your computer!** |

変換後 (X)HTML

<table>
<thead>
<tr>
  <th>Function name</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td><code>help()</code></td>
  <td>Display the help window.</td>
</tr>
<tr>
  <td><code>destroy()</code></td>
  <td><strong>Destroy your computer!</strong></td>
</tr>
</tbody>
</table>

Miscellaneous ―その他

URL やメールアドレスは < >(不等号)で囲んでおけば自動的にリンクされます。

記述例

<http://example.com/>

変換後 (X)HTML

<p><a href="http://example.com/">http://example.com/</a></p>

メールアドレスの場合は、自動的に実体参照に変換されます。

記述例

<address@example.com>

変換後 (X)HTML

<p><a href="&#109;&#x61;&#x69;&#108;&#x74;&#x6f;&#58;&#x61;&#x64;&#100;&#114;&#x65;&#115;&#115;&#x40;&#101;&#120;&#x61;m&#112;&#x6c;e&#46;&#x63;&#x6f;&#109;">&#x61;&#x64;&#100;&#114;&#x65;&#115;&#115;&#x40;&#101;&#120;&#x61;m&#112;&#x6c;e&#46;&#x63;&#x6f;&#109;</a></p>

Backslash Escapes ―バックスラッシュ・エスケープ

Markdown 記法の中で特別な役割を持つ記号をそのままの形で表示する場合は、\(バックスラッシュ/逆斜線・円記号)を各記号の前に置いて変換をエスケープすることができます。

記述例

\*literal asterisks\*

変換後 (X)HTML

<p>&#42;literal asterisks&#42;</p>

Markdown 記法中でエスケープできる記号は次のとおりです。

記号 名前・意味
\ バックスラッシュ/逆斜線・円記号
` バッククォート
* アスタリスク
_ アンダーライン
{ } 波括弧/ブレイス
[ ] 角括弧/ブラケット
( ) 丸括弧/パーレン
# 番号記号
+ プラス記号
- マイナス記号、ハイフン
. ドット、ピリオド
! エクスクラメーション・マーク
: コロン
| バーティカルバー/パイプ/縦線

  1. それぞれの作者による、オリジナルの Markdown 記法の解説。
    Daring Fireball: Markdown Syntax Documentation
    Michel Fortin: PHP Markdown Extra ^

Top