出典(authority):フリー百科事典『ウィキペディア(Wikipedia)』「2015/07/12 13:07:47」(JST)
Markdown(マークダウン)は、文書を記述するための軽量マークアップ言語のひとつである。もとはプレーンテキスト形式で手軽に書いた文書からHTMLを生成するために開発された。現在ではHTMLのほかパワーポイント形式やLaTeX形式のファイルへ変換するソフトウェア(コンバータ)も開発されている。各コンバータの開発者によって多様な拡張が施されるため、各種の方言が存在する。
「書きやすくて読みやすいプレーンテキストとして記述した文書を、妥当なXHTML(もしくはHTML)文書へと変換できるフォーマット」として、ジョン・グル―バー(英語版)により作成された。アーロン・スワーツも大きな貢献をしている。[1]Markdown の記法の多くは、電子メールにおいてプレーンテキストを装飾する際の慣習から着想を得ている。
Markdown はグルーバーによって書かれた Markdown.pl という Perl プログラムを指すこともある。このスクリプトは、Markdown の形式でマークアップされたテキストをXHTML文書もしくはHTML文書に変換するものである。Markdown.pl はスクリプト単体として利用することができると同時に、Blosxom や Movable Type のプラグインなどからも利用できる。[1]
Markdown.pl は、その後第三者によって CPAN の Perl モジュール(Text::Markdown
)として再実装され、さらに Python 等の他のプログラミング言語でも実装された。Markdown はBSDライセンスの下で配布され、いくつかのCMSでもプラグインとして利用できる。[2][3]
有名なMarkdown方言としてMarkdown Extra(英語版)[1]やGitHub Flavored Markdown[2]、Marukuなどがある。その他のサービス・コンバータにおいても表やソースコードの記法などで独自の拡張が加えられていることが多い。また標準化への動きとして、IETFはIESGにdraft-ietf-appsawg-text-markdownをインターネットドラフトとして提案している。以下にMarkdownの利用例を挙げる。
以下の例は Markdown の記法の包括的なリストではないし、ひとつの効果を実現するために複数の記法が利用できる場合も多い。詳細はfull Markdown syntax に記載されている。Markdown が書式化コマンドとして解釈する文字は、バックスラッシュを加えることによって、その文字そのものとして解釈させることができる。例えば「\*
」は、テキスト強調の開始ではなくアスタリスクとして出力される。 また「生」のXHTMLのブロックレベル要素の中にあるテキストに対して Markdown はいかなる変換も行わないので、XHTMLのブロックレベル要素のタグでテキストを囲むことによって、Markdown のソース文章の中にXHTMLのセクションを加えることもできる。
段落は1つ以上の連続したテキストであり、空行によって分けられる。通常の段落をスペースやタブでインデントしてはならない:
これは段落です。2つの文があります。
これは別の段落です。ここにも2つの文があります。
テキストに挿入された改行は最終的な結果から取り除かれる。これは、画面の大きさに応じて改行を行う処理はWebブラウザが担当すべきであるという設計思想による。強制的に改行したい場合は、行末に2つのスペースを挿入すればよい。
*強調* もしくは _強調_(斜体として表現されることが多い)
**強い強調** もしくは __強い強調__(太字として表現されることが多い)
コード(等幅フォントで整形される)を含める場合、インラインコードは「`some code`
」のようにバッククオート(U+0060)で囲むことになる。
複数行にまたがるコードは、4つ以上のスペースを行頭に書く。
1行目
2行目
3行目
Markdown は通常、改行や連続したスペースを削除するため、インデントやコードのレイアウトを壊す可能性があるが、この場合 Markdown は空白をすべて保持する。
* 順序無しリストのアイテム
* サブアイテムはタブもしくは4つのスペースでインデントする
* 順序無しリストの別のアイテム
<!-- dummy comment line for breaking list -->
1. 順序付きリストのアイテム
2. 順序付きリストの別のアイテム
HTMLの見出しは、テキストの前にいくつかの'#'を置くことで作ることができる。'#'の数が見出しのレベルに対応する(HTMLは、見出しのレベルを6まで提供している)。
# レベル1の見出し
#### レベル4の見出し
最初の2つのレベルには代替の記法が存在する:
レベル1の見出し
===============
レベル2の見出し
---------------
> "このテキストは、HTMLのblockquote要素に囲まれます。
blockquote要素はreflowableです。テキストを好きなように
改行することができます。改行したとしても、変換後はひとつの
blockquote要素として扱われます。"
上記は次のようなHTMLに変換される。
<blockquote>
<p>このテキストは、HTMLのblockquote要素に囲まれます。
blockquote要素はreflowableです。テキストを好きなように
改行することができます。改行したとしても、変換後はひとつの
blockquote要素として扱われます。</p>
</blockquote>
リンクは次のように記述できる。
[リンクのテキスト](リンクのアドレス "リンクのタイトル")
参照目的のリンクとして、脚注として段落外に含めることもできる。
[リンクのテキスト][linkref]
段落外もしくは文書の最後に次のような記述があれば、それは参照リンクとして機能する。
[linkref]: リンクのアドレス "リンクのタイトル"
1行の中に、3つ以上のハイフンやアスタリスク・アンダースコアだけを並べると水平線が作られる。ハイフンやアスタリスクのあいだには空白を入れてもよい。以下の行はすべて水平線を生成する:
* * *
***
*****
- - -
---------------------------------------
[ヘルプ] |
Filename extensions | .md , .markdown [1] |
---|---|
Uniform Type Identifier (UTI) | net.daringfireball.markdown |
Developed by | John Gruber |
Initial release | March 25, 2004; 11 years ago (2004-03-25)[2] |
Latest release |
1.0.1
(December 17, 2004; 10 years ago (2004-12-17)[3]) |
Type of format | Markup language |
Open format? | yes[4] |
Website | daringfireball |
Markdown is a lightweight markup language with plain text formatting syntax designed so that it can be converted to HTML and many other formats using a tool by the same name.[5][6] Markdown is often used to format readme files, for writing messages in online discussion forums, and to create rich text using a plain text editor.
John Gruber created the Markdown language in 2004 with the goal of enabling people "to write using an easy-to-read, easy-to-write plain text format, and optionally convert it to structurally valid XHTML (or HTML)”.[3]
Taking cues from existing conventions for marking up plain text in email, such as setext, the language was designed to be readable as-is, without looking like it's been marked up with tags or formatting instructions,[7] unlike text formatted with a markup language, such as Rich Text Format (RTF) or HTML, which have obvious tags and formatting instructions.
Gruber wrote a Perl script, Markdown.pl, which converts marked-up text input to valid, well-formed XHTML or HTML and replaces left-pointing angle brackets ('<') and ampersands with their corresponding character entity references. It can be used as a standalone script, as a plugin for Blosxom or Movable Type, or as a text filter for BBEdit.[3]
Markdown has since been re-implemented by others as a Perl module available on CPAN (Text::Markdown), and in a variety of other programming languages. It is distributed under a BSD-style license and is included with, or available as a plugin for, several content-management systems.[4][8][9]
Sites such as GitHub, reddit, Diaspora, Stack Exchange, OpenStreetMap, and SourceForge use variants of Markdown to facilitate discussion between users.[10][11][12][13]
There is no clearly defined Markdown standard, apart from the original writeup and implementation by John Gruber, which some consider to be abandonware.[14][15] This has led to fragmentation as different vendors write their own variants of the language to correct flaws or add missing features.
From 2012 through 2014, a group of people including Jeff Atwood launched what Atwood characterized as a standardization effort.[16] A community website now aims to "document various tools and resources available to document authors and developers, as well as implementors of the various markdown implementations".[17] In September 2014, Gruber objected to the usage of "Markdown" in the name of this effort and it was rebranded as a new dialect named CommonMark.[18][19]
A tool (named Babelmark2[20]) is also available to "[compare] the output of various implementations" to "promote discussion of how and whether certain vague aspects of the markdown spec should be clarified".[21] Gruber has argued that complete standardisation would be mistaken: "Different sites (and people) have different needs. No one syntax would make all happy."[22]
A standards effort for the Internet media type text/markdown
(independent of the syntax) is underway in the IETF. The Internet-Draft, draft-ietf-appsawg-text-markdown, is planned to be submitted to the IESG in April 2015. The Markdown community is invited to submit use cases for Markdown, which will inform the media type standardization process.
A number of other lightweight markup languages extend Markdown by implementing added features (such as tables, footnotes, definition lists, and Markdown inside HTML blocks) not available with plain Markdown syntax. Among these are Markdown Extra, MultiMarkdown, and the Pandoc Markdown extension.[23] In some cases, this is in order to enable conversion into more formats than HTML, e.g. LaTeX, RTF, and DocBook.
Many implementations also intentionally omit support for middle word emphasis. The original Markdown implementation interprets constructs like my_long_variable
as a request to emphasize "long" in the middle of a word. Many users found this confusing, so many later implementations such as PHP Markdown and Python Markdown do not implement middle word emphasis by default.[24]
The essay "Thoughts on Markdown" stated that Markdown's original developer, John Gruber, has not responded to discussions about extensions to Markdown, and that "Markdown is changing, with or without him".[25]
text using Markdown syntax | the corresponding HTML produced by a Markdown processor | the text viewed in a browser |
---|---|---|
Heading
=======
Sub-heading
-----------
### Another deeper heading
Paragraphs are separated
by a blank line.
Leave 2 spaces at the end of a line to do a
line break
Text attributes *italic*, **bold**,
`monospace`, ~~strikethrough~~ .
A [link](http://example.com).
<<< No space between ] and ( >>>
Shopping list:
* apples
* oranges
* pears
Numbered list:
1. apples
2. oranges
3. pears
The rain---not the reign---in
Spain.
|
<h1>Heading</h1>
<h2>Sub-heading</h2>
<h3>Another deeper heading</h3>
<p>Paragraphs are separated
by a blank line.</p>
<p>Leave 2 spaces at the end of a line to do a<br />
line break</p>
<p>Text attributes <em>italic</em>, <strong>bold</strong>,
<code>monospace</code>, <s>strikethrough</s>.</p>
<p>A <a href="http://example.com">link</a>.</p>
<p>Shopping list:</p>
<ul>
<li>apples</li>
<li>oranges</li>
<li>pears</li>
</ul>
<p>Numbered list:</p>
<ol>
<li>apples</li>
<li>oranges</li>
<li>pears</li>
</ol>
<p>The rain—not the
reign—in Spain.</p>
|
Heading
Sub-heading
Another deeper heading
Paragraphs are separated by a blank line. Leave 2 spaces at the end of a line to do a Text attributes italic, bold, A link. Shopping list:
Numbered list:
The rain—not the reign—in Spain. |
While Markdown is a minimal markup language and is easily read and edited with a normal text editor, there are specially designed editors that preview the files with styles. There are a variety of such editors available for all major platforms. There are syntax highlighting plugins for Markdown built into emacs, gedit, and vim.
Implementations of Markdown are available for many different frameworks, platforms and languages.
There are many more open-source implementations of Markdown available online.
.