문서 내보내기/가져오기 파일 형식 2.0

문서 내보내기와 가져오기할 때 사용하는 파일 형식을 설명합니다. 이 문서는 쓰리래빗츠 북 2.0.0 버전을 기준으로 합니다.

문서 내보내기와 가져오기에 대한 설명은 다음을 참고하세요.

기본 디렉토리 구조

내보내기한 파일은 ZIP 형식으로 압축한 파일입니다. 압축 파일 내부 구조는 다음과 같습니다.

book 디렉토리

문서 내용 XML 파일이 위치하는 디렉토리

image 디렉토리

그림 파일과 그림 목록 XML 파일이 위치하는 디렉토리

그림이 없을 때는 image 디렉토리가 필요 없습니다.

book 디렉토리

book 디렉토리에는 문서 내용을 담고 있는 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="&quot;start_chapter_in_odd&quot;: &quot;true&quot;, &quot;support_comment&quot;: &quot;true&quot;" />
  </properties>
  <chapter id="5c9882e0f5143aac">
    ....
  </chapter>
  <chapter id="7b24f6496b23e86d">
    ....
  </chapter>
</book>

property 태그 정보는 다음과 같습니다.

이름

설명

필수 입력

title

제목

subtitle

부제목

아니오

edition

에디션

아니오

author

저자로 사용자 아이디를 입력합니다.

subject

주제

아니오

keywords

키워드

아니오

type

유형으로 대문자로 BOOK 또는 ARTICLE을 입력합니다.

locale

언어로 한국어는 ko, 일본어는 ja, 영어는 en_US를 입력합니다.

tags

라벨을 입력합니다. 자세한 사항은 다음을 참고합니다.

아니오

config

자세한 설명은 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>

property 태그 정보는 다음과 같습니다.

이름

설명

필수 입력

title

제목

type

장 유형

subtitle

부제목

아니오

author

저자로 사용자 아이디를 입력합니다.

아니오

always_top

장을 부와 동일한 최상위 단계로 하려면 true를 입력합니다.

아니오

alias

사용자 정의 아이디

아니오

config

자세한 설명은 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 태그 정보는 다음과 같습니다.

이름

설명

필수 입력

type

단락 유형

config

자세한 설명은 element 태그 옵션을 참고합니다.

아니오

alias

사용자 정의 아이디

아니오

단락 유형(type)에는 다음 값을 입력할 수 있습니다.

단락 유형

보통

normal

제목 1

heading1

제목 2

heading2

제목 3

heading3

제목 4

heading4

제목 5

heading5

헤드라인

headline

코드

code

명령어

command

줄 바꿈 유지

pre

블럭 인용구

blockquote

권두 명구

epigraph

순서 목록

ordered_list

비순서 목록

unordered_list

정의 목록

definition_list

콜아웃 목록

callout_list

단계

step1

노트

note

tip

주의

caution

교정

proofreading

그림 단락

image

표 단락

table

차례

toc

그림 차례

list_of_figures

표 차례

list_of_tables

용어집

glossary

찾아보기

index

자동 페이지 나누기

page_break

빈 페이지

blank_page

여백

space

수평선

horizontal_line

Float 하지 않기

clear_float

레이아웃 페이지

layout_page

디자인 페이지

single_design_page

다른 단락 포함하기

include

단락 유형별 content 태그 작성 요령

텍스트 단락

텍스트 단락 content 태그 내용은 에디터로 작업할 때와 비슷합니다. 자세한 사항은 다음을 참고하세요.

content 태그 내용은 CDATA 처리합니다.

<br> 태그가 아닌 줄 바꿈(\n) 글자로 줄 바꿈합니다.

