해커즈뉴스 / 해커대학

Donation bitcoin(기부용 비트코인 주소)

 
1Pq3K39XM5xx4CifGKgppXeavtWNNHH7K4
 
기부하신 비트코인은 "보안 취약 계층"을 위해 사용되고 있습니다.
 
 

Donation bitcoin(기부용 비트코인 주소)

 
1Pq3K39XM5xx4CifGKgppXeavtWNNHH7K4
 
기부하신 비트코인은 "보안 취약 계층"을 위해 사용되고 있습니다.
 

공지

 

1. 크롬 브라우저로 접속시 나오는 악성코드 경고창은 구글 크롬의 에러, 즉 오탐(탐지 오류)이므로 무시하시면 됩니다.

2. 이 사이트는 안전하며 깨끗하다는 것을 알려 드립니다.

 


해커즈뉴스 제공 리눅스 + 스마트폰의 모든것
 
 
No, 815
조회: 940
dokbook 사용하기!  
해커즈뉴스
^^ 안녕하세요.

혹 docbook이라고 아시나요?

kldp에서 howto문서를 한번이라도 읽어보신 분이라면

어느순간 나도 html로 저렇게 깔끔히 내가 아는 내용을 정리해볼까

생각하신 분들^^ (절대 그렇게 하지 마세요...)

docbook스퇄로 sgml파일을 만들면 html파일은 그냥 만들어 진답니다..

최근 재미들어 열심히 써보고 있습니다 ^^

한번들 해 보세요.

 
 

윤 상배

dreamyun@yahoo.co.kr
 

고친 과정
고침 1.0 2004년 1월 13일 23시  
abstract 추가, 번역자 정보 입력 추가
고침 0.9 2003년 3월 28일 15시  
부가정보(note, tip, warning..) 관련 내용추가
고침 0.8 2003년 1월 22일 23시  
revsion 관련 내용추가

차례
1. 정보가 가치를 가지기 위해서는
1.1. 정보는 보존되어야 한다.
1.1.1. 그나마 보존시간이 짧아지고 있다
1.2. 정보는 쉽게 접근되며 검색될수 있어야 한다.
1.2.1. 그런데 정보 검색의 장점마저 사라지고 있다.
1.2.2. 접근역시 점점힘들어지고 있다
2. 그러면 어떻게 해야 할까 ?
2.1. 종이만 사용하자!!
2.2. 개선안으로 plain/text 를 제안하다
2.3. 궁극의 제안 docbook
2.3.1. docbook의 특징
2.3.1.1. 마크업 언어를 이용해서 기술한다.
2.3.1.2. 글의 구조와 속성을 표시할 수 있다
2.3.1.3. 다양한 문서로의 변환
2.3.2. 개발 문서는 docbook 으로 하자
2.3.3. 물론 단점도 있다
3. 개발자를 위한 DocBook 의 사용
3.1. docbook 의 설치
3.2. docbook 문서의 기본구성
3.2.1. 문서 형식
3.2.2. docbook 을 사용했음을 알려주기
3.2.3. 문서의 시작과 끝을 알려준다
3.2.4. 문서의 정보
3.2.4.1. 문서작성자 주변과 관련된 정보
3.2.4.2. 문서교정 과정(변천사) 보여주기
3.2.4.3. 문서의 개략적인 소개
3.2.5. 주석의 사용
3.2.6. 본문의 작성(기본)
3.2.6.1. 문장과 문단
3.2.6.2. 장, 절, 소절
3.3. docbook 문서의 부가적 기능
3.3.1. 링크걸기
3.3.2. 테이블 만들기
3.3.3. 그림 넣기
3.3.4. 참조하기
3.3.5. 보이는 그대로 찍기
3.3.6. 부가정보 기록
3.3.6.1. note
3.3.6.2. warning
3.3.6.3. important
3.3.6.4. tip
3.3.6.5. caution
3.3.7. 각주 달기
3.3.8. 문자의 강조
3.3.9. 인용문의 사용
3.3.10. 나열하기
3.3.11. 컴퓨터와 관련된 속성
3.4. docbook 의 전체적인 문서 모양
4. docbook 문서의 변환
4.1. HTML 로의 변환
4.1.1. 여러개의 파일로 이루어진 html 문서를 만들때
4.1.2. 하나의 파일로 이루어진 html 문서를 만들때
4.2. 문서 변환시 주의 사항
5. 참고문헌

1. 정보가 가치를 가지기 위해서는

1.1. 정보는 보존되어야 한다.

역사의 시작점을 보통 문자를 써서 기록을 남긴 시점으로 본다. 기록을 남긴다는 것은 정보를 남긴다는 뜻으로 그만큼 정보를 기록하는것도 중요하지만 또한 정보를 보존하는것 역시 중요함을 알수 있다.

컴퓨터가 나오기 전에는 주로 종이를 정보저장/전달 매체로 사용하였으며, 그 이전에는 대나무, 돌, 나무 등등을 정보저장 매체로 사용하였다.

컴퓨터는 현재 우리가 가지고 있는 저장매체중 가장 최신의 저장매체라고 인식되어 지고 있다. 컴퓨터로 작성된 데이타는 읽기 쉬우며, 그럴듯하게 다른 매체로 옮길수 있으며, 다른 응용 프로그램을 이용하여서 매우 빠르게 검색가능 하며 인터넷이라는 도구를 이용하면 매우 빠르게 많은 사람들에게 전파될수 있기 때문이다.

그러나 컴퓨터가 최신의 정보보존 매체이긴 하지만, 정말로 "안전한" 보존 매체인지에 대해서는 생각해볼 여지가 있다. 인류가 가장 오랜기간동안 사용해온 "종이"의 경우는 잘만 보관 하면 1500년 2000년 이상을 보존할수 있으며, 지금과 같이 기술이 발달된 상황에서라면 더욱 오래 보존이 가능할것이다. 또한 종이가 훼손되었 다고 하더라도, 불에 타거나, 아주 심하게 찢어지지 않은 이상은 거의 100% 복원이 가능하다.

반면 컴퓨터가 저장매체로 쓰는 플로피 디스크는 몇년을 넘기기가 힘들것이다. 하드 디스크역시 5년 이상 버티기가 힘들것이며, 꿈? 의 저장매체라고 불리는 CD-ROM 역시 5년 이상이 되면 보존율이 떨어지게 된다. 2000 년 이상 보존되는 종이에 비하면 고작해야 1/200 도 안되는 보존기간이다.

