3 <TITLE>日本語版 Linuxdoc-SGML ガイド: SGML で文書を書くには</TITLE>
6 <A HREF="jguide-2.html">前のページ</A>
7 <A HREF="jguide-4.html">次のページ</A>
8 <A HREF="jguide.html#toc3">目次</A>
10 <H2><A NAME="s3">3. SGML で文書を書くには</A></H2>
12 <P>ここでは <CODE>linuxdoc.dtd</CODE> を使った文書の書き方について説明します。</P>
14 <H2><A NAME="ss3.1">3.1 文書の始め方</A></H2>
16 <P>一番最初に覚えなければならないことを簡単に書きます。</P>
20 <P>SGML では (コメントは別にして) 必ず
23 <!doctype linuxdoc system>
28 この命令は簡単にいうと、``linuxdoc.dtd'' を使った文書である事を指定し
33 <P>入力に使用できるキャラクタとしては、かな、漢字、英数字、および次の記号
38 : ; . , ? ! ` ' ( ) - / * @ ^ _ + = { } |
42 <P><EM>【注意】 <CODE>jlinuxdoc-sgml</CODE> では、<CODE>EUC</CODE> 漢字コードを使うようになっていますので、<CODE>EUC</CODE> コードで文書を書くようにして下さい。
43 また、半角カナと呼ばれている文字は使えません。</EM></P>
44 <P><EM>【注意】行頭を . で始めますと、テキストに変換する際に、問題が発生
45 します。よって、行頭には . を記述しないようにして下さい。</EM></P>
49 <P>SGML では、以下の記号をコマンドとして認識してしまいますので、その記号
50 を文字として使いたい場合には下のように入力して下さい。</P>
53 <LI>左角かっこ (<CODE>[</CODE>) を使うには <CODE>&lsqb;</CODE> と入
55 <LI>右角かっこ (<CODE>]</CODE>) を使うには <CODE>&rsqb;</CODE> と入
57 <LI>アンパサンド (<CODE>&</CODE>) を使うには <CODE>&amp;</CODE> と入
59 <LI>左ブラケット (<CODE><</CODE>) を使うには <CODE>&lt;</CODE> と入力
61 <LI>右ブラケット (<CODE>></CODE>) を使うには <CODE>&gt;</CODE> と入力
63 <LI>左ブラケット+スラッシュ (<CODE></</CODE>) を使うには
64 <CODE>&etago;</CODE> と入力します</LI>
65 <LI>ドルマーク (<CODE>$</CODE>) を使うには <CODE>&dollar;</CODE>
67 <LI>シャープ (<CODE>#</CODE>) を使うには <CODE>&num;</CODE> と入力し
69 <LI>パーセント (<CODE>%</CODE>) を使うには <CODE>&percnt;</CODE>
71 <LI>バックスラッシュ (<CODE>\</CODE>) を使うには
72 <CODE>&bsol;</CODE> と入力します</LI>
73 <LI>二重引用符を使うには <CODE>``</CODE> と <CODE>''</CODE> と入力するか、
74 <CODE>"</CODE> を表示させるには <CODE>&dquot;</CODE> と入力します</LI>
79 <H2><A NAME="ss3.2">3.2 タグ</A></H2>
81 <P>SGML でのコマンドは<EM>タグ</EM>と呼ばれます。タグには開始タグと終了タ
82 グがあり、開始タグは <CODE><タグ名></CODE> であり、終了タグは
83 <CODE></タグ名></CODE> です。また、開始タグしか必要としないものもあり
84 ますし、<CODE><タグ名/内容/</CODE> という短縮形式もあります。</P>
85 <P>開始タグと終了タグではさまれている部分に、そのタグの内容が適用されます。
86 LaTeX の環境と同じようなものですね。</P>
89 <H2><A NAME="ss3.3">3.3 原稿の書き方</A></H2>
91 <P>ドキュメントつまり原稿は、いづれかのスタイルを指定しなければなりません。
92 スタイルには以下のものが指定できます。ほとんど、LaTeX で使われているも
96 <DT><B>article</B><DD><P>もっともポピュラーなスタイルです。HOWTO にはこれを使いま
98 <DT><B>report</B><DD><P>レポート形式です。</P>
99 <DT><B>book</B><DD><P>本の形式です。</P>
100 <DT><B>manpage</B><DD><P>man ページの形式です。</P>
103 <P>例えば article を使う場合には、
106 <!doctype linuxdoc system>
117 <P><EM>なお、man ページについては、後で詳しく説明します。</EM></P>
120 <H2><A NAME="ss3.4">3.4 タイトル</A></H2>
122 <P>文書のタイトル、著者、日付や概要は、スタイル (例えば<article>)
126 <DT><B><title></B><DD><P>文書のタイトルを記述します。(必須)</P>
127 <DT><B><auther></B><DD><P>著者を記述します。(必須)</P>
128 <DT><B><trans></B><DD><P>翻訳者を記述します。(オプション)</P>
129 <DT><B><date></B><DD><P>文書のバージョンや日付を記述します。(オプション)</P>
130 <DT><B><tdate></B><DD><P>翻訳された文書のバージョンや日付を記述します。(オプション)</P>
131 <DT><B><abstract>...</abstract></B><DD><P>概要を記述します。(オプ
138 <title>SGML を書こう!!
139 <author>さとけん@ForUs,<tt/ken@gamba.forus.or.jp/
140 <date>v0.1 alpha, 20 September 1994
147 <P><EM>【注意】 <date> は、<author> もしくは <trans> の
148 直後でないと、エラーとなります。</EM></P>
151 <H2><A NAME="ss3.5">3.5 文章構成</A></H2>
153 <P>文章の構成で、章や節を表すものとして、次のようなセクションタグが用意さ
154 れています。これらは、タイトルの後に記述することができます。</P>
157 <DT><B><sect></B><DD><P>トップレベルの章で、LaTeX の section に相当します。
159 <DT><B><sect1></B><DD><P>第 2 レベルの章で、LaTeX の subsection に相当します。
161 <DT><B><sect2></B><DD><P>第 3 レベルの章で、LaTeX の subsubsection に相当し
162 ます。(1.1.1, 1.1.2, ...)</P>
163 <DT><B><sect3></B><DD><P>第 4 レベルの章で、LaTeX の paragraph に相当します。</P>
164 <DT><B><sect4></B><DD><P>第 5 レベルの章で、LaTeX の subparagraph に相当しま
168 <P>また、それぞれのタグの直後に、対応した見出しを記述します。</P>
169 <P>例えば文書の最初に``概要''という章を記述するには、
176 とすればよいですし、あなたが今読んでいるこの章は
184 <P>セクションタグの後で、実際の本文を書くには <p> タグを本文の前に
191 この文書は、<tt/jlinuxdoc-sgml/ 文書整形システムの...
195 <P>これは、<CODE>sgmls</CODE> パーサーに章見出しと本文の区切りを教えているのです。
196 しかし、段落の区切りを指定する必要があるのは、セクションタグの後だけで、
197 その後の段落の区切りは空行で大丈夫です。(こういう段落の区切り方は、
198 LaTeX でよくやられていることでしょう。)</P>
209 <P>ただ、最初の段落以外で <p> タグを使ってはいけないわけではありま
210 せん。最初の段落で必ず指定しなければならないだけです。</P>
213 <H2><A NAME="ss3.6">3.6 文の整形と改行</A></H2>
215 <P><CODE>jlinuxdoc-sgml</CODE> では <CODE>roff</CODE>、<CODE>LaTeX</CODE>、<CODE>HTML</CODE> を使って、文
216 書を整形しますので、文字列や行を自動的に詰めたり、改行したりします。
217 よって、整形ルールはそれぞれのフォーマッタに依存します。</P>
218 <P>また、通常 SGML のソース文書での改行は無視されます。強制的に改行を行なう
219 場合は<newline> を行末に挿入してください。また、空行か <p>
220 を挿入するとその前の文に改行が入り行間が空きます。</P>
221 <P>また、空白文字の扱いはフォーマッタによって異なります。プレーンテキスト
222 の場合は空白文字をそのまま空白として出力しますが、DVI や PS, HTML では
226 <DT><B>変換前:</B><DD><P>
232 遊びに行きたし<newline>
241 <DT><B>変換後:</B><DD><P>
253 <P>タイトルページでは、改行は可能ですが空行を作ることはできません。従って
254 <abstract> タグの中で空行を設けたり <p> を挿入してもエラー
256 <P>なお、roff の整形はあまり精錬されていないため、他の環境でも空行が無視され
257 たり、逆に空行が多すぎたりすることがあります。そのため、sgml2txt では
258 3 行以上の空行を 2 行の空行に縮めています。</P>
261 <H2><A NAME="ss3.7">3.7 コメント</A></H2>
263 <P>SGML 文書のなかに、フォーマット出力には含めないコメントを書くには、
275 <H2><A NAME="ss3.8">3.8 打ち込んだ通りに出力する</A></H2>
277 <P>LaTeX の verbatim 環境と同じように、打ち込んだ通りに出力させるには、
278 <verb>...</verb> で囲みます。</P>
281 ここは、<verb> と </verb> でかこまれています。
288 ここは、<verb> と &etago;verb> でかこまれています。
293 と記述します。もちろん、空白もそのまま出力されます。</P>
294 <P>ただし、<verb>...</verb> の中でも、&,</ の 2 文字は
298 <LI>アンパサンド (<CODE>&</CODE>) を使うには <CODE>&ero;</CODE></LI>
299 <LI>左ブラケット+スラッシュ (<CODE></</CODE>) を使うには
300 <CODE>&etago;</CODE></LI>
304 <P>また、LaTeX の verbatim 環境を使う関係で、\end{verbatim} は記述し
309 <H2><A NAME="ss3.9">3.9 プログラムやアルゴリズム</A></H2>
311 <P>プログラムやアルゴリズムをフォーマットするには、基本的には verb 環境を
312 用いますが、ちょっとアクセントをつける方法を説明します。</P>
313 <P>プログラムやアルゴリズムの出力には、
315 <DT><B><code>...</code></B><DD><P>コード環境</P>
316 <DT><B><tscreen>...</tscreen></B><DD><P>スクリーン環境</P>
317 <DT><B><quote>...</quote></B><DD><P>クオート環境</P>
324 <P><code>...</code> ではさまれた部分をコード環境といいます。
325 コード環境は、ほとんど verb 環境と同じですが、上下に線が引かれます。</P>
329 これは <code>...</code> の例です。
337 これは <code>...&etago;code> の例です。
346 <P><tscreen>...<tscreen> ではさまれた部分をスクリーン環境とい
347 います。スクリーン環境では、自動的にインデント、タイプライタ書体の指定
348 が行われます。主に verb 環境といっしょに使われます。</P>
352 これは <tscreen><verb>...</verb></tscreen> の例です。
359 <tscreen><verb>
360 これは <tscreen><verb>...&etago;verb>&etago;tscreen> の例です。
361 </verb></tscreen>
369 <P><quote>...<quote> ではさまれた部分をクオート環境といいます。
370 クオート環境では、自動的にインデントが行われます。</P>
373 これは <quote>...</quote> の例です。
380 これは <quote>...&etago;quote> の例です。
388 <H2><A NAME="ss3.10">3.10 フォント</A></H2>
390 <P><CODE>jlinuxdoc-sgml</CODE> では LaTeX と同じようなフォントの指定をサポートし
391 ています。ただし、プレーンテキストにする場合にはフォントの指定は無視さ
395 <DT><B>em</B><DD><P>強調 (例:<EM>em</EM>)</P>
396 <DT><B>it</B><DD><P>イタリック (例:<I>it</I>)</P>
397 <DT><B>bf</B><DD><P>ボールドフェース (例:<B>bf</B>)</P>
398 <DT><B>sf</B><DD><P>サン・セリフ (例:<SF>sf</SF>)</P>
399 <DT><B>sl</B><DD><P>スランテッド (例:<I>sl</I>)</P>
400 <DT><B>tt</B><DD><P>タイプライタ (例:<CODE>tt</CODE>)</P>
401 <DT><B>cparam</B><DD><P>cparam (例:cparam) #LaTeX の \cparam{}
405 <P>フォントを指定する場合には、指定する内容をタグではさみます。
406 例えば、タイプライタ書体にするには、以下のようにします。
409 Here is some <tt>typewriter text</tt> to be included in the document.
413 <P>また、内容に``/''が含まれない場合には、以下の短縮形式を使う事もできま
417 Here is some <tt/typewriter text/ to be included in the document.
421 <P>ただし、全ての出力形式 (HTML 等) でサポートされているわけではないので、
422 bf、it、tt 以外のフォントはあまり使うべきでは無いでしょう。bf、it、tt
423 だけでも、文書を書くには十分でしょう。</P>
426 <H2><A NAME="ss3.11">3.11 箇条書き</A></H2>
428 <P><CODE>jlinuxdoc-sgml</CODE> ではいくつかの箇条書き (リスト) をサポートしていま
429 す。サポートしているのは、以下の 3 種類の箇条書きです。
431 <DT><B><itemize>...</itemize></B><DD><P>頭に記号を付けた箇条書き
433 <DT><B><enum>...</enum></B><DD><P>項目に番号を付けた箇条書きです。</P>
434 <DT><B><descrip>...</descrip></B><DD><P>見出しを付けた箇条書きで
441 <P>itemize リストでは、それぞれの項目の頭に記号が付けられます。
444 <CODE>jlinuxdoc-sgml</CODE> には
457 <tt/jlinuxdoc-sgml/ には
459 <item>itemize リスト
461 <item>descrip リスト
467 のように、リストの先頭で <itemize> を記述し、それぞれの項目の先
468 頭には <item> を付けて、最後に </itemize> を記述します。</P>
469 <P>当然、ネスト (入れ子) も可能です。</P>
473 <P>enum リストでは、それぞれの項目に番号が付けられます。
476 <CODE>jlinuxdoc-sgml</CODE> には
489 <tt/jlinuxdoc-sgml/ には
491 <item>itemize リスト
493 <item>descrip リスト
499 のように、リストの先頭で <enum> を記述し、それぞれの項目の先頭に
500 は <item> を付けて、最後に </enum> を記述します。</P>
501 <P>当然、ネスト (入れ子) も可能です。</P>
505 <P>descrip リストでは、それぞれの項目に見出しが付けられます。
508 <CODE>jlinuxdoc-sgml</CODE> でサポートされている箇条書きの種類は
510 <DT><B>itemize</B><DD><P>頭に・などの記号を付けた箇条書きです。</P>
511 <DT><B>enum</B><DD><P>項目に番号を付けた箇条書きです。</P>
512 <DT><B>descrip</B><DD><P>見出しを付けた箇条書きです。</P>
521 <tt/jlinuxdoc-sgml/ でサポートされている箇条書きの種類は
523 <tag/itemize/頭に・などの記号を付けた箇条書きです。
524 <tag/enum/項目に番号を付けた箇条書きです。
525 <tag/descrip/見出しを付けた箇条書きです。
531 のように、リストの先頭で <descrip> を記述し、最後に
532 </descrip> を記述します。また、それぞれの項目は <tag/見出し/
533 内容 と記述します。なお、見出しの部分に``/''を含めたい場合には、
534 <tag>見出し</tag>内容 と記述して下さい。</P>
535 <P>ただし、<CODE>LaTeX</CODE> を使う場合、<EM>見出し</EM>の部分には、
536 &bsol; が入力できませんので、注意して下さい。</P>
537 <P>当然、ネスト (入れ子) も可能です。</P>
540 <H2><A NAME="CrossRef"></A> <A NAME="ss3.12">3.12 相互参照</A></H2>
542 <P><sect?> には自動的に通し番号が付けられますが、これを別の部分から
544 <P>まず、参照される部分へのラベル付けを行います。</P>
548 <sect1>概要<label id="sec-intro">
552 <P>これで、ラベルが付けられましたので、他の場所で以下のように参照すること
557 概要については、<ref id="sec-intro" name="概要">を参照して下さい。
561 <P>この場合、<CODE>ref</CODE> タグによって、<CODE>sec-intro</CODE> のセクション番
563 <P>また、<CODE>name</CODE> は <CODE>HTML</CODE> や <CODE>nroff</CODE> に変換する場合
565 <P>なお、<CODE>HTML</CODE> に変換した場合には、名前の部分をクリックすることに
568 <A HREF="#CrossRef">相互参照</A>です。</P>
571 <DT><B>【裏技】</B><DD><P>せっかくの相互参照も、節や章しか参照できないのではちょっと
572 機能不足ですね。実は、label は任意の場所に設定することができるのです
573 が、LaTeX での参照の際に節番号を参照するので、節や章しか参照できない
575 だからといってあきらめる必要はありません。<htmlurl> というタグ
578 <A HREF="#htmlurl">htmlurlのタグ</A> を参照のこと。</P>
584 <H2><A NAME="ss3.13">3.13 HTML での URL を記述するには</A></H2>
586 <P><CODE>W3 (World Wide Web)</CODE> で使われる <CODE>URL (Universal Resource
587 Locators)</CODE> も記述することができます。</P>
588 <P>Mosaic 等で``Linux Documentation Projectのホームページ''と書かれている
589 部分をクリックすることで、<CODE>sunsite.unc.edu</CODE> の
590 <CODE>/mdw/linux.html</CODE> ファイルを参照するようにするには以下のように
595 <url url="http://sunsite.unc.edu/mdw/linux.html"
596 name="Linux Documentation Projectのホームページ">
600 <P><CODE>url</CODE> の引数には、実際の URL を記述します。また <CODE>name</CODE>
601 の引数には URL の名前や内容を記述しますが、これはオプションですので記
603 <P>また、<CODE>jf.gee.kyoto-u.ac.jp</CODE> の
604 <CODE>/pub/JF/misc/linuxdoc-sgml-1.5.tar.gz</CODE> を ftp して来る
609 "ftp://jf.gee.kyoto-u.ac.jp/pub/JF/misc/linuxdoc-sgml-1.5.tar.gz">
615 <A HREF="ftp://jf.gee.kyoto-u.ac.jp/pub/JF/misc/linuxdoc-sgml-1.5.tar.gz">【オリジナルのLinuxdoc-SGML v1.5を入手するにはここをクリッ クして下さい。】</A>
618 <A NAME="htmlurl"></A>
620 さらに、より機能の高い HTML の URL を表記するためには
621 <htmlurl url=.... > というタグを使います。例えば、メールを送る
625 <htmlurl url="mailto:ono@jf.gee.kyoto-u.ac.jp"
626 name="ono@jf.gee.kyoto-u.ac.jp">
630 のように書くことにより、Netscape などの WWW ブラウザ上でメールを送る
631 ためのフォームを出すことができるようになります。
633 <DT><B>例:</B><DD><P>ご用命の際は
634 <A HREF="mailto:ono@jf.gee.kyoto-u.ac.jp">ono@jf.gee.kyoto-u.ac.jp</A> まで。</P>
637 <P><htmlurl> タグを使えば以下のようにして、同一文書中のラベルを直接
641 <htmlurl url="#CrossRef" name="相互参照の節"> を参照のこと。
646 <A HREF="#CrossRef">相互参照の節</A> を参照のこと。</P>
649 <H2><A NAME="ss3.14">3.14 目次</A></H2>
651 <P>目次を作るのは簡単です。目次をいれたい部分に
658 を記述するだけです。大抵は、</abstract> の後に記述されるのがよい
660 <P>ただし、実際に目次が挿入されるのは、<CODE>LaTeX</CODE> を通して作られる
661 <CODE>dvi</CODE> と <CODE>PS</CODE> ファイルのみです。
662 <CODE>text</CODE>ファイルでは単に無視されるだけですし、<CODE>html</CODE>ファイ
663 ルでは指定しなくても、作成されます。</P>
667 <H2><A NAME="ss3.15">3.15 横線を引くには</A></H2>
681 <H2><A NAME="ss3.16">3.16 FAQ を記述するには</A></H2>
683 <P>ここでは、<CODE>Linux コミュニティ</CODE>で利用されている <CODE>FAQ</CODE>フォー
684 マットを記述する方法を説明します。</P>
686 <DL><DT><B>[Item] </B> ソフト名やハードウェアや規格・言語などのキーワード<P>
687 <DT><B>[投稿者] </B> 発言者の名前とメールアドレス<BR>
688 <DT><B>[日付] </B> 発言した日付<BR>
693 <DT><B>[投稿者] </B> 発言者の名前とメールアドレス<BR>
695 <DD>質問あるいは回答に対するコメント(回答に自身がない場合など)<P>
701 <keyword>ソフト名やハードウェアや規格・言語などのキーワード
702 <poster>発言者の名前とメールアドレス
710 <poster>発言者の名前とメールアドレス
712 質問あるいは回答に対するコメント(回答に自身がない場合など)
719 <P><EM>【注意】本来の FAQ フォーマットとの違いは、以下の通りです。</EM></P>
723 <FAQ> → <faq>
724 <Item> → <keyword>
725 <Subject> → <faq> の前に <sect?> として記述
726 <Poster> → <poster>
727 <Date> → <pdate>
728 <Q> → <question>
729 </Q> → </question>
730 <A> → <answer>
731 </A> → </answer>
732 <C> → <coment>
733 </C> → </coment>
734 </FAQ> → </faq>
738 <P>FAQ をまとめた、 <CODE>faqdb</CODE> 形式のファイルを、jlinuxdoc-sgml で処
739 理できるファイルに変換するためのフィルタとして、<CODE>bin/faqdb2doc</CODE>
740 がありますので、御利用下さい。このフィルタを使えば、上記の違いも変更さ
745 <A HREF="jguide-2.html">前のページ</A>
746 <A HREF="jguide-4.html">次のページ</A>
747 <A HREF="jguide.html#toc3">目次</A>