마크다운은 마크업 언어의 일종입니다. 마크업 언어란 태그나 문자를 이용해서 문서나 데이터의 구조를 명시하는 언어입니다. 태그는 원래 텍스트와 별도로 텍스트를 다르게 보이게 하거나 주석을 표현하기 위해서 사용되었다가 용도가 확장되어 문서의 구조를 표현하는 역할도 하게 되었습니다. 미디어위키에서 사용하는 위키 문법도 마크업언어의 일종입니다.
존그루버(John Gruber)와 에런스워츠(Aaron Swartz)가 마크다운을 만들었습니다. 사람들이 읽기쉽고 쓰기편한 문법을 사용하고, 구조적으로 다른 문서로 변환이 쉽도록 하는 형태가 프로젝트의 목표였습니다.
따로 특수한 편집기가 필요없이 문서를 작성할 수 있습니다. 확장자는 .md 형태를 사용합니다. 천천히 마크다운 문법을 배워 봅시다.
# 큰제목
## 중간제목
### 소제목
#### 문단제목 // 4개는 목차표시가 되지 않습니다.
제목을 작성할 때는 # 갯수가 중요합니다. 나중에 목차를 자동생성시 규칙으로 사용되기 때문입니다. 목차는 #, ##, ### 로 시작하는 제목이 목차가 됩니다. 책을 퍼블리쉬할 때 Pandoc에서 --toc 명령어를 사용하면 자동으로 목차를 생성합니다.
엔터를 두번 치면 문단이 됩니다.
첫번째 문단.
두번째 문단.
- 목록1
- 목록2
* 목록1 // * 표시도 사용할 수 있습니다.
* 목록2
간혹은 많은 글보다 그림이 더 설명에 장점일 때가 있습니다. 문서에는 그림을 넣는 상황이 많습니다. 그림을 넣는 방법에 대해서 자세하게 다룰 예정입니다. 아래 예제는 간단하게 마크다운 문법을 사용해서 그림을 넣는 방법입니다.
![이미지설명](http://image/url/image.png "마우스를 올리때 메시지(생략가능)")
**굵게작성**
취소선
~~취소선~~
`print("hello")`
- Tab으로 들여쓰기를 합니다.
- 들여쓰기 된 문장들은 자동으로 긴 코드로 인식합니다.
- 자주사용하는 또다른 방법으로는 ```표시를 코드의 시작부분과 마지막 부분에 넣어서 긴 코드를 표시하기도 합니다.
소프트웨어 설계를 구성하는 데에는 두 가지 방법이 있다. 한가지 방법은 아주 단순하게 만들어서 명백히 결함이 없게 된다. 그리고 다른 방법은 너무 복잡하게 만들어서 명백한 결함이 없게 된다.
- 찰스 앤터니 리처드 호어(C.A.R. Hoare)
> 소프트웨어 설계를 구성하는 데에는 두 가지 방법이 있다.
> 한가지 방법은 아주 단순하게 만들어서 명백히 결함이 없게 된다.
> 그리고 다른 방법은 너무 복잡하게 만들어서 명백한 결함이 없게 된다.
> - 찰스 앤터니 리처드 호어(C.A.R. Hoare)
- 최신 E-book 하드웨어는 인터넷 환경에서 링크기능을 지원합니다.
- 링크를 추가하는 방법입니다. 아내의 웹툰사이트 http://lazyd.org 링크를 작성해보겠습니다.
[http://lazyd.org](http://lazyd.org)
아래 옵션은 pdf에만 적용됨. epub에 적용하고 싶다면 다른 옵션을 써야한다.
\newpage
기본적인 마크다운 문법 설명이 끝났습니다. 간혹 사람들이 특정 정보를 작성하기 위해서 플러그인을 작성하고 그에 따라 사용되는 특수한 문법을 만들어서 사용하기도 합니다. 특수한 문법을 모르더라도 충분히 문법적 특징을 이용해서 좋은 문서를 작성할 수 있습니다. 이 책의 Math장 에서는 수학 기호를 표기해야하는 상황일 때 사용하는 기법이 소개될 예정입니다.
문서를 작성하다보면 2개의 파일을 하나로 합쳐야 하는 상황이 있습니다. 만약 여러분이 리눅스, macOS를 사용한다면 >> 옵션을 이용해서 편리하게 문서를 합칠 수 있습니다. 리눅스를 잘 다룬다면 이미 잘알려진 기능이지만 모르는 분들을 위하여 설명드립니다. 아래는 capter2.md 파일 내용을 capter1.md 파일의 내용 끝부분에 추가할 때 사용하는 명령어 입니다.
$ cat capter2.md >> capter1.md
처음 기획단계에서 분리해서 내용을 구상했다가 기획의도의 변경으로 내용을 합칠 때 유용합니다.