SGML-Tools 使用說明中譯版 <author> 作者: Matt Welsh. Updated by Greg Hankins. <newline> 譯者: <htmlurl url="http://www.phys.ntu.edu.tw/~cwhuang/pub/" name="C.W.Huang"> <tt><htmlurl url="mailto:cwhuang@phys.ntu.edu.tw" name="cwhuang@phys.ntu.edu.tw"></tt> <date> v0.99.0, 29 November 1996. 翻譯日期: 4-15 August 1997 <!-- 譯者 <url url="http://www.phys.ntu.edu.tw/~cwhuang/" name="阿偉"> <url url="cwhuang@phys.ntu.edu.tw" name="cwhuang@phys.ntu.edu.tw"> v0.99.0, 04-14 August 1997 --> <abstract> 這份文件是 SGML-Tools 的使用說明,一種以 SGML 為基礎,讓你產生不同輸出格式的工具. 你可以用單一的 SGML 原始文件產生純文字檔 (ASCII 與 ISO-8859-1), DVI, PostScript, HTML, GNU info, LyX, 與 RTF 檔. 這份文件說明以 SGML-Tools 0.99.0. 為準. </abstract> <!-- Table of contents --> <toc> <sect>簡介 <p> 這是一份 SGML-Tools 文件處理系統的使用說明.SGML-Tools 提供一個 SGML DTD (文件形態定義,Document Type Definition) 及一組「置換檔(replacement files)」,可以將 SGML 轉換為 groff, LaTeX, HTML, GNU info, LyX, 與 RTF 的原始檔. SGML-Tools 主要以 <url url="mailto:thomas.gordon@gmd.de" name="Tom Gordon"> 的 QWERTZ DTD 為基礎發展的. <sect1>關於此文件 <p> 這份文件以附在 SGML-Tools 上的 linuxdoc DTD 所撰寫的. 它幾乎包含所有使用這份 DTD 來寫 SGML 文件所需知道的事情. 請參考 <tt/example.sgml/ 這份 SGML 範例,你可以拿它當作你自己文件的範本. <sect1>為何用 SGML? <p> 我選擇使用 SGML 是因為 SGML 是專門用來轉換成其它格式的. SGML 是 Standard Generalized Markup Language 的簡稱,它允許你指定文件的<em/結構/---也就是,用何種事物來標示文件. 你使用一份 DTD (文件形態定義) 來指定文件的結構.linuxdoc 是一種指定 Linux HOWTOs 與其它文件的 DTD. QWERTZ 是另一種 DTD; SGML 的標準提供書,文章,及其餘一般文件所使用的 DTD. DTD 指定文件中「組成元素」的名稱.組成元素就是一種結構---例如章,節,段落,或是更小的像是這樣的 <em/強調文字/.然而跟 LaTeX 不同的是,這些組成元素並非 SGML 本身內含的.linuxdoc DTD 就定義了類似 LaTeX 中的組成元素---你有章,節,或是「環境」等等.然而,利用 SGML 你可以照你喜歡定義文件的任何結構.就某方面來說,SGML 就像是低階的 TeX,而 linuxdoc DTD 則像是 LaTeX. 別被這類比搞混了.SGML 並<em/不是/一種文件格式化系統.沒有所謂的「SGML 格式」. SGML 的原始檔<em/只是/用來轉換成其它格式以便處理的.還有,SGML 本身是用來指定文件的結構. 沒有 SGML 本身的文字格式化工具或是「巨集」之類的.所有的一切都定義於 DTD 中. 沒有 DTD 你不能使用 SGML,一份 DTD 定義了 SGML 該做什麼. <sect1>它如何運作 <p> 這裡解釋如何使用 SGML-Tools 處理文件.首先,你需要一份 DTD.我用的是 QWERTZ DTD, 它本來是一群人因為需要類似 LaTeX 的 DTD 而做的.我將 QWERTZ DTD 修改成 linuxdoc DTD 以符合我們的需求.DTD 不過設定了文件的結構.它看起來像是這個樣子的: <tscreen><verb> <!element article - - (titlepag, header?, toc?, lof?, lot?, p*, sect*, (appendix, sect+)?, biblio?) +(footnote)> </verb></tscreen> 這部份設定了「文件」的整個結構,就像是 LaTeX 的「documentstyle」. 這文件包含了一個書頁名(<tt/titlepag/),一個可有可無的標題(<tt/header/),一個可選用的內容列表(<tt/toc/),可選用的圖形列表(<tt/lof/)與表格列表(<tt/lot/),任意數量的段落(<tt/p/),任意數量的章節(<tt/sect/),可選用的附錄(<tt/appendix/),一個可選用的參考書目(<tt/biblio/)以及註解(<tt/footnote/). 你可看出,DTD 並未說明文件應如何被格式化,或它看起來長得怎麼樣. 它只不過定義了文件由何種部份所組成.在文件的另一個地方定義了 <tt/titlepag/, <tt/header/, <tt/sect/ 及其餘的組成元素. 寫文件時你並不需要知道任何關於 DTD 的文法規則.我只不過讓你看一下它長得什麼樣子還有它做了什麼. 但你<em/必需/熟悉這份 DTD 所定義的文件<em/結構/.否則,在嘗試寫文件時你可能會違反結構, 而且被錯誤訊息搞昏了.下面我們會描述 SGML 文件結構的細節. 接下來就是用這份 DTD 所定義的結構來寫文件了.再說一次,linuxdoc DTD 使得文件看起來長得像 LaTeX---所以很容易遵從.用 SGML 的術語來說,使用某一個特別的 DTD 來撰寫的單一文件叫做那份 DTD 的「案例(instance)」. 為了將 SGML 原始檔轉換成其它格式(例如 LaTex 或 groff)以便處理,你所寫的 SGML 原始檔必須經 SGML <em/解析器/處理過.我用的是 James Clark(<tt><url url="mailto:jjc@jclark.com" name="jjc@jclark.com"></tt>) 所寫的 <tt/sgmls/ 解析器, 他也是 <tt/groff/ 的作者.它用起來很方便.<tt/sgmls/ 讀入你的文件,檢查它遵循 DTD 所定義的結構. 它同時將你文件中的「巨集」和元素展開,以方便下一階段的 <tt/sgmlsasp/ 來處理. <tt/sgmlsasp/ 用來將 <tt/sgmls/ 的輸出結果轉換成另一種格式(如 LaTeX). 它使用<em/置換檔/將原始 SGML 文件中的組成元素轉換成「目標」格式(如 LaTeX 或 groff)對應的原始檔. 例如,一部份 LaTeX 的<em/置換檔/長得像這樣: <tscreen><verb> <itemize> + "\\begin{itemize} + </itemize> + "\\end{itemize} + </verb></tscreen> 它說明了當你在 SGML 原始檔中使用 <tt/itemize/ 元素時,應該被置換成 LaTeX 原始檔中的 <tscreen><verb> \begin{itemize} </verb></tscreen> (我說過了,DTD 中的元素像極了它們在 LaTeX 中的對應物.) 因此,要將 SGML 轉換成其它格式,你所要做的就是為此格式寫一個新的<em/置換檔/, 在新格式中為每一 SGML 組成元素指定適當的對應.事實上,沒這麼簡單---例如, 如果你嘗試轉換成和你的 DTD 完全不同的結構,你就有麻煩.不過, 比起要為每一種格式寫單獨的解析器與轉換程式還是要簡單的多. SGML 提供一種一般的系統將一種原始檔轉換成許多格式. 一但 <tt/sgmlsasp/ 轉換完成,你就有與原先 SGML 原始文件相對應的 LaTeX 原始檔, 你可以像一般的 LaTeX 檔一樣來使用它.下面我會示範如何做這樣的轉換與格式化. 你只要用一行指令就夠了. 不過首先,我要說明如何安裝及設定 SGML-Tools. <sect>安裝 <p> 首先從這個地方 <itemize> <item><tt><htmlurl url="ftp://sunsite.unc.edu/pub/Linux/utils/text/sgml-tools-0.99.0.tar.gz" name="ftp://sunsite.unc.edu/pub/Linux/utils/text/sgml-tools-0.99.0.tar.gz"></tt> </itemize> 取得 <tt/sgml-tools-0.99.9.tar.gz/. 你可以從 <tt><url url="http://www.xs4all.nl/~cg/sgmltools/" name="SGML-Tools WWW Page"></tt> 取得最新的資訊. <p> <tt/sgml-tools-0.99.0.tar.gz/ 包含了所有你需要用來寫 SGML 文件並轉換為 groff, LaTeX, HTML, GNU info, LyX, 與 RTF 的東西.除此之外,你可能還需要下列的工具---SGML 系統並不需要這些,但我建議你取得這些工具以方便你轉換文件,在你公開散佈你的文件前將先確定它們看起來沒問題. <enum> <item><tt/groff/. 你<em/必須/使用 1.08 或更新的版本.你可以從 <tt><htmlurl url="ftp://prep.ai.mit.edu/pub/gnu" name="ftp://prep.ai.mit.edu/pub/gnu"></tt> 取得.在 <tt><htmlurl url="ftp://sunsite.unc.edu/pub/Linux/utils/text" name="ftp://sunsite.unc.edu/pub/Linux/utils/text"></tt> 可找到 Linux 的執行檔.你必需使用 <tt/groff/ 讓你的 SGML 文件產生純文字檔. <tt/nroff/ <em/不行/! <item><tt/TeX 與 LaTeX/. 這幾乎在每個地方都有,你應該可以毫無困難地找到並安裝 (在 <tt><htmlurl url="ftp://sunsite.unc.edu" name="sunsite.unc.edu"></tt> 可以找到 Linux 的執行檔) 當然,如果你要用 LaTeX 來格式化你的 SGML 文件你才需要 TeX/LaTeX. <item><tt/flex/. <tt/lex/ 可能不行.你可以從 <tt><htmlurl url="ftp://prep.ai.mit.edu/pub/gnu" name="ftp://prep.ai.mit.edu/pub/gnu"></tt> 取得. <item><tt/gawk/ 與 GNU info tools, 用來格式化與預視 info 檔案. 在 <tt><htmlurl url="ftp://prep.ai.mit.edu/pub/gnu" name="ftp://prep.ai.mit.edu/pub/gnu"></tt>, 或 <tt><htmlurl url="ftp://sunsite.unc.edu/pub/Linux/utils/text" name="ftp://sunsite.unc.edu/pub/Linux/utils/text"></tt> 可以找到 <tt/gawk/, 還有 <tt><htmlurl url="ftp://sunsite.unc.edu/pub/Linux/system/Manual-pagers" name="ftp://sunsite.unc.edu/pub/Linux/system/Manual-pagers"></tt> 可找到 GNU info tools. <tt/awk/ 不行. <item>LyX (一個半所見即所得(quasi-WYSIWYG) 的 LaTeX 界面),可在 <tt><htmlurl url="ftp://ftp.via.ecp.fr" name="ftp://ftp.via.ecp.fr"></tt> 找到. </enum> <sect1>安裝軟體 <p> 安裝與設定 SGML-Tools 所需的步驟是: <enum> <item>首先,在某處解開 <tt/sgml-tools-0.99.0.tar.gz/ 的壓縮檔. 它將產生 <tt/sgml-tools-0.99.0/ 的目錄.在那裡解開都沒有關係,只是不要把裡面的東西搬離 <tt/sgml-tools-0.99.0/ 目錄就行. <item>閱讀 <tt/INSTALL/ 檔,它包含了安裝過程的細節. </enum> 如果一切順利,你就可以使用它了. 譯註: 其實就是執行 <tt/install/ 這支 shell script,回答它的問題就行了! <sect1>編排 SGML 文件 <p> 例如說你想要編排一份 SGML 文件叫 <tt/foo.sgml/,這裡有一份簡短的說明如何輸出成不同的格式.完整的選項列表請參考 man pages. <sect2>產生純文字輸出 <p> 如果你想產生純文字檔,使用這個指令: <tscreen><verb> % sgml2txt foo.sgml </verb></tscreen> <p> 請注意我已調整 groff 轉換為純文字輸出.也就是說,我將頁首,頁碼,邊框等去掉. 經過一些修改你可以從 groff 的輸出產生 PostScript 與 DVI 格式,但我建議你用 LaTeX 比較好. <p> 你可以為 man pages 產生 groff 的原始檔,而用 <tt/groff -man/ 將其編排. 執行這個指令: <tscreen><verb> % sgml2txt -man foo.sgml </verb></tscreen> <sect2>產生 LaTeX, DVI 或 PostScript 輸出 <p> 要從 SGML 原始檔產生 LaTeX 文件,就用: <tscreen><verb> % sgml2latex foo.sgml </verb></tscreen> <p> 如果你希望產生 PostScript 輸出(經由 <tt/dvips/),可用 <tt/-p/ 選項: <tscreen><verb> % sgml2latex -p foo.sgml </verb></tscreen> <p> 或者你可以加上 <tt/-d/ 選項產生 DVI 檔: <tscreen><verb> % sgml2latex -d foo.sgml </verb></tscreen> <sect2>產生 HTML 輸出 <p> 如果你希望輸出 HTML 檔,用這指令: <tscreen><verb> % sgml2html -img foo.sgml </verb></tscreen> <p> 這將產生 <tt>foo.html</tt>, <tt>foo-1.html</tt>, <tt>foo-2.html</tt>, 等等 --- 每一章一個檔案.<tt>foo.html</tt> 是首頁,可以用你的 WWW 瀏灠器觀看. 確定你所有的 HTML 檔在同一目錄下,因為它們是用相對的 URL 彼此參考的. HTML 檔的圖示目錄指向 <tt>$SGMLTOOLSLIB/icons</tt> 所定義的目錄. 這些檔都應被拷貝到最後的位置上.<tt>$SGMLTOOLSLIB/</tt> 定義在 SGML 轉換程序的最開頭. <p> 如果你使用 <tt/sgml2html/ 而沒有加上 -img 選項的話,產生的 HTML 文件會加上導讀用的 "Previous", "Next", 以及 "Table of Contents" 標籤. 你可以藉由在 <tt>$SGMLTOOLSLIB/rep/html/<filename></tt> 建立一個檔案以蓋過這些預設, 並且以你自己的話來取代它們.該檔案的格式如下所示: he following format: <tscreen><verb> PrevPage: newvalue NextPage: newvalue TOC: newvalue </verb></tscreen> 範例請參閱 <tt/deutsch/. <sect2>產生 GNU Info 格式的輸出 <p> 如果你想要將你的檔案編排成 GNU Info 瀏覽程式接受的格式,只要使用下列指令: <tscreen><verb> % sgml2info foo.sgml </verb></tscreen> <sect2>產生 LyX 格式的輸出 <p> 欲產生 LyX 格式的出,使用這個指令: <tscreen><verb> % sgml2lyx foo.sgml </verb></tscreen> <sect2>產生 RTF 格式的輸出 <p> 如果你想產生 RTF 格式的輸出,執行這個指令: <tscreen><verb> % sgml2rtf foo.sgml </verb></tscreen> <p> 這將會產生 <tt>foo.rtf</tt>, 以及 <tt>foo-1.rtf</tt>, <tt>foo-2.rtf</tt>, 等等檔案---文件的每一節自成一個檔案. <sect2>檢查 SGML 語法 <p> 如果你只是想從 SGML 轉換中抓出你的錯誤,可以使用 <tt/sgmlcheck/ 這個指令稿. 例如: <tscreen><verb> % sgmlcheck foo.sgml </verb></tscreen> <sect1>ISO 8859-1 字元集 <p> ISO 8859-1 (latin1) 字元集可以用在純文字 LaTeX, HTML, LyX, 以及 RTF 輸出的國際字元(GNU Info 未來可能支援 ISO 8859-1). 要使用這項功能的話,可以加上 <tt/-l/ 選項給編排指令稿,例如: <tscreen><verb> % sgml2txt -l foo.sgml </verb></tscreen> 你也可以在 SGML 原始文件中使用 ISO 8859-1 字元,它們會自動被轉換成對應文件格式的適當逸出字元(escape codes). <sect>使用 SGML-Tools 撰寫文件 <p> 使用 SGML-Tools DTD 撰寫文件的過程大部分是非常容易的,而且有點類似 LaTeX. 然而,仍然有些限制要注意.這一節我將介紹 SGML 文件的撰寫. SGML 文件範例(及寫作指引)請參閱 <tt/example.sgml/ 檔案,你可以拿來當作自己文件的範本. 在此我將討論 SGML 的各項功能,但是以原始文件作為範例不是很有可讀性. 因此,印出 <tt/example.sgml/ 的原始碼(編排後的輸出),如此你就有真實的參考範例。 <sect1>基本概念 <p> 仔細看範例文件的原始文件,你會注意到裡面有許多以角括號(<tt><</tt> 及 <tt/></tt>)標示的「標籤(tags)」. 標籤單純地指出某組成元素的起始,這裡所謂的組成元素是一節,一段,一句斜體的文句,列表中的一個項目,以及諸如此類的結構. 使用標籤就像使用 LaTeX 指令如 <tt>\item</tt> 或是 <tt>\section{...}</tt> 等一般. 舉個簡單的例子,要產生這一段 <bf>粗體文字</bf>,我在原始碼中鍵入 <tscreen><verb> 舉個簡單的例子,要產生這一段 <bf>粗體文字</bf>, ... </verb></tscreen> <tt><bf></tt> 是這段粗體文字的開頭,而 <tt></bf></tt> 是結尾. 你也可以使用這個簡略形式: <tscreen><verb> 舉個簡單的例子,要產生這一段 <bf/粗體文字/, ... </verb></tscreen> 就是用斜線將粗體文字包住.(當然,如果被包含的文字含有線,你就必須使用長的形式, 例如 Unix 的檔案名稱.) 關於特殊字元還有其它得要注意的問題 (這就是為什麼如果你仔細觀察原始文件就會注意到這些看起來很怪異 "&" 表示式;我將簡短地說明這些符號). 在某些情況下,特定的組成元素之結尾標籤是可選用的. 例如,你在某一節的開始使用 <tt><sect></tt> 這個標籤,然而,該節的結尾標籤 (可以出現在該節主體本身結束的地方,而不只是該節的名稱後面!) 是可選用的而當你在同一個層次開始另外一節的時候也就暗示著該節的結束. 一般來說你不需要擔心這些細節;只要跟著使用在 <tt/example.sgml/ 指引裡的範例就可以了。 <sect1>特殊字元 <p> 很明顯的,角括號它們本身就是 SGML 原始文件裡的特殊字元.另外還有其它該注意的字元. 例如,假設你想鍵入由角括號所涵蓋的表示式,像這樣: <tt><foo></tt>. 為了表示左邊的角括號,你必須使用 <tt>&lt;</tt> 這個組成元素, 這是一個會展開成左括號字元的「巨集」.因此,我在原始文件中鍵入 <tscreen><verb> angle brackets around it, as so: <tt>&lt;foo></tt>. </verb></tscreen> 一般來說,以結合字元(&)作為開始表示這是一個特殊的巨集. 例如,產生 % 符號的 <tt/&percnt;/ 產生 | 的 <tt/&verbar;/ 等等. 對於所有的「特殊字元」都有結合巨集可以表示它們. 通常,你不需要使用結合巨集表示某特殊字元,然而,在某些情況下這是必須的。最常用的是: <itemize> <item>Use <tt>&amp;</tt> for the ampersand (&), <item>Use <tt>&lt;</tt> for a left bracket (<), <item>Use <tt>&gt;</tt> for a right bracket (>), <item>Use <tt>&lt;/</tt> for a left bracket with a slash (<tt></</tt>) <item>Use <tt>&dollar;</tt> for a dollar sign ($), <item>Use <tt>&num;</tt> for a hash (#), <item>Use <tt>&percnt;</tt> for a percent (%), <item>Use <tt>&tilde;</tt> for a tilde (˜), <item>Use <tt>``</tt> and <tt>''</tt> for quotes, or use <tt>&ldquo;</tt> for “, <tt>&rdquo;</tt> for ”. </itemize> <p> 完整的特殊字元列表可以查看其中一個替換檔. 通常 LaTeX 最會抱怨特殊字元,所以查閱 <tt>$SGMLTOOLSLIB/rep/latex/general</tt> 會是個好的開始. <tt/$SGMLTOOLSLIB/ 定義在 SGML 轉換程序的最前面. <sect1>Verbatim 與 Code 環境 <p> 當我們正討論特殊字元這個主題時,我也必須提到「verbatim 環境」, 用來在輸出中含入不加變動的文字(空白字元以及縮排,和諸如此類). <tt>verb</tt> 這個組成元素就是做此用途的.它看起來就像這樣: <tscreen><verb> <verb> Some literal text to include as example output. </verb> </verb></tscreen> <tt>verb</tt> 環境不允許你在其內容中使用<em/任何東西/. 特別地,在 <tt>verb</tt> 環境中你必須: <itemize> <item>使用 <tt>&amp;</tt> 代表 <tt>&</tt> <item>使用 <tt>&lt;/</tt> 代表 <tt></</tt> <item>不要在 <tt>verb</tt> 環境中使用 <tt>\end{verbatim}</tt>, 因為這是 LaTeX 用來結束 <tt>verbatim</tt> 環境的. (未來應該可能完全的隱藏底層的文字編排,但目前的解析器還不支援.) </itemize> <tt>code</tt> 環境非常類似 <tt/verb/ 環境,除了在文字周圍加入分隔線 <code> 這是 code 環境的例子. </code> 你應該在任何 <tt/verb/ 環境的周圍使用 <tt/tscreen/ 環境,像這樣: <tscreen><verb> <tscreen><verb> 這是一段例句. </verb></tscreen> </verb></tscreen> <tt/tscreen/ 是一個環境單純地縮排並設定預設字型為 <tt/tt/. 這使得範例要論在 LaTeX 以及純文字的版本中看起來好多了. 你可以使用 <tt/tscreen/ 而不加 <tt/verb/,不過,如果你在範例中使用任何的特殊字元那麼你就需要它們兩個. <tt/tscreen/ 與特殊字元無關.範例請參閱 <tt/example.sgml/. <tt/quote/ 環境類似 <tt/tscreen/,除了不將預設字型設為 <tt/tt/.所以,你可以使用 <tt/quote/ 於與電腦無關的引用,如: <tscreen><verb> <quote> Here is some text to be indented, as in a quote. </quote> </verb></tscreen> 這會產生: <quote> Here is some text to be indented, as in a quote. </quote> <sect1>文件內容概觀 <p> 在我們深入研究細節之前,我要開始介紹 linuxdoc DTD 定義的文件概觀.文件如何設立的範例請仔細觀看 <tt/example.sgml/. <sect2>序文 <p> 在文件的「序文」中你設立像是標題以及文件型態(style)的東西.Linux HOWTO 文件看起來應該像: <tscreen><verb> <!doctype linuxdoc system> <article> <title>Linux Foo HOWTO <author>阿偉, <tt/cwhuang@phys.ntu.edu.tw/ <date>v1.0, 14 August 1997 <abstract> 這份文件說明了如何使用 <tt/foo/ 這個工具. </abstract> <toc> </verb></tscreen> 這些組成項目可以酌予增減但須按此順序.第一行告訴 SGML 解析程式使用 linuxdoc DTD. <tt><article></tt> 這個標籤規定文件使用「article」此種文件型態. (原先的 QWERTZ DTD 還定義 「report」以及「book」等型態;我並沒有修改它們以在 SGML-Tools 中使用). <tt/title/, <tt/author/, 以及 <tt/date/ 這些標籤的意義應該是很明顯的, 在 <tt/date/ 標籤中包含文件的版本編號以及最後修改時間. <tt/abstract/ 標籤設定文件頂端<em/在內容之前/印出的文字. 如果你不想含入內容列表(<tt/toc/ 標籤),那麼你可能不需要 <tt/abstract/. <sect2>章節與段落 <p> 在序文之後,你就可以準備進入文件本身.有下列的分節指令可以使用: <itemize> <item><tt/sect/: 最頂層的章節 (也就是 1, 2, 等等) <item><tt/sect1/: 第二層的次章節 (也就是 1.1, 1.2, 等等) <item><tt/sect2/: 第三層的小章節 <item><tt/sect3/: 第四層的小小節 <item><tt/sect4/: 第五層的小小小節 </itemize> 它們相當於 LaTeX 中對應的 <tt/section/, <tt/subsection/ 等等. 在 <tt/sect/ (或 <tt/sect/, <tt/sect/ 等等) 標籤之後跟著是該節的名稱. 例如,在文件的頂端,序文之後的是此標籤: <tscreen><verb> <sect>簡介 </verb></tscreen> 而在此節開始的地方(段落),有個標籤是: <tscreen><verb> <sect2>段落 </verb></tscreen> 在一節的標籤之後,你開始文件的主體.然而,你必須以一個 <tt><p></tt> 標籤開始,像這樣: <tscreen><verb> <sect>簡介 <p> 這是一份 SGML-Tools 文件處理的使用者指引.... </verb></tscreen> 這是告訴解析程式你已完成一節的標題並且準備好開始本文主體. 其後,新的段落是以空白行開始(就如同 TeX).例如, <tscreen><verb> 這是第一段的結尾. 而我們從這裡開始新的一段. </verb></tscreen> 沒有什麼理由要在每個段落的前面使用 <tt><p></tt> 標籤;只要在分節指令後面的第一個段落開始處加就行. <sect2>文件結尾 <p> 在文件結束的地方,你必須使用這個標籤: <tscreen><verb> </article> </verb></tscreen> 以告訴解析程式你已經完成 <tt/article/ 這個組成元素(涵蓋整份文件). </sect2> <sect1>交互參考<label id="cross-ref"> <p> 現在我們要進入系統的其它功能.交互參考很容易.例如,如果你想要製作某一節的交互參考,你得像這樣標示該節: <tscreen><verb> <sect1>簡介<label id="sec-intro"> </verb></tscreen> 接著你就可以在文件中的某個地方式用這個表示式參照該節: <tscreen><verb> 請參考<ref id="sec-intro" name="簡介">一節的介紹. </verb></tscreen> 這將會以 <tt/sec-intro/ 標記的節號替換掉這個 <tt/ref/ 標籤. 對於 groff 以及 HTML 轉換 <tt/name/ 這個參數是必須的. SGML-Tools 使用的 groff 巨集設定目前並未支援交互參考,而且它常常以名稱取代數字參照某一節. 例如,本節是<ref id="cross-ref" name="交互參考">. 在全球資訊網上使用的通用資源定位器,即 URL 也有組成元素 <tt/url/. 這個元素應該用來參照其它文件,FTP 上的檔案等等.例如: <tscreen><verb> 你可從此取得 Linux HOWTO 文件 <url url="http://sunsite.unc.edu/mdw/HOWTO/" name="The Linux HOWTO INDEX">. </verb></tscreen> <tt/url/ 這個參數指定這個 URL 本身.連結會自動加入到 HTML 文件中. 可選用的 <tt/name/ 參數指定應該加上連結的文字(HTML 轉換)或是為 URL 描述命名(LaTeX 或 groff).如果沒有給 <tt/name/ 參數,會使用這個 URL 本身. 例如,你可以從這裡取得 SGML-Tools 套件<newline> <tt><htmlurl url="ftp://sunsite.unc.edu/pub/Linux/utils/text/sgml-tools-0.99.0.tar.gz" name="ftp://sunsite.unc.edu/pub/Linux/utils/text/sgml-tools-0.99.0.tar.gz"></tt>. 一個有用的變形是 <tt/htmlurl/,除了 HTML 文件在其它每種文件中這個 URL 部份將不會出現. 它用在像是個人的電子郵件位址;你可以寫 <tscreen><verb> <htmlurl url="mailto:esr@snark.thyrsus.com" name="esr@snark.thyrsus.com"> </verb></tscreen> 而在純文字輸出中獲得「esr@snark.thyrsus.com」 而不是重複的「esr@snark.thyrsus.com <mailto:esr@snark.thyrsus.com>」 但是在 HTML 文件中仍然保有適當的 URL 部份. <sect1>字型 <p> 基本上,SGML-Tools 支援與 LaTeX 相同的字型. 注意,無論如何,純文字的轉換(經由 <tt/groff/)不理會有關字型的資訊. 所以,你可以盡可能的使用多種字型,這對 LaTeX 的轉換會有好處. 但是在純文字的版本中不要指望能用字型點出重點. 特別是,前面描述過的 <tt/tt/ 這個標籤可以用來獲致寬度固定的「打字機」字型, 這應該用在所有的電子郵遞位址,機器名稱,檔案名稱等等. 例如: <tscreen><verb> Here is some <tt>typewriter text</tt> to be included in the document. </verb></tscreen> 相當於: <tscreen><verb> Here is some <tt/typewriter text/ to be included in the document. </verb></tscreen> 記得如果被包含的文字不含有斜線你可以使用簡略形式. 其它的字型有 <bf/粗體字/ 用的 <tt/bf/ 以及 <em/斜體字/ 用的 <tt/em/. 另外還支援數種字型,但是我不建議你使用它們,因為它們會被轉換成像 HTML 不支援的字型. 粗體,打字機體,以及斜體應該能滿足你的需要. <sect1>列表 <p> 此系統支援數種不同的列表.它們是: <itemize> <item><tt/itemize/ 像這樣的告示列表 <item><tt/enum/ 數字列表 <item><tt/descrip/ 描述列表 </itemize> 在 <tt/itemize/ 或是 <tt/enum/ 裡的項目必須以 <tt/item/ 標籤加以標示. 在 <tt/descrip/ 裡的項目必須以 <tt/tag/ 標示. 例如, <tscreen><verb> <itemize> <item>這是一個項目. <item>這是第二個項目. </itemize> </verb></tscreen> 看起來像是這樣: <itemize> <item>這是一個項目. <item>這是第二個項目. </itemize> 在 <tt/enum/ 中 <tscreen><verb> <enum> <item>這是第一個項目. <item>這是第二個項目. </enum> </verb></tscreen> 你應看得出來,列表可以是巢狀的.細節請參閱範例文件. <tt/descrip/ 列表稍有不同,而且有點難看,但是在某些情況下你可能會想使用它: <tscreen><verb> <descrip> <tag/Gnats./ Annoying little bugs that fly into your cooling fan. <tag/Gnus./ Annoying little bugs that run on your CPU. </descrip> </verb></tscreen> 最後看起來像: <descrip> <tag/Gnats./ Annoying little bugs that fly into your cooling fan. <tag/Gnus./ Annoying little bugs that run on your CPU. </descrip> <sect1>更進一步的資訊 <p> <enum> <item>QWERTZ 使用者指引可以從這裡取得 <tt><htmlurl url="ftp://ftp.cs.cornell.edu/pub/mdw/SGML" name="ftp://ftp.cs.cornell.edu/pub/mdw/SGML"></tt>. QWERTZ (以及 SGML-Tools) 還支援像是數學公式,表格,圖形等許多特性. 如果你想用 SGML 寫一般的文件,我建議你用原來的 QWERTZ DTD 而不要用修改過的 linuxdoc DTD, 因為這是我特別用來寫 Linux HOWTOs 及其它類似文件用的. <item>Tom Gordon 的 QWERTZ tools 可在此找到: <tt><htmlurl url="ftp://ftp.gmd.de/GMD/sgml" name="ftp://ftp.gmd.de/GMD/sgml"></tt>. <item>更多關於 SGML 的資訊可以在下面這些網頁找到: <itemize> <item><tt><url url="http://www.w3.org/hypertext/WWW/MarkUp/SGML/" name="SGML and the Web"></tt> <item><tt><url url="http://www.sil.org/sgml/sgml.html" name="SGML Web Page"></tt> <item><tt><url url="http://www.yahoo.com/Computers_and_Internet/Information_and_Documentation/Data_Formats/SGML/" name="Yahoo's SGML Page"></tt> </itemize> <item>James Clark 的 <tt/sgmls/ 解析器,及後來的 <tt/nsgmls/ 還有其它工具可在這找到: <tt><htmlurl url="ftp://ftp.jclark.com" name="ftp://ftp.jclark.com"> </tt> 以及 <tt><url url="http://www.jclark.com" name="James Clark's WWW Page"></tt>. <item><tt/emacs psgml/ 可在此找到: <tt><htmlurl url="ftp://ftp.lysator.liu.se/pub/sgml" name="ftp://ftp.lysator.liu.se/pub/sgml"></tt>.這個工具提供許多 SGML 的功能. <item>你可以寄電子郵件到 <tt><htmlurl url="mailto:majordomo@via.ecp.fr" name="majordomo@via.ecp.fr"></tt> 以參與 SGML-Tools mailing list,內容寫 <tt/subscribe sgml-tools/. Mailing list 的地址是 <tt><htmlurl url="mailto:sgml-tools@via.ecp.fr" name="sgml-tools@via.ecp.fr"></tt>. <item>關於 <tt>LyX</tt> 的更多資訊可以在此找到: <tt><url url="http://wsiserv.informatik.uni-tuebingen.de/~ettrich/" name="LyX WWW Page"></tt>. <tt/LyX/ 是一個給 LaTeX 用的高階文字處理器前端. 具半所見即所得界面,會自動產生許多 LaTeX 的樣式及格局. 可以增快 LaTeX 的學習而且使複雜的格局變簡單且直接. </enum> </article>