posted by 내.맘.대.로 2016. 6. 27. 11:31

내맘대로의 EPUBGUIDE.NET에서 편집자의 의도를 그대로 살려 전자책을 제작해 드립니다.

종이책의 편집 스타일을 최대한 유지하며, 팝업 주석 처리, 이미지 확대 축소 등 전자책의 장점을 반영하여 전자책을 제작합니다. 탬플릿을 사용하지 않고, 책 한권 한권 고유 스타일을 살리기 때문에 전자책에서도 종이책 디자인을 느낄 수 있습니다.

한국출판문화진흥원의 [텍스트형 전자책 제작 지원 사업] 선정 도서는 ‘제작 난이도별 제작비 산정 기준에 근거하여’ 제작 단가를 산정하고, 일정에 맞춰 제작을 해 드리니 많은 문의 바랍니다.

자세한 내용은 여기로: https://www.epubguide.net/notice/309

오래 전 작성된 글은 현재의 Sigil 버전과 차이가 날 수 있습니다. 등록 일자를 확인 하고 1년 이상 지난 글은 변경된 내용이 있는지 확인하시기 바랍니다.

3. 콘텐츠 가격이 비싸다.

전자책 가격이 비싸서 이용하지 않는다는 얘기는 인터넷에 차고 넘친다. 모 출판 관련 기관에서 해당 기관이 내는 월간지 독자 100명을 대상으로 한 설문을 보면 소설 2,000원대, 인문 5,000원대, 경제경영 2,000원대 등이 나왔다.


이 결과를 설명하기 전에 아래 기사를 먼저 읽고 넘어가자.


전자책 독서실태조사  


우리나라 국민의 연간 전자책 독서율은 14.6%이며, 전자책을 읽지 않는 사람까지 포함한 국민 연평균 전자책 독서량은 1.6권으로 조사됐다.


문화체육관광부와 한국출판연구소가 성인남녀 2,000명을 대상으로 ‘최근 1년간 전자책을 읽은 경험이 있는지’에 대해 설문조사를 실시한 결과, 14.6%가 ‘있다’고 답했다. 연령별로는 20대가 29.2%로 가장 많았고, ‘10대’(21.5%), ‘30대’(17.5%) 순으로 이어졌다. 


http://203.241.185.12/asd/read.cgi?board=clipinfo&y_number=917


이 설문 결과의 신뢰도를 점수로 환산한다면 몇점이나 줄 수 있을까? 내가 준 점수는 0점이다. 문체부와 한국출판연구소라는 공신력 있는 기관의 결과를 일개 개인이 0점을 줬다면 이 기사가 나왔을 시기에는 욕을 먹었을 것이다.


이 설문 내용을 유통사의 실제 매출 데이터로 분석해 보면 왜 0점인지 수긍을 할 것이다.


유통사 매출 데이터를 기준으로 전자책을 가장 많이 구매해 보는 사람들은 30대 ~ 40대이다. 30세 ~ 50세 사이 연령대가 전자책 구매 금액의 60%, 구매 권수의 70% 정도를 소비한다. 구매 금액 기준으로 20대는 20% 안팎이고, 50대 이후가 10%정도 된다. 10대 이전(0세~19세 사이)는 10%밖에 되지 않는다.


위 설문을 보자. 이 기사만 본다면 20대가 전자책을 가장 많이 보고 10대가 그 다음으로 많이 볼거라는 생각을 할 수 밖에 없다. 독서 인구 중 14%가 전자책을 볼거라고 생각을 하게 된다. 그런데 현실은 전혀 다르다. 모 유통사(서점)에 가입한 회원 1,000만명 중 1년간 종이책을 1권이라도 구매한 사람은 약 200만명이고, 전자책을 구매한 사람은 종이책 구매자 대비 5%가 채 되지 않았다. 14%가 전자책을 읽는다는 결과와 너무 다르다.


전자책 관련 강의를 종종 하는데 사람들에게 이 자료를 보여주면 '왜 저런 결과가 나오냐'고 물어본다. 그럼 수강생들에게 즉석 설문을 해서 뭐가 문제인지 확인시켜 준다. 


"1년 사이 전자책을 본 적이 있는 분 손들어주세요."

90% 이상 손을 든다. 전자책에 관심있어 강의를 듣는 사람들이니 당연한 결과다.

이 결과를 갖고 신문에 '전자책에 관심있는 사람들 90%가 전자책 읽는다'라는 기사를 쓴다. 틀린 기사는 아니다. 다시 즉석 설문을 한다.


"1년 사이 본인 돈으로 전자책을 1권 이상 결제해 처음부터 끝까지 읽어보신 분 손들어주세요."

첫번째 질문에 손을 들었던 사람들 중 1/3만 손을 들고 있다. 청중에 따라 조금씩 차이는 나지만 대략 그렇다.


"최근 3개월 이내에 전자책을 결제해서 처음부터 끝까지 읽은 분 손들어주세요."

이제 10%도 남지 않는다. 


