?? sgml-guide-3.html
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
<TITLE>SGML-Tools 使用說明中譯版: 使用 SGML-Tools 撰寫文件</TITLE>
<LINK HREF="SGML-Guide-2.html" REL=previous>
<LINK HREF="SGML-Guide.html#toc3" REL=contents>
</HEAD>
<BODY>
Next
<A HREF="SGML-Guide-2.html">Previous</A>
<A HREF="SGML-Guide.html#toc3">Contents</A>
<HR>
<H2><A NAME="s3">3. 使用 SGML-Tools 撰寫文件</A></H2>
<P>使用 SGML-Tools DTD 撰寫文件的過程大部分是非常容易的,而且有點類似 LaTeX.
然而,仍然有些限制要注意.這一節我將介紹 SGML 文件的撰寫.
SGML 文件□例(及寫作指引)請參閱 <CODE>example.sgml</CODE> 檔案,你可以拿來當作自己文件的□本.
在此我將討論 SGML 的各項功能,但是以原始文件作為□例不是很有可讀性.
因此,印出 <CODE>example.sgml</CODE> 的原始碼(編排後的輸出),如此你就有真實的參考□例。
<P>
<H2><A NAME="ss3.1">3.1 基本概念</A>
</H2>
<P>仔細看□例文件的原始文件,你會注意到里面有許多以角括號(<CODE><</CODE> 及 <CODE>></CODE>)標示的「標簽(tags)」.
標簽單純地指出某組成元素的起始,這里所謂的組成元素是一節,一段,一句斜體的文句,列表中的一個項目,以及諸如此類的結構.
使用標簽就像使用 LaTeX 指令如 <CODE>\item</CODE> 或是 <CODE>\section{...}</CODE> 等一般.
<P>舉個簡單的例子,要產生這一段 <B>粗體文字</B>,我在原始碼中鍵入
<BLOCKQUOTE><CODE>
<PRE>
舉個簡單的例子,要產生這一段 <bf>粗體文字</bf>, ...
</PRE>
</CODE></BLOCKQUOTE>
<CODE><bf></CODE> 是這段粗體文字的開頭,而 <CODE></bf></CODE> 是結尾.
你也可以使用這個簡略形式:
<BLOCKQUOTE><CODE>
<PRE>
舉個簡單的例子,要產生這一段 <bf/粗體文字/, ...
</PRE>
</CODE></BLOCKQUOTE>
就是用斜線將粗體文字包住.(當然,如果被包含的文字含有線,你就必須使用長的形式,
例如 Unix 的檔案名稱.)
<P>關於特殊字元還有其它得要注意的問題
(這就是為什麼如果你仔細觀察原始文件就會注意到這些看起來很怪異 "&" 表示式;我將簡短地說明這些符號).
<P>在某些情況下,特定的組成元素之結尾標簽是可選用的.
例如,你在某一節的開始使用 <CODE><sect></CODE> 這個標簽,然而,該節的結尾標簽
(可以出現在該節主體本身結束的地方,而不只是該節的名稱後面!)
是可選用的而當你在同一個層次開始另外一節的時候也就暗示著該節的結束.
一般來說你不需要擔心這些細節;只要跟著使用在 <CODE>example.sgml</CODE> 指引里的□例就可以了。
<P>
<H2><A NAME="ss3.2">3.2 特殊字元</A>
</H2>
<P>很明顯的,角括號它們本身就是 SGML 原始文件里的特殊字元.另外還有其它該注意的字元.
例如,假設你想鍵入由角括號所涵蓋的表示式,像這樣: <CODE><foo></CODE>.
為了表示左邊的角括號,你必須使用 <CODE>&lt;</CODE> 這個組成元素,
這是一個會展開成左括號字元的「巨集」.因此,我在原始文件中鍵入
<BLOCKQUOTE><CODE>
<PRE>
angle brackets around it, as so: <tt>&lt;foo></tt>.
</PRE>
</CODE></BLOCKQUOTE>
一般來說,以結合字元(&)作為開始表示這是一個特殊的巨集.
例如,產生 % 符號的 <CODE>&percnt;</CODE>
產生 | 的 <CODE>&verbar;</CODE> 等等.
對於所有的「特殊字元」都有結合巨集可以表示它們.
<P>通常,你不需要使用結合巨集表示某特殊字元,然而,在某些情況下這是必須的。最常用的是:
<UL>
<LI>Use <CODE>&amp;</CODE> for the ampersand (&), </LI>
<LI>Use <CODE>&lt;</CODE> for a left bracket (<),</LI>
<LI>Use <CODE>&gt;</CODE> for a right bracket (>),</LI>
<LI>Use <CODE>&lt;/</CODE> for a left bracket with a slash
(<CODE></</CODE>)</LI>
<LI>Use <CODE>&dollar;</CODE> for a dollar sign ($),</LI>
<LI>Use <CODE>&num;</CODE> for a hash (#),</LI>
<LI>Use <CODE>&percnt;</CODE> for a percent (%),</LI>
<LI>Use <CODE>&tilde;</CODE> for a tilde (~),</LI>
<LI>Use <CODE>``</CODE> and <CODE>''</CODE> for quotes, or use
<CODE>&ldquo;</CODE> for “, <CODE>&rdquo;</CODE> for ”.</LI>
</UL>
<P>完整的特殊字元列表可以查看其中一個替換檔.
通常 LaTeX 最會抱怨特殊字元,所以查閱
<CODE>$SGMLTOOLSLIB/rep/latex/general</CODE> 會是個好的開始.
<CODE>$SGMLTOOLSLIB</CODE> 定義在 SGML 轉換程序的最前面.
<P>
<H2><A NAME="ss3.3">3.3 Verbatim 與 Code 環境</A>
</H2>
<P>當我們正討論特殊字元這個主題時,我也必須提到「verbatim 環境」,
用來在輸出中含入不加變動的文字(空白字元以及縮排,和諸如此類).
<CODE>verb</CODE> 這個組成元素就是做此用途的.它看起來就像這樣:
<BLOCKQUOTE><CODE>
<PRE>
<verb>
Some literal text to include as example output.
</verb>
</PRE>
</CODE></BLOCKQUOTE>
<CODE>verb</CODE> 環境不允許你在其內容中使用<EM>任何東西</EM>.
特別地,在 <CODE>verb</CODE> 環境中你必須:
<UL>
<LI>使用 <CODE>&amp;</CODE> 代表 <CODE>&</CODE></LI>
<LI>使用 <CODE>&lt;/</CODE> 代表 <CODE></</CODE></LI>
<LI>不要在 <CODE>verb</CODE> 環境中使用 <CODE>\end{verbatim}</CODE>,
因為這是 LaTeX 用來結束 <CODE>verbatim</CODE> 環境的.
(未來應該可能完全的隱藏底層的文字編排,但目前的解析器還不支援.)</LI>
</UL>
<CODE>code</CODE> 環境非常類似 <CODE>verb</CODE> 環境,除了在文字周圍加入分隔線
<HR>
<PRE>
這是 code 環境的例子.
</PRE>
<HR>
<P>你應該在任何 <CODE>verb</CODE> 環境的周圍使用 <CODE>tscreen</CODE> 環境,像這樣:
<BLOCKQUOTE><CODE>
<PRE>
<tscreen><verb>
這是一段例句.
</verb></tscreen>
</PRE>
</CODE></BLOCKQUOTE>
<CODE>tscreen</CODE> 是一個環境單純地縮排并設定預設字型為 <CODE>tt</CODE>.
這使得□例要論在 LaTeX 以及純文字的版本中看起來好多了.
你可以使用 <CODE>tscreen</CODE> 而不加 <CODE>verb</CODE>,不過,如果你在□例中使用任何的特殊字元那麼你就需要它們兩個.
<CODE>tscreen</CODE> 與特殊字元無關.□例請參閱 <CODE>example.sgml</CODE>.
<P><CODE>quote</CODE> 環境類似 <CODE>tscreen</CODE>,除了不將預設字型設為 <CODE>tt</CODE>.所以,你可以使用 <CODE>quote</CODE> 於與電腦無關的引用,如:
<BLOCKQUOTE><CODE>
<PRE>
<quote>
Here is some text to be indented, as in a quote.
</quote>
</PRE>
</CODE></BLOCKQUOTE>
這會產生:
<BLOCKQUOTE>
Here is some text to be indented, as in a quote.
</BLOCKQUOTE>
<P>
<H2><A NAME="ss3.4">3.4 文件內容概觀</A>
</H2>
<P>在我們深入研究細節之前,我要開始介紹 linuxdoc DTD 定義的文件概觀.文件如何設立的□例請仔細觀看 <CODE>example.sgml</CODE>.
<P>
<H3>序文</H3>
<P>在文件的「序文」中你設立像是標題以及文件型態(style)的東西.Linux HOWTO 文件看起來應該像:
<BLOCKQUOTE><CODE>
<PRE>
<!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>
</PRE>
</CODE></BLOCKQUOTE>
<P>這些組成項目可以酌予增減但須按此順序.第一行告訴 SGML 解析程式使用 linuxdoc DTD.
<CODE><article></CODE> 這個標簽規定文件使用「article」此種文件型態.
(原先的 QWERTZ DTD 還定義 「report」以及「book」等型態;我并沒有修改它們以在 SGML-Tools 中使用).
<P><CODE>title</CODE>, <CODE>author</CODE>, 以及 <CODE>date</CODE> 這些標簽的意義應該是很明顯的,
在 <CODE>date</CODE> 標簽中包含文件的版本編號以及最後修改時間.
<P><CODE>abstract</CODE> 標簽設定文件頂端<EM>在內容之前</EM>印出的文字.
如果你不想含入內容列表(<CODE>toc</CODE> 標簽),那麼你可能不需要 <CODE>abstract</CODE>.
<P>
<H3>章節與段落</H3>
<P>在序文之後,你就可以準備進入文件本身.有下列的分節指令可以使用:
<UL>
<LI><CODE>sect</CODE>: 最頂層的章節 (也就是 1, 2, 等等) </LI>
<LI><CODE>sect1</CODE>: 第二層的次章節 (也就是 1.1, 1.2, 等等)</LI>
<LI><CODE>sect2</CODE>: 第三層的小章節</LI>
<LI><CODE>sect3</CODE>: 第四層的小小節</LI>
<LI><CODE>sect4</CODE>: 第五層的小小小節</LI>
</UL>
它們相當於 LaTeX 中對應的 <CODE>section</CODE>, <CODE>subsection</CODE> 等等.
<P>在 <CODE>sect</CODE> (或 <CODE>sect</CODE>, <CODE>sect</CODE> 等等) 標簽之後跟著是該節的名稱.
例如,在文件的頂端,序文之後的是此標簽:
<BLOCKQUOTE><CODE>
<PRE>
<sect>簡介
</PRE>
</CODE></BLOCKQUOTE>
而在此節開始的地方(段落),有個標簽是:
<BLOCKQUOTE><CODE>
<PRE>
<sect2>段落
</PRE>
</CODE></BLOCKQUOTE>
在一節的標簽之後,你開始文件的主體.然而,你必須以一個 <CODE><p></CODE> 標簽開始,像這樣:
<BLOCKQUOTE><CODE>
<PRE>
<sect>簡介
<p>
這是一份 SGML-Tools 文件處理的使用者指引....
</PRE>
</CODE></BLOCKQUOTE>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -