Overview
- Kramdown 문법
- 헤더1 (Headers)
- 헤더2 (Headers)
- 강조 (Emphasis)
- 링크 (Link)
- 이미지(image)
- 각주 (Footnotes)
- 인라인 코드(Inline Code)
- 문단 문법 (Paragraphs)
- 블락 인용구 (Blockquotes)
- 코드 블럭 (Code Blocks)
- 프로그램 코드 블럭 (language Code Blocks)
- 가로선 (Horizontal Rules)
- Ordered 리스트 (List)
- Unordered 리스트 (List)
- 정의 리스트 (Definition List)
- 테이블 (Table)
- HTML요소 사용하기
- Table of Content (TOC) 기능
- Kramdown 온라인 편집기
마크다운은 간단한 자체 표기법을 사용해 텍스트를 작성하고 쉽게 다른 HTML 등으로 생성하게 해주는 방법이다. .md .markdown이라는 확장자를 가지고있는 파일들이 바로 그것이다. 마크다운은 존 그루버와 아론 스워츠가 메일의 글쓰기 형식에서 영감을 받아 만든 python으로 만든 html변환기를 올림으로써 알려지게 되었습니다. 약 10여년도 전에 만들어졌지만 별다른 문법 발전없이 표준화되지 못한 모습이다. 하지만 그 편리성 때문에 많은 블로그나 텍스트편집기 등에서 채택되어 사용되고있지만 표준화되어있지 못해서 PHP Markdown Extra, Multimarkdown, Github Flavored Markdown(GFM) 등으로 파편화가 진행되고 있다.
Github page를 jekyll기반으로 생성하면서 고려할 마크다운은 kramdown
이라는 종류다. jekyll자체는 마크다운 플러그인으로 다양한 마크다운 종류를 선택하여 사용 할 수 있지만 Github page에서는 작년 5월부터 kramdown
만 지원하는 것으로 하였다. 기존에 사용되던 redcarpet
방식은 더이상 지원하지 않음
때문에 블로그 활동을 원활하기 위해 개인적으로 kramdown
문법을 정리해 보기로 하였다.
Kramdown 문법
헤더1 (Headers)
설명
타이틀 헤더 속성을 준다.
-
=======
는 H1 -
-------
는 H2
붙여주고 한줄을 띄어주는 것이 중요!
Code
이것은 헤더
===============
이것은 서브 헤더
---------------
본문...
View
이것은 헤더
이것은 서브 헤더
본문…
헤더2 (Headers)
설명
H1, H2, H3, H4, H5, H6 문장의 속성을 준다.
#
를 갯수에 맞게 붙여주고 한줄을 띄어주는 것이 중요!
Code
# H1 header
## H2 header
### H3 header
#### H4 header
##### H5 header
###### H6 header
View
H1 header
H2 header
H3 header
H4 header
H5 header
H6 header
</div>
강조 (Emphasis)
설명
이텔릭, 진하게 등의 강조구문
Code
이것은 *이텔릭*, **진하게**
이것도 _이텔릭_, __진하게__
View
이것은 이텔릭, 진하게
이것도 이텔릭, 진하게
링크 (Link)
설명
<a>
링크를 건다.
[
안에 화면에 보여질 링크명을 (
안에 링크 주소를 넣어 사용한다.
링크 주소뒤에 한칸띄고 title 속성도 줄 수 있다.
Code
A [링크](http://kramdown.gettalong.org)
A [링크](http://kramdown.gettalong.org "hp")
A [링크][kramdown hp]
to the homepage.
[kramdown hp]: http://kramdown.gettalong.org "hp"
A link to the [kramdown hp].
[kramdown hp]: http://kramdown.gettalong.org "hp"
View
이미지(image)
설명
이미지를 첨부함
(github 저장소의 이미지 소스 주소를 연결함)
Code
이미지 : ![test](http://gjchoi.github.io/favicon.png)
View
이미지 :
각주 (Footnotes)
설명
문장내에서 특정 문자를 escape 시킴
`
를 사용하고 싶다면 `code`
를 2개 붙여 감싸줌
Code
각주1 선언부분 a footnote[^1].
각주2 선언부분 a footnote[^2].
[^1]: 각주에 대한 설명 내용 부분 (문서 최하단)
View
인라인 코드(Inline Code)
설명
문장내에서 특정 문자를 escape 시킴
`
를 사용하고 싶다면 `code`
를 2개 붙여 감싸줌
Code
문장내의 `###` 사용을 무시함
문장내의 `` `code` `` 사용을 무시함
View
문장내의 ###
사용을 무시함
문장내의 `code`
사용을 무시함
문단 문법 (Paragraphs)
설명
문단 Paragraphs <p>속성을 주어 구분한다.
- 개행을 하더라도 한줄로 같은 <p>에 묶임
- 띄어쓰기 2번^[space]^[space] 하던가
\\
백슬레시 2개를 붙이면 같은 <p>에 묶이지만 개행이되어 보인다. - 한줄 더 개행하면 서로 다른 <p>에 묶임
Code
같은 라인 문단 1,
같은 라인 문단 2
같은 문단 다른라인 1 ^[space]^[space]
같은 문단 다른라인 2\\
같은 문단 다른라인 3
View
같은 라인 문단 1, 같은 라인 문단 2
같은 문단 다른라인 1
같은 문단 다른라인 2
같은 문단 다른라인 3
앞문단
뒷문단
블락 인용구 (Blockquotes)
설명
<blockquote>
속성을 주어 인용구 부분의 디자인을 적용한다.
>
가 연속적으로 붙은 행들끼리는 같은 <blockquote>
로 묶이며, > >
연속으로 주어서 sub <blockquote>
를 줄수도있다.
Code
> blockquote 첫줄
>
> > 서브 blockquote1
> > 서브 blockquote2
>
> ## blockquote내의 헤더
> 헤더뒤 기본글
View
blockquote 첫줄
서브 blockquote1 서브 blockquote2
blockquote내의 헤더
헤더뒤 기본글
코드 블럭 (Code Blocks)
설명
<pre><code>내용물</code></pre>
로 감싸서
kromdown
에 사용되는 문자를 escape하여 보여 줄 수 있도록 함
2가지 종류의 코드 블럭을 제공함.
- 띄어쓰기 4개나 탭을 이용한 코드블럭
~~~~~~
로 감싸준 블럭
Code
1. 띄어쓰기 방식
블럭내에 첫째줄
블럭내의 둘째줄
블럭내의 넷째줄
#문자escape
~~~~
2. ~~~~~~~~
감싸주기 방식
~~~~~~~
블럭내에 첫째줄
블럭내의 둘째줄
블럭내의 넷째줄
#문자escape
~~~~
~~~~~~~
View
1. 띄어쓰기 방식
블럭내에 첫째줄
블럭내의 둘째줄
블럭내의 넷째줄
#문자escape
~~~~
2. ~~~~~~~~
감싸주기 방식
블럭내에 첫째줄
블럭내의 둘째줄
블럭내의 넷째줄
#문자escape
{:.no_toc}
~~~~
프로그램 코드 블럭 (language Code Blocks)
설명
기본적으로 code block과 같지만 프로그램 언어에 특성에 따른 색, line번호 등을 붙여주기 위한 특징을 가지고 있다.
~~~~
에 언어명을 기입하여 사용한다.
Code
~~~ ruby
def what?
42
end
~~~
~~~ java
public static void main(String[] args){
}
~~~
View
def what?
42
end
public static void main(String[] args){
}
가로선 (Horizontal Rules)
설명
<hr/>
선을 붙여줌
아래 코드에 4가지 방식으로 사용가능
Code
* * *
---
_ _ _ _
---------------
View
Ordered 리스트 (List)
설명
<ol>
,<li>
로 감싸주는 1,2,3 순번있는 리스트를 지원함
순번별로 개행에 주의해야 순번이 꼬이지 않는다.
Code
순서 리스트1
1. 리스트 Item 1
2. 리스트 Item 2
2. 2번째인듯한 리스트 Item 3
,다음줄인 듯한 3번째 뒷부분
순서 리스트2
1. 리스트 Item 1
> blockquote와 함께
# 헤더와 함께
{:.no_toc}
2. 리스트 Item 2
순서 리스트3
1. 리스트 Item 1
1. 서브 리스트 Item 1
2. 서브 리스트 Item 2
3. 서브 리스트 Item 3
2. 리스트 Item 2
View
순서 리스트1
- 리스트 Item 1
- 리스트 Item 2
- 리스트 Item 3 ,Item 3 뒷부분
순서 리스트2
-
리스트 Item 1
blockquote
헤더
-
리스트 Item 2
순서 리스트3
- 리스트 Item 1
- 서브 리스트 Item 1
- 서브 리스트 Item 2
- 서브 리스트 Item 3
- 리스트 Item 2
Unordered 리스트 (List)
설명
<ul>
,<li>
로 감싸주는 순번없는 리스트를 지원함
Code
순서없는 리스트1
* Item1
,Item1의 뒷부분
순서없는 리스트2
* Item 1
+ Item 2
- Item 3
View
순서없는 리스트1
- Item1 ,Item1의 뒷부분
순서없는 리스트2
- Item 1
- Item 2
- Item 3
정의 리스트 (Definition List)
설명
<dl>
,<dt>
,<dd>
로 감싸주는 순번없는 리스트를 지원함
주로 용어에 대한 정의를 설명할때 사용함
Code
용어1
: 정의1
: 정의2
용어2
용어3(2번 같은 뜻)
: 용어2,3번의 정의
용어4
: 정의 문단 1
: 정의 문단 2
View
- 용어1
- 정의1
- 정의2
- 용어2
- 용어3(2번 같은 뜻)
- 용어2,3번의 정의
- 용어4
-
문단으로 나눈 정의 뜻 1
- 문단으로 나눈 정의 뜻 2
테이블 (Table)
설명
<table>
, <thead>
, <tbody>
, <tfoot>
, <tr>
, <td>
의 table형식으로 만들어 줌
|
파이프 라인으로 컬럼을 구분:-------
로 헤더와 body를 구분해줌.----
테이블 body간을 구분====
로 테이블 foot을 구분
Code
| 헤더1 | 헤더2 | 헤더3 |
|:--------|:-------:|--------:|
| 컬럼1 | 컬럼2 | 컬럼3 |
| 컬럼4 | 컬럼5 | 컬럼6 |
|----
| 컬럼1 | 컬럼2 | 컬럼3 |
| 컬럼4 | 컬럼5 | 컬럼6 |
|=====
| Foot1 | Foot2 | Foot3
{: rules="groups"}
View
헤더1 | 헤더2 | 헤더3 |
---|---|---|
컬럼1 | 컬럼2 | 컬럼3 |
컬럼4 | 컬럼5 | 컬럼6 |
컬럼1 | 컬럼2 | 컬럼3 |
컬럼4 | 컬럼5 | 컬럼6 |
Foot1 | Foot2 | Foot3 |
HTML요소 사용하기
HTML직접 사용하기
기본적으로 마크다운 문법과 html 문법이 혼용되서 쓰이지 못하도록 되어있다. 아래에 옵션을 사용하면 HTML을 직접 사용가능하다.
kramdown
의 문법으로 HTML요소 처리
아래와 같이 markdown문법에 임의에 html attribute, class, id 속성을 줄 수 있다.
> 블럭문구
{: title="Blockquote title"}
> 블럭문구
{: .class1 .class2}
> 블럭문구
{: #custom_id}
아래와 같이 둘러 쌓을 수도 있다.
{:refdef: .c1 #id .c2 title="title"}
둘러쌓아진 문단
다음줄
{: refdef}
주석주기
Table of Content (TOC) 기능
toc기능을 이용하면 본 페이지에 overview로 표시된 것 처럼 자동적으로 페이지의 내용물을 헤더를 navigation해주는 메타 테이블이 자동적으로 생성된다.
{:toc}
를 본문에 넣으면 자동으로 H1~H6의 내용물에 대해서 index 메타 테이블이 생성된다.
만약 제외하고 싶은 내용이 있을 때는 {:no_toc}속성을 주면된다.
### 제외하고 싶은 헤더
{:.no_toc}
추가설명하자면 kramdown
은 기본적으로 html요소를 만들때 자동으로 ID를 붙여주는데
이 아이디가 붙은 항목에 대해서만 toc 리스트에 포함시킨다.
옵션사용을 중지하면 자동으로 ID가 붙지 않고 toc 리스트에 포함되지 않은 것이다.
{::options auto_ids="false" /}
Kramdown 온라인 편집기
온라인에서 kramdown으로 마크다운을 작성해보고 확인해 볼 수 있는 싸이트가 있다. CSS가 좀 다르긴하지만 문서작성할 때 요긴하다.