"1년간 읽은 책 중 전자책 비중이 30%정도 되는 분. 연간 10권의 책을 읽는다면 그 중 3권이 전자책인 분 손들어주세요."

아주 드물게 한두명, 아니면 손을 들고 있는 사람이 없다.


이런 즉석 설문 후에 사람들에게 저 기사가 왜 0점짜리인지 설명할 필요가 없다. 다들 뭐가 문제인지 이해를 한다. 


다시 책값은 2000원이 적정하다는 내용으로 돌아가 보자.

모 유통사에서도 2012년에 같은 설문을 한 적이 있다.

전자책 가격이 얼마면 적정하겠느냐. 하지만 질문도 바뀌고 설문은 대상 역시 세분해서 진행했다.


"적정한 종이책 가격, 적정한 전자책 가격"이 질문 내용이었다.


1. 직전 1년간 종이책도 전자책도 이용해 보지 않은 사람.

2. 종이책은 보지만(이후 동일) 전자책을 전혀 모르고 한번도 이용해 보지 않은 사람.

3. 전자책에 대해 알기는 하지만 한번도 이용해 보지 않은 사람.

4. 전자책을 가끔 이용하는 사람.

5. 전자책을 많이 이용하는 사람.


1번 대상자들은 종이책 가격을 6,000원, 전자책 가격을 3,000원 정도로 얘기했다.

2012년 종이책 평균 가격은 12000원 이상이었다. 시중에 판매되는 책들 대부분이 12,000원 ~ 15,000원 사이였고, 할인이 포함돼 판매된 종이책의 평균 가격은 12,000원 안팎이었다. 종이책을 보지 않는 사람들은 종이책의 적정 가격을 6,000원이라고 답을 했다.


2번 대상자는 종이책 가격을 8,000원대로 전자책 가격은 3,000원대로 얘기했다.

3번 대상자 역시 종이책 가격을 8,000원대로, 전자책 가격은 3,000원대로 얘기했다. 하지만 2번 대상자보다 몇백원 높았다.

이 둘을 다시 세분해 종이책을 많이 읽는 사람과 일년에 10권 미만으로 읽는 사람을 구분하면 종이책 가격은 10권 미만으로 보는 사람은 6000원~8000원, 10권 이상 보는 사람은 10,000원으로 나온다.


4번 대상자는 전자책 가격을 4,000원대로 답했다. 종이책은 2번, 3번과 비슷했다.

5번 대상자는 전자책 가격을 6,000원대로 답했다. 이들은 종이책 가격을 10,000원 수준으로 답했다.


실제 전자책 서점에서 판매되는 책 가격은 장르 소설은 3000원 전후, 일반 단행본(종이책을 전자책으로 판매하는)은 8000원 전후이다. 어떤 상품이든 소비자들은 자신이 지불하는 금액이 비싸다고 생각한다. 종이책 가격은 독자들에게 언제나 비쌌다. 전자책도 마찬가지다. 전자책 가격은 권당 1000원에 팔아도 독자들은 비싸다고 느낀다. 


MP3 파일을 보자. 1만원짜리 시디를 팔다가 MP3로 판매하면서 한곡에 500원~1000원씩 팔때도 비싸다고 했고, 100곡에 5000원에 팔아도 비싸다고 한다. 한달에 5000원만 내면 무제한으로 들을 수 있어도 이용료가 너무 비싸다고 투덜댄다. 


MP3를 돈을 내고 구매하는 사람들은 남들이 비싸다고 해도 돈주고 구매하지만, MP3가 비싸다고 불만인 사람은 무제한으로 들을 수 있어도 한달 5000원이 비싸다고 말한다. 


종이책의 인쇄/보관/유통 비용은 책값의 25%도 되지 않는다. 전자책 가격이 저렴해야 한다고 얘기하는 사람들은 전자책 원가가 낮다는 점을 근거로 내세우는데 인쇄/보관/유통에 드는 비용이 25%라는 얘기다. 전자책 가격은 종이책 대비 70% 정도에 판매가 되고 있다. 그리고 책을 읽는 사람들은 전자책 가격이 조금 비싸다고 느끼지만, 종이책 가격 역시 비싸다고 느낀다.


전자책 가격이 비싸서 안읽는다는 설문 결과가 어떤 대상에게 어떤 질문을 던져 나왔는지 확인해 보면 왜 전자책 소설 한권이 2,000원이 됐는지 알 수 있을 것이다. 설문을 진행한 사람이 장르소설과 일반 소설을 구분했을까? 설문에 답한 사람들이 장르소설 가격은 3000원 안팎이라는걸 알고 있을까? 그리고 책을 읽는 사람들일까? 종이책이든 전자책이든 책을 읽는 사람이라면 종이냐 파일이냐 보다는 책의 내용에 더 큰 가치를 둔다. 내용이 좋다면 전자책 가격이 1만원이라도 돈을 내고 산다. 물론 비싸다고 툴툴대기는 하겠지만.