또한 아주 심하게 훼손되었다 하더라도, 거의 복원이 가능한 종이에 비해서 컴퓨터가 사용하는 저장매체의 경우 일부분(혹은 전체)의 데이타를 잃어 버리게 되는 경우도 발생한다(매우종종 발생한다). 게다가 실수로 데이타를 날려버리는 경우도 종이에 비해서 더욱 종종 발생한다(매우 주의 깊은 사람이라도 몇번쯤은 경험해 보았을 것이다. 보통 땅을 치고 후회하며, 앞으로 다시는 이런일이 발생하지 않도록 할것이라고 다짐은 하지만.. ..).


1.1.1. 그나마 보존시간이 짧아지고 있다

바로 다양한 binary 포맷 데이타들 때문이다. plain/text 와는 달리 이러한 전용 포멧 데이타들은 읽을수 있는 전용 프로그램이 없다면, 아예 접근조차 못할수 있으며, 이런 전용프로그램들은 아예 사라질수도 있다. 심지어는 같은 전용 프로그램이라도 버젼에 따라서 데이타를 읽지 못하게 될수도 있다.

또한 plain/text 의 경우에는 일부가 훼손되더라도, 그럭저럭 복구가 가능하지만 binary 포멧 데이타의 경우 잘못하면 문서전체가 날라가는 경우도 심심찮게 발생한다.


1.2. 정보는 쉽게 접근되며 검색될수 있어야 한다.

확실히 정보검색에 관한한 컴퓨터매체의 성능을 종이가 따라잡을수는 없을 것이다. 거대한 도서관에서 원하는 책을 찾기란 보통 힘든일이 아니다. 제목을 이용해서 찾는다면 그래도 쉽겠지만, 특정 내용을 포함하는 책을 찾는 것은 엄청난 내용과 시간을 투자하게 만들것이다.

반면 컴퓨터를 사용하게 되면(예를들어 전자 도서관을 구축했을경우) 우리는 매우 빠르게(거의 실시간이라고 생각될 시간에) 원하는 내용을 포함하고 있는 책을 찾아낼수 있다.


1.2.1. 그런데 정보 검색의 장점마저 사라지고 있다.

이른바 프리젠테이션(외관)에 중점을 둔 전용의 포맷을 가지는 포맷이 plain/text 대신 사용되기 때문이다. 예를들어 hwp나 doc 로된 문서를 가지는 전자도서관을 구축했다고 하자. 이럴경우 쉽게 검색될수 있다는 기존의 장점은 사리지게 된다. 정보 검색은 고작해야 제목으로 찾기나, 혹은 책의 내용을 요약한 text 를 가지고 찾아야 할것이다.

그나마 hwp, doc 가 현재 자주 쓰이는 포맷이라면 문제가 없다. 그러나 과연 10년 혹은 20년후에도 지금의 hwp, doc 문서를 읽을수 있을런지는 냉정히 생각해 보아야 한다. 여러분이 지금 한 10년전에 쓰이는던 워드퍼펙트 문서, 하나워드, 보석글 문서 를 보려고 한다면 상당한 노력을 기울여야 할것이다. 대부분의 경우는 포기하고, 비슷한 내용을 가지는 다른 문서를 찾으러 떠날것이다.

원하는 문서를 찾았다고 하더라도 내용을 보려면 전용 프로그램(대부분 비싸다)이 있어야 한다. 그나마 전용 프로그램이 사라지면 많은 노력을 기울여야한다. (아마 대부분 포기하고 다른문서를 찾을것이다)

이것은 정보검색의 범위를 심각하게 축소시키게 된다. 반드시 최신의 문서라고 만해서 가장 좋은 정보를 가지고 있을것이라고는 생각할수 없다. 오래된 문서라고 해도 훌륭한 아이디어와 정보를 제공할수 있기 때문이다.

전자 도서관에 doc, hwp, 워드퍼팩, 하나, 보석글 등의 서로호환되지 않은 다양한 포맷의 문서가 공존한다고 생각해보자. 과연 어떻게 접근하고 어떻게 검색을 해야 할것인가.


1.2.2. 접근역시 점점힘들어지고 있다

독특한 포맷으로 작성된 정보에 접근하기 위해서 역시 독특한 전용 소프트웨어를 사용해야 한다. 어떤것은 구하기가 어렵고(오래된 버젼의 포맷), 어떤것은 많은 비용을 지불해야 한다. (불법복사라는게 있긴하지만) 원하는 정보를 얻기 위해서는 그정도의 경제능력을 가지고 있어야만 한다. 이는 정보접근에 대한 불평등을 가속화 시킨다 - 마치 컴퓨터와 인터넷 인프라의 유무로 인한 정보 빈부격차가 가속화 되는 것처럼 -. 머 어차피 이러한 격차가 생기는 건 어쩔수 없겠지만, 조금만 노력한다면 이러한 격차를 줄일수 있을것이다.

plain/text 로 작성된 RFC의 경우 인터넷에 연결되어 있다면, 문서에 접근하는데 제약이 없다. 이문서가 워드퍼펙 포맷으로 작성되어 있다고 생각해보라, 소프트웨어를 찾는것 조차 수월하지 않을것이다. ms word 역시 언제 워드퍼펙 짝이 날런지 알수 없는 일이다.


2. 그러면 어떻게 해야 할까 ?

2.1. 종이만 사용하자!!

물론 이건 말도 안되는 소리다. 종이만 사용하기에는 우리는 너무 멀리 나왔다. 이를테면 사건의 지평선을 이미 뛰어넘어서 그이전으로는 돌아갈수 없게 된것이다. 컴퓨터가 인간의 정보 생활을 윤택하게 하는지 그렇지 않은지는 논쟁거리가 될수 없다. 어떻게 해야 컴퓨터를 이용해서 인간의 정보 생활을 더 윤택하게 할수 있을런지에 논쟁의 촛점을 맞추어야 할때다.


2.2. 개선안으로 plain/text 를 제안하다

컴퓨터 매체가 종이에 비해 많은 단점을 가진것도 사실이지만, 무시할수 없는 장점을 지녔다. 위에서 말했듯이 빠르며, 쉽게 전파되며, 빠른검색이 가능하며(가능하도록 만들수 있다), 쉽게 복사할수 있다.

그러므로 이러한 장점을 이용하면서 단점을 보완하는 방향으로 나갈야 할것이다.

그런의미에서 plain/text 를 제안하는 바이다.

plain/text 로 된 문서는 notepad 와 vi, cat 과 같은 도구를 이용해서 쉽게 접근할수 있다. 한마디로 컴퓨터를 이용할줄 아는 사람이라면 누구나 쉽게 접근 가능하다.

