Markdown은 가벼운 마크업 언어로, 사람이 읽고 쓰기 쉬운 순수 텍스트 형식으로 문서를 작성할 수 있게 해주며, 이를 유효한 XHTML(또는 HTML)로 변환할 수 있습니다.
핵심 설계 철학은 "가독성 우선"입니다. 렌더링 없이도 순수 텍스트 자체가 명확하고 읽기 쉬워야 합니다.
아래는 Markdown의 전체 문법 설명과 사용 예시입니다.
1. 제목 (Headings)
# 기호의 개수로 제목 수준을 표시하며, 총 6단계까지 지원합니다.
| 문법 | 효과 | 설명 |
|---|---|---|
# 1급 제목 |
주로 문서 주제에 사용 | |
## 2급 제목 |
장 제목 | |
### 3급 제목 |
소장 제목 | |
| ... | ... | 최대 ######까지 지원 |
예시:
# 프로젝트 계획서
## 1. 배경 소개
### 1.1 시장 환경
2. 텍스트 스타일 (Text Styling)
텍스트 내용을 강조하는 데 사용합니다.
| 효과 | 문법 | 예시 코드 |
|---|---|---|
| 굵은 글씨 | **문자** 또는 __문자__ |
**중요** |
| 기울임꼴 | *문자* 또는 _문자_ |
*주의* |
| 굵은 기울임꼴 | ***문자*** |
***매우 중요*** |
~~문자~~ |
~~오래된 정보~~ |
|
<u>문자</u> |
<u>강조</u> (HTML 태그) |
|
인라인 코드 |
`문자` |
`print("Hello")` |
| 강조 표시 | ==문자== |
==강조 표시== (일부 편집기 지원) |
3. 목록 (Lists)
비순서형 목록
-, +, 또는 *와 공백을 사용합니다.
- 사과
- 바나나
- 미니 바나나 (들여쓰기 2칸 또는 1개 탭으로 중첩)
- 왕바나나
+ 오렌지
효과:
- 사과
- 바나나
- 미니 바나나
- 왕바나나
- 오렌지
순서형 목록
숫자와 점 1.과 공백을 사용합니다. Markdown은 자동으로 정렬하므로 수동으로 숫자를 수정할 필요가 없습니다.
1. 첫 번째: 컴퓨터 켜기
2. 두 번째: 코드 작성
3. 세 번째: 테스트 제출
1. 하위 단계 A
2. 하위 단계 B
효과:
- 첫 번째: 컴퓨터 켜기
- 두 번째: 코드 작성
- 세 번째: 테스트 제출
- 하위 단계 A
- 하위 단계 B
작업 목록 (Task Lists)
할 일 목록에 자주 사용되며, GitHub/GitLab/Obsidian에서 완벽하게 지원됩니다.
- [x] 완료된 작업
- [ ] 대기 중인 작업 1
- [ ] 대기 중인 작업 2
효과:
4. 링크와 이미지 (Links & Images)
문법은 매우 유사하며, 이미지는 느낌표 !가 추가됩니다.
링크
[표시 텍스트](링크 주소 "선택적 제목")
[구글 방문](https://www.google.com)
[팁이 있는 링크](https://github.com "GitHub 홈페이지")
효과:
구글 방문
이미지

*대체 텍스트는 이미지가 로드되지 않을 때 표시되며, SEO에도 도움이 됩니다.*

이미지/링크 참조 단축 방식
동일한 링크를 여러 번 참조해야 할 경우 정의식을 사용할 수 있습니다:
이것은 링크 [구글][1]과 다른 [구글][1]입니다.
[1]: https://www.google.com "구글 검색"
5. 인용 블록 (Blockquotes)
타인의 말을 인용하거나 특정 내용을 강조할 때 사용합니다. > 기호를 사용합니다.
> 이것은 인용 텍스트입니다.
>
> > 이것은 중첩된 인용입니다.
>
> 인용 내에서 **굵은 글씨**와 [링크](#)를 사용할 수 있습니다.
효과:
이것은 인용 텍스트입니다.
이것은 중첩된 인용입니다.
인용 내에서 굵은 글씨와 링크를 사용할 수 있습니다.
6. 코드 블록 (Code Blocks)
프로그래머가 가장 자주 사용하는 기능입니다. 세 개의 백틱 ```으로 감싸고, 언어를 지정하여 구문 강조를 활성화할 수 있습니다.
인라인 코드
단일 백틱 사용: `console.log('hi')` → console.log('hi')
다중 코드 블록
def hello():
print("Hello, World!")
return True
const sum = (a, b) => a + b;
console.log(sum(1, 2));
git add .
git commit -m "update"
효과:
def hello():
print("Hello, World!")
return True
7. 테이블 (Tables)
표준 Markdown은 테이블을 기본적으로 지원하지 않지만, 확장 문법(GFM - GitHub Flavored Markdown)은 널리 지원됩니다.
문법:
|로 열을 구분합니다.---로 표 머리글과 내용을 구분합니다.:---왼쪽 정렬,:---:중앙 정렬,---:오른쪽 정렬
| 이름 | 나이 | 도시 | 기술 |
| :--- | :---: | ---: | :--- |
| 장삼 | 25 | 베이징 | Python, Java |
| 리사 | 30 | 상하이 | Go, Rust |
| 왕우 | 28 | 선전 | JavaScript |
효과:
| 이름 | 나이 | 도시 | 기술 |
|---|---|---|---|
| 장삼 | 25 | 베이징 | Python, Java |
| 리사 | 30 | 상하이 | Go, Rust |
| 왕우 | 28 | 선전 | JavaScript |
8. 수평선 (Horizontal Rules)
세 개 이상의 -, *, 또는 _를 사용합니다.
---
***
___
효과:
(아래는 수평선)
-------------------
9. 고급 문법과 확장
각주 (Footnotes)
이것은 관점[^1]이며, 설명이 필요합니다.
[^1]: 여기는 각주의 상세 설명 내용으로, 보통 페이지 하단에 표시됩니다.
효과:
이것은 관점[1]이며, 설명이 필요합니다.
수학 공식 (LaTeX)
많은 편집기(Typora, Obsidian, Jupyter 등)에서 LaTeX 공식을 지원합니다.
- 인라인 공식:
$E=mc^2$ - 블록 공식:
``` $$ \sum_{i=1}^{n} i = \frac{n(n+1)}{2} $$ ```
효과:
$E=mc^2$
$$ \sum_{i=1}^{n} i = \frac{n(n+1)}{2} $$
다이어그램 (Diagrams)
이전에 논의했듯이, 코드 블록에서 mermaid를 지정하면 흐름도, 순서도 등을 렌더링할 수 있습니다.
graph TD
A --> B
HTML 태그
Markdown은 HTML과 호환됩니다. Markdown 문법이 요구 사항을 충족시키지 못할 경우(예: 글꼴 색상, 크기 조정), 직접 HTML을 작성할 수 있습니다.
<font color="red">빨간색 글씨</font>
<br> 줄 바꿈
<details>
<summary>클릭하여 자세히 보기</summary>
여기는 숨겨진 내용입니다.
</details>
효과:
빨간색 글씨줄 바꿈
클릭하여 자세히 보기
여기는 숨겨진 내용입니다.10. 이스케이프 문자 (Escape Characters)
Markdown의 특수 기호 자체를 표시하고 싶을 때(예: 기울임꼴 대신 * 표시), 역슬래시 \를 앞에 추가해야 합니다.
\*이것은 기울임꼴이 아님\*
\# 이것은 제목이 아님
\` 이것은 코드 표시가 아님 \`
효과:
\*이것은 기울임꼴이 아님\*
\# 이것은 제목이 아님
11. 최고의 실천 방법과 권장 사항
- 단락 간격: 단락 사이에 빈 줄을 하나 남겨두지 않으면 병합될 수 있습니다.
- 줄 바꿈:
- 방법 1: 행 끝에 두 개의 공백을 추가한 후 엔터 키를 누릅니다.
- 방법 2: 직접 빈 줄을 추가합니다(새 단락 시작).
- 방법 3:
<br>태그를 사용합니다.
- 호환성: 대부분의 플랫폼은 GFM(GitHub 스타일)을 지원하지만, "강조"(
==), "각주" 등의 문법은 일부 간단한 리더에서 작동하지 않을 수 있습니다. 중요한 문서는 미리 미리보기를 확인하는 것이 좋습니다. - 도구 추천:
- 편집기: VS Code (Markdown All in One 플러그인 설치), Typora (즉시 보이는 대로), Obsidian (지식 베이스 관리)
- 온라인 미리보기: StackEdit, Dillinger
요약 참고 표
| 요소 | 문법 예시 |
|---|---|
| 제목 | # H1, ## H2 |
| 굵은 글씨 | **text** |
| 기울임꼴 | *text* |
| 링크 | [title](url) |
| 이미지 |  |
| 목록 | - item 또는 1. item |
| 인용 | > text |
| 코드 | `code` 또는 ```lang |
| 테이블 | | col | |
| 수평선 | --- |
이러한 문법을 마스터하면, 구조가 명확하고 레이아웃이 아름다운 기술 문서, 메모, 심지어 블로그 게시물까지 쉽게 작성할 수 있습니다.