반응형
posted by 내.맘.대.로 2016. 6. 27. 10:58

내맘대로의 EPUBGUIDE.NET에서 편집자의 의도를 그대로 살려 전자책을 제작해 드립니다.

종이책의 편집 스타일을 최대한 유지하며, 팝업 주석 처리, 이미지 확대 축소 등 전자책의 장점을 반영하여 전자책을 제작합니다. 탬플릿을 사용하지 않고, 책 한권 한권 고유 스타일을 살리기 때문에 전자책에서도 종이책 디자인을 느낄 수 있습니다.

한국출판문화진흥원의 [텍스트형 전자책 제작 지원 사업] 선정 도서는 ‘제작 난이도별 제작비 산정 기준에 근거하여’ 제작 단가를 산정하고, 일정에 맞춰 제작을 해 드리니 많은 문의 바랍니다.

자세한 내용은 여기로: https://www.epubguide.net/notice/309

오래 전 작성된 글은 현재의 Sigil 버전과 차이가 날 수 있습니다. 등록 일자를 확인 하고 1년 이상 지난 글은 변경된 내용이 있는지 확인하시기 바랍니다.

‪#‎전자책‬ ‪#‎CSS‬ ‪#‎sigil‬

‪#‎전자책_편집을_위한_HTML_CSS‬ 해시태그로 간단한 HTML CSS 강의를 시작합니다. 전자책 편집을 하는 분들에게 자주 받은 질문을 정리하려고 해요. 아주 쉬운 내용인데 모르면 헤매는 내용이라 초보 편집자들에게 유용하리라 생각합니다. 
전자책 편집을 하다 막히는게 있거나 궁금한 점이 있으면 댓글을 남겨주세요. 단, 질문은 '제대로' 해주셔야해요. 본인만 이해할 수 있는 질문 말고, 답변할 사람이 이해할 수 있는 질문으로요^^
편집기는 Sigil을 사용합니다. 하지만 모든 편집기에서 동일하게 적용할 수 있습니다.


오늘은 전자책 편집 중 많이 하는 '실수'를 정리하겠습니다. 이런 실수를 해도 뷰어에서는 정상적으로 보입니다. 그래서 많은 분들이 이런 편집을 잘못이라고 생각하지 않어요. 하지만 잘못 사용한 코드는 언젠가 오류로 보답을 합니다. 아주 조금만 신경쓰면 되니까 아래 몇가지만 지켜보세요.


1. 제목은 반드시 헤딩 태드(h1 ~ h6)를 사용한다.

IDPF의 EPUB3 권고안에는 제목을 헤딩 태그를 사용하도록 강력하게 권하고 있습니다. 현재 유통되고 있는 전자책 중 제목을 헤딩 태그가 아닌 CSS 스타일과 p 태그로 지정한 책이 많습니다. 이런 책들은 뷰어에 정상처럼 보이지만 표준을 지키지 않은 편집이에요. 

시중에 유통되는 편집기 중에서도 제목을 헤딩 태그가 아닌 p태그에 스타일을 적용해 표현하는 경우가 많습니다. 편집기가 제공하는 기능이라고 표준에 맞는건 아니니 편집할 때 주의를 하세요.


2. 본문은 반드시 <p> 태그를 사용합니다.

Sigil로 편집한 책 중에 보면 <div>태그로 분문을 묶은 것을 종종 볼 수 있습니다. Sigil의 빈 화면에서 백스페이스를 마구 누르면 HTML 코드가 이렇게 되요.


<html>

<head>

<title></title>

</head>

<body>

</body>

</html>


이 상태에서 엔터를 치면 이렇게 됩니다.


<html>

<head>

<title></title>

</head>

<body>

<div><br/></div>

<div><br/></div>

</body>

</html>


여기에 텍스트를 붙여넣으면 본문 태그가 <p>가 아닌, <div>태그로 감싸지게 됩니다. 역시 뷰어에서는 아무 문제가 없어 보이지만, 아주 심각한 '실수'입니다. 본문은 반드시 <p>태그로 묶여야 하거든요. 

간혹 글상자를 만들때 이렇게 편집하는 분들도 있습니다. 


<div>글상자에 들어갈 텍스트</div>

<a href=...>링크</a>

<img src=... />


이건 표준에 벗어나지는 않지만 좋은 코드라고 보기 어려워요. 본문 내용은 <p> 태그로 묶어줘야 합니다.


<div><p>글상자에 들어갈 텍스트</p></div>

<p><a href=...>링크</a></p>

<p><img src=... /></p> (p 태그 대신 div 태그도 됨)


3. 본문 스타일은 클래스를 지정하지 마세요.

본문을 클래스를 이용해 편집하는건 제약이 있는 것도, 표준에 어긋나는 것도 아닙니다. 하지만 그래야 할 필요가 없는데 불필요한 작업을 반복해서, 그것도 수천번을 반복해서 해줄 필요는 없잖아요.

무슨 소리냐고요?