또한 어떠한 상황에서라도 쉽게 검색할수 있다. 최악의 경우라 할지라도 grep 를 사용할수 있으며, 이러한 plain/text 검색 프로그램은 매우 손쉽게 개발할수 있다(이미 나와있는 것들을 써도 되지만).

보존만 제대로 된다면 장담하건데 100년 아마도 그이후에라도 누구든지 쉽게 접근이 가능할것이다 - "쉽게 접근" 가능 이게 중요하다 -.

RFC 문서가 유럽에서만 사용되는 이상한 워드프로세스 포맷으로 되어있다고 한번 상상해 보라. RFC 문서와 웹페이지가 왜 plain/text 로 되어있는지 생각해 보기 바란다.

게다가 보존하기도 plain/text 가 훨씬 쉽다. plain/text 는 일부분이 훼손 되더라도 문서 전체를 읽어버리는 경우는 그리 흔하지 않다. 그러나 binary 데이타의 경우 일부의 훼손이 전체의 훼손을 의미하는 경우가 매우 흔하다. 파일의 크기자체가 작다는 것도 보존을 쉽게 하는 이유가 된다.


2.3. 궁극의 제안 docbook

마치 선동문구 같지만 어쨋든 plain/text 로 구성되면서도 구조적 문서의 구조를 가질수 있는 docbook 을 제안한다(개인적으로 tex 도 훌륭한 또다른 제안이라고 생각한다.).

docbook 은 sgml(xml 버젼도 있음) 의 DTD 이다. sgml 의 특성에 걸맞게, 구조적이고 확장/변형 가능한 문서를 만들어준다. 일단 만들어진 문서는, HTML, TEX, RDF, PS, PDF 등으로의 변형이 가능하다. 무엇보다 가장 큰 장점은 뭐니 뭐니 해도 문서를 구조적으로 기술할수 있게 만듦으로써, 문서 자체를 정보화 할수 있다라는 점일 것이다.


2.3.1. docbook의 특징

기업이나 개인이 사용하는 대부분의 문서들은 데이터 중심이 아닌 프리젠테이션 중심이다. 이들 문서들은 외관상 예쁘긴 하지만 표준,효율,정보 중심의 표준적인 틀을 가지고 있지 않고 중구난방으로 제작되는 경향이 있다. 최근의 문서제작툴들이 xml을 지향하기 시작했다는 것은 그나마 다행이라고 할 수 있겠다.

docbook는 정보와 데이터중심의 표준적이고 효율적인 문서의 제작을 도와주기 위한 목적으로 만들어 졌다.


2.3.1.1. 마크업 언어를 이용해서 기술한다.

기술된 docbook를 보면 html과 매우 비슷하다는 걸 알 수 있을 것이다. 실제로 docbook와 html은 sgml의 형제뻘쯤 되는 관계로 sgml의 다른 서브셋이다.

현재 docbook는 sgml과 xml로 기술되고 있으며 기술동향상 xml로 기술되는 경우가 더욱 많다. 뭐 그렇다고 하더라도 내용상에 아무런 차이도 없으니 호환걱정을 할 필요는 없다. xml자체가 sgml을 단순화한 서브셋이기 때문이다. 실제 xml,sgml형식의 docbook 모두 동일한 내용을 가진다.


2.3.1.2. 글의 구조와 속성을 표시할 수 있다

docbook이 xml(sgml)을 사용해서 기술되므로써 얻을 수 있는 이익인데 테그를 이용해서 글의 구조와 속성을 표시하게 되므로 문서 자체가 정보가 될 수 있다.


2.3.1.3. 다양한 문서로의 변환

문서자체가 표준적인 틀을 따르며 구조와 속성을 명확히 할 수 있으므로 다른 문서로의 변환툴의 작성이 매우 용이하다.

xml은 데이터를 저장하는 문서와 별도로 보여지는 모습을 정의하기 위한 스타일쉬트(style sheet)라는게 존재한다. 문서를 획득한 사람은 단지 스타일쉬트를 어떻게 정의하느냐에 따라서 다양한 형태의 문서를 출력할 수 있게 된다.

이러한 스타일쉬트는 직접작성해서 사용하는게 보통이지만 docbook는 이미 여러개의 스타일쉬트를 제공한다. 이러한 스타일쉬트를 이용하면 일관된 모양을 가지는 문서를 만들 수 있다.

참고로 word, ps, pdf 같은 경우 스타일쉬트로 정의할 수 없기 때문에 이경우 tex와 같은 스타일쉬트로 정의 가능한 중간단계의 문서로 변경한다음 문서변환툴을 이용해서 변경한다.


2.3.2. 개발 문서는 docbook 으로 하자

제안서, 홍보용 문서등 구조적인 문서의 내용을 보여주는것 보다는 외적으로 회려한 그래서 사람의 시선을 끌수 있는 문서가 아닌 개발문서 를 만들고자 한다면 docbook 의 사용을 권장하는 바이다.

docbook 은 매우 사용하기 쉬우며(HTML 을 사용하는 것만큼), 문서를 구조적으로 작성할수 있도록 도와주며, plain/text 로 언제든지 열람가능하고 그자체를 데이타베이스로써 관리할수 있다. 또한 쉽게 접근가능하다.

필자는 개발문서작성을 위해서 word, hwp 등의 전용 어플리케이션을 쓰는걸 지극히 싫어하는(반대하는 입장)이다. 일단 문서 표준이 없다. 나름대로 팀에서 만든다고 만들겠지만, 구조적으로 보기 쉬운 표준화된 문서의 틀을 마련하는건 결코 쉬운일이 아니다. 또한 이러한 틀을 만들었다고 해도 다른 회사의 문서들 - 심지어는 같은 회사의 다른 팀의 문서들 - 과도 그 틀이 다르며, 이는 문서의 이해도를 떨어지게 만든다. 팀이 바뀌면 이 틀은 깨어지게 된다.

게다가 문서 검색이 힘들다.(고작해야 제목으로 검색이 가능하다) 검색이 힘든 문서는 활용도가 떨어지게 되고, 이러한 문서들이 쌓이고 쌓이면 결국 하드의 한구석만 차지하는 쓸모없는 정보가 되어버리고 만다. docbook 는 HTML 로 변경하든 그대로 사용하든지 간에 모든 종류의 검색이 가능하다. 보통 개발 문서에는 많은 중요한 내용이 - 설계방법, 코딩방법, 팁, 문제해결 방법, 코드 -들어 있는데, 검색자체가 힘들므로 만들어진 개발문서가 다음 프로젝트에 거의 활용되어 지지 않는다. 그나마 팀이 그대로 유지되면 괜찮은데, 팀개편이라도 일어나게 되면, 이 문서들은 거의 폐기되는 경우가 많다(개인적으로 유지하는 경우 제외하면)

