Development/Common

MD 확장자

linuxism 2013. 3. 27. 10:34


Markdown
Filename extensions.md.markdown[1]
Uniform Type Identifier (UTI)net.daringfireball.markdown
Developed byJohn Gruber
Initial releaseMarch 25, 2004; 11 years ago[2]
Latest release
1.0.1
(December 17, 2004; 10 years ago[3])
Type of formatMarkup language
Open format?yes[4]
Websitedaringfireball.net/projects/markdown/


Markdown is a 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.

History[edit]

John Gruber, with substantial contributions from Aaron Swartz,[7] 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,[8]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][9][10]

Sites such as GitHubredditDiasporaStack ExchangeOpenStreetMap, and SourceForge use variants of Markdown to facilitate discussion between users.[11][12][13][14]

Standardization[edit]

There is no clearly defined Markdown standard, apart from the original writeup and implementation by John Gruber, which some consider to be abandonware.[15][16] 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.[17] 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".[18] 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".[19][20]

A tool (named Babelmark2[21]) 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".[22]Gruber has argued that complete standardisation would be mistaken: "Different sites (and people) have different needs. No one syntax would make all happy."[23]

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.

Extensions[edit]

A number of 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 ExtraMultiMarkdownMaruku,[24] Kramdown and the Pandoc Markdown extension.[25] In some cases, this is in order to enable conversion into more formats than HTML, e.g. LaTeXRTFand 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.[26]

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".[27]

Example[edit]

text using Markdown syntaxthe corresponding HTML produced by a Markdown processorthe 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 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&mdash;not the
reign&mdash;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
line break

Text attributes italicboldmonospacestrikethrough.

link.

Shopping list:

  • apples
  • oranges
  • pears

Numbered list:

  1. apples
  2. oranges
  3. pears

The rain—not the reign—in Spain.

Editors[edit]

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 emacsgedit, and vim.

Implementations[edit]

Implementations of Markdown are available for many different frameworks, platforms and languages.

Test suites[edit]

  • Markdown Text Editor
  • Markdown Test Suite

There are many more open-source implementations of Markdown available online.

See also[edit]



source - http://en.wikipedia.org/wiki/Markdown







마크다운과 멀티마크다운

마크다운 (Markdown)

글을 스크랩하시거나 글을 많이 작성하시는 분들께 이 문법을 사용해 보시는 것을 추천해 드립니다. 워드나 RTF 파일, 혹은 에버노트, 혹은 블로그로 글을 작성을 하시면 제목, 강조, 링크 등은 마이그레이션을 하면서 서식이 다 망가질 것입니다. 서식은 두 가지가 혼재되어 있습니다. 글의 요소 (‘이것은 인용문입니다’, ‘이것은 링크입니다’), 그리고 글의 시각적 스타일 (‘이것은 글씨 크기가 24입니다’, ‘이것은 파란색 글씨입니다’). 우리는 이 둘을 분리해야 하며, 마크다운은 그것을 표현할 수 있는 훌륭한 문법입니다.

마크다운은 글 문법이자 이 문법으로 작성된 파일을 HTML으로 변환해 주는 툴을 의미합니다. 많은 개발자들은 github에서 README 파일의 문법으로 친숙할 것입니다. 위키 문법과 BBCode와 같은 경량 마크업 언어(light weight markup language)의 일종입니다.

마크다운은 읽고 쓰기 쉬우며, XHTML 혹은 HTML로 변환할 수 있는 문법을 지향하고 있습니다. 꾸밈이 안 된 텍스트 그 자체만으로도 가독성이 높아야 한다는 철학 아래 설계되었습니다. 마크다운은 글에서 서식을 분리한다는 디자인 철학을 품고 있습니다. 저자는 문단 사이의 간격이나 제목 서체의 크기 등을 신경쓰지 않고 글쓰기에 집중할 수 있으며, 독자는 자신이 원하는 서식으로 글을 읽을 수 있습니다. 물론 저자 역시 자신이 원하는 서식을 지정하여 글을 쓰면서 이것이 어떻게 보일지 확인할 수도 있습니다.

관용적으로 파일 확장자를 md, markdown을 사용하지만, 딱히 정해진 것은 없습니다. 그러므로 그냥 일반 텍스트 txt 확장자를 사용하는 것도 가능합니다.

마크다운 파일은 일반 텍스트 편집기에서 볼 수도 있으며, 툴을 사용해 변환 후 웹브라우저에서 볼 수도 있지만, 마크다운 전용 뷰어를 사용하는 것이 가장 아름답습니다. 대표적인 뷰어로는 Marked가 있습니다.