CSS에 스타일을 적용할 때 본문 전체를 대표하는 스타일을 클래스로 지정하는 분들이 의외로 많이 있습니다. 이런 식이지요.


<style>

.maintext {본문 기본 스타일}

</style>

...

<body>

<p class="maintext">본문</p>

<p class="maintext">본문</p>

<p class="maintext">본문</p>

...

</body>


책 내용의 90%가 넘는 본문 스타일을 클래스로 지정하게 되면 class="maintext" 스타일이 수천번 들어갑니다. 이렇게 편집해야 할 이유는 전혀 없습니다. 그냥 p 태그에 스타일을 적용하면 되요.


p {본문 기본 스타일}


그럼 <p> 태그로 묶여있지만 다른 스타일을 적용해야 할 때는 어떻게 해야하냐구요? 그 스타일만 클래스를 지정하면 되지요. CSS는 스타일 상속을 받지만, 마지막에 상속받은 스타일로 표현이 되기 때문에 <p> 태그에 기본 스타일을 적용한다 해도 다른 스타일을 적용하는데 아무 문제가 없습니다.


4. 불필요한 스타일은 넣지 마세요.

CSS 스타일을 만들 때 불필요한 스타일을 반복해서 쓰는 분들이 많이 있습니다. 전자책 편집기의 CSS 생성 프로그램을 이용해 만들었다고 강하게 의심이 되지만, 그래도 이런 편집은 피하는게 좋습니다.


p { 

font-family:굴림; 

font-style:normal; /*필요 없는 스타일*/

font-weight:normal; /*필요 없는 스타일*/

font-size:1em; 

margin:0pt; /*필요 없는 스타일*/

padding:0pt; /*필요 없는 스타일*/

text-align:left; /*필요 없는 스타일*/}


/*필요 없는 스타일*/이라고 표시한 항목들은 뷰어 기본 설정을 따르도록 되어 있습니다. 뷰어 기본 설정을 따르는 스타일이나 적용해도 의미 없는 스타일은 추가할 필요가 없습니다. 넣지 않아도 뷰어에서 보이는건 똑같습니다. 

그럼 넣어도 상관 없잖아 라고 생각하실 수 있는데, 저런 코드가 들어가면 뷰어는 '아무것도 아닌 스타일'로 적용을 하느라 단말기 자원을 사용하게 됩니다. 쉽게 말해 뷰어에서 책이 열리는 속도가 느려지거나, 오류가 생길 가능성이 높아진다는 얘기에요.

* 참고로 들여쓰기가 필요 없는 스타일은 text-indent : 0; 을 추가해 주는게 좋아요. 강제 들여쓰기를 하는 뷰어가 많이 있어 들여쓰기 하면 안되는데 들여쓰기가 되는 경우가 종종 있거든요.


5. 똑같은 스타일은 재활용하세요.

시중에 유통되는 전자책 중에 아래처럼 똑같은 스타일이 무한반복되는 책들이 있습니다.


.textstyle001 { font-size : 1.2em; }

.textstyle002 { font-size : 1.2em; }

.textstyle002 { font-size : 1.2em; }

...

아마도 위지윅 방식의 편집기에서 텍스트 하나를 선택해 스타일 지정, 다른 텍스트 선택 후 스타일 지정... 이런 식으로 편집을 했기 때문일거예요.

이것 역시 책 열리는 속도가 느려지거나 오류 가능성을 높이게 됩니다. 똑같은 스타일은 특별한 의미를 둔 스타일이 아닌 이상 하나만 있으면 되요.

이런 부분들만 주의를 해도 전자책의 코드가 깔끔하게 정리될거예요. 코드가 깔끔한 책은 뷰어에서 열리는 속도가 빨라지고, 오류도 적게 발생합니다. 그리고, 어떤 환경에서도 편집자가 원하는 모양으로 책이 보이고요 ^^

반응형
posted by 내.맘.대.로 2016. 6. 13. 15:52

내맘대로의 EPUBGUIDE.NET에서 편집자의 의도를 그대로 살려 전자책을 제작해 드립니다.

종이책의 편집 스타일을 최대한 유지하며, 팝업 주석 처리, 이미지 확대 축소 등 전자책의 장점을 반영하여 전자책을 제작합니다. 탬플릿을 사용하지 않고, 책 한권 한권 고유 스타일을 살리기 때문에 전자책에서도 종이책 디자인을 느낄 수 있습니다.

한국출판문화진흥원의 [텍스트형 전자책 제작 지원 사업] 선정 도서는 ‘제작 난이도별 제작비 산정 기준에 근거하여’ 제작 단가를 산정하고, 일정에 맞춰 제작을 해 드리니 많은 문의 바랍니다.

자세한 내용은 여기로: https://www.epubguide.net/notice/309

오래 전 작성된 글은 현재의 Sigil 버전과 차이가 날 수 있습니다. 등록 일자를 확인 하고 1년 이상 지난 글은 변경된 내용이 있는지 확인하시기 바랍니다.

검색이 된 사전


