한 권의 책은 여러 개의 챕터(장)으로 나눠져 있다. EPUB으로 책을 만들 때는 각 챕터를 하나의 HTML(xhtml) 파일로 구분해 주는 것이 좋다. 책 한 권을 HTML 파일 하나로 만들면 저사양 기기에서 오류가 발생하거나 페이지를 넘기는 시간이 오래 걸릴 수 있다.
몇 년 전에는 한 챕터(HTML)를 100kb ~ 300kb 정도로 제한을 두기도 했다. 챕터가 너무 크면 갤럭시 A, 아이폰 3 처럼 성능이 떨어지는 기기로 책을 볼 때 뷰어가 강제로 종료되는 등의 문제가 생길 수 있고, 챕터가 넘어갈 때 시간이 오래 걸리기도 한다.
최근에 나온 모바일 기기에서는 이런 문제가 없지만, 여전히 저사양 모바일 기기를 사용하는 독자가 많기 때문에 다양한 독자층을 고려한다면 한 챕터가 300kb를 넘지 않는게 좋다.
챕터를 나누면 편집도 쉬워진다. 책을 구성하는 단위 중에 챕터(장)는 편집이 완성된 단위이다. 첫번째 챕터와 두번째 챕터의 편집을 완전히 다르게 하는 경우는 드물기 때문에 첫번째 챕터의 스타일을 잡아 놓으면 그 다음 부터는 스타일을 추가할 일이 많지 않다.
텍스트 파일이나 HTML 파일로 본문 전체를 불러왔다면 책 한권이 하나의 HTML 파일로 저장된다. Sigil에서는 이렇게 하나로 된 파일을 여러 개로 나눠주는 기능이 있다.
- 현재 커서 위치에서 나누기
[현재 커서 위치에서 나누기] 기능을 이용하면 커서가 위치한 곳에서 파일을 나눌 수 있다. 커서를 1장이 시작되는 곳에 놓고 아래 처럼 나누기 기능을 실행하면 Section0001.xhtml 파일이 Section0002.xhtml 파일이 생기면서 커서 뒷부분이 새로운 파일로 나뉘게 된다.
- 장을 구분할 위치에 커서를 놓는다.
- [편집 > 현재 커서 위치에서 나누기] 혹은 아이콘을 클릭한다
- Split Marker와 Split at Marker
챕터를 하나씩 나누지 않고 파일 하나로 책을 편집한 후에 한번에 나누고 싶다면 Split Marker를 이용한다. Split Marker는 파일로 나눌 위치를 표시하는 기능이다. Split Marker로 표시된 부분은 Split at Marker를 이용해 한번에 나눌 수 있다.
- 장을 구분할 위치에 커서를 놓는다.
- [삽입 >
Split Marker]를 클릭해 나눌 위치를 표시한다.
Split Marker를 삽입하면 구분선이 그어진다. 이 부분을 코드 보기로 보면 아래 코드가 추가된 것을 볼 수 있다.
<hr class="sigil_split_marker" />
코드보기에서 Split Marker를 추가하고 싶은 위치에 이 코드를 삽입하면 [삽입 > Split Marker]를 한 것과 동일하다.
- [편집 > Split at Marker]로 표시한 위치를 나눈다.
Split at Marker로 챕터를 나누면 [Section0001_0001.xhtml]처럼 파일명 나누기 전 파일명 뒤에 _0001, _0002로 번호가 붙는다. 파일을 나누기 전에 [Section.xhtml]처럼 파일명을 수정해 놓으면 챕터 파일명을 깔끔하게 정리할 수 있다.
챕터가 10개 이내로 나눠진 책이라면 [현재 커서 위치에서 나누기]나 [Split Marker]로 나누는게 어렵지 않다. 하지만 챕터가 30개쯤 된다면 하나씩 찾아 나누기 쉽지 않다. 이럴 때 정규표현식[Regex, Regular expression]을 사용하면 단순한 반복 작업을 쉽게 끝낼 수 있다.
정규표현식을 이용하면 동일한 패턴으로 된 내용을 쉽게 찾을 수 있다. 예를 들어 본문 내에서 2자리 숫자를 찾고 싶을 때 정규표현식을 사용할 수 있다.
2자리 숫자는 00부터 99까지 100가지 경우의 수가 있다. 찾기 기능을 이용하면 00, 01, 02를 하나씩 대입해서 100번을 찾아야 한다. 하지만 정규표현식을 이용하면 아래 식으로 한번에 00부터 99까지 2자리로 된 모든 수를 찾을 수 있다.
예제로 든 '이상한 나라의 앨리스'는 장 제목이 아래처럼 되어 있다.
<p>1장</p>
<p>토끼
굴속으로</p>
<p>2장</p>
<p>눈물
웅덩이</p>
<p>(숫자)장</p>가 반복적으로 나오고 바로 다음에 <p>장제목</p>이 나오는 패턴이다.
책의 장 제목은 이와 똑같지 않더라도 패턴이 동일하게 반복된다. 이렇게 패턴이 반복되는 형태라면 정규표현식으로 찾거나, 찾아바꾸는게 가능하다.
위 식을 [찾기]에 넣은 후 찾기를 하면 장 번호를 모두 찾을 수 있다.
'(\d+)'는 하나 이상의 숫자를 의미한다. 그래서 '(\d+)장'을 정규표현식으로 찾으면 '1장, 2장, 3장…10장, 11장' 등 숫자 뒤에 '장'이 붙은 문자를 모두 찾을 수 있다.
앞뒤에 <p></p>태그로 묶인 숫자 뒤에 '장'이 붙은 문자는 장 번호밖에 없으니 위 정규표현식을 이용하면 장 번호만 모두 찾을 수 있게 된다.
찾기로 장 제목이 제대로 찾아진다면 이제 원하는 형태로 바꿀 차례다.
[바꾸기]에 아래 내용을 추가한 후 [모두 바꾸기]를 누른다.
<hr class="sigil_split_marker" /><h3>\1장</h3>
이제 책보기로 본문을 보면 각 장의 시작부분에 Split Marker 표시인 선이 추가되고 장 번호가 <h3> 태그로 묶인 것을 볼 수 있다.
이상한 나라의 앨리스는 모두 12장으로 되어 있는데 정규표현식과 찾아바꾸기로 한번에 각 장의 시작부분에 Split Marker를 추가하고 제목 태그까지 바뀐 것을 볼 수 있다. 20번 이상 반복해야 하는 단순 작업을 정규표현식으로 간단히 끝낸 것이다.
정규표현식을 자세히 익히는건 아주 어렵지만 전자책 편집에 필요한 식은 그리 많지 않다. 몇가지 간단한 식만 기억해도 수백번 반복해야 하는 작업을 한두번으로 줄일 수 있다. 인터넷을 찾아보면 정규표현식에 대한 자세한 설명을 볼 수 있다.
Split at Marker를 이용해 장별로 챕터를 나눴다. 챕터 구분을 명확히 하기 위해 빈 HTML 추가하기를 이용해 파일을 추가 후 속표지, 목차, 판권면(Copy Right)등을 정리해 준다.
Split at Marker로 나눌 때 이런 페이지까지 나눠도 된다. 필자는 1챕터를 Section_0001로, 마지막 챕터를 Section_0012로 파일명을 만들기 위해 그에 맞춰 Split at Marker를 사용했다.
Split at Marker로 장을 나눈 후 생성된 파일 목록
속표지, 목차, 판권면을 정리한 후 파일 목록