<content><![CDATA[# 자바 6.0 이상을 설치합니다.
# 3Rabbitz Book 설치 파일을 내려받습니다.
# 3Rabbitz Book 설치 파일 압축을 풉니다.
# 3Rabbitz Book을 시작합니다.
# 설치 마법사를 실행합니다.]]></content>

태그가 아닌 <>& 문자는 &lte;&gte;&amp;로 처리합니다.

<content><![CDATA[태그가 아닌 &lt;&gt;&amp; 문자는 &amp;lte;&amp;gte;&amp;amp;로 처리합니다.]]></content>

문자 유형

문자 유형은 html 태그로 처리합니다.

<content><![CDATA[리눅스 배포판과 버전에 따라 <strong>자바를 설치하는 방법</strong>이 매우 상이합니다. 그래서 자바 설치는 리눅스 배포판과 버전에 맞게 진행합니다.]]></content>

문자 유형별 html 태그는 다음과 같습니다.

문자 유형

태그

매우 강조

strong

강조

em

코드

code

인라인 주석

small

아래 첨자

sub

위 첨자

sup

삭제

del

모든 태그는 소문자로 작성합니다.

교정 단락 유형은 다음과 같이 작성합니다.

<content><![CDATA[리눅스 배포판과 버전에 따라 <strong>자바를 설치하는 방법</strong>이 매우 상이합니다.<ins title="dimdol" datetime="2013-10-29 오후 07:18">표현 수정</ins> 그래서 자바 설치는 리눅스 배포판과 버전에 맞게 진행합니다.]]></content>

ins 태그 title 속성으로 사용자 아이디를, datetime 속성으로 시간을 입력합니다.

콜아웃 단락 유형은 다음과 같이 작성합니다.

<content><![CDATA[&lt;<span class="callout">1</span> 비밀번호를 잊으셨나요?&gt; 링크는 메일 서버를 설정해야 나타납니다.]]></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에서는 &lt;<code>RETURN</code>&gt; 키를 누릅니다.</span></cite> 키를 누르면 저장됩니다.]]></content>

단락 안 그림

내 컴퓨터에서 가져오기한 단락 안 그림은 img 태그 src 속성을 /r/image/get/UUID 형식으로 작성합니다. widthheight 속성도 설정해야 합니다.

<content><![CDATA[서식 지우기(<img src="/r/image/get/5d16c280f25771c4" width="16" height="15" />)를 클릭하면 문자 유형, 링크, 찾아보기, 주석 등과 관련한 설정이 모두 삭제됩니다.]]></content>

웹에서 가져오기한 단락 안 그림은 img 태그 src 속성에 그림 URL을 입력합니다. widthheight 속성도 설정해야 합니다.

<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="&quot;mode&quot;: &quot;file&quot;, &quot;caption&quot;: &quot;명령 프롬프트 실행&quot;, &quot;width&quot;: &quot;400&quot;, &quot;height&quot;: &quot;448&quot;" />
  </properties>
  <content><![CDATA[0e545145c8560d4d]]></content>
</element>
내 컴퓨터에서 가져오기

config 속성 mode 값은 file로 하고 content 태그에는 파일 UUID를 입력합니다. config 속성에서 widthheight를 설정해야 합니다.

내 컴퓨터에서 가져오기

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="&quot;table_layout&quot;: &quot;fixed&quot;" />
  </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>

이 예제에서는 읽기 편하게 하기 위해서 태그와 태그 사이에 줄 바꿈이나 들여쓰기를 했지만 실제로는 내용 부분을 제외하고는 줄 바꿈이나 여백이 있어서는 안됩니다.

<td colspan="2" rowspan="3"><div>...</div></td>

정렬

class 값

텍스트 왼쪽 맞춤

to_left

텍스트 오른쪽 맞춤

to_right

텍스트 가운데 맞춤

to_center

텍스트 양쪽 맞춤

to_justify

객체 단락

객체 단락은 다음과 같습니다.

<element id="82ec906ca55d930a">
  <properties>
    <property name="type" value="list_of_figures" />
  </properties>
  <content><![CDATA[]]></content>
</element>

객체 유형은 다음과 같습니다.

단락 유형

차례

toc

그림 차례

list_of_figures

표 차례

list_of_tables

용어집

glossary

찾아보기

index

자동 페이지 나누기

page_break

빈 페이지

blank_page

여백

space

수평선

horizontal_line

Float 하지 않기

clear_float

레이아웃 페이지

layout_page

디자인 페이지

single_design_page

다른 단락 포함하기

include

찾아보기 객체

찾아보기 객체 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 태그 정보는 다음과 같습니다.

속성 이름

설명

필수 입력

name

그림 이름

