2.3. 글 쓰기의 시작

모든 SGML 문서는 문서 형식 선언(Document Type Declaration)으로 시작되어야 합니다. 이것은 문서에서 어떤 DTD를 사용하며, 그 문서의 최상위 기초요소(root element)가 무엇인지를 알려줍니다. DocBook 문서의 전형적인 문서 형식 선언은 다음과 같습니다.

       <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
이 선언에서는 문서의 최상위 기초요소가 <book>이라는 점을 알려주고 있습니다. 또한 문서에서 사용하는 DTD를 큰 따옴표 사이의 내용을 통해 알려주고 있습니다. PUBLIC은 큰 따옴표 사이의 내용이 공식 식별이름[1]이란 것을 알려주기 위한 지시어입니다.

이렇게 문서 형식 선언을 하고 나면, 그에 맞는 최상위 기초요소의 여는 태그를 써넣는 것으로부터 글 쓰기가 시작됩니다.

2.3.1. 최상위 기초요소

기초요소들은 계층 구조로 조직화 되어 있습니다. 문서의 최상위 기초요소란 것은 그 문서에서 사용된 기초요소들 중 가장 상위 계층의 기초요소를 가리키는 말입니다.

DocBook에서 계층구조의 최상위는 set입니다. set은 다시 많은 수의 book을 포함하며, book은 다시 많은 수의 chapter를 포함합니다. 그리고 chapter는 많은 section을 포함하는데, section은 자기자신을 다시 포함할 수가 있으므로 계속 section으로 세분화할 수가 있습니다. section 아래에는 para가 있으며 이것은 하나의 문단을 나타내는 것입니다.

만약 최상위 기초요소를 chapter로 지정한다면, 그 보다 상위에 있는 bookset을 사용하지 않고 그 하위 요소만으로 글의 구조를 만들겠다는 뜻이 됩니다. 즉, 책 논문 안내문 등, 문서 특성에 맞는 어떤 최상위 기초요소를 사용하느냐에 따라 그에 걸맞는 하위 구조를 가진 문서를 작성할 수 있게 됩니다.

최상위 기초요소에는 보통 chapter, article, book 정도만을 사용하지만 그 밖에 set, section, para 등 다른 기초요소들도 필요에 따라 사용할 수 있습니다. chapter는 간단한 안내문 정도의 글을 작성하는 데 적당하며, article은 짧은 논문이나 보고서 수준의 글을 쓰는데 알맞습니다. 사실 article은 계층구조의 위치상에서 chapter와 같은 급에 속하는 것이지만, chapter를 좀더 독립된 수준의 문서로 만들기 위해 따로 정의된 것입니다. book은 독립된 책으로 펴낼 수 있을 정도의 구조를 갖추어야 하는 글을 위한 것으로서 preface, appendix 등과 함께 많은 수의 chapter를 포함합니다. 또한 set는 많은 수의 book을 포함하게 되어 있으므로, 여러 책들의 모음집을 펴내는데 알맞습니다.

2.3.2. chapter의 구조

아래의 예는 간단한 chapter의 구조를 보여주고 있습니다.

chapter에는 제목(title)이 있어야 하며, 문단의 시작과 끝을 나타내는 <para></para> 사이에 글의 내용을 써넣어야 합니다.

예 2-1. Chapter의 간단한 예


       <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
 
       <chapter lang="ko">
         <title>이 곳에 제목을 씁니다</title>
         <para> 
           첫번째 문단입니다.
           이 곳부터 글의 본문을 씁니다. 
           띄어쓰기를       두 칸       이상 하거나
           줄바꿈을 하더라도 

           모두 한 칸 띄어쓰는 효과만을 냅니다. 
         </para>
         <para>
           두번째 문단입니다.
           첫번째 문단과는 줄바꿈을 통해
           구별되어 보이게 됩니다.
           문단 안에서는 아무리 줄을 바꾸어도
           한칸 띄어쓰는 효과만을 냅니다.
         </para>
         <para>
           세번째 문단입니다.
           이런 식으로 계속 문단을 추가하여 
           글을 써내려 가면 됩니다.
         </para>
       </chapter>

<chapter lang="ko"> 부분을 눈여겨 보기 바랍니다. 이 부분에서 chapterlang 속성이 ko로 지정되어 있는데, 이것은 이 chapter가 한국어로 씌어져 있다는 점을 나타냅니다. 이 속성이 제대로 지정되어 있어야만 한국어 환경에 알맞도록 문서가 변환됩니다.[2] lang 속성이 지정된 기초요소의 하위 구조는 모두 이 속성을 갖게 됩니다.

