이전 다음 차례

3. Linuxdoc-SGML로 문서 만들기

대부분, Linuxdoc-SGML DTD를 이용한 문서 작성은 매우 간단하고, LaTeX와 닮은 점이 많다. 반면, 약간의 주의할 점도 있다. 이 부분에서는 SGML 문서 작성에 대한 소개를 할 것이다. 하나의 SGML 문서를 만들고자 할 때, 한 표본이 될 수 있는 문서가 바로 example.sgml 파일이다. 이것을 참조하라. 여기서 SGML에 대한 다양한 특징들을 이야기하겠지만, 하나의 예제로 읽기에는 부족한 면이 있다. 이 글과 함께 example.sgml 파일을 참조하는 것이 좋을 것이다.

3.1 기본적인 개념

example.sgml 파일을 보면, "태그"라고 하는 꺽쇠(<, >)로 둘러 쌓인 영문 글들을 볼 수 있을 것이다. 태그는 간단하게 장, 절 같은 문서의 요소들을 지정하는데 사용된다. 태그의 사용은 LaTeX의 \item, \section{...} 같은 명령들과 비슷하게 사용된다.

한 예로 this boldfaced text 라는 글자를 만들기 위해서,

한 예로  <bf>this boldfaced text</bf>, .....
이런 식으로 쓴다. <bf> 기호가 굵은 글자의 시작이며, </bf> 기호가 끝을 알린다. 또한 간단하게 다음같이 쓸 수도 있다.
한 예로 <bf/this boldfaced text/, ...
이것은 양쪽 / 기호 안에 있는 모든 내용은 굵은 글자로 표시한다는 것을 의미한다. (물론 양쪽 / 기호 안에 담길 내용의 길이 제한 같은 것은 없다.)

또, SGML 문서를 보면, & 기호로 시작하는 이상한 글자들이 보이는데, 이것은 특수 문자 (알파벳이 아닌, 기타 기호들)로 변환된다. 아래에서 간단하게 설명하겠다.

특별한 요소를 위한 마침 태크가 선택적으로 사용될 경우가 있다. 예를 들어, 섹션(장)의 시작을 알리는 <sect> 태그는 이것의 마침 태그인 </sect> 표시를 선택적으로 한다. 이 마침 태그가 빠져 있을 경우에는 다음 <sect> 태그가 나타나기 전까지를 그 섹션으로 가정한다. 그렇다고, 크게 신경 쓸 내용은 아니다. 그저 일반적인 문서를 만들고자 한다면, (example.sgml) 파일의 형식 만으로도 충분하다.

3.2 특수 문자

먼저 <, > 기호 자체도 SGML 문서 안에서는 특수 문자(특별한 기능을 하는 기호)이다. 여기서 이것외의 다른 것들도 설명한다. 예를 들어, 문서에서 <foo> 내용이 출력되기 하려면, 아래와 같이 쓴다.

<tt>&lt;foo></tt>
<tt>와 </tt>는 타자 친 모양의 글자 모양을 나타내고, &lt;는 < 기호를 표시한다.

일반적으로 & 기호로 시작하는 내용은 특별한 매크로로 간주한다. 예를 들어, &percnt;는 % 기호로, &verbar;는 | 기호로. 등등... 이렇게 사용되는 각종 기호들은 아래에 나열되어 있다.

대게의 기호들은 & 기호로 시작하는 매크로를 사용할 필요는 없으나 다음 기호들은 & 기호를 사용하는 매크로를 사용해야 한다.

이런 특수 문자들에 대한 보다 자세한 설명을 위해서는 관련 문서를 참조하라. 일반적으로 LaTeX에서는 이런 대부분의 특수 문자들에 대해서 설명하고 있다. $LINUXDOCLIB/rep/latex/general 경로 안에 있는 파일들을 참조 하는 것이 가장 빠른 것이다. $LINUXDOCLIB 값은 SGML 변환 스크립트 시작부분에서 정의하고 있다.

3.3 verb와 code 환경들

앞의 특수 문자 이야기에서 한 예를 보이거나 할 때, 줄의 처음에 공백 문자가 오거나 들여쓰기한 것을 보았을 것이다. verb 태그는 이럴 때 사용한다. 다음 예제를 보자.

<verb>
  Some literal text to include as example output.
</verb>
The verb 환경 안에서는 모든 문자를 사용할 수 있는 것은 아니다. 특별하게, 다음 기호들을 사용해야 하는 경우도 있다. code 환경은 verb 환경과 비슷하나, 그 환경안에 있는 내용들을 다음과 같이 가로 줄로 둘러 싼다.
이것은 code 환경의 예제입니다.

verb 태그와 함께 tscreen 환경을 다음과 같이 사용할 수도 있다.

