리프 Markdown Guide
리프 Markdown Guide

변형 마크다운 문법

존 그루버의 원본 마크다운에는 없지만, 각 플랫폼과 도구가 추가한 확장 문법들. 표준과 헷갈리지 않도록 별도로 정리했다.

이 페이지의 모든 문법은 "비표준"입니다. 원본 마크다운(Gruber 스펙)에는 존재하지 않으며, 특정 플랫폼에서만 작동합니다. 표준 문법은 표준 마크다운 가이드를 참고하세요.

GFM (GitHub Flavored Markdown)

GitHub가 CommonMark 위에 올린 확장. 2017년 공식 명세 발표. 사실상 개발자 세계의 표준이 되었지만, 엄밀히는 비표준 확장이다.

GFM이 추가한 문법 (표준 마크다운에 없는 것):

  • 표 (Tables) — | a | b | 형식
  • 취소선 — ~~텍스트~~
  • 작업 목록 — - [x] / - [ ]
  • 자동 링크 — URL을 그냥 쓰면 자동으로 링크
  • 멘션 / 이슈 참조 — @user, #123
표, 취소선, 작업 목록은 이미 표준 가이드의 확장 섹션에서 다뤘다. 여기서는 GFM 고유의 추가 기능을 다룬다.

멘션 및 이슈 참조

GitHub 내에서만 작동하는 단축 참조 문법.

@username          → 사용자 프로필 링크
#123               → 이슈/PR #123 링크
owner/repo#456     → 다른 저장소의 이슈 참조
SHA (7자 이상)      → 커밋 링크
GitHub 전용

수식 (LaTeX Math)

원본 마크다운에는 전혀 없는 기능. MathJax 또는 KaTeX 라이브러리가 렌더링한다.

인라인: $E = mc^2$

블록:
$$
\sum_{i=1}^{n} x_i = x_1 + x_2 + \cdots + x_n
$$

행렬:
$$
A = \begin{pmatrix}
a_{11} & a_{12} \\
a_{21} & a_{22}
\end{pmatrix}
$$
플랫폼인라인 $...$블록 $$...$$렌더러
GitHubOOMathJax
ObsidianOOMathJax
NotionOOKaTeX
JupyterOOMathJax
VS CodeO (확장)O (확장)KaTeX
일반 파서XX-

다이어그램 (Mermaid)

코드 블록에 mermaid 언어를 지정하면 다이어그램으로 렌더링. 2021년부터 GitHub에서 네이티브 지원.

```mermaid
graph LR
    A[마크다운] --> B[HTML 변환]
    B --> C[브라우저 렌더링]
```

지원 차트: flowchart, sequence, class, state, ER, gantt, pie, gitGraph, mindmap, timeline 등.

GitHub GitLab Obsidian Notion (임베드)

각주 (Footnotes)

본문에서 각주를 달 수 있다[^1]. 여러 개도 가능[^note].

[^1]: 첫 번째 각주 내용.
[^note]: 숫자 대신 이름도 된다.
GitHub Obsidian Jekyll CommonMark 표준 X

TOC 자동 생성

마크다운 자체에는 목차 문법이 없다. 플랫폼마다 다른 방식을 쓴다.

플랫폼문법비고
GitLab[[_TOC_]]문서 최상단에 삽입
Obsidian[[toc]] 또는 플러그인커뮤니티 플러그인 다수
Typora[TOC]자동 목차 생성
VS Code확장 프로그램Markdown All in One 등
GitHub미지원수동으로 링크 작성 필요

프론트매터 (Front Matter)

마크다운 파일 맨 위에 YAML/TOML/JSON으로 메타데이터를 넣는 방식. 마크다운 "문법"은 아니지만, 사실상 필수 패턴이 되었다.

YAML (가장 흔함)
---
title: "글 제목"
date: 2026-04-02
tags: [markdown, tutorial]
draft: false
---
TOML (Hugo 등)
+++
title = "글 제목"
date = 2026-04-02
tags = ["markdown", "tutorial"]
draft = false
+++
Jekyll Hugo Next.js Obsidian GitHub 렌더링 X

접기/콜랩스 (Collapsible)

HTML <details> 태그를 활용. 마크다운 문법은 아니지만 대부분의 렌더러가 허용한다.

<details>
<summary>클릭하면 펼쳐집니다</summary>

숨겨진 내용. **마크다운도 됩니다.**

- 목록도 되고
- `코드`도 된다

</details>
주의: <summary> 뒤에, 그리고 숨긴 내용 앞뒤에 빈 줄을 넣어야 마크다운이 정상 렌더링된다.

Admonition / Callout 블록

경고, 팁, 정보 등을 시각적으로 구분하는 블록. 플랫폼마다 문법이 다르다.