chapter를 세분화하기 위해서는 section을 사용하면 됩니다. section은 또다른 section으로 계속 세분화할 수 있습니다. section에도 title이 있어야 하며 역시 para를 사용해 문단을 나눕니다.

예 2-2. Chapter의 일반적인 예


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

       <chapter lang="ko">
         <title>라면의 종류</title>
         <para> 
            라면의 종류에는 어떤 것이 있을까요?
         </para>

         <section>
           <title>떡 라면</title>
           <para>
             떡 라면은 가래떡을 어슷하게 썰어 넣은 라면입니다.
           </para>
           <para>
             가래떡이 쫄깃하게 씹히는 맛이 일품이죠.
           </para>
         </section>

         <section>
           <title>김치 라면</title>
           <para>
             김치 라면은 김치를 썰어 넣은 라면입니다.
           </para>
           <para>
             얼큰한 김치 맛이 라면과 잘 어울리죠.
           </para>
         </section>

         <section>
           <title>이상한 라면</title>
           <para>
             이상한 라면들도 있습니다.
           </para>

           <section>
             <title>우유 라면</title>
             <para>
               우유 라면은 우유를 부어 끓이는 라면입니다.
             </para>
             <para>
               우유는 라면 맛을 고소하고 부드럽게 해줍니다.
             </para>
           </section>
   
           <section>
             <title>카레 라면</title>
             <para>
               카레 라면은 카레를 얹어 끓이는 라면입니다.
             </para>
             <para>
               카레의 향기는 라면의 감칠맛을 더욱 풍부하게 해줍니다.
             </para>
           </section> 

         </section>

       </chapter>
'이상한 라면' section이 '우유 라면' section과 '카레 라면' section으로 다시 세분화되어 가는 구조를 눈여겨 보시기 바랍니다. section은 이런 방식으로 계속 세분화가 가능합니다.

작은 정보: section의 구조를 명확히 하기 위해서 <sect1>, <sect2>, <sect3>.. 식으로 계층구조를 만들 수도 있습니다. 즉 <section> 대신 <sect1>을 사용하며 <sect1>이 세분될 때는 <sect2>, <sect2>가 세분될 때는 <sect3>를 사용하는 방식으로 계속 세분화를 할 수 있습니다.

이 방식은 계층 구조를 한눈에 알아볼 수 있는 장점이 있지만 구조가 복잡한 글에서는 그 구조를 변경할 때마다 모든 기초요소를 일일이 수정해 주어야 하므로 아주 곤란해 질 수 있는 단점이 있습니다. 그러므로 자신에게 편리한 방식을 선택해서 사용하면 되겠습니다.

2.3.3. article의 구조

article은 기본적으로 chapter와 같은 하위구조를 가집니다. 그러나 articlearticleinfo라는 기초요소를 포함하고 있어야 합니다. 이 밖에도 article은 몇가지 확장된 하위구조를 가질 수 있습니다.

주의

DocBook V3.1 이하에서 사용되던 artheader가 V4.0부터는 articleinfo로 이름을 바꾸었습니다. 그러므로 V4.0부터는 더 이상 artheader를 사용해선 안됩니다.

articleinfo는 글 과 글쓴이에 대한 다양한 정보를 체계적으로 정리하기 위한 기초요소입니다. 다음은 간단한 article의 예입니다.

예 2-3. article의 간단한 예


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

       <article lang="ko">

         <articleinfo>
           <title>신용장 거래시 주의 사항</title>

           <author>
             <surname>홍</surname>
             <firstname>길동</firstname>

             <affiliation>
               <orgname>사고팔고 물산</orgname>
               <orgdiv>미주 뉴욕 지부</orgdiv>

               <address>
                 <email>gildong@sagopalgomulsan.com</email>
               </address>

             </affiliation>

           </author>

         </articleinfo>

         <abstract> 
           <para>
             이 글은 신용장 거래시 발생할 수 있는 문제점과 그 대책에
             대해 설명합니다.
           </para>
         </abstract> 

         <section>
           <title>클레임 관련</title>
           <para>
             신용장 거래는 서류상의 거래이므로 신용장을 통해 물품의 
             하자에 대한 클레임을 제기할 수 있는 방법이 없습니다.
           </para>
           <para>
             그렇기 때문에 계약서에 클레임 해결조항을 규정해야 함은 
             물론 물품의 하자가 발견되면 즉시 검정기관을 통해 
             survey report를 만들어 증빙을 확보하고 계약서에 따른 
             클레임 제기절차를 밟아야 합니다. 
           </para>
         </section>

         <section>
           <title>중개무역시 유의점</title>
           <para>
             중개무역 거래시 신용장을 통해 결제하는 경우에는 상업송장 
             및 환 어음, 포장명세서 등은 중개인 명의로 대체가 가능합니다.
           </para>
           <para>
             그러나 선하증권 및 원산지 증명서의 경우는 중개인이 직접 
             만들 수 없으므로 신용장 상에 'Third party documents are 
             acceptable'이라는 문구가 있어야 Nego시 하자가 발생하지 
             않습니다.
           </para>
         </section>

       </article>