<tscreen><verb>
여기는 예제입니다.
</verb></tscreen>
tscreen은 간단하게 들려쓰기를 하고, 글자모양을 tt 로 바꾸어주는 환경이다. 주로 예제같은 것을 설명할 때 사용된다. 물론 verb 태그 없이 단독으로 사용도 가능하지만, 예제 안에서 특수 문자(특수 기호)들을 편하게 사용하려면, verb 태그도 함께 사용하기를 권장한다. tscreen 단독으로 사용될 때는 특수 문자들을 사용할 수 없다. 참고로 example.sgml 파일을 보라.

quote 환경은 tscreen과 비슷하나, 글자 모양을 tt로 바꾸지는 않는다. 그래서 quote 환경은 다음과 같이 non-computer-interaction quotes(?)에서 사용할 수 있다.

<quote>
이 문장은 quote에 의해서 들여쓰기를 할 것입니다.
</quote>
윗 예제는 다음과 같이 보여진다.
이 문장은 quote에 의해서 들여쓰기를 할 것입니다.

3.4 문서 전체의 구조

SGML 문서의 구제척인 이야기를 하기 전에, 먼저, Linuxdoc-SGML DTD의 전체적인 문서 구조를 설명하려고 한다. 이것을 보다 쉽게 이해 하기 위해서는 example.sgml 파일을 참조하기 바란다.

문서 앞부분(preamble)

문서 앞부분에서는 글의 표제 정보와 문서 모양을 지정한다. 리눅스 HOWTO 문서는 일반적으로 아래와 같이 지정한다.

<!doctype linuxdoc system>

<article>

<title>리눅스 예제 HOWTO
<author>Norbert Ebersol, <tt/norb@baz.com/
<date>v1.0, 9 March 1994
<abstract>
여기서는 이 문서의 전체적인 개요를 설명한다.
</abstract>

<toc>

각 요소들은 이 순서에 따라 다소 추가, 삭제할 수 있다. 첫번째 줄은 Linuxdoc-SGML DTD를 사용하겠다는 지시이며, <article>은 ``article'' 문서 형태를 사용하겠다는 지시이다. (QWERTZ DTD에서는 ``report''와 ``book'' 문서 형태도 사용할 수 있으나, Linuxdoc-SGML DTD에서는 사용되지 않는다.)

title, author, date 태그는 분명히 지정해야 한다. date 태그에서 사용될 값은 문서 버전 숫자와 마지막 수정된 날자를 사용한다.

abstract 태그 안에 담길 내용은 글 차례가 나오기 전에 나오는 문서의 대략적인 설명이다. 만약 글차례를 지정하는 toc 태그를 사용하지 않는다면, 굳이 abstract 태그를 사용할 필요는 없다. 하지만 글쓴이는 모든 리눅스 HOWTO문서가 윗 예제의 형식을 취하기 때문에, abstract, toc 태그 사용을 권장한다.

장과 단락

문서 앞부분의 정의가 끝나면, 이제부터 문서의 내용을 작성한다. 여기서 사용될 수 있는 명령들은 다음과 같다.

LaTeX의 section, subsection 등의 개념과 비슷하다고 생각하면 된다.

sect(또는 sect1, sect2, 등) 태그 다음에는 그 섹션(장)의 이름이 온다. 예를 들어, 제 1 장은:

<sect>소개
제 1 장 1 절은:
<sect2>장과 단락
색션의 지정이 끝나면 다음부터는 그 내용을 작성한다. 이때, 그 내용의 시작은 <p> 태그로 시작한다. 다음 예:
<sect>소개
<p>
이 문서는 Linuxdoc-SGML 문서 처리에 대한 사용자 안내서이다......
이렇게 각 단락을 지정하고, 하나의 섹션안에서는 단락 분리는 다음과 같이 빈줄로 표시하면 된다.
여기는 첫째 단락의 끝부분이다.

여기서 부터는 다음 단락의 첫 부분이다.
각 단락의 구분을 위해 항상 <p> 태그를 사용할 이유는 없다. 단지 섹션 태그나 나타난 다음 '여기서부터 단락이다'는 것을 지시하기 위해 처음에만 사용하면 된다.

문서 끝부분

문서의 끝부분에서는 반드시 다음 태그를 사용해야 한다:

</article>

article 문서 가 끝남을 알리는 것이다.

3.5 교차 참조

여기서는 하이퍼텍스트 기능을 설명한다. 문서간의 직접 이동을 "교차 참조"라는 용어로 사용하고 있다. 이 교차 참조는 SGML에서 쉽게 구현할 수 있다. 예를 들어, 한 섹션의 교차 참조를 원하면, 다음과 같이 그 섹션에 label을 붙혀준다.

