Processing math: 100%
잇창명 개발 블로그

마크다운 문법 치트시트

  1. 목차 (kramdown 확장)
  2. 기본 요소
    1. 헤더
      1. Setext 스타일
  3. Setext 스타일 H1
    1. Setext 스타일 H2
      1. atx 스타일
        1. H4
          1. H5
            1. H6
      2. 커스텀 ID (kramdown 확장)
        1. Another H4
    2. 줄바꿈
    3. 문장 부호 변환
    4. 글자 효과
  4. 구조적 요소
    1. 리스트
    2. 설명 목록 (kramdown 확장)
    3. 인용문
    4. 코드 블록
      1. 문법 하이라이팅
      2. 줄 번호가 있는 코드 블록 (Liquid 확장)
    5. 테이블
    6. 가로선
    7. 수식 (kramdown + MathJax 확장)
      1. 인라인 수식
      2. 블록 수식
    8. HTML 태그
  5. 인라인 마크업
    1. 링크
    2. 이미지
    3. 인라인 코드
    4. 체크박스
    5. 각주
    6. 축약어 정의 (kramdown 확장)
  6. 기타 문법
    1. 블록 종료 표지 (kramdown 확장)
    2. 속성 목록 정의 (kramdown 확장)
    3. 인라인 속성 목록 (kramdown 확장)
    4. 기타 kramdown 확장 문법
  7. 커스텀 확장 문법
    1. 가로 스크롤
    2. 좌우 분리
    3. 스크립트 삽입
      1. 스타일시트 삽입

제가 기억을 못 할 것 같아서 쓰는 페이지입니다. 이 블로그에서 사용하는 kramdown 문법 기준으로 작성되어 있으니 참고할 때 주의해주세요!

최종 출력은 왼쪽에, 마크다운 코드는 오른쪽에 배치되어 있습니다.

목차 (kramdown 확장)

목차를 생성하려면 리스트를 만든 뒤 다음 줄에 인라인 속성 {:toc}을 추가해야 합니다. 제물로 바쳐지는 리스트와 그 내용은 사라지며, 내용을 비워 두려면 최소한 공백 하나는 남겨 둬야 합니다.

이 블로그에서는 목차 문법과는 별도로 글 옆에 상주하는 목차 기능을 구현했기 때문에 이 문법은 사용하지 않을 예정입니다. 현재 테마에서는 <ul><ol>을 써서 나오는 출력도 완전히 같으며, (어차피 안 쓸 문법이니) 차이를 두지 않을 생각입니다.

기본 요소

헤더

Setext 스타일

H1 및 H2만 지원합니다. = 혹은 -의 개수는 상관 없으며, 가로선 문법보다 우선합니다.

Setext 스타일 H1

Setext 스타일 H1
================

Setext 스타일 H2

Setext 스타일 H2
----------------

atx 스타일

H1부터 H6까지를 모두 지원합니다. 맨 끝에 원하는 만큼 # 문자를 더 넣을 수 있습니다. 목차를 더 망가뜨리기 싫어서 H3까지는 생략했습니다.

H4

#### H4
H5
##### H5
H6
###### H6 ##################

커스텀 ID (kramdown 확장)

마크다운 엔진에서 임의로 부여하는 ID를 변경할 수 있습니다.

Another H4

#### Another H4 {#with_custom_id}

줄바꿈

kramdown 소스에서 줄바꿈을 한 번 하면 줄바꿈으로 인식되지 않으며, 원래 줄에 텍스트가 계속 이어집니다. 이 경우에는 다음 줄부터 원하는 만큼 들여쓰기를 할 수 있습니다. 강제 줄바꿈을 하려면 줄의 맨 끝에 공백 2자 이상이나 역슬래시 2개를 넣어야 합니다.

다람쥐 헌 쳇바퀴에 타고파.
다음 줄

다람쥐 헌
	쳇바퀴에 타고파. \\
		다음 줄

문장 부호 변환

일부 문자열을 인식해 적절한 문장 부호로 변환합니다. 원래는 ...가 줄임표로, '"가 짝을 이루는 따옴표 문자로 변환되지만 설정에서 꺼 두었습니다.

Em — dash

En – dash

«Guillemet»

Em --- dash

En -- dash

<<Guillemet>>

글자 효과

밑줄은 마크다운/kramdown 문법상에서 지원되지 않으며, 인라인 HTML(<u>...</u>)을 사용해야 합니다. 취소선은 환경에 따라 잘 인식되지 않는 경우가 있습니다.

굵게, 기울임체, 굵은 기울임체, 한단어일부분만강조하기

