# 마크다운 예제
마크다운 공식 이미지
# 서두
이 사이트의 모든 글 작성의 기본이 될 마크다운 문법에 대해 공부하는 것이 당연하겠다. 조사를 해보니 마크다운은 표준이 없는 듯 하다. 그래서인지 기본적인 문법을 제외하면 각 사이트마다 매우 그 양상이 달랐다. 그러므로 VuePress에서 쓰이는 문법들로 알아보면 되겠다. 다만 공통적으로 적용될만한 기본적인 문법들이 무엇인지는 구분해서 알아두어야 하겠다.
VuePress는 markdown-it (opens new window)을 마크다운 파서로 사용한다. markdown-it에는 각종 플러그인 확장이 존재하는데 VuePress에서도 그 중 일부가 쓰인것으로 보이며 위 링크에 등장하는 플러그인 중 일부만 VuePress에서 동작한다. 아래는 모두 테스트 후 동작하는 것들만 기록. 현재 v0.14.2 기준이다.
데모 사이트가 있으니 각자 테스트 해보자. 데모 (opens new window)
# 기본
어느 파서에서나 동작할만한 기본적인 마크다운 문법
# 단락(Paragraph)
# 문법
첫번째 줄
두번째 줄
세번째 줄
2
3
4
# 출력
첫번째 줄 두번째 줄
세번째 줄
# 설명
마크다운을 처음 접할 때 가장 실수를 많이 하게 된 부분. 일반적인 문장은 엔터로 구분해도 하나의 단락으로 인식한다.
# 제목(Heading)
# 문법
# h1
## h2
### h3
#### h4
##### h5
###### h6
2
3
4
5
6
# 출력
# h1
# h2
# h3
# h4
# h5
# h6
# 설명
HTML 태그와 그대로 대응되는 것들.
헤딩은 URL 끝에 #
이후에 지정되면 해당 위치로 스크롤 되므로 꽤 중요한 정보가 된다.
한줄 띄어쓰지 않아도 된다.
특기할 만한 점은 ##
헤딩에만 자동으로 구분선이 그려진다는 점.
# 구문 장식
# 문법
**강조** __강조__
*이탤릭* _이탤릭_
~~취소선~~
인라인 `코드`
2
3
4
5
6
7
# 출력
강조 강조
이탤릭 이탤릭
취소선
인라인 코드
# 설명
매우 기본적인 장식. 위 첨자 아래 첨자는 기본일 줄 알았는데 동작하지 않았다. 복잡한 수식 들은 바로 적용이 안될것 같다. 필요할 때 연구해서 적용하는 수 밖에.
# 링크(Link)
# 문법
1. [내부 링크](/blog/vuepress/마크다운-예제.html)
2. [내부 링크](/blog/vuepress/마크다운-예제.md)
3. [내부 링크](/blog/vuepress/마크다운-예제)
4. [내부 링크](/blog/)
5. [내부 링크](/blog)
6. [외부 링크](https://www.google.com)
2
3
4
5
6
# 출력
# 설명
내부 링크시 주의할 점은, .html
이나 .md
를 붙여줘야 한다는 점이다.
.md
는 실제로는 빌드시에 .html
로 변환이 된다.
3번의 경우는 없는 페이지가 된다.
4번의 경우는 /blog/README.md
파일이 링크가 되며,
5번처럼 /
를 누락하면 역시 없는 페이지가 된다.
# 이미지(Image)
# 문법
![내부 이미지](/images/green-gear-small.png)
<img src="https://vuepress.vuejs.org/hero.png" alt="외부 이미지" height="100px" />
2
3
# 출력
# 설명
내부 주소의 경우는 기본 설정의 루트가 ~/docs/.vuepress/public
이다.
또한 크기 설정이 필요한 경우는 img
태그를 써야 한다.
img
태그는 바로 다음에 한 줄 띄어쓰기를 해야 다음 단락 구분이 된다.
# 구분자(Splitter)
# 문법
텍스트
---
텍스트
___
텍스트
***
텍스트
2
3
4
5
6
7
8
# 출력
텍스트
텍스트
텍스트
텍스트
# 설명
약간의 굵기 차이가 있는 것 같긴 한데, 크게 중요치 않으므로 가장 타이핑이 편한 ---
를 자주 쓸 것 같다.
주의할 점은 텍스트 바로 다음줄에 ---
가 등장하면 ##
헤딩과 동일한 효과로 인식되어 버린다.
___
와 ***
구분자는 헤딩처럼 한 줄 띄어쓰지 않아도 된다.
# 그룹핑
# 블럭 코드 "펜스"(Block Code "Fences")
# 문법
```
markdown: {
lineNumbers: true
}
```
2
3
4
5
# 출력
markdown: {
lineNumbers: true
}
2
3
# 설명
좌측의 줄번호는 기본적으로 나오지는 않고, config.js
에 위의 설정값을 넣어줘야 한다.
# 문법 강조(Syntax Highlighting)
# 문법
``` js
let foo = 'bar'
console.log(foo)
// bar
```
2
3
4
5
# 출력
let foo = 'bar'
console.log(foo)
// bar
2
3
# 설명
문법 강조는 highlight.js (opens new window) 패키지가 쓰인 것으로 보인다. 해당 링크에 데모와 함께 지원되는 문법 목록을 확인할 수 있다.
# 줄 강조(Line Highlighting)
# 문법
``` js {2,4}
let foo = param => {
return param
}
console.log(foo('bar'))
// bar
```
2
3
4
5
6
7
# 출력
let foo = param => {
return param
}
console.log(foo('bar'))
// bar
2
3
4
5
# 설명
매우 유용한 기능인데, 강조하고 싶은 줄을 지정할 수 있다.
# 글상자(Custom Container)
# 문법
::: tip
팁
:::
::: warning
경고
:::
::: danger
위험
:::
::: danger 위험
위험
:::
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 출력
TIP
팁
WARNING
경고
WARNING
위험
위험
위험
# 설명
딱히 설명할 것은 없으나, VuePress 버그인지 danger의 텍스트가 warning으로 나온다. 이 외에도 오타들이 종종 보이는데 시간나는대로 오픈소스 기여를 좀 해야하려나보다.
# 코드 스니펫(Code Snippet)Beta0.10.1+
# 문법
<<< @/docs/.vuepress/public/js/add.js{3}
# 출력
const fn = (a, b) => a + b
module.exports = fn
2
# 설명
오직 VuePress에만 있는 기능인듯 하다. 코드를 직접 넣지 안고 링크를 걸어서 임포트 한다는 건데 보안에 문제가 없을런지... 유용한 기능인 것만은 확실하다. 당연히 외부 링크는 동작하지 않는다.
# 불릿(Bullet)
# 문법
- 첫번째
- 두번째
- 세번째
- 네번째
- 다섯번째
- 여섯번째
* 첫번째
+ 두번째
- 세번째
2
3
4
5
6
7
8
9
10
# 출력
- 첫번째
- 두번째
- 세번째
- 네번째
- 다섯번째
- 여섯번째
- 다섯번째
- 네번째
- 세번째
- 두번째
- 첫번째
- 두번째
- 세번째
- 두번째
# 설명
단계마다 최소 2칸은 들여쓰기 해야 한다. -
, *
, +
에 따로 구분을 두지는 않는다.
마크다운 화면에서 내가 구분하기 쉽도록 단계별로 다른 문자를 쓰는게 좋겠다.
# 리스트(List)
# 문법
1. 첫번째
1. 일번
2. 이번
2. 두번째
3. 세번째
2
3
4
5
# 출력
- 첫번째
- 일번
- 이번
- 두번째
- 세번째
# 설명
불릿하고 다르게 3칸을 들여쓰기 해야 인식이 된다.
# 블럭인용(BlockQuote)
# 문법
> 인용
>
> 인용
>> 인용 내의 인용
>>
>> 인용 내의 인용
>>
> 인용
>
> 인용
2
3
4
5
6
7
8
9
10
# 출력
인용
인용
인용 내의 인용
인용 내의 인용
인용
인용
# 설명
인용 구문 등에 쓴다. 단락 구분을 하려면 인용 문법과 함께 한 줄 띄어쓰기를 해야 한다. 중복 인용은 거의 쓰지 않을 듯 하지만 알아두자.
# 들여쓴 코드(Indented Code)
# 문법
// Some comments
line 1 of code
line 2 of code
line 3 of code
2
3
4
# 출력
// Some comments
line 1 of code
line 2 of code
line 3 of code
# 설명
코드 블럭과 유사하다. 4칸 들여쓰기를 해야 인식된다. 들여쓰기 자체가 문법이므로 한 줄 띄어쓰지 않아도 다음 줄로 넘어간다.
# 기타
# 테이블(Table)
# 문법
| Tables | Are | Cool |
| ------------- |:-------------:| -----:|
| col 3 is | right-aligned | $1600 |
| col 2 is | centered | $12 |
| zebra stripes | are neat | $1 |
2
3
4
5
# 출력
Tables | Are | Cool |
---|---|---|
col 3 is | right-aligned | $1600 |
col 2 is | centered | $12 |
zebra stripes | are neat | $1 |
# 설명
좌/우/중앙 정렬 기능도 있다.
# 이모티콘(Emoji)
# 문법
:tada: :100:
# 출력
🎉 💯
# 설명
# 내용 테이블(Table Of Contents)
# 문법
[[toc]]
# 출력
# 설명
현재 페이지 내의 모든 헤딩을 정리해서 보여준다. 보통 페이지의 처음에 삽입하면 되겠다. 2단계에서 3단계까지 보여주는 것 같다.
# 배지(Badge)Beta0.10.1+
# 문법
<Badge text="Badge" />
<Badge text="Badge" type="tip" />
<Badge text="Badge" type="warn" vertical="top" />
<Badge text="Badge" type="error" vertical="middle" />
2
3
4
# 출력
Badge Badge Badge Badge
# 설명
마크다운은 아니고, VuePress의 빌트인 컴포넌트이다. 몇가지 내장 컴포넌트들이 있으므로 홈페이지를 확인해보자.
Built In Components | VuePress (opens new window)
# 결론
끝!