1. Markdown이란?
Markdown은 경량 마크업 언어 중 하나로, 글쓰기의 가독성을 높이고 간단한 문서 형식을 쉽게 작성할 수 있도록 설계된 언어이다. 존 그루버(John Gruber)와 애런 스워츠(Aaron Swartz)가 2004년에 개발한 Markdown은 HTML과 같은 복잡한 태그를 사용할 필요 없이 간단한 기호만으로 텍스트에 다양한 형식 요소를 추가할 수 있게 해준다.
예를 들어, #
을 이용해 제목을 만들거나, *
또는 _
기호로 기울임 또는 굵은 글씨를 적용할 수 있으며, 링크, 이미지, 목록 등을 손쉽게 작성할 수 있다. 또한, Markdown은 다양한 플랫폼에서 호환이 가능하여 GitHub, 블로그, 위키 등 여러 웹 기반 서비스에서 널리 사용되고 있다.
마크다운 나무위키https://namu.wiki/w/%EB%A7%88%ED%81%AC%EB%8B%A4%EC%9A%B4
그 결과, 프로그래머나 작가 등 다양한 사용자들이 복잡한 코드나 태그 없이도 쉽게 문서를 작성하고 포맷을 지정하며, 웹 상에서 문서를 공유할 수 있는 효율적인 도구로 자리 잡게 되었다. 마크다운의 가장 큰 장점은 직관적이고 간단한 문법 덕분에 학습 곡선이 낮아 초보자도 쉽게 접근할 수 있다는 점이라고 할 수 있다.
2. Markdown을 사용하는 이유
마크다운은 처음에는 생소한 문법이었다. 프로그래밍이나 코드와는 거리가 멀었던 나에게는 사용하게 될 일이 없을 것이라 생각했다. 그러나 Obsidian이나 Logseq 같은 노트 프로그램을 만나면서 상황이 달라졌다. 이 두 프로그램은 Markdown 문법을 기반으로 한 노트 프로그램으로, 가벼운 텍스트 기반의 Markdown을 통해 프로그램도 가볍고, 링크와 백링크, 태그 등이 자유로우며, 이를 쉽게 찾아볼 수 있는 시스템을 제공한다. 이러한 프로그램은 암기 학습 과정에서 맥락이 끊길 수 있는 부분을 이어주는 데 큰 역할을 한다. 개인적으로 저는 Obsidian과 Logseq를 이용하여 맥락 있는 암기를 하기 위해 Markdown을 사용합니다.
그리고 이 두 노트 프로그램을 사용하는 또 다른 이유는 간격 반복 학습 프로그램인 Anki와의 연동 때문이다. 의대생들이 많이 사용하면서 유명해진 Anki는 사실 단답형, 용어 암기에 특화되어 있습니다. 디지털 기기를 이용한 간격 반복 학습에서 가장 중요한 규칙은 지식을 최소 단위로 쪼개는 것이다. 그러나 서술형 답안을 제출하는 시험들(대표적으로 기술사)의 공부에는 부적합할 수 있다.
이를 유기적으로 연결해줄 방법을 찾던 중, 많은 사람들의 경험을 참고했고, 나 역시 기술사 시험 공부에 Anki를 사용하여 효과를 보았다. 이때 가장 중요한 것이 맥락을 연결하는 것인데, 이것을 해결해주는 것이 Obsidian의 링크와 백링크, Logseq의 블록 체계이다. 두 가지 프로그램에 대해서는 추후에 다시 다룰 예정이다.
3. Markdown의 장단점
3-1. 장점
- 간결하다.
- 별도의 도구 없이 작성 가능하다.
- 다양한 형태로 변환이 가능하다.
- 텍스트로 저장되기 때문에 용량이 적어 보관이 용이하다.
- 텍스트 파일이기 때문에 버전 관리 시스템을 이용하여 변경 이력을 관리할 수 있다.
- 지원하는 프로그램과 플랫폼이 다양하다.
개인적인 경험에 비추어:
- 텍스트만으로 수학 수식 작성이 가능하다.
- 텍스트만으로 태그를 통해 하이라이트(형광펜)가 가능하다.
- Anki와 호환된다.
- ChatGPT 같은 LLM 기반의 AI가 Markdown을 100% 이해한다.
손으로 쓴 노트를 자료화하기 위해 처음부터 패드를 사용하지 않는 한 상당히 어려움이 있었다. 그러나 요즘은 AI를 이용하여 손으로 쓴 노트까지도 자료화하고 있다. 이때 손으로 쓴 수학 수식들도 AI가 인식하고, 이것을 Markdown으로 재생성하면 지식을 데이터화시키는 데 큰 도움이 된다. 이 점 때문에 Obsidian과 Logseq을 애용하고 있다.
3-2. 단점
- 표준이 없다.
- 표준이 없기 때문에 도구에 따라 변환 방식이나 생성물이 다르다.
- 모든 HTML 마크업을 대신하지 못한다.
개인적인 경험에 비추어:
- 다양한 문법 적용 방식을 초기에 많이 공부해야 한다.
- 표 그리기는 결과물이 별로다.
4. Markdown 문법 정리
4-1. 헤더 (Header)
# 이것은 H1 헤더입니다
## 이것은 H2 헤더입니다
### 이것은 H3 헤더입니다
#### 이것은 H4 헤더입니다
##### 이것은 H5 헤더입니다
###### 이것은 H6 헤더입니다
4-2. 인용문 (BlockQuote)
>
를 사용해서 블록 인용문을 작성한다.
> 인용문입니다.
>> 중첩된 인용문입니다.
4-3. 목록 (List)
번호를 붙이거나 글머리 기호를 사용하는 형태로 작성한다.
순서 있는 목록
1. 첫 번째
2. 두 번째
3. 세 번째
순서 없는 목록
- 첫 번째
- 두 번째
- 세 번째
순서 없는 글머리 기호로 *
, +
, -
를 사용할 수 있다.
4-4. 강조 (Emphasis)
*기울임*
_기울임_
**볼드**
__볼드__
~~취소선~~
사용하는 프로그램마다 결과물의 차이가 있거나 작동하지 않는 경우도 있다.
4-5. 수평선 (Horizontal Rule)
* * *
***
*****
- - -
---------------------------------------
4-6. 링크 (Link)
참조 링크 (Reference Link)
[링크 텍스트][id]
[id]: URL "선택적 제목"
예시:
[Naver][naverlink]
[naverlink]: https://naver.com "Go Naver"
외부 링크 (External Link)
[제목](링크)
예시:
[NAVER](https://naver.com "Naver Link")
4-7. 이미지 (Image)
![대체 텍스트](이미지_URL_또는_경로)
![대체 텍스트](이미지_URL_또는_경로 "선택적 제목")
사이즈 조절 기능은 없다. 노트 프로그램을 사용할 것이기 때문에 큰 의미가 없으며, 단점 중 하나는 이미지의 크기가 출력물마다 제각각이라는 점이다.
4-8. 줄바꿈 (Line Breaks)
띄어쓰기 두 칸 이상 하면 줄이 바뀐다. 그러나 그럴 일이 거의 없고 엔터 키로 해결한다. 엔터 키가 안 되는 경우에는 <br/>
태그를 사용한다.
4-9. 표 (Table)
| 분류 | 제목 | 설명 |
| ------- | ------ | ------ |
| 샘플 | 샘플 | 샘플 |
| 샘플2 | 샘플2 | 샘플2 |
표는 보여주기에는 잘 나오지만, Anki와 연동할 때 Obsidian은 잘 안되는 것 같다.
4-10. 수학 수식 (Mathematical Expressions)
수식은 $
또는 $$
표시 안에 작성해야 한다.
인라인 수식
분수 $\frac{1}{2}$는 1/2을 의미합니다.
블록 수식
$$
\frac{1}{2}
$$
수식은 다양하기 때문에 2편에서 자세히 다룰 예정이다.
4-11. 하이라이트 강조
<kbd>hello</kbd>
<a>hello</a>
<code>hello</code>
<mark>hello</mark>
<u>hello</u>
이 외에도 강조 하는 방법은 다양한 태그를 이용하여 다양한 색상을 형광펜 처럼 만들 수 있다.
5. AI 가 좋아하는 Markdown
엄밀히 말해 좋아한다고는 할 수 없지만, LLM 기반의 AI 의 학습은 텍스트로만 받아들여진다. 정확히 말하자면 여러가지 형태로 학습시키더라도 그 과정에서 텍스트로 변환이 된다. 그 과정에서 학습오류가 발생하고 질문의 대답에서도 오류(할루시네이션)이 발생한다. 학습을 얼마나 정확하게 하느냐도 AI 가 가지는 중요한 부분중에 하나다.
공부를 하는 사람들은 여러가지 방법으로 필기나 노트, 단권화 등의 작업을 하게 되는데, 이것을 디지털로 담아내기 위해서 스캔을 하거나, 텍스트를 그대로 입력하는 등 다소 불편한 부분이 있다. 스캔한 부분은 OCR 을 하더라도 수식같은 부분에서 한계가 있고, 입력하는 방법은 상당한 시간이 소요된다.
참으로 다행이도 AI 를 통해서 손글씨 까지 OCR 이 제법 정확해지면서, 데이터를 재생산 해내고 있다. 여기서 공부하는 분야마다 다르겠지만, 수식과 같은 부분을 텍스트로 이해하고 출력해내는데에 마크다운 만큼 가볍고 정확한 것은 없다고 생각한다. AI 에게 스캔본을 한 장 올려주고, 마크다운 문법으로 변환해달라고 할 경우 상당히 정확한 수준으로 변환해준다. 약간의 오타를 수정하는 수고는 있긴 하다.
그래서 앞으로 공부하는 자료들을 데이터화 시키고 무거운 책들보다는 가볍게 들고다녀보려고 한다. 아쉽게도 계산과목은 그 한계가 있지만, 계산 식 까지도 마크다운 문법(그 안에서도 Latex)으로 해결할 수 있으니 참 다행으로 생각든다. 다음편에서는 Latex 문법에 대해서 포스팅 할 예정이다. 수식을 정리하는데 상당한 도움이 될 것이다.
읽어주셔서 감사합니다.