https://brunch.co.kr/@borashow/123


 «검색, 사전을 삼키다»은 한달음에 읽었다. 사전 덕후로 살아온 정철 팀장이 쓴 자기 이야기이자, 그가 덕질로 닦아온 사전 지식을 아낌없이 쏟아부은 책이다. 네이버와 다음이 벌인 사전 전쟁의 뒷이야기로 읽어도 좋다. 위키백과 활동가인 정철 팀장이 쓴 위키백과 얘기도 재미있다. 


책이 디지털로 변하면서, 종이책도 전자책도 아닌 제3의 매체가 될 분야를 설명하면서 예로 드는게 사전입니다. 운동, 여행, 요리레시피 같은 몇몇 카테고리는 책이 아닌 다른 형태로 발전을 할 수 있다고 얘기하면 종이책의 틀에 갇혀있는 분들은 이해를 하지 못합니다. 이때 '사전'을 예로 들어줍니다.

종이로 된 두꺼운 사전이 전자사전으로 바뀌었다가 이제는 전자사전 조차 역사가 될 판입니다. 백과사전의 절대 강자 브리태니커의 아성은 위키피디아에 무너져 내렸고, 아무리 정보의 '질'을 소리높여 외쳐봐도 간단한 정보는 '지식인'을 찾습니다.

운동, 여행, 요리레시피 같은 책들은 사전과 같은 길을 걷게 될거라고 생각합니다. 전자책이 될 가능성도 아주 낮습니다. 이 카테고리는 사전처럼 책의 분류에서 사라질 가능성이 아주 높습니다. 종이책의 틀에서 이 분류의 책을 만드신 분들은 말도 안된다고 생각할 수도 있습니다. 비디오 테잎, 동영상 CD, 유튜브 QR 코드 등을 활용하면서 다른 분야보다 기술 발전에 발빠르게 대응하고 있는데 무슨 소리냐고 하실 분들도 계실거예요.

'검색, 사전을 삼키다'는 출판쪽에 계신 분들의 이야기가 아닐 수도 있습니다. 출판과는 전혀 다른 세계의 얘기일 수도 있습니다. 하지만 출판에 계신 분들은 꼭 읽어봐야 할 책입니다. 사전이 검색이 된 방식과, 여행책이, 운동 책이, 요리 책이 앱이 되고, 게시판이 되고, 에어BNB가 되고, 트레이닝 서비스가 되는 방식에는 큰 상관관계가 있습니다.

소설이 웹소설이 된 것도 큰 틀에서는 같은 맥락으로 작용합니다. 전혀 다른 세계같아 보이겠지만, 순서도를 그려 보면 사전을 검색으로 바꾼 과정과 소설이 웹소설이 된 과정은 별 차이가 없습니다. 안에 어떤 텍스트가 들어가든 (시작), [연산], <조건> 기호들과 이 기호들을 연결하는 선은 사전이든, 소설이든, 운동/여행책이든 똑같습니다.

사전의 어제와 오늘, 내일은 책의 일부 대분류 혹은 중분류의 어제와 오늘, 내일이 될 가능성이 아주 높습니다.


반응형
posted by 내.맘.대.로 2016. 6. 11. 15:26

내맘대로의 EPUBGUIDE.NET에서 편집자의 의도를 그대로 살려 전자책을 제작해 드립니다.

종이책의 편집 스타일을 최대한 유지하며, 팝업 주석 처리, 이미지 확대 축소 등 전자책의 장점을 반영하여 전자책을 제작합니다. 탬플릿을 사용하지 않고, 책 한권 한권 고유 스타일을 살리기 때문에 전자책에서도 종이책 디자인을 느낄 수 있습니다.

한국출판문화진흥원의 [텍스트형 전자책 제작 지원 사업] 선정 도서는 ‘제작 난이도별 제작비 산정 기준에 근거하여’ 제작 단가를 산정하고, 일정에 맞춰 제작을 해 드리니 많은 문의 바랍니다.

자세한 내용은 여기로: https://www.epubguide.net/notice/309

오래 전 작성된 글은 현재의 Sigil 버전과 차이가 날 수 있습니다. 등록 일자를 확인 하고 1년 이상 지난 글은 변경된 내용이 있는지 확인하시기 바랍니다.

내용 보충


1. Sigil 0.9.8에서 문자열+ 형식이 문자열++로 해야 찾아집니다. 

예를 들어 이전에는 \d+ 로 1,12,123,1234,12345....를 찾을 수 있었는데 \d++로 해야 제대로 찾아지네요. Sigil 오류인지 이렇게 수정된건지 모르겠어요. 아래에서 +가 하나 붙은 식이 문제가 생긴다면 ++로 수정해 보세요.


