2015-02-28
Markdown vs Textile vs reStructuredText
[ PR ]
以前、Markdownのチートシートを書きましたが、最近ではMarkdownも幅広い用途に使われるようになりました。
特にPandocというHaskellで書かれたツールを使うことで、マークアップ言語間の変換や、電子書籍の制作、プレゼンテーションの出力などが簡単にできるようになりました。
そこで、改めて3つの言語の細かな違いを検証してみようと思います。
凡例
- md ・・・ Markdown
- rst ・・・ reStructuredText
- tx ・・・ Textile
横長い表になるため、PC版での閲覧推奨(スマホでもPC版を要求すればOK)
チートシート
見出し、段落
| 項目 | md | rst | tx | HTML |
|---|---|---|---|---|
| 見出し | head1======head2--------- |
head1======head2--------- |
なし | <h1>head1</h1><h2>head2</h2> |
| 見出し (省略) |
# head1## head2### head3 |
なし | h1. head1h2. head2h3. head3 |
<h1>head1</h1><h2>head2</h2><h3>head3</h3> |
| 段落 | I am Tom.You are Mary. |
I am Tom.You are Mary. |
I am Tom.You are Mary. |
<p>I am Tom.</p><p>You are Mary.</p> |
| 段落 (改行) |
I am Tom.<br>You are Mary. |
¦ I am Tom.¦ You are Mary.(*1) |
I am Tom.You are Mary. |
<p>I am Tom.<br>You are Mary.</p> |
引用、コード、水平線
| 項目 | md | rst | tx | HTML |
|---|---|---|---|---|
| 引用 | > quotation |
quotation(*2) |
bq. quotation |
<blockquote><p>quotation</p></blockquote> |
| インラインコード | `code` |
なし | <code>code</code> |
<code>code</code> |
| コードブロック | ```rubyputs "hello"``` (*3) |
>>> print "hello"(*4) |
<p><code>puts "hello"</code></p> |
<p><code>puts "hello"</code></p> |
| 水平線 | ---------- |
---------- |
---------- |
<hr> |
文字装飾
| 項目 | md | rst | tx | HTML |
|---|---|---|---|---|
| 斜体 (em) |
*italic*_italic_ |
*italic* |
_italic_ |
<em>italic<em> |
| 斜体 (i) |
<i>italic</i> |
なし | __italic__ |
<i>italic</i> |
| 太字 (strong) |
**bold**__bold__ |
**bold** |
*bold* |
<strong>bold<strong> |
| 太字 (b) |
<b>bold</b> |
なし | **bold** |
<b>bold</b> |
リンク、画像
| 項目 | md | rst | tx | HTML |
|---|---|---|---|---|
| リンク | [ow.ly](http://ow.ly/) |
`ow.ly <http://ow.ly/>`_ |
"ow.ly":http://ow.ly |
<a href="http://ow.ly">ow.ly</a> |
| 画像 |  |
.. google:: logo.png |
!logo.png(google)! |
<img alt="google" src="logo.png"/> |
単純リスト、数字付きリスト (*5)
| 項目 | md | rst | tx | HTML |
|---|---|---|---|---|
| 単純リスト | - apple- banana |
- apple- banana |
* apple* banana |
<ul><li>apple</li><li>banana</li></ul> |
| 数字付きリスト | 1. apple1. banana(*6) |
#. apple#. banana(*7) |
#. apple#. banana |
<ol><li>apple</li><li>banana</li></ol> |
テーブル記法
| 項目 | md | rst | tx | HTML |
|---|---|---|---|---|
| テーブル | ¦A¦B¦¦--¦--¦¦a¦b¦(*8) |
== ==A B-- --a b== ==(*9) |
¦_.A¦_.B¦¦a¦b¦ |
<table><tr><th>A</th><th>B</th></tr><tr><td>a</td><td>b</td></tr></table> |
属性の追加、インラインHTML
※1 ANYは何でも可の意味
※2 Markdownの追加属性機能は、Markdown Extendedなどでの拡張。
| 項目 | md | rst | tx |
|---|---|---|---|
| 追加属性 | ANY {#header1}ANY {#main .small} |
.. class:: small |
p(#big-red). Red herep(example1). An example |
| HTML埋め込み | ◯(直接) | ◯:例 .. raw:: html <hr width=50 size=10>) |
◯(直接 or 専用記法) |
脚注
- *1 実際に出力されるコードは他と異なり、divに属性が付いたものが出力される。
- *2 下線部はインデント。pタグは出力されない
- *3 バックスラッシュは実際は半角。この記法はGitHub Flavored Markdown などのみで使え、書式も出力コードも処理系依存
- *4 preタグのみ出力され、コードブロックの中身も >>> から始まる。Python記法のみサポートしている模様。
- *5 入れ子については省略
- *6 この記法では番号を指定することは出来ない。(1), (2) などを使えば可。
- *7
#の代わりに数字を指定すれば、番号の明示ができる - *8 テーブル記法は実装に依存するため、HTMLで記述するのが確実。
- *9 複数の記法があるので、詳細は仕様を参照