1. 개요
마크다운은 HTML에 비해 쉽고 단순했지만, 시간이 지나면서 오히려 그 단순함이 제약이 되었다. 예를 들면 기본 마크다운에는 취소선 등의 흔히 알고 있는 문법이 사실 없다! 이는 Github-Flavored Markdown의 문법으로, 기존 마크다운의 부족함을 상쇄하기 위해 각종 문법을 추가한 다양한 구현체가 난립하게 되는 문제도 생겨났다. 이를 위해 아예 마크다운 만으로 조판이 가능할 정도로 다양한 문법들을 처음부터 미리 지원하자는 목적으로 만들어진 언어이다.
2. 문법
2.1. 문단 제목
= 제목1 Level 0 (<h1>)
== 제목2 Level 1 (<h2>)
=== 제목3 Level 2 (<h3>)
==== 제목4 Level 3 (<h4>)
===== 제목5 Level 4 (<h5>)
====== 제목6 Level 5 (<h6>)
이때 주의할 점이, ==...= 와 제목 글자 사이에는 한 칸 이상이 공백이 필요하며, 각 제목과 본문 사이에도 한 칸 이상의 빈줄이 필요하다.2.1.1. 문서 제목
Level 0의 문단을 도큐먼트 헤더라고 하며, (doctype man을 제외하면) 전체 문서에 단 하나만 존재해야 한다.이 헤더의 제목을 Document title이라고 하며,
= Title
처럼 표시한다.또한 :로 부제목을 넣을 수 있다.
= 나무위키: 여러분이 가꾸어 나가는 지식의 나무
또한 바로 아래에 저작자/문서 작성자를 표기할 수 있다.= Harry Potter
J. K. Rowling
Author line에는 <> 사이에 이메일을 표기할 수 있다.= Some Title
John Doe <[email protected]>
Author line바로 아래에 리비전을 표시할 수 있다.= Document Title
some author
v3.0
:description: 등의 attribute로 메타데이터를 추가할 수 있다.= Asciidoc: the human-readable plain text authoring format
John Doe <[email protected]>
2.1, January 20, 2021: some remark
:description: description about this Document
:keywords: markup, docbook, asciidoctor, HTML
2.1.2. 문단 번호
:sectnums: 속성으로 문단에 자동으로 번호를 표시하도록 만들 수 있다.= Main Title
:sectnums:
== some section
== another section
=== nested section
==== more nested section
===== max level is up to 3
다음은 아래처럼 렌더링된다(구현마다 다를 수 있다)Main Title
1. some section
2. another section
2.1 nested section
2.1.1 more nested section
max level is up to 3
2.2. 문단
asciidoc은 마크다운이나 html처럼 강제 개행을 인식하지 않고 모든 공백을 하나의 스페이스로 처리한다. <br>을 강제 적용하기 위해선 +를 사용할 수 있다.Accusantium id laborum eos ut harum ratione +
Corporis quibusdam reprehenderit suscipit Eum atque delectus +
Expedita et aut recusandae quisquam Ut cumque quo.
이때, +와 문장의 마지막 글자 사이에는 하나 이상의 공백이 필요하다.2.2.1. 정렬
asciidoc은 텍스트를 정렬하기 위한 명령을 내장하고 있다. 사용 가능한 정렬의 종류는 text-left, text-center, text-right, text-justify가 존재한다. 예를 들어 다음은Accusantium id laborum eos ut harum ratione
[.text-center]
Corporis quibusdam reprehenderit suscipit Eum atque delectus
Expedita et aut recusandae quisquam Ut cumque quo.
중간 문장만 가운데로 정렬한다.2.3. 목록
2.3.1. 순서 없는 목록
마크다운처럼 *로 목록을 구분할 수 있다.* 목록 하나
* 목록 두울
* 목록 세엣
중첩된 목록을 만들려면, 중첩된 깊이만큼 *를 써주면 된다.* 첫번째 목록입니다
** 중첩된 목록입니다.
*** 세번 중첩되었어요
** 다시 빠져나옵니다
* 첫번째 목록과 같은 깊이의 목록입니다.
이는 다음의 마크다운과 동일하다.#!syntax markdown
* 첫번째 목록입니다
* 중첩된 목록입니다.
* 세번 중첩되었어요
* 다시 빠져나옵니다
* 첫번째 목록과 같은 깊이의 목록입니다.
마크다운처럼 -도 구분자로 사용할 수 있지만, -는 깊이가 1인 목록에만 사용할 수 있다.2.3.1.1. 체크리스트
순서 없는 목록은 [ ]와 \[x]로 체크리스트를 만들 수 있다.* [ ] 체크된 목록
* [x] 체크되지 않은 항목
이 코드는 다음과 같이 렌더링된다.❏ 체크된 목록
✓ 체크되지 않은 항목
[1]2.3.2. 순서 있는 목록
마크다운처럼1. first item
2. another item
3. last item
처럼 적을 수 있지만, HTML등으로 변환하면 <li>태그가 대체해버려 상관이 없어지는 등 번거럽게 숫자를 입력하게 될 수도 있다. 또한 숫자로 길이가 달라지면 멀티커서 등으로 모든 항목을 일괄적으로 편집하기도 어려워진다. 이를 위해 아스키독에서는 숫자를 생략하고 .을 사용할 수 있다.. first item
. another item
. last item
순서 없는 목록과 마찬가지로 목록을 중첩할 수 있다.. 설치
.. 설치 요구사항
.. 플랫폼별 설치 가이드
. 작동 확인하기
이 코드는 다음과 같이 렌더링된다.1. 설치
a. 설치 요구사항
b. 플랫폼별 설치 가이드
2. 작동 확인하기
중첩된 리스트에서 숫자를 사용하가 위해선 \[arabic]을 사용할 수 있다.. 설치
[arabic]
.. 설치 요구사항
.. 플랫폼별 설치 가이드
. 작동 확인하기
이 코드는 다음과 같이 렌더링된다.1. 설치
1. 설치 요구사항
2. 플랫폼별 설치 가이드
2. 작동 확인하기
2.3.3. 기타 목록 문법
2.3.3.1. 목록 캡션
.<이름>으로 목록에 제목을 줄 수 있다..my recipe
* sandwich
* bibimbap
* spaghetti
2.3.3.2. 다른 종류의 목록 중첩
asciidoc에서는 다른 종류의 구분자가 나타나면 즉시 목록을 중첩한다. 즉 다음 코드는* unordered list item1
* unordered list item2
. ordered list item1
.. nested ordered list item1
* unordered list item3
다음과 같다.unordered list item1
unordered list item2
1. ordered list item1
a. nested ordered list item1
unordered list item3
2.3.3.3. 목록 분리
일반적인 경우엔, 전혀 다른 목록이 시작된다 하더라도 위의 목록에 중첩되어 나타난다. 즉 다음 코드는. 어떤 목록1
. 어떤 목록2
* 위의 목록과
* 아무 상관없는 목록
다음으로 인식된다.1. 어떤 목록1
2. 어떤 목록2
위의 목록과
아무 상관없는 목록
이를 위해 빈 속성 []를 사용해 목록을 구분할 수 있다. 즉 다음 코드는. 어떤 목록1
. 어떤 목록2
[]
* 위의 목록과
* 아무 상관없는 목록
다음으로 인식된다.1. 어떤 목록1
2. 어떤 목록2
위의 목록과
아무 상관없는 목록
또는 캡션이 있다면 다른 목록으로 인식된다. 즉 다음 코드는. 어떤 목록1
. 어떤 목록2
.새로운 목록
* 위의 목록과
* 아무 상관없는 목록
다음으로 인식된다.1. 어떤 목록1
2. 어떤 목록2
(새로운 목록) // html이라면 <caption>등의 태그로 변환될 것이다
위의 목록과
아무 상관없는 목록
3. 관련 문서
[1] HTML이라면 <input type="checkbox">등으로 나오는 것이 일반적이나, 구현마다 다를 수 있다.