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. head1 h2. head2 h3. 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) |
.. 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. apple 1. 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 here p(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 複数の記法があるので、詳細は仕様を参照