결론적으로 말해서 docbook을 사용하면 표준화된, 그리고 검색하기 쉬우며, 사용하기 쉽고, 데이타 베이스화 하기 쉬운 표준 문서를 가지게 됨으로써 약간의 노력으로 - 약간 능력 있는 프로그래머가 한 일주일만 노력하면 쓸만한 시스템을 구축할수 있을것이다. (물론 다른 공개된 시스템을 수정해서 사용해도 된다) - 지식 system을 구축할수 있다.

문서 작성시간도 훨씬 단축시킬수 있다. 문서의 구조에 대해서 생각해야 되는 시간을 줄일수 있으며, 눈에 어떻게 보일런지에 신경쓰지 않아도 되기 때문이다.


2.3.3. 물론 단점도 있다

아직 많은 회사에서 훌륭한 정보란, "보기에 예쁜 그림과 표 그리고 폰트를 포함한 doc, hwp 포멧을 가지는 문서에 저장된.. "예쁜문자" 이라고 생각하고 있는게 현실이다. docbook 로 만든문서는 아마 결재처리 과정을 밟지 못하는 불운을 겪을수도 있을 것이다. 어쨋든 분명 docbook 로 만들어진 문서는 "화려한" 이란 수식어와는 거리가 좀 멀다.

아무리 사용하기 쉽다고는 하지만, HTML 테그 같은 몇가지 테그들에 대해서 익히고 있어야 한다. 필자역시 여전히 문서를 만들적에는 docbook 의 기본적인 사용법을 담고 있는 템플릿문서를 참고한다. (하긴 word 나 hwp 도 제대로 익혀서 사용하려면 결코 쉬운게 아니지만)

복잡한 표만들기가 수월하지가 않다. 하지만 복잡한 표를 만들지 않더라도, 정보를 전달할수 있는 방법은 충분하다고 생각되어진다.

모든 회사들이 표준적인 문서로 doc 포맷을 고집하고 있다. 표준적이 되어야할 이유가 없는데도 말이다. docbook 으로 만들어진 문서를 HTML 혹은 PDF 변환 시켜서 준다면 "기본도 안된 회사" 라는 오명을 듣기에 딱 알맞다(PDF 라면 그나마 양호하겠지만).


3. 개발자를 위한 DocBook 의 사용

DocBook 에 대한 기본적인 소개와 설명은 DocBook 으로 글쓰기 의 1장과 2장을 참고 하기 바란다.

이문서에서는 DocBook 의 실질적인 사용법만을 간추리도록 할것이다.

DocBook 는 HTML와 비슷한 면이 매우 많으므로(마크업 언어라는 특성 외에도) HTML과 자주 비교되어서 설명될것이다.


3.1. docbook 의 설치

Linux rpm 을 기준으로 설명할것이다. 대부분의 Linux 배포판은 docbook 사용에 필요한 모든 패키지를 포함하고 있음으로 아마 바로 사용해도 문제 없을것이다. 없다면 아래의 패키지를 설치하도록 하자.

docbook 를 사용하기 위해서는 다음과 같은 파일들이 설치되어 있어야 한다. 패키지의 이름은 배포판의 버젼에 따라 약간씩 다를수 있다.

 

jade
openjade-1.3.rpm
docbook 관련 패키지
dockbook-dtd41-sgml-1.0.rpm, dockbook-style-dsssl-1.64.rpm, dockbook-utils-0.6.9.rpm, dockbook-utils-pdf-0.6.9.rpm
kldp.dsl
html 변환시 사용될 kldp 스타일 쉬트

kldp.dsl 받기

 


3.2. docbook 문서의 기본구성

3.2.1. 문서 형식

docbook 은 자주 사용되는 문서형식에 따라서 다양한 문서의 타입을 지정해줄수 있다. docbook 에서 지원하는 문서형식은 "book", "article", "chapter", "set" 등이 있다. book 는 책을 펴내기에 알맞은 다양한 문서구조를 지원한다. article 는 보고서 수준, chapter 은 간단한 몇개의 장 만으로 이루어진 문서를 나타내기 위해서 사용한다. set 은 여러개의 book 을 포함한다.

이러한 문서구조를 선택하려면 다음과 같이 문서의 처음에 명시해주면 된다.

<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
				

 


3.2.2. docbook 을 사용했음을 알려주기

docbook 은 sgml(xml)의 DTD 이므로, 모든 정보가 사용자 정의된 TAG 를 이용해서 표기되어 진다. 일단은 이 문서가 docbook DTD 를 이용해서 만들어 졌다는걸 알려줘야 한다.

<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
				

위는 article 의 문서구조를 사용할경우이다. book 을 사용하고 싶다면 article 대신 book 을 쓰면 된다.

 

참고로 현재 이 사이트에서 사용되는 모든 docbook 문서는 article 문서 구조를 사용했다.


3.2.3. 문서의 시작과 끝을 알려준다

HTML 문서의 경우 <HTML> 과 </HTML> TAG 를 이용해서 문서의 시작과 끝을 알려준다. docbook의 경우는 <article> 테그를 이용한다.

<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
<article lang="ko">

<!-- 실제 문서의 내용이 온다 -->
...
...
</article>
				

lang 는 어떠한 문자를 사용하는지를 알려주기 위해서 사용된다.

 


3.2.4. 문서의 정보

대부분의 문서를 보면, 문서의 가장 첫머리에는 문서의 "제목", "저작자", "저작자의 연락처 - email 같은 - ", "문서 소개" 등이 놓이게 된다. 문서의 정보를 위해서 사용되는 TAG 는 <articleinfo> 이다. articleinfo TAG 는 HTML 의 HEAD 테그와 비슷하다고 생각할수 있다.

<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
<article lang="ko">
<articleinfo>
    <title>dockbook 사용하기</title>
    <author>
        <surname>윤</surname>
        <firstname>드림</firstname>
        <affiliation>
            <orgdiv>특수 기술연구개발실</orgdiv>
            <orgname>재미있는 개발팀</orgname>
            <jobtitle>연구원</jobtitle>
            <address>
                <email>dreamyun@yahoo.co.kr</email>
            </address>
        </affiliation>
    </author>
</articleinfo>
....
				

쉽게 이해가능 할것이다. 전체 문서의제목, 글쓴이의 정보(이름, 부서, 이메일)등이 들어가 있다. title 외의 다른것들은 옵션사항으로 필요없을경우 적지 않아도 된다.

 


3.2.4.1. 문서작성자 주변과 관련된 정보