편집은 일반 텍스트 편집기를 사용할 수도 있지만, 마크다운 언어의 문법 강조 기능(syntax highlighting)을 사용해 문서 작성을 한결 더 용이하게 할 수 있습니다. 플러긴으로 문법 강조 기능을 추가할 수 있는 텍스트 편집기를 사용하신다면 대부분 이를 지원할 수 있습니다. 또한 몇몇 텍스트 에디터에서는 LaTeX 문서를 컴파일을 해 바로 dvi, pdf 파일로 렌더링 하여 보여주는 것과 같이, 플러긴을 지원해 단축키를 통해 바로 뷰어를 띄울 수도 있고, 편집 혹은 저장을 할 때마다 즉각적으로 렌더링하여 다시 글을 보여주게 할 수도 있습니다. 저의 경우는 Mou 마크다운 전용 에디터 겸 뷰어를 사용하다 텍스터 에디터는 코딩도 용이한 에디터를 사용하려는 이유로 Sublime Text 에디터와 Marked 뷰어를 연동해서 사용하고 있습니다.

Sublime Text Markdown Highlighting

Sublime Text Markdown Highlighting

문법과 기본 변환 툴 자체의 개발은 2004년 이후 바뀐 것이 없습니다. 이 때문에 정체된 것 아니냐는 비판적인 시각도 존재합니다. 아무래도 오픈소스 진영과 맥 유저들에게 조금 더 알려져 있고 그쪽으로도 개발이 더 활발한 편입니다. 윈도우즈에서도 괜찮은 뷰어를 찾아보려 했는데 딱히 맘에 드는 것이 없더군요.

대부분의 최신 블로그 시스템들은 마크다운으로 글을 작성할 수 있는 기능을 플러긴을 통해 제공합니다. 물론 그러한 기능이 존재하지 않다 하더라도 마크다운 변환 툴을 사용해 HTML을 뽑아 붙이면 그만입니다. Mou 같은 경우는 에디터에서 단축키를 누르면 바로 텀블러 블로그로 글을 포스팅 하는 기능까지 있습니다.

참고로 HTML을 마크다운 언어로 역변환 해주는 툴, html2text 역시 존재합니다. 오픈 인터넷 진영에서 활동하다 최근 젊은 나이에 명을 달리하여 이슈가 된 아론 슈와츠가 개발한 툴입니다.

멀티마크다운 (MultiMarkdown)

멀티마크다운은 마크다운의 확장 문법이자 변환 툴입니다. 확장자는 mmd 입니다.

다음 문서 포맷 변환을 지원합니다.

  • HTML/XHTML
  • LaTeX (PDF로 이차 변환 가능)
  • OpenDocument (RTF, Microsoft Word로 이차 변환 가능)
  • OPML

다음과 같은 확장 기능을 제공합니다.

  • 미주
  • 논문식 인용, 참고문헌 (citations and bibliography)
  • 수식
  • 자동 상호 참조
  • 그림 속성
  • 문서 메타데이터 (제목, 저자, 날짜 등)

개인적으로 마크다운에서 아쉬웠다고 생각한 기능들이 많아서 좋긴 하지만, 마크다운 문법, 위키 문법, 라텍스 문법을 전부 포용하려고 하다 보니 문법 자체가 너무 어렵고 복잡해진 감이 없지 않습니다. 각종 문법과 템플릿으로 떡칠이 되어 버린 위키백과처럼 되는것 아닌가 걱정이 됩니다. 그림 크기 속성 편집이나 HTML, 자바스크립트 삽입 같은 기능을 보면 글과 서식을 분리한다는 본연의 목적에서 벗어난 것으로 보입니다.

마크다운 문법

여기서부터는 마크다운이 어떻게 HTML로 변환하는지에 대한 명세나 마크다운 툴을 어떻게 사용하는지에 대해서는 설명하지 않고, 마크다운 문법에 대해서만 집중적으로 설명하겠습니다. 대부분의 내용은 마크다운 명세서에서 가져와 취사 번역하였음을 밝힙니다.

문장, 제목, 인용 (Paragraphs, Headers, Blockquotes)

문단은 빈 줄 하나 이상으로 구분된다. 일반적인 문단의 앞에는 공백이 허용되지 않는다.

제목은 제목 아랫줄에 ‘=’ 문자나 ‘-’ 문자를 쓰는 Setext 방식과 그 단계에 따라 앞에 하나에서 여섯개의 ‘#’ 문자를 넣는 atx 방식 두 가지를 지원합니다. 심미성을 위해 뒤에 같은 개수의 ‘#’ 문자를 넣는 close atx 방식도 허용됩니다.

인용하고자 하는 부분은 앞에 이메일에서 사용하는 것과 같이 ‘>’ 문자를 넣습니다.

첫 단계 제목
=========

둘째 단계 제목
-----------

국회는 국민의 보통·평등·직접·비밀선거에 의하여 선출된 국회의원으로 구성한다. 모든 국민은 신체의 자유를 가진다. 모든 국민은 양심의 자유를 가진다.

입법권은 국회에 속한다. 국회의원이 회기 전에 체포 또는 구금된 때에는 현행범이 아닌 한 국회의 요구가 있으면 회기 중 석방된다.

### 셋째 단계 제목

