최상위 요소(article, book, chapter, set 등)는 항상 !!!!으로 시작. !!!! 다음의 텍스트는 그 요소의 제목( title )이 됩니다. 최상위 요소는 선택 가능. ( 문서 종류 참고).
문서에 대한 정보는
@정보이름 값;값...
형태입니다. 문서 정보들은 문서 어느 곳에 위치해도 됩니다만 최상위 제목 아래에 넣는 게 깔끔하겠죠.
현재 지정할 수 있는 정보는 다음과 같습니다.
[참고]인코딩이나 문자집합에 따라 정보이름 키워드가 달라지는 것은 비효율적이므로, 2005년 2월 버전부터는 @ 다음에 오는 정보 이름들을 모두 영문 알파벳으로 바꾸었습니다. 따라서 기존 문서에서 문서 정보를 사용한 부분을 적절히 변경할 필요가 있습니다. 변경된 이름들을 요약하자면:
| 예전 | 지금 |
|---|---|
| 지은이, 글쓴이 | author |
| 엮은이 | editor |
| 옮긴이 | translator |
| 고침 | rev |
| 종류 | type |
| 헤더 | header |
지은이, 엮은이, 옮긴이는 각각 author, editor, othercredit(role="translator") 요소에 해당합니다. 셋 다 생략 가능, 임의의 조합 가능, 복수 출현 가능.
형태는 @author/@editor/@translator 성 이름;주소 . 주소 생략 가능, 성도 생략 가능.
예:
@author 홍 길동;hgd(at)yuldo.net @translator 임 꺽정 @editor 나 <authorgroup> <author> <surname>홍</surname><firstname>길동</firstname> <affiliation> <address><email>hgd(at)yuldo.net</email> </address> </affiliation> </author> <othercredit role="translator"> <surname>임</surname><firstname>꺽정</firstname> </othercredit> <editor> <surname>나</surname> </editor> </authorgroup>
revision 요소에 해당. 생략 가능, 복수 출현 가능, revhistory로 묶임.
형태는 @rev 버전;날짜;고친이;설명
예:
@rev 1.1 ;2002-04-26;gryu;고침 옵션 테스트 @rev 1.0 ;2002-04-23;gryu;최초 업로드 <revhistory> <revision> <revnumber>1.1</revnumber> <date>2002-04-26</date> <authorinitial>gryu</authorinitial> <revremark>고침 옵션 테스트</revremark> </revision> <revision> <revnumber>1.0</revnumber> <date>2002-04-23</date> <authorinitial>gryu</authorinitial> <revremark>최초 업로드</revremark> </revision> </revhistory>
문서의 종류를 명시합시다. 생략 가능, 생략 시 기본은 article. 형태는
@type 종류이름
종류 이름이 그대로 최상위 요소 이름과 DTD 선언의 이름으로 쓰이며, 변환 시 유효한 문서 종류인지 점검하지는 않습니다. 따라서 종류를 webpage로 하고 몇몇 부분을 수정하는 형식으로 website 용 문서를 만드는 것도 가능합니다.
예: 이 페이지 제일 위에 지정된 것과 이 페이지의 DocBook 소스 루트 요소를 비교해 보시길!
문서 처음에 포함될 XML 선언, DTD 선언을 지정합니다. 생략 가능, 생략 시에는 DTD 선언 없이 XML 선언만 포함됩니다. 다음과 같은 형태들이 가능합니다.
;@header XML: XML 선언만. @header를 생략한 것과 같음 ;@header DTD: XML 선언과 기본 DTD 선언. ;@header DTD;DTD URI: XML 선언과 DTD 선언, DTD URI를 직접 지정하는 형태 ;@header none: XML, DTD 모두 없음. XML 개체 형태로 다른 닥북 문서에 포함시키고자 할 때 유용.
XML 선언은 항상 다음과 같은 형태입니다. XML 선언의 encoding은 DbWiki 인코딩 설정을 따릅니다.
<?xml version="1.0" encoding="utf-8"?>
기본 DTD 선언은 기본적으로는 다음과 같은 형태입니다.
<!DOCTYPE 문서종류 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
DTD의 DocBook XML 버전 번호는 DbWiki 버전에 따라 다를 수 있습니다.
[참고]기본 DTD는 index.php 중간 부분의 $DefaultDTD 변수에 설정되어 있습니다.
DTD URI는 DTD 선언 중 "<!DOCTYPE 문서종류" 와 마지막 ">" 사이에 들어가는 부분입니다. 예를 들면
@header DTD;SYSTEM "path/to/docbookx.dtd"
문서 종류가 chapter일 경우 위의 옵션은 다음과 같이 확장됩니다.
<?xml version="1.0" encoding="euc-kr"?> <!DOCTYPE chapter SYSTEM "path/to/docbookx.dtd">
문서의 내용이나 포매팅 등에 대한 주석을 삽입하는 기능입니다.
@// 이것은 주석. 우아~ --류광
DocBook 소스에는 <!-- ... -->로 들어갑니다. --> 와의 충돌을 피하기 위해, 주석 내용 중 --는 -로 치환됩니다.
다른 문서 정보들은 문서 전체에 영향을 미치며 DocBook 소스의 시작 부분에 삽입되지만, 주석은 해당 위치에 직접 삽입되며 문서 전체에는 영향을 미치지 않습니다.
섹션은 !!!, !!, ! 중 하나. !의 개수가 섹션의 깊이를 지정하는 방식입니다. 적을 수록 하위 섹션입니다.
섹션 깊이가 3 이상이라면, _!, _!!, _!!! .... 식으로 계속 들어가는 것도 가능하긴 합니다. 이 경우에는 !가 많을 수록 하위 섹션입니다. 그러나 이런 것들을 사용하는 것 보다는 part - chapter - article 식으로 문서 자체를 분할하는 게 더 낫다고 봅니다.
예:
!!!! 문서 제목 !!! 서론 ... !!! 본론 ...(블럭)... !! 단원 1 ...(블럭)... ! 소단원 1 ...(블럭)... ! 소단원 1 ...(블럭)... _! 더 낮은 _!! 더욱 낮은 _!!! 더더욱 낮은 섹션 !!! 결론 ...(블럭)...
하위 섹션 예:
HTML에서는 여기가 H6에 해당. 즉 더 이상은 의미가 없음. DocBook의 경우에는 가능하긴 하지만 하나의 문서가 이렇게까지 깊이 들어가는 것은 별로 좋지 않은 것 같아요.
빈 줄(줄바꿈 두 번)로 구분된 텍스트는 문단(para)이 됩니다.
목록은 #나 *로 시작.
번호가 매겨지는 목록은 #로 시작.
# 하나 ## 하나 반 ## 또 하나 반 # 둘 ## 둘 반 ### 둘의 '''반의 반''' # 셋
번호가 없는 목록은 *로 시작. 각 항목을 개별 줄로, 항목 사이에 빈 줄이 없어야 같은 목록의 항목들로 인식됩니다.
* 하나 ** 하나 반 ** 또 하나 반 * 둘 ** 둘 반 *** 둘의 반의 반 * 셋
DocBook의 variablelist에 해당. ;과 :로 구성됩니다.
; 용어1 : 용어1의 정의 ; 용어2 : 용어2의 정의
; 용어1 : 용어1의 정의 ; 용어2 : 용어2의 정의
목록의 텍스트에도 인라인 마크업들이 그대로 적용됩니다.
예:
* DocBook '''문서화''' ** http://www.docbook.org/tdg/en/html/docbook.html * [내부링크 | #interlink] # DocBook '''문서화''' ## http://www.docbook.org/tdg/en/html/docbook.html # [내부링크 | #interlink] ; '''DocBook 한국♡ 프로젝트''' : KldpNet의 프로젝트 페이지는 http://kldp.net/projects/docbook/
; DocBook 한국♡ 프로젝트 : KldpNet의 프로젝트 페이지는 http://kldp.net/projects/docbook/
프로그램 소스 코드 등 포매팅이 그대로 유지되어야 하는 부분은 {{{ 와 }}} 로 감쌉 니다. {{{, }}} 모두 개별적인 줄로 존재해야 하며 줄 제일 처음에 나와야 함.
#include <string> using namespace std;
이 경우에는 programlisting 요소가 됩니다. 다른 요소로 하려면, {{{ 다음에 요소 이름을 직접 써주면 됩니다.
{{{screen
Volume in drive C is SYSTEM Serial number is 2350:717C
...
}}}
또는 줄의 제일 첫 칸을 빈칸으로 해도 동일한 효과가 됩니다. 이 경우는 무조건 programlisting.
한 칸 띄면 이렇게.
테이블 항목들은 모두 |로 시작하구요. |!는 테이블 제목 , |{는 헤더(thead), |}는 푸터(tfoot). 나머지 |들은 테이블 각 칸들을 구분하는 역할을 합니다.
예를 보면 쉽게 알 수 있을 것입니다.
|! 테이블 예제
|{ 헤더1 | 헤더2 |헤더3
| 1-1 | 1-2 | 1-3
| 2-1 | 2-2 | 2-3
| 3-1 | 3-2 | 3-3
|} 꼬리1 | 꼬리2 |꼬리3
테이블 예제| 헤더1 | 헤더2 | 헤더3 |
|---|---|---|
| 1-1 | 1-2 | 1-3 |
| 2-1 | 2-2 | 2-3 |
| 3-1 | 3-2 | 3-3 |
| 꼬리1 | 꼬리2 | 꼬리3 |
테이블에서 |!를 사용하지 않으면 title 요소가 없는 informaltable이 됩니다.
| 1-1 | 1-2 | 1-3 | 2-1 | 2-2 | 2-3 | 3-1 | 3-2 | 3-3
| 1-1 | 1-2 | 1-3 |
| 2-1 | 2-2 | 2-3 |
| 3-1 | 3-2 | 3-3 |
이미지(이미지 참고)가 줄의 제일 앞에 나오면, 즉 대괄호가 제일 첫 글자이면 블럭 이미지(mediaobject)가 됩니다.
예:
닫는 대괄호 이후부터 줄 끝까지는 mediaobject 내부의 caption 요소가 됩니다.
이 부분은 캡션
범용 블럭과 블럭 이미지를 결합하면 figure 요소를 구현할 수 있습니다.
그림 예
자~알 생긴 오리
(((figure 그림 예 ::example_figure:: [http://occam.n4gate.com/dbwiki/images/dbwiki.png] 자~알 생긴 오리 )))
각주는 대괄호와숫자를 통해서 표현합니다. 각주 표시가 될 위치를 이렇게 표기해주고[1], 같은 숫자를 감싸는 대괄호로 시작하는 줄을 따로 만들어서 각주의 내용을 적으면 됩니다.
각주 표시가 될 곳에 이렇게 [1] .... [1] 실제 각주는 이렇게
[1] 숫자를 감싼 대괄호로 시작하는 줄은 해당 각주 번호에 대한 실제 각주가 됩니다.
다음과 같이 ((( ))) 를 이용하면 범용 블럭을 지정할 수 있습니다.
범용 블럭이것은 범용 블럭을 이용한 example 요소의 예이다. 범용 블럭은 ((( 다음에 블럭 요소 이름을 써주고,
끝에 )))로 닫으면 됨.
(((example 범용 블럭 ::example_block:: 이것은 범용 블럭을 이용한 example 요소의 예이다. 범용 블럭은 ((( 다음에 블럭 요소 이름을 써주고, * 그 뒤에 블럭 제목을 써주고, * 블럭 내용을 넣은 후 끝에 )))로 닫으면 됨. )))
섹션 제목과 마찬가지로, 제목 끝에 :: 를 이용해서 블럭의 id를 지정할 수 있음. id가 있으므로 링크 대상이 될 수 있다. 그림 예
범용 블럭은 내포될 수 없음. 그 외의 것은 대부분 허용되나 범용 블럭 안에 섹션 헤더가 있으면 최종 DocBook 소스의 적격성이 보장되지 않는다.
블럭 안에서 부분 문자열 단위로 적용되는 것들입니다.
외부 링크는 대괄호로 표시할 수 있습니다. 링크텍스트 처럼 링크 텍스트와 URL을 세로줄로 구분합니다. http://url.net 처럼 URL만 써주면 그 URL이 링크텍스트가 되는 형식으로 링크가 걸립니다.
[링크텍스트 | http://url.net]
외부 링크는 닥북 XML의 ulink 요소가 됩니다.
내부 링크는 ID 또는 링크텍스트 형태입니다. 여기서 ID 는 섹션 제목(!..) 옆에 ::ID:: 형태로 지정된 것입니다. 이 섹션의 !! 내부 링크 ::interlink:: 처럼요... 예: 내부링크
[#ID], [링크텍스트 | #ID] [내부링크 | #interlink]
이런 링크는 닥북 XML의 link 요소가 됩니다.
다른 페이지의 특정 일부분을 직접 가리킬 수 있습니다. 이런 형태입니다.
[페이지이름#ID], [링크 텍스트|페이지이름#ID]
페이지 이름이 영문 위키 이름 형태라고 해도 내부 링크를 걸기 위해서는 반드시 대괄호로 감싸야 합니다.
닥북 XML은 외부 링크와 마찬가지로 ulink 요소가 됩니다. (link 요소가 되게 하는 게 바람직하나, 여러 페이지들에 걸친 닥북 XML 생성에 대한 정책이 서지 않았기 때문에 일단은 ulink로 했습니다.)
인라인 이미지는
나
처럼 문단 중간에서 대괄호 안에 이미지 파일 이름(확장자를 통해 식별됨)을 넣으면 됩니다.
이렇게 [../images/dbwiki.png]나 [http://img.kldp.org/static/kldpnet.png]
이미지가 줄의 제일 앞에 나오면, 즉 대괄호가 제일 첫 글자이면 블럭 이미지(mediaobject)가 됩니다. 블럭 이미지 참고.
작은따옴표 세 개의 쌍으로 둘러싸인 부분은 강조(emphasis)가 됩니다.
'''강조(emphasis)'''
작은따옴표 두 개로 둘러싸인 부분은 "인용(quote)"이 됩니다. 문장 안의 인용(inline quote)에 해당. 인용구(block quote)는 아직 지원 안 됩니다. DbWiki(HTML) 상에서는 그냥 직접 큰따옴표를 사용한 것과 다를 바 없지만, XML 소스에서는 <quote> 요소가 됩니다.
This software is provided ''as is'', without expressed or implied warranty.
F1 처럼 {{ 다음에 DocBook 요소 이름을 쓰고, 한 칸 띄우고 요소 내용을 쓰고 }}로 닫으면 됩니다. 태그가 내포되지 않는 단순한 인라인 요소들에 사용할 수 있습니다.
{{keycap F1}}
문서 내부에 주석을 첨가하는 방법 (주석기능 참고)
프로그램 소스 코드와 비슷한 방식으로 줄 제일 처음의 <<<와 역시 줄 제일 처음의 >>> 사이에 있는 것들은 변환 없이 그대로 출력됩니다. 이를 이용해서 현재 Wiki-DocBook에서 지원하지 않는 DocBook 태그들을 그대로 문서에 집어 넣을 수 있습니다.
<<<
<head>
<title>DocBook 한국♡ 홈페이지</title>
<summary>DocBook 한국 홈페이지</summary>
<keywords>
DocBook, XML, SGML, 공개 문서, 전자 문서, 문서, 형식, 포맷
</keywords>
</head>
>>>
<head>
<title>DocBook 한국♡ 홈페이지</title>
<summary>DocBook 한국 홈페이지</summary>
<keywords>
DocBook, XML, SGML, 공개 문서, 전자 문서, 문서, 형식, 포맷
</keywords>
</head>