**굵게**, *기울임체*, ***굵은 기울임체***, 한단어*일부분*만강조하기

굵게, 기울임체, 굵은 기울임체, 한단어_일부분_만강조가안되네

__굵게__, _기울임체_, ___굵은 기울임체___, 한단어_일부분_만강조가안되네

별 1개/2개가 * 별도의 단어 * 로 있으면 ** 강조 효과로 취급되지 않습니다 ** .

별 1개/2개가 * 별도의 단어 * 로 있으면 ** 강조 효과로 취급되지 않습니다 ** .

취소선

~~취소선~~

구조적 요소

리스트

순서 없는 리스트는 *, +, - 중 아무거나 써도 됩니다. 이 블로그에서는 *을 선호합니다.

  • 순서 없는
  • 리스트
    • 속 리스트
      • 속 리스트
* 순서 없는
* 리스트
	- 속 리스트
		* 속 리스트
  1. 순서 있는
  2. 리스트
    1. 번호는
      1. 무조건 1번부터
1. 순서 있는
3. 리스트
	5. 번호는
		8. 무조건 1번부터
  • 리스트 내부에 다른 요소가 올 수 있습니다.

    * 문자 바로 뒤에 최소한 공백 문자를 삽입해야 리스트 안에 있는 요소로 인식합니다.

      뭐야 왜 2칸 들여쓰기가 돼있어
    
* 리스트 내부에 다른 요소가 올 수 있습니다.

	`*` 문자 바로 뒤에 최소한 공백 문자를 삽입해야 리스트 안에 있는 요소로 인식합니다.

		뭐야 왜 2칸 들여쓰기가 돼있어

설명 목록 (kramdown 확장)

아무 단어
콜론과 본문은 한 칸 띄어써야 합니다.
다른 단어
다람쥐 헌 쳇바퀴에 타고파.
설명을 여러 개 작성할 수 있습니다.
아무 단어
: 콜론과 본문은 한 칸 띄어써야 합니다.

다른 단어
: 다람쥐 헌 쳇바퀴에 타고파.
: 설명을 여러 개 작성할 수 있습니다.

인용문

1단계 인용문

2단계 인용문

> 1단계 인용문
> > 2단계 인용문

코드 블록

들여쓰기 코드 블록
	들여쓰기 코드 블록
Fenced 코드 블록
```
Fenced 코드 블록
```

Fenced 코드 블록은 ~ 혹은 `로 구분합니다. 어느 것을 써도 기능 차이는 없으나 이 블로그에서는 `을 선호합니다.

Fenced 코드 블록
~~~
Fenced 코드 블록
~~~