문서를 작성하다 보면 번역을 할 때도 있고 여러명이 문서 작성을 도와줄 때도 있다. 그렇다면 이러한 정보를 문서에 집어 넣는 작업도 필요할 것이다. 이러한 정보입력을 위해서 <othercredit> 테그를 제공한다. 특히 번역자를 명시할 경우 <othercredit role="translator">를 이용해서 번역이 이루어졌음을 명시할 수 있다.

<author>
	<surname>Richard</surname>
	<firstname>mu ge</firstname>
	...
</author>
<!-- 번역자  -->
<othercredit role="translator">
	<surname>아</surname>
	<firstname>무개</firstname>
	....
</othercredit>
					

 


3.2.4.2. 문서교정 과정(변천사) 보여주기

문서는 한번 만들어지고 끝나는게 아니고 지속적으로 교정되거나 내용이 추가된다. 이러한 교정및 추가가 있을때마다 그 내용을 적어주면 문서를 좀더 효과적으로 관리할수 있을것이다. 이를 위해 docbook 는 revhistory 와 몇개의 부수적인 태그를 제공한다.

<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
<article lang="ko">
<articleinfo>
    <title>dockbook 사용하기</title>
    <author>
         ......
    </author>
	<revhistory>
		<revision>
			<revnumber>0.8</revnumber>
			<date>2003년 1월 22일 23시</date>
			<revremark>revsion 관련 내용추가</revremark>
		</revision>
		<revision>
			<revnumber>0.7</revnumber>
			<date>2003년 1월 21일 3시</date>
			<revremark>문서 최초작성</revremark>
		</revision>
	</revhistory>
</articleinfo>
					

문서의 버젼, 교정날짜, 교정내용등을 적어줄수 있다. 이 문서의 가장 앞부분을 보면 revhistory 를 적용한 예를 볼수 있을것이다.

 


3.2.4.3. 문서의 개략적인 소개

좀 규모가 있는 문서라면 문서 가장앞에 문서에 대한 개략적인 소개가 들어간다. <abstract>를 이용하면 된다. 이 것은 articleinfo와 같은 레벨을 가진다.

<articleinfo>
....
</articleinfo>
<abstract>
	<para>
		드디어 2.6커널이 세상에 나오게 되었다. 많은 기능들이 추가되었으며 몇몇 중요 기능들은 
		2.4로 백포팅 되기도 했다. 이문서는 2.6커널에 추가된 주요 기능들에 대한 설명을 담고 
		있다. ...   
	</para>
</abstract>
					

 


3.2.5. 주석의 사용

docbook 는 마크업 언어를 사용한다. 그러므로 문서 작성 자체가 프로그래밍 과정과 매우 비슷하다. 모든 프로그래밍할때와 마찬가지로 주석이 필요할때가 있다. 주석은 HTML 과 동일하게 <-- 주석 --> 를 사용한다.

<!--                                 -->
<!--  여기에서 부터 본문 시작        -->
<!--                                 -->
				

 


3.2.6. 본문의 작성(기본)

3.2.6.1. 문장과 문단

이제 문서의 제목글도 쓰고, 기본적인 문서 정보도 입력했으니 실제 문서를 작성할 시간이다.

문서를 작성하기 전에 문서의 기본적인 구성요소를 알아보도록 하자. 문서는 기본적으로 문단과, 문장으로 구성된다. 문장이란 한가지의 일관된 생각이나 개념을 반영하는 문장의 모임이다. 문장이란 "." 로 끝나는 몇개의 단어로 이루어진 단어의 모임이다. docbook 은 "문단" 단위로 문서가 이루어지게 된다. 각 문단을 나누기 위해서 사용되는 테그는 <para> 이며 이는 HTML의 <p> 와 거의 동일하다.

<para>
    시스템 프로그램이란 특정한 프로그래밍 언어를 이용해서 시스템(os)를 제어하는 
    프로그램을 작성하는 것이다. 보통은 C와 perl 등이 주로 사용된다. 사용자와 
    프로그램간에 상호대화하는 영역이 적기 때문에 
    GUI를 포함하지 않는 경우가 많으며, 
    실행시 아규먼트를 주어서 프로그램과 대화하는 경우가 대부분이다.  
</para>
<para>
    이와는 달리 응용 프로그램은 시스템을 제어하는 일이 아닌, 사용자 레벨에서 
    사용되는 프로그램을 말한다. 웹브라우저, 문서작성기, 표계산기 등이 응용 
    프로그램의 범위에 포함된다. 주로 C, C++ 을 통해서 만들어지며, 사용자와 
    프로그램간의 상호대화가 매우 중요하기 때문에 GUI 환경을 포함한다. 
</para>
					

위의 경우 2개의 <para> 를 이용해서 2개의 문단으로 나뉘어져 있다. 글을 보면 알겠지만 1번째 문단과 2번째 문단간의 특성이 분명히 나타난다. 1번째 문단이 시스템프로그램에 대한 내용인 반면 2번째 문단은 응용프로그램에 대한 내용이다. 만약 2개의 문단이 하나의 문단으로 처리되어 있다면, 글을 읽기가 어려워지고 글의 뜻이 정확히 전달되지 않을것이다. 이처럼 문단을 정확하게 나누는 것은 훌륭한 문서를 만들기 위한 매우 중요한 사항이다.

 


3.2.6.2. 장, 절, 소절

위의 문단들은 좀더 높은 수준에서 논리적 장, 절, 소절 등으로 묶여지게 된다. 즉 문단을 모아서 소절, 소절을 모아서 절, 절을 모아서 장 으로 배치시켜야 한다.

docbook 에서는 <section> 를 이용해서 장,절,소절.. 를 구현한다.

<section>
    <title>언어의 종류</title>
    <para>
        이번장에서는 인터프리터 언어와, 컴파일러 언어에 대해서 
        알아보겠다.
    </para>

    <!-- 인터 프리터 언어에 대해서 -->
    <section>
        <title>인터프리터 언어</title>
        <section>
            <title>Perl</title>
            <para>
                펄은 래리웰이 어쩌고 저쩌고...
            </para>
        </section>
        <section>
            <title>Python</title>
            <para>
                최근 각광 받고 있는 파이슨은 어쩌고 저쩌고...
            </para>
        </section>
    </section>

    <!-- 컴파일러 언어에 대해서 -->
    <section>
        <title>컴파일러 언어</title>
        <section>
            <title>C</title>
            <para>
                오래되었지만 혹은 낡았다고 말하고 있지만 어쩌고 저쩌고..
            </para>
        </section>
        <section>
            <title>C++</title>
            <para>
                C와 닮았지만 전혀다른 언어인 C++ 은 어쩌고 저쩌고..
            </para>
        </section>
    </section>
