Next Previous Contents

2. LDP 和 SGML 背景資料

2.1 LDP

Linux 文檔計劃 (LDP) 是用來提供給新用戶以快速取得某個詳細主題相關信息。它並不僅僅包含一系列關於管理、網絡、編程等的書籍,而是包容了大量的由使用過的人書寫的關於某個個別主題的解決方法。如果你想查找關於打印的資料,你可以查閱 Printing HOWTO。如果你想查找關於網絡的資料,你可以查閱 Ethernet HOWTO,等等。

剛開始,許多這些文檔是文本或 HTML 格式。隨著時間的推移,必須找出一個管理這些文檔的好方法。一種能讓你從 Web 網頁上閱讀、從光盤的文本文件閱讀,甚至從你的個人數字助理上閱讀的方法。答案已經有了,就是 SGML。

2.2 SGML

Standard Generalized Markup Language (SGML) 是一種基於記號文本的語言。在這方面,它類似於 Tex 或者 groff 或者 HTML。 SGML 的強大之在於它不象 WYSIWYG (所見即所得)那樣,你不需要定義象顏色、字體等格式,你只需定義元素(段落、章節、編號列表)而 讓最終處理程序來處理象位置、顏色、字體等煩心的事情。HTML 也是這麼做的,實際上它是 SGML 的一個子集。

SGML 包含兩部分。首先是一個稱為 DTD (或稱為文檔類型定義 Document Type Definition) 的結構。 DTD 定義每一個元素之間的關系。The LinuxDoc DTD, used to create this document, is an example of this. DTD 為每一個使用 DTD 創建的文檔一個通用的視覺和感覺效果。其次是內容(content),就是將要由 SGML 處理器處理並被用戶閱讀的部分。本段落就是內容,但也可以包含圖像、表格、編號列表等等。內容被標記(tag)包圍用來分開不同的元素。

隨著時間的推移,LinuxDoc DTD 將被 DocBook DTD 所取代,為其它的 SGML 文檔提供一個統一的視覺和感覺效果。 如果實現了這一步,我們將通過本 HOWTO 或者郵件列表為你升級。 LinuxDoc 和 DocBook 之間最大的不同在於 DocBook 分配標記給不同類型的內容(就象命令、文件名、地址目錄等等),而 LinuxDoc 分配標記基於文本將要顯示的方式(比如你可以分配強調或打字)

為什麼用 SGML 取代 HTML 或其它格式?

SGML 提供的不僅僅是格式。你可以自動建立索引、內容表以及文檔中的鏈接或者是大綱。sgmltools 包也可以讓你輸出 LaTeX 、 info 、 text 、 HTML 和 RTF。從這些基本格式,你可以創建其它格式文檔(DOC、PostScript等等)。SGML 不會象 HTML 那樣冗長。我不認為你很快會在 SGML 中看到閃亮的標記。這有助於編碼不僅僅易於處理,而且易於書寫。象 LyX (我至今使用的所見即所得編輯器)這樣的軟件可以幫助你書寫 TeX格式文檔並輸出成 SGML 格式,然後你就可以從 SGML 生成任何你需要的格式。

最後,SGML 更注重元素的工作性能而不是元素的顯示。這是一個顯著的特性,有助你更快地書寫,因為你不必關心段落的位置、字體大小等等。

2.3 工具

在本章節,我將介紹一些用來創建你自已的 LDP 文檔的工具。我將先簡單介紹,然後詳細說明,包括如何安裝它們。如果你使用其它的一些工具來書寫 LDP,請告訴我,我會在這裡為它們做廣告的。

sgmltools

必備

sgmltools 包包含用來處理 SGML 成以上所說格式的 SGML 工具。它也包含創建 LDP 文檔所需的 LinuxDoc DTD。如果只創建 SGML 文檔,這些已經足夠了。如果你想處理成比如 TeX 格式,你還需要一些工具包。sgmltools 包在你的 linux 發行版本中可以找到,或者到 http://www.sgmltools.org/ 下載。

TeX

可選

TeX (rhymes with blech!) 是一種可供廣泛選擇的標記語言,甚至包括那些數學世界中的人們。 我還記得許多微積分考試是由 TeX 寫成的。它也是至今仍在使用的最早的標記語言之一。 TeX 實際上和 SGML 具備許多同樣的概念。TeX 處理它的文件成 DVI (設備無關)從而可能處理成其它格式。 不幸的是,DVI不能容易地轉換成打印語言(PostScript、PCL)以外的其它格式,很難生成 HTML。 TeX 在多數 Linux 發行版本中都已安裝或被提供。

LyX

可選

LyX 程序是一個圖形化所見即所得軟件,提供非常必需的易用圖形應用與 SGML 處理器之間的聯系。LyX是用於書寫 TeX 文檔,實現了許多 TeX 規則。舉個例子,當章節被自動編號,你無法輕易地插入空格。這被 TeX 設計成禁止。而 SGML 通常忽略同樣的空格。LyX能夠讀入 LinuxDoc DTD 並且提供文檔模板以幫助你用習慣的方式創建你的 LDP 文檔,而不需要象 vi 那樣要記住許多標記。 LyX 可以在 http://www.lyx.org/ 找到。

在 KDE 中有一個使用 Qt 庫的 LyX。 你可以從以下地址得到更多信息: http://www.devel.lyx.org/~ettrich/klyx.html。 如果你使用 KLyX 來寫 SGML ,請通過 郵件 告訴我你的使用經驗。


Next Previous Contents