update.元リポジトリは次の通りです。https://github.com/higuma/markdown_cheat_sheetQiitaの方が見てくれる人も多いと思いますのでそのまま転載します。edition)これはもともとMarkdown勉強時の個人的な備忘録として書いたものですが、気が付いたらもうチートシートではなく詳細解説になってしまいました。文法の細かい部分の確認にご利用下さい。全体の構成としては最初にコードを示し、次にその表示イメージを実際に示してどのように変換されるか目で分かるようにしています。表示結果は引用を使って他の部分と区別しています(特にheaderの説明時に混乱を避けるため)。最初はテキスト文書として書き始めたものですが、途中からこの文章自体もMarkdownで書き直しました(それ自体とてもよい演習です)。どのように記述してあるかは本文のソースをRawモードで見れば分かります。(Qiita拡張)http://qiita.com/Qiita/items/c686397e4a0f4f11683d勉強開始時は文法確認にオンラインプレビューを使うとよい。探せば色々見つかるがおすすめは次のサイトで、左右で原文と変換結果を比較でき、出力もほぼgithubと同じようにフォーマットして表示してくれる。Qiita投稿プレビューはもっと便利で、(後で説明する)GithubやQiitaの拡張文法もすべて認識するまたローカルファイルシステム上のMarkdown文章は次のサイトを使えばプレビューできる(これも便利)。ページにアクセスしてタイトル部分にファイルをドロップすればブラウザで閲覧できる。http://playground.k11i.biz/mp/以下Markdownリファレンスの章立ての順に説明する。HTMLMarkdownは基本的にホームページを簡単に書くことを目的としており、HTMLでよく使われる書式をHTMLより容易に記述できる。Markdownで表現できない書式はHTMLタグを使えば表現できる。<p>など)は次のルールで記述すれば認識する。前後に空行を置くタグは行頭に置く(手前にスペースやタブを入れない)このように記述したブロック要素の内部ではMarkdownの記法が適用されない。次は(後で説明する)強調表示の例(これは通常のMarkdown)。*emphasized*次はその変換結果(表示イメージ)。多くのブラウザは斜体で表示する。emphasizedしかし次の例では<p>はブロック要素なので内部では強調の*...*が適用されない。emphasized*</p>結果は次の通り。emphasized*インライン要素は行頭に置く必要はなく、文章の途中にそのまま挿入できる。Qiitaではstyle属性は効果なしインライン要素内ではMarkdown文法が有効になる。CharactersHTMLでは<や&は特殊文字であり、文字実体参照を使って&lt;や&amp;などと書く必要がある。Markdownではこれらの特殊文字を自動変換して自然に処理する。Breaks上下に空白行がある文章はひとつの段落として認識される。ここでの空白行は次の性質を持つ行(のまとまり)を指す。空白行の連続はひとつの段落区切りとして認識される。空行でない行は同じ段落として認識される。次の例では一行目と二行目の間は改行されず、連続した文章として認識される。途中の空行はいくつ連続してもひとつの段落区切りと認識される。ParagraphHeadersヘッダは2つの形式をサポートしている。最初の形式は次の通り。文章の直下の行が=または-の場合はそれぞれ<h1>と<h2>に対応する。本物の見出しではないので注意)。H2===や---の長さは文字の長さと関係ない。次でも同じ結果になる。H2どちらも次のHTMLに変換される。H2</h2>2つ目の形式は先頭に#をレベルの数だけ置く。この形式は<h3>以上も表現できる。h4h1h4タイトル文章の後に#を置いてもよい。これらは単に無視される。threeBlockquotesメールと同じように先頭の>は引用(blockquote)として解釈される。次のように毎行の頭に>を書くと連続した引用として認識する。blockquote.foobar連続した複数行に渡る文章は先頭に>を書けば全体をひとつの引用の段落と認識する。paragraph.引用は入れ子を認識する。level.引用の中でもMarkdown文法を使うことができる。$markdown_script");Lists順序なしリスト(<ul>)は次のように表現する。BlueRedGreenBlue*の代わりに+または-を使ってもよい。これらに区別はなく、次は最初の例と全く同じように表示する。BlueRedGreenBlueどちらも次のHTMLを生成する。<ul><li>Red</li><li>Green</li><li>Blue</li></ul>(本文に書いてないが)入れ子はインデントで表現する。タブ1つまたは半角スペース4つで認識する。</li></ul>インデントはスペース4つ(またはタブ1つ)が基本(Web上で読んだ記憶はあるがどこのサイトか思い出せない)。(本家のPerl実装を始め)可能な限りエラーにはしないので詳細仕様は実装により異なると考えるべき。4の倍数にしておけば確実。ここではgithubが用いている実装をリファレンスとする。先頭記号として*以外に+と-も使えるようにした理由はテキスト状態でツリー表示した場合を考慮したものだろう。次のような例を考えること。lib番号付きリスト(<ol>)は次のように表現する。ParishBirdMcHaleParishただし数値に意味はない。次でも同じ結果になる。ParishBirdMcHaleParishこれらはどちらも次のHTMLに変換される。<ol><li>Bird</li><li>McHale</li><li>Parish</li></ol>元のHTMLに番号を設定する機能がないため現状ではこうするよりない。将来番号を設定する機能が付く可能性も考えられるので、1から連番にしておけば間違いない。リストの正式なルールは次の通り。手前に3個までスペースを置いてよい(4つ以上あるとインデントとして認識する)。次のようにインデントを使って書いてもよい。これはテキストとしての見やすさを考えた仕様だが、2行目以降の空白は単に無視する(作業の負担だと思ったらやめていい)。adipiscing.空行は段落と認識されることを忘れてはいけない。Magicこのように空行があると段落とみなされ次のように変換される。BirdMagic<ul><li><p>Bird</p></li><li><p>Magic</p></li></ul>ここで<li>...</li>の中に<p>...</p>が展開されることに注目。そのため次のように書くことができる。adipiscing.中に引用を入れる場合は手前に4つスペース(またはタブ1つ)が必要になる。item.引用の内部にコードを挿入するにはスペース8つ(またはタブ2つ)が必要。here>最後は次のケースに注意。普通に書いたつもりの文章が偶然リストと同じ形式になってしまうことがある。season.こういう場合はバックスラッシュを使う。Blocksコードブロックはスペース4つ(またはタブ1つ)を先頭に付ける。block.変換結果は次の通り。先頭の空白(スペース4つまたはタブ一つ)は除去する。<code>はインライン要素なのでブロック要素の<pre>を併用して出力する。&amp;に変換する。これは特にHTMLソースを挿入する場合に便利で、ほとんどの場合はそのままペーストしてインデントだけ追加すれば認識する。</div>次のように変換される。Rules3つ以上の-,*,_だけで構成される行は<hr/>と認識される。間に半角スペースがあってもよい。ElementsLinksリンクの<a>は[内部の文字](URL)で表現する。マウスをリンク上においた時に表示されるポップアップ文字列を設定する場合はURLの後に"..."を書く。link.次のように変換される。link.</p>これは単純な変換なので相対リンク(同一サーバ上)でもよい。details.MarkdownにはURLを間接的に表現する便利な機能がある。link)は[文字列][リンクID]と書く。間に半角スペースがひとつあってもよい。link.IDとそのURLを定義する側は文章のどこかに次の書式で記述する。URLは見やすくするため<...>で囲ってもよい。"もし必要ならタイトル"例を示す。これらは変換したWebページには表示されない。Here"IDは数字、スペース、記号が入っていてもよい。大文字と小文字は区別しない。次の場合はどちらも同じIDのAを参照する。text][A]さらに省略機能がある。IDを(特殊文字を除く)任意の文字列としたのには理由があり、リンク対象文字列をそのままIDとして使うことができる。Googleという単語全部にリンクを付けるには次のように記述する。[Google][]そして文書のどこかで次のようにGoogleをIDとして定義する。href="http://google.com/">Google</a>に変換される。IDは空白を含んでよいため、次のようなこともできる。information.このリンクの定義部は次のように記述すればよい。http://daringfireball.net/リンク定義は文書のどこにあってもよい。以下は最後にまとめて書いた場合の例。MSN.名称そのものをIDにできるため次のように書いてもよい。以下の例では大文字と小文字を区別してないことに注意。MSN.どちらも次のように変換される。Search">MSN</a>.</p>この参照リンクの機能は書きやすさよりもむしろ見やすさを考慮したもので、次のように直接書いた場合と比較すれば効果がよく分かる。Search").Emphasis*文章*や_文章_は<em>文章</em>に、**文章**や__文章__は<strong>文章</strong>に変換される(多くのブラウザで<em>は斜体、<strong>は太文字で表示する)。unfuckingbelievable前後に半角スペースがある場合はこれに該当しない(そうでないと色々と不便)。アスタリスクやアンダーライン文字をそのまま記述する場合はバックスラッシュでエスケープする。次の場合は前後のスペースがあるのでそのままでOK。1次の例は前後のスペースがないのでバックスラッシュでエスケープする。crazy.ソースコードを(ブロックでなく)インラインで引用する場合は`...`で表現する。function.</p>インラインコードの中に`が含まれる場合は、2重バッククォート(``)で囲む。`ls`.split</code></p>最初または最後が`の場合は間にスペースをひとつ入れる(ないと認識しない)。この空白は除去される。```ps`<p><code>`ps`</code></p>さらにインラインコードの中にn重のバッククォートがある場合は(n+1)重のバッククォートで囲む。&は自動的に文字実体に変換される。tags.</p>Images画像の<img>も表現できるが、<a>と同じように直接と参照の両方の方法がある。直接の場合の書式は次の通り。先頭の!で画像の<img>と認識する。"タイトル")実際に使った例を示す。"Octcat")参照の場合は次の通り。先頭の!以外はリンクと同じなので書式だけ示す。text][id]定義側はリンクのIDと同じ書式を用いる。attribute"ただし大きさなどの設定はできないので、必要な場合は<img>要素を使うこと。LinksURLの自動リンクはURLを<...>で囲む。href="http://example.com/">http://example.com/</a>メールアドレスでも同じ書式を使う。<address@example.com>この場合はスパム対策のため全文字を文字実体参照に変換する(簡単な対策だが多くのロボットに対してはこれで防げることが多い)。EscapesMarkdownで使う特殊文字をまとめて示す。markこれらをそのままテキストとして書く場合はバックスラッシュでエスケープする。Markdown(以下GFM)を用いている。正式な仕様書はなく、次が事実上のリファレンスになっている。wordsSMは英数字とアンダースコアの連続があるとそれを強調表示と認識しようとする。この仕様はsnake_caseを多用する言語(特にRuby)と相性が悪く、例えばeach_with_indexの中央部(with)が強調と(誤?)認識される。GFMは(連続した)語に複数回出現するアンダースコアを強調と認識しない(無視する)。以下はどちらもRubyでよく出てくる例。autolinkingGFMはURLを自動認識するため、自動リンクは<...>で囲まなくてもよい。https://help.github.com/articles/github-flavored-markdownhttps://help.github.com/articles/github-flavored-markdownStrikethroughGFMは取り消し線を~~...~~で表現できる。blocksSMはコードブロックをスペース4つのインデントで判別するが、GFMは```で囲んだブロックもコードブロックと認識する(インデント不要)。形式で言語別の文法を認識しハイライト表示する。いくつか自分の知っている言語を使って確認する。document.getElementById('canvas').getContext('2d');(注意)言語名は全て小文字で記述すること(JavaScriptでは認識しない)。TablesTableは最近追加された(2014年4月確認)。この文法はすでに多くのサイトで採用されている(Qiitaは2年前から採用)。http://michelf.ca/projects/php-markdown/extra/-と|を使った簡易<table>作成機能がある。TD両端に|があってもよい(見やすさのため)。次の例は最初と同じ結果になる。TD-の個数は横幅を合わせなくてもよい。TDアラインメントは次のように記述できる。Markdownをベースとしてさらに拡張した方言が用いられる。http://qiita.com/Qiita/items/c686397e4a0f4f11683dコードGFMと同じトリプルバッククォートを使える。先頭部にlanguage:filenameの形式で言語とファイル名の両方を記述できる。これで文法ハイライトが有効になり、さらにコードブロックの左上にファイル名を表示する。x数式(TeX形式)トリプルバッククォート形式コードブロックで言語をmathとするとTeX記法による数式を記述できる。mathF(s)=\int_{0}^{\infty}f(t)e^{-st}dt```F(s)=\int_{0}^{\infty}f(t)e^{-st}dtインラインコードブロックと同じように$formula$と書くとインラインで数式を挿入できる。Qiitaではインライン数式$E=mc^2$が使えますQiitaではインライン数式$E=mc^2$が使えますただしこの$...$の書式は時々副作用を起こす。次の文章はたまたま同じ行の中に$で囲まれた部分があるため間の部分が数式と誤認識される。url})と同じこのケースを考慮してQiita拡張では$文字もバックスラッシュによるエスケープの対象となる。次の例はQiitaでは\$をエスケープと認識するが、別の処理系ではバックスラッシュがそのまま表示される。upLoginユーザーは見つかりませんでした。