</section>
					

위의 글은 대충 아래와 같이 표시될것이다.

1장. 언어의 종류
1.1. 인터프리터 언어
1.1.1. Perl
1.1.2. Python

1.2 컴파일러언어
1.2.1. C 
1.2.2. C++ 
					

 


3.3. docbook 문서의 부가적 기능

일단 지금까지의 내용으로도 가장 기본적인 형식의 문서를 만들수 있다. 하지만 이걸로는 좀더 복잡한 문서를 만들기엔 부족하다. 이번장에서는 문서의 작성을 도와주는 여러가지 부가적인 다른 기능에 대해서 알아보도록 하겠다.


3.3.1. 링크걸기

문서작성을 하다보면 특정 사이트등에 링크를 걸고자 할때가 있을것이다. 이럴땐 <ulink> 를 사용하면 된다. HTML 의 <a> 와 비슷하다.

더욱 자세한 정보는 <ulink url=http://www.joinc.co.kr>joinc.co.kr</ulink> 를 참고하기 바란다. 
				

 


3.3.2. 테이블 만들기

문서작성에 있어서 테이블의 사용은 필수이다. ≶table> 를 이용해서 작성가능하다.

<table>
    <title>vim 에서의 커서이동</title>
    <tgroup cols=2>
    <tbody>    
        <row>
            <entry>k</entry>    
            <entry>커서를 위로 움직임</entry>    
        </row>
        <row>
            <entry>j</entry>    
            <entry>커서를 아래로 움직임</entry>    
        </row>
        <row>
            <entry>j</entry>    
            <entry>커서를 왼쪽으로 움직임</entry>    
        </row>
        <row>
            <entry>l</entry>    
            <entry>커서를 오른쪽으로 움직임</entry>    
        </row>
    </tbody>    
    </tgroup>
</table>
				

위의 테이블은 아래와 같이 표시될것이다.

표 1. vim 에서의 커서이동
k 커서를 위로 움직임
j 커서를 아래로 움직임
j 커서를 왼쪽으로 움직임
l 커서를 오른쪽으로 움직임

 

이보다 좀더 복잡한 표에 대해서는 DocBook으로 글 쓰기(더욱 다채로운 기능들)를 참고하기 바란다.


3.3.3. 그림 넣기

대부분의 문서에 그림은 필수적이다. 다음과 같은 방식으로 필요한 이미지를 넣을수 있다.

<figure>
    <title>테스트 이미지</title>
    <graphic fileref=http://www.joinc.co.kr/images/articles/vim_navi.jpg>
</figure>
				
그림 1. 테스트 이미지

 


3.3.4. 참조하기

문서를 작성하다 보면 같은 문서내의 특정한 내용을 "참조"해야 하는경우가 있다. 책이라면 몇 page 를 참조 하라는 방식일것이다. 반면 docbook 은 하이퍼링크로 참조될 영역을 직접 연결시킬수 있다.

<section id="compile">
...
</section>

<section>
...
    <para>
        컴파일 방법에 대한 자세한 내용은 <xref linkend="complie">를 참고하라.
    </para>
</section>
				

 


3.3.5. 보이는 그대로 찍기

HTML 의 <pre> 와 비슷하며, 특히 쏘쓰 코드를 포함하거나, ASCII 도표등을 포함시키고자 할때 유용하게 사용될수 있다.

<screen>
#include <stdio.h>
int main()
{
    printf("hello world\n"); 
    exit(0);
}
</screen>
				

 


3.3.6. 부가정보 기록

문서를 작성하다보면, "참고", "주의", "팁" 형식으로 부가적인 데이타를 삽입해야 하는 경우가 있다. docbook 에서는 5가지 유형별로 부가적인 정보를 삽입할수 있도록 도와준다.


3.3.6.1. note

부가적인 설명을 첨부하고자 할때를 위해서 note 라는 테그를 제공한다.

<para>
    <note><title>커널버전 넘버링 방식</title>
    <para>
        리눅스커널버젼 넘버링은 x.x.xx 의 형식으로 이루어진다. 
        첫번째 필드는 메이저버전의 변화를 표시하기 위해서, 
        두번째 필드는 마이너버젼의 변화, 세번째는 patch 와 같은 
        간단한 변화를 표시한다. 
    </para>
</para>
					

note를 적용했을 경우 다음과 같이 표시된다.

커널버전 넘버링 방식: 리눅스커널버젼 넘버링은 x.x.xx 의 형식으로 이루어진다. 첫번째 필드는 메이저버전의 변화를 표시하기 위해서, 두번째 필드는 마이너버젼의 변화, 세번째는 patch 와 같은 간단한 변화를 표시한다.

 


3.3.6.2. warning

문서를 작성하다보면 문서를 읽는 사람에게 주의해야될 내용을 알려야할 필요가 생긴다. 이럴땐 waring 태그를 사용하면된다.

<para>
    <warning>
    <para>
        fork 를 해서 자식프로세스를 생성시켰을경우, 반드시 wait() 함수를 
        이용해서 자식프로세스를 정리해주어야 한다. 그렇지 않을경우 좀비프로세스가 
        발생할수 있다.  
    </para>
    </warning>
</para>
					

다음은 warnig 테그를 사용했을때의 출력결과이다.

 
주의
fork 를 해서 자식프로세스를 생성시켰을경우, 반드시 wait() 함수를 이용해서 자식프로세스를 정리해주어야 한다. 그렇지 않을경우 좀비프로세스가 발생할수 있다.

 


3.3.6.3. important

특별히 중요한 사항들을 정리할필요가 있다면 important태그를 사용하면된다.

<para>
    <important>
    <para>
        이문서의 모든 예제는 리눅스상에서 gcc3.x 를 이용해서 테스트되었다.
    </para>
    </important>
</para>
					

다음은 important 태그를 사용했을때의 출력결과이다.

중요: 이문서의 모든 예제는 리눅스상에서 gcc3.x 를 이용해서 테스트되었다.

 


3.3.6.4. tip

tip태그를 이용하면 간단한 팁을 문서에 포함시킬수 있다.

<para>
    <tip>
    <para>
        표준출력을 파일과 터미널에 동시에 출력하길 원한다면 tee 라는 명령어를 
        이용하면된다. tee는 디버깅을 위한 용도로 유용하게 사용할수 있다.  
    </para>
    </tip>
</para>
					

다음은 tip 태그를 사용했을때의 출력결과이다.

작은 정보: 표준출력을 파일과 터미널에 동시에 출력하길 원한다면 tee 라는 명령어를 이용하면된다. tee는 디버깅을 위한 용도로 유용하게 사용할수 있다.

 


