대부분, Linuxdoc-SGML DTD를 이용한 문서 작성은 매우 간단하고,
LaTeX와 닮은 점이 많다.
반면, 약간의 주의할 점도 있다.
이 부분에서는 SGML 문서 작성에 대한 소개를 할 것이다.
하나의 SGML 문서를 만들고자 할 때, 한 표본이 될 수 있는 문서가
바로 example.sgml
파일이다. 이것을 참조하라.
여기서 SGML에 대한 다양한 특징들을 이야기하겠지만,
하나의 예제로 읽기에는 부족한 면이 있다.
이 글과 함께 example.sgml
파일을 참조하는 것이
좋을 것이다.
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
) 파일의 형식 만으로도 충분하다.
먼저 <, > 기호 자체도 SGML 문서 안에서는 특수 문자(특별한 기능을 하는
기호)이다. 여기서 이것외의 다른 것들도 설명한다. 예를 들어,
문서에서 <foo>
내용이 출력되기 하려면,
아래와 같이 쓴다.
<tt><foo></tt>
<tt>와 </tt>는 타자 친 모양의 글자 모양을 나타내고,
<는 < 기호를 표시한다.
일반적으로 & 기호로 시작하는 내용은 특별한 매크로로 간주한다.
예를 들어, %
는 % 기호로,
|
는 | 기호로. 등등...
이렇게 사용되는 각종 기호들은 아래에 나열되어 있다.
대게의 기호들은 & 기호로 시작하는 매크로를 사용할 필요는 없으나 다음 기호들은 & 기호를 사용하는 매크로를 사용해야 한다.
&
: ampersand (&), <
: 왼쪽 꺽쇠 (<),>
: 오른쪽 꺽쇠 (>),&etago;
: (</
)$
($),#
(#),%
퍼센트 (%),˜
(~),``
, ''
: 작은 따움표,
&dquot
는 ".
이런 특수 문자들에 대한 보다 자세한 설명을 위해서는 관련
문서를 참조하라. 일반적으로 LaTeX에서는 이런 대부분의 특수 문자들에
대해서 설명하고 있다.
$LINUXDOCLIB/rep/latex/general
경로 안에 있는 파일들을
참조 하는 것이 가장 빠른 것이다. $LINUXDOCLIB
값은
SGML 변환 스크립트 시작부분에서 정의하고 있다.
앞의 특수 문자 이야기에서 한 예를 보이거나 할 때, 줄의 처음에 공백 문자가
오거나 들여쓰기한 것을 보았을 것이다. verb
태그는
이럴 때 사용한다. 다음 예제를 보자.
<verb>
Some literal text to include as example output.
</verb>
The verb
환경 안에서는 모든 문자를 사용할 수 있는 것은 아니다. 특별하게,
다음 기호들을 사용해야 하는 경우도 있다.
&ero;
& 문자 표시 &etago;
</
문자 표시verb
환경안에서는 LaTeX의 verbatim
환경에서
처럼 \end{verbatim}
을 사용할 수 없다. (다음 버전에서는 이
기능을 지원하도록 하겠다.) 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에 의해서 들여쓰기를 할 것입니다.
SGML 문서의 구제척인 이야기를 하기 전에, 먼저, Linuxdoc-SGML DTD의
전체적인 문서 구조를 설명하려고 한다.
이것을 보다 쉽게 이해 하기 위해서는 example.sgml
파일을
참조하기 바란다.
문서 앞부분에서는 글의 표제 정보와 문서 모양을 지정한다. 리눅스 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
태그 사용을 권장한다.
문서 앞부분의 정의가 끝나면, 이제부터 문서의 내용을 작성한다. 여기서 사용될 수 있는 명령들은 다음과 같다.
sect
: For top-level sections (i.e. 1, 2, and so on.) sect1
: For second-level subsections (i.e. 1.1, 1.2, and so on.)sect2
: For third-level subsubsections.sect3
: For fourth-level subsubsubsections.sect4
: For fifth-level subsubsubsubsections.section
, subsection
등의 개념과
비슷하다고 생각하면 된다.
sect
(또는 sect1
, sect2
, 등) 태그
다음에는 그 섹션(장)의 이름이 온다. 예를 들어, 제 1 장은:
<sect>소개
제 1 장 1 절은:
<sect2>장과 단락
색션의 지정이 끝나면 다음부터는 그 내용을 작성한다. 이때,
그 내용의 시작은 <p>
태그로 시작한다. 다음 예:
<sect>소개
<p>
이 문서는 Linuxdoc-SGML 문서 처리에 대한 사용자 안내서이다......
이렇게 각 단락을 지정하고, 하나의 섹션안에서는 단락 분리는
다음과 같이 빈줄로 표시하면 된다.
여기는 첫째 단락의 끝부분이다.
여기서 부터는 다음 단락의 첫 부분이다.
각 단락의 구분을 위해 항상 <p>
태그를 사용할
이유는 없다. 단지 섹션 태그나 나타난 다음 '여기서부터 단락이다'는
것을 지시하기 위해 처음에만 사용하면 된다.
문서의 끝부분에서는 반드시 다음 태그를 사용해야 한다:
</article>
article
문서 가 끝남을 알리는 것이다.
여기서는 하이퍼텍스트 기능을 설명한다. 문서간의 직접 이동을 "교차 참조"라는 용어로 사용하고 있다. 이 교차 참조는 SGML에서 쉽게 구현할 수 있다. 예를 들어, 한 섹션의 교차 참조를 원하면, 다음과 같이 그 섹션에 label을 붙혀준다.
<sect1>소개<label id="sec-intro">
이렇게 정해지만 다른 문서에서 다음과 같이 사용하면 윗 "소개" 장의
교차 참조가 가능해 진다.
소개를 위해서는 <ref id="sec-intro" name="소개"> 장을 참조 하세요.
ref
태그는 id 다음에 참조할 섹션의 ID를, name 다음에는
문서에서 보여질 내용을 담아서 사용한다. name
과
ref
로 지정된 값은 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 정보를 가지고 있게 된다.
근본적으로, 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 문서에서는 굵은 글자, 기울림 글자, 타자기체
같은 글자 속성 외에는 지원하고 있지 않기 때문이다.
물론, 이 세가지 글꼴 만으로도 충분히 문서를 작성할 수 있으리라고 본다.
사용할 수 있는 목록 종류는 다음과 같다:
itemize
: 단순 목록enum
: 숫자 있는 목록descrip
: 목록 설명이 있는 목록itemize
나 enum
이면,
각 목록에 사용되는 항목들은 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>
윗 예제는 다음과 같이 보여진다.
Annoying little bugs that fly into your cooling fan.
Annoying little bugs that run on your CPU.
ftp://ftp.cs.cornell.edu/pub/mdw/SGML
.
ftp://ftp.gmd.de/GMD/sgml
.
sgmls
, nsgmls
, 기타 다른 연장들은
다음에서 구할 수 있다.
ftp://ftp.jclark.com
,
James Clark's WWW Page
.
majordomo@via.ecp.fr
로
편지를 보낼 편지 내용 중에 subscribe linuxdoc-sgml
내용을 넣어서 보내면 된다. 리스트 주소는
linuxdoc-sgml@via.ecp.fr
이다.
LyX
에 대한 상세 정보는
LyX WWW Page
에서 구할 수 있다. LyX
는 LaTeX에 기반을 둔 고수준
글틀(word processor)이다.
Quasi-WYSIWYG interface, 많은 LaTeX styles,
각종 자동 서식들이 있다. LaTeX를 배우는데 쉽고, 각종 서식 문서들을
쉽게 만들 수 있다.