articleinfo가 포함하고 있는 기초 요소들을 주의깊게 살펴보기 바랍니다. articleinfotitleauthor를 포함하고 있으며 authorsurname firstname affiliation을 포함하고 있습니다.

author는 글쓴이에 관한 정보를 담기 위한 기초요소입니다. 글쓴이의 성은 surname이 나타내며 이름은 fitstname이 나타냅니다.

참고: 한국어 지역화가 포함되지 않은 Modular DocBook Stylesheet V1.58 이하 버전을 사용하게 되면 성과 이름이 서양식으로 뒤바뀌어 표현되니 주의해야 합니다.

작은 정보: 만일 성과 이름을 구별하여 띄어쓰기를 해야 할 필요가 있는 경우에는 Modular DocBook Stylesheet의 한국어 지역화 파일(common/db11ko.dsl)을 약간 수정하여야 합니다. 파일의 주석문을 읽어보기 바랍니다.

affiliation에는 글쓴이의 주소(address), 소속단체(orgname), 소속부서(orgdiv)에 관한 정보가 들어갑니다. address에는 보통 email 기초요소를 사용해 전자우편 주소를 적어 넣습니다.

초록(abstract)에는 글에 대한 설명이나 짧은 요약을 써 넣습니다. section 이하의 구조는 앞서 살펴본 내용과 같습니다.

2.3.4. book의 구조

book 기초요소는 한 권의 책을 펴내기에 알맞은 아주 다양한 하위구조를 가지고 있습니다. 아래의 예는 극히 기본적인 구조만을 사용한 경우입니다.