3.3.6.5. caution

문서를 읽는 사람의 주의를 환기시키기 위한 목적으로 caution 태그를 사용할수 있다.

<para>
    <caution>
        <title>문서에 내용에 대한 책임</title>
        <para>
            이 문서내용에 의해서 발생된 어떠한 책임도 문서 저작자에게 
            없음을 밝힘니다. 문서내용에 의해서 발생된 모든 책임은 
            각자에게 있습니다. 
        </para>
    </caution>
</para>
					

다음은 caution을 적용했을때의 출력결과이다.

 
문서에 내용에 대한 책임
이 문서내용에 의해서 발생된 어떠한 책임도 문서 저작자에게 없음을 밝힘니다. 문서내용에 의해서 발생된 모든 책임은 각자에게 있습니다.

 


3.3.7. 각주 달기

책을 보면 페이지의 아래에 어떤 단어등에 대한 자세한 설명등을 달아 놓은걸 볼수 있을것이다. 이걸 각주라고 하는데, docbook 에서 각주를 사용하려면 다음과 같이 하면 된다.

linux 
<footnote>
    <para>
        리누스 토발즈가 만든 운영체제로, minix 를 보고 i386 에서 
        돌아가는 자신만의 운영체제를 만들어 보자는 취지하에 취미로 
        만들어졌다. 
    </para>
</footnote>
의 가장 큰 장점은 재미있다는 것으로 최고의 즐거움 즉 
삽질을 제공한다. 
				

이것은 각주 [1] 의 실질적인 모습을 보여준다.

 


3.3.8. 문자의 강조

<emphasis> 를 사용하면 된다.

<emphasis>Vim</emphasis> 의 특징은 다음과 같다.  
				

 


3.3.9. 인용문의 사용

 

<blockquote>
    <attribution>햄릿 중에서</attribution>
    <para>죽느냐 사느냐 이것이 문제로다.</para>
</blockquote>
				

 


3.3.10. 나열하기

이번에는 목록을 나열하는 다양한 방법에 대해서 알아보도록 하겠다.

 

itemizedlist
각 목록에 번호가 붙지 않은 상태로 나열된다.
리눅스는 다음과 같은 특징을 가지고 있다. 
<itemizedlist>
    <listitem>
        <para>
            멀티유저/멀티 태스킹 
        </para>
    </listitem>
    <listitem>
        <para>
            뛰어난 안정성        
        </para>
    </listitem>
</itemizedlist>
								

위의 내용은 다음과 같이 표시될것이다.

 

리눅스는 다음과 같은 특징을 가지고 있다.

 

  • 멀티유저/멀티 태스킹
  • 뛰어난 안정성

 

orderedlist
itemizedlist 에 번호가 붙어서 나온다는것 외에는 같다.
리눅스는 다음과 같은 특징을 가지고 있다. 
<orderedlist>
    <listitem>
        <para>
            멀티유저/멀티 태스킹 
        </para>
    </listitem>
    <listitem>
        <para>
            뛰어난 안정성        
        </para>
    </listitem>
</orderedlist>
								

위의 내용은 다음과 같이 표시될것이다.

 

리눅스는 다음과 같은 특징을 가지고 있다.

 

  1. 멀티유저/멀티 태스킹
  2. 뛰어난 안정성

 

orderedlist
제목과 내용을 분리되어서 표시할수 있다.
리눅스는 다음과 같은 특징을 가지고 있다.
<variablelist>
    <varlistentry>
        <term>멀티유저/멀티 태스킹</term>
        <listitem>
            <para>
            리눅스는 안정적인 멀티유저/멀티 태스크 환경을 지원한다. 
            -중략-
            </para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>뛰어난 안정성</term>
        <listitem>
            <para>
            리눅스는 안정적인 운영체제이다. 이는 커널자체가 커널로써 필요한 
            최소한의 기능만을 가지고 나머지는 어플리케이션 영역으로 넘김으로써, 
            -중략-
            </para>
        </listitem>
    </varlistentry>
</variablelist>
								

위의 내용은 다음과 같이 표시된다.

 

리눅스는 다음과 같은 특징을 가지고 있다.

 

멀티유저/멀티 태스킹
리눅스는 안정적인 멀티유저/멀티 태스크 환경을 지원한다. -중략-
뛰어난 안정성
리눅스는 안정적인 운영체제이다. 이는 커널자체가 커널로써 필요한 최소한의 기능만을 가지고 나머지는 어플리케이션 영역으로 넘김으로써, -중략-

 

강조
HTML의 <B> 와 동일하다. 굵은 문자로 표시해서 강조시킨다.
<emphasis>Linux</emphasis>의 혁명이 일어나다. 
								

위의 글은 아래와 같이 표시될것이다.

 

Linux의 혁명이 일어나다.

 


3.3.11. 컴퓨터와 관련된 속성

이번에는 컴퓨터 그중에서도 Key 와 관련된 내용들이다. 개발문서를 위해서 docbook 을 사용한다면, 유용하게 사용할수 있을것이다.

아래의 예들을 보면 굳이 이러한 복잡한? TAG를 사용해서 나타낼필요가 있을까 하고 생각할수도 있을것이다. 그러나 이렇게 속성을 각각 지정해 둠으로써 필요할때 속성검색등을 하는데 유용하게 사용할수 있다. docbook 의 가장 큰장점은 데이타에 속성을 지정해줌으로써, 데이타를 단순히 데이타가 아닌 정보로 사용될수 있도록 만들어준다는 점이다.

 

menuchoice
메뉴선택순서를 나타낸다.
<menuchoice>
    <shortcut>
    <keycombo>
        <keycap>Ctrl</keycap>
        <keycap>S</keycap>
    </keycombo>
    </shortcut>
    <guimenu>파일</guimenu>
    <guimenuitem>저장</guimenuitem>
</menuchoice>
								

이것은 다음과 같이 보여질것이다.

 

파일->저장 (Ctrl-S)

keycombo
키의 조합을 나타낼때 사용한다.
guimenu
GUI 의 메뉴의 선택순서를 나타낼때 사용한다.
guimenuitem
GUI 의 메뉴의 선택순서를 나타낼때 사용한다. guimenu 는 최상위 메뉴를 guimenuitem 은 그아래에 있는 메뉴일경우 사용된다.
application
응용 프로그램의 이름을 나타낸다.
command
명령어를 나타낸다.
filename
파일의 이름을 나타낸다.
<filename>filename</filename>
<filename id="directory">directory name</filename>
								

디렉토리 이름을 나타내기 위해서 id 값을 줄수도 있다.

 

