<filename>doc/</filename> 以下に構成されている文書 doc/ ソースツリーは, ある一貫した方針で構成されています. また, そのうち FDP が管理する文書は, さらに別の方針で構成されています. これは新しい文書をソースツリーに追加する作業の単純化に加え, 文書を他の形式への変換を自動化しやすくすること 他の異なる文書構成との間の一貫性を維持し, 相互に作業しやすくすること ソースツリー上で新しい文書を導入する場所の決定を簡単に行なえるようにすること を目的としています. さらに文書のソースツリーは, さまざまな異なる言語や 文字エンコーディングに対応できなければなりません. 文書ツリーの構造が特定の慣習や文化背景を強制するものであっては ならないという点は重要です. ソースツリーの最上位 <filename>doc/</filename> doc/ の下には二種類のディレクトリがあり, 各ディレクトリはそれぞれ, 特別な名前と意味を持っています. share/ このディレクトリには, 文書の翻訳やエンコーディングに依存しないファイルが収められ, その分類のためのサブディレクトリがつくられています. たとえば, &man.make.1; で使用されるファイルは share/mk に, (FreeBSD で拡張された DocBook DTD などの) SGML 関連のファイルは share/sgml におかれています. lang.encoding/ 各々の文書の翻訳, エンコーディングに対して, それに対応する一つのディレクトリがあります. 具体的には, en_US.ISO8859-1/zh_TW.Big5/ というディレクトリです. ディレクトリ名が長いのですが, 言語とエンコーディングを完全に記述することで, 翻訳チームが将来的に, 同一の言語で異なるエンコーディングの 文書を提供する際に発生する問題を回避することができます. また, Unicode に移行するとしても, この方法ならば問題はまったくありません. <filename><replaceable>lang</replaceable>.<replaceable>encoding</replaceable>/</filename> ディレクトリ群 これらのディレクトリには, 文書そのものがおかれています. 文書はこのディレクトリからさらに, それぞれ異なるディレクトリ名で示される三種類に分類されます. articles DocBook の article(もしくはそれと同等なもの) でマークアップされた文書です. 文書は短めのもので, 構成単位は節(section)となっています. 通常, 一つの HTML ファイルとして生成されます. books DocBook の book(もしくはそれと同等なもの) でマークアップされた文書です. 文書は比較的長めで, 構成単位は章(chapter)となっています. 通常, (高速なネットワーク接続を持っている人や, ブラウザからの印刷に便利なよう)大きな単一の HTML ファイルと, リンクされた小さな HTML ファイルの両方が生成されます. man システムのマニュアルページの翻訳をおくためのディレクトリです. このディレクトリには, さらに mann という, 翻訳されたマニュアルのセクションに対応する複数のディレクトリがあります. ここで説明したディレクトリすべてが, 必ずそれぞれの lang.encoding ディレクトリにあるというわけではありません. どのディレクトリが存在するかについては, 翻訳チームがどれだけ翻訳を完了しているかに依存します. 特定の文書に関する情報 このセクションでは, FDP が管理する特定の文書に関する注意点が書かれています. ハンドブック books/handbook/ ハンドブックは, FreeBSD によって拡張された DocBook DTD で書かれています. ハンドブックは, DocBook の book によって構成されています. そしてそれは複数の part に分割され, part はいくつかの chapter を含みます. chapter は さらにセクション(sect1), サブセクション (sect2, sect3) などに分割されています. 物理的な構成 handbook ディレクトリには, 数多くのファイルとディレクトリがおかれています. ハンドブックの構成は, 時より変更されますので, この文書では, 構成変更の細かな部分の記述が古くなってしまっているかも知れません. ハンドブックの構成について疑問点がありましたら, FreeBSD ドキュメンテーションプロジェクト freebsd-doc@FreeBSD.org まで連絡下さい. <filename>Makefile</filename> Makefile は, SGML ソースを他の形式に変換する方法を決めたり, ハンドブックを構築する各種ソースファイルを列挙する さまざまな変数を定義するものです. このファイルは, 文書形式の変換を扱うためのコードを取り込むために 標準の doc.project.mk をインクルードします. <filename>book.sgml</filename> これはハンドブックの構造において最上位にあたる文書です. ハンドブックの DOCTYPE 宣言とハンドブックの構成を記述するためのエレメントが含まれています. book.sgml は, .ent という拡張子のついたファイルをロードするためにパラメータ実体(parameter entities)を使います. (後述する)これらのファイルには, ハンドブックの他の部分で共通して使われる一般実体(general entities) が定義されています. <filename><replaceable>directory</replaceable>/chapter.sgml</filename> ハンドブックの各章は, 互いに個別に分けられたディレクトリに chapter.sgml というファイルとして格納されています. それぞれのディレクトリには, chapter エレメントの id 属性の値と同じ名前が付けられています. たとえば, ある章のファイルが ... ]]> のようになっていたとすれば, それは kernelconfiguration という ディレクトリ中の chapter.sgml というファイルです. 通常, その章の内容はすべてこのファイルに書かれています. HTML 版のハンドブックを構築する時, この章は kernelconfiguration.html というファイル名として生成されます. これは id の値に関係するもので, ディレクトリ名との関連はありません. ハンドブックの以前の版では, 文書のファイルは book.sgml と同じディレクトリにおかれていて, ファイル名は chapter エレメントの id 属性の値になっていました. これを個別のディレクトリに分けて移動させたのはハンドブックの 将来的な計画の準備のためです. 具体的には, こうすることで, 特に変更することなく各章に画像を追加することが可能になります. また, それぞれの画像ファイルを章のテキストファイルと同じディレクトリに おくことは, 大きな一つのディレクトリにすべてのテキストファイルと 画像ファイルをおいて管理しようとするより分かりやすくなります. 名前空間の衝突が発生したとしても, 格納ファイルの少ないディレクトリで作業する方が, 数多くのファイルがディレクトリにある場合よりも対処しやすくなるでしょう. ここまでを簡単にまとめると, 個々に chapter.sgml というファイルを含むディレクトリがたくさんあり, それらは basics/chapter.sgml, introduction/chapter.sgml, printing/chapter.sgml などという名前になっているということです. 章とディレクトリは, ハンドブックの並び順を反映した方法で名付けられるべきではありません. 順番はハンドブックの改訂の際に変更される可能性があります. (章全体が階層構造の中で上下に移動するような場合でなければ) こういった改訂が行なわれる場合にファイル名を変更する必要性が (なるべく) 生じないようにするべきです. 各々の chapter.sgml ファイルは, 完全な SGML 文書ではありません. 詳しく言えば, それらのファイルの先頭には DOCTYPE 宣言の行が書かれていません. これには, 二つの欠点があります. これらのファイルは一般的な SGML ファイルとして扱うことができないため, HTML, RTF, PS などの形式に変換するのに, ハンドブック全体の生成に用いている方法と同じ方法を単純に用いることができません. そのため, ただ一つの章だけを変更し, その結果を確認しようという場合には, 毎回ハンドブック全体を構築し直さなければならないことになります. Emacs の sgml-mode を使う場合, 文書が利用している DTD を認識できないために sgml-mode の便利な機能(エレメントの補完入力, 自動チェック機能など)が利用できなくなります.