최근 수정 시각 : 2024-11-16 13:07:58

마크다운

1. 개요2. 문법
2.1. 문단 제목2.2. 문단2.3. 목록2.4. 글자모양2.5. 코드2.6. 인용문2.7. 링크2.8. 그림 넣기2.9. 가로줄
3. 마크다운을 사용하는 곳4. 마크다운 변형판
4.1. Github-Flavored Markdown4.2. MultiMarkdown4.3. Haroopad Flavored Markdown
5. 관련 문서

1. 개요


마크다운 (Markdown)은 마크업 언어의 일종으로, 존 그루버(John Gruber)[1]와 아론 스워츠(Aaron Swartz)[2]가 만들었다. 온갖 태그로 범벅된 HTML 문서 등과 달리, 읽기도 쓰기도 쉬운 문서 양식을 지향한다. 그루버는 마크다운으로 작성한 문서를 HTML로 변환하는 Perl 스크립트도 만들었다.[3] 흔히 볼 수 있는 문서(파일명)은 "README.md", 파일의 확장자는 .md 또는 .markdown을 쓴다.[4]

2. 문법

여기서 언급하는 '위키문법'은 나무마크가 기준입니다.

2.1. 문단 제목

위키 문법의 == 개요 ==에 대응하는 문법이다. 6단계까지 할 수 있다.
#!syntax markdown
# 1단계 제목
## 2단계 제목

또는 다음과 같이 쓸 수도 있다.
#!syntax markdown
1단계 제목
=======
2단계 제목
------

2.2. 문단

줄바꿈을 두 번 하면 된다.
#!syntax markdown
첫째 문단입니다. 문장이 두개죠.

둘째 문단입니다. 저도
문장이 두 개입니다.

마크다운은 기본적으로 강제개행을 인식하지 않기 때문에, 두 번째 예시를 html 등으로 변환할 경우 줄바꿈이 없는 "둘째 문단입니다. 저도 문장이 두개입니다."로 변환된다. 강제개행을 인식하게 하려면 줄 끝에 공백을 두 칸 넣거나(가독성 문제로 권장되지 않음), 아니면 줄 끝에 역슬래시(\\)를 넣어도 된다.

2.3. 목록

위키 문법과 같으나 첫번째 칸을 띄어쓰지 않아도 된다.
#!syntax markdown
* 목록 하나
* 목록 두울
* 목록 세엣
- 이렇게 써도
- 된답니다.

순서가 있는 목록은 다음과 같이 쓴다. 숫자는 반드시 맞춰 쓸 필요는 없다. 어차피 마크다운 기본문법에서는 각 행이 HTML의 <li> 태그로 변환되는 것일 뿐이라 번호 정보가 사라지기 때문.
#!syntax markdown
1. 첫째입니다.
2. 둘째입니다.
3. 셋째입니다.
5. 넷째입니다. 다섯째 아닙니다.
6. 이게 다섯째입니다.
4. 이건 여섯째.

2.4. 글자모양

굵은 글자는 다음과 같이 쓴다. 위키 문법 '''굵게'''에 대응하는 문법이다.
#!syntax markdown
**굵게** 쓰거나 __두껍게__ 쓰거나

결과: 굵게 쓰거나 두껍게 쓰거나

기울임꼴 글자는 다음과 같이 쓴다. 위키 문법 ''기울게''에 대응하는 문법이다.
#!syntax markdown
*기울게* 쓰면서 _기울게_ 쓴다

결과: 기울게 쓰면서 기울게 쓴다

2.5. 코드

(특히 프로그래밍 관련 문서에서) 코드를 입력할 필요가 있을 땐 다음과 같이 쓴다. 고정폭 글꼴로 출력되며 위키 문법 {{{ code }}}에 대응하는 문법이다.

문장 중간에 표시할 땐 다음과 같이 쓴다.[5]
#!syntax markdown
예를들어`import antigravity`이렇게요.

여러 줄의 코드는 다음과 같이 줄 첫부분을 공백 4칸이상 띄어서 쓴다.[6]
#!syntax markdown
다음은 Clojure의 예시 코드다.
clojure
    #!/usr/bin/env clojure
    (println "Hello, World!")

2.6. 인용문

줄 첫 번째마다 >를 쓰면 된다. 위키 문법에도 동일하게 쓴다.
#!syntax markdown
>> 빛이 있으라.
> 하니 빛이 있었다.

결과:
빛이 있으라.
하니 빛이 있었다.

2.7. 링크