예 2-4. book의 간단한 예


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

       <book lang="ko">

         <bookinfo>
           <title>대우주에의 도전</title>
           <pubdate>1983년 4월 20일</pubdate>

           <author>
             <surname>조</surname>
             <firstname>경철</firstname>

             <affiliation>
               <orgname>경희대학교</orgname>
               <jobtitle>부총장</jobtitle>
             </affiliation>

           </author>

           <abstract> 
             <para>
               우리들은 우주시대에 살고 있다고 하지만,
               우리나라는 그 혜택만 입는 데에 만족하고
               있는 현상을 우리들은 어떻게 생각하여야 할까?
             </para>
             <!-- 원문에서 중간 부분을 생략하였습니다 -->
             <para>
               우리들에게 &lt;꿈과 자신감&#62;을 필자는
               심어주려고 전력투구한 작품이다.
             </para>
           </abstract>

         </bookinfo> 

         <preface>
           <title>서문<title>
           <para>
             &lt;나는 자랑스러운 태극기 앞에 국력부강에
             혼신의 노력을 다했다&#62;는 말은 우리들
             누구나 다 할 수가 있다.
           </para>
           <!-- 원문에서 중간 부분을 생략하였습니다 -->
           <para>
             나는 믿는다 &lt;뿌린 씨는 거두리라.&#62;
           </para>
         </preface>

         <chapter>
           <title>대우주에의 도전</title>
           <para>
             우리 인간이 지구를 정복할 수 있었던 가장 큰
             원동력은, 여러가지 이유를 들 수 있겠지만, 역시
             &lt;사고능력&#62;을 월등하게 
             가진 것과 손발이 기술사회를 이룩하기 위해
             적당하게 우리 몸에 달려 있었기 때문이라
             할 수 있을 것이다.
           </para>
           <!-- 원문에서 중간 부분을 생략하였습니다 -->
         </chapter>

         <chapter>
           <title>세 사람의 선각자</title>

           <section>
             <title>우주여행의 아버지, 티올코프스키<title>
             <para>
               모스크바의 남서부쪽에 200Km쯤 떨어진 곳에
               자리잡은 가루가라는 마을에 수학교사
               콘스탄틴 티올코프스키가 살고 있었다.
             </para>
             <!-- 원문에서 중간 부분을 생략하였습니다 -->
           </section>

           <section>
             <title>근대 로케트의 아버지, 가다드<title>
             <para>
               우주여행의 이론은 티올코프스키에 의해 확립되었지만,
               다음에 필요한 것은 그런 우주여행에 필요한
               로케트를 실제로 만들어 보는 일이다.
             </para>
             <!-- 원문에서 중간 부분을 생략하였습니다 -->
           </section>

         </chapter>

           <!-- 원문의 나머지 부분은 생략하였습니다 -->

         <appendix>
           <title>부록<title>

           <section>
             <title>E.T.를 찾자<title>
             <para>
               달이 없는 맑은 밤하늘...... 도시 등불이 없는
               들판에나 산 혹은 바다 위에서 쳐다보는 하늘은
               정말로 아름답다.
             </para>
             <!-- 원문에서 중간 부분을 생략하였습니다 -->
           </section>

           <section>
             <title>과학이 계산한 E.T.의 수<title>

             <informalequation>
               <alt>
                 N=R<subscript>*</subscript>f<subscript>p</subscript
                 >n<subscript>e</subscript>f<subscript>e</subscript
                 >f<subscript>i</subscript>f<subscript>c</subscript>
               </alt>

               <mediaobject>
                 <imageobject>
                   <imagedata fileref="ETnumber.eps" format="eps">
                 </imageobject>
                 <imageobject>
                   <imagedata fileref="ETnumber.gif" format="gif">
                 </imageobject>
                 <imageobject>
                   <imagedata fileref="ETnumber.bmp" format="bmp">
                 </imageobject>
                 <textobject>
                   <phrase>N=R<subscript>*</subscript>f<subscript
                   >p</subscript>n<subscript>e</subscript>f<subscript
                   >e</subscript>f<subscript>i</subscript>f<subscript
                   >c</subscript>L</phrase>
                 </textobject>
               </mediaobject>   

             </informalequation>

             <para>
               위의 식은 1970년 여름 NASA의 에임스 연구센터에
               모인 우주생물, 화학, 천문학자들이 모여 연구발표회를
               한 자리에서 유명한 칼 세이간 교수가 발표한
               &lt;우주 문명사회의 수&#62;에 관한
               공식이다.
             </para>
             <!-- 원문에서 중간 부분을 생략하였습니다 -->
           </section>

           <!-- 원문의 나머지 부분은 생략하였습니다 -->

         </appendix>

       </book>

bookbookinfo를 포함하고 있어야 합니다. bookinfo의 역할은 articleinfo와 기본적으로 같습니다. bookinfo 안에 새롭게 등장한 pubdate 기초요소와 jobtitle 기초요소를 눈여겨 보기 바랍니다. pubdate은 글을 펴낸날, jobtitle은 글쓴이의 직위를 알려주기 위한 기초요소입니다.

위의 예에서는 book이 초록(abstract)과 서문(preface), 두 개의 장(chapter) 그리고 부록(appendix)으로 구성되어 있습니다. prefaceappendix의 하위구조는 chapter의 경우와 같습니다.

그런데 appendix의 두번째 section에는 상당히 복잡한 구조의 informalequation이라는 기초요소가 보입니다. 이 것은 수식의 표현을 위한 기초요소인데 이에 대해서는 4.1.5절에서 자세히 설명하겠습니다.

한편, 위의 예에서는 DocBook 문서 내에서 주석(comment)을 사용하는 방법도 보여주고 있습니다. 주석은 <!-- --> 사이에 적어 넣어야 합니다. 물론 주석 처리된 내용은 변환된 문서에 전혀 나타나지 않게 됩니다.

2.3.5. set의 구조

다음은 set의 간단한 예입니다. 여러개의 book을 포함합니다.

예 2-5. set의 간단한 예


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

       <set>

         <setinfo>
           <title>The Perl Series</title>
           <corpauthor>O'Reilly &amp; Associates, Inc.</corpauthor>
         </setinfo>

         <book>

           <bookinfo>
             <title>Learning Perl</title>
           </bookinfo> 
           ... 
         </book>

         <book>

           <bookinfo>
             <title>Programming Perl</title>
           </bookinfo> 
           ... 
         </book>

         <book>

           <bookinfo>
             <title>Advanced Perl Programming</title>
           </bookinfo> 
           ... 
         </book>

       </set>
book의 하위구조는 생략하였습니다.

주석

[1]

이에 대해서는 B.1절에서 자세히 설명합니다.

[2]

한국어 지원이 포함된 Modular DocBook Stylesheet V1.59 이상을 사용해야만 합니다.