멋쟁이사자처럼/Markdown
[멋사 프론트엔드 부트캠프 14기] Markdown 마크다운 문법 정리📝
JeonLay
2025. 4. 27. 14:49
Philosophy
- 글을 쉽게 읽고, 쓰고, 편집할 수 있도록 하는 것
Inline HTML
- 블록 수준 HTML 태그는 주변 내용과 빈 줄로 구분해야 함.
- 시작 태그와 종료 태그는 탭이나 공백으로 들여쓰기하지 않아야 함.
- 블록 태그 안에는 마크다운 문법이 적용되지 않음.
Automatic Escaping for Special Characters
- HTML에서는 <랑 & 같은 문자를 원래의 의미대로 쓰기 위해서는 <, & 같은 식으로 이스케이프를 해야 함.
- 마크다운에서는 자동으로 처리
AT&T → AT&T
4 < 5 → 4 < 5
- 코드 블록이나 코드 스팬 안에서는 <와 &를 항상 자동으로 이스케이프하기 때문에 HTML 코드 예시를 적을 때도 편하게 쓸 수 있음.
Header
| Setext-Style
- 텍스트 아래에 밑줄을 그어서 표현
- =은 H1, -는 H2
This is an H1
=============
This is an H2
-------------
| Atx-style
- 줄 맨 앞에 #를 붙여서 표현
- 1~6까지의 헤더 레벨
# H1
## H2
###### H6
- 선택적으로, Atx-Style에서는 줄 끝에 #를 닫는 용도로 추가 가능하지만 없어도 무방
- 헤더 레벨은 맨 앞의 # 개수로 결정되기 때문에, 닫는 용도의 #는 맨 앞의 # 개수와 달라도 됨.
# H1 #
## H2 ##
### H3 ############
Blockquotes (인용문)
- email-style의 > 기호 사용
- 보기 좋게 작성하기 위해 문장을 줄바꿈한 후, 각 줄 앞에 >를 붙이는 것이 좋음.
> 두개의 문단으로 구성된
> 인용문
> 첫 줄에만
> 붙여도
> 인용문으로 인식
> 인용문
>
> > 중첩은
>
> > > 이런 식으로 작성
> 인용문 안에
>
> # 헤더를 넣거나
>
> 1. 리스트
> 코드 블럭 등 넣을 수 있음.
Lists
- 순서 있는 리스트(번호), 순서 없는 리스트(글머리 기호) 사용 가능
- 보통 왼쪽에 붙여 쓰지만, 최대 3칸까지는 들여쓰기가 가능하며, 마커 뒤에는 공백 또는 탭이 반드시 있어야 함.
| 순서 없는 리스트
- 글머리 기호는 *, +, - 중 아무거나 사용 가능하며, 동일한 동작함.
* 사과
+ 귤
- 바나나
| 순서 있는 리스트(번호)
- 숫자+.을 사용
- 실제로 어떤 숫자를 사용해도 HTML 출력에는 영향 없지만 1번부터 시작하는 것을 권장함.
- 아래의 예시들이 생성하는 HTML은 마지막 예시와 같음.
1. 사과
2. 귤
3. 바나나
4. 사과
5. 귤
6. 바나나
<ol>
<li>사과</li>
<li>귤</li>
<li>바나나</li>
</ol>
| 보기 좋게 리스트 작성
- 항목을 여러 줄로 작성할 때 보기 좋게 하려면 두 번째 줄부터 들여쓰기를 하면 됨.
- 보기 좋게
리스트 작성하기
| 리스트 항목 사이 빈 줄 있을 경우
- HTML에서는 <p> 태그로 감싸짐.
- Bird
- Magic
위의 것이 아래처럼
태그로 감싸짐.
<ul>
<li><p>Bird</p></li>
<li><p>Magic</p></li>
</ul>
| 여러 문단으로 구성된 항목
1. 한 항목에 여러 문단을 넣고 싶다면?
space 4번이나 tab 1번 해야한다.
- 이거는 문단 두개 예시이다.
이건 두 번째 문단이다. 제일 첫번째
줄만 들여쓰기를 해도 되긴 한다.
| 리스트 안에 인용문
- 리스트 안에
> 인용문을 넣을 경우 들여쓰기 해야 한다.
| 리스트 안에 코드 블럭
- 코드 블럭 포함된 리스트는 space 8번이나 탭 2번을 해야한다
<코드코드코드>
| 의도치 않게 순서 있는 리스트가 되는 경우
- 숫자 + . + 공백 으로 시작하면 리스트로 인식될 수 있으니, . 앞에 \를 붙여 방지 가능
2002. 월드컵 4강
Code Blocks (코드 블록)
- 코드 블록은 일반 텍스트와 달리 들여쓰기(공백 4칸 또는 탭 1칸)를 하면 <pre><code> 태그로 감싸진 코드 블록으로 처리
This is a normal paragraph:
This is a code block.
->
<p>This is a normal paragraph:</p>
<pre><code>This is a code block.
</code></pre>
| 들여쓰기 제거
- 코드 블록의 각 줄에서 4개의 space 또는 1개의 탭이 제거된다.
tell application "Foo"
beep
end tell
->
<p>Here is an example of AppleScript:</p>
<pre><code>tell application "Foo"
beep
end tell
</code></pre>
| 코드 블록 종료
- 코드 블록은 들여쓰기가 없는 줄이 나오거나 문서의 끝에 도달할 때까지 계속됨.
코드 블록 내 HTML 엔티티 자동 변환
- 코드 블록 내에서는 &, <, > 등의 특수문자가 자동으로 HTML 엔티티로 변환
<div class="footer">© 2004 Foo Corporation</div>
<pre><code><div class="footer">
&copy; 2004 Foo Corporation
</div>
</code></pre>
| 코드 블록 내, 마크다운 문법 비처리
- 코드 블록 내에서는 마크다운 문법이 처리되지 않음.
- 예를 들어, 별표(*)는 코드 블록 내에서 단순한 별표로 처리됨. 따라서 마크다운 문법에 대해 이야기할 때도 코드 블록을 사용하기가 쉬움.
Horizontal Rules (수평선)
- ***, ---, ___ 중 하나를 한 줄에만 작성하면 <hr /> 태그로 만들 수 있음.
- 원한다면, -이나 * 사이에 공백 넣어도 됨.
* * *
***
*****
- - -
---------------------
Links (링크)
| Inline link (인라인 링크)
This is [an example](http://example.com/ "Title") inline link.
[This link](http://example.net/) has no title attribute.
<p>This is <a href="http://example.com/" title="Title">an example</a> inline link.</p>
<p><a href="http://example.net/">This link</a> has no title attribute.</p>
| Reference-style links (참조 스타일 링크)
기본 구조
- 두개의 대괄호 쌍을 사용하며, 그 안에 링크를 식별할 수 있도록 원하는 레이블을 넣음.
This is [an example][id] reference-style link.
형식 관련 디테일
- [ ]와 [ ] 사이에 space는 선택 사항
This is [an example] [id] reference-style link.
- 문서 어디서든 다음과 같이 링크 레이블을 정의 가능
[id]: http://example.com/ 'Optional Title Here'
즉, 다음과 같은 형식이다.
- 링크 식별자를 포함한 대괄호(왼쪽 여백에서 최대 세 칸까지 들여쓰기 가능);
- 그 뒤에 콜론(:);
- 그 뒤에 하나 이상의 공백(또는 탭);
- 그 다음엔 링크할 URL;
- 선택적으로, 링크에 대한 제목(title) 속성(큰따옴표, 작은따옴표, 또는 괄호로 둘러쌀 수 있음)을 추가.
- 다음 3가지 링크 정의는 동일함.
[foo]: http://example.com/ 'Optional Title Here'
[foo]: http://example.com/ 'Optional Title Here'
[foo]: http://example.com/ 'Optional Title Here'
- 참고: Markdown.pl 1.0.1에는 링크 제목을 작은따옴표로 감싸면 작동하지 않는 알려진 버그가 있음.
- 링크 URL은 선택적으로 꺾쇠 괄호로 감쌀 수 있음.
[id]: http://example.com/ 'Optional Title Here'
- 제목 속성은 다음 줄에 두고, 긴 URL의 경우 보기 좋게 들여쓰기나 여분의 공백 또는 탭 사용 가능
[id]: http://example.com/longish/path/to/resource/here 'Optional Title Here'
- 링크 정의는 Markdown 처리 중에만 링크를 생성하는 데 사용되며, HTML 출력에서는 문서에서 제거됨.
- 링크 정의 이름은 문자, 숫자, 공백, 구두점으로 구성될 수 있으며, 대소문자를 구분하지 않음.
# 이 두 개는 동일한 동작
[link text][a]
[link text][A]
# 링크는 이렇게 정의함.
[Google]: http://google.com/
암시적 링크 이름 (Implicit link names) 가능
- 링크 텍스트 자체가 이름으로 사용
[Google][]
# 링크 정의
[Google]: http://google.com/
- 링크 이름에 공백이 포함될 수 있기 때문에, 이 단축 기능은 링크 텍스트가 여러 단어인 경우에도 작동
Visit [Daring Fireball][] for more information.
# 링크 정의
[Daring Fireball]: http://daringfireball.net/
링크 정의 배치
- 어디든 가능
- 각 문단 바로 뒤나 문서 맨 끝에 모든 링크 정의 모아둘 수 있음.
# 참조 스타일 링크 예제
I get 10 times more traffic from [Google] [1] than from
[Yahoo] [2] or [MSN] [3].
[1]: http://google.com/ 'Google'
[2]: http://search.yahoo.com/ 'Yahoo Search'
[3]: http://search.msn.com/ 'MSN Search'
# 암시적 링크 이름 단축 문법 사용
I get 10 times more traffic from Google than from
<!-- 위 두 예제는 다음과 같은 HTML 출력 생성 -->
<p>
I get 10 times more traffic from <a href="http://google.com/" title="Google">Google</a> than from
<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>
or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.
</p>
# 비교 위해 동일한 문단을 인라인 링크 스타일로 작성
I get 10 times more traffic from Google
than from Yahoo or
MSN.
참조 스타일 링크 요점
- 참조 스타일 링크를 사용하면, 인라인 스타일, 순수 HTML보다 문서의 소스를 읽기 훨씬 쉬워짐.
- 참조 스타일 링크를 사용하면, 원본 문서가 브라우저에 렌더링된 최종 출력물과 훨씬 비슷해짐.
Emphasis (강조)
- *와 _을 강조 표시 기호로 인식
- *또는 _ 하나로 감싸면 HTML의 <em> 태그로 변환 -> 기울임체
- ** 또는 __로 감싸면 HTML의 <strong> 태그로 변환 -> 굵은 글씨
*single asterisks*
_single underscores_
**double asterisks**
__double underscores__
<em>single asterisks</em>
<em>single underscores</em>
<strong>double asterisks</strong>
<strong>double underscores</strong>
- 단어 중간에도 사용 가능
un*frigging*believable
→ un<em>frigging</em>believable
- *또는 _앞뒤에 공백을 둘 경우, 강조 기호로 인식되지 않고 문자 그대로 출력
- 강조 기호로 인식되는 위치에서 실제 *또는 _를 문자 그대로 출력하려면 \(백슬래시)를 이용해 이스케이프 처리
\*this text is surrounded by literal asterisks\*
→ *this text is surrounded by literal asterisks*
Code
| 코드 구문 강조
- 코드 조각을 나타내려면 백틱(backtick, `) 기호로 감싸기
- 일반 단락 안에서 코드 일부를 강조할 때 사용
- Use the
printf()function
<p>Use the <code>printf()</code> function.</p> - Use the
| 실제 백틱 문자 포함
- 여러 개의 백틱 기호로 감싸기
There is a literal backtick (`) here.
<p><code>There is a literal backtick (`) here.</code></p>
| code span (코드 스팬) 양 끝에 백틱 표시 포함
- 앞쪽 또는 뒤쪽에 공백 포함 가능하기에, 코드 스팬의 시작이나 끝에 리터럴 백틱 표시 가능
- A single backtick in a code span:
`<p>A single backtick in a code span: <code>`</code></p> <p>A backtick-delimited string in a code span: <code>`foo`</code></p> - A backtick-delimited string in a code span:
`foo`
- A single backtick in a code span:
| code span(코드 스팬)에서 문자 자동 변환
- 코드 스팬 내부에서는 앰퍼샌드(&)나 꺾쇠 괄호(< >) 등이
자동으로 HTML 엔티티로 인코딩되어, HTML 태그 예시를 쉽게 포함 가능- Please don't use any
<blink>tags.
<p>Please don't use any <code><blink></code> tags.</p> - Please don't use any
| HTML 엔티티 예시 포함
- HTML 엔티티 자체를 코드 스팬으로 감쌀 수 있음.
`—` is the decimal-encoded equivalent of `—`.
<p><code>&#8212;</code> is the decimal-encoded equivalent of <code>&mdash;</code>.</p>
Images
- 이미지 문법은 링크 문법과 유사
- 인라인 스타일 / 참조 스타일
| 인라인 스타일 문법


| 참조 스타일 문법
![Alt text][id]
# 링크 정의
[id]: url/to/image 'Optional title attribute'
- 이 시점에서 아직 이미지 크기를 지정하는 마크다운 문법이 없기 때문에, 크기 지정을 하려면 HTML의 <img> 태그를 사용해야 함.
Automatic Links (자동 링크)
- URL과 이메일 주소를 위한 “자동” 링크를 만드는 단축 문법 지원
- URL이나 이메일 주소를 꺾쇠 (< >)로 감싸기
<http://example.com/>
<!-- 마크다운은 위 코드를 다음과 같이 변환 -->
<a href="http://example.com/">http://example.com</a>
- 이메일 주소의 자동 링크도 유사하게 작동하지만, Markdown은 주소 수집 스팸봇으로부터 주소를 어느 정도 숨기기 위해 무작위 십진수 및 16진수 엔티티 인코딩을 수행
<address@example.com>
<!-- 마크다운은 위를 아래와 비슷하게 변환 -->
<a
href="mailto:addre
ss@example.co
m"
>address@exa mple.com</a
>
- 위 코드는 브라우저에서 “address@example.com”이라는 클릭 가능한 링크로 렌더링됨.
- (이런 엔티티 인코딩 기법은 많은 주소 수집 봇을 속일 수 있지만, 모든 봇을 속이진 못한다. 아무것도 하지 않는 것보다는 낫지만, 이렇게 게시된 주소도 결국에는 스팸을 받게 될 가능성이 있다.)
Backslash Escapes
- 일반적으로 특별한 의미 갖는 문자를 문자 그대로 출력 위해 사용
- 예를 들어, 단어를 HTML <em> 태그 대신 실제 별표(*)로 감싸고 싶다면, 별표 앞에 역슬래시를 붙이면 됨.
\*literal asterisks\*
# Markdown에서 이스케이프할 수 있는 문자
\ backslash
` backtick
- asterisk
_ underscore
{} curly braces
[] square brackets
() parentheses
# hash mark
- plus sign
* minus sign (hyphen)
. dot
! exclamation mark