코드 블록 내부에 ```과 같이 연속된 백틱을 삽입하려면 둘러싸는 백틱의 수를 늘리거나 물결표를 대신 사용하면 됩니다. 이는 아래의 인라인 코드에도 동일하게 적용됩니다. 탈출 시퀀스(\`)는 사용할 수 없습니다.

백틱 더많이
```
```
````
백틱 더많이
```
```
````

문법 하이라이팅

console.log('Code block with syntax highlighting!');
console.info('코드 테마는 무난하게 Monokai를 썼습니다.');
```javascript
console.log('Code block with syntax highlighting!');
console.info('코드 테마는 무난하게 Monokai를 썼습니다.');
```

문법 하이라이팅에는 Rouge를 사용합니다. 인식된 언어에 따라 코드 블록 위에 언어 이름이 표시되며, 현재 이 테마에서 지원하는 목록은 다음과 같습니다. 새로운 언어가 필요할 때마다 수시로 업데이트합니다.

줄 번호가 있는 코드 블록 (Liquid 확장)

1
2
3
String.raw`왼쪽에 줄 번호가 있다!
언어 이름을 반드시 명시해야 합니다.
kramdown 코드 블록이랑 Liquid 코드 블록이랑 구조가 너무 달라서 CSS 짜는데 고생했어요 으`
{% highlight javascript linenos %}
String.raw`왼쪽에 줄 번호가 있다!
언어 이름을 반드시 명시해야 합니다.
kramdown 코드 블록이랑 Liquid 코드 블록이랑 구조가 너무 달라서 CSS 짜는데 고생했어요 으`
{% endhighlight %}

테이블

테이블은 단독으로 한 문단을 이루어야 합니다1.

This is THEAD
This is TBODY
This is also TBODY
This is TFOOT
| This | is      | THEAD |
| ---- | --      | ----- |
| This | is      | TBODY |
| This | is also | TBODY |
| ==== | ==      | ===== |
| This | is      | TFOOT |
THEAD랑 TFOOT은 꼭 안 넣어도 돼요!
| THEAD랑 TFOOT은 꼭 안 넣어도 돼요! |
왼쪽 가운데 오른쪽
왼쪽 가운데 오른쪽
왼쪽 가운데 오른쪽
| 왼쪽 | 가운데 | 오른쪽 |
| -: | :--: | :- |
| 왼쪽 | 가운데 | 오른쪽 |
| =: | :==: | := |
| 왼쪽 | 가운데 | 오른쪽 |

가로선

한 줄에 별표(*), 대시(-), 밑줄(_) 중 하나만이 3개 이상 있으면 가로선으로 취급됩니다. 최대 개수 제한은 없으며, 각 문자 사이에 임의의 개수의 띄어쓰기를 추가할 수 있습니다. 첫 문자 앞에는 띄어쓰기 3개까지만 허용되며, 그렇지 않을 경우 코드 블록으로 취급됩니다.







***

*****

* * *

-  -  -

   -      -  -

___

수식 (kramdown + MathJax 확장)

수식이 단독으로 한 문단을 이루면1 블록 수식, 그렇지 않으면 인라인 수식이 됩니다.

인라인 수식

인라인 수식: ni=0i2=n(n+1)(2n+1)6

인라인 수식: $$\sum_{i=0}^n i^2 = \frac{n(n+1)(2n+1)}{6}$$

강제 인라인 수식:

ni=0i2=n(n+1)(2n+1)6

강제 인라인 수식:

\$$\sum_{i=0}^n i^2 = \frac{n(n+1)(2n+1)}{6}$$

kramdown 문서에는 \$\$...$$ 문법을 사용하면 수식으로 변환되지 않는다고 명시되어 있지만, 이 블로그에서는 작동하지 않습니다.

블록 수식

ni=0i2=n(n+1)(2n+1)6
$$\sum_{i=0}^n i^2 = \frac{n(n+1)(2n+1)}{6}$$

HTML 태그

HTML 태그를 직접 입력할 수 있습니다. 들여쓰기는 코드 블록 문법과 충돌하므로 추가할 수 없습니다.

<button>버튼</button>

태그 안에서도 마크다운 문법을 사용할 수 있도록 설정되어 있습니다.

<span style="background-color: rgba(171, 148, 252, 0.25);">태그 안에서도 *마크다운 문법*을 사용할 수 있도록 설정되어 있습니다.</span>

markdown="0" 속성을 추가해 마크다운 문법을 *강제로 해제*할 수 있습니다.

<span style="background-color: rgba(171, 148, 252, 0.25);" markdown="0">markdown="0" 속성을 추가해 마크다운 문법을 *강제로 해제*할 수 있습니다.</span>

인라인 마크업

링크

[링크 텍스트](https://eatch.dev "툴팁")
[별도 정의를 사용하는 링크][reference-link] or [reference-link]

[reference-link]: https://eatch.dev/ "여기도 툴팁을 넣을 수 있습니다."

<...> 안에 scheme이 포함된 주소나 이메일 주소를 입력하면 오토링크가 걸립니다. <...> 없이 주소만 입력하면 변환되지 않습니다.

https://eatch.dev/ example@example.com

cf. https://eatch.dev/ example@example.com

<https://eatch.dev/> <example@example.com>

cf. https://eatch.dev/ example@example.com

이미지

알트텍스트

![알트텍스트](https://eatch.dev/ei/-0-f "툴팁")
\![이건 이미지가 아니라 느낌표랑 링크로 취급합니다.](https://eatch.dev/ei/-0-f)

인라인 코드

마크다운 인라인 코드

`마크다운` `인라인 코드`

haha `backticks` go brrrr

백틱만 있는 인라인 코드: `

``haha `backticks` go brrrr``

