posted by 내.맘.대.로 2017. 10. 13. 14:50

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

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

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

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

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

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

 

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

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

https://www.epubguide.net/notice/309


오랜만에 스타일 팁 올립니다.


어떤 분이 테이블 안쪽 여백과 테이블 가운데 정렬 방법을 물으셨어요.


테이블(table) 태그는 기본 속성(attribute)을 몇개 갖고 있습니다.


글자 영렬(align), 테두리 모양(border), 배경색(bgcolor), 폭(width)...


전자책 만들 때 이런 속성은 사용하지 마세요!!!!!


태그 기본 속성을 사용해도 별 문제는 없습니다. 그런데 W3C에서도, IDPF에서도 스타일 편집은 CSS로, 그것도 외부 CSS로 하도록 하는 추세입니다. 


만들어 놓은거라 써도 상관은 없는데 앞으로는 이런거 전부 없앨거야~


그래서 이런 속성들 대부분은 HTML5에서 지원을 하지 않습니다.


그럼 이런건 어떻게 해야할까요? 

아래 표를 보세요. 위쪽 표는 테두리 색과 border-collapse 만 적용했습니다. 확인이 편하게 하려고 적용한 속성이고 이 두 속성을 제외하면 아무 스타일도 적용하지 않았을 때 테이블이 이런 모습으로 보여요.


이런 테이블을 아래쪽 표처럼 안쪽 여백을 주고, 테이블 자체를 가운데 정렬하려면 어떻게 해야할까요?

 


안쪽 여백이니 padding,가운데 정렬이니 text-align : center;를 주면 되겠지요?

그런데 이게 안먹힙니다.


여기서 2가지 문제가 생겨요. padding을 어디에 줘야 하는지, 그리고 text-align으로 가운데 정렬이 되지 않을 때 어떻게 가운데 정렬을 하는지.


먼저 스타일 코드를 보세요.


table, tr, td {

border : 1px solid #FF0000;

border-collapse: collapse;

}


.cell_padding {

padding : 1em;

}


.table_center {

display : table;

margin-left : auto;

margin-right : auto;

}


<table class="table_center">

<tbody>

<tr>

<td class="cell_padding">

안쪽 여백, 테이블 가운데 정렬

</td>

<td class="cell_padding">

안쪽 여백, 테이블 가운데 정렬

</td>

</tr>

<tr>

<td class="cell_padding">

안쪽 여백, 테이블 가운데 정렬

</td>

<td class="cell_padding">

안쪽 여백, 테이블 가운데 정렬

</td>

</tr>

</tbody>

</table>


1. padding은 셀(td)에 적용한다.


테이블에서 글자가 들어가는 곳은 tr 태그 안쪽입니다. table, td는 테이블의 구조를 만드는 태그고, td가 텍스트가 들어가는 셀을 만드는 태그예요. 그러니 텍스트가 들어가는 셀에 여백을 주고 싶다면 td 태그에 스타일을 적용해야겠지요.


2. 테이블을 가운데 정렬하기


테이블이나 div같은 상자를 가운데정렬 할때는 text-align 속성이 제대로 적용되지 않습니다.

적용할 방법이 없는건 아닌데 그럼 코드가 복잡해져요.

이럴 때 margin-left : auto; margin-right : auto;를 사용해 보세요.


div 박스일때는 display : table; 혹은 display : box; 속성도 같이 지정해야 합니다.

여기서는 display :table;이 없어도 되지만, 확실히 해주기 위해 추가했어요.


끝으로... 테이블을 오른쪽 정렬 하고싶다면?

.table_center {

display : table;

margin-left : auto;

}


이렇게 스타일을 바꿔보세요. 그럼 가운데 있던 테이블으 오른쪽으로 정렬됩니다.





반응형
posted by 내.맘.대.로 2017. 9. 28. 09:52

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

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

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

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

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

국내 주요 유통사 뷰어 스타일 표현성 비교 https://goo.gl/QqqfKD


* 이 표는 2017년 9월 27일자 기준입니다. 이후 업데이트 등을 통해 수정될 수도 있으니 세부 사항은 반드시 위 링크로 들어가 확인을 해주세요.


CSS 속성을 제대로 지정한 것 같은데 뷰어에서 이상하게 보인 경험 있으시지요?