glossary
용어 해설을 위해 사용된다.
<glossary>
    <glossentry>
        <glossterm>UDP</glossterm>
        <glossdef>
            <para>
                User Datagram Protocol 의 줄임말로, 비연결지향의 단순히 데이타를 
                보내는데 중점을 둔 전송계층의 프로토콜    
            </para>
        </glossdef>
    </glossentry>
</glossary>
								

이것은 다음과 같이 보일것이다.

 

 


3.4. docbook 의 전체적인 문서 모양

docbook 문서는 보통 다음과 같은 모양을 가진다.

<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
<article lang="ko">

<!--           -->
<!-- 문서 정보 -->
<!--           -->
<articleinfo>
    <title>Socket</title>

    <author>
        <surname>윤 상배</surname>

        <affiliation>
            <address>
                <email>dreamyun@yahoo.co.kr</email>
            </address>
        </affiliation>
    </author>
</articleinfo>
<!--                                                                 -->
<!-- 섹션 시작                                                       -->
<!--                                                                 -->
<section>
    <title>Socket 에 대한 기본지식</title>
    <section>
        <title>socket layer</title>
        <para>
            ...    
        </para>
    </section>
    <section>
        <title>왜 Layer 구조를 가지는가</title>
        <para>
            ...
        </para>
    </section>
</section>
</article>
			

 


4. docbook 문서의 변환

docbook 으로 작성된 문서는 다양한 포맷의 다른 문서들로 변환될수 있다. tex, html, rtf, plain/text 등으로 변환이 가능하며 tex 로 변환했을경우 간단하게 ps, pdf 문서로 변환도 가능하다.

이 문서에서는 html 로의 변환만을 소개할것이다. 다른 포맷으로의 변환은 DocBook 으로 글쓰기를 참고 하기 바란다.


4.1. HTML 로의 변환

HTML로 변환하기 위해서 kldp 에서 HTML 변환을 위한 스타일 쉬트로 사용하는 kldp.dsl 을 사용하기로 했다. 자료실에서 다운로드 받을수 있다.

다운로드 받은 kldp.dsl 은 /usr/share/sgml/docbook/kldp 디렉토리 아래에 복사하도록 하자. 그다음 kldp.dsl 을 아래와 같이 수정하도록 한다. 대충 kldp.dsl 의 4째줄부터 수정하면 될것이다.

<!ENTITY % print "IGNORE">
<!ENTITY docbook.dsl SYSTEM "/usr/share/sgml/docbook/dsssl-stylesheets-1.64/html/docbook.dsl" CDATA dsssl>
]]>
<!ENTITY % print "INCLUDE">
<![%print;[
<!ENTITY docbook.dsl SYSTEM "/usr/share/sgml/docbook/dsssl-stylesheets-1.64/html/docbook.dsl" CDATA dsssl>
]]>
]>
			

위의 위치는 redhat linux 7.x 기반의 경우이다. redhat 리눅스가 아니라면 docbook.dsl 의 위치가 달라지게 될것이다.

 


4.1.1. 여러개의 파일로 이루어진 html 문서를 만들때

이제 모든 준비가 끝났고, 만들어진 docbook 파일을 변환 시키기만 하면 된다. docbook 파일은 보통 sgml(xml)의 확장자를 가지게 된다. 변환은 jada 라는 프로그램을 사용하면 된다.

jade -t sgml -i html -d /usr/share/sgml/docbook/kldp/kldp.dsl#html [파일이름]
				

jade 프로그램은 문서변환을 하면서 docbook 파일이 제대로 작성되었는지 문법 검사도 해준다. 그러므로 출력되는 에러 메시지를 확인한다음에 docbook 문서를 수정을 하도록 하자. 모든 에러를 다 잡았다면 html 파일이 생기게 된다. html 파일은 index.html 과 최상위 "절" 별로 여러개의 html 파일이 생기게 된다.

 


4.1.2. 하나의 파일로 이루어진 html 문서를 만들때

여러개의 html 파일이 생성되는걸 원치 않을경우가 있다. 예를들어 프린트 하고자 할때나 한눈에 변환된 문서의 내용을 보고 싶을때는 모든 html 문서가 하나의 문서로 정리되기를 원할것이다. 이럴경우에는 다음과 같은 방법으로 변환하면 된다.

jade -V nochunks -t sgml -i html -d /usr/share/sgml/docbook/kldp/kldp.dsl#html [파일이름] 
				

이렇게 하면 HTML로 변환된 내용이 화면에 표준출력 된다. 그러므로 파일등으로 재지향 시키도록 하자. 이 문서를 비롯해 이 사이트(www.joinc.co.kr)에서 docbook 을 통해서 만들어진 문서는 모두 바로위의 방법을 통해서 하나의 html 페이지로 변환 시켰다.

 


4.2. 문서 변환시 주의 사항

아무래도 프로그래머 이다 보니까 <screen> 를 이용해서 코드를 문서에 그대로 삽입해야 되는 경우가 자주 생긴다. 코드에는 보통 "#include <stdio.h>" 나 "if (a > i)", "strcpy(&a, b)" 와 같이 '<', '>', '&' 같은 문자들이 포함되기 마련이다. 그런데 이러한 문자들이 들어가면 jade 에서 문법검사를 할때, docbook 에서 사용되는 키워드로 잘못 인식하게 되어서 에러 메시지를 내보내게 된다(비록 screen 을 사용하더라도). 그러므로 쏘쓰 코드에서 위의 문자들을 사용하길 원한다면 '< => &lt;', '> => &gt;', '& => &amp;' 등으로 변환시켜주어야 한다.


5. 참고문헌

 

 

  1. docbook.org
  2. 한국 docbook사이트

 

주석

[1] 문서등에서 특정한 단어에 대한 자세한 내용등을 문서의 하단에 주석 형식으로 적어놓은 것
 

                    수정/삭제     이전글 다음글    
번호제 목종류작성일
817   유용한 find 명령어   08-04
816   [다운]수시로 보고해주는 똑똑한 IDS - pmids   08-03
815   dokbook 사용하기!   08-02
814   [다운]강력한 SMTP 프록시 서버 - MessageWall   08-01
813   vi 편집기에서 메뉴얼 보기   07-31
812   [다운]파일에 대한 해킹을 감시한다 - Bubblegum   07-30
811   rename 으로 여러개 파일 이름을 한번에 바꾸기   07-29
810   [다운]스캔 공격을 탐지하자 - iplog   07-28
809   콘솔 화면을 백스크롤   07-27
808   웹사이트 진단 서비스 쿨체크   07-26
 
 

 
처음 이전 다음       목록 홈