백틱만 있는 인라인 코드: `` ` ``

백틱 하나가 ` 별도의 단어 ` 로 있으면 인라인 코드로 취급되지 않습니다.

백틱 하나가 ` 별도의 단어 ` 로 있으면 인라인 코드로 취급되지 않습니다.

const x = "문법 하이라이팅이 되는 인라인 코드";

`const x = "문법 하이라이팅이 되는 인라인 코드";`{:.language-javascript}

문법 하이라이팅에 사용한 문법에 대한 자세한 설명은 인라인 속성 목록에서 확인할 수 있습니다.

체크박스

  • 체크 안 된 체크박스
  • 체크된 체크박스
* [ ] 체크 안 된 체크박스
* [x] 체크된 체크박스

각주

각주 아이디는 클릭 시 URL로 노출됩니다.

각주 문법 데모2입니다. 각주 내용은 글의 맨 아래에 있습니다.

각주 문법 데모[^fn1]입니다. 각주 내용은 글의 맨 아래에 있습니다.

[^fn1]: 각주 내용입니다. **마크다운 문법**도 쓸 수 있습니다.

똑같은 주석을 여러 번 쓸 수 있습니다. 3 & 3

똑같은 주석을 여러 번 쓸 수 있습니다. [^fnrepeat] & [^fnrepeat]

[^fnrepeat]:
	> 각주 안에 인용문이 있다?!

축약어 정의 (kramdown 확장)

잇넘귀 잇넘귀 신나는 노래

잇넘귀 잇넘귀 신나는 노래

*[잇넘귀]: 잇창명 너무 귀엽다

기타 문법

블록 종료 표지 (kramdown 확장)

^ 문자를 이용해 블록 단위 문법을 분리할 수 있습니다.

  1. 리스트 1
  1. 리스트 2
1. 리스트 1
^
1. 리스트 2
코드 블록 1
코드 블록 2
	코드 블록 1
^
	코드 블록 2

속성 목록 정의 (kramdown 확장)

아래와 같은 문법을 사용해 특정한 문자열에 id, 클래스, HTML 속성을 대응시킬 수 있습니다. 이렇게 정의한 속성 목록은 아래의 인라인 속성 목록에 사용할 수 있습니다.

{:attr-list-def: #EatChangmyeong .custom-class style="text-decoration: underline;"}

인라인 속성 목록 (kramdown 확장)

위에서 정의한 속성 목록을 참조하거나 직접 id, 클래스, HTML 속성을 작성해 바로 앞의 HTML 요소에 임의의 속성을 추가할 수 있습니다.

  • <li>attr-list-def가 적용된 상태
  • 직접 작성한 속성이 우선권을 갖습니다.
* {:attr-list-def}`<li>``attr-list-def`가 적용된 상태
* {:attr-list-def #Eatch}직접 작성한 속성이 우선권을 갖습니다.

기타 kramdown 확장 문법

위에서 설명한 kramdown 속성 목록 정의와 비슷한 문법으로 일부 확장 문법을 사용할 수 있습니다.

  • kramdown 주석 문법은 컴파일된 페이지에 노출되지 않습니다.
    • HTML 주석을 사용할 수도 있습니다.
  • **마크다운 문법**을 적용하지 *않습니다*.
* {::comment}이 부분은 주석이라서 보이지 않습니다.{:/} kramdown 주석 문법은 컴파일된 페이지에 노출되지 않습니다.
	* HTML 주석을 사용할 수도 있습니다. <!-- HTML 주석은 컴파일된 페이지에 노출됩니다. -->
* {::nomarkdown}**마크다운 문법**을 적용하지 *않습니다*.{:/}

커스텀 확장 문법

커스텀 확장 문법은 이 블로그에서만 동작합니다.

가로 스크롤

가로로 넘칠 수 있는 커다란 요소를 <div class="scroll"> 안에 넣어서 스크롤바 안에 가둘 수 있습니다. 화면 위아래에 고정되는 테이블 헤더/푸터는 기술적 한계로 인해 지원하지 않습니다.

가로로긴테이블 가로로긴테이블 가로로긴테이블 가로로긴테이블 가로로긴테이블
<div class="scroll">

| 가로로긴테이블 | 가로로긴테이블 | 가로로긴테이블 | 가로로긴테이블 | 가로로긴테이블 |

</div>

좌우 분리

왼쪽 내용과 오른쪽 내용이 별개의 단에 표시됩니다.

  • 다람쥐 헌 쳇바퀴에 타고파
<div class="split">
<div class="split-column">
왼쪽 내용과 오른쪽 내용이 별개의 단에 표시됩니다.
</div>
<div class="split-column">
* 다람쥐 헌 쳇바퀴에 타고파
</div>
</div>

스크립트 삽입

스크립트를 이용해 글 중간에 인터랙티브 콘텐츠를 넣을 수 있도록 설정해 두었습니다. 필요한 설정은 다음과 같습니다.

스타일시트 삽입

인터랙티브 콘텐츠의 스타일링을 쉽게 할 수 있도록 스타일시트도 삽입할 수 있도록 설정해 두었습니다. 필요한 설정은 다음과 같습니다.

  1. 어떤 콘텐츠의 바로 아래에 빈 줄이 있으면 그 아래의 콘텐츠와 분리되어 "한 문단"이 됩니다.  2

  2. 각주 내용입니다. 마크다운 문법도 쓸 수 있습니다. 

  3. 각주 안에 인용문이 있다?!

     2

마크다운 문법 치트시트