これは Linux 文書用の日本語版 Linuxdoc-SGML
文書処理システム (以
降、jLinuxdoc-SGML) のガイドです。本文書では、SGML 形式のファイルから
他の形式の文書ファイルへの変換方法や、SGML 形式の文書を書く方法について
記述しています。
原版の Linuxdoc-SGML
は Tom Gordon 作の QWERTZ DTD
(文書型定義 : Document Type Definition)をベースに、Linux の文書整備を
目的として SGML 形式の文書を groff, LaTeX, HTML, GNU info, LyX, RTF
形式へ変換出来るように、DTD と変換定義ファイル(replacement files: 以降
rep と呼びます)を書き換えたものです。
jLinuxdoc-SGML
はそのうち groff, LaTeX, HTML 形式について
日本語に対応し機能拡張したもので、オリジナルのスーパーセットとなって
います。
jLinuxdoc-SGML
は一般的な文書処理システムとして作られているわけ
ではありませんが、HOWTOs、FAQs や (最近の) Linux 文書プロジェクト
(LDP: Linux Documentation Project) のマニュアル作成等に使えるように
作られていますので、様々なタイプの文書で利用することができます。
ただし、Linux の文書作成に焦点を絞って開発されているので、一般的な
文書作成に十分な機能を持っているわけではありません。例えば画像や数式
や表や特殊文字を扱うことはできません。より一般的な文書に利用したい
場合は QWERTZ DTD などと組み合わせて利用することをお奨めします。
多数のフォーマットの文書を簡単に生成するのが、このシステムの1つの目標
です。今まで、ほとんどの Linux 文書は編集の始めから終りまでプレーンテ
キストで作業していました。roff
のようにプレーンテキストの整形処理
ができるシステムもありましたが、(WWW : World Wide Web で使うための)
HTML、(優秀な文書印刷のための) LaTeX や、texinfo
を生成してくれる
ものはありませんでした。それゆえ、あなたがこのシステムに無い機能で欲し
いものがあって、たくさんハックする必要が無くて多数のフォーマットで見栄
えの良い文書が生成できるアイデアがあれば私に知らせて下さい!。
利用者の皆様の御意見で、このシステムをよりよくしていきましょう。
この文書は jLinuxdoc.SGML
を使って書かれていますので、あなた
がこの DTD を使って SGML の文書を書くのに必要な事柄が含まれています。
また、HOWTO の例として JE-HOWTO.sgml
が、man ページの例
としてkon.sgml
が、FAQ の例として FAQj.sgml
が
linuxdoc-sgml-1.5/doc
ディレクトリにありますので、記述の
参考にして下さい。
このガイドは jLinuxdoc-SGML を用いて SGML 形式で書かれた文書ファイル
を様々な形式のファイルに変換する方法と、jLinuxdoc-SGML 用に定義された
SGML のタグの書き方について例を含めて説明しています。インストールと
設定に関しては、README.v1.5j
をご覧ください。
Linuxdoc-SGML の最初のガイドは原版の作者であり LDP のまとめ役である
Matt Welsh 自身の手によって書かれました。その後 Linuxdoc-SGML が他の
人の手で更新されるようになり、v1.4 から Greg Hankins が大幅に更新して
からはガイドも Greg Hankins によって書き直されました。
一方、日本語版は v1.1 対応版をさとけん@ForUsさんが作成し、その
ガイドもさとけんさんが Matt Welsh のガイドをもとに書き下ろしました。
現在のものは、原版 v1.5 のガイドと日本語版 v1.1 のガイドをもとに、
小野@京大環境地球が新たに書き下ろしたものです。
jLinuxdoc-SGML を使用するに当たって、SGML についての詳細な知識は必要 ではありません。ただし、SGML がどのような形式のものであり、DTD がどう いうものであるかという程度の知識は持っていた方が理解が速いでしょう。 SGML に関する簡単な解説としては、付属の日本語版 sgmls のガイド sgmls11j.add/sgmlexp.jpn をご覧になるのがいいでしょう。
Matt Welsh が HOWTOs の公式文書形式として SGML を選択し、Linuxdoc-SGML
を作成したのは、HOWTOs をネットニュースや書籍や WWW といった多くの媒体
で配布・公開するために、様々な形式の文書ファイルを一元的に作成する必要
ができたためです。
SGML を用いることにより、ひとつのファイルから様々な形式のファイルを
高い品質で作成することが可能となります。別の選択肢として HTML や TeX
などを基にし、それぞれのフォーマッタで様々な形式のファイルへ変換する
方法が考えられますが、これでは基となる形式の性質に特化しているため
変換後のファイルには十分な品質と高い柔軟性が得られません。SGML の特徴
である自由な文書構造の定義によってのみ、高い品質の文書が得られるのです。
Linux JF プロジェクトにおいて、Linuxdoc-SGML の日本語版が作成されたの
も同じ理由からですが、もうひとつの理由があります。JF では FAQ を SGML
形式のタグで括ることで抽出するという試みを行なっています。情報抽出と
データベース化に SGML を利用し、その文書作成に Linuxdoc-SGML を活用
しようというわけです。
また、将来文書が全て SGML で統一されれば特定のタグの抽出による文書管理
も可能となります。
jLinuxdoc-SGML は SGML の構文を定義する DTD と、その構文を解釈し構文 エラーをチェックし各種形式への変換を行なう パーサ と、変換されたファイル を整形するためのツールから成ります。DTD は QWERTZ DTD を基に作られて おり、SGML パーサには土屋 哲さん作の日本語版 sgmls を用いています。 整形・変換用のツールとしては、LaTeX, groff, dvi2ps などが必要となります。 例として DVI と Postscript への変換の処理の流れを以下に示します。
1. SGML形式 −(構文解釈: sgmls が DTD を解釈)→ 中間形式
2. 中間形式 −(変換: sgmlsasp が LaTeX 用 rep を基に変換)→ LaTeXソース
3. LaTeXソース −(整形: jlatex, dvi2ps などで変換)→ DVI, Postscript
sgmls は正確には、構文解釈を行なう sgmls と各種形式への変換を行なう
sgmlsasp によって構成されています。
DTD は構文を定義するのに使います。例えば、article の定義は
<!element article - -
(titlepag, header?,
toc?, lof?, lot?, p*, sect*,
(appendix, sect+)?, biblio?) +(footnote)>
のように記述されます。article
は titlepag, header, toc,...
といった要素から成り、それぞれの要素が必要かどうかといった定義がなされます。
それぞれの要素は、SGML の文書内ではタグとして使われています。この例
では、<article>, <titlepag>, <toc>
といった
タグが使われることになります。各種形式に対応する rep(変換定義ファイル)を形式ごとに用意することで、 様々な形式に変換することができます。 例えば番号なしの箇条書の LaTeX 用の rep は以下のようになります。
<itemize> + "\\begin{itemize}" +
</itemize> + "\\end{itemize}" +
同じことを HTML 用に定義すると以下のようになります。
<itemize> + "<UL>" +
</itemize> + "</UL>" +
<itemize>
が LaTeX では\begin{itemize}
と変換され、HTML では <UL>
と変換されます。いったん sgmlsasp で各種形式のソースファイルを作ってしまえば、後は それに合わせたフォーマッタで変換を行ないます。LaTeX では、jlatex を用いて DVI ファイルを作り、必要なら dvi2ps などで Postscript ファイル に変換します。プレーンテキストなら groff を使います。実際には、フォーマッタ だけでなくいくつかのフィルタを使って整形や調整を行なっているものも あります。
jLinuxdoc-SGML v1.5 は、JF の中に含まれます。以下の ftp site の他、国内の 多くの JF の mirror site から入手できます。
JF の里@京都大学インストールには、英語版の
linuxdoc-sgml-1.5.tar.gz
と日本語対応
のためのパッチ jlinuxdoc-sgml-1.5.0.diff.tgz
の他、groff や perl、
flex、LaTeXなどが必要です。
インストールは README.v1.5j
を参照して行なってください。
jlinuxdoc-sgml に関する最新情報は
Linux JFの部屋 「linuxdoc-sgml のページ」にて公開しています。
お気付きの点がありましたら、
ono@jf.gee.kyoto-u.ac.jp
宛にメールでご連絡ください。