GitHub (2022~)
> [!NOTE]
> 참고 사항입니다.

> [!WARNING]
> 주의가 필요합니다.

> [!TIP]
> 유용한 팁입니다.
Obsidian Callout
> [!info] 제목
> 정보 내용

> [!warning] 경고
> 경고 내용

> [!tip]- 접을 수 있는 팁
> 접힌 내용
문법GitHubObsidianMkDocsDocusaurus
> [!NOTE]OOXX
::: noteXXOO
> [!info] 제목일부OXX

형광펜 / 하이라이트

등호 두 개로 감싸는 문법. 원본 마크다운에 전혀 없다.

==이 텍스트가 형광펜 처리됩니다==
Obsidian Typora GitHub X Notion X

GitHub에서는 HTML로 대체해야 한다: <mark>형광펜</mark>

속성 / 클래스 지정

요소에 CSS 클래스나 ID를 붙이는 문법. Pandoc, Kramdown 등에서 지원.

# 제목 {#custom-id .my-class}

이 단락에 스타일을 적용
{: .highlight .important}

![이미지](img.png){width=300}
Pandoc Kramdown (Jekyll) GitHub X Obsidian X

HTML / CSS 직접 삽입

마크다운은 HTML 블록을 "허용"한다. 정확히 말하면 변형 문법이 아니라 원본 스펙의 기능이지만, 실무에서 확장 용도로 많이 쓰인다.

<!-- 가운데 정렬 -->
<div align="center">

![로고](logo.png)

**프로젝트 이름**

</div>

<!-- 색상 텍스트 (GitHub 지원) -->
<span style="color:red">빨간 글씨</span>  ← GitHub에서 무시됨!

<!-- GitHub에서 색상 쓰는 꼼수 -->
```diff
+ 추가된 줄 (초록)
- 삭제된 줄 (빨강)
! 경고 (주황)
```
GitHub는 style 속성을 제거한다. 인라인 CSS, <style> 태그, <script> 태그 모두 무시된다. align, width 같은 HTML 속성은 허용.

Obsidian 전용 문법

문법설명예시
[[페이지명]]내부 링크 (위키 스타일)[[마크다운 가이드]]
![[파일명]]파일 임베드 (이미지, PDF, 노트)![[diagram.png]]
[[페이지#헤딩]]특정 헤딩으로 링크[[가이드#설치]]
[[페이지|표시텍스트]]별칭 링크[[README|소개]]
#태그인라인 태그#todo #urgent
%%주석%%렌더링에서 숨겨지는 주석%%이건 안 보임%%
==형광펜==하이라이트==중요==
> [!tip]Callout 블록접기 가능 (- 추가)

Notion 고유 패턴

Notion은 마크다운을 "입력 단축키"로 쓰지만, 내부적으로는 자체 블록 구조를 사용한다.

입력결과비고
/todo체크박스 블록슬래시 커맨드
/toggle접이식 블록마크다운 아님
/callout콜아웃 박스아이콘 선택 가능
@사용자멘션Notion 내부 사용자
[[페이지명페이지 링크인라인 데이터베이스 연결
/math수식 블록KaTeX 렌더링
/mermaid다이어그램코드 블록 임베드
Notion에서 마크다운을 붙여넣기하면 자동 변환되지만, 내보내기한 마크다운은 Notion 고유 포맷이 섞여 있어 다른 도구에서 깨질 수 있다.

Jupyter Notebook

Jupyter의 마크다운 셀은 표준 마크다운 + MathJax + HTML을 모두 지원한다.

# Jupyter 마크다운 셀에서 가능한 것들

일반 마크다운 + **HTML 태그** + $LaTeX$ 수식

<div style="background:#f0f0f0;padding:1rem">
  스타일도 된다 (Jupyter는 style 속성 허용)
</div>

$$\frac{\partial f}{\partial x} = 2x$$
Jupyter는 GitHub와 달리 <style> 태그와 인라인 CSS를 모두 허용한다. 셀 내에서 자유롭게 꾸밀 수 있다.

플랫폼별 호환성 종합표

기능GitHubGitLabObsidianNotionJupyterVS Code
표 (Tables)OOOOOO
취소선OOOOOO
작업 목록OOOOXO
수식 (LaTeX)OOOOO확장
MermaidOOO임베드X확장
각주OOOXX확장
Callout/AdmonitionOXOOXX
형광펜 ==XXOXXX
위키링크 [[]]XXOOXX
프론트매터표시만표시만OXXO
HTML 인라인 CSS제거됨일부OXOO
속성 {.class}XXXXXX

O = 지원, X = 미지원, 확장 = 플러그인/확장 설치 필요, 일부 = 부분 지원