2. 식을 조금 업그레이드 했습니다. 전자책을 사랑하는 사람들 모임(http://cafe.naver.com/ebookpublisher) 부씽님의 식을 보고 조금 수정했어요.


찾기 : \b(?<=[가-힣])([\w\s]++)

바꾸기 : <sub>\1</sub>


이 식으로 한글abc한글, 한글abc abc한글, 한글abc abc abc한글.... 의 패턴을 모두 찾을 수 있습니다. 

이 식의 문제는 한글abc 한글 처럼 영문표기 뒤에 한글이 바로 붙지 않으면 공백까지 포함시킵니다. 이 부분도 해결해 보겠습니다 ^^



<p class="ddf">가나다 abc 입니다</p>
영문 단어만 찾아서 변경하고 싶었습니다. 특정 단어같은 패턴이 없어서 본문 내용에서만 찾고 싶었는데 영어는 태그를 구분하지 않고 검색하는것 같아서 아쉽더라고요.


골드님이 주신 질문입니다.

Sigil 에서 정규표현식을 이용하다 보면 원하지 않는 값까지 찾게 되는 경우가 있습니다.

한자나 한글은 조금 덜한 편인데 영문이나 숫자를 찾을 때 이런 문제가 자주 발생하지요.


예를 하나 들어보겠습니다.


스티브 잡스Steven Paul Jobs는 애니메이션 영화 《인크레더블The Incredibles》과 《토이 스토리Toy Story》 등을 제작한 컴퓨터 애니메이션 제작사인 픽사의 소유주이자 CEO였다.


이 문장을 정규표현식으로 찾아 스티브 잡스, 인크레더블, 토이스토리 뒤에 붙은 영문에만 스타일을 주고 싶다면 어떻게 해야 할까요?


먼저 정규표현식으로 영어 단어를 찾아보겠습니다. Sigil 찾기 창에서 정규표현식을 선택한 후 ([a-zA-Z]+) 를 입력합니다. 한 단어씩 찾기 위해 +를 추가했습니다. 그리고 찾기 버튼을 누르면 어떻게 될까요?


<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"

"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title></title>

</head>

<body>

<p>스티브 잡스Steven Paul Jobs는 애니메이션 영화 《인크레더블The Incredibles》과 《토이 스토리Toy Story》 등을 제작한 컴퓨터 애니메이션 제작사인 픽사의 소유주이자 CEO였다.</p>

</body>

</html>


EPUB의 본문은 HTML로 되어 있어 본문의 단어를 찾기 전에 HTML 코드에 있는 xml이라는 영어를 먼저 찾아줍니다. 다음 찾기를 아무리 눌러 봐야 HTML에 영문이 너무 많아서 수작업으로 하는 것 보다 효율이 나지 않습니다.


이런 문제를 해결하려면 정규표현식을 사용하기 전에 무슨 목적으로 사용하느냐를 본인이 정확히 알아야 합니다.

이런것도 모르고 할 사람이 있을까 싶겠지만, 많은 사람들이 자신이 원하는게 뭔지 모르는 상태에서 막연한 개념만 갖고 시작하는 경우가 많습니다. 그러면 식을 세울 수가 없게 되지요.


전자책을 편집할 때 영어 단어를 찾아야 하는 이유가 뭐가 있을지를 먼저 생각해 보겠습니다.

제가 전자책을 만들면서 언제 정규표현식을 쓰는지를 정리하고,  각각의 상황에 맞는 식을 하나식 설명드리겠습니다.


저는 아래와 같은 이유로 정규표현식을 많이 사용합니다.


윗첨자 패턴의 영문, 한자, 일본어 단어에 스타일을 적용해야 할 때


주로, 단어 뒤에 붙은 설명을 윗첨자 형태로 스타일을 적용해야 할 때 많이 이용합니다. 


스티브 잡스Steven Paul Jobs

인크레더블The Incredibles

논어論語


책을 편집하다 보면 이런 편집을 많이 사용합니다. 책 한권에 수백개 이상 들어있는 윗첨자를 하나씩 찾아내 수정하려면 시간이 오래 걸리기 때문에 정규표현식을 사용합니다.


이런 편집에는 '패턴'이 있습니다. 이 패턴을 찾는게 정규표현식을 세우는데 가장 중요합니다.


예로 든 텍스트들은 전자책으로 편집하기 전에는 윗첨자가 적용돼 있지 않습니다. 그렇기 때문에 윗첨자는 패턴이 될 수 없습니다.


스티브 잡스Steven Paul Jobs


이 문장에서 찾을 수 있는 가장 확실한 패턴은 한글영어단어, 한글한자, 한글일본어 등 한글 뒤에 바로 단어가 온다는 점입니다. 윗첨자 형으로 설명이 들어간 단어는 괄호 같은 구분기호를 붙이든, 구분기호 없이 바로 단어를 붙이든 한글에 붙어 영문이나 한자가 나오는게 일반적입니다.


한글영문 패턴은 책을 편집할때 많이 나오지 않습니다. 윗첨자 설명 같은 특수한 경우가 아닌 이상 한글과 영문은 띄어쓰도록 되어 있습니다. 그래서 한글영문은 정규표현식으로 사용하기 좋습니다. 그렇다고 본문의 모든 윗첨자만 이 패턴이 적용되고, 다른 내용에는 이런 패턴이 없다는 보장은 할 수 없으니 편집자가 책의 내용에 따라 패턴을 확인할 필요는 있습니다.


한글영문 패턴일 때는 이런 식을 쓸 수 있습니다.



([가-힉]+)([a-zA-Z]+)



스티브 잡스Steven Paul Jobs


그런데 결과가 이상하지요? 찾기를 원하는건 영문인데 선택은 한글 단어와 영문이 함께 됩니다. 


여기서 다시 '목적'을 생각해야 합니다. 만약, 영문 단어를 확인하려는 목적이라면 이렇게 선택된다 해도 아무 문제 없습니다. 눈으로 확인하면 되니까요. 그런데 영문 단어에만 스타일을 적용하고 싶다면, 다시 말해 찾아바꾸기를 하고 싶다면 이렇게 선택되서는 곤란합니다.


정말 곤란할까요?


만약 아래와 같은 단어라면 전혀 곤란할 일이 없습니다.


잡스Jobs


이렇게 한글 단어 하나에 영문 단어 하나짜리라면 위에 설명한 식으로 찾아바꾸기가 가능합니다.


찾기 : ([가-힉]+)([a-zA-Z]+)

바꾸기 : \1<sup>\2</sup>


찾기와 바꾸기 영역에 이렇게 해보세요. 그러면 결과는 이렇게 나옵니다.


잡스<sup>Jobs</sup>


Sigil은 정규표현식으로 단어를 찾을 때 괄호를 하나의 묶음으로 처리합니다. (표현식1)(표현식2) 처럼 식을 괄호로 묶어 주면 바꾸기를 할 때는 \1, \2로 찾은 단어를 넣어줄 수 있습니다. 찾기 영역에서 (표현식1)이 찾은 단어는 바꾸기 영역에서 \1로, (표현식2)가 찾은 단어는 \2로, 표현식이 3, 4, 5개로 늘어나면 \3, \4, \5로 대치를 할 수 있습니다. 그렇기 때문에 한글abc으로 선택됐다 해도 abc에만 스타일을 적용할 수 있게 됩니다.


참고로, ([가-힉]+)를 ([가-힉])으로 바꿔도 이 식에서는 지장이 없습니다. 잡스Jobs를 찾든, 스Jobs를 찾든 결과는 동일하니까요.


이번에는 조금 더 확장을 해 보겠습니다.


스티브 잡스Steven Paul Jobs는

애니메이션Animation 제작사


이런 패턴 역시 한글영문 패턴입니다. 다만 한글영문, 한글영문 영문... 의 패턴이 되는거지요.


이런 형태는 조금 까다롭습니다. 패턴이 분명하다면 문제가 되지 않는데 패턴이 2개 이상으로 복잡해집니다. 먼저 '스티브 잡스Steven Paul Jobs는' 패턴을 비교하면 이렇습니다.


한글영문 공백 영문 공백 영문...... 영문한글


이런 패턴이라면 이렇게 처리할 수 있습니다.


([가-힉])([a-zA-Z].+?)([가-힉])


패턴의 중요한 포인트는 [한글영문....영문한글]입니다. 영문을 찾는 식에 물음포(?)를 넣어 준건 패턴을 너무 넗게 잡는걸 방지해주기 위해서입니다.


([a-zA-Z].+?)


이 식으로 찾은 영문단어에만 스타일을 지정하고 싶다면 바꾸기 영역에 아래처럼 넣어주면 됩니다.


\1<sup>\2</sup>\3


스티브 잡스<sup>Steven Paul Jobs</sup>는



그런데 이 식을 사용하면 '애니메이션Animation 제작사'가 문제가 됩니다. '《인크레더블The Incredibles》' 같은 패턴도 문제가 되고요.


애니메이션Animation 제작사


이 패턴은 \2가 대체하는 단어 영역이  'Animation '까지입니다. 공백이 포함되지요. 


《인크레더블The Incredibles》


여기서는 'The Incredibles》'까지 포함을 하게 됩니다. 


이런 문제를 해결할 방법이 아주 없는건 아닙니다. 하지만 식이 점점 복잡해지고, 식이 복잡해 지면 엉뚱한 결과가 나올 수 있습니다.


지금까지 설명도 상당히 복잡했는데 더 복잡해진다면 이 글도 보기 싫어지시겠지요^^?

그래서 제가 쓰는 아주 단순 무식한 방법이 하나 있습니다.

한번에 끝낼 수는 없지만 결과는 확실한 방법입니다.


먼저, 본문에 윗첨자가 달려야 하는 단어의 최대 갯수를 확인합니다. 인명이나 지명 같은 명사라면 많아야 4~5개 단어로 끝납니다. 만약 단어의 최대 갯수가 4개라면 아래 식을 반복합니다.


찾기 : ([가-힉])([a-zA-Z]+ [a-zA-Z]+ [a-zA-Z]+ [a-zA-Z]+)

바꾸기 : \1<sup>\2</sup>


찾기 : ([가-힉])([a-zA-Z]+ [a-zA-Z]+ [a-zA-Z]+)

바꾸기 : \1<sup>\2</sup>


찾기 : ([가-힉])([a-zA-Z]+ [a-zA-Z]+)

바꾸기 : \1<sup>\2</sup>


찾기 : ([가-힉])([a-zA-Z]+)

바꾸기 : \1<sup>\2</sup>


단순 무식한 방법이지만, 패턴을 단순화시켜 다양한 예외들을 모두 차단해 버렸습니다.

위 식의 패턴은 이렇습니다.


먼저 '한글영문1 영문2 영문3 영문4'을 찾습니다.


이 패턴은 한글영문, 한글영문1 영문2 패턴은 무시합니다. 만약 한글영문1 영문2 영문3 영문4 영문5라는 패턴이 있다면 문제가 됩니다. 그래서 가장 긴 영어단어 수를 확인해야 합니다. 


그 다음 영어단어를 하나씩 줄여가며 찾아줍니다. 


한글영문1 영문2 영문3은 영문4까지 있는 단어라면 문제가 되지만, 영문4까지 있는 단어는 이미 교체했기 때문에 영문3까지 있는 패턴에는 걸리지 않습니다. 영문2까지 있는 패턴 역시 영문3을 처리한 후라면 문제가 되지 않고요.


이 방식이 가능한 이유는, 대부분의 책이 윗첨자 설명을 문장 보다는 인명이나 지명 같은 단어를 처리하기 위해 사용하기 때문입니다. 그리고 인명이나 지명은 길어야 4~5단어 정도로 짧기 때문에 많아야 5번 내외로 반복해 주면 윗첨자형 설명은 모두 바꿀 수 있습니다.


본문 내에 있는 영어 단어만 찾아야 할 때도 있습니다.

윗첨자 같은 설명이 아닌, 본문 내의 영어 단어로, 한글과 다른 폰트를 적용하고 싶다면 '한글영문'이 아닌 '한글 영문' 형태의 패턴이 됩니다. 


이런 형태 역시 패턴을 먼저 찾는게 중요합니다.

본문 내에 쓰인 영문 단어라면 이런 패턴일 가능성이 높습니다.


한글 영문 한글

한글 영문1 영문2.... 한글


스티브 잡스는 Toy Story 등을 제작한 Computer Animation 제작사인 픽사의 소유주이자 CEO였다.


이런 패턴은 위의 식을 약간 수정해서 처리할 수 있습니다.


([가-힉]) ([a-zA-Z]+ [a-zA-Z]+ [a-zA-Z]+ [a-zA-Z]+...)


이런 패턴은 한글이 앞에 나오고, 한칸 공백을 띈 후 영문 단어가 여러개 나옵니다. 영문 단어 뒤에는 'CEO였다'cjfja 한글이 붙을 수도 있고, 'Toy Story 등을' 처럼 공백이 올 수도 있습니다.


공통되는 패턴은 한글+공백+영문, 영문이 몇개가 오든 시작은 이렇습니다. 그렇다면 윗첨자를 바꿀 때처럼 가장 긴 영어 단어 수에 맞춰 반복을 할 수 있습니다.




태그 사이에 영문만 들어있는 경우도 있습니다. 


위에 두 예는 한글이 들어있어 태그를 무시할 수 있었는데 태그와 태그 사이에 영문만 있을 경우에는 찾기 어렵습니다.

그럴 때는 태그 자체를 이용합니다. 


<p class="title">Toy Story</p>



(?sU)<p([^>]*>)



이 식은 <p...>태그를 찾아줍니다. <p> 태그 안에 어떤 클래스나 스타일, ID가 추가되든 상관 없습니다. 만약 <p class="title">...</p>로 묶인 영역을 <p>태그 대신 제목 태그인 <h2>로 바꾸고 싶다면 이 식을 활용할 수 있습니다.


찾기 : (?sU)<p([^>]*>)(.*)</p>

바꾸기 : <h2>\2</h2>


<p> 태그 안에 영문만 있는 문단을 찾고 싶다면 (.*) 부분을 수정해 주면 됩니다. ([a-zA-Z].+) 처럼요.

원하는 패턴에 맞게 식을 세워주면 다양하게 활용할 수 있습니다.



정규표현식을 제대로 활용하려면 두가지를 꼭 기억하세요.


1. 내가 찾고자 하는 내용의 패턴을 알아낸다. 이 패턴이 정규표현식이 됩니다.

2. 사용할 목적을 확실히 알고 있어야 한다. 찾아바꾸고 싶은지, 확인만 할건지, 전부 바꿀건지, 부분만 바꾸고 싶은지 등에 따라 식이 달라지고, 바꿀 영역에 들어갈 내용도 달라집니다.


이 두가지만 정확히 알고 있어야 정규표현식의 도움을 받을 수 있습니다.



반응형