filename

파일 이름

size

byte를 단위로 하는 파일 크기

content_type

그림 파일 유형으로 image/png, image/jpeg, image/gif 만을 지원합니다.

다음 항목에 같은 UUID를 사용합니다.

쓰리래빗츠 북 서버에 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="&quot;table_layout&quot;: &quot;user&quot;, &quot;omit_caption&quot;: &quot;false&quot;, &quot;table_layout_setting&quot;: &quot;120,?,120&quot;" />
  </properties>
  <content><![CDATA[...]]></content>
</element>

config 값은 다음과 같지만 태그 속성으로 넣기 위해서 큰 따옴표를 &quot;로 바꾸어 입력합니다.

"table_layout": "user", "omit_caption": "false", "table_layout_setting": "120,?,120"

book 태그에 설정할 수 있는 옵션입니다.

book 태그 옵션

옵션

설명

disable_pdf_download

true/false 또는 생략

웹 뷰어에서 PDF 내려받기를 허용하지 않습니다.

disable_epub_download

true/false 또는 생략

웹 뷰어에서 EPUB 내려받기를 허용하지 않습니다.

use_arabic_for_front_matter

true/false 또는 생략

권두 구성 페이지 번호로 아라비아 숫자를 사용합니다.

start_chapter_in_odd

true/false 또는 생략

홀수 페이지에서 장을 시작합니다.

indent_after_heading

true/false 또는 생략

제목 단락 다음에 들여쓰기를 합니다.

support_comment

true/false 또는 생략

댓글을 지원합니다.

chapter 태그에 설정할 수 있는 옵션입니다.

chapter 태그 옵션

옵션

설명

edit_disabled

true/false 또는 생략

편집할 수 없도록 하기

renumbered

true/false 또는 생략

장 번호 새로 매기기

export_exclude

쉼표를 구분자로 web, pdf, epub 설정

감추기

element 태그에 설정할 수 있는 옵션입니다.

element 태그 옵션

옵션

설명

적용 단락

export_exclude

쉼표를 구분자로 web, pdf 설정

웹 뷰어에서 PDF 내려받기를 허용하지 않습니다.

모든 단락

renumbered

true/false 또는 생략

웹 뷰어에서 EPUB 내려받기를 허용하지 않습니다.

순서 목록

table_layout

auto: 자동

fixed: 고정

user: 설정

표 레이아웃

표 단락

table_layout_setting

자세한 방법은 다음을 참고합니다.

표 레이아웃이 user일 때만 설정합니다.

표 단락

mode

file: 내 컴퓨터에서 가져오기

reference: 다른 문서에서 가져오기

url: 웹에서 가져오기

other: 웹에서 기타 요소 가져오기

그림 단락 모드

그림 단락

omit_caption

true/false 또는 생략

제목 생략

그림/표 단락

caption


그림 제목

그림 단락

width

정수

그림 너비(픽셀 단위)

그림 단락

height

정수

그림 높이(픽셀 단위)

그림 단락

image_float

none: 없음

left: 왼쪽

right: 오른쪽

그림 Float

그림 단락

prevent_image_resize

true/false 또는 생략

PDF에서 페이지 전환에 따른 그림 크기 줄이지 않기

그림 단락

toc_level

CHAPTER_TITLE: 장

HEADING1: 제목 1

HEADING2: 제목 2

HEADING3: 제목 3

HEADING4: 제목 4

HEADING5: 제목 5

표시할 차례 수준

차례 객체 단락

glossary


용어집 UUID

용어집 객체 단락

index_sort

letter_by_letter

word_by_word

찾아보기 정렬 기준

찾아보기 객체 단락

space_height

정수

여백 높이

여백 객체 단락

layout_page

half_title_page: 약표제지

title_page: 표제지

레이아웃 페이지 유형

레이아웃 페이지 객체 단락

description


설명

디자인 페이지/다른 단락 포함하기 객체 단락

heading_adjustment

0: 조정하지 않음

1: 제목을 한 단계 위로

2: 제목을 두 단계 위로

-1: 제목을 한 단계 아래로

-2: 제목을 두 단계 아래로

제목 수준 조정

다른 단락 포함하기 객체 단락