02
마크다운 문법
GFM은 그대로 돌아갑니다. 그 위에 몇 개를 얹었고, 몇 개는 뺐습니다.
마크다운 설명서는 세상에 이미 넘칩니다.
그래서 여기서는 MilkMind가 남들과 다르게 구는 지점을 위주로 이야기해볼까 합니다.
(기본 문법도 빠짐없이 적어두긴 했습니다. 아는 부분은 건너뛰세요.)
화면은 하나뿐이다.
MilkMind에는 편집 화면과 미리보기 화면이 따로 없습니다. 한 화면입니다.
규칙은 딱 하나입니다.
커서가 있는 줄은 원본을, 커서가 떠난 줄은 결과를 보여줍니다.
# 제목을 입력하면 #이 사라지고 제목이 됩니다.
그 줄을 다시 클릭하면 #이 돌아오고요.
자동차 보닛과 비슷합니다. 달릴 땐 닫아두고, 고칠 땐 엽니다. 보닛을 열어둔 채로 달리는 사람은 없죠.
나머지는 전부 이 규칙에서 따라 나옵니다.
표와 코드 펜스는 블록 전체가 통째로 렌더링되고, 안을 클릭하면 원본으로 돌아옵니다.
글머리 기호(- · * · +)는 • 불릿으로 바뀌고요.
그런데 번호 목록(1.)의 숫자는 그대로 보입니다.
왜 숫자만 남겨뒀을까요?
번호는 그 자체가 정보라서 그렇습니다. 의도된 동작입니다.
기본 문법은 남들과 같다.
여기는 빠르게 지나가겠습니다.
제목
# 제목 1
## 제목 2
### 제목 3
#### 제목 4
##### 제목 5
###### 제목 6
Ctrl+1~Ctrl+6으로 바꾸고, Ctrl+0으로 본문으로 되돌립니다.
다만 밑줄식 제목(Setext)에는 스타일이 붙지 않습니다.
#을 쓰세요.
제목 ← 제목으로 보이지 않습니다
=====
강조
굵게는 **굵게** 또는 __굵게__, 단축키는 Ctrl+B입니다.
기울임은 *기울임* 또는 _기울임_, Ctrl+I고요.
취소선 ~~취소선~~과 인라인 코드 `코드`에는 단축키가 없습니다.
서식 메뉴를 쓰시거나 직접 입력하세요.
목록
- 글머리 기호
- 두 번째
- 중첩
1. 번호
2. 두 번째
Tab으로 한 단계 안으로, Shift+Tab으로 한 단계 밖으로 옮깁니다.
하위 항목이 통째로 따라옵니다. 하나씩 옮기지 않으셔도 됩니다.
들여쓰기 폭은 설정 ▸ 모양 ▸ 리스트 들여쓰기에서 2~8칸으로 조절합니다.
인용 · 코드 블록 · 구분선
> 인용문입니다.
```
코드 블록
```
---
코드 블록에는 문법 강조가 없습니다. 고정폭 글꼴과 배경만 입혀집니다.
(색은 안 나옵니다. 미리 알려드립니다.)
체크박스는 여섯 가지다.
- [ ]는 할 일이고, 빈 동그라미로 보입니다.
- [x]는 완료, 체크 표시가 들어가고요.
여기까지는 어디서나 되는 표준입니다.
여기에 네 개를 더 얹었습니다.
- [/]는 진행중, 동그라미가 반쯤 채워집니다.
- [-]는 취소, 가로줄이 그어집니다.
- [?]는 검토중, ?가 들어갑니다.
- [!]는 중요, !가 들어가고요.
체크박스가 안 되면 셋 중 하나다
목록 항목이어야 합니다.
- · * · + 중 하나로 줄을 시작하세요.
] 다음에 공백이 하나 필요합니다.
- [x]완료는 체크박스가 아닙니다. 이걸로 제일 많이 걸립니다.
확장 상태는 직접 입력해야 합니다. 메뉴도 없고 단축키도 없습니다. 손으로 치세요.
마우스로 누르면 확장 상태가 날아간다
이건 꼭 짚고 넘어가야 합니다.
체크박스를 마우스로 누르면 [x] ↔ [ ] 두 개만 오갑니다.
[/]를 눌러서 체크하면 [x]가 되고, 원래 상태는 지워집니다.
벽에 달린 전등 스위치와 비슷합니다. 조광기를 아무리 정교하게 달아놔도, 스위치는 올리거나 내리거나 둘뿐이죠.
[/]를 살려두고 싶으시면 키보드로 고치세요.
축하 효과
체크할 때마다 폭죽이 터집니다. 그리고 문서의 마지막 할 일을 끝내면 화면 전체에 불꽃놀이가 펼쳐집니다.
원형 파문과 화면 흔들림도 켤 수 있습니다.
→ 설정 ▸ 체크박스
불꽃놀이가 언제 터지는지가 헷갈릴 수 있는데, 기준은 간단합니다.
완료와 취소는 끝난 것으로 칩니다. 할 일·진행중·검토중·중요가 하나라도 남아 있으면 아직 나오지 않습니다.
(취소도 끝난 걸로 칩니다. 안 하기로 한 것도 결정이니까요.)
표는 헤더 행이 정한다.
| 이름 | 역할 | 분야 |
|---|:---:|---:|
| 에이다 | 엔지니어 | 컴파일러 |
| 앨런 | 연구자 | 계산이론 |
정렬은 구분선에 콜론을 찍어서 정합니다.
:---이 왼쪽, :---:이 가운데, ---:이 오른쪽이고요.
셀 안에서는 마크다운이 그대로 동작합니다. 굵게도, 코드도, 링크도, 이미지도 들어갑니다.
파이프를 글자로 쓰고 싶으시면 \|로 이스케이프하세요.
그리고 하나만 기억하세요.
열 개수는 헤더 행이 정합니다.
계란판 같은 겁니다. 칸이 세 개면 계란도 세 개만 들어갑니다. 본문 행에 셀이 더 많으면 잘려 나가고, 모자라면 빈칸으로 남습니다.
뼈대는 본문 ▸ 표 메뉴로 넣습니다.
데이터가 많은 표라면 아래 CSV 블록이 훨씬 편합니다.
링크는 Ctrl+클릭으로 연다.
[링크 텍스트](https://example.com)
Ctrl+K로 삽입하고, Ctrl+클릭으로 엽니다.
그냥 클릭하면 커서만 이동합니다.
불편해 보이시나요?
여기는 웹페이지가 아니라 편집기입니다. 글자를 고치려고 누르는 게 먼저고, 여는 건 그다음입니다.
링크는 종류별로 다르게 열린다
[구글](https://google.com)처럼 웹 주소를 걸면 브라우저에서 열립니다.
[다른 노트](other.md)는 MilkMind가 직접 엽니다.
.md · .markdown · .txt 세 확장자가 여기 해당합니다.
창 열기 방식이 “새 창”으로 되어 있으면 새 창으로 뜨고요.
[표](data.xlsx)처럼 그 외 파일은 OS 기본 프로그램으로 넘깁니다.
[아래로](#작업-목록)는 문서 안의 그 제목으로 스크롤합니다.
문서 안에서 이동하기
앵커는 제목을 소문자로 바꾸고 공백을 -로 이은 것입니다.
한글 제목도 됩니다.
[속성 절로](#속성은-본문에-나오지-않는다)
로컬 파일과 딥링크
절대 경로도, 상대 경로도, UNC 경로도 전부 동작합니다. 공백이 있는 경로도 됩니다.
[문서](C:\Users\me\notes\file.md)
[상대 경로](sub/notes.md)
[공백 있는 경로](C:\Program Files (x86)\App\readme.md)
단, 상대 경로는 문서를 저장한 뒤에만 동작합니다.
기준점이 문서가 있는 폴더이기 때문입니다. “여기서 두 칸 옆”이라고 적어놨는데, 그 “여기”가 아직 정해지지 않은 셈이죠.
딥링크는 다섯 개 스킴만 받습니다. 그 외 커스텀 스킴은 열리지 않습니다.
[옵시디언](obsidian://open?vault=MyVault&file=Note)
[VS Code](vscode://file/C:/proj/main.ts)
[Notion](notion://...) [Zotero](zotero://...) [Logseq](logseq://...)
로컬 파일 링크를 오른쪽 클릭하면 윈도우 탐색기의 진짜 컨텍스트 메뉴가 열립니다.
(흉내낸 메뉴가 아니라 그 메뉴입니다.)
맨 URL은 클릭되지 않는다
이건 많이들 물어보시는 부분입니다.
https://example.com ← 파랗게 보이지만 Ctrl+클릭이 안 됩니다
[링크](https://example.com) ← 이렇게 쓰세요
파랗게 칠해져 있으니 눌릴 것 같은데 안 눌립니다. 그림에 그려둔 문고리 같은 거죠.
<https://example.com>도 마찬가지입니다.
이미지에는 크기를 붙일 수 있다.



alt 텍스트 뒤에 |를 긋고 숫자를 붙이면 크기가 됩니다.
단위는 픽셀입니다. %와 em은 받지 않습니다.
 가로 300px
 가로 300 세로 200
 alt 유지 + 가로 300
 숫자만 = 크기 (alt 없음)
이미지 붙여넣기
클립보드에 있는 이미지를 Ctrl+V로 붙여넣으면, 파일로 저장되고 링크까지 자동으로 들어갑니다.
저장 위치는 설정 ▸ 파일 ▸ 이미지 저장 위치에서 정합니다. 기본값은 assets고요.
파일명은 image-<시각>-<난수>.png 꼴로 알아서 붙습니다.
받는 형식은 PNG · JPEG · GIF · WebP · BMP · SVG입니다.
문서를 먼저 저장하세요. 저장 전에는 안내 창이 뜹니다. 이미지를 어디에 놓을지 아직 모르니까요.
이미지 경로에는 공백을 쓸 수 없다
링크는 공백을 봐주는데 이미지는 안 봐줍니다.
 ← 표시되지 않습니다
 ← 인코딩하거나
 ← 파일 이름을 바꾸세요
특별한 코드 펜스는 셋뿐이다.
csv · mermaid · mindmap.
이 셋만 그림이나 표로 렌더링됩니다. 다른 언어 태그를 달면 그냥 코드 블록입니다.
셋 다 블록 안을 클릭하면 원본 코드가 올라옵니다. 보닛 규칙 그대로죠.
CSV — 엑셀에서 그대로 붙여넣는다
```csv
이름,역할,분야
에이다,엔지니어,컴파일러
앨런,연구자,계산이론
```
엑셀에서 복사한 덩어리를 파이프로 일일이 감쌀 필요가 없습니다.
붙여넣고 csv만 달면 끝입니다.
HTML·PDF·DOCX로 내보낼 때도 표로 나갑니다.
첫 줄이 헤더입니다.
큰따옴표로 감싸면 쉼표와 줄바꿈을 셀 안에 넣을 수 있고요 ("성, 이름").
구분자는 쉼표만 받습니다.
다만 CSV 셀 안에서는 마크다운이 렌더링되지 않습니다. 굵게나 링크가 필요하시면 일반 표를 쓰세요.
Mermaid — 다이어그램
```mermaid
graph TD
A[아이디어] --> B[아웃라인]
B --> C[마인드맵]
C --> D[문서]
```
순서도·시퀀스·간트 등 Mermaid 문법 전반을 지원합니다.
문법이 틀리면 그 자리에 오류 메시지가 뜹니다. 내보내기에는 그림으로 함께 실립니다.
Mindmap — 문서 속 작은 맵
```mindmap
# 프로젝트
## 1단계
- 조사
- 설계
## 2단계
- 구현
```
문서 안에 정적인 마인드맵 그림을 박아 넣습니다.
레이아웃을 따로 지정할 수도 있습니다.
```mindmap fishbone
# 원인 분석
...
```
left · right · side · down · fishbone 다섯 개 중에서 고르시면 됩니다.
안 적으면 문서의 현재 레이아웃을 그대로 따라갑니다.
두 가지만 알아두세요.
읽기 전용입니다. 그림을 끌어서 편집할 수 없고, 코드를 고쳐야 합니다.
내보내기에 그림으로 나가지 않습니다. HTML·PDF·DOCX에서는 코드 블록으로 남습니다. CSV·Mermaid와 여기서 갈립니다.
YouTube — 그 자리에서 재생된다
이미지 문법으로 유튜브 주소를 걸면 플레이어가 박힙니다.




 이미지 문법이어야 합니다.
[제목](유튜브주소)로 쓰면 그냥 링크입니다. 느낌표 하나 차이입니다.
크기도 붙습니다 —  (기본값은 560×315).
마인드맵 노드에서는 클릭 가능한 썸네일로 나옵니다. 내보내기에는 포함되지 않고요.
각주는 에디터 안에서만 산다.
본문에 근거가 있습니다[^1] 그리고 또 하나[^메모].
[^1]: 첫 번째 각주 내용입니다.
[^메모]: 이름을 붙여도 됩니다.
참조는 위첨자로 뜨고, 마우스를 올리면 내용이 툴팁으로 나타납니다. 정의를 빠뜨리면 “정의 없음: [^1]“이라고 알려주고요.
제약이 셋 있습니다.
정의는 줄 맨 앞에서 시작하고, 한 줄만 됩니다. 여러 줄로 이어 쓸 수 없습니다.
같은 이름을 여러 번 정의하면 마지막 것이 이깁니다.
각주는 에디터 전용입니다. 마인드맵에도, HTML 복사에도, 내보내기에도 반영되지 않습니다.
툴팁 안에서는 마크다운도 렌더링되지 않습니다.
(각주는 아직 에디터 밖으로 못 나갑니다. 여기까지가 지금의 한계입니다.)
속성은 본문에 나오지 않는다.
문서 맨 위의 YAML 블록입니다.
---
title: 내 노트
tags: [아이디어, 초안]
---
그런데 본문 편집 영역에는 이게 보이지 않습니다. 편집 화면 위쪽의 속성 패널을 펼쳐서 고치셔야 합니다.
일부러 그렇게 만들었습니다.
옷 안쪽에 달린 라벨 같은 거라고 보시면 됩니다. 세탁 표시는 분명 필요한 정보지만, 가슴팍에 대문짝만하게 박혀 있으면 그건 옷이 아니죠.
글 쓰는 동안에는 시야에 안 들어오는 게 맞습니다.
그리고 프런트매터는 파일의 맨 처음에 있어야 합니다. 앞에 빈 줄이 하나라도 있으면 인식되지 않습니다.
MilkMind가 읽는 키는 셋뿐이다
mindmap-plugin · mindmap_type · banner.
나머지(title·tags 등)는 보존만 하고 손대지 않습니다.
여러분이 쓰시던 키가 있다면 그대로 남습니다.
mindmap-plugin
mindmap-plugin: basic
이 키가 붙어 있으면 문서가 마인드맵으로 열립니다. 시작 화면 설정보다 우선합니다.
Obsidian markmind 플러그인과 호환되는 표식입니다. 문서를 맵으로 본 뒤 저장하면 MilkMind가 이 줄을 알아서 넣습니다.
mindmap_type
mindmap_type: fishbone
이 문서만의 레이아웃 고정입니다.
값은 left · right · side · down · fishbone.
문서의 지정이 전역 기본값을 이깁니다. 설정에서 기본 레이아웃을 통째로 바꿔도 이 파일만은 안 바뀝니다.
맵 화면에서 레이아웃 전환 버튼을 누르면 MilkMind가 이 줄을 자동으로 씁니다.
mindmap-type(하이픈)으로 쓰셔도 읽습니다. 쓸 때는 밑줄로 씁니다.
banner
banner: assets/hero.png
banner: https://example.com/hero.png
banner: "![[assets/hero.png]]"
편집 화면 상단에 그라데이션 배너 이미지를 답니다.
위키링크 형태(![[...]])도 알아봅니다.
설정 ▸ 모양 ▸ 문서 배너로 끕니다.
안 되는 것부터 확인하자.
다른 앱에서 옮겨 오셨다면 여기부터 보세요.
아예 없는 것들입니다.
위키링크 [[노트]]는 지원하지 않습니다. banner: 값에서만 예외적으로 알아봅니다.
수식 $x^2$·$$...$$도 없습니다. KaTeX도 MathJax도 안 들어 있습니다.
하이라이트 ==강조==, 코드 블록 문법 강조, Ctrl+F 문서 내 찾기도 없습니다.
문서 안에 쓴 원시 HTML은 렌더링되지 않고, HTML로 복사할 때 삭제됩니다.
기호가 그냥 남는 것들입니다.
콜아웃 > [!NOTE]은 평범한 인용문으로 보입니다.
이모지 코드 :smile:은 글자 그대로 남습니다. 직접 입력한 😄는 멀쩡하고요.
위·아래첨자 ^위^ ~아래~도 기호가 그대로 보입니다.
밑줄식 제목(Setext)에는 스타일이 안 붙습니다. #을 쓰세요.
앞에서 이미 말씀드린 것들입니다.
맨 URL은 클릭되지 않습니다. [텍스트](url) 형태로 쓰세요.
이미지 경로의 공백은 %20으로 인코딩하셔야 합니다.
목록이 짧지 않죠.
없는 걸 미리 알고 시작하는 게, 두 시간 뒤에 왜 안 되나 뒤지는 것보다 낫습니다.
뱀발. 결국 규칙은 하나였다.
여기까지 읽으시느라 고생 많으셨습니다.
문법이 잔뜩 나온 것 같지만, 사실 외울 건 없습니다.
이 문서에서 딱 한 줄만 가져가신다면 이겁니다.
커서가 있는 줄은 원본, 커서가 떠난 줄은 결과.
체크박스도 표도 CSV도 머메이드도 전부 이 한 줄에서 나온 것들입니다. 누르면 열리고, 나오면 닫힙니다.
나머지는 필요할 때 이 문서로 돌아와서 찾으시면 됩니다. 그러라고 만들어둔 문서니까요.
([?]와 [!]는 손으로 쳐야 합니다. 세 번쯤 치면 손가락이 먼저 외웁니다.)
이제 문법은 끝났습니다. 다음은 이 문서를 맵으로 펼치는 이야기입니다.