문서 내보내기와 가져오기할 때 사용하는 파일 형식을 설명합니다. 이 문서는 쓰리래빗츠 북 2.0.0 버전을 기준으로 합니다.
문서 내보내기와 가져오기에 대한 설명은 다음을 참고하세요.
기본 디렉토리 구조
내보내기한 파일은 ZIP 형식으로 압축한 파일입니다. 압축 파일 내부 구조는 다음과 같습니다.
book
디렉토리문서 내용 XML 파일이 위치하는 디렉토리
image
디렉토리그림 파일과 그림 목록 XML 파일이 위치하는 디렉토리
그림이 없을 때는 image
디렉토리가 필요 없습니다.
book
디렉토리
book
디렉토리에는 문서 내용을 담고 있는 XML 파일이 있습니다.
책이든 짧은 문서이든 상관없이 한 파일에 모든 내용이 들어갑니다.
각 파일 이름은 UUID와 xml 확장자로 이루어집니다.
UUID에 대한 설명은 UUID 만들기를 참고합니다.
book
태그
book
태그는 문서 정보를 담고 있는 properties
태그와 장 정보를 담고 있는 여러 chapter
태그로 이루어집니다.
기본 구조는 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?> <book> <properties> <property name="title" value="3Rabbitz Book 2.0 설치 가이드" /> <property name="subtitle" value="" /> <property name="edition" value="2.0" /> <property name="author" value="(주)쓰리래빗츠" /> <property name="subject" value="" /> <property name="keywords" value="" /> <property name="type" value="BOOK" /> <property name="locale" value="ko" /> <property name="tags" value="매뉴얼, 매뉴얼_2" /> <property name="config" value=""start_chapter_in_odd": "true", "support_comment": "true"" /> </properties> <chapter id="5c9882e0f5143aac"> .... </chapter> <chapter id="7b24f6496b23e86d"> .... </chapter> </book>
property
태그 정보는 다음과 같습니다.
이름 | 설명 | 필수 입력 |
---|---|---|
| 제목 | 예 |
| 부제목 | 아니오 |
| 에디션 | 아니오 |
| 저자로 사용자 아이디를 입력합니다. | 예 |
| 주제 | 아니오 |
| 키워드 | 아니오 |
| 유형으로 대문자로 | 예 |
| 언어로 한국어는 ko, 일본어는 ja, 영어는 en_US를 입력합니다. | 예 |
| 라벨을 입력합니다. 자세한 사항은 다음을 참고합니다. | 아니오 |
| 자세한 설명은 book 태그 옵션을 참고합니다. | 아니오 |
값이 없는 property
는 생략할 수 있습니다.
chapter
태그
chapter
태그는 장 정보를 담고 있는 properties
태그와 단락 내용을 담고 있는 element
태그로 이루어집니다.
<chapter id="5c9882e0f5143aac"> <properties> <property name="title" value="제목" /> <property name="type" value="TITLE" /> <property name="always_top" value="false" /> </properties> <element id="2c8ef0e0500582a2"> ... </element> <element id="353a4bb7e297fb79"> ... </element> </chapter>
짧은 문서에는
chapter
태그가 하나만 존재해야 합니다.상호 참조 대상이 아니라면
chapter
와element
태그id
속성을 생략할 수 있습니다.
property
태그 정보는 다음과 같습니다.
이름 | 설명 | 필수 입력 |
---|---|---|
| 제목 | 예 |
| 장 유형 | 예 |
| 부제목 | 아니오 |
| 저자로 사용자 아이디를 입력합니다. | 아니오 |
| 장을 부와 동일한 최상위 단계로 하려면 true를 입력합니다. | 아니오 |
| 사용자 정의 아이디 | 아니오 |
| 자세한 설명은 chapter 태그 옵션을 참고합니다. | 아니오 |
장 유형(type
)에는 다음 값을 입력할 수 있습니다.
장 유형 | 값 |
---|---|
제목 | TITLE |
추천사 | FOREWORD |
차례 | TOC |
그림 차례 | LIST_OF_FIGURES |
표 차례 | LIST_OF_TABLES |
머리말 | PREFACE |
감사의 글 | ACKNOWLEDGMENTS |
권두 장 | FRONT_CHAPTER |
장 | CHAPTER |
부 | PART |
부록 | APPENDIX |
용어집 | GLOSSARY |
찾아보기 | INDEX |
권말 장 | BACK_CHAPTER |
element
태그
element
태그는 단락 정보를 담고 있는 properties
태그와 단락 내용을 담고 있는 content
태그로 이루어집니다.
<element id="2c8ef0e0500582a2"> <properties> <property name="type" value="heading1" /> </properties> <content><![CDATA[비밀 번호 찾기]]></content> </element>
내용이 없어도 content
태그는 존재해야 합니다.
property
태그 정보는 다음과 같습니다.
이름 | 설명 | 필수 입력 |
---|---|---|
| 단락 유형 | 예 |
| 자세한 설명은 element 태그 옵션을 참고합니다. | 아니오 |
| 사용자 정의 아이디 | 아니오 |
단락 유형(type
)에는 다음 값을 입력할 수 있습니다.
단락 유형 | 갑 |
---|---|
보통 |
|
제목 1 |
|
제목 2 |
|
제목 3 |
|
제목 4 |
|
제목 5 |
|
헤드라인 |
|
코드 |
|
명령어 |
|
줄 바꿈 유지 |
|
블럭 인용구 |
|
권두 명구 |
|
순서 목록 |
|
비순서 목록 |
|
정의 목록 |
|
콜아웃 목록 |
|
단계 |
|
노트 |
|
팁 |
|
주의 |
|
교정 |
|
그림 단락 |
|
표 단락 |
|
차례 |
|
그림 차례 |
|
표 차례 |
|
용어집 |
|
찾아보기 |
|
자동 페이지 나누기 |
|
빈 페이지 |
|
여백 |
|
수평선 |
|
Float 하지 않기 |
|
레이아웃 페이지 |
|
디자인 페이지 |
|
다른 단락 포함하기 |
|
단락 유형별 content
태그 작성 요령
텍스트 단락
텍스트 단락 content
태그 내용은 에디터로 작업할 때와 비슷합니다. 자세한 사항은 다음을 참고하세요.
content
태그 내용은 CDATA
처리합니다.
<br> 태그가 아닌 줄 바꿈(\n) 글자로 줄 바꿈합니다.
<content><![CDATA[# 자바 6.0 이상을 설치합니다. # 3Rabbitz Book 설치 파일을 내려받습니다. # 3Rabbitz Book 설치 파일 압축을 풉니다. # 3Rabbitz Book을 시작합니다. # 설치 마법사를 실행합니다.]]></content>
태그가 아닌 <
과 >
과 &
문자는 <e;
와 >e;
와 &
로 처리합니다.
<content><![CDATA[태그가 아닌 <과 >과 & 문자는 &lte;와 &gte;와 &amp;로 처리합니다.]]></content>
문자 유형
문자 유형은 html
태그로 처리합니다.
<content><![CDATA[리눅스 배포판과 버전에 따라 <strong>자바를 설치하는 방법</strong>이 매우 상이합니다. 그래서 자바 설치는 리눅스 배포판과 버전에 맞게 진행합니다.]]></content>
문자 유형별 html
태그는 다음과 같습니다.
문자 유형 | 태그 |
---|---|
매우 강조 |
|
강조 |
|
코드 |
|
인라인 주석 |
|
아래 첨자 |
|
위 첨자 |
|
삭제 |
|
모든 태그는 소문자로 작성합니다.
교정 단락 유형은 다음과 같이 작성합니다.
<content><![CDATA[리눅스 배포판과 버전에 따라 <strong>자바를 설치하는 방법</strong>이 매우 상이합니다.<ins title="dimdol" datetime="2013-10-29 오후 07:18">표현 수정</ins> 그래서 자바 설치는 리눅스 배포판과 버전에 맞게 진행합니다.]]></content>
ins
태그 title
속성으로 사용자 아이디를, datetime
속성으로 시간을 입력합니다.
콜아웃 단락 유형은 다음과 같이 작성합니다.
<content><![CDATA[<<span class="callout">1</span> 비밀번호를 잊으셨나요?> 링크는 메일 서버를 설정해야 나타납니다.]]></content>
링크
상호 참조 링크는 class
속성 값을 reference
로 하는 a
태그로 작성합니다.
<content><![CDATA[경우에 따라서 여러 장을 부<small>(Part)</small>로 묶기도 합니다. 자세한 설명은 <a class="reference" href="#678e01b6b60ba239">부 유형 장 만들기</a>를 참고합니다.]]></content>
UUID 앞에 #을 붙인 값을 href
속성에 입력합니다. UUID는 참조하는 장 또는 제목, 그림, 표 단락 아이디입니다.
웹 링크는 class
속성 값을 link
로 하는 a
태그로 작성합니다.
<content><![CDATA[쓰리래빗츠 북을 설치하는 방법은 <a class="link" href="http://www.3rabbitz.com/book_installation_guide_2_0_ko">3Rabbitz Book 설치 가이드</a>를 참고합니다.]]></content>
메일 링크는 class
속성 값을 link
로 하는 a
태그로 작성합니다.
<content><![CDATA[이메일: <a class="link" href="mailto:support@3rabbitz.com">support@3rabbitz.com</a>]]></content>
마크
찾아보기를 위한 마크는 다음과 같이 작성합니다. span
태그 내용 작성 방법은 다음을 참고합니다.
<content><![CDATA[본문<span class="mark index">본문</span>]]></content>
주석
주석은 다음과 같이 작성합니다.
<content><![CDATA[대부분의 입력 화면에서 <code>Enter</code><cite><span>맥 OS에서는 <<code>RETURN</code>> 키를 누릅니다.</span></cite> 키를 누르면 저장됩니다.]]></content>
단락 안 그림
내 컴퓨터에서 가져오기한 단락 안 그림은 img
태그 src
속성을 /r/image/get/UUID
형식으로 작성합니다. width
와 height
속성도 설정해야 합니다.
<content><![CDATA[서식 지우기(<img src="/r/image/get/5d16c280f25771c4" width="16" height="15" />)를 클릭하면 문자 유형, 링크, 찾아보기, 주석 등과 관련한 설정이 모두 삭제됩니다.]]></content>
웹에서 가져오기한 단락 안 그림은 img
태그 src
속성에 그림 URL을 입력합니다. width
와 height
속성도 설정해야 합니다.
<content><![CDATA[서식 지우기(<img src="http://www.3rabbitz.com/resource/image/icon/google.png" width="16" height="16" />)를 클릭하면 문자 유형, 링크, 찾아보기, 주석 등과 관련한 설정이 모두 삭제됩니다.]]></content>
그림 단락
그림 단락은 유형에 따라 content
태그 내용이 달라집니다.
<element id="443a18d373962c3c"> <properties> <property name="type" value="image" /> <property name="config" value=""mode": "file", "caption": "명령 프롬프트 실행", "width": "400", "height": "448"" /> </properties> <content><![CDATA[0e545145c8560d4d]]></content> </element>
- 내 컴퓨터에서 가져오기
config
속성mode
값은file
로 하고content
태그에는 파일 UUID를 입력합니다.config
속성에서width
와height
를 설정해야 합니다.- 내 컴퓨터에서 가져오기
config
속성mode
값은reference
로 하고content
태그에는 참조하는 그림 단락 UUID를 입력합니다.- 웹에서 가져오기
config
속성mode
값은url
로 하고content
태그에는 그림 URL을 입력합니다.- 웹에서 기타 요소 가져오기
config
속성mode
값은other
로 하고content
태그에는 코드를 입력합니다.
그림 단락은 config
속성으로 다양한 설정을 할 수 있습니다. 자세한 사항은 element 태그 옵션을 참고합니다.
표 단락
표 단락은 content
태그 내용을 HTML table
태그로 작성합니다.
<element id="40ff94d01bb6c511"> <properties> <property name="type" value="table" /> <property name="config" value=""table_layout": "fixed"" /> </properties> <content><![CDATA[...]]></content> </element>
table
태그 구조는 다음과 같습니다.
<table> <caption>주요 서식</caption> <thead> <tr> <th><div>항목</div></th> <th><div>설명</div></th> <th><div>예</div></th> </tr> </thead> <tbody> <tr> <th><div>강조</div></th> <td><div>강조가 필요한 단어 및 문장은 진하게 표기했습니다.</div></td> <td class="to_center"><div><strong>강조</strong></div></td> </tr> <tr> <th><div>코드, 파일 이름</div></th> <td><div>코드, 명령어, 파일 이름 등은 고정폭 글꼴로 표기했습니다.</div></td> <td class="to_center"><div><code>3RABBIZ_HOME</code></div></td> </tr> </tbody> </table>
이 예제에서는 읽기 편하게 하기 위해서 태그와 태그 사이에 줄 바꿈이나 들여쓰기를 했지만 실제로는 내용 부분을 제외하고는 줄 바꿈이나 여백이 있어서는 안됩니다.
표 제목은
caption
태그에 작성합니다. 표 제목이 없을 때도<caption></caption>
으로 설정해야 합니다.머리 행은
thead
태그 안에 작성합니다.일반 행은
tbody
태그 안에 작성합니다.바닥 행은
tfoot
태그 안에 작성합니다.thead
와tfoot
태그 안에서는td
태그가 아닌th
태그를 사용합니다.tbody
태그 안에서 제목 셀은th
태그로 작성합니다.td
와th
태그 아래에div
태그를 작성하고 그 안에 셀 내용을 작성합니다.td
와th
태그colspan
과rowspan
속성으로 셀을 병합할 수 있습니다.
<td colspan="2" rowspan="3"><div>...</div></td>
td
와th
태그class
속성에 셀 정렬 방법을 설정할 수 있습니다.
정렬 | class 값 |
---|---|
텍스트 왼쪽 맞춤 |
|
텍스트 오른쪽 맞춤 |
|
텍스트 가운데 맞춤 |
|
텍스트 양쪽 맞춤 |
|
객체 단락
객체 단락은 다음과 같습니다.
<element id="82ec906ca55d930a"> <properties> <property name="type" value="list_of_figures" /> </properties> <content><![CDATA[]]></content> </element>
객체 유형은 다음과 같습니다.
단락 유형 | 갑 |
---|---|
차례 |
|
그림 차례 |
|
표 차례 |
|
용어집 |
|
찾아보기 |
|
자동 페이지 나누기 |
|
빈 페이지 |
|
여백 |
|
수평선 |
|
Float 하지 않기 |
|
레이아웃 페이지 |
|
디자인 페이지 |
|
다른 단락 포함하기 |
|
그림 차례, 표 차례, 자동 페이지 나누기, 빈 페이지, 수평선, Float하지 않기 객체는
type
속성만을 설정합니다.차례, 용어집, 찾아보기, 여백, 레이아웃 페이지, 디자인 페이지, 다른 단락 포함하기 객체는
config
속성으로 옵션을 설정합니다. 자세한 옵션은 element 태그 옵션을 참고합니다.찾아보기, 디자인 페이지, 다른 단락 포함하기 객체는
content
태그에 내용을 입력해야 합니다.
찾아보기 객체
찾아보기 객체 content
태그 내용은 다음과 같이 작성합니다.
<content><![CDATA[#see EJB=Enterprise JavaBeans KBS=_한국방송공사 #see_also EJB=Enterprise JavaBeans KBS=한국방송공사]]></content>
#see
와 #see_also
를 구분자로 See와 See aslo를 설정합니다. 작성 방법은 다음을 참고합니다.
디자인 페이지 객체
디자인 페이지 객체 content
내용은 해당 객체를 에디터로 작성하고 문서 내보내기를 한 후 해당 부분을 복사해서 사용합니다.
다른 단락 포함하기 객체
장 전체를 포함할 때 content
태그 내용에 _chapter
를 접미사로 장 아이디를 입력합니다.
<content><![CDATA[753a019e8800743a_chapter]]></content>
절 아래 내용을 포함할 때 content
태그 내용에 _section
을 접미사로 제목 단락 아이디를 입력합니다.
<content><![CDATA[08731c6e3f3d2ed9_section]]></content>
단락을 포함할 때 content
태그 내용에 단락 아이디를 입력합니다.
<content><![CDATA[0cc36d2992debc5f]]></content>
쉼표를 구분자로 content
태그 내용에 여러 단락을 입력할 수 있습니다.
<content><![CDATA[08731c6e3f3d2ed9_section;0cc36d2992debc5f;85e729a43cb8c5f4]]></content>
image
디렉토리
image
디렉토리에는 images.xml
파일과 실제 그림 파일이 있습니다.
images.xml
파일
그림 정보를 담고 있는 파일입니다.
<?xml version="1.0" encoding="UTF-8"?> <images> <image id="03c05c5258f0529a"> <properties> <property name="name" value="03c05c5258f0529a" /> <property name="filename" value="03c05c5258f0529a" /> <property name="size" value="41010" /> <property name="content_type" value="image/png" /> </properties> </image> <image id="32d3f85c06356faf"> <properties> <property name="name" value="32d3f85c06356faf" /> <property name="filename" value="32d3f85c06356faf" /> <property name="size" value="31904" /> <property name="content_type" value="image/png" /> </properties> </image> </images>
property
태그 정보는 다음과 같습니다.
속성 이름 | 설명 | 필수 입력 |
---|---|---|
| 그림 이름 | 예 |
| 파일 이름 | 예 |
|
| 예 |
| 그림 파일 유형으로 | 예 |
다음 항목에 같은 UUID를 사용합니다.
image
태그id
속성그림
name
과filename
속성이미지 파일 이름
쓰리래빗츠 북 서버에 UUID가 같은 그림이 존재하면 그림을 다시 저장하지 않고 기존 그림을 사용합니다.
그림 파일
그림 파일은 확장자 없이 UUID만을 이름으로 저장합니다.
UUID 만들기
그림 파일 이름을 포함한 모든 아이디는 16자리로 이루어진 고유한 문자열입니다. 다음은 이 UUID를 만드는 자바 코드입니다.
import java.security.SecureRandom; public class UuidGenerator { private static SecureRandom numberGenerator = new SecureRandom(); public static String generateUUID() { byte[] randomBytes = new byte[8]; numberGenerator.nextBytes(randomBytes); return toHexString(randomBytes); } private static String toHexString(byte[] raw) { StringBuilder sb = new StringBuilder(2 * raw.length); for (int i = 0; i < raw.length; i++) { String hex = Integer.toHexString(raw[i] & 0xFF); if (hex.length() == 1) { sb.append('0'); } sb.append(hex); } return sb.toString(); } }
config 속성 처리
book
태그와 chapter
태그와 element
태그에 config
속성으로 다양한 설정을 합니다.
<element id="40ff94d01bb6c511"> <properties> <property name="type" value="table" /> <property name="alias" value="" /> <property name="config" value=""table_layout": "user", "omit_caption": "false", "table_layout_setting": "120,?,120"" /> </properties> <content><![CDATA[...]]></content> </element>
config
값은 다음과 같지만 태그 속성으로 넣기 위해서 큰 따옴표를 "로 바꾸어 입력합니다.
"table_layout": "user", "omit_caption": "false", "table_layout_setting": "120,?,120"
book
태그에 설정할 수 있는 옵션입니다.
옵션 | 값 | 설명 |
---|---|---|
| true/false 또는 생략 | 웹 뷰어에서 PDF 내려받기를 허용하지 않습니다. |
| true/false 또는 생략 | 웹 뷰어에서 EPUB 내려받기를 허용하지 않습니다. |
| true/false 또는 생략 | 권두 구성 페이지 번호로 아라비아 숫자를 사용합니다. |
| true/false 또는 생략 | 홀수 페이지에서 장을 시작합니다. |
| true/false 또는 생략 | 제목 단락 다음에 들여쓰기를 합니다. |
| true/false 또는 생략 | 댓글을 지원합니다. |
chapter
태그에 설정할 수 있는 옵션입니다.
옵션 | 값 | 설명 |
---|---|---|
| true/false 또는 생략 | 편집할 수 없도록 하기 |
| true/false 또는 생략 | 장 번호 새로 매기기 |
| 쉼표를 구분자로 web, pdf, epub 설정 | 감추기 |
element
태그에 설정할 수 있는 옵션입니다.
옵션 | 값 | 설명 | 적용 단락 |
---|---|---|---|
| 쉼표를 구분자로 web, pdf 설정 | 웹 뷰어에서 PDF 내려받기를 허용하지 않습니다. | 모든 단락 |
| true/false 또는 생략 | 웹 뷰어에서 EPUB 내려받기를 허용하지 않습니다. | 순서 목록 |
| auto: 자동 fixed: 고정 user: 설정 | 표 레이아웃 | 표 단락 |
| 자세한 방법은 다음을 참고합니다. | 표 레이아웃이 user일 때만 설정합니다. | 표 단락 |
| file: 내 컴퓨터에서 가져오기 reference: 다른 문서에서 가져오기 url: 웹에서 가져오기 other: 웹에서 기타 요소 가져오기 | 그림 단락 모드 | 그림 단락 |
| true/false 또는 생략 | 제목 생략 | 그림/표 단락 |
| 그림 제목 | 그림 단락 | |
| 정수 | 그림 너비(픽셀 단위) | 그림 단락 |
| 정수 | 그림 높이(픽셀 단위) | 그림 단락 |
| none: 없음 left: 왼쪽 right: 오른쪽 | 그림 Float | 그림 단락 |
| true/false 또는 생략 | PDF에서 페이지 전환에 따른 그림 크기 줄이지 않기 | 그림 단락 |
| CHAPTER_TITLE: 장 HEADING1: 제목 1 HEADING2: 제목 2 HEADING3: 제목 3 HEADING4: 제목 4 HEADING5: 제목 5 | 표시할 차례 수준 | 차례 객체 단락 |
| 용어집 UUID | 용어집 객체 단락 | |
| letter_by_letter word_by_word | 찾아보기 정렬 기준 | 찾아보기 객체 단락 |
| 정수 | 여백 높이 | 여백 객체 단락 |
| half_title_page: 약표제지 title_page: 표제지 | 레이아웃 페이지 유형 | 레이아웃 페이지 객체 단락 |
| 설명 | 디자인 페이지/다른 단락 포함하기 객체 단락 | |
| 0: 조정하지 않음 1: 제목을 한 단계 위로 2: 제목을 두 단계 위로 -1: 제목을 한 단계 아래로 -2: 제목을 두 단계 아래로 | 제목 수준 조정 | 다른 단락 포함하기 객체 단락 |