다른 뷰어에서는 잘 보이는데 특정 뷰어에서만 이상하게 나와 고생한 적도 있을거예요.


유통사 뷰어별로 문제가 있는 스타일을 정리하고 있습니다.

뷰어에서 표현이 되지 않는건데 CSS 스타일 수정하느라 쓸데없는 시간낭비 하지 마시고,

특정 유통사 뷰어에서만 이상하게 나오는 스타일이 있으면 알려주세요.

테스트를 해보고 해결 방법을 찾거나, 뷰어의 표현성 문제인지 확인해 드릴게요.

반응형
posted by 내.맘.대.로 2017. 9. 27. 09:34

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

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

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

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

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

http://www.kpipa.or.kr/info/newsView.do?board_id=1&article_id=70977&pageInfo.page=&search_cond=&search_text=&list_no=1060


2017년 텍스트형 전자책 제작 지원(3사업 공고

 

 

한국출판문화산업진흥원은 <텍스트형 전자책 제작 지원사업을 아래와 같이 공고하오니

많은 참여 바랍니다.

 

1. 사업목적

  o 우수 콘텐츠의 전자책 제작지원으로 전자출판산업 경쟁력 강화 및 양질의 전자책 확충


2. 지원대상

  o 추천기관 도서 및 일반 도서

  ※ 추천기관 도서는 우선 선정 고려 대상임.

  ※ 추천기관 도서 확인 :독서인(https://www.readin.or.kr/home/index.do - (독서인+) - 추천도서

 

3. 지원사항

  o 지원내용

   - 총 240종 내외종당 30만원 이내 실비 지원(초과 금액은 출판사 부담)

   - EPUB, PDF 등 형식

 

  o 제외대상

   - 국고로 전자책 제작 지원금을 이미 받아 제작된 도서

   - 전자책으로 제작되어 기 유통되고 있는 도서

   - 저작권자와의 배타적발행권 설정 계약이 명확하지 않은 도서

   - 학습교재류정기간행물학회지 등

   - 시리즈 중 일부 콘텐츠로 한 콘텐츠로서의 완결성이 없는 경우

 

4. 신청개요

  o 신청기간 2017. 9. 11() ~ 10. 12()

 

  o 신청방법 온라인 접수

   * 전자책 바로센터 회원가입 후 사업 신청 가능(출판사등록필증 첨부)

  - 한국출판문화산업진흥원 홈페이지(http://www.kpipa.or.kr/main/main.do)

        로그인 후 전자책 바로센터 텍스트형 전자책 제작지원’ 온라인 신청

         * 신청구분 : ‘2017년 3차’ 선택

     * ‘전자책 바로센터’ 회원가입 시 익일 승인 처리 후 사업 신청 가능함.

  - 20권까지 신청 가능

   신청도서 정보 입력 시 도서명저자 및 역자명 등’ 내용을 정확히 입력

   - 저자 및 역자와의 계약서가 외국어본인 경우 중요사항 체크(밑줄후 첨부

     (중요사항 저자·역자 명계약기간이차적 저작물에 대한 명시 등)

      ※ 국문 번역본이 있을 시 원본과 함께 국문 번역본 제출 요망

 

  o 신청 준비서류(파일첨부)

      ① 저작권자(저자·역자)와의 전송권 또는 2차적 저작물에 대한 배타적 발행권 내용이 포함된

          계약서 1부      

      ② 일반’ 도서의 경우신청 도서 1(우편 접수)

         * ‘추천기관‘ 도서인 경우신청 도서 우편 발송 필요 없음.

 

  선정 후 절차

     전자책 제작 완료 후 서류 제출

① 전자책 제작 내역 공문(텍스트형 전자책 제작 내역서)

② 출판사 통장 사본

③ 제작사의 세금계산서 사본(출판사가 전자책을 자체 제작한 경우는 첨부 불필요)

 * '① 전자책 제작 내역 공문'은 선정된 출판사에 한하여 추후 발송함.

   - 판권란 또는 앞()표지 중에 택일하여 진흥원의 전자책 제작 지원 사실을 표기

     (이 전자책은 한국출판문화산업진흥원 ‘2017년 텍스트형 전자책 제작 지원’ 선정작입니다.

    제작 후 1개월 이내 유통 완료

 

  o 도서 제출처

    - 주소 : (54866) 전라북도 전주시 덕진구 중동로 63, 한국출판문화산업진흥원 2

전자출판팀 <텍스트형 전자책 제작지원담당자

    - 우편 제출 시, 마감일자 소인까지 유효


  o 선정 결과 발표 : 2017년 11월 중 발표(예정)

   

5. 선정 기본방침

  o 콘텐츠 우수성이 검증된 추천기관 도서 우선 선정 고려

  o 전자책 산업 육성 차원에서 가급적 많은 출판사에 선정기회 부여

 

6. 유의사항

  

  신청서 작성 전필히 해당 사업의 사업안내(첨부파일)’내용 확인을 부탁드립니다. 

  선정 결과 공고 및 지원금 지급 이후라도 명백한 선정 취소 사유가 밝혀질 경우 선정 취소 및

     지원금 환수 등 적절한 제재 조치를 취할 수 있습니다.

  신청하는 전자책에 대해 저작권자와 전송권 또는 배타적발행권 설정 계약을 체결하여야 하며,

     이로 인해 발생되는 문제에 모든 책임이 출판사에 있습니다.

 

 7. 기타사항

   접수도서는 반환하지 않으며 선정결과 발표 이후 국민책나눔센터를 통하여 소외계층 등에

       기증될 예정입니다. 

 

 

    ※ 문의 : 전자출판팀 백창헌 주임(☎ 063-219-2755), 김솔 주임(☎ 063-219-2759)

 

 

 

 

한국출판문화산업진흥원장

반응형
posted by 내.맘.대.로 2017. 9. 8. 12:42

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

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

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

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

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

아두이노를 사놓고 뭘 어찌 해야 할지 모르는 분들이 계실 것 같아요.

저도 장난감 삼아 아두이노 스마트카 킷을 구입했는데, 조립을 다 해놓고 한참 멍하니 있었습니다.

무엇부터 시작을 해야 할 지 모르겠더라구요.


아두이노 스마트카는 전혀 스마트하지 않았습니다.

조립을 끝낸 스마트카는 두뇌는 있지만 백지상태로 텅 비어있어요.

두뇌에 무언가를 채워 넣어야 하는데 저처럼 프로그래밍을 전문으로 하지 않던 사람들한테는 막막하기만 할 뿐입니다.


그래도 하나씩 연구해 가며 코딩을 하다 보니 모터가 돌아가고, 바퀴가 돌고 방향을 전환하는 것 까지 성공을 했네요.


저같은 생초보가 아두이노를 갖고 놀기 위해 해야할 일들을 하나씩 정리해 볼까 해요.


그 첫번째로 스마트카 소스를 정리해 봤습니다.

아두이노 스마트카 킷을 사놓고 뭘 해야하나 생각하신 분들은 이 코드를 활용해 보세요.

코드를 이해 못해도 괜찮아요. 아두이노 스마트카가 움직이는걸 보면 코드를 이해하고 싶은 욕구가 마구 생길테니까요^^



집에 있는 TV 리모컨으로 스마트카를 조종하는 코드입니다.

리모컨은 어떤거든 상관 없지만, 리모컨의 IR 신호는 직접 찾아야되요.

IR 신호를 찾는 방법은 나중에...ㅜ.ㅜ


깡통 스마트카를 조립해 놓고 멍하게 계셨던 분이라면 아래 코드를 참고해서 깡통을 스마트하게 만들어보세요^^


/* TV 리모컨의 IR 신호를 먼저 확인하세요. 이 신호는 제 리모컨이니 갖고 계신 리모컨의 신호를 확인해 그에 맞는 값을 넣어야 합니다. 


0xFF629D; // 전진

0xFF6897; // 후진

0xFFE21D; // 좌회전

0xFFA857; // 우회전

0xFFAA55; // 정지

 */

 

 

#include <IRremote.h>

 

 

int IRControl = 11;

IRrecv irrecv(IRControl);

decode_results results;


/*스마트카 조종을 위해 변수를 만듧니다. 제 리모컨은 입력받는 숫자가 아두이노의 int범위를 넘어가더라구요. 그래서 리모컨 값에서 0xFF0000을 빼는 걸로 조정을 했습니다.*/


const int irForward = 0xFF629D - 0xFF0000; // 전진  25245

const int irBack = 0xFF6897 - 0xFF0000; // 후진  26775

const int irLeft = 0xFFE21D - 0xFF0000; // 좌회전 57885

const int irRight = 0xFFA857 - 0xFF0000; // 우회전 43095

const int irStop = 0xFFAA55 - 0xFF0000; // 정지 43605

 

/*아두이노와 모터를 연결한 핀 번호입니다. 이 값도 모두 다를거예요. 숫자를 바꾸거나, 모터를 동일한 핀에 연결하세요.*/


int rightForward = 6;  //오른쪽 전진

int rightBack = 9; //오른쪽 후진

 

int leftForward = 5; //왼쪽 전진

int leftBack = 10; //왼쪽 후진



void setup() {

 

  Serial.begin(9600);

 

/*리모컨의 값을 입력받습니다.*/


  irrecv.enableIRIn();

 

/*모더를 구동시키는 함수?*/

/*자동차 조종은 왼쪽 바퀴 하나, 오른쪽 바퀴 하나 이렇게 2개로 합니다. 앞으로 가려면 왼쪽 바퀴와 오른쪽 바퀴를 앞쪽으로, 왼쪽으로 돌려면 왼쪽 바퀴를 멈추고 오른쪽 바퀴를 앞쪽으로 돌리면 되요. 그래서 컨트롤은 총 4개가 필요합니다. 왼쪽 바퀴 앞, 뒤 오른쪽 바퀴 앞, 뒤 이렇게 4개 조합이면 앞, 뒤, 왼쪽, 오른쪽 조종이 가능합니다. */


  pinMode(rightForward,OUTPUT);

  pinMode(rightBack,OUTPUT);

 

  pinMode(leftForward,OUTPUT);

  pinMode(leftBack,OUTPUT);

}

 

/*명령을 실행시키는 영역*/

void loop() {

 

/*리모컨 값(irrecev)에 따라 명령을 수행합니다. 

리모컨의 전진버튼(0xFF629D)을 눌렀다면 먼저 이 값에서 0xFF0000을 빼 value에 저장합니다.

리모컨에서 입력받은 값이 너무 커서 이 과정을 추가한거예요. 리모컨에서 받는 값이 크지 않다면 이렇게 하지 않아도 됩니다.


그럼 value에 0x629D가 저장됩니다. 0x629D는 위에서 선언한 irForward와 같은 값이에요.


switch(value) = switch(0x629D) = switch(irForward)가 됩니다. 


그럼 case irForward가 실행이 되는거에요.


그럼 스마트카는 모든 바퀴를 멈춥니다.

바퀴를 멈추는 이유는, 명령을 명확하게 전달하기 위해서예요. 앞으로 전진하려면 왼쪽 바퀴와 오른쪽 바퀴가 앞으로 돌아야하는데, 아두이노가 뒤로 가는 상황에서 양쪽 바퀴를 앞으로 돌게 하면 명령에 충돌이 생기네요. 아두이노가 양쪽 바퀴를 앞으로, 양쪽 바퀴를 뒤로 라는 서로 충돌하는 명령을 내려 오류가 나더라구요.


딜레이가 0.05초기 때문에 멈추는게 거의 느껴지지 않아요.


바퀴를 멈춘 후에 startForward();라는 명령을 실행합니다.

startForward();는 아래쪽을 봐주세요.


*/


  if (irrecv.decode(&results)) {

   unsigned int value = results.value - 0xFF0000 ;

   Serial.println(value);

   switch(value) {

   

      case irForward:

          stopAll();

          delay(50);

          startForward();

         break;

        

      case irBack:

          stopAll();

          delay(50);

          startBack();

         break;

        

      case irLeft:

         stopAll();

         delay(50);

         startLeft();

         break;

        

      case irRight:

          stopAll();

          delay(50);

           startRight();

          break;

               

      case irStop:

           stopAll();

      break;  

   }

   irrecv.resume(); // Receive the next value

 }

}



/*아두이노 컨트롤 명령을 하나씩 객체로 만들어놨습니다.

앞으로 가는 명령인 startForward()는 오른쪽, 왼쪽 바퀴를 앞으로 95 속도로 구르게 만들었어요.

아두이노는 모터가 돌아가는 속도를 조절할 수 있습니다. 0부터 255까지 가능한데, 싸구려라 그런지 제 아두이노는 95 밑으로는 바퀴가 구르지 않더라구요. 255는 속도가 너무 빨라 가장 느린 속도로 설정했습니다. 속도를 조절하고 싶다면 255보다 작은 범위에서 조절하면 되요.

*/

 

/*앞으로 가는 명령*/

void startForward()  {

  analogWrite(rightForward, 95);

  analogWrite(leftForward, 95);

  analogWrite(rightBack, 0);

  analogWrite(leftBack, 0);

}

 

/*뒤로 가는 명령*/

void startBack()  {

  analogWrite(rightForward, 0);

  analogWrite(leftForward, 0);

  analogWrite(rightBack, 95);

  analogWrite(leftBack, 95);

}

 


/*회전 명령은 2종류입니다. 

왼쪽으로 회전을 한다면

-작게 도는 명령은 왼쪽 바퀴가 뒤로, 오른쪽 바퀴가 앞으로 돌아요. 그럼 스마트카가 제자리에서 360도 회전을 합니다.


- 크게 도는 명령은 왼쪽 바퀴가 멈추고 오른쪽 바퀴만 앞으로 돌아요. 그럼 왼쪽 바퀴를 축으로 해서 오른쪽 바퀴가 원을 그리며 회전을 합니다. 


회전 방법을 바꾸고 싶으면 위쪽 case 코드의 startLeft()를 startLeftsmall()로 수정하면 되요. 아니면 리모컨 신호를 2개 더 받아서 큰 회전, 작은 회전을 추가할 수도 있습니다.

*/



/*왼쪽으로 작게 도는 명령*/

void startLeftsmall()  {

  analogWrite(rightForward, 95);

  analogWrite(leftForward, 0);

  analogWrite(rightBack, 0);

  analogWrite(leftBack, 95);

}

 

/*오른쪽으로 작게 도는 명령*/

void startRightsmall()  {

  analogWrite(rightForward, 0);

  analogWrite(leftForward, 95);

  analogWrite(rightBack, 95);

  analogWrite(leftBack, 0);

}

 

/*왼쪽으로 크게 도는 명령*/

void startLeft()  {

  analogWrite(rightForward, 95);

  analogWrite(leftForward, 0);

  analogWrite(rightBack, 0);

  analogWrite(leftBack, 0);

}

 

/*오른쪽으로 크게 도는 명령*/

void startRight()  {

  analogWrite(rightForward, 0);

  analogWrite(leftForward, 95);

  analogWrite(rightBack, 0);

  analogWrite(leftBack, 0);

}

 

/*정지 명령*/

void stopAll()  {

  analogWrite(rightForward, 0);

  analogWrite(leftForward, 0);

 

  analogWrite(rightBack, 0);

  analogWrite(leftBack, 0);

}


반응형
posted by 내.맘.대.로 2017. 9. 6. 10:58

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

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

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

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

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

앞의 글에서 선택자 만드는 규칙을 알려드렸습니다.

 

1. 태그 선택자 : HTML 태그를 스타일 선택자로 사용

2. 클래스 선택자 : .classname 으로 사용자가 필요한 스타일 선택자 생성

3. ID 선택자 : HTML요소에 고유한 성격을 부여하는 ID를 선택자로 활용

 

여기에 추가로, 

 

1. 활용할 수 있는 HTML 태그가 있으면 적극 활용하고

2. 예약어(태그, 속성 등에 쓰이는 단어)는 가급적 선택자로 사용하지 말아야 한다.

 

는 주의사항까지 정리해 드렸습니다.

긴 글을 쓴 것 같은데 이 몇줄로 간단히 요약이 되네요 ㅜ.ㅜ

 

이번 글에서는 특수 선택자를 간단히 정리해 보겠습니다.

특수 선택자란 태그, 클래스, ID 선택자와는 달리 특수한 목적을 위해 사용하는 선택자를 의미합니다. 특수 선택자라는 용어는 뜻이 명확히 규정되어 있지 않아 제가 설명드리는 범위와 다른 설명에서 사용하는 범위가 다를 수 있습니다. 여기에서 얘기하는 '특수 선택자'는 태그, 클래스, ID를 제외한 특수한 목적으로 지정된 선택자를 의미합니다.

 

1. @page Rule

 

전자책 스타일에서 간혹 보이는 선택자입니다. 참고로 @가 붙으면 선택자라고 하지 않고 Rule이라고 합니다. @font-family Rule, @page Rule 하는 식으로요.

 

@page는 인쇄를 위한 규칙입니다. HTML은 '가변형 화면' 즉 폭과 높이가 바뀌는 화면에 내용을 표현하기 위한 언어입니다. 그런데 화면을 인쇄하려면 A4, B5처럼 정해진 크기에 맞춰야하지요. 지금 보고 계신 이 내용을 A4용지 프린터로 인쇄하면 어떻게 나올가요? 보이는 그대로 나올까요?(궁금하면 해보세요 ^^)

 

@page는 인쇄를 할 때 여백을 지정하기 위한 규칙입니다. 그래서 인쇄에 필요한 페이지 사이즈(size), 상하좌우 여백(margin) 등 제한적인 속성만 사용할 수 있어요. 

 

전자책 전체 페이지의 마진을 줄 때 사용할 수 있지만, 그리 권해드리고 싶은 속성은 아닙니다. page-break처럼 인쇄를 목적으로 만든 규칙이라 다양한 화면에서 보는 전자책에 어울리지는 않습니다. 그래도 마진은 문제 없이 지정되니 '쓰면 안된다' 정도는 아니에요.

 

@page에 대한 자세한 설명은 이 글을 참고하세요.

https://developer.mozilla.org/ko/docs/Web/CSS/@page

 

2. * 전체 선택자

 

앞에 곱하기(*) 기호는 오타가 아닙니다. 이 선택자가 * 예요.

 

* {

margin : 0;

padding : 0;

font-family : '명조';

font-size : 1.2em;

...

}

 

전체 선택자로 문서 전체에 영향을 주는 스타일을 지정할 수 있습니다.

만약 책의 모든 글씨체를 '명조'로, 글자 크기를 1.2em으로 지정하고 싶다면 위 스타일을 넣어보세요.

모든 CSS 선택자에 '명조'를 지정하지 않아도 알아서 명조가 지정이 될거예요.

 

책 전체에 적용해야 하는 기본 설정이 있다면 전체 선택자를 사용할 수 있습니다. @page 속성 대신 여백을 줄 때 주로 사용해요. 그리고 줄간격, 문단간격을 없애려고 모든 선택자에 margin : 0; padding : 0;을 추가하는 수고도 덜 수 있습니다.

 

3. Pseudo-class 선택자(가상 클래스 선택자)

 

가상 클래스 선택자는 특정 항목이 특수한 상태일 때만 속성을 부여하는 선택자입니다.

예를 들어, 링크를 생각해 보세요.

 

링크 텍스트 : 파란색 밑줄

링크 클릭상태 : 빨간색 밑줄

클릭했던 링크 : 갈색 밑줄

 

링크 속성에는 이렇게 3가지 스타일이 있습니다.

이 스타일을 변경하려면 a 태그 스타일을 수정해 주면 되요.

a {

color : #000000;

text-decoration : none;

}

 

이러면 밑줄이 사라지고 글자 색은 검정색이 됩니다. 

 

문제는, 링크를 클릭한 상태에서도, 링크를 다녀와도 항상 밑줄 없는 검정색이라는거예요.

각 상태별로 다른 스타일(예를 들어 링크를 클릭하고 있을 때 노란 바탕색)을 주고 싶으면?

 

이럴 때 가상 클래스 선택자를 사용할 수 있습니다.

 

a:link {

/*링크가 걸린 텍스트의 스타일*/

}

 

a:visited {

/*방문했던 링크 텍스트의 스타일*/

}

 

a:hover {

/*링크 위에 마우스를 올렸을 때 스타일. 터치 모니터에서는 효과를 나타내기 어려움*/

}

 

a:active {

/*링크를 누르고 있는 상태에서 텍스트의 스타일*/

}

 

이 외에도 다양한 가상 클래스 선택자가 있습니다.

 

p::first-letter {

color : red; /*문단의 첫 글자만 빨간색으로*/

}

 

p::first-line {

color : red; /*문단의 첫번째 줄만 빨간색*/

}

 

p::before, p::after {

content :("!!경고!!");/*문단의 앞뒤에 !!경고!! 문구 자동 삽입*/

}

 

가상 클래스는 종류가 다양해서 제가 자주 쓰는 몇가지만 여기에 소개합니다. 

이 중에 ::before, ::after는 정말 활용도가 높습니다.

더 자세히 알고싶다면 이곳을 참고하세요.

https://www.w3schools.com/css/css_pseudo_classes.asp

 

오늘은 여기까지.

다음 글에는 복합선택자(Combinator)를 설명할게요. 이전 글에서도 몇번 설명한 적이 있는데 전체적으로 다시 정리하겠습니다. 

반응형
posted by 내.맘.대.로 2017. 8. 24. 11:49

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

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

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

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

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

최근에 전자책 제작 강의를 많이 하고 있습니다.


완전 초보부터 윙크나 시길로 전자책을 만들다 한계에 부딪힌 분들까지 대상이 다양한데요, 전자책을 많이 만들어 봤다는 분들조차 아주 기본적인 CSS 문법을 모르는 경우가 많았습니다. 


그래서 기본적인 CSS 문법을 정리해 봅니다.


1. 선택자 만들기


선택자는 스타일의 그룹입니다. 여러개의 스타일을 하나로 묶어놓고 이 스타일의 이름을 붙이잖아요. 이걸 선택자(selector)라고 합니다. 


.my_background_color {   /* <--my_background_color가 선택자예요 */

background-color : #FF0000;

margin : 1em;

font-family : "굴림";

}


선택자를 만드는 규칙은 단순하지 않습니다. 복잡한 규칙이지만 잘 활용하면 아주 편해요. 서로 다른 스타일이지만 쓰임이 같다면 같은 이름을 줄 수 도 있지요.


예를 들어, 제목의 고딕체는 빨간색, 문단의 고딕체는 노란색으로 스타일을 적용한다면 선택자 이름을 2개 만들어야 합니다.


.title_gothic {

color : red;

}


.para_gothic {

color : yellow;

}


그런데 이렇게 만들 수도 있어요.


h1.gothic {

color : red;

}


p.gothic {

color : yellow;

}


이렇게 하면 같은 이름의 선택자라도 태그에 따라 다른 스타일이 적용됩니다.

선택자 만드는 규칙은 CSS의 가장 기본입니다. 선택자는 Cascade의 기본이기 때문에 선택자 규칙을 모르면 CSS를 제대로 만들 수 없습니다. 



선택자 만드는 규칙


1.1 태그 자체


p, h1, h2, strong, bold 등의 태그에 스타일을 직접 적용할 수 있습니다. 태그 자체에 스타일을 적용하면 태그에 클래스를 붙일 필요가 없어 편해요.


p { text-indent : 1em; }


이렇게 하면 모든 p 태그에 들여쓰기가 됩니다. 


1.2 class 선택자


사용자가 임의로 이름을 지정해서 선택자를 만들 수 있습니다. 선택자 앞에 점(.)을 붙여 사용합니다.


.my_style {


}


영문, 숫자, 언더바(_) 하이픈(-)을 조합해 어떤 이름이라도 지정할 수 있습니다. 언더바와 하이픈 이외에도 몇가지 기호를 더 사용할 수 있지만 사용할 수 없는 기호가 더 많으니 언더바와 하이픈만 이용하는게 좋아요.


선택자를 특정 태그에 종속시킬 수 있습니다. 이렇게 하면 같은 이름이라도 태그에 따라 다른 스타일을 사용할 수 있어요.


h2.title {

font-size : 1.5em;

text-align : center;

}


h3.title {

font-size : 1.2em;

text-align : right;

}


선택자를 만들다 보면 이런 저런 이름을 붙이고 더 붙일 단어가 생각 안나 스타일 이름은 뭐로 하지 고민하게 되는데 태그에 따라 같은 내용, 다른 모양이라면 이렇게 똑같은 이름을 쓸 수 있습니다.


클래스 선택자는 속성을 지정할 때 class="class_selector"라는 형식으로 태그에 값을 넣습니다.


<h2 class="title">부 제목</p>




1.3 ID 선택자


ID는 말 그대로 고유한 이름입니다. 그래서 ID는 한 챕터 안에 딱 한번 사용을 합니다. 절대로 한번 이상 나와서는 안되지요.


ID 는 속성을 지정하기 위한 목적보다 문서 내에 있는 특정 값이나 위치를 표시하기 위해 사용합니다. 예를 들어 주석을 링크로 연결한다면 이렇게 되요.


<p> ID<a href="#foot_note01">1)</a>는 문서 내에 딱 한번 사용할 수 있습니다</p>


<p id="foot_note01"> ID : Identification의 약자</p>



여기서 ID는 <p id="foot_note01"> 입니다. a 태그에 있는 foot_note01은 ID를 지시하는 값이지 ID가 아닙니다. 만약 ID가 1번 이상 나온다면  a 링크는 어디로 가야할지 알 수 없게 되지요. 그래서 ID는 문서 내에 반드시 한번만 나와야 합니다. 


<p> ID<a href="#foot_note01">1)</a>는 문서 내에 딱 한번 사용할 수 있습니다</p>


<p id="foot_note01"> ID : Identification의 약자</p>


<p id="foot_note01"> ID : I Do의 약자</p>


그런데 이렇게 ID를 지정하고, 스타일을 바꾸고 싶을 때 어떻게 할까요? 

ID에 스타일을 적용할 수 있습니다.


#foot_note01 {

font-color : blue;

}


ID 스타일은 페이지 내에서 딱 한번만 사용할 수 있습니다. ID가 한번밖에 나올 수 없으니까요. 그리고 위 예에서 설명드린 주석 스타일을 ID로 적용하는건 권해드리지 않습니다. 주석이 10번 나온다면 각 ID마다 스타일을 지정해 줘야 하거든요.


EPUB2에서는 ID 스타일을 쓸 일이 많지 않습니다. 하지만 EPUB3로 사진 앨범을 만든다면 ID 스타일을 쓰게 됩니다. 


여기까지가 선택자를 만드는 가장 기본적인 방법입니다.


선택자를 만들 때 주의해야 할 점이 있어요.


a. HTML 태그가 있다면 태그를 써라.


어떤 분들은 모든 태그에 클래스 선택자를 붙입니다. 예를 들어 본문에 장제목 스타일이 딱 하나(수십번 반복될 수 있지만) 있다고 생각해 보세요.


.chap_title {

/*장제목 스타일*/

}


<h3 class="chap_title">장제목 1</h3>

<h3 class="chap_title">장제목 2</h3>

<h3 class="chap_title">장제목 3</h3>


이건 자원 낭비예요. 편집 시간도 늘어나고, 파일 용량도 늘고 코드도 복잡해집니다.

사용할 수 있는 태그가 있다면 태그를 쓰면 됩니다.


h3 {

/*장 제목 스타일*/

}


<h3>장 제목 1</h3>

<h3>장 제목 2</h3>

<h3>장 제목 3</h3>


만약 프롤로그 처럼 장 제목과 같은 레벨인데 스타일이 다르다면, 본문에 가장 많이 나오는 스타일을 h3에 지정하고, 앞과 끝에만 나오는 프롤로그 에필로그 스타일을 클래스로 지정하면 됩니다. 


b. HTML 태그와 기타 예약어는 클래스나 ID 선택자명으로 사용하지 말아라.


.strong {color : red;}


.address {font-family : "고딕"}


.button {  }


.small {   }


.img {   }


.color { }


.line-height {   }


.word-wrap {   }


보기엔 아무 문제 없어 보입니다. 그리고 이렇게 해도 문제가 생기지 않습니다. 하지만 이 선택자 이름은 전부 예약어입니다. HTML과 CSS에서 태그나 속성으로 사용하는 단어들입니다.


예약어를 써도 정상적으로 스타일이 적용되고 epubcheck에 오류가 발생하지 않습니다. 하지만 이건 가장 기본적인 규칙이에요. 너무 당연한거라 설명이 필요 없을 정도인데 생각보다 예약어를 선택자로 쓰는 분들이 많더라구요. 


한번에 정리하려 했는데 생각보다 내용이 길어졌네요.

다음 글에는 복합적인 선택자에 대해 설명하겠습니다. 언제가 될지는 모르겠지만... ^^;

반응형