<sect1>소개<label id="sec-intro">
이렇게 정해지만 다른 문서에서 다음과 같이 사용하면 윗 "소개" 장의 교차 참조가 가능해 진다.
소개를 위해서는 <ref id="sec-intro" name="소개"> 장을 참조 하세요.
ref 태그는 id 다음에 참조할 섹션의 ID를, name 다음에는 문서에서 보여질 내용을 담아서 사용한다. nameref로 지정된 값은 groff나 HTML 변환에서 사용된다. 현재 groff에서의 교차 참조는 일어나지 않는다.

예를 들어 이 장의 교참 참조는 이렇게 나타난다.

또한 이 교차 참조는 url 태그를 사용해서 URL 참조가 가능하다. 물론 FTP, WWW 등 html 문법에서 사용할 수 있는 것을 그대로 사용할 수 있다. 다음 예제를 보자.

리눅스 HOWTO 문서들은 다음에서 구할 수 있다.
<url url="http://sunsite.unc.edu/mdw/HOWTO/" 
     name="리눅스 HOWTO 색인">.
url 요소는 URL을 지정한다. 이 것은 HTML 변환시 각 링크로 나타나게 된다. name은 선택적으로 사용될 수 있는데, 지정하면, 그 지정된 값이 문서에 나타나고, 지정하지 않으면, URL 그대로 나타난다.

예를 들어, Linuxdoc-SGML 팻키지는 다음에서 구할 수 있다.
ftp://sunsite.unc.edu/pub/Linux/utils/text/linuxdoc-sgml-1.5.tar.gz.

또, 요용한 태그는 htmlurl이다. 이것은 HTML 문서를 제외하고는 URL 부분을 보여주지 않게 한다. 이것은 주로 email 주소 같은데 사용된다. 한 예로 다음같이 작성했을때,

<htmlurl url="mailto:esr@snark.thyrsus.com"
           name="esr@snark.thyrsus.com">
html 문서를 제외한 문서들에서는 ``esr@snark.thyrsus.com <mailto:esr@snark.thyrsus.com>'' 이런 식으로 보여지는 것이 아니라, 단지 ``esr@snark.thyrsus.com'' 이런 식으로 보여지며, HTML에서는 여전히 URL 정보를 가지고 있게 된다.

3.6 글꼴

근본적으로, LaTeX에서 지원되는 글꼴은 Linuxdoc-SGML에서 지원된다. 하지만 이런 글꼴 지정이 있다 하더라도 groff에 의해서 변환되는 보통 텍스트 문서들에서는 이런 글꼴 정보들이 무시된다. 그렇다고, 이런 글꼴 정보들을 생략하는 방법은 좋은 방법이 아니다. 왜냐하며, SGML문서는 LaTeX와 같은 글꼴 정보가 사용되는 문서로도 변환되기 때문이다.

특별하게 tt 태그는 e-mail 주소나, 기계 이름, 파일 이름 등 에서 사용되는 ``typewriter'' 글자 속성을 지정하는데, 사용된다. 예제:

Here is some <tt>typewriter text</tt> to be included in the document.
같은 표현으로:
Here is some <tt/typewriter text/ to be included in the document.
윗 표현과 같이 작성할 때는 반드시 / 기호로 문자 속성 끝을 지정해 주어야 한다는 것을 기억하라.

또한 굵은 글자를 위한 bf, 기울림 글자를 위한 em 태그를 사용할 수 있다. 이 외에도 여러가지가 있으나, 글쓴이는 이것들의 사용을 권장하지 않는다. 왜냐하면, HTML 문서에서는 굵은 글자, 기울림 글자, 타자기체 같은 글자 속성 외에는 지원하고 있지 않기 때문이다. 물론, 이 세가지 글꼴 만으로도 충분히 문서를 작성할 수 있으리라고 본다.

3.7 목록

사용할 수 있는 목록 종류는 다음과 같다:

목록을 시작을 알리는 태그가 itemizeenum이면, 각 목록에 사용되는 항목들은 item 태그로 지정된다. descrip 태그는 tag 태그를 사용한다. 예를 들어보면,
<itemize>
<item>이것은 첫번째 항목입니다.
<item>이것은 두번째 항목입니다.
</itemize>
윗 예제는 다음과 같이 보여진다. enum 태그 사용은,
<enum>
<item>Here is the first item.
<item>Here is the second item.
</enum>
윗 소스가 변환되어 보여지면 각 항목에 번호가 나타난다.

descrip 목록은 약간 다르다. 아래 예제와 같이 각 항목과 함께 그 항목의 설명 부분이 추가 된다.

<descrip>
<tag/Gnats./ Annoying little bugs that fly into your cooling fan.
<tag/Gnus./ Annoying little bugs that run on your CPU.
</descrip>
윗 예제는 다음과 같이 보여진다.
Gnats.

Annoying little bugs that fly into your cooling fan.

Gnus.

Annoying little bugs that run on your CPU.

3.8 추가 정보


이전 다음 차례