개발자라면 GitHub와 Notion 같은 서비스를 자주 사용하게 되는데, 이들 플랫폼에서는 마크다운(Markdown)이 필수적으로 사용된다.
그래서 이번 글에서는 마크다운의 개념과 기본 사용법을 정리하려고 한다.
단, 뷰어에 따라 일부 기능이 다르게 동작할 수 있다.
예를 들어, GitHub, VS Code, Typora에서는 테이블 정렬이 적용되지만, 일부 마크다운 뷰어에서는 지원되지 않을 수도 있다.
이번 글에서는 마크다운의 기본 문법부터 실제 사용 예제까지 살펴보겠다.
마크다운(Markdown)이란?
경량 마크업 언어로, 간단한 문법을 사용해 텍스트를 구조화할 수 있는 문서 형식이다. HTML보다 가독성이 좋고, 코드 작성이 간편해 개발자들 사이에서 널리 사용된다. 주로 README 파일, 기술 문서, 블로그 포스트, 노트 정리 등에 활용된다.
마크다운 종류와 사용 예시
1. 제목(Header)
제목을 만들 때 # 기호를 사용하면 된다. #의 개수에 따라 제목의 크기가 달라진다.
# 제목 1
## 제목 2
### 제목 3
2. 목록(List)
① 순서 없는 목록
- - 또는 *을 사용하며, 순서 있는 목록은 숫자로 만든다.
- 들여쓰기를 하면 모양이 바뀐다.
* 하늘
* 땅
* 바다
+ 하늘
+ 땅
+ 바다
* 우주
- 하늘
- 땅
- 바다
② 순서 있는 목록
- 숫자를 기입하면 순서 있는 목록이 된다.
- 순서대로 알아서 숫자를 매긴다.
1. 첫 번째
2. 두 번째
3. 세 번째
③ 혼합 리스트
(1) 숫자 혼합 사용
1. 리스트 1번
1. 리스트 1-1번
2. 리스트 2번
3. 리스트 3번
1. 리스트 3-1번
2. 리스트 3-2번
(2) 순서 있는 리스트와 순서 없는 리스트를 조합
1. 하늘
* 구름
* 태양
+ 햇빛
2. 우주
- 별
- 행성
1. 달
3. 코드 블록(Code Block)
백틱(```) 세 개를 사용해 코드 블록을 만들 수 있다.
```python
print("Hello, Markdown!")
4. 강조(Emphasis)
- 굵게 표시하기: **텍스트**
- 기울임: *텍스트* 또는 _텍스트_
- 취소선: ~~
**굵은 글씨**
*기울어진 글씨*
~~취소선~~
***굵고 기울어진 글씨***
**~~굵은 취소선~~**
*~~기울어진 취소선~~*
5. 링크(Link)
링크는 [텍스트](URL) 형식으로 작성한다.
[Google 바로가기](https://www.google.com)
6. 이미지(Image)
이미지는  형식으로 작성한다.

7. 인용문(Blockquote)
> 기호를 사용해 인용문을 작성할 수 있다.
> 이것은 인용 문장이다.
>> 중첩된 인용도 가능하다.
>>> 세 번째 단계의 인용
8. 테이블(table)
- | 기호를 사용해 표를 만들 수 있으며, 헤더와 셀을 구분할 때 -(hyphen/dash) 기호를 3개 이상 사용해야 한다.
- :(colons) 기호를 사용하여 열 정렬을 조정할 수 있다.
- 가장 좌측과 우측 |(vertical bar) 기호는 생략 가능하다.
① 정렬 미적용
이름 | 나이 | 직업
------ | ---- | ------------
유재석 | 25 | 개발자
강호동 | 45 | 기획자
이효리 | 30 | 디자이너
② 정렬 적용
- :------ → 왼쪽 정렬
- :---: → 가운데 정렬
- ------: → 오른쪽 정렬
이름 | 나이 | 직업
:------ | :---: | ------:
유재석 | 25 | 개발자
강호동 | 45 | 기획자
이효리 | 30 | 디자이너
9. 수평선
- , *, _을 3개이상 작성한다.
단, -을 사용하는 경우 Header로 인식할 수 있으니 이전 라인은 비워두어야 한다.
---
이것은 수평선 위의 텍스트입니다.
---
***
이것은 별표를 사용한 수평선입니다.
***
___
이것은 밑줄을 사용한 수평선입니다.
___
10. 줄바꿈
<br>를 활용해서 줄바꿈을 할 수 있다.
엔터로 칸을 띄면 다음 행으로 넘어가게 된다.
안녕하세요 <br>
만나서 반가워요
11. Backslash Escapes
특수문자를 일반 문자로 표시하려면 앞에 \를 붙여 이스케이프 처리한다.
하지만, 일부 특수문자는 \\를 사용해야 정상적으로 표시되는 경우도 있다.
* 특수문자 출력안됨
- 특수문자 출력안됨
\* 특수문자 출력
\- 특수문자 출력
\*literal asterisks\*
\#hash mark\#
\[squre brackets\]