기본 마크다운에는 수식 문법이 없지만, 요즘 마크다운 도구는 거의 모두 확장 기능으로 LaTeX 수식을 지원합니다. 달러 기호 사이에 TeX 표기법으로 수식을 쓰면 KaTeX나 MathJax 같은 수식 렌더러가 제대로 조판된 수식으로 바꿔 줍니다.
이 가이드에서는 GitHub, GitLab, Obsidian, Jupyter, Markdown Preview Editor에서 공통으로 통하는 문법을 설명하고, 가장 자주 쓰는 명령어를 정리합니다.
인라인 수식과 블록 수식
마크다운의 수식은 두 종류입니다.
- 인라인 수식은 문장 안에 들어갑니다. 달러 기호 하나로 감싸세요:
$E = mc^2$. - 블록 수식(디스플레이 수식)은 가운데 정렬된 별도의 줄에 표시됩니다. 달러 기호 두 개로 감싸며, 보통 따로 줄을 나눠 씁니다.
markdown유명한 공식 $E = mc^2$는 문장 안에 들어갑니다.
$$
x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
$$
블록 수식은 이렇게 렌더링됩니다.
필수 문법
| 항목 | 입력 | 참고 |
|---|---|---|
| 위 첨자 | x^2, e^{i\pi} |
두 글자 이상이면 중괄호 사용 |
| 아래 첨자 | a_1, x_{n+1} |
|
| 분수 | \frac{a}{b} |
인라인에서 큰 분수는 \dfrac |
| 제곱근 | \sqrt{x}, \sqrt[3]{x} |
|
| 합, 곱 | \sum_{i=1}^{n} i, \prod_{k} k |
|
| 적분 | \int_0^1 x\,dx |
\,는 좁은 공백을 넣음 |
| 극한 | \lim_{x \to 0} \frac{\sin x}{x} |
|
| 그리스 문자 | \alpha, \beta, \pi, \Omega |
첫 글자를 대문자로 쓰면 대문자 |
| 관계 기호 | \le, \ge, \ne, \approx, \equiv |
|
| 연산자 | \times, \cdot, \pm, \div |
|
| 집합 | \in, \subset, \cup, \cap, \mathbb{R} |
|
| 화살표 | \to, \Rightarrow, \leftrightarrow |
|
| 수식 안의 텍스트 | \text{if } x > 0 |
일반 띄어쓰기 유지 |
| 벡터, 악센트 | \vec{v}, \hat{x}, \bar{y} |
중괄호는 묶는 역할을 합니다. x^10은 x¹0으로, x^{10}은 x¹⁰으로 렌더링됩니다. 수식이 이상하게 보인다면 중괄호 누락이 가장 흔한 원인입니다.
크기가 늘어나는 괄호
일반 괄호는 크기가 그대로입니다. 높은 내용을 감싸려면 \left와 \right를 쓰세요.
latex\left( \frac{a}{b} \right)^2 \quad \text{vs} \quad (\frac{a}{b})^2
행렬
행렬은 환경(environment)을 사용합니다. pmatrix는 소괄호, bmatrix는 대괄호, vmatrix는 세로줄(행렬식)을 붙입니다. 열은 &로, 행은 \\로 구분합니다.
latex$$
A = \begin{pmatrix}
1 & 2 \\
3 & 4
\end{pmatrix}
$$
여러 줄 수식과 정렬
여러 단계를 등호 기준으로 맞추려면 블록 수식 안에서 aligned 환경을 쓰고, 정렬 지점을 &로 표시하세요.
latex$$
\begin{aligned}
(a + b)^2 &= (a + b)(a + b) \\
&= a^2 + 2ab + b^2
\end{aligned}
$$
조건에 따라 달라지는 함수(구간별 함수)에는 cases를 씁니다.
latex$$
|x| = \begin{cases}
x & \text{if } x \ge 0 \\
-x & \text{if } x < 0
\end{cases}
$$
수식이 아닌 달러 기호
본문의 가격이 실수로 수식이 되어 버릴 수 있습니다. 대부분의 렌더러는 Pandoc 규칙을 따릅니다. 여는 $ 바로 뒤에 공백이 오면 안 되고, 닫는 $ 바로 앞에 공백이 오거나 바로 뒤에 숫자가 오면 안 됩니다. 그래서 “$5에서 $10 사이” 같은 표현은 보통 일반 텍스트로 남습니다. 확실하지 않다면 달러 기호를 이스케이프하세요: \$5.
KaTeX와 MathJax 비교
둘 다 같은 LaTeX 문법을 렌더링하며, 차이는 주로 속도와 지원 범위입니다.
- KaTeX는 빠르고 동기적으로 렌더링되어 실시간 미리 보기에 이상적입니다. 문서, 메모, 논문에서 쓰는 명령어 대부분을 지원합니다.
- MathJax는 더 많은 LaTeX 패키지를 지원하고 GitHub와 많은 학술 사이트에서 쓰이지만, 더 무겁습니다.
Markdown Preview Editor는 KaTeX를 사용하며, 문서에 실제로 수식이 있을 때만 불러오므로 수식이 없는 문서는 가볍게 유지됩니다. KaTeX용으로 쓴 수식은 거의 항상 GitHub에서도 렌더링됩니다.
GitHub에서 수식 쓰기
GitHub는 마크다운 파일, 이슈, 풀 리퀘스트에서 수식을 렌더링합니다. $…$와 $$…$$를 지원하며, 까다로운 경우를 위한 두 가지 대안도 있습니다. 마크다운이 해석해 버릴 문자가 포함된 인라인 수식에는 $`…`$를, 블록 수식에는 언어를 math로 지정한 코드 블록을 쓰면 됩니다.
수식을 더 빨리 쓰는 법
- Markdown Preview Editor의 고급 편집기 도구 모음에 있는 수식 버튼으로 수식 템플릿을 넣고, 미리 보기를 옆에 두고 수정하세요.
- 행렬, 정렬된 블록, cases처럼 자주 쓰는 수식을 모아 둔 스니펫 파일을 만들어 두세요.
- 알고리즘을 설명할 때는 수식과 Mermaid 다이어그램을 함께 쓰세요. 단계는 순서도로, 각 단계는 수식으로 보여 줄 수 있습니다.
- 문서가 완성되면 HTML이나 PDF로 내보내세요. 내보낸 파일에도 수식이 그대로 유지됩니다.
마크다운 자체가 처음이라면 마크다운 문법 총정리부터 시작하세요.
자주 묻는 질문
마크다운에서 수식은 어떻게 쓰나요?
인라인 수식은 LaTeX 수식을 달러 기호 하나로($a^2 + b^2 = c^2$), 가운데 정렬된 블록 수식은 달러 기호 두 개로 감싸세요. 사용하는 마크다운 도구가 수식을 지원해야 하며, GitHub, GitLab, Obsidian, Jupyter, Markdown Preview Editor는 모두 지원합니다.
수식이 일반 텍스트로 보이는 이유는 무엇인가요?
흔한 원인은 이렇습니다. 도구가 수식을 지원하지 않거나, 여는 $ 바로 뒤나 닫는 $ 바로 앞에 공백이 있거나, 수식 안의 _나 * 같은 마크다운 문자가 서식으로 해석된 경우입니다. $$를 별도의 줄에 쓰는 블록 수식으로 바꿔 보세요.
마크다운에서 행렬은 어떻게 쓰나요?
$$ 안에 \begin{pmatrix} … \end{pmatrix}(또는 bmatrix, vmatrix)를 쓰세요. 열은 &로, 행은 \\로 구분합니다.
KaTeX는 모든 LaTeX 명령어를 지원하나요?
KaTeX는 실제로 쓰이는 수식 명령어 대부분을 지원하지만, 모든 LaTeX 패키지를 지원하지는 않습니다. \section이나 \usepackage 같은 문서 레이아웃 명령어는 마크다운 수식과 아예 관련이 없습니다.