링크는 다음과 같이 쓴다. 위키 문법에 대응하는 문법이다.
#!syntax markdown
[나무위키](https://namu.wiki/w/나무위키:대문)

또는 다음과 같이 써서 주석형태로 링크를 쓸 수 있다.
#!syntax markdown
출처는 [위키백과][wiki]입니다.

[wiki]: http://en.wikipedia.org/wiki/Markdown#Syntax_examples "위키백과 Markdown 항목"

2.8. 그림 넣기

그림을 넣을 땐 다음과 같이 쓴다.
#!syntax markdown
![세피로트](https://cdn.namu.wiki/r/http%3A%2F%2Fi.imgur.com%2F2megHz2.png "툴팁 메시지. 이 부분은 생략해도 됩니다.")

또는 다음과 같이 써서 주석형태로 그림을 넣을 수 있다.
#!syntax markdown
![세피로트][SD]

[SD]: https://cdn.namu.wiki/r/http%3A%2F%2Fi.imgur.com%2F2megHz2.png "툴팁 메시지. 이 부분은 생략해도 됩니다."
"세피로트" 부분은 HTML img태그의 alt속성에, "툴팁 메시지" 부분은 title속성에 해당한다.

2.9. 가로줄

가로줄을 넣는 문법은 여러가지가 있다. 위키 문법의 ---- 에 대응하는 문법이다.
#!syntax markdown
* * *
***
*****
- - -
------------

3. 마크다운을 사용하는 곳

4. 마크다운 변형판

4.1. Github-Flavored Markdown

Github-Flavored Markdown
GitHub, 디스코드에서 쓰이며 다음과 같은 차이점이 있다.
  • 취소선을 쓸 수 있다.[9] (~~취소선~~)
  • 표를 만들 수 있다.
  • do_this_and_do_that과 같은 형태의 단어를 기울임꼴 글자로 처리하지 않는다.
  • URL을 자동으로 링크로 변환해준다.
  • 코드를 입력할 때 ``` 로 감싸주는 문법이 추가되었다.
  • 여러 줄의 코드는 다음과 같이 쓴다.[10]
    {{{#!syntax markdown
```Python
print('hello world')
```
}}}
  • 문법 강조가 적용이 된다. Linguist를 이용하여 처리한다.
  • 작업 목록(Task lists) 문법이 추가되었다.
  • Git관련 링크를 자동으로 처리해준다. (SHA, 사용자, 이슈 등)

4.2. MultiMarkdown

MultiMarkdown
기존 마크다운에 없는 기능(주석, 표 등)이 추가되어있다.

4.3. Haroopad Flavored Markdown

하루패드에서 쓰이며 다음과 같은 차이점이 있다.
  • 강조 문법이 추가되었다. 사용 방법은 == 강조 == 처럼 쓰면 된다. 어디서 본 것 같은데
  • 목차 기능이 추가되었다. 사용 방법은 [TOC]처럼 쓰면 된다.
  • @[](http://www.youtube.com/watch?v=jo_B4LTHi3I) 처럼 유튜브 영상 등을 추가할 수 있다.
  • 다이어그램 기능이 추가되었다.

5. 관련 문서



[1] 유명한 애플 관련 블로거 아마 제일 유명한 애플빠Daring Fireball의 운영자다.[2] 레딧의 공동설립자이자 RSS를 고안하고 정보자유를 중점적으로 주장한 인터넷 활동가이자 프로그래머. 게릴라 오픈 액세스 매니페스토 선언에서 천명한 것처럼 재판기록 같은 각종 공공정보를 무료로 대중에게 공개해야한다는 신념으로 활동하던 중 유료 저널 검색엔진 및 저장소인 JSTOR의 논문들을 다운받아 공개하려한 건으로 FBI 수사로 기소되어 재판과정 중에 자살로 생을 마감했다.[3] 다만 요즘에는 범용성이 높은 pandoc을 더 많이 쓰는 듯.[4] 대표 사례로 깃허브의 README.md가 있다. 확장자로서는 .md가 .markdown보다 압도적으로 많이 쓰인다.[5] 파이썬이스터 에그 중 하나. 웹 브라우저xkcd의 만화 PYTHON을 띄운다.[6] 첫줄의 설명 "다음은 ... 코드다."는 물론 마크다운 문법상 필요하지 않다. 다만 위키 문법의 한계인지 첫줄 들여쓰기가 제대로 표시되지 않아, 들여쓰기 없는 한 줄이 부득이 예시에 추가되었다.[7] 설치형 블로그에서 지원하는 경향이 있다.[8] 협업 스타일의 노트, 일정 앱에서 활용된다.[9] 쉽게 간과되는 사실인데, 취소선 기능은 순수 마크다운 문법이 아니다.[10] 파이썬의 간단한 코드