> 공무원의 신분과 정치적 중립성은 법률이 정하는 바에 의하여 보장된다.
>
> 모든 국민은 사생활의 비밀과 자유를 침해받지 아니한다.
>
> 외국인은 국제법과 조약이 정하는 바에 의하여 그 지위가 보장된다.

강조 (Phrase Emphasis)

‘*’ 문자 혹은 ‘_’ 문자로 강조하고 싶은 구문을 감싼다. 두 번 감싸면 강한 강조를 뜻한다.

이 문장 중 일부는 *강조가 되어 있습니다*.
이 문장의 일부 역시 _강조가 되어 있습니다_.

강조 문자를 두 번 사용하면 **더욱 강하게 강조**가 될 것입니다.
물론 별표를 사용하지 않고도 __강조를 할 수__ 있습니다.

목록 (List)

번호 없는 목록은 ‘*’, ‘+’, ‘-’ 문자 중 하나를 목록 항목 앞에 사용하여 표현한다.

*   하나
*   둘
*   셋

이런 식으로도 가능하다.

-   하나
-   둘
-   셋

번호 있는 목록은 번호를 매기고 마침표를 달아서 표현한다.

1.   빨강
2.   초록
3.   파랑

만일 목록 항목(list item)들 사이에 빈 줄이 들어가 있다면, 항목에 적혀진 글줄은 문단 처리가 된다. 복수개의 문단을 한 목록 항목에 사용하고 싶다면 두 번째 문단 이후의 문단들에 탭 혹은 공백 네 개를 넣으면 된다.

*   항목.

    복수개의 문단을 사용할 수 있습니다.

*   또 다른 항목.

심미성을 위해 다음과 같이 내려쓰기를 하는 것 역시 허용된다.

*   국회는 국민의 보통·평등·직접·비밀선거에 의하여 선출된 국회의원으로 구성한다.
    모든 국민은 신체의 자유를 가진다. 모든 국민은 양심의 자유를 가진다.
*   입법권은 국회에 속한다. 국회의원이 회기 전에 체포 또는 구금된 때에는
    현행범이 아닌 한 국회의 요구가 있으면 회기 중 석방된다.

숫자 목록 항목 표현을 하고 싶은데 부득이하게 숫자 다음에 마침표가 오는 문장이 있다면 다음과 같이 처리한다.

1986\. What a great season.

링크 (Links)

인라인 형식과 참조 형식을 지원한다. 둘 다 링크로 만들고 싶은 부분을 ‘‘, ‘‘ 꺽쇠로 감싸는 방법을 취한다.

인라인 형식은 링크 바로 다음에 ‘(‘, ‘)’ 소괄호를 사용하여 실제 주소를 명기하며, 이 이후에 띄어쓰기와 따옴표로 감싼 구절을 추가해 마우스를 올려놓았을 때 팝업으로 뜨는 ‘Title’ 속성도 명시할 수 있다.

This is an [example link](http://example.com "With a title")

참조 형식은 링크 구문 뒤에 꺽쇠로 감싼 이름을 붙이고 문서 끝에 링크 주소를 명기한다. 이름은 숫자 이외의 문자나 공백 조합이 가능하며, 대소문자를 가리지는 않는다.

I get 10 times more traffic from [Google][1] than from [Yahoo][2] or [MSN][NY Times].

[1]: http://google.com/         "Google"
[2]: http://search.yahoo.com/   "Yahoo Search"
[ny times]: http://www.nytimes.com/

링크를 가리키는 부분과 링크의 이름(id)가 같다면 이름을 생략할 수 있다.

Visit [Daring Fireball][] for more information.

[Daring Fireball]: http://daringfireball.net

바로 주소를 넣는 자동 링크 기능을 사용하는 것 역시 가능하다.

<http://example.com/> 사이트는 멋진 UI를 자랑한다.

그림 (Images)

인라인 형식

![alt text](/path/to/image.jpg "Title (Optional)")

참조 형식

![alt text][id]

[id]: /path/to/img.jpg "Title"

수평선 (Horizontal Rules)

다음 중 어느 것을 사용해도 된다. 사실 띄어쓰기가 들어간 복수개의 ‘*’ 혹은 ‘-’만 있다면 상관 없다.

* * *

***

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

코드 (Code)

HTML에서의 code 태그와 같이 문장 내에서 특정 구문에 코드 형식을 설정하고 싶으면 ‘`’ 문자로 그 구문을 감싼다. HTML에서의 pre 태그와 같이 문장 전체를 코드 형식화 하고 싶으면 글줄의 앞에 4 칸의 띄어쓰기를 넣거나 탭을 넣는다.

github에서는 문법 강조(syntax highlighting)를 위해 문법을 추가하였는데, 예를 보면 다음과 같다.

```ruby
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
```

특수 문자 예외 처리

마크다운 문법에 사용되는 문자들을 문자 그대로 사용할 때에는 앞에 백슬래시 ‘\’ 문자를 붙인다.

참조


출처 - http://bluebrown.net/blog/archives/1061