codingstairs
노트에듀라이프연락
⌕검색⌘K
koen

Navigation

  • Intro
  • Blog
  • Life

연락하기

로그인 없이도 보낼 수 있어요. 답변이 필요하면 이메일을 함께 적어 주세요.

  • 익명 폼으로 의견 남기기 →
  • ✉ warragon112@gmail.com
  • 카카오톡 오픈채팅 ↗

© 2026 codingstairs

  • 노트
  • 에듀
  • 검색
  • 라이프
  • 연락
  • 약관
  • RSS
  • GitHub
노트›environment

Markdown

2026-04-28 게시· 2026-05-18 갱신·0회 조회

Markdown

Markdown 은 평문 (plain text) 으로 쓰면서도 구조화된 문서를 표현할 수 있게 해 주는 가벼운 마크업 언어입니다. 개발 문서·README·이슈·블로그·메모에 광범위하게 쓰입니다.

1. Markdown 에 대한 이야기

Markdown 은 2004 년 John Gruber 가 Aaron Swartz 와 함께 설계해 발표했습니다. 목표는 두 가지:

  1. 평문으로 읽었을 때 자연스러워야 한다.
  2. HTML 로 매끄럽게 변환되어야 한다.

원래의 명세는 비교적 짧고 모호한 부분이 있었습니다. 같은 문법이 구현체마다 다르게 해석되는 일이 잦아지자, 2014 년에 CommonMark 가 표준화 작업으로 등장. 그 위에 GitHub 가 표·태스크리스트·자동링크 같은 확장을 더한 GFM (GitHub Flavored Markdown) 을 정의해 사실상의 사용자 표준이 됐습니다.

2. CommonMark 와 GFM

항목 CommonMark GFM
기본 문법 (헤더 · 강조 · 목록 · 링크) 정의 상속
표 (table) 없음 있음
태스크리스트 (- [ ]) 없음 있음
스트라이크스루 (~~text~~) 없음 있음
자동 URL 링크 약함 강함
코드블록 언어 표기 있음 있음

GitHub · GitLab · Bitbucket 같은 호스팅이 GFM 을 렌더링하므로 README 는 보통 GFM 을 가정해 작성됩니다.

3. 헤더 · 강조 · 목록

# H1
## H2
### H3
*italic* 또는 _italic_
**bold** 또는 __bold__
~~strikethrough~~  (GFM)
- 항목 A
- 항목 B
  - 중첩

1. 첫째
2. 둘째

4. 링크 · 인용 · 코드

[링크 텍스트](https://example.com)
![대체 텍스트](path/to/image.png)

> 인용문은 한 단계 들여 표시.

인라인 코드 — `code`. 블록:

```python
def hello():
    print("hello")
```

코드블록 첫 줄에 언어 이름을 적으면 GitHub · VS Code · 정적 사이트 생성기들이 신택스 하이라이팅 적용. 의도적으로 일반 텍스트를 표시할 때는 text 또는 비워 두는 관행.

5. 표 · 태스크리스트 (GFM)

| 항목 | 값 |
|---|---|
| 이름 | alice |
| 나이 | 30 |

콜론으로 정렬 — |:---| 왼쪽, |---:| 오른쪽, |:---:| 가운데.

- [x] 완료된 항목
- [ ] 미완 항목

6. 코드블록 언어 명시가 중요한 이유

  • 신택스 하이라이팅 — 가독성이 명확히 좋아짐.
  • GitHub 검색·렌더링 — 일부 도구가 언어 메타데이터로 코드만 인덱싱.
  • 변환 도구 친화 — pandoc · MDX 같은 변환기가 더 정확한 출력.
  • AI 도구 친화 — 코드 추출·분석 시 언어 정보가 정확도를 높임.

7. README 가 마크다운인 관행

README 는 Unix 시절부터 평문이었습니다. GitHub 가 2008 년 출시되면서 저장소 루트의 README.md 를 자동으로 HTML 로 렌더링해 보여 주기 시작했고, 이후 거의 모든 호스팅이 같은 관행을 따랐습니다. 현재 README 라는 이름은 관습일 뿐이지만 호스팅이 자동 렌더링하는 파일명 목록 (README.md · README.markdown · Readme.md) 에 들어 있어 그대로.

8. 한계와 보완

Markdown 은 의도적으로 단순합니다. 다음 영역은 지원이 약하거나 없음:

  • 정교한 스타일링 (폰트 · 색 · 간격).
  • 복잡한 레이아웃 (다단 · 사이드바).
  • 동적 컴포넌트.
  • 각주·참고문헌 (일부 확장에서만).
  • 메타데이터 (front matter 라는 관행).
도구 무엇을 더하는가
MDX Markdown 안에서 React/JSX 컴포넌트.
AsciiDoc 더 풍부한 문서 마크업. O'Reilly 출판.
reStructuredText Python 진영 (Sphinx) 의 표준. 더 엄격하고 확장성.
Pandoc 거의 모든 마크업 사이의 변환기.
Front matter (YAML · TOML) 파일 상단에 메타데이터 블록 (Jekyll · Hugo · Astro).
---
title: 문서 제목
date: 2026-04-25
tags: [markdown, docs]
---

# 본문 시작

9. 미리보기 도구

작업 macOS · Linux Windows
VS Code 미리보기 Cmd+K V Ctrl+K V
pandoc 변환 pandoc README.md -o README.html 동일
터미널 렌더링 glow README.md 또는 mdcat glow (Scoop · winget)

10. 자주 걸리는 자리

코드블록 들여쓰기 — 4 스페이스 들여쓰기도 코드블록을 만듭니다. 의도치 않게 목록 안 텍스트가 코드로 바뀌는 일.

인라인 백틱 안에 백틱이 있을 때 — 두 개의 백틱으로 감싸면 안쪽 단일 백틱을 살릴 수 있음.

줄바꿈 — 한 줄 띄우지 않고 그냥 엔터를 치면 같은 단락으로 이어집니다. 강제 줄바꿈은 두 칸 공백 + 엔터 또는 빈 줄.

HTML 태그가 그대로 통함 — 일부 렌더러는 보안상 일부 태그를 거름 (GitHub 의 <script> 차단).

표 안에서 | 를 텍스트로 쓰려면 \| 로 이스케이프.

헤더 위아래에 빈 줄이 없으면 일부 렌더러에서 헤더로 인식 안 됨.

하고픈 말

Markdown 은 가장 단순한 마크업이라 학습 비용이 거의 0 이지만, GFM 의 표·태스크·자동링크 + front matter + 코드블록 언어 명시 셋이 함께 있을 때 진가를 발휘합니다. 정교한 레이아웃이 필요한 자리는 MDX 또는 AsciiDoc 으로 한 단계 올라가는 길.

Next

  • text-encoding-line-endings
  • first-terminal-day

CommonMark Spec · GFM Spec · Daring Fireball Markdown · MDX · Pandoc 를 참고합니다.

environment 카테고리의 다른 글

카테고리 전체 보기 →
  • WSL2 — Windows 위의 Linux
  • 데이터 포맷 — JSON · YAML · TOML · XML
  • 터미널 첫날
  • 텍스트 인코딩과 줄바꿈
  • 크로스 플랫폼 스크립트